BAPI_MATERIAL_SAVEDATA 修改物料主数据价格单位不会同时修改集团货币的价格单位 - 海边星
【原创】 BAPI_MATERIAL_SAVEDATA 修改物料主数据价格单位不会同时修改集团货币的价格单位
栏目:ABAP  作者:在海边看星星  阅读:(1447)

在BAPI返回成功后调用如下BDC代码:

  DATA: ls_t001k TYPE t001k.
  DATA: l_peinh    TYPE ckmlpr-peinh,
        l_msg(220),
        l_mode     TYPE c VALUE 'N'.

*  SELECT SINGLE peinh
*    INTO l_peinh
*    FROM ckmlhd JOIN ckmlpr ON ckmlhd~kalnr = ckmlpr~kalnr
*    WHERE matnr = ps_head_in-matnr
*      AND bwkey = ps_head_in-bwkey
*      AND curtp = '30'.

  SELECT SINGLE * INTO ls_t001k
    FROM t001k
    WHERE bwkey = ps_head_in-werks.

  REFRESH bdcdata[] .
  CLEAR bdcdata .
  CLEAR: messtab,messtab[],l_msg.

  PERFORM bdc_dynpro    USING 'SAPRCKM_MR21' '0201'.
  PERFORM bdc_field     USING 'MR21HEAD-BUDAT' sy-datum.
  PERFORM bdc_field     USING 'MR21HEAD-BUKRS' ls_t001k-bukrs.
  PERFORM bdc_field     USING 'MR21HEAD-WERKS' ps_head_in-werks.
  PERFORM bdc_field     USING 'BDC_OKCODE' '=ENTR'.

  PERFORM bdc_dynpro    USING 'SAPRCKM_MR21' '0201'.
  PERFORM bdc_field     USING 'CKI_MR21_0250-MATNR(01)' ps_head_in-matnr.
  PERFORM bdc_field     USING 'BDC_OKCODE' '=TAB2'.

  PERFORM bdc_dynpro    USING 'SAPRCKM_MR21' '0201'.
  PERFORM bdc_field     USING 'CKI_MR21_0250-NEWPEINH(01)' ps_head_in-peinh.
  PERFORM bdc_field     USING 'BDC_OKCODE' 'ENTR'.

  PERFORM bdc_dynpro    USING 'SAPRCKM_MR21' '0201'.
  PERFORM bdc_field     USING 'BDC_OKCODE' '=SAVE'.

  IF g_option-dismode EQ space.
    g_option-dismode = l_mode.
  ENDIF.

  g_option-updmode  = 'S'.
  g_option-racommit = 'X'.
  g_option-cattmode = ''.
*  g_option-nobinpt  = 'X'.
  CALL TRANSACTION 'MR21' USING bdcdata
                          OPTIONS FROM g_option
                          MESSAGES INTO messtab.

  LOOP AT messtab WHERE msgid = 'CKPRCH'
                    AND ( ( msgtyp = 'S' AND msgnr = '019' ) OR
                          ( msgtyp = 'I' AND msgnr = '046' ) ).

  ENDLOOP.
  IF sy-subrc = 0.
    p_type = 'S'.
    p_msg = '集团货币单位修改成功!'.
  ELSE.
    LOOP AT messtab WHERE msgtyp CA 'EAX'.
      CALL FUNCTION 'MESSAGE_TEXT_BUILD'
        EXPORTING
          msgid               = messtab-msgid
          msgnr               = messtab-msgnr
          msgv1               = messtab-msgv1
          msgv2               = messtab-msgv2
          msgv3               = messtab-msgv3
          msgv4               = messtab-msgv4
        IMPORTING
          message_text_output = l_msg.

      IF l_msg IS INITIAL.
        p_msg = l_msg.
      ELSE.
        p_msg =  p_msg && ';' && l_msg.
      ENDIF.
    ENDLOOP.
    p_type = 'E'.
    p_msg = '集团货币单位修改失败:' && p_msg.
  ENDIF.
  
  
*&---------------------------------------------------------------------*
*&      Form  BDC_DYNPRO
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->PROGRAM    text
*      -->DYNPRO     text
*----------------------------------------------------------------------*
FORM bdc_dynpro USING program dynpro.
  CLEAR bdcdata.
  bdcdata-program = program.
  bdcdata-dynpro = dynpro.
  bdcdata-dynbegin = 'X'.
  APPEND bdcdata.
ENDFORM.                    "BDC_DYNPRO

*&---------------------------------------------------------------------*
*&      Form  BDC_FIELD
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->FNAM       text
*      -->FVAL       text
*----------------------------------------------------------------------*
FORM bdc_field USING fnam fval.
  CLEAR bdcdata.
  bdcdata-fnam = fnam.
  bdcdata-fval = fval.
  APPEND bdcdata.
ENDFORM.




我的评论
昵称
邮箱
域名
  记住 通知博主
验证码

  联系我们

微信扫一扫

 登录  打赏

  随机文章