SAP WMS开发: BAPI for LT01 (创建转储单)

BAPI: L_TO_CREATE_MULTIPLE

事务码: LT01 - 创建TO转储单

代码样例:

*"----------------------------------------------------------------------
*"*"本地接口:
*"  IMPORTING
*"     VALUE(I_LGNUM) TYPE  LGNUM OPTIONAL
*"     VALUE(I_VLPLA) TYPE  LTAP_VLPLA
*"     VALUE(I_LQNUM) TYPE  LVS_LQNUM
*"     VALUE(I_MATNR) TYPE  MATNR
*"     VALUE(I_CHARG) TYPE  CHARG_D
*"     VALUE(I_MENGE) TYPE  MENGE_D
*"     VALUE(I_NLPLA) TYPE  LTAP_NLPLA
*"  EXPORTING
*"     VALUE(E_TANUM) LIKE  LTAK-TANUM
*"     VALUE(E_MSG) TYPE  BAPI_MSG
*"     VALUE(E_CODE) TYPE  BAPI_MTYPE
*"  TABLES
*"      T_TAB STRUCTURE  ZTWM306 OPTIONAL
*"----------------------------------------------------------------------
  DATA:ls_ltap TYPE ltap_creat,
       lt_ltap TYPE TABLE OF ltap_creat.
  DATA:ls_lqua TYPE lqua.
  DATA:ls_lagp TYPE lagp.
  DATA:lv_text TYPE natxt.
  "判断数量和序列号条目是否一致
  DATA:lv_lines TYPE i.
  IF t_tab[] IS NOT INITIAL  .
    lv_lines = lines( t_tab ).
    IF lv_lines = i_menge.
    ELSE.
      e_code =  'E'.
      e_msg = '序列号条目与转移数量不一致'.
    ENDIF.
  ENDIF.

  IF e_code IS INITIAL .
    IF i_lgnum IS INITIAL .
      SELECT SINGLE lgnum
        FROM  lagp
        INTO i_lgnum
        WHERE lgpla = i_vlpla.
    ENDIF.
    SELECT SINGLE *
      FROM lqua
      INTO ls_lqua
      WHERE lgnum = i_lgnum
      AND lqnum = i_lqnum.

    SELECT SINGLE *
      FROM  lagp
      INTO ls_lagp
      WHERE lgpla =   i_nlpla.

    ls_ltap-matnr = i_matnr.
    ls_ltap-werks = ls_lqua-werks.
    ls_ltap-charg = i_charg.
    ls_ltap-lgort = ls_lqua-lgort.
    ls_ltap-bestq = ls_lqua-bestq.
    ls_ltap-sobkz = ls_lqua-sobkz.
    ls_ltap-sonum = ls_lqua-sonum.
    ls_ltap-squit = 'X'.
    ls_ltap-anfme = i_menge.

    CALL FUNCTION 'CONVERSION_EXIT_CUNIT_INPUT'
      EXPORTING
        input          = ls_lqua-meins
      IMPORTING
        output         = ls_ltap-altme
      EXCEPTIONS
        unit_not_found = 1
        OTHERS         = 2.
    IF sy-subrc <> 0.
      ls_ltap-altme = ls_lqua-meins.
    ENDIF.

    ls_ltap-vlpla =  i_vlpla.
    ls_ltap-vltyp =  ls_lqua-lgtyp."源仓位仓

    ls_ltap-nltyp =  ls_lagp-lgtyp.
    ls_ltap-nlpla =  i_nlpla."目标仓位

    APPEND ls_ltap TO lt_ltap.

    CALL FUNCTION 'L_TO_CREATE_MULTIPLE'
      EXPORTING
        i_lgnum                = i_lgnum
        i_bwlvs                = '999'
        i_update_task          = 'X'
        i_commit_work          = 'X'
        i_bname                = sy-uname
      IMPORTING
        e_tanum                = e_tanum
      TABLES
        t_ltap_creat           = lt_ltap[]
      EXCEPTIONS
        no_to_created          = 1
        bwlvs_wrong            = 2
        betyp_wrong            = 3
        benum_missing          = 4
        betyp_missing          = 5
        foreign_lock           = 6
        vltyp_wrong            = 7
        vlpla_wrong            = 8
        vltyp_missing          = 9
        nltyp_wrong            = 10
        nlpla_wrong            = 11
        nltyp_missing          = 12
        rltyp_wrong            = 13
        rlpla_wrong            = 14
        rltyp_missing          = 15
        squit_forbidden        = 16
        manual_to_forbidden    = 17
        letyp_wrong            = 18
        vlpla_missing          = 19
        nlpla_missing          = 20
        sobkz_wrong            = 21
        sobkz_missing          = 22
        sonum_missing          = 23
        bestq_wrong            = 24
        lgber_wrong            = 25
        xfeld_wrong            = 26
        date_wrong             = 27
        drukz_wrong            = 28
        ldest_wrong            = 29
        update_without_commit  = 30
        no_authority           = 31
        material_not_found     = 32
        lenum_wrong            = 33
        matnr_missing          = 34
        werks_missing          = 35
        anfme_missing          = 36
        altme_missing          = 37
        lgort_wrong_or_missing = 38
        error_message          = 40
        OTHERS                 = 39.

    IF sy-subrc <> 0.
* Implement suitable error handling here
    ENDIF.
    IF e_tanum IS INITIAL  .
      e_code =  'E'.
      SELECT SINGLE text FROM t100 INTO lv_text
         WHERE arbgb = sy-msgid AND msgnr = sy-msgno AND sprsl = sy-langu .
      e_msg = '仓位转移失败'&& lv_text.
    ELSE.
      e_msg = e_tanum && '转储单,仓位转移成功'.
      e_code =  'S' .
      "转储成功更新序列表
      LOOP AT t_tab.
        t_tab-tanum = e_tanum.
        t_tab-LGPLA = I_NLPLA.
        MODIFY t_tab.
      ENDLOOP.
      DELETE t_tab WHERE sernr is INITIAL .
      MODIFY ZTWM306  FROM TABLE t_tab[].
      COMMIT WORK.
    ENDIF.
  ENDIF.

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值