点击此处---> 群内免费提供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)
好的,我看到了问题。 agent字段是平面类型,它需要OM对象ID,其结构为 ,因此用户和用户ID为" US"。 在绑定中,您正在传递用户对象。 理想情况下,SAP应该发出警告或错误,但似乎完全忽略了它,在这种情况下,它正在(正确地)将其发送给所有可能的代理。
从技术上讲,您根本不需要用户类,您可以仅以US作为接收者来启动WF。 我使用一个对象是因为几乎总是需要更多的用户功能,即使仅仅是写" Dear "。
建议向返回以US开头的USERNAME的用户类中添加属性wf_agent_id或功能方法get_wf_agent。 然后将其放入代理字段。
Actual_agent部分仅在书中,因为这是一种非常常见的情况。 我还想演示实例化绑定中的对象有多么容易。 因此,任务返回" USABC",WF接收到一个对象实例。 在典型的WF中,随后的步骤可能会发送一封电子邮件,指出"您的已被&ACTUAL_AGENT.GET_FULL_NAME()&"批准
希望如此。
对不起,我不明白(我将部分责任归咎于当前的热浪!)。
当我通过FM触发事物并仅通过提供的代码填充lt_container_simple时,如何使其最终成为对象?
在SWDD中,容器元素仍定义为对象类型CL ABAP CLASS ZCL_USER,因此目前我不知道该在哪里做什么(对此我感到非常抱歉....)
但是....
我现在还注意到,我还可以将另一个可选表输入到FM中,该表的名称通常为AGENTS,其结构为SWRAGENT,字段为OTYPE和OBJID。 因此,我只是尝试了一下,并为此填充了内容:
然后,当我运行程序时,我只会看到我自己的工作项目,而我的同事在我们各自的工作流收件箱中看到了他的工作项目。 我没有触发该项目的同事没有在他的收件箱中看到该项目。 这是我最终想要的,也是最终的最终。(而且我很可能早就应该知道该如何通过FM了!):-)
感谢您一直跟踪我-真的很感谢您的耐心和时间!
一周热门 更多>