如何在工作流的UserDecision步骤中构建和附加Excel

2020-08-30 00:41发布

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

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


嗨,

您能否建议如何将excel表附加到"用户决策"步骤? 我正在从"自定义"程序触发工作流。 我知道有两种方法可以做到这一点,即

1。 通过使用FM(SAP_WAPI_CREATE_EVENT)在Program中触发自定义事件,并在工作流程定义中捕获该事件。

2。 通过使用FM(SAP_WAPI_START_WORKFLOW或SAP_WAPI_ATTACHMENT_ADD)直接触发工作流。 认为我可以将文件直接附加到这些FM中。

您能否解释一下在两种情况下如何附加excel?

等待响应。

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

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


嗨,

您能否建议如何将excel表附加到"用户决策"步骤? 我正在从"自定义"程序触发工作流。 我知道有两种方法可以做到这一点,即

1。 通过使用FM(SAP_WAPI_CREATE_EVENT)在Program中触发自定义事件,并在工作流程定义中捕获该事件。

2。 通过使用FM(SAP_WAPI_START_WORKFLOW或SAP_WAPI_ATTACHMENT_ADD)直接触发工作流。 认为我可以将文件直接附加到这些FM中。

您能否解释一下在两种情况下如何附加excel?

等待响应。

付费偷看设置
发送
6条回答
四川大学会员
1楼 · 2020-08-30 01:12.采纳回答

要将文件附加到以编程方式启动的工作流中,我认为最简单的方法是先创建附件(创建业务对象类型SOFM的实例,在论坛中搜索" swc_create_object"),然后在启动文件时将其作为参数传递 工作流程。 在工作流定义中,将输入附件绑定到用户决策步骤的元素&_ATTACH_OBJECTS&(类型为"追加到表"的绑定)。

在这种情况下无需使用SAP_WAPI_ATTACHMENT_ADD。

以下是对我有用的代码:

参数文件类型字符串小写默认'C:\ Users \ user.name \ Downloads \ sap \ test.xlsx'。
 选择开始。
   数据l_xstring TYPE xstring。
   执行read_bin_file使用文件更改l_xstring。

   包括。
   数据:对象类型swc_object,
         TYPE I,
         solix_tab TYPE solix_tab,
         objhead TYPE soli_tab。
   swc_container lt_container。  "声明容器

   solix_tab = cl_bcs_convert => xstring_to_solix(l_xstring)。
   大小= xstrlen(l_xstring)。
   将'&SO_FILENAME = myfile.xlsx'附加到objhead。

   swc_create_object对象的" SOFM"空间。

   swc_create_container lt_container。
   swc_set_element lt_container'NO_DIALOG''X'。
   swc_set_element lt_container'DOCUMENTTITLE''文档标题'。
   swc_set_element lt_container'DocumentSize'大小。
   swc_set_table lt_container'Content_Hex'solix_tab。
   swc_set_table lt_container'DocumentHeader'objhead。
   swc_set_element lt_container'DOCUMENTTYPE''EXT'。
   swc_set_element lt_container'享受''X'。
   swc_call_method对象"创建" lt_container。

   数据object_key TYPE swo_typeid。
   swc_get_object_key对象object_key。

   swc_container lt_container2。
   swc_create_container lt_container2。
   swc_set_element lt_container2'SOFM'object_key。
   swc_container_to_persistent lt_container2。

   数据:return_code类型syst_subrc,
         workitem_id TYPE sww_wiid,
         swr_cont的input_container类型标准表,
         message_lines swr_messag的标准类型表,
         message_struct swr_mstruc的标准类型表。

   DATA(lv_object_instance)=值sibflporb(
       catid ='BO'
       instid = object_key
       typeid ='SOFM')。

   input_container = VALUE#((element ='MYSOFM'value = lv_object_instance))。

   通话功能'SAP_WAPI_START_WORKFLOW'
     出口
       任务='WS90100001'
     输入
       return_code = return_code
       workitem_id = workitem_id
     桌子
       input_container = input_container
       message_lines = message_lines
       message_struct = message_struct。

   提交工作。

 表格read_bin_file
       使用i_filename TYPE clike
       更改e_file_xstring TYPE xstring。
   DATA l_filename TYPE字符串。
   数据l_length类型i。
   x255的数据lt_x255类型表。

   l_filename = i_filename。
   通话功能'GUI_UPLOAD'
     出口
       文件名= l_文件名
       filetype ='BIN'
     输入
       文件长度= l_length
     桌子
       data_tab = lt_x255
     例外情况
       其他= 17。
   如果sy-subrc = 0。
     呼叫方法cl_swf_utl_convert_xstring => table_to_xstring
       出口
         i_table = lt_x255
         i_size = l_length
       接收
         r_stream = e_file_xstring
       例外情况
         其他= 3。
   万一。
 ENDFORM。

工作流定义:

1)工作流容器:添加业务对象SOFM类型的元素MYSOFM,将其声明为输入

2 )具有用户决策的单步工作流程,并将MYSOFM绑定到用户决策步骤的元素&_ATTACH_OBJECTS&(类型为"追加到表格"的绑定)。 为简单起见,将步骤代理设置为启动器,从任务TS00008267复制任务并将其设置为常规分类。

3)为简单起见,将工作流代理设置为常规 也可以进行分类

4)激活

再现:

1)启动程序,选择一个Excel文件,执行

2)SBWP ,您会看到一个带有附件的工作项,单击它->下载并使用Excel显示-> IT WORKS!

SAP浪
2楼-- · 2020-08-30 01:19

您所说的,我知道SAP_WAPI_ATTACHMENT_ADD启动了工作流。 ..

Haoba3210
3楼-- · 2020-08-30 01:25

感谢Sandra的快速响应。 我已经按照您的建议搜索了文本字符串,并遇到了可能是潜在解决方案的线程。 网址如下

https://archive.sap.com/kmuuid2/60ff6ad3-729b-2b10-6582-fedc82680a29/Creating%20Attachments%20to%20Work%20Items%20or%20to%20User%20Decisions% 20in%20Workflows.pdf

要重述我的问题->在我的自定义程序中,我在内部表中获取了数据,并希望将该表的内容作为工作流的用户决策步骤的excel附件发送。 为了实现这一要求,我觉得我首先需要使用下面的FM将内部表的内容更改为Xstring,然后更改Binary。
  • HR_KR_STRING_TO_XSTRING
  • SCMS_XTRING_TO_BINARY

按照上面指定的URL中所述的步骤将其转换为二进制格式。

您对这种方法有何看法?

4楼-- · 2020-08-30 01:12

...,但是它当然不会启动工作流程!

三十六小时_GS
5楼-- · 2020-08-30 01:18

非常感谢Sandra为您提供详细解决方案的迅速帮助。

非常感谢。

我实际上是在后台从一个内部表中创建了" Excel文件",后来按照您建议的方式创建了。 我成功取得了期望的结果。 谢谢....。

Baoming ROSE
6楼-- · 2020-08-30 01:21

我觉得将字节从一个变量传输到另一个变量并不被称为"方法"。 在论坛上已经讨论了1000多次,这只是技术上没什么用。

一周热门 更多>