如何阻止SAP CRM订单创建好之后,自动被置为传输状态这一行为

Posted sap-jerry

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何阻止SAP CRM订单创建好之后,自动被置为传输状态这一行为相关的知识,希望对你有一定的参考价值。

AG9 Service order创建好之后,要自动通过middleware传其他系统去,这个behavior我们现在记录下来了么?知道怎么disable不?

技术图片

Transaction的status profile上可以配这么一个东西:

技术图片

但是我们现在的ZSRV上没有配任何status profile…

line 325的function module会负责通过outbound queue往外发,

只有当line 321的IF里的三个条件同时满足才会进入:

技术图片
技术图片

条件1: IV_NO_BDOC_SEND = FALSE, AG9上这个参数用的默认参数false,满足

条件2: LV_SEND_BDOC = TRUE
读这个global的internal table,如果读不到,置为TRUE,AG9上读不到,所以为true,这个条件也满足了。

条件3: LV_SKIP_ASYNCRONOUS_FUNCTION = INITIAL
如果该order的状态置为POST PROCESSING, 则该变量值为true,但是AG9上我们的status是open,所以这个条件也满足

三个条件同时满足,所以通过middleware里往outbound queue发数据。

技术图片

如何避免这个行为?根据代码分析,破坏IF里三个条件任意一个即可。通过debug可知破坏第二个条件最容易,我正在看相关的配置。

条件2少截一张图:

条件2: LV_SEND_BDOC = TRUE
读这个global的internal table,如果读不到,置为TRUE,AG9上读不到,所以为true,这个条件也满足了。

技术图片

有两种solution disable这个行为:

(1) CRM_ORDER_SAVE call line 56行的CRM_ORDER_SAVE_OW时,IV_NO_BDOC_SEND没有指定value,所以传进来的是默认值ABAP_FALSE,
这里我们强制改成TRUE, 就会破坏要上传的那三个条件的第一个,导致不会进入上传的分支。

技术图片

(2) 如果只是想disable 某种特定transaction type的document,call 这个function module:
CRM_ORDER_SET_NO_BDOC_SEND_OW, 输入order的guid,会添加一行entry到GT_NO_BDOC_SEND里,
这样会破坏IF判断里中间那个条件,也能实现不上传的目的。

技术图片

这两种技术上都行。

要获取更多Jerry的原创文章,请关注公众号"汪子熙":
技术图片

以上是关于如何阻止SAP CRM订单创建好之后,自动被置为传输状态这一行为的主要内容,如果未能解决你的问题,请参考以下文章

如何让SAP采购订单无法收获

EBS获取code_combination_id(CCID)时段值自动被置为默认值的问题

SAP CRM WebClient UI和Fiori UI混搭并存

SAP Commerce(原Hybris)的订单处理框架和SAP CRM One Order框架

SAP S4CRM 1811 服务订单API介绍

SAP CRM的订单模型移植到S4HANA后,在订单保存功能上作出的改进