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.