BDC F-28无法在后台模式下过帐多张发票

2020-08-23 02:44发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


您好专家

我正在使用DBC F-28在后台模式下过帐发票,在某些情况下没有针对多张发票进行过帐,但是同样可以在地面模式下成功过帐。 我收到错误消息

填写所有必填字段:BKPF-BLDAT字段中的格式错误; 查看下一条消息:

请建议F-28 BDC的前景运行与背景运行之间是否存在差异。

下面的代码片段。

 LOOP AT lt_input INTO ls_input。
     使用'SAPMF05A''0103'执行bdc_dynpro。
     使用'BDC_CURSOR''RF05A-XPOS1(03)'执行bdc_field。
     使用'BDC_OKCODE''/00'执行PERC bdc_field。
     使用'BKPF-BLDAT'ls_input-postingdate执行bdc_field。
     使用'BKPF-BLART''DZ'执行bdc_field。
     使用'BKPF-BUKRS''1050'执行bdc_field。
     使用'BKPF-BUDAT'ls_input-postingdate执行bdc_field。
     使用'BKPF-MONAT''4'执行bdc_field。
     使用'BKPF-WAERS''INR'执行bdc_field。
     使用'BKPF-XBLNR'ls_input-utr_value执行bdc_field。
     使用" BKPF-BKTXT""免费收款"来执行bdc_field。
     使用'RF05A-AUGTX'ls_input-approval_value执行bdc_field。
     使用'RF05A-KONTO'ls_input-gl_number执行bdc_field。
     使用'BSEG-GSBER''Z850'执行bdc_field。
     使用'BSEG-WRBTR'gv_amount执行bdc_field。
     使用'BSEG-VALUT'ls_input-postingdate执行bdc_field。
     使用'BSEG-SGTXT''APPROVED TIMESTAMP'执行bdc_field。
     使用'BSEG-ZUONR'ls_input-utr_value执行bdc_field。
     使用'RF05A-AGKON'ls_input-customercode执行bdc_field。
     使用'RF05A-AGKOA''​​D'执行bdc_field。
     使用'RF05A-XNOPS''X'执行bdc_field。
     使用'RF05A-XPOS1(01)'来执行bdc_field。
     使用'RF05A-XPOS1(03)''X'执行bdc_field。
                                  
     使用'SAPMF05A''0731'执行bdc_dynpro。
     使用'BDC_CURSOR''RF05A-SEL01(02)'执行bdc_field。 使用'BDC_OKCODE''= PA'执行PERC bdc_field。
    描述表lt_bsid行lv_item1。
     如果lv_item1 LE 9。
       清除:lv_rf05a_sel01。
       lv_inx_m = lv_item1。 压缩lv_inx_m。
       将'RF05A-SEL01(0'lv_inx_m')'放入lv_rf05a_sel01。
       使用'BDC_CURSOR'lv_rf05a_sel01执行bdc_field。  "'RF05A-SEL01(05)'。
       使用'BDC_OKCODE''= PA'执行PERC bdc_field。
     其他。
       使用'BDC_CURSOR''RF05A-SEL01(09)'执行bdc_field。
       使用'BDC_OKCODE''= SL2'执行PERC bdc_field。
     万一。


     lv_inx = 1。
     循环到lt_bsid进入ls_bsid。
       压缩lv_inx。


       清除:lv_rf05a_sel01。
       将'RF05A-SEL01(0'lv_inx')'连接到lv_rf05a_sel01。
       凝聚lv_rf05a_sel01。
       使用lv_rf05a_sel01 ls_bsid-belnr执行bdc_field。


       lv_inx = lv_inx + 1。
       附加ls_bsid至lt_bsid_temp。


       如果lv_inx = 10。
         清除:lv_item,lv_item1,lv_item2。
         描述表lt_bsid行lv_item1。
         描述表lt_bsid_temp线lv_item2。
         lv_item = lv_item1-lv_item2。


         如果lv_item <> 0。


           使用'SAPMF05A''0608'执行bdc_dynpro。
           使用'BDC_CURSOR''RF05A-XPOS1(02)'执行bdc_field。
           使用'BDC_OKCODE''= ENTR'执行PERC bdc_field。
           使用'RF05A-XPOS1(01)'来执行bdc_field。
           使用'RF05A-XPOS1(02)''X'执行bdc_field。
           使用'SAPMF05A''0731'执行bdc_dynpro。


         万一。


         如果lv_item LE 9。
           清除:lv_rf05a_sel01。
           lv_inx_m = lv_item。 压缩lv_inx_m。
           将'RF05A-SEL01(0'lv_inx_m')'放入lv_rf05a_sel01。
           使用'BDC_CURSOR'lv_rf05a_sel01执行bdc_field。  "'RF05A-SEL01(05)'。
           使用'BDC_OKCODE''= PA'执行PERC bdc_field。
         其他。
           使用'BDC_CURSOR''RF05A-SEL01(09)'执行bdc_field。  "'RF05A-SEL01(05)'。
           使用'BDC_OKCODE''= SL2'执行PERC bdc_field。
         万一。


         lv_inx = 1。
       万一。
       清除:ls_bsid。
     结局。

     使用'SAPDF05X''3100'执行bdc_dynpro。
     使用'BDC_OKCODE''= BU'执行bdc_field。
     使用'BDC_CURSOR''DF05B-PSSKT(01)'执行bdc_field。
     使用'RF05A-ABPOS''1'执行bdc_field。
     使用'SAPMF05A''0700'执行bdc_dynpro。
     使用'BDC_CURSOR''RF05A-AZEI1(01)'执行bdc_field。
     使用'BDC_OKCODE''= PI'执行bdc_field。
     使用'BKPF-XBLNR'ls_input-utr_value执行bdc_field。
     使用" BKPF-BKTXT""免费收款"来执行bdc_field。
     使用'SAPMF05A''0300'执行bdc_dynpro。
     使用'BDC_CURSOR''BSEG-WRBTR'执行bdc_field。
     使用'BDC_OKCODE''= ZK'执行PERC bdc_field。
     使用'BSEG-WRBTR'gv_amount执行bdc_field。
     使用'BSEG-VALUT'ls_input-postingdate执行bdc_field。
     使用'BSEG-ZUONR'ls_input-utr_value执行bdc_field。
     使用'BSEG-SGTXT'ls_input-approval_value执行bdc_field。
     使用'SAPLKACB''0002'执行bdc_dynpro。
     使用'BDC_CURSOR''COBL-GSBER'执行bdc_field。
     使用'BDC_OKCODE''= ENTE'执行PERC bdc_field。
     使用'COBL-GSBER''Z850'执行bdc_field。
                                  
     使用'SAPMF05A''0330'执行bdc_dynpro。
     使用'BDC_CURSOR''BSEG-KIDNO'执行bdc_field。
     使用'BDC_OKCODE''= BS'执行PERC bdc_field。
     使用'BSEG-RSTGR''11'执行bdc_field。
     使用'BSEG-KIDNO'ls_input-utr_value执行bdc_field。
     使用'SAPMF05A''0700'执行bdc_dynpro。
     使用'BDC_CURSOR''RF05A-NEWBS'执行bdc_field。
     使用'BDC_OKCODE''= BU'执行bdc_field。
     使用'BKPF-XBLNR'ls_input-utr_value执行bdc_field。
     使用" BKPF-BKTXT""免费收款"来执行bdc_field。 出口。  "从循环中出来(需要精确地循环一次)。
   结局。

   呼叫交易'F-28'
              使用bdcdata
              模式
              更新cupdate
              消息输入lt_messtab。
 

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


