如何使一般任务工作项仅显示在一个特定用户的收件箱中?

2020-09-19 05:46发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)因为所有的好事都是三分的(或者有...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


因为所有的好事都是三分的(或者有人告诉我!),这是第三个问题,与我正在尝试的简单工作流程有关,并且花了很多时间来实现。 先前的问题是" 如何 以确定在SWDD中测试新工作流后无法工作的实际错误是什么?"和" 如何将工作流的默​​认优先级切换为" 1",然后获得明示通知?"

我设置的要点在此处可用,并且几乎可以 我想要它做什么。 但是,一个问题基本上是一个热门话题,因为每个创建的工作项不仅在预期收件人的收件箱中可见,而且在每个人的收件箱中可见:

因此,用户1和用户2甚至我什至都没有触发工作项的用户3一样看到了这四个对象,他们也可以看到它们并可能对其进行处理。

由于此微型工作流程旨在使新开发人员实际查看我们的开发指南,然后使用"确认任务"按钮"退出",因此它需要准确地转到预期的开发人员手中 没有多大意义。

如工作流书中所述,我将任务定义为常规任务:

通读本书中的"一般任务",我明白了为什么这会导致工作项出现在每个人的收件箱中,但是我认为任务定义中的表达式应该解决这一问题:

ZCL_USER的代码是从工作流手册中提供的信息中复制的。 为了不使这篇文章太长,我将其放入附件的txt文件中:

utility-wf-user-determination-zcl-user.txt

在我的包装程序中,我通过FM SAP_WAPI_START_WORKFLOW触发了工作项的创建,并且已经尝试使用用户ID或带有" US"前缀的用户ID,但结果是相同的:

清除lt_container_simple。

     ls_container_simple-element ='ACTUAL_AGENT'。
     连接"我们"
                 i_agent
            INTO ls_container_simple-value。
 * ls_container_simple-value = i_agent。
     附加ls_container_simple到lt_container_simple。

     ls_container_simple-element ='USER'。
     连接"我们"
                 i_agent
            INTO ls_container_simple-value。
 * ls_container_simple-value = i_agent。
     附加ls_container_simple到lt_container_simple。

     通话功能'SAP_WAPI_START_WORKFLOW'
       出口
         任务= p_task
         语言= sy-langu
         do_commit = abap_true
         用户= sy-uname
       输入
         return_code = lv_returncode_wfl
         workitem_id = lv_workitem_id
         new_status = lv_new_status
       桌子
         input_container = lt_container_simple
         message_lines = lt_messages_wfl。

 

从我的包装程序告诉我的结果来看,结果看起来还不错(我将工作项的prio切换为1,还触发了一条明文消息):

工作项的容器信息看起来还不错,因为每个工作项都在相关字段中显示了预期的用户ID:

我通过相同的表达式将两个容器元素都填充到了绑定中(我的一个尝试是实际上为USER添加一行,即使在书中没有提到这行-似乎没有负面影响 但这也不能解决我的问题)

那么,我还想念什么?

非常感谢和欢呼

Baerbel

utility-wf-user-determination.jpg (71.6 kB)
2条回答
四川大学会员
2020-09-19 05:58

对不起,我不明白(我将部分责任归咎于当前的热浪!)。

当我通过FM触发事物并仅通过提供的代码填充lt_container_simple时,如何使其最终成为对象?

在SWDD中,容器元素仍定义为对象类型CL ABAP CLASS ZCL_USER,因此目前我不知道该在哪里做什么(对此我感到非常抱歉....)

但是....

我现在还注意到,我还可以将另一个可选表输入到FM中,该表的名称通常为AGENTS,其结构为SWRAGENT,字段为OTYPE和OBJID。 因此,我只是尝试了一下,并为此填充了内容:

数据:ls_agents TYPE swragent,
       lt_agents swragent的类型表。

  ls_agents-otype ='US'。
ls_agents-objid = i_agent。
将ls_agents附加到lt_agents。

然后,当我运行程序时,我只会看到我自己的工作项目,而我的同事在我们各自的工作流收件箱中看到了他的工作项目。 我没有触发该项目的同事没有在他的收件箱中看到该项目。 这是我最终想要的,也是最终的最终。(而且我很可能早就应该知道该如何通过FM了!):-)

感谢您一直跟踪我-真的很感谢您的耐心和时间!

一周热门 更多>