如何创建WORD模板(将SAP OLE链接添加到文档)?

2020-08-25 13:13发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)大家好! 经过非常深入的搜索...

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

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


大家好!


经过非常深入的搜索,我到达了墙,无法再进一步移动:(

我知道有关如何初始化DOI的编码过程。 然后,如何为模板中的链接添加映射,如何在RAW数据中加载模板并使用更改后的值打开文档。 但是..

问题:如何准备这样的WORD文档模板? 文档非常复杂,我已经有了局部语言,但是没有变量(SAP OLE链接,SAP Demo模板的MS WORD附带的屏幕)。 因此,最好的选择是在特定位置输入局部语言,然后上传模板并将其另存为ITAB到SAP DB表中的RAW。

SAP演示模板此处

如果有人要寻找有关如何使用RAW模板的过程,请在其中更改变量并在此处打开doc(缩短版本):

 FORM doi_initialize
    使用p_cust_cont_name
    将po_control类型参考更改为i_oi_container_control
             po_document类型参考i_oi_document_proxy
             po_link_server类型参考i_oi_link_server
            po_gui_cust_container类型参考cl_gui_custom_container。

 数据:l_retcode类型soi_ret_string。

     创建对象po_gui_cust_container
       出口
         container_name = p_cust_cont_name。

     调用方法c_oi_container_control_creator => get_container_control
       输入
         控制= po_control
         retcode = l_retcode。

     调用方法po_control-> init_control
       出口
         r3_application_name ='文件导出'(010)
         inplace_enabled ='X'
         父母= po_gui_cust_container
       输入
         retcode = l_retcode。

   调用方法po_control-> get_document_proxy
     出口
       document_type = soi_doctype_word_document"'Word.Document'
       document_format = soi_docformat_compound"'OLE'
     输入
       document_proxy = po_document
       retcode = l_retcode。

   调用方法po_control-> get_link_server
     输入
       link_server = po_link_server
       retcode = l_retcode。
 
  调用方法po_link_server-> start_link_server [...]
 ENDFORM。  " DOI_INITIALIZE


 FORM export_values2word
    使用p_blart
           po_link_server类型参考i_oi_link_server
           ps_flds_value类型zfm_res_add_data_mswordole_trg。

   数据:l_retcode类型soi_ret_string。
 ************** WORD中的变量1

   呼叫方法po_link_server-> add_string_item
   出口
     item_name ='Z_var1'
     item_value = lv_char"一些char值
   输入
     retcode = l_retcode

 ENDFORM。  " WRITE_TEXT_TO_DB

 表格doi_open_document
    使用ps_all_data_hdr TYPE zfm_res_add_data_msword2_src
           po_document类型参考i_oi_document_proxy。

   数据:l_docsize TYPE i。
   数据:ls_raw TYPE raw255。
   数据:raw255的lt_raw类型标准表。
   数据:ls_doc_tmpl类型为zfm_add_doc_tmpl。
   数据:zfm_add_doc_tmpl的lt_doc_tmpl类型标准表。
   数据:l_template_versi(2)类型c。
   数据:l_retcode类型soi_ret_string。

 " [....]从数据库读取模板的RAW到lt_raw和l_docsize

   呼叫方法po_document-> open_document_from_table
     出口
       document_size = l_docsize
       document_table = lt_raw
       no_flush =''
       open_inplace ='X'
     输入
        retcode = l_retcode。
 ENDFORM。
 

(10.8 kB)
6条回答
Baoming ROSE
2020-08-25 13:35

很久以前,我还不确定。 但是我发现了一些代码。 基本上,您需要创建没有任何SAP OLE链接的模板,并在内部表中准备映射。 然后使用程序将其打开。 在调试器中,您需要指出位置并继续粘贴链接。 可能有更好的方法,但这就是我的处理方式。

粘贴链接的示例代码。

我关于此主题的所有注释(代码)均为此处:)

将GT_MAP_OLE循环到LS_MAP_OLE中。
  呼叫方法po_link_server-> COPY_LINK_ITEM_TO_CLIPBOARD
   出口
     ITEM_NAME = LS_MAP_OLE-VAR
   输入
     retcode = l_retcode。
   呼叫方法c_oi_errors => show_message
     出口
       类型='E'。
 呼叫方法PO_DOCUMENT-> PASTE_SPECIAL
   输入
     retcode = l_retcode。
   呼叫方法c_oi_errors => show_message
     出口
       类型='E'。
 ENDLOOP。

一周热门 更多>