2020-09-03 22:02发布
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
您好,
虽然我尝试使用BAPI_SALESORDER_CHANGE来补充计划行日期,但它适用于订单项的第一个计划行。 如果我要修改同一订单项的第二个计划行,则其给出的错误为
"系统错误:项目000010的计划行0002不存在"。
请问我是否遇到相同问题或解决此错误的任何想法。
谢谢
Kamalakar。
你好Jalena,
感谢您的回复。
请在下面找到我的代码。
在我-> lt_order上引用我-> lr_order 在vbeln NE lv_vbeln。 lv_vbeln = me-> lr_order-> vbeln。 ls_order_header_in-dlvschduse ='WAP'。 ls_order_header_inx-dlvschduse ='X'。
ls_order_header_in-dun_date = lr_order->基准。
ls_order_header_inx-dun_date ='X'。
ls_order_header_inx-updateflag ='U'。
将lt_vbap循环放入ls_vbap所在的地方vbeln = me-> lr_order-> vbeln。 * ls_item-vbeln = ls_vbap-vbeln。 ls_item-itm_number = ls_vbap-posnr__item lt。 ls_itemx-itm_number = ls_vbap-posnr。 ls_itemx-updateflag ='U'。将ls_itemx附加到lt_itemsx。将lt_vbep INTO循环到ls_vbep WHERE vbeln = ls_vbrap-n ls_vbap-posnr。 ls_schedule_lines-itm_number = ls_vbep-posnr。 ls_schedule_lines-sched_line = ls_vbep-etenr。"" 0001"。 gi_date = ls_order_header_in-dun_date。 ls_schedule_lines-tp_date = ls_order_header_in-dun_date。 ls_schedule_lines-ms_date = ls_order_header_in-dun_date。 ls_schedule_lines_header_dun_date。
ls_schedule_lines-req_date = ls_schedule_lines-req_date + lv_days1。
APPEND将ls_schedule_lines转换为lt_schedule_lines。 ls_schedulex-itm_number = ls_vbep-posnr。 ls_schedulex-sched_line = ls_vbep-etenr。"'0001'。 ls_schedulex-updateflag = br> ls_schedulex-load_date ='X'。 ls_schedulex-ms_date ='X'。 ls_schedulex-gi_date ='X'。 ls_schedulex-tp_date ='X'。 ls_schedulex-req_date = 'X'。 * ls_schedulex-date_type ='X'。将ls_schedulex附加到lt_schedulex。
ENDloop。 ENDLOOP。 呼叫功能'BAPI_SALESORDER_CHANGE'导出 SALESDOCUMENT = me-> lr_order-> vbeln ORDER_HEADER_IN = ls_order_header_in ORDER_HEADER_IN = ls_order_header_inx 模拟= p_simul 表 RETURN = lt_return ORDER_ITEM_IN = lt_items ORDER_ITEM_INX = lt_itemsx SCHEDULE_LINES = lt_Schedule_lines SCHEDU br> * ... committen 如果p_simul处于初始状态。通话功能'BAPI_TRANSACTION_COMMIT'导出 wait ='X'。 ENDIF。
仅当一个订单项有多个计划行时,该项目才有效。如果第二个计划行有错误,则该错误。
不确定如何回答...没有共享代码,没有数据,没有屏幕截图,目前还不清楚解决此问题的方法。 如果消息显示该行不存在,则该行不存在。 ¯\ _(ツ)_/¯
Google-> BAPI_SALESORDER_CHANGE更新日程安排日期站点: sap.com -> 927个结果,可能要从那里开始。
在这种情况下(我不是开发人员),我通常要做的是在SE37中以相同顺序创建测试数据,并执行BAPI_SALESORDER_CHANGE和BAPI_TRANSACTION_COMMIT的测试序列。 如果通过SE37而不是通过程序正确更新了计划行,则问题出在自定义代码,因此我将放置一个断点以找出SE37和z *中参数值之间的区别
如果在SE37和z *程序中出现相同的错误,我将在执行SE37中的测试序列之前使用BAPISDORDER_GETDETAILEDLIST来验证每个项目的计划行(实际上,我会在尝试之前进行此操作) 还要别的吗)。
我使用的另一个故障排除选项是通过VA02修改文档。 如果SE37和Z *程序无法按预期工作,但是VA02是否会寻找与屏幕逻辑,硬编码TCODE等有关的任何内容。
当然,有经验的开发人员应该能够进行故障排除 仅仅通过调试即可解决问题(这可能很耗时),但由于我不是一个人-我使用了我在向开发人员寻求帮助之前提到的技术。
检查此代码。 ..
数据:类似于BAPISDH1X的数据:BAPISDH1X.DATA:类似于BAPISDH1的BAPISDH1。参数:P_VBELN类似于VBAK-VBELN OBLIGATORY.PARAMETERS:P_LIFSK类似于VBAK-LIFSK义务。 *标头 BAPISDH1-DLV_BLOCK = p_lifsk。"传递块 *标头X BAPISDH1X-DLV_BLOCK =" X"。"交付块 BAPISDH1X-UPDATEFLAG ='U'.CALLFUNCTION'BAPI_SALESORDER_CHANGE'EXPORTING 销售文件= P_VBELN order_header_in = BAPISDH1 order_header_inx = BAPISDH1X tablereturn = T_RETURN .LOOPAT T_RETURN WHERETYPE ='E'ORTYPE ='A'.EXIT.ENDLOOP。 *检查错误消息。IFSY-SUBRC= 0.WRITE:/"销售订单未更新",T_RETURN-MESSAGE.ELSE。
*成功更新WRITE:/"销售订单已更新"。ENDIF.COMMITWORK。
更多信息: SAP ABAP认证
嗨,开发人员,
感谢您的输入。
您是对的,我正在尝试用相同的日期和req日期用date plus days更新所有计划行。 如果进度计划行未确认数量,则工作正常。 如果计划行中有多个订单项,而计划行中的数量有争议,则其错误为"不存在项目000010的计划行0002"。
嗨,
ls_schedule_lines-load_date = ls_order_header_in-dun_date。 ls_schedule_lines-gi_date = ls_order_header_in-dun_date。 ls_schedule_lines -tp_date = ls_order_header_in-dun_date。 ls_schedule_lines-ms_date = ls_order_header_in-dun_date。 ls_schedule_lines-req_date = ls_order_header_in-dun_date _
我不知道您的初始要求是什么,但是您正在使用相同的信息更新所有计划行。 您难道不应该只更新订单中的最后一个计划行吗?
最多设置5个标签!
你好Jalena,
感谢您的回复。
请在下面找到我的代码。
在我-> lt_order上引用我-> lr_order
在vbeln NE lv_vbeln。
lv_vbeln = me-> lr_order-> vbeln。
ls_order_header_in-dlvschduse ='WAP'。
ls_order_header_inx-dlvschduse ='X'。
ls_order_header_in-dun_date = lr_order->基准。
ls_order_header_inx-dun_date ='X'。
ls_order_header_inx-updateflag ='U'。
将lt_vbap循环放入ls_vbap所在的地方vbeln = me-> lr_order-> vbeln。
* ls_item-vbeln = ls_vbap-vbeln。
ls_item-itm_number = ls_vbap-posnr__item lt。
ls_itemx-itm_number = ls_vbap-posnr。
ls_itemx-updateflag ='U'。
将ls_itemx附加到lt_itemsx。
将lt_vbep INTO循环到ls_vbep WHERE vbeln = ls_vbrap-n ls_vbap-posnr。
ls_schedule_lines-itm_number = ls_vbep-posnr。
ls_schedule_lines-sched_line = ls_vbep-etenr。"" 0001"。 gi_date = ls_order_header_in-dun_date。
ls_schedule_lines-tp_date = ls_order_header_in-dun_date。
ls_schedule_lines-ms_date = ls_order_header_in-dun_date。
ls_schedule_lines_header_dun_date。
ls_schedule_lines-req_date = ls_schedule_lines-req_date + lv_days1。
APPEND将ls_schedule_lines转换为lt_schedule_lines。
ls_schedulex-itm_number = ls_vbep-posnr。
ls_schedulex-sched_line = ls_vbep-etenr。"'0001'。
ls_schedulex-updateflag = br> ls_schedulex-load_date ='X'。
ls_schedulex-ms_date ='X'。
ls_schedulex-gi_date ='X'。
ls_schedulex-tp_date ='X'。
ls_schedulex-req_date = 'X'。
* ls_schedulex-date_type ='X'。
将ls_schedulex附加到lt_schedulex。
ENDloop。
ENDLOOP。
呼叫功能'BAPI_SALESORDER_CHANGE'
导出
SALESDOCUMENT = me-> lr_order-> vbeln
ORDER_HEADER_IN = ls_order_header_in
ORDER_HEADER_IN = ls_order_header_inx
模拟= p_simul
表
RETURN = lt_return
ORDER_ITEM_IN = lt_items
ORDER_ITEM_INX = lt_itemsx
SCHEDULE_LINES = lt_Schedule_lines
SCHEDU br> * ... committen
如果p_simul处于初始状态。
通话功能'BAPI_TRANSACTION_COMMIT'
导出
wait ='X'。
ENDIF。
仅当一个订单项有多个计划行时,该项目才有效。如果第二个计划行有错误,则该错误。
谢谢
Kamalakar。
不确定如何回答...没有共享代码,没有数据,没有屏幕截图,目前还不清楚解决此问题的方法。 如果消息显示该行不存在,则该行不存在。 ¯\ _(ツ)_/¯
Google-> BAPI_SALESORDER_CHANGE更新日程安排日期站点: sap.com -> 927个结果,可能要从那里开始。
在这种情况下(我不是开发人员),我通常要做的是在SE37中以相同顺序创建测试数据,并执行BAPI_SALESORDER_CHANGE和BAPI_TRANSACTION_COMMIT的测试序列。 如果通过SE37而不是通过程序正确更新了计划行,则问题出在自定义代码,因此我将放置一个断点以找出SE37和z *中参数值之间的区别
如果在SE37和z *程序中出现相同的错误,我将在执行SE37中的测试序列之前使用BAPISDORDER_GETDETAILEDLIST来验证每个项目的计划行(实际上,我会在尝试之前进行此操作) 还要别的吗)。
我使用的另一个故障排除选项是通过VA02修改文档。 如果SE37和Z *程序无法按预期工作,但是VA02是否会寻找与屏幕逻辑,硬编码TCODE等有关的任何内容。
当然,有经验的开发人员应该能够进行故障排除 仅仅通过调试即可解决问题(这可能很耗时),但由于我不是一个人-我使用了我在向开发人员寻求帮助之前提到的技术。
检查此代码。 ..
*成功更新WRITE:/"销售订单已更新"。ENDIF.COMMITWORK。
更多信息: SAP ABAP认证
嗨,开发人员,
感谢您的输入。
您是对的,我正在尝试用相同的日期和req日期用date plus days更新所有计划行。 如果进度计划行未确认数量,则工作正常。 如果计划行中有多个订单项,而计划行中的数量有争议,则其错误为"不存在项目000010的计划行0002"。
谢谢
Kamalakar。
嗨,
ls_schedule_lines-load_date = ls_order_header_in-dun_date。
s + lv_days1。ls_schedule_lines-gi_date = ls_order_header_in-dun_date。
ls_schedule_lines -tp_date = ls_order_header_in-dun_date。
ls_schedule_lines-ms_date = ls_order_header_in-dun_date。
ls_schedule_lines-req_date = ls_order_header_in-dun_date _
我不知道您的初始要求是什么,但是您正在使用相同的信息更新所有计划行。 您难道不应该只更新订单中的最后一个计划行吗?
一周热门 更多>