CRM One order里user status和system status的mapping逻辑

109 阅读1分钟

新建一个Opportunity,将其status 设置成E0001( User status):

clipboard1

保存之后,在数据库里针对该Opportunity不仅仅存储了用户手动选择的user status E0001 - Open,还保存了如下的system status I1002:

clipboard2

这个user status到system status的mapping 逻辑:

  1. 找到transaction type OPSM 对应的status profile:
    clipboard3
  2. 找到该 user status对应的business transaction OPEN:

clipboard4

  1. 系统从step2里取得business transaction之后,根据VRGNG = transaction的逻辑到TJ06里去查找所有结果INACT不为X的entry,结果即为该user status对应的所有system status
    clipboard5

TJ06 表里的entry通过tcode BS32维护:
clipboard6

上述三步系统的执行逻辑可以通过debug如下的function module来学习:

clipboard7
clipboard8
clipboard9

P.S:如果在UI上继续修改status,之前的status E001仍然保留在DB里,只是以INACT = X来标示.

clipboard10

已知opp的guid,可以通过查询下面这个表的方式来获得该opportunity status的change history
clipboard11