SAP WMS开发: BAPI for LT03

LT03: 基于销售交货单创建转储单TO

BAPI: L_TO_CREATE_DN

代码样例:

TYPES: BEGIN OF lty_tbnum,
           lgnum TYPE lgnum,
           tbnum TYPE tbnum,
         END OF lty_tbnum,

         BEGIN OF lty_vbeln,
           lgnum TYPE lgnum,
           vbeln TYPE lips-vbeln,
         END OF lty_vbeln.

LOOP AT t_zswm262 INTO ls_zswm262.

    IF ls_zswm262-vbeln IS NOT INITIAL.
      ls_vbeln-lgnum = ls_zswm262-lgnum.
      ls_vbeln-vbeln = ls_zswm262-vbeln.
      COLLECT ls_vbeln INTO lt_vbeln.
      CLEAR: ls_vbeln.
    ENDIF.

    CLEAR: ls_zswm262..
  ENDLOOP.


DATA: lt_vbeln     TYPE TABLE OF lty_vbeln,
        ls_vbeln     TYPE lty_vbeln,
        it_delit     TYPE l03b_delit_t,
        ls_delit     TYPE l03b_delit,
        lt_wmgrp_msg TYPE TABLE OF wmgrp_msg,
        lt_ltak      TYPE TABLE OF ltak_vb,
        ls_ltak      TYPE ltak_vb,
        lt_ltap      TYPE TABLE OF ltap_vb,
        ls_ltap      TYPE ltap_vb,
        lv_tanum     TYPE ltak-tanum.

LOOP AT lt_vbeln INTO ls_vbeln.
    CLEAR: it_delit,
           ls_delit,
           lv_tanum,
           lt_ltak,
           ls_ltak,
           lt_ltap,
           ls_ltap,
           lt_wmgrp_msg,
           lt_ltap_conf,
           ls_ltap_conf.

    LOOP AT t_zswm262 INTO ls_zswm262 WHERE vbeln = ls_vbeln-vbeln.
      ls_delit-posnr = ls_zswm262-posnr.
      ls_delit-anfme = ls_zswm262-open_qty. "数量
*      CALL FUNCTION 'CONVERSION_EXIT_CUNIT_INPUT'
*        EXPORTING
*          input          = ls_zswm262-meins
*          language       = sy-langu
*        IMPORTING
*          output         = ls_zswm262-meins
*        EXCEPTIONS
*          unit_not_found = 1
*          OTHERS         = 2.
*      IF sy-subrc <> 0.
** Implement suitable error handling here
*      ENDIF.

      ls_delit-altme = ls_zswm262-meins. "
      ls_delit-charg = ls_zswm262-charg. "
      ls_delit-vlpla = ls_zswm262-vlpla. "
      ls_delit-vltyp = ls_zswm262-vltyp. "
      APPEND ls_delit TO it_delit.
      CLEAR: ls_delit.

    ENDLOOP.

    CALL FUNCTION 'L_TO_CREATE_DN'
      EXPORTING
        i_lgnum                    = ls_vbeln-lgnum
        i_vbeln                    = ls_vbeln-vbeln
        i_squit                    = 'X'
        i_commit_work              = 'X'
        it_delit                   = it_delit
      IMPORTING
        e_tanum                    = lv_tanum
      TABLES
        t_ltak                     = lt_ltak
        t_ltap_vb                  = lt_ltap
        t_wmgrp_msg                = lt_wmgrp_msg
      EXCEPTIONS
        foreign_lock               = 1
        dn_completed               = 2
        partial_delivery_forbidden = 3
        xfeld_wrong                = 4
        ldest_wrong                = 5
        drukz_wrong                = 6
        dn_wrong                   = 7
        squit_forbidden            = 8
        no_to_created              = 9
        teilk_wrong                = 10
        update_without_commit      = 11
        no_authority               = 12
        no_picking_allowed         = 13
        dn_hu_not_choosable        = 14
        input_error                = 15
        error_message              = 99
        OTHERS                     = 16.
    IF sy-subrc <> 0.

      e_id = sy-msgid.
      e_no = sy-msgno.

      CALL FUNCTION 'MESSAGE_TEXT_BUILD'
        EXPORTING
          msgid               = sy-msgid
          msgnr               = sy-msgno
          msgv1               = sy-msgv1
          msgv2               = sy-msgv2
          msgv3               = sy-msgv3
          msgv4               = sy-msgv4
        IMPORTING
          message_text_output = e_message.
    ELSE.

      e_id = sy-msgid.
      e_no = sy-msgno.

      e_message =   '拣配成功!单号' && lv_tanum .
      e_tanum = lv_tanum.
*部分情况需要再次comfirm
      CLEAR:ls_ltak.
      READ TABLE lt_ltak INTO ls_ltak INDEX 1.
      IF ls_ltak-kquit NE 'X'.
        CALL FUNCTION 'L_TO_CONFIRM'
          EXPORTING
            i_lgnum     = ls_ltak-lgnum
            i_tanum     = lv_tanum
            i_squit     = 'X'
          TABLES
            t_ltap_conf = lt_ltap_conf.

        e_tanum = lv_tanum.
      ENDIF.


    ENDIF.

    CLEAR: ls_vbeln.
  ENDLOOP.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值