Sent: Tuesday, 7 April, 2015 7:41 PM
UI上点击complete的check box之后,UI只是简单地将instance设置了一个Completed 为true的标志位:
该标志位传到后台后,即iv_completed_requested = ls_task-completed = X:
这会trigger application通过function module CRM_ORDER_MAINTAIN修改task对应的status field:

新的status value为hard code的value FINI ( 即constant GC_STATUS_TRAN_COMPLETED )
通过function module CRM_STATUS_ACTIVITY_INFLUENCE, 框架会计算出针对当前如下三个输入,究竟应该往table CRM_JEST里写入哪些entry:
- target business transaction - FINI
- 当前的task guid
- task对应的user status profile:
这个FM里会根据传入的status profile和business transaction从table TJ31 里找出该transaction 挂的所有user status:
然后同理从TJ06中找到所有相关的system status:
注意:
如果有多个user status 映射到了同一个system status上,在做status的customizing 保存时不会出错,但是在点击task前的checkbox试图将task设置成complete时,在status handling的FM CRM_STATUS_CHANGE_FOR_ACTIVITY里会报错,错误信息来自subroutine stonr_ambiguous_check:
检测到针对同一business transaction 和status profile,存在duplicate user status之后抛出error message ( message class BS, message number 046 )
要获取更多Jerry的原创文章,请关注公众号"汪子熙":