FV50XF0B_BELEG_SICHERN:
ENHANCEMENT 1 ZPOSTGOODS. "active version
*
DATA: wa_lips LIKE LINE OF xlips.
DATA: wa_mkpf TYPE bapi2017_gm_head_01,
gt_fg TYPE TABLE OF bapi2017_gm_item_create WITH HEADER LINE,
gt_sp TYPE TABLE OF bapi2017_gm_item_create WITH HEADER LINE,
wa_mseg LIKE LINE OF gt_fg,
l_vendor LIKE gt_sp-vendor,
l_plant LIKE lips-werks,
l_mblnr TYPE BAPI2017_GM_HEAD_RET-MAT_DOC.
DATA: goodsmvt_code TYPE bapi2017_gm_code.
DATA: gt_msg TYPE TABLE OF bapiret2,
wa_msg LIKE LINE OF gt_msg,
gs_zsd003 TYPE zsd003.
DATA: wbs TYPE c LENGTH 24,
l_kunno LIKE likp-kunnr, "sold-to party
l_kunni LIKE likp-kunnr, "ship-to party.
l_lifnr LIKE zsd002-lifnr,
l_tabix LIKE sy-tabix,
regiogroup LIKE adrc-regiogroup,
l_flag,
l_skip.
DATA: BEGIN OF gt_serial OCCURS 0,
vbeln LIKE lips-vbeln,
posnr LIKE lips-posnr,
SERNR LIKE objk-SERNR,
END OF gt_serial.
DATA: gt_material TYPE ZMATERIAL WITH HEADER LINE.
DATA: gt_serno TYPE TABLE OF BAPI2017_GM_SERIALNUMBER WITH HEADER LINE.
DATA: BEGIN OF it_kunnr OCCURS 0,
kunnr LIKE vbpa-kunnr,
parvw LIKE vbpa-kunnr,
END OF it_kunnr.
CLEAR l_skip.
IF gs_vbak-auart eq 'TA'.
READ TABLE xvbpa WITH KEY parvw = 'WE'.
IF sy-subrc EQ 0.
SELECT SINGLE regiogroup INTO regiogroup
FROM kna1 AS a JOIN adrc AS b
ON a~adrnr = b~addrnumber
WHERE a~kunnr = xvbpa-kunnr.
ELSE.
l_skip = 'X'.
ENDIF.
IF regiogroup eq 'VTECH'.
ELSE.
l_skip = 'X'.
ENDIF.
IF l_skip IS INITIAL.
wa_mkpf-pstng_date = xlikp-WADAT_IST.
wa_mkpf-doc_date = xlikp-WADAT_IST.
wa_mkpf-PR_UNAME = sy-uname.
wa_mkpf-HEADER_TXT = xlikp-vbeln.
goodsmvt_code-gm_code = '05'.
IF gs_vbak-auart eq 'ZSP'.
READ TABLE xvbpa WITH KEY parvw = 'WE'.
IF sy-subrc eq 0.
l_kunni = xvbpa-kunnr.
ENDIF.
READ TABLE xvbpa WITH KEY parvw = 'AG'.
IF sy-subrc eq 0.
l_kunno = xvbpa-kunnr.
ENDIF.
SELECT SINGLE lifnr flag FROM zsd002
INTO (l_vendor,l_flag)
WHERE kunno = l_kunno
AND kunni = l_kunni
AND VKORG = gs_vbak-vkorg.
ELSEIF gs_vbak-auart eq 'TA'.
* SELECT SINGLE * FROM vbpa
* WHERE vbeln = gs_lips-VGBEL
* AND PARVW = 'WE'.
READ TABLE xvbpa WITH KEY parvw = 'WE'.
SELECT SINGLE werks FROM zsd001
INTO l_plant
WHERE KUNNR = xvbpa-kunnr
AND VKORG = gs_vbak-vkorg.
ENDIF.
SELECT SERNR LIEF_NR AS vbeln posnr
INTO CORRESPONDING FIELDS OF TABLE gt_serial
FROM ser01 AS a JOIN objk AS b
ON a~obknr = b~obknr
WHERE b~TASER = 'SER01'
AND a~LIEF_NR = xlikp-vbeln.
CLEAR l_tabix.
LOOP AT xlips INTO wa_lips.
IF wa_lips-lfimg eq 0.
CONTINUE.
ENDIF.
l_tabix = l_tabix + 1.
gt_material-vbeln = wa_lips-vgbel.
gt_material-posnr = wa_lips-vgpos.
gt_material-matnr = wa_lips-matnr.
APPEND gt_material.
wa_mseg-material = wa_lips-matnr.
wa_mseg-stge_loc = wa_lips-lgort.
wa_mseg-batch = wa_lips-charg.
wa_mseg-entry_qnt = wa_lips-lfimg.
wa_mseg-entry_uom = wa_lips-meins.
LOOP AT gt_serial WHERE posnr = wa_lips-posnr.
gt_serno-MATDOC_ITM = l_tabix.
gt_serno-SERIALNO = gt_serial-SERNR.
APPEND gt_serno.
CLEAR gt_serno.
ENDLOOP.
CALL FUNCTION 'CONVERSION_EXIT_ABPSP_OUTPUT'
EXPORTING
input = wa_lips-PS_PSP_PNR
IMPORTING
OUTPUT = wbs.
wa_mseg-val_wbs_elem = wbs.
wa_mseg-wbs_elem = wbs.
IF gs_vbak-AUART eq 'TA'.
MOVE-CORRESPONDING wa_mseg to gt_fg.
gt_fg-spec_stock = 'Q'.
gt_fg-plant = l_plant.
gt_fg-move_type = '901'.
APPEND gt_fg.
ELSEIF gs_vbak-AUART eq 'ZSP'.
MOVE-CORRESPONDING wa_mseg to gt_sp.
gt_sp-vendor = l_vendor.
gt_sp-move_type = '901'.
gt_sp-spec_stock = 'K'.
gt_sp-plant