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

2020-08-30 00:41发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)嗨, 您能否建议如何将exce...

         点击此处--->   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条回答
四川大学会员
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!

一周热门 更多>