Sent: 2017年1月19日 13:28

Transaction的status profile上可以配这么一个东西: 但是我们现在的ZSRV上没有配任何status profile… 这个to be distributed即使设成Forbidden一样会发, 下图是我测试的status profile,配在AG9的ZSRV上。

代码里写的是如果status是for postprocessing I1143就不发,我没有在代码里看到检测 to be distributed 的地方。

如果你们可以成功重现不让One order通过middleware 往outbound queue发数据,麻烦告诉我详细操作步骤。
iv_no_bdoc_send
lv_send_bdoc

现在差异就是:

  • 配了status profile,订单能编辑
  • Status profile为空,则不能编辑
    Status profile为空,点Edit后Error message 是在这个IF里抛得。只要order的状态带有transferring,则报error message

配了status profile时,order save后状态是I 1002, E 0001, 不含transferring状态,所以不报错。

没配PROFILE, 则save后状态如下,包含I1054 transferring,所以报错。

所以问题根源就是搞清楚报错order时,这个status迁移是怎么实现的。

Service order transaction type若不维护任何status profile,则save之后无法编辑,点edit 时报error message

  1. 如果维护了status profile,能够编辑

One order在edit button点击时会check order是否含有transferring状态,如果有,报error message

n 两种情况下,save order时系统都会试图去给order设置transferring状态,但是只有第一种情况会设置成功。
第二种情况,因为status profile里forbidden flag(后台value:3)的存在,

检测程序里检测到这个3,就会拒绝修改,所以order状态不会变成transferring,所以UI能edit

有两种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判断里中间那个条件,也能实现不上传的目的。

条件2少截一张图:

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

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可知破坏第二个条件最容易。
要获取更多Jerry的原创文章,请关注公众号"汪子熙":

AG9 Service order创建好之后,要自动通过middleware传其他系统去 disable相关推荐

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

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

  2. S/4HANA服务订单Service Order的批量创建

    我工作中接到一个任务,需要在性能测试系统里创建一亿条服务订单service order来做性能测试. 这么大规模的数据量,当然只能用代码来创建了. 本文提到的所有ABAP代码,我均已上传到我的Gith ...

  3. 批量修改Service Order description的report

    Created by Jerry Wang on Apr 05, 2014 执行report,report会自动找出系统里指定数量的状态处于open的service order,将其descripti ...

  4. 在打包的时候,创建应用程序池,并自动将程序assign到新创建的池中(MSI制作)

    在打包的时候,创建应用程序池,并自动将程序assign到新创建的池中(MSI制作) 我在在部署ASP.net应用程序的时候,在IIS中都是创建在默认的应用池当中.我们能否在部署的时候创建自己的应用池呢 ...

  5. 《Activiti 深入BPM工作流》--- 什么是activiti的Service, 如何创建?

      <activiti 深入BPM工作流>--- 什么是activiti的Service, 如何创建? 一. 问题       上一篇博文中我们介绍了工作流引擎是如何创建的? (参考:如何 ...

  6. 研究SAP service order status存储字段

    Created by Jerry Wang, last modified on Apr 08, 2014 需求:找出IC上根据open为搜索条件是如何找到对应的service order: 使用ST0 ...

  7. 批量设置Service Order成transferred状态

    Created by Jerry Wang on Apr 05, 2014 以test mode执行report: 会打印出所有当前状态为Transferring的Service order ID: ...

  8. User status for Service Order

    Created by Jerry Wang, last modified on Oct 13, 2014 在IC inbox里搜索open状态的Service Order: 传到后台的status I ...

  9. SAP CRM Service Order search Tool

    Created by Jerry Wang, last modified on Mar 21, 2014 这个工具能够根据UI 上的search条件( Main Category和Created on ...

最新文章

  1. Overview-ISA-2004-SP3
  2. java 命令直接执行(运行)jar 包的几种方法【笔记自用】
  3. [云炬创业管理笔记]第一章讨论3
  4. Kubernetes + .NET Core 的落地实践
  5. 谈到云原生, 绕不开容器化
  6. Hadoop集群HDFS各节点磁盘使用率不平衡,使用balancer做数据平衡
  7. 感觉自己应该重新读一次Javascript
  8. CAN协议 J1939
  9. CCSK认证,提升云安全专业技能,助力职业生涯发展
  10. Linux 进程之如何查看进程详情?
  11. cass打开dwg文件无效_CAD文件打开时图形文件显示无效怎么办
  12. mysql 查询多个号段_SQL查询连续号码段的巧妙解法
  13. 上周热点回顾(4.9-4.15)
  14. 在你的网页集成QQ推广即时聊天
  15. warning C4183: ‘Cricle‘: member function definition looks like a ctor, but name does not match enclo
  16. C#导出pdf文件《一》
  17. 读书笔记-全面薪酬体系设计“6+1”
  18. 团队开发之:代码规范说明
  19. 缺陷管理 如何发现更多的缺陷
  20. 指数基金定投指南 思维导图

热门文章

  1. HTML5 高级系列:web Storage 学前端开发要先看这个
  2. JMeter中3种参数值的传递
  3. LoaderManager使用详解(二)---了解LoaderManager
  4. Linux kernel 本地拒绝服务漏洞
  5. C#线程调用带参数的方法 ~
  6. c++基础(part1)--cpp简介
  7. R语言观察日志(part6)--初识rMarkdown
  8. Python 函数的可变参数、切片、迭代和列表生成式
  9. 新书发布:时隔一年,我的第二本书终于来了
  10. 6万人砍不下来一部拼多多手机,背后原来是这个原因。