在bdc中填充数据以发布密钥45时引发错误

2020-08-22 05:15发布

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

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


嗨,

在it_final循环。
 使用'SAPMF05A''0100'执行bdc_dynpro。
 使用'BDC_CURSOR'执行bdc_field
                               " RF05A-NEWKO"。
 使用'BDC_OKCODE'执行bdc_field
                               '/00'。
 使用'BKPF-BLDAT'执行bdc_field
                               it_final-bldat。
 使用'BKPF-BLART'执行bdc_field
                               it_final-blart。
 使用'BKPF-BUKRS'执行bdc_field
                               it_final-bukrs。
 使用'BKPF-BUDAT'执行bdc_field
                               it_final-budat。
 *使用'BKPF-MONAT'执行bdc_field
 *'12'。
 使用'BKPF-WAERS'执行bdc_field
                               it_final-waers。
 使用'BKPF-XBLNR'执行bdc_field
                               it_final-xblnr。
 使用'BKPF-BKTXT'执行bdc_field
                               it_final-bktxt。

 使用'FS006-DOCID'执行bdc_field
                               '*'。
 在IT_final处循环播放bschl ='35'。
 使用'RF05A-NEWBS'执行bdc_field
                               it_final-bschl。
 使用'RF05A-NEWKO'执行bdc_field
                               it_final-hkont。
 使用'SAPMF05A''0302'执行bdc_dynpro。
 使用'BDC_CURSOR'执行bdc_field
                               " BSEG-SGTXT"。
 使用'BDC_OKCODE'执行bdc_field
                               'AB'。
 使用'BSEG-WRBTR'执行bdc_field
                               w_amount。
 使用'BSEG-BUPLA'执行bdc_field
                               it_final-bupla。
 使用'BSEG-ZUONR'执行bdc_field
                               it_final-zuonr。
 使用'BSEG-SGTXT'执行bdc_field
                               it_final-sgtxt。
 使用'SAPMF05A''0700'执行bdc_dynpro。
 使用'BDC_CURSOR'执行bdc_field
                               " RF05A-NEWKO"。
 使用'BDC_OKCODE'执行bdc_field
                               '/00'。
 使用'BKPF-XBLNR'执行bdc_field
                               it_final-xblnr。
 使用'BKPF-BKTXT'执行bdc_field
                               it_final-bktxt。
 结束循环。
 在IT_final处循环播放bschl ='40'。

 使用'RF05A-NEWBS'执行bdc_field
                               it_final-bschl。
 使用'RF05A-NEWKO'执行bdc_field
                               it_final-hkont。
 使用'SAPMF05A''0300'执行bdc_dynpro。
 使用'BDC_CURSOR'执行bdc_field
                               " BSEG-SGTXT"。
 使用'BDC_OKCODE'执行bdc_field
                               '= AB'。
 使用'BSEG-WRBTR'执行bdc_field
                               w_amount。
 使用'BSEG-BUPLA'执行bdc_field
                               it_final-bupla。
 使用'BSEG-ZUONR'执行bdc_field
                               it_final-zuonr。
 使用'BSEG-SGTXT'执行bdc_field
                               it_final-sgtxt。
 使用'DKACB-FMORE'执行bdc_field
                               'X'。
 使用'SAPLKACB''0002'执行bdc_dynpro。
 使用'BDC_CURSOR'执行bdc_field
                               " COBL-PRCTR"。
 使用'BDC_OKCODE'执行bdc_field
                               " ENTE"。
 使用'COBL-KOSTL'执行bdc_field
                               it_final-kostl。
 使用'COBL-PRCTR'执行bdc_field
                               it_final-prctr。
 使用'SAPLKACB''0002'执行bdc_dynpro。
 使用'BDC_CURSOR'执行bdc_field
                               'COBL-KOSTL'。
 使用'BDC_OKCODE'执行bdc_field
                               '= ENTE'。
 使用'COBL-KOSTL'执行bdc_field
                               it_final-kostl。
 使用'COBL-PRCTR'执行bdc_field
                               it_final-prctr。
 使用'SAPMF05A''0700'执行bdc_dynpro。
 使用'BDC_CURSOR'执行bdc_field
                               " RF05A-NEWBS"。
 使用'BDC_OKCODE'执行bdc_field
                               '= BU'。
 使用'BKPF-XBLNR'执行bdc_field
                               it_final-xblnr。
 使用'BKPF-BKTXT'执行bdc_field
                               it_final-bktxt。
 结束循环。

 使用bdcdata模式'A'更新'S'进行呼叫交易'FB01'
 将消息发送到messtab。
 *表格显示错误
 *检查更新是否成功
 IF sy-subrc NE 0。
 *检索在BDC更新期间显示的错误消息
 在msgtyp ='E'的地方在messtab中循环。
 *根据呼叫交易返回的信息构建实际消息
 通话功能" MESSAGE_TEXT_BUILD"
 出口
 msgid = messtab-msgid
 msgnr = messtab-msgnr
 msgv1 = messtab-msgv1
 msgv2 = messtab-msgv2
 msgv3 = messtab-msgv3
 msgv4 = messtab-msgv4
 输入
 message_text_output = w_textout。
 结局。
 it_error-bschl = it_final-bschl。
 it_error-bldat = it_final-bldat。
 it_error-budat = it_final-budat。
 it_error-waers = it_final-waers。
 it_error-xblnr = it_final-xblnr。
 it_error-bktxt = it_final-bktxt。
 it_error-blart = it_final-blart。
 it_error-bukrs = it_final-bukrs。
 it_error-hkont = it_final-hkont。
 * it_error-shkzg = it_final-shkzg。
 it_error-wrbtr = it_final-wrbtr。
 it_error-zuonr = it_final-zuonr。
 it_error-kostl = it_final-kostl。
 it_error-prctr = it_final-prctr。
 it_error-sgtxt = it_final-sgtxt。
 it_error-bupla = it_final-bupla。
 * it_error值= it_final值。

 it_error-err_msg = w_textout。
 * APPEND it_error。
 APPEND IT_ERROR。
 清除it_error。
 万一。
 清除:bdcdata。
 刷新:bdcdata。
 结局。
 以上代码是我开发的,用于将数据从excel上传到SAP系统。
 对于发布密钥35,它已正确上传。
 但是,当涉及到发布密钥40时,仅处理一条记录,而其余的记录则通过错误进行处理,但excel文件中没有错误记录。请您帮我找出来。

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

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