您好专家

我正在使用DBC F-28在后台模式下过帐发票,在某些情况下没有针对多张发票进行过帐,但是同样可以在地面模式下成功过帐。 我收到错误消息

填写所有必填字段:BKPF-BLDAT字段中的格式错误; 查看下一条消息:

请建议F-28 BDC的前景运行与背景运行之间是否存在差异。

下面的代码片段。

 LOOP AT lt_input INTO ls_input。
     使用'SAPMF05A''0103'执行bdc_dynpro。
     使用'BDC_CURSOR''RF05A-XPOS1(03)'执行bdc_field。
     使用'BDC_OKCODE''/00'执行PERC bdc_field。
     使用'BKPF-BLDAT'ls_input-postingdate执行bdc_field。
     使用'BKPF-BLART''DZ'执行bdc_field。
     使用'BKPF-BUKRS''1050'执行bdc_field。
     使用'BKPF-BUDAT'ls_input-postingdate执行bdc_field。
     使用'BKPF-MONAT''4'执行bdc_field。
     使用'BKPF-WAERS''INR'执行bdc_field。
     使用'BKPF-XBLNR'ls_input-utr_value执行bdc_field。
     使用" BKPF-BKTXT""免费收款"来执行bdc_field。
     使用'RF05A-AUGTX'ls_input-approval_value执行bdc_field。
     使用'RF05A-KONTO'ls_input-gl_number执行bdc_field。
     使用'BSEG-GSBER''Z850'执行bdc_field。
     使用'BSEG-WRBTR'gv_amount执行bdc_field。
     使用'BSEG-VALUT'ls_input-postingdate执行bdc_field。
     使用'BSEG-SGTXT''APPROVED TIMESTAMP'执行bdc_field。
     使用'BSEG-ZUONR'ls_input-utr_value执行bdc_field。
     使用'RF05A-AGKON'ls_input-customercode执行bdc_field。
     使用'RF05A-AGKOA''​​D'执行bdc_field。
     使用'RF05A-XNOPS''X'执行bdc_field。
     使用'RF05A-XPOS1(01)'来执行bdc_field。
     使用'RF05A-XPOS1(03)''X'执行bdc_field。
                                  
     使用'SAPMF05A''0731'执行bdc_dynpro。
     使用'BDC_CURSOR''RF05A-SEL01(02)'执行bdc_field。 使用'BDC_OKCODE''= PA'执行PERC bdc_field。
    描述表lt_bsid行lv_item1。
     如果lv_item1 LE 9。
       清除:lv_rf05a_sel01。
       lv_inx_m = lv_item1。 压缩lv_inx_m。
       将'RF05A-SEL01(0'lv_inx_m')'放入lv_rf05a_sel01。
       使用'BDC_CURSOR'lv_rf05a_sel01执行bdc_field。  "'RF05A-SEL01(05)'。
       使用'BDC_OKCODE''= PA'执行PERC bdc_field。
     其他。
       使用'BDC_CURSOR''RF05A-SEL01(09)'执行bdc_field。
       使用'BDC_OKCODE''= SL2'执行PERC bdc_field。
     万一。


     lv_inx = 1。
     循环到lt_bsid进入ls_bsid。
       压缩lv_inx。


       清除:lv_rf05a_sel01。
       将'RF05A-SEL01(0'lv_inx')'连接到lv_rf05a_sel01。
       凝聚lv_rf05a_sel01。
       使用lv_rf05a_sel01 ls_bsid-belnr执行bdc_field。


       lv_inx = lv_inx + 1。
       附加ls_bsid至lt_bsid_temp。


       如果lv_inx = 10。
         清除:lv_item,lv_item1,lv_item2。
         描述表lt_bsid行lv_item1。
         描述表lt_bsid_temp线lv_item2。
         lv_item = lv_item1-lv_item2。


         如果lv_item <> 0。


           使用'SAPMF05A''0608'执行bdc_dynpro。
           使用'BDC_CURSOR''RF05A-XPOS1(02)'执行bdc_field。
           使用'BDC_OKCODE''= ENTR'执行PERC bdc_field。
           使用'RF05A-XPOS1(01)'来执行bdc_field。
           使用'RF05A-XPOS1(02)''X'执行bdc_field。
           使用'SAPMF05A''0731'执行bdc_dynpro。


         万一。


         如果lv_item LE 9。
           清除:lv_rf05a_sel01。
           lv_inx_m = lv_item。 压缩lv_inx_m。
           将'RF05A-SEL01(0'lv_inx_m')'放入lv_rf05a_sel01。
           使用'BDC_CURSOR'lv_rf05a_sel01执行bdc_field。  "'RF05A-SEL01(05)'。
           使用'BDC_OKCODE''= PA'执行PERC bdc_field。
         其他。
           使用'BDC_CURSOR''RF05A-SEL01(09)'执行bdc_field。  "'RF05A-SEL01(05)'。
           使用'BDC_OKCODE''= SL2'执行PERC bdc_field。
         万一。


         lv_inx = 1。
       万一。
       清除:ls_bsid。
     结局。

     使用'SAPDF05X''3100'执行bdc_dynpro。
     使用'BDC_OKCODE''= BU'执行bdc_field。
     使用'BDC_CURSOR''DF05B-PSSKT(01)'执行bdc_field。
     使用'RF05A-ABPOS''1'执行bdc_field。
     使用'SAPMF05A''0700'执行bdc_dynpro。
     使用'BDC_CURSOR''RF05A-AZEI1(01)'执行bdc_field。
     使用'BDC_OKCODE''= PI'执行bdc_field。
     使用'BKPF-XBLNR'ls_input-utr_value执行bdc_field。
     使用" BKPF-BKTXT""免费收款"来执行bdc_field。
     使用'SAPMF05A''0300'执行bdc_dynpro。
     使用'BDC_CURSOR''BSEG-WRBTR'执行bdc_field。
     使用'BDC_OKCODE''= ZK'执行PERC bdc_field。
     使用'BSEG-WRBTR'gv_amount执行bdc_field。
     使用'BSEG-VALUT'ls_input-postingdate执行bdc_field。
     使用'BSEG-ZUONR'ls_input-utr_value执行bdc_field。
     使用'BSEG-SGTXT'ls_input-approval_value执行bdc_field。
     使用'SAPLKACB''0002'执行bdc_dynpro。
     使用'BDC_CURSOR''COBL-GSBER'执行bdc_field。
     使用'BDC_OKCODE''= ENTE'执行PERC bdc_field。
     使用'COBL-GSBER''Z850'执行bdc_field。
                                  
     使用'SAPMF05A''0330'执行bdc_dynpro。
     使用'BDC_CURSOR''BSEG-KIDNO'执行bdc_field。
     使用'BDC_OKCODE''= BS'执行PERC bdc_field。
     使用'BSEG-RSTGR''11'执行bdc_field。
     使用'BSEG-KIDNO'ls_input-utr_value执行bdc_field。
     使用'SAPMF05A''0700'执行bdc_dynpro。
     使用'BDC_CURSOR''RF05A-NEWBS'执行bdc_field。
     使用'BDC_OKCODE''= BU'执行bdc_field。
     使用'BKPF-XBLNR'ls_input-utr_value执行bdc_field。
     使用" BKPF-BKTXT""免费收款"来执行bdc_field。 出口。  "从循环中出来(需要精确地循环一次)。
   结局。

   呼叫交易'F-28'
              使用bdcdata
              模式
              更新cupdate
              消息输入lt_messtab。
 
付费偷看设置
发送
5条回答
派大星 ヾ
1楼-- · 2020-08-23 03:33

您正在创建批处理输入,因此请确保数据格式正确(外部格式)

提示:在bdc_field中,将MOVE替换为WRITE LEFT JUSTIFIED。 (还可以在语句中添加货币或uom)

昵称总是被占用
2楼-- · 2020-08-23 03:15

我正在运行我的程序,该文件具有多个事务,其中很少事务会出错并且很少成功发布。 交易类型,如单张发票2张发票,树状发票等...

填写所有必填字段:BKPF-BLDAT字段中的格式错误; 请参阅下一条消息:填写所有必填字段:BKPF-BLDAT字段中的格式错误; 请参阅下一条消息:填写所有必填字段:BKPF-BLDAT字段中的格式错误; 请参阅下一条消息:填写所有必填字段:BKPF-BLDAT字段中的格式错误; 看到下一条消息:
SC_Yao
3楼-- · 2020-08-23 03:20

我通过检查"模拟背景"和文档过帐来进行记录,但是执行呼叫交易后,消息表中没有任何消息。

呼叫交易'F-28'
              使用bdcdata
              模式
              更新cupdate
              向lt_messtab发送消息。

it_messtab中没有记录更新,但文档已过帐。

任何人都可以知道,是否需要任何配置?

谢谢

Atique

太Q了
4楼-- · 2020-08-23 03:20

在记录与SHDB的交易时是否选中了"模拟背景"框?

渐行渐远_HoldOn
5楼-- · 2020-08-23 03:26

感谢Jayantha的回复,

我们将代码移至QAS/PRD并正常工作,已解决。

再次感谢。

一周热门 更多>