中企动力网站策划百度收录接口
帮助财务同事做了两次过账的批导,使用的是BDC批导方式,录一次屏,将代码提炼然后加工,做成Excel模板导入。
准备Excel导入的模板:ZEX_PZ1(这是我本地有的模板),还有录屏好的代码块。
代码解析:
FORM BDC_DATA4.DATA: BEGIN OF RECORD, "这一个DATA部分是录屏产生的,照搬
* data element: BLDATBLDAT_001(010),
* data element: BLARTBLART_002(002),
* data element: BUKRSBUKRS_003(004),
* data element: BUDATBUDAT_004(010),
* data element: MONATMONAT_005(002),
* data element: WAERSWAERS_006(005),
* data element: XBLNR1XBLNR_007(016),
* data element: BKTXTBKTXT_008(025),
* data element: SAEOBJARTDOCID_009(010),
* data element: NEWBSNEWBS_010(002),
* data element: NEWKONEWKO_011(017),
* data element: NEWUMNEWUM_012(001),
* data element: WRBTRWRBTR_013(016),
* data element: DZUONRZUONR_014(018),
* data element: SGTXTSGTXT_015(050),
* data element: DZFBDTZFBDT_016(010),
* data element: WSTATWSTAT_017(001),
* data element: WDATEWDATE_018(010),
* data element: WNAMEWNAME_019(030),
* data element: WORT1WORT1_020(030),
* data element: REGIOREGIO_021(003),
* data element: WBZOGWBZOG_022(030),
* data element: WORT2WORT2_023(030),
* data element: WBANKWBANK_024(060),
* data element: WLZBPWLZBP_025(060),
* data element: NEWBSNEWBS_026(002),
* data element: NEWKONEWKO_027(017),
* data element: WRBTRWRBTR_028(016),
* data element: MWSKZMWSKZ_029(002),
* data element: DZFBDTZFBDT_030(010),END OF RECORD.IF IT_ZDOCUMENT-SHKZG = '21' OR "此判断是为了有多个过账码情况下进行判断IT_ZDOCUMENT-SHKZG = '39' OR
* it_zdocument-umskz = 'I' ORIT_ZDOCUMENT-UMSKZ = '*' .*** 此后面的代码按照录屏所填的空设置****PERFORM BDC_DYNPRO USING 'SAPMF05A' '0100'.PERFORM BDC_FIELD USING 'BDC_CURSOR''RF05A-NEWUM'.PERFORM BDC_FIELD USING 'BDC_OKCODE''/00'.PERFORM BDC_FIELD USING 'BKPF-BLDAT'IT_ZDOCUMENT-BLDAT. "凭证日期PERFORM BDC_FIELD USING 'BKPF-BLART'IT_ZDOCUMENT-BLART. "凭证类型PERFORM BDC_FIELD USING 'BKPF-BUKRS'IT_ZDOCUMENT-BUKRS. "公司代码PERFORM BDC_FIELD USING 'BKPF-BUDAT'IT_ZDOCUMENT-BUDAT. "过帐日期PERFORM BDC_FIELD USING 'BKPF-MONAT'IT_ZDOCUMENT-MONAT. "记帐期间PERFORM BDC_FIELD USING 'BKPF-WAERS'IT_ZDOCUMENT-WAERS. "货币PERFORM BDC_FIELD USING 'BKPF-XBLNR'IT_ZDOCUMENT-XBLNR. "参考凭证号PERFORM BDC_FIELD USING 'BKPF-BKTXT'IT_ZDOCUMENT-BKTXT. "凭证抬头文本
* PERFORM BDC_FIELD USING 'FS006-DOCID'
* IT_ZDOCUMENT-DOCID.PERFORM BDC_FIELD USING 'RF05A-NEWBS'IT_ZDOCUMENT-SHKZG. "借贷方标识PERFORM BDC_FIELD USING 'RF05A-NEWKO'IT_ZDOCUMENT-KUNNR. "客编PERFORM BDC_FIELD USING 'RF05A-NEWUM'IT_ZDOCUMENT-UMSKZ.*** 此处是过账码,只有正确的过账码才能切换到下一个屏幕***LOOP AT IT_ZDOCUMENT1 WHERE ( UMSKZ = '*' OR UMSKZ = 'W' ) AND BELNR = IT_ZDOCUMENT-BELNR.PERFORM BDC_FIELD USING 'RF05A-NEWBS'IT_ZDOCUMENT1-SHKZG.PERFORM BDC_FIELD USING 'RF05A-NEWKO'IT_ZDOCUMENT1-KUNNR.PERFORM BDC_FIELD USING 'RF05A-NEWUM'IT_ZDOCUMENT1-UMSKZ.PERFORM BDC_DYNPRO USING 'SAPMF05A' '0320'.PERFORM BDC_FIELD USING 'BDC_CURSOR''RF05A-NEWKO'.PERFORM BDC_FIELD USING 'BDC_OKCODE''/00'.PERFORM BDC_FIELD USING 'BSEG-WRBTR'IT_ZDOCUMENT1-WRBTR. "金额PERFORM BDC_FIELD USING 'BSEG-ZUONR'IT_ZDOCUMENT1-ZUONR.PERFORM BDC_FIELD USING 'BSEG-SGTXT'IT_ZDOCUMENT1-BKTXT.PERFORM BDC_FIELD USING 'BSEG-ZFBDT'IT_ZDOCUMENT1-ZFBDT. "到期日PERFORM BDC_FIELD USING 'BSED-WSTAT'IT_ZDOCUMENT1-WSTAT. "汇票类型PERFORM BDC_FIELD USING 'BSED-WDATE'IT_ZDOCUMENT1-WDATE. "签发日期PERFORM BDC_FIELD USING 'BSED-WNAME'IT_ZDOCUMENT1-WNAME. "出票人PERFORM BDC_FIELD USING 'BSED-WORT1'IT_ZDOCUMENT1-WORT1. "出票人地点
* PERFORM BDC_FIELD USING 'BSED-REGIO'
* RECORD-REGIO_021.PERFORM BDC_FIELD USING 'BSED-WBZOG'IT_ZDOCUMENT1-WBZOG. "汇票受票人PERFORM BDC_FIELD USING 'BSED-WORT2'IT_ZDOCUMENT1-WORT2. "受票人地点PERFORM BDC_FIELD USING 'BSED-WBANK'IT_ZDOCUMENT1-WBANK. "汇票长号PERFORM BDC_FIELD USING 'BSED-WLZBP'IT_ZDOCUMENT1-WLZBP. "银行名称
* PERFORM BDC_FIELD USING 'RF05A-NEWBS'
* IT_ZDOCUMENT1-SHKZG. "借贷方标识
* PERFORM BDC_FIELD USING 'RF05A-NEWKO'
* IT_ZDOCUMENT1-KUNNR. "客编ENDLOOP.**此处是过账码,同样要正确才能切换到另一个屏幕**LOOP AT IT_ZDOCUMENT1 WHERE UMSKZ = '' AND BELNR = IT_ZDOCUMENT-BELNR.*PERFORM BDC_FIELD USING 'RF05A-NEWBS'IT_ZDOCUMENT1-SHKZG.PERFORM BDC_FIELD USING 'RF05A-NEWKO'IT_ZDOCUMENT1-KUNNR.PERFORM BDC_DYNPRO USING 'SAPMF05A' '0302'.PERFORM BDC_FIELD USING 'BDC_CURSOR''BSEG-WRBTR'.PERFORM BDC_FIELD USING 'BDC_OKCODE''=BU'.PERFORM BDC_FIELD USING 'BSEG-WRBTR'IT_ZDOCUMENT1-WRBTR. "金额
* PERFORM BDC_FIELD USING 'BSEG-MWSKZ'
* IT_ZDOCUMENT1-MWSKZ.PERFORM BDC_FIELD USING 'BSEG-ZFBDT'IT_ZDOCUMENT1-ZFBDT. "到期日PERFORM BDC_TRANSACTION USING 'FB01' 'N'. "'A'表示可视,'N'表示不可视.ENDLOOP.ENDIF.
ENDFORM.
对于有多个过账码的需求,需要找出其不同的差异,准确进入到不同的代码块中。
参照写法:
IF ( IT_ZDOCUMENT-UMSKZ = 'W' OR "第一种凭证IT_ZDOCUMENT-UMSKZ = '' OR IT_ZDOCUMENT-UMSKZ = '!') AND( IT_ZDOCUMENT-SHKZG = '21' ORIT_ZDOCUMENT-SHKZG = '39' ).LOOP AT IT_ZDOCUMENT2.IF IT_ZDOCUMENT2-UMSKZ = 'A' OR IT_ZDOCUMENT2-UMSKZ = '*'.C1 = 1.ENDIF.IF ( IT_ZDOCUMENT2-UMSKZ = 'W' OR IT_ZDOCUMENT2-UMSKZ = '!' ) AND IT_ZDOCUMENT2-SHKZG = '39'.C2 = 1.ENDIF.ENDLOOP.IF C1 <> 1 AND C2 = 1.PERFORM BDC_DATA1.DELETE IT_ZDOCUMENT[] WHERE BELNR = IT_ZDOCUMENT-BELNR.ENDIF.C1 = 0.C2 = 0.ENDIF.
*-----------------------------------------------------------------------------IF( IT_ZDOCUMENT-SHKZG = '09' OR "第二种凭证IT_ZDOCUMENT-SHKZG = '11' ) AND( IT_ZDOCUMENT-UMSKZ = '' OR IT_ZDOCUMENT-UMSKZ = 'W' ) .PERFORM BDC_DATA2.DELETE IT_ZDOCUMENT[] WHERE BELNR = IT_ZDOCUMENT-BELNR.ENDIF.IF
*------------------------------------------------------------------------------( IT_ZDOCUMENT-SHKZG = '19' OR "第三种凭证IT_ZDOCUMENT-SHKZG = '21' ) AND( IT_ZDOCUMENT-UMSKZ = '' OR IT_ZDOCUMENT-UMSKZ = 'W' ) .LOOP AT IT_ZDOCUMENT2.IF IT_ZDOCUMENT2-UMSKZ = 'A'.C1 = 1.ENDIF.IF IT_ZDOCUMENT2-SHKZG = '19' OR IT_ZDOCUMENT2-UMSKZ = 'W'.C2 = 1.ENDIF.ENDLOOP.IF C1 <> 1 AND C2 = 1.PERFORM BDC_DATA3.DELETE IT_ZDOCUMENT[] WHERE BELNR = IT_ZDOCUMENT-BELNR.ENDIF.C2 = 0.C1 = 0.ENDIF.
*---------------------------------------------------------------------------------IF ( IT_ZDOCUMENT-SHKZG = '21' OR "第四种凭证IT_ZDOCUMENT-SHKZG = '39' ) AND( IT_ZDOCUMENT-UMSKZ = '' OR IT_ZDOCUMENT-UMSKZ = '*' ) .LOOP AT IT_ZDOCUMENT2.IF IT_ZDOCUMENT2-UMSKZ = 'A' OR IT_ZDOCUMENT2-UMSKZ = 'W'.C1 = 1.ENDIF.IF IT_ZDOCUMENT2-SHKZG = '21' AND IT_ZDOCUMENT2-UMSKZ = '' AND IT_ZDOCUMENT2-SHKZG <> '29' .C2 = 1.ENDIF.ENDLOOP.IF C1 <> 1 AND C2 = 1.PERFORM BDC_DATA4.DELETE IT_ZDOCUMENT[] WHERE BELNR = IT_ZDOCUMENT-BELNR.ENDIF.C1 = 0.C2 = 0.ENDIF.