嗨,

在it_final循环。
 使用'SAPMF05A''0100'执行bdc_dynpro。
 使用'BDC_CURSOR'执行bdc_field
                               " RF05A-NEWKO"。
 使用'BDC_OKCODE'执行bdc_field
                               '/00'。
 使用'BKPF-BLDAT'执行bdc_field
                               it_final-bldat。
 使用'BKPF-BLART'执行bdc_field
                               it_final-blart。
 使用'BKPF-BUKRS'执行bdc_field
                               it_final-bukrs。
 使用'BKPF-BUDAT'执行bdc_field
                               it_final-budat。
 *使用'BKPF-MONAT'执行bdc_field
 *'12'。
 使用'BKPF-WAERS'执行bdc_field
                               it_final-waers。
 使用'BKPF-XBLNR'执行bdc_field
                               it_final-xblnr。
 使用'BKPF-BKTXT'执行bdc_field
                               it_final-bktxt。

 使用'FS006-DOCID'执行bdc_field
                               '*'。
 在IT_final处循环播放bschl ='35'。
 使用'RF05A-NEWBS'执行bdc_field
                               it_final-bschl。
 使用'RF05A-NEWKO'执行bdc_field
                               it_final-hkont。
 使用'SAPMF05A''0302'执行bdc_dynpro。
 使用'BDC_CURSOR'执行bdc_field
                               " BSEG-SGTXT"。
 使用'BDC_OKCODE'执行bdc_field
                               'AB'。
 使用'BSEG-WRBTR'执行bdc_field
                               w_amount。
 使用'BSEG-BUPLA'执行bdc_field
                               it_final-bupla。
 使用'BSEG-ZUONR'执行bdc_field
                               it_final-zuonr。
 使用'BSEG-SGTXT'执行bdc_field
                               it_final-sgtxt。
 使用'SAPMF05A''0700'执行bdc_dynpro。
 使用'BDC_CURSOR'执行bdc_field
                               " RF05A-NEWKO"。
 使用'BDC_OKCODE'执行bdc_field
                               '/00'。
 使用'BKPF-XBLNR'执行bdc_field
                               it_final-xblnr。
 使用'BKPF-BKTXT'执行bdc_field
                               it_final-bktxt。
 结束循环。
 在IT_final处循环播放bschl ='40'。

 使用'RF05A-NEWBS'执行bdc_field
                               it_final-bschl。
 使用'RF05A-NEWKO'执行bdc_field
                               it_final-hkont。
 使用'SAPMF05A''0300'执行bdc_dynpro。
 使用'BDC_CURSOR'执行bdc_field
                               " BSEG-SGTXT"。
 使用'BDC_OKCODE'执行bdc_field
                               '= AB'。
 使用'BSEG-WRBTR'执行bdc_field
                               w_amount。
 使用'BSEG-BUPLA'执行bdc_field
                               it_final-bupla。
 使用'BSEG-ZUONR'执行bdc_field
                               it_final-zuonr。
 使用'BSEG-SGTXT'执行bdc_field
                               it_final-sgtxt。
 使用'DKACB-FMORE'执行bdc_field
                               'X'。
 使用'SAPLKACB''0002'执行bdc_dynpro。
 使用'BDC_CURSOR'执行bdc_field
                               " COBL-PRCTR"。
 使用'BDC_OKCODE'执行bdc_field
                               " ENTE"。
 使用'COBL-KOSTL'执行bdc_field
                               it_final-kostl。
 使用'COBL-PRCTR'执行bdc_field
                               it_final-prctr。
 使用'SAPLKACB''0002'执行bdc_dynpro。
 使用'BDC_CURSOR'执行bdc_field
                               'COBL-KOSTL'。
 使用'BDC_OKCODE'执行bdc_field
                               '= ENTE'。
 使用'COBL-KOSTL'执行bdc_field
                               it_final-kostl。
 使用'COBL-PRCTR'执行bdc_field
                               it_final-prctr。
 使用'SAPMF05A''0700'执行bdc_dynpro。
 使用'BDC_CURSOR'执行bdc_field
                               " RF05A-NEWBS"。
 使用'BDC_OKCODE'执行bdc_field
                               '= BU'。
 使用'BKPF-XBLNR'执行bdc_field
                               it_final-xblnr。
 使用'BKPF-BKTXT'执行bdc_field
                               it_final-bktxt。
 结束循环。

 使用bdcdata模式'A'更新'S'进行呼叫交易'FB01'
 将消息发送到messtab。
 *表格显示错误
 *检查更新是否成功
 IF sy-subrc NE 0。
 *检索在BDC更新期间显示的错误消息
 在msgtyp ='E'的地方在messtab中循环。
 *根据呼叫交易返回的信息构建实际消息
 通话功能" MESSAGE_TEXT_BUILD"
 出口
 msgid = messtab-msgid
 msgnr = messtab-msgnr
 msgv1 = messtab-msgv1
 msgv2 = messtab-msgv2
 msgv3 = messtab-msgv3
 msgv4 = messtab-msgv4
 输入
 message_text_output = w_textout。
 结局。
 it_error-bschl = it_final-bschl。
 it_error-bldat = it_final-bldat。
 it_error-budat = it_final-budat。
 it_error-waers = it_final-waers。
 it_error-xblnr = it_final-xblnr。
 it_error-bktxt = it_final-bktxt。
 it_error-blart = it_final-blart。
 it_error-bukrs = it_final-bukrs。
 it_error-hkont = it_final-hkont。
 * it_error-shkzg = it_final-shkzg。
 it_error-wrbtr = it_final-wrbtr。
 it_error-zuonr = it_final-zuonr。
 it_error-kostl = it_final-kostl。
 it_error-prctr = it_final-prctr。
 it_error-sgtxt = it_final-sgtxt。
 it_error-bupla = it_final-bupla。
 * it_error值= it_final值。

 it_error-err_msg = w_textout。
 * APPEND it_error。
 APPEND IT_ERROR。
 清除it_error。
 万一。
 清除:bdcdata。
 刷新:bdcdata。
 结局。
 以上代码是我开发的,用于将数据从excel上传到SAP系统。
 对于发布密钥35,它已正确上传。
 但是,当涉及到发布密钥40时,仅处理一条记录,而其余的记录则通过错误进行处理,但excel文件中没有错误记录。请您帮我找出来。
