点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
你好大师,
我的情况如下:
1。 我有一个包含3个项目的销售订单,所有订单都有拒绝的原因。 基本上,如果我们有拒绝的理由,我们将无法在MD04(要求)中看到此项目。
2。 我有一个使用BAPI_SALESORDER_CHANGE删除拒绝原因的程序。 我的结构字段如下:
SALESDOCUMENT =现有销售订单编号
ORDER_HEADER_INX-UPDATEFLAG = U
ORDER_ITEM_IN-ITM_NUMBER = 000010
ORDER_ITEM_IN-REASON_REJ =''
ORDER_ITEM_IN-ITM_NUMBER = 000020
ORDER_ITEM_IN-REASON_REJ =''
ORDER_ITEM_IN-ITM_NUMBER = 000030
ORDER_ITEM_IN-REASON_REJ =''
ORDER_ITEM_INX-ITM_NUMBER = 000010
ORDER_ITEM_INX-UPDATEFLAG ='U'
ORDER_ITEM_INX-REASON_REJ ='X'
ORDER_ITEM_INX-ITM_NUMBER = 000020
ORDER_ITEM_INX-UPDATEFLAG ='U'
ORDER_ITEM_INX-REASON_REJ ='X'
ORDER_ITEM_INX-ITM_NUMBER = 000020
ORDER_ITEM_INX-UPDATEFLAG ='U'
ORDER_ITEM_INX-REASON_REJ ='X'
3。 执行此程序后,拒绝原因已从销售订单项目中删除,但仅项目000010
在MD04中可以看到。 销售订单的更改日志如下:
000010拒绝报价和销售订单的原因已更改
000020项目已创建
000030项目已创建
4。 但是,如果我对所有项目使用ORDER_ITEM_INX-UPDATEFLAG ='I'我可以在MD04中看到所有项目,并且日志如下所示
000010拒绝报价和销售订单的原因已更改
000020拒绝报价和销售订单的原因已更改
000030拒绝报价的原因和销售订单已更改
正如我从BAPI文档中了解到的,如果要更改现有销售订单的值,我们必须在UPDATEFLAG字段中使用" U"。 但是为什么我的场景上面有一些不一致之处。 如果我使用" I"作为UPDATEFLAG,我只能得到正确的行为吗?
感谢和问候,
安德烈
你好,安德烈,
最近,当我正在向派对和工厂订购时,我遇到了这个问题。 至于存在拒绝原因的销售订单,我无法更新工厂,因此我先删除了它们然后插入。PFB代码。
{**-标头级别数据-
* lv_order_header_inx-updateflag = c_update。} {
订单项数据-wa_order_item_in-itm_number = wa_vbap-posnr。 wa_order_item_in-plant = wa_vbap-werks。 wa_order_item_in-reason_rej = wa_vbap-abgru。} {*-添加第二个订单项 wa_order_item_in-plant = pa_werks。 新工厂 wa_order_item_in-material = wa_vbap-matnr。 wa_order_item_in-target_qty = c_targetqt。 wa_order_item_in-target_qu = c_unit。 wa_order_item_in-reason_rej = wa_vbap-abgru。} {
要更新的订单项数据-wa_order_item_inx-itm_number = wa_vbap-posnr。 wa_order_item_inx-updateflag = c_delete。 wa_order_item_inx-material = c_x。 wa_order_item_inx-plant = c_x。 wa_order_item_inx-reason_rej = c_x。} {wa_order_item_inx-updateflag = c_insert。 wa_order_item_inx-material = c_x。 wa_order_item_inx-plant = c_x。 wa_order_item_inx-target_qty = c_x。} {将c_p wa_vbap-werks连接起来 进入gv_oldgarage。"旧船参加聚会 wa_partnerchanges-updateflag = c_update。 如果wa_tempschdeule是初始的。 wa_tempschdeule = c_scheduleline。 wa_schedule_lines-sched_line = wa_tempschdeule。 其他。 wa_tempschdeule = wa_tempschdeule + 1。 wa_schedule_lines-sched_line = wa_tempschdeule。 万一。 {在vbeln结尾。 调用函数" BAPI_SALESORDER_CHANGE" 出口 salesdocument = wa_final-vbeln order_header_inx = lv_order_header_inx 桌子 返回= it_return order_item_in = it_order_item_in order_item_inx = it_order_item_inx partnerchanges = lt_partnerchanges schedule_lines = lt_schedule_lines schedule_linesx = lt_schedule_linesx。}
致谢
Mohinder
编辑:Mohinder Singh Chauhan于2009年12月29日上午5:46
嗨,大家好,
我仍然需要您的帮助。
感谢和问候,
安德烈
亲爱的安德烈,
您的代码应具有以下结构:
将它放在IT_ZVCONTRACT_SUSP_SAVE放入WA_ZVCONTRACT_SUSP_SAVE中。
< p>清除:ORDER_HEADER_IN,ORDER_HEADER_INX。刷新:ORDER_ITEM_IN [],ORDER_ITEM_INX。
**将值分配给更新字段
SALESDOCUMENT = WA_ZVCONTRACT_SUSP_SAVE- VBELN。
ORDER_HEADER_IN-SALES_ORG = WA_ZVCONTRACT_SUSP_SAVE-VKORG。
ORDER_HEADER_IN-PURCH_DATE ='00000000'。
ORDER_HEADER_INX-SALES_ORG ='X'。
ORDER_HEADER_INX-PURCH_DATE ='X'。
ORDER_HEADER_INX-UPDATEFLAG ='U'。
WA_ORDER_ITEM_IN-ITM_NUMBER = WA_ZVCONTRACT_SUSP_SAVE-POSNR。
WA_INDER_ITE -REASON_REJ =``。
将WA_ORDER_ITEM_IN追加到ORDER_ITEM_IN。
WA_ORDER_ITEM_INX-ITM_NUMBER = WA_ZVCONTRACT_SUSP_SAVE-POSNR。
WA_ORDER_ITEM_INX-UPDATEFLAG =' p>
WA_ORDER_ITEM_INX-REASON_REJ ='X'。
APPEND WA_ORDER_ITEM_INX TO O RDER_ITEM_INX。
刷新返回[]。
*更新原因代码的合同
通话功能'BAPI_SALESORDER_CHANGE'
导出
SALESDOCUMENT = SALESDOCUMENT
ORDER_HEADER_IN = ORDER_HEADER_IN
ORDER_HEADER_INX = ORDER_HEADER_INX
桌子
返回=返回
< p> ORDER_ITEM_IN = ORDER_ITEM_IN
ORDER_ITEM_INX = ORDER_ITEM_INX。
追加返回行到IT_LOGS。
调用函数'BAPI_TRANSACTION_COMMIT'
导出
WAIT ='X'。
ENDLOOP。
希望这对您有所帮助。
关于
< p> Nikhil安德烈
如果已解决。 能否请您说明原因和哪些出口存在冲突,以便将来面对此问题的其他人都可以从中受益。
嗨莫林德,
感谢您的建议。 除此以外,我只需要删除拒绝值的原因,就不需要更改任何字段。
你好,尼克希尔,
我是否需要在ORDER_HEADER_IN和ORDER_HEADER_INX结构上传递某些内容,而不是ORDER_HEADER_INX-UPDATEFLAG ='U',即使我不需要更改销售订单抬头中的任何值?
感谢和问候,
Andre
原因是与我们的某些用户出口发生冲突。 感谢您的时间和精力来帮助我。
一周热门 更多>