发布时间 : 星期四 文章bdc程序实例更新完毕开始阅读92bdb3365a8102d276a22fe5
PERFORM frm_bdcfield USING 'BDC_OKCODE' '/00'.
PERFORM frm_bdcfield USING 'ACGL_ITEM-HKONT(01)' it_zmm_sccl-saknr.
IF l_wrbtr > l_jea.
PERFORM frm_bdcfield USING 'ACGL_ITEM-SHKZG(01)' 'H'. ELSE.
PERFORM frm_bdcfield USING 'ACGL_ITEM-SHKZG(01)' 'S'. ENDIF.
l_chae = ABS( l_wrbtr - l_jea ). l_chae2 = l_chae. CONDENSE l_chae2.
PERFORM frm_bdcfield USING 'ACGL_ITEM-WRBTR(01)' l_chae2. CALL FUNCTION 'CONVERSION_EXIT_ABPSP_OUTPUT' EXPORTING
input = it_ekkn-ps_psp_pnr IMPORTING
output = l_wbs.
* IF l_wbsnet = ''.
PERFORM frm_bdcfield USING 'ACGL_ITEM-PROJK(01)' l_wbs. * ELSE.
* PERFORM frm_bdcfield USING 'ACGL_ITEM-AUFNR(01)' it_ekkn-nplnr.
* ENDIF. ENDIF. ENDIF.
IF l_wrbtr <> l_jea AND it_zmm_sccl-zirtab = '3'. PERFORM frm_bdcdynpro USING 'SAPLMR1M' '6000'.
PERFORM frm_bdcfield USING 'BDC_OKCODE' '=ITEMS_MAT'.
PERFORM frm_bdcdynpro USING 'SAPLMR1M' '6000'. PERFORM frm_bdcfield USING 'BDC_OKCODE' '/00'.
PERFORM frm_bdcfield USING 'CKI_MR22_0250-MATNR(01)' it_ekpo-matnr.
PERFORM frm_bdcfield USING 'CKI_MR22_0250-BWKEY(01)' it_ekpo-werks.
IF l_wrbtr > l_jea.
PERFORM frm_bdcfield USING 'CKI_MR22_0250-SHKZG(01)' 'H'. ELSE.
PERFORM frm_bdcfield USING 'CKI_MR22_0250-SHKZG(01)' 'S'. ENDIF.
l_chae = ABS( l_wrbtr - l_jea ). l_chae2 = l_chae. CONDENSE l_chae2.
PERFORM frm_bdcfield USING 'CKI_MR22_0250-ZUUMB(01)' l_chae2.
PERFORM frm_bdcfield USING 'CKI_MR22_0250-MENGE(01)' '1'. ENDIF.
PERFORM frm_bdcdynpro USING 'SAPLMR1M' '6000'. PERFORM frm_bdcfield USING 'BDC_OKCODE' '=PARK'. CALL TRANSACTION 'MIR7' USING it_bdcdata MODE v_mode UPDATE 'S'
MESSAGES INTO it_bdcmsg.
READ TABLE it_bdcmsg WITH KEY msgid = 'M8' msgnr = '388'. IF sy-subrc = 0.
wa_zmm_fpxx1-yzpznd = sy-datum+0(4). wa_zmm_fpxx1-fpyzpzh = it_bdcmsg-msgv1. wa_zmm_fpxx1-fpyzrq = sy-datum.
MODIFY it_zmm_fpxx FROM wa_zmm_fpxx1 TRANSPORTING yzpznd fpyzpzh fpyzrq
WHERE cgddh = wa_zmm_fpxx-cgddh AND fpyszt = '1' AND fpyzpzh = ''.
CLEAR wa_zmm_fpxx1.
UPDATE zmm_fpxx SET fpyzpzh = it_bdcmsg-msgv1 yzpznd = sy-datum+0(4) fpyzrq = sy-datum
WHERE cgddh = wa_zmm_fpxx-cgddh AND fpyszt = '1' AND fpyzpzh = ''. ELSE.
REFRESH: it_bdcdata, it_bdcmsg. CLEAR: it_zmm_sccl. CLEAR: l_wbsnet.
READ TABLE it_zmm_sccl WITH KEY prart = wa_zmm_fpxx-prart anlzu = wa_zmm_fpxx-anlzu. IF sy-subrc <> 0.
READ TABLE it_zmm_sccl WITH KEY prart = wa_zmm_fpxx-prart anlzu = ''. ELSE.
l_wbsnet = 'X'. ENDIF.
CLEAR: it_ekko.
READ TABLE it_ekko WITH KEY ebeln = wa_zmm_fpxx-cgddh. CLEAR: it_ekkn.
READ TABLE it_ekkn WITH KEY ebeln = wa_zmm_fpxx-cgddh.
PERFORM frm_bdcdynpro USING 'SAPLACHD' '1000'. PERFORM frm_bdcfield USING 'BDC_OKCODE' '=ENTR'. PERFORM frm_bdcfield USING 'BKPF-BUKRS' '0600'. PERFORM frm_bdcdynpro USING 'SAPLMR1M' '6000'. PERFORM frm_bdcfield USING 'BDC_OKCODE' '/00'. PERFORM frm_bdcfield USING 'INVFO-BLDAT' l_char. l_fpzs = l_num + 2. CONDENSE l_fpzs.
PERFORM frm_bdcfield USING 'INVFO-XBLNR' l_fpzs. PERFORM frm_bdcfield USING 'INVFO-BUDAT' l_char. l_fpje = l_hsje. CONDENSE l_fpje.
PERFORM frm_bdcfield USING 'INVFO-WRBTR' l_fpje. l_fpse = l_sea. CONDENSE l_fpse.
PERFORM frm_bdcfield USING 'INVFO-WMWST' l_fpse. CLEAR: it_ekpo.
READ TABLE it_ekpo WITH KEY ebeln = wa_zmm_fpxx-cgddh. PERFORM frm_bdcfield USING 'INVFO-MWSKZ' it_zmm_sccl-mwskz. PERFORM frm_bdcfield USING 'RM08M-EBELN' wa_zmm_fpxx-cgddh. *
PERFORM frm_bdcdynpro USING 'SAPLMR1M' '6000'.
PERFORM frm_bdcfield USING 'BDC_OKCODE' '=HEADER_PAY'. *
PERFORM frm_bdcdynpro USING 'SAPLMR1M' '6000'. PERFORM frm_bdcfield USING 'BDC_OKCODE' '/00'. PERFORM frm_bdcfield USING 'INVFO-ZFBDT' l_char. PERFORM frm_bdcfield USING 'INVFO-ZLSCH' 'A'. CLEAR: it_gys.
READ TABLE it_gys WITH KEY ebeln = wa_zmm_fpxx-cgddh. READ TABLE it_ekbe2 INTO wa_ekbe2_1 WITH KEY ebeln = wa_zmm_fpxx-cgddh
vgabe = '1'. READ TABLE it_ekbe2 INTO wa_ekbe2_2 WITH KEY ebeln = wa_zmm_fpxx-cgddh
vgabe = '2'. l_wrbtr = wa_ekbe2_1-wrbtr - wa_ekbe2_2-wrbtr. IF l_wrbtr <> l_jea AND it_zmm_sccl-zirtab = '1'. IF l_wrbtr > l_jea.
l_chae = l_wrbtr - l_jea.
IF it_ekko-bsart = 'ZM02'. l_jine = l_chae. ELSE.
l_jine = it_ekpo-netwr - l_chae. ENDIF. ELSE.
IF l_wrbtr < l_jea.
l_chae = l_jea - l_wrbtr. IF it_ekko-bsart = 'ZM02'. l_jine = l_chae. ELSE.
l_jine = it_ekpo-netwr + l_chae. ENDIF. ELSE.
l_jine = l_jea. ENDIF. ENDIF.
CONDENSE l_jine. CLEAR: lt_ebeln.
READ TABLE lt_ebeln WITH KEY ebeln = wa_zmm_fpxx-cgddh. IF sy-subrc <> 0.
IF it_ekko-bsart = 'ZM02'.
PERFORM frm_bdcdynpro USING 'SAPLMR1M' '6000'. PERFORM frm_bdcfield USING 'BDC_OKCODE' '=KO001'.
PERFORM frm_bdcdynpro USING 'SAPLMR1M' '6410'. PERFORM frm_bdcfield USING 'BDC_OKCODE' '/EBACK'. PERFORM frm_bdcfield USING 'DRSEG_CO-WRBTR(01)' l_jine.
ELSE.
PERFORM frm_bdcfield USING 'DRSEG-WRBTR(01)' l_jine. ENDIF. ELSE.
lt_ebeln-num = lt_ebeln-num + 1. IF it_ekko-bsart = 'ZM02'.
CONCATENATE '=KO0' lt_ebeln-num INTO l_okcode. PERFORM frm_bdcdynpro USING 'SAPLMR1M' '6000'. PERFORM frm_bdcfield USING 'BDC_OKCODE' l_okcode.
PERFORM frm_bdcdynpro USING 'SAPLMR1M' '6410'. PERFORM frm_bdcfield USING 'BDC_OKCODE' '/EBACK'. PERFORM frm_bdcfield USING 'DRSEG_CO-WRBTR(01)' l_jine.
ELSE.