付费偷看设置
发送
8条回答
callcenter油条
1楼-- · 2020-08-22 05:56

嗨,

我在您的发布程序中看不到用于发布密钥45的程序。您的循环仅用于发布密钥40和35。

当您运行带有" 在""模式下,您可以看到所有屏幕,可能是当您使用发布键45时,您的屏幕将被更改。 请检查一下。

95年老男孩
2楼-- · 2020-08-22 06:03

请提供您得到的确切错误消息。

南山jay
3楼-- · 2020-08-22 05:58

我无法完全查看您的代码。 但是,只需在

1之后尝试即可。 请在处理之前通过发布键对it_final进行排序。 或

2。 保留两个it_final内部表(1表示30,另40表示)-看起来很奇怪,但可以尝试一下(按现有代码进行低音处理-不知道为什么分别循环两次)

3.Of 如果在每个循环中声明(一个用于检查30,另一个用于检查40),因为您对30和40使用相同的循环

问候

Venkat

# p#

您好krishnamurthy先生,

首先,我想告诉你,我只是打错了输入而不是40,而是输入了45

对于发布密钥35,通过bdc通过fb01 t-code成功上传的所有记录

但是关于发布密钥40,数据并未上载。如图40所示,发布密钥只是如下图所示

当学会了学习
4楼-- · 2020-08-22 06:13

您好

我刚刚在您的代码中注意到。 您已经编写了主循环和两个内部循环。 但是它们都使用相同的内部表it_final。 那不管用。 请再次检查它。

小熊yu生菜
5楼-- · 2020-08-22 06:08

要知道的一件事是BDC数据中的错误将使CALL TRANSACTION返回错误代码1001,并且错误消息的类型为S,而不是E。 请参阅Wiki

因此,请调试代码以确保您不在那种情况下。

奄奄一息的小鱼
6楼-- · 2020-08-22 06:01

对不起,它只有40个,我只是打错了 45

一周热门 更多>