VL31N创建内向交货函数及增强字段
LIPS字段增强
结构KOMDLGN新增字段
在下面结构中新增字段,则两个都有了。
创建BADI: LE_SHP_GN_DLV_CREATE
METHOD if_ex_le_shp_gn_dlv_create~move_komdlgn_to_lips.
cs_lips-yhjdh = is_xkomdlgn-yhjdh.
cs_lips-yhjrs = is_xkomdlgn-yhjrs.
ENDMETHOD.
简单创建内向交货单函数:
BBP_INB_DELIVERY_CREATE
BAPI_DELIVERYPROCESSING_EXEC
调用函数创建内向交货单
DATA: l_vbeln TYPE likp-vbeln,
l_msgtext TYPE string.
DATA: ls_vbsk LIKE vbsk,
lt_spe_vbfs TYPE TABLE OF /spe/vbfs WITH HEADER LINE,
lt_komdlgn TYPE TABLE OF komdlgn WITH HEADER LINE,
lt_vbfs TYPE TABLE OF vbfs WITH HEADER LINE,
lt_vbls TYPE TABLE OF vbls WITH HEADER LINE.
DATA: lt_prop LIKE wuebs OCCURS 100 WITH HEADER LINE.
DATA: ls_tvsa TYPE tvsa.
DATA: l_nrnr LIKE inri-nrrangenr.
IF is_data-item[] IS NOT INITIAL.
SELECT ebeln,ebelp,matnr,werks,meins
INTO TABLE @DATA(lt_ekpo)
FROM ekpo
FOR ALL ENTRIES IN @is_data-item
WHERE ebeln = @is_data-item-ebeln
AND ebelp = @is_data-item-ebelp.
SORT lt_ekpo BY ebeln ebelp.
ENDIF.
*工厂、销售单位不能为空
LOOP AT is_data-item INTO DATA(ls_item).
lt_komdlgn-lfart = 'EL'.
lt_komdlgn-vgtyp = 'V'.
lt_komdlgn-kzazu = 'X'.
lt_komdlgn-lifex = is_data-lifex.
lt_komdlgn-lifexpos = ls_item-lifexpos.
lt_komdlgn-lfdat = is_data-lfdat.
lt_komdlgn-lfuhr = is_data-lfuhr. "交货时间
lt_komdlgn-traty = is_data-traty. "运输方式类型
lt_komdlgn-vgbel = ls_item-ebeln.
lt_komdlgn-vgpos = ls_item-ebelp.
lt_komdlgn-lfimg = ls_item-lfimg.
lt_komdlgn-lichn = ls_item-lichn.
lt_komdlgn-yhjdh = ls_item-yhjdh.
lt_komdlgn-yhjrs = ls_item-yhjrs.
READ TABLE lt_ekpo INTO DATA(ls_ekpo) BINARY SEARCH
WITH KEY ebeln = ls_item-ebeln ebelp = ls_item-ebelp.
IF sy-subrc = 0.
lt_komdlgn-matnr = ls_ekpo-matnr.
lt_komdlgn-werks = ls_ekpo-werks.
lt_komdlgn-vrkme = ls_ekpo-meins.
ENDIF.
APPEND lt_komdlgn.
CLEAR lt_komdlgn.
ENDLOOP.
*** Not Available in 3.1
CALL FUNCTION 'ME_CONFIRMATION_VIA_EDI'
TABLES
t_kom = lt_komdlgn
errors = lt_prop
EXCEPTIONS
OTHERS = 1.
ls_vbsk-mandt = sy-mandt.
ls_vbsk-ernam = sy-uname.
ls_vbsk-erdat = sy-datum.
ls_vbsk-uzeit = sy-uzeit.
ls_vbsk-smart = 'L'.
SELECT SINGLE * INTO ls_tvsa
FROM tvsa WHERE smart = ls_vbsk-smart.
l_nrnr = ls_tvsa-numki.
CALL FUNCTION 'NUMBER_GET_NEXT'
EXPORTING
nr_range_nr = l_nrnr
object = 'RV_SAMMG'
IMPORTING
number = ls_vbsk-sammg
EXCEPTIONS
OTHERS = 1.
CALL FUNCTION 'GN_DELIVERY_CREATE'
EXPORTING
vbsk_i = ls_vbsk
IMPORTING
vbsk_e = ls_vbsk
TABLES
xkomdlgn = lt_komdlgn
xvbfs = lt_vbfs
xvbls = lt_vbls
et_spe_vbfs = lt_spe_vbfs.
READ TABLE lt_spe_vbfs WITH KEY msgty = 'E'.
IF sy-subrc = 0.
ROLLBACK WORK.
ev_type = 'E'.
CLEAR ev_msgtx.
LOOP AT lt_spe_vbfs WHERE msgty CA 'EAX'.
MESSAGE ID lt_spe_vbfs-msgid TYPE lt_spe_vbfs-msgty
NUMBER lt_spe_vbfs-msgno
INTO l_msgtext
WITH lt_spe_vbfs-msgv1 lt_spe_vbfs-msgv2
lt_spe_vbfs-msgv3 lt_spe_vbfs-msgv4.
IF ev_msgtx IS INITIAL.
ev_msgtx = l_msgtext.
ELSE.
CONCATENATE ev_msgtx l_msgtext INTO ev_msgtx SEPARATED BY ';'.
ENDIF.
ENDLOOP.
et_output-zitem = 1.
et_output-ztype = ev_type.
et_output-zmessage = ev_msgtx.
APPEND et_output.
ELSE.
READ TABLE lt_vbls INDEX 1.
IF lt_vbls-vbeln_lif IS NOT INITIAL.
l_vbeln = lt_vbls-vbeln_lif.
ev_type = 'S'.
ev_msgtx = '创建成功'.
et_output-zitem = 1.
et_output-ztype = ev_type.
et_output-zmessage = l_vbeln.
APPEND et_output.
ENDIF.
ENDIF.