SAP ABAP在线预览文档对象的开发实现

简介: 应用场景:有些定制化开发(报表/功能增强等)完成之后,客户需要将其操作手册或者相关文档放在某个报表的初始画面,供实际操作者在线查阅,当然这个功能也同样类似于模板的下载,这里就以在线预览(直接打开)为例进行说明。

主要实现代码:

FM:Z_USE_OLE的介绍。
image.png
image.png
image.png

"---------------------------------------------------------------------- ""本地接口: " IMPORTING
" VALUE(I_OBJECT_ID) " VALUE(I_TITLE) OPTIONAL
" TABLES " T_HEADER OPTIONAL
*" T_ITEM OPTIONAL

  • 目前只支持两种模式 word 和 excle如果是PDF的话PC端要安装 adobe reader
    *"----------------------------------------------------------------------

    IF I_OBJECT_ID IS INITIAL.
    RAISE OBJECT_ID_ERROR.
    ENDIF.
    PERFORM INIT_FACTORY USING I_TITLE.
    PERFORM OPEN_DOC TABLES T_HEADER

                          T_ITEM
                  USING  I_OBJECT_ID.
    

ENDFUNCTION.

&---------------------------------------------------------------------
& Form INIT_FACTORY &---------------------------------------------------------------------*
FORM INIT_FACTORY USING P_TITLE.
IF FACTORY IS INITIAL.
CALL METHOD C_OI_FACTORY_CREATOR=>GET_DOCUMENT_FACTORY
IMPORTING
FACTORY = FACTORY
RETCODE = RETCODE.
IF RETCODE NE C_OI_ERRORS=>RET_OK.
EXIT.
ENDIF.

CALL METHOD FACTORY->START_FACTORY
EXPORTING
  R3_APPLICATION_NAME = P_TITLE
IMPORTING
  RETCODE             = RETCODE.

CALL METHOD C_OI_ERRORS=>SHOW_MESSAGE
EXPORTING
  TYPE = 'E'.

CALL METHOD FACTORY->GET_LINK_SERVER
IMPORTING
  LINK_SERVER = LINK_SERVER
  RETCODE     = RETCODE.

CALL METHOD C_OI_ERRORS=>SHOW_MESSAGE
EXPORTING
  TYPE = 'E'.

CALL METHOD LINK_SERVER->START_LINK_SERVER
EXPORTING
  LINK_SERVER_MODE = 3
IMPORTING
  RETCODE          = RETCODE.

CALL METHOD C_OI_ERRORS=>SHOW_MESSAGE
EXPORTING
  TYPE = 'E'.

ENDIF. "factory IS INITIAL.
ENDFORM. " INIT_FACTORY
&---------------------------------------------------------------------
& Form OPEN_DOC &---------------------------------------------------------------------*
FORM OPEN_DOC TABLES HEADER
ITEM
USING P_OBJECT_ID.

DATA : a(8) TYPE C.

DEFINE M_LINK_TAB.
CALL METHOD link_server->add_table_item2
EXPORTING
item_name = &1
IMPORTING
retcode = retcode
CHANGING
data_table = &2.
CALL METHOD c_oi_errors=>show_message
EXPORTING
TYPE = 'E'.
END-OF-DEFINITION.

IF NOT LINK_SERVER IS INITIAL.
M_LINK_TAB 'HEADER' HEADER[].
M_LINK_TAB 'ITEM' ITEM[].
ENDIF.

  • SAP ### ## EXCEL ## OPEN
    CALL FUNCTION 'SAP_OI_LOAD_MIME_DATA'
    EXPORTING
    OBJECT_ID = P_OBJECT_ID
    IMPORTING
    DATA_SIZE = DOC_SIZE
    DOCUMENT_FORMAT = DOC_FORMAT
    DOCUMENT_TYPE = DOC_TYPE
    TABLES
    DATA_TABLE = DOC_TABLE
    EXCEPTIONS
    OBJECT_NOT_FOUND = 1
    INTERNAL_ERROR = 2
    OTHERS = 3.

SELECT SINGLE VALUE INTO @DAta(lv_TYPE) FROM WWWPARAMS WHERE OBJID = @P_OBJECT_ID AND NAME = 'mimetype'.

CASE lv_TYPE.
WHEN 'PDF'.
DOC_TYPE = 'AcroExch.acrobatsecuritysettings.1'.
WHEN 'WORD'.
DOC_TYPE = 'Word.Document.12'.
WHEN OTHERS.
ENDCASE.

IF SY-SUBRC NE 0.
MESSAGE ID SY-MSGID TYPE 'E' NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

IF DOC_SIZE NE 0.
CALL METHOD FACTORY->GET_DOCUMENT_PROXY
EXPORTING
DOCUMENT_TYPE = DOC_TYPE
IMPORTING
DOCUMENT_PROXY = DOCUMENT
RETCODE = RETCODE.
CALL METHOD C_OI_ERRORS=>SHOW_MESSAGE
EXPORTING
TYPE = 'E'.

  • Document# Protected Mode# Open## #### ###.

    CALL METHOD DOCUMENT->OPEN_DOCUMENT_FROM_TABLE
    EXPORTING

    DOCUMENT_TABLE = DOC_TABLE[]
    DOCUMENT_SIZE  = DOC_SIZE
    

    IMPORTING

    RETCODE        = RETCODE.
    

    CALL METHOD C_OI_ERRORS=>SHOW_MESSAGE
    EXPORTING

    TYPE = 'E'.
    

    ENDIF.

ENDFORM. " OPEN_DOC
&---------------------------------------------------------------------
& Form MACRO &---------------------------------------------------------------------
FORM MACRO .
CALL METHOD DOCUMENT->EXECUTE_MACRO
EXPORTING
MACRO_STRING = 'R3_MACRO1'
IMPORTING
RETCODE = RETCODE.
CALL METHOD C_OI_ERRORS=>SHOW_MESSAGE
EXPORTING
TYPE = 'E'.
ENDFORM. " MACRO
&--------------------------------------------------------------------- & Form CLOSE_DOC
&---------------------------------------------------------------------
FORM CLOSE_DOC .

IF NOT DOCUMENT IS INITIAL.

CALL FUNCTION 'WS_FILE_DELETE'
EXPORTING
  FILE = 'C:\PIC.JPG'.

CALL METHOD DOCUMENT->IS_DESTROYED
IMPORTING
  RET_VALUE = IS_CLOSED.

IF IS_CLOSED IS INITIAL.
  CALL METHOD DOCUMENT->CLOSE_DOCUMENT
  EXPORTING
    DO_SAVE = 'X'
  IMPORTING
    RETCODE = RETCODE.
  CALL METHOD C_OI_ERRORS=>SHOW_MESSAGE
  EXPORTING
    TYPE = 'E'.
ENDIF.

CALL METHOD DOCUMENT->RELEASE_DOCUMENT
IMPORTING
  RETCODE = RETCODE.
CALL METHOD C_OI_ERRORS=>SHOW_MESSAGE
EXPORTING
  TYPE = 'E'.

FREE DOCUMENT.

ENDIF.

ENDFORM. " CLOSE_DOC
&---------------------------------------------------------------------
& Form CLOSE_FACTORY &---------------------------------------------------------------------*
FORM CLOSE_FACTORY .
IF NOT LINK_SERVER IS INITIAL.
CALL METHOD LINK_SERVER->STOP_LINK_SERVER
IMPORTING
RETCODE = RETCODE.
FREE LINK_SERVER.
ENDIF.
IF NOT FACTORY IS INITIAL.
CALL METHOD FACTORY->STOP_FACTORY
IMPORTING
RETCODE = RETCODE.
FREE FACTORY.
ENDIF.
ENDFORM. " CLOSE_FACTORY

目录
相关文章
|
SQL 设计模式 前端开发
【置顶】SAP ABAP开发实战——从入门到精通系列目录
本文章为SAP ABAP开发实战——从入门到精通系列的目录以及关于该教程的后续写作计划表
3593 0
【置顶】SAP ABAP开发实战——从入门到精通系列目录
|
安全 数据安全/隐私保护
SAP集成HTTP接口(x-www-form-urlencoded格式)
实现这一过程时,务必遵循最佳实践,包括确保代码的稳定性、考虑到异常处理和系统资源的优化使用。这样做不仅能确保数据的安全和有效性,还能提高系统集成的效率和可靠性。
751 4
|
SQL
SAP ABAP——OPEN SQL(五)【GROUPING & SORT】
本文主要介绍SAP ABAP中OPEN SQL的GROUPING和SORT语句
1519 0
SAP ABAP——OPEN SQL(五)【GROUPING & SORT】
|
存储 数据库 C语言
SAP ABAP——数据类型(一)【数据类型概要及分类】
本文主要介绍一下SAP ABAP中关于数据类型的概要以及分类,其中数据类型包括预定义的数据类型,数据字典数据类型,用户自定义数据类型,下面将依次对其进行讲解
3236 0
SAP ABAP——数据类型(一)【数据类型概要及分类】
SAP HUM 使用HU02将几个HU打包到一个外层新的HU号码里
SAP HUM 使用HU02将几个HU打包到一个外层新的HU号码里
SAP HUM 使用HU02将几个HU打包到一个外层新的HU号码里
|
机器学习/深度学习 存储 搜索推荐
PAI平台搭建企业级个性化推荐系统
PAI是阿里云推出的人工智能平台,提供一站式的机器学习解决方案。本最佳实践利用PAI平台结合阿里云RDS for MySQL版、对象存储OSS和云数据库Redis版等产品构建一个高效的离线训练+在线推理的推荐业务系统。
1119 0
PAI平台搭建企业级个性化推荐系统
|
索引
SAP ABAP——内表(八)【修改内表数据】
本文主要介绍一下SAP ABAP中内表的增删查改语句中的修改内表数据的相关语句,包括利用关键字修改数据,利用索引修改数据,利用WHERE语句修改数据
1437 3
SAP ABAP——内表(八)【修改内表数据】

热门文章

最新文章