如何创建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条回答
SAP小菜
2020-08-25 13:38

正如我所说,可以避免"闪光"。 我认为Link Server在您的情况下是可选的:如果要将值存储在剪贴板中,则可以使用cl_gui_frontend_services => clipboard_export(和文档代理界面的paste_clipboard)。 我对换行的问题感到非常惊讶,希望我有时间可以做一些测试。

对于其他解决方案:您只能将DOCX与CL_ABAP_ZIP一起使用。 DOCX只是具有特殊文件结构的ZIP。 其中之一包含文本,您可以用自己的文本替换占位符。 或者,您可以使用旧格式XML2003。

一周热门 更多>