MIGO BADI扩展预留字段增强

BADI:MB_GOODSMOVEMENT

METHOD if_ex_mb_bapi_goodsmvt_create~extensionin_to_matdoc.

  DATA:
    c_lenstruc          TYPE i VALUE 30,
    wa_bapi_mb_header   TYPE bapi_te_xmkpf,
    wa_bapi_mb_item     TYPE bapi_te_xmseg,
    wa_extension_in     TYPE bapiparex.

  FIELD-SYMBOLS:
    <fs_imseg>          TYPE imseg.

  CHECK NOT extension_in[] IS INITIAL.

* Analyze IMSEG for document structure and assign LINE_IDs if necessary
  CALL METHOD cl_mmim_line_id_manager=>analyze_mb_create
    CHANGING
      ct_imseg          = ct_imseg[]
    EXCEPTIONS
      duplicate_line_id = 1
      OTHERS            = 2.

  LOOP AT extension_in INTO wa_extension_in.
    CASE wa_extension_in-structure.
* extension of MKPF
      WHEN 'BAPI_TE_XMKPF'.
        MOVE wa_extension_in+c_lenstruc TO wa_bapi_mb_header.
        MOVE-CORRESPONDING wa_bapi_mb_header TO cs_imkpf.
* extension of MSEG
      WHEN 'BAPI_TE_XMSEG'.
        MOVE wa_extension_in+c_lenstruc TO wa_bapi_mb_item.
        READ TABLE ct_imseg
          WITH KEY line_id = wa_bapi_mb_item-matdoc_itm
          ASSIGNING <fs_imseg>.
        IF sy-subrc EQ 0.
          MOVE-CORRESPONDING wa_bapi_mb_item TO <fs_imseg>.
        ENDIF.
    ENDCASE.
  ENDLOOP.

ENDMETHOD.
IF ls_itemdata-zysh IS NOT INITIAL OR ls_itemdata-zplxh IS NOT INITIAL .".

          ls_extensionin-structure = 'BAPI_TE_XMSEG'.
          ls_extensionin-valuepart1+14(4) = ls_itemdata-item_id.
          IF ls_itemdata-zysh IS NOT INITIAL.
            READ TABLE lt_zfit_0001 INTO DATA(ls_e0001) WITH KEY zzysm = ls_itemdata-zysh BINARY SEARCH.
            IF sy-subrc = 0.
              ls_extensionin-valuepart1+18(100) = ls_itemdata-zysh.
              ls_extensionin-valuepart1+118(100) = ls_e0001-zzysmms.
            ELSE.
              ls_extensionin-valuepart1+18(100) = ls_itemdata-zysh.
            ENDIF.
          ENDIF.

          IF ls_itemdata-zplxh IS NOT INITIAL.
            READ TABLE lt_zfit_0002 INTO DATA(ls_e0002) WITH KEY zzplxh = ls_itemdata-zplxh BINARY SEARCH.
            IF sy-subrc = 0.
              DATA(lv_lenth) = strlen( ls_itemdata-zplxh ).
              ls_extensionin-valuepart1+218(22) = ls_itemdata-zplxh.
              IF lv_lenth GT 22.
                ls_extensionin-valuepart2+0(78) = ls_itemdata-zplxh+22(*).
              ENDIF.
              ls_extensionin-valuepart2+78(100) = ls_e0002-zzplxhms.
            ENDIF.
          ENDIF.

*          "srm单号
*          IF ls_itemdata-zshdh IS NOT INITIAL.
*            ls_extensionin-valuepart3(240) = ls_itemdata-zshdh.
*          ENDIF.
*
*          "srm行项目
*          IF ls_itemdata-zshdh_item IS NOT INITIAL.
*            ls_extensionin-valuepart4(240) = ls_itemdata-zshdh_item.
*          ENDIF.
          APPEND ls_extensionin TO lt_extensionin.
        ENDIF.

      CALL FUNCTION 'BAPI_GOODSMVT_CREATE'
        EXPORTING
          goodsmvt_header       = ls_header
          goodsmvt_code         = lv_gcode
        IMPORTING
          goodsmvt_headret      = ls_goodsmvt_headret
        TABLES
          goodsmvt_item         = lt_item
          goodsmvt_serialnumber = lt_xlh
          return                = lt_return
          extensionin           = lt_extensionin.

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值