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.