BAPI_SALESORDER_CHANGE删除拒绝原因

2020-08-15 20:52发布

         点击此处--->   EasySAP.com群内免费提供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,我只能得到正确的行为吗?

感谢和问候,

安德烈

         点击此处--->   EasySAP.com群内免费提供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,我只能得到正确的行为吗?

感谢和问候,

安德烈

付费偷看设置
发送
7条回答
蓋茨
1楼-- · 2020-08-15 21:48

你好,安德烈,

最近,当我正在向派对和工厂订购时,我遇到了这个问题。 至于存在拒绝原因的销售订单,我无法更新工厂,因此我先删除了它们然后插入。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

三十六小时_GS
2楼-- · 2020-08-15 21:32

嗨,大家好,

我仍然需要您的帮助。

感谢和问候,

安德烈

绿领巾童鞋
3楼-- · 2020-08-15 21:29

亲爱的安德烈,

您的代码应具有以下结构:

将它放在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

Doze时光
4楼-- · 2020-08-15 21:28

安德烈

如果已解决。 能否请您说明原因和哪些出口存在冲突,以便将来面对此问题的其他人都可以从中受益。

SAP德到
5楼-- · 2020-08-15 21:49

嗨莫林德,

感谢您的建议。 除此以外,我只需要删除拒绝值的原因,就不需要更改任何字段。

你好,尼克希尔,

我是否需要在ORDER_HEADER_IN和ORDER_HEADER_INX结构上传递某些内容,而不是ORDER_HEADER_INX-UPDATEFLAG ='U',即使我不需要更改销售订单抬头中的任何值?

感谢和问候,

Andre

jovirus
6楼-- · 2020-08-15 21:32

原因是与我们的某些用户出口发生冲突。 感谢您的时间和精力来帮助我。

一周热门 更多>