前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >One Order distribution logic issue - automatic BDOC creation and sent to Middleware outbound queue -

One Order distribution logic issue - automatic BDOC creation and sent to Middleware outbound queue -

作者头像
Jerry Wang
发布2019-07-15 17:13:47
3170
发布2019-07-15 17:13:47
举报

AG9 Service order创建好之后,要自动通过middleware传其他系统去。 line 325的function module会负责通过outbound queue往外发, 只有当line 321的IF里的三个条件同时满足才会进入CRM_UPLOAD_BUS_TRANS_MSG: 条件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判断里中间那个条件,也能实现不上传的目的。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019年07月11日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
腾讯云代码分析
腾讯云代码分析(内部代号CodeDog)是集众多代码分析工具的云原生、分布式、高性能的代码综合分析跟踪管理平台,其主要功能是持续跟踪分析代码,观测项目代码质量,支撑团队传承代码文化。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档