Skip to Content
Author's profile photo Praveer Kumar Sen

Open Excel or Document File in SAP Interface

Hello,

Here is a sample program to open an Excel or Word Document in SAP Screen.

In the program two functionality has been defined,

1. Open a new MS Excel or Word Document File in SAP Screen or

2. Open any existing MS Excel or Word Document

Program: –

*&———————————————————————*

*& Report  ZPRV_OPEN_EXL_OR_DOC

*&

*&———————————————————————*

*&

*&

*&———————————————————————*

REPORT  ZPRV_DISPLAY_EXCEL.

TYPE-POOLS: SOI.

DATA: CL_CON    TYPE REF TO I_OI_CONTAINER_CONTROL,

      CL_DOC    TYPE REF TO I_OI_DOCUMENT_PROXY,

      CL_WRD    TYPE REF TO I_OI_WORD_PROCESSOR_DOCUMENT,

      CL_SHT    TYPE REF TO I_OI_SPREADSHEET,

      CL_ERR    TYPE REF TO I_OI_ERROR.

DATA: FILE      TYPE C LENGTH 256,

      RETCODE   TYPE SOI_RET_STRING,

      G_UCOMM   TYPE SY-UCOMM.

SELECTION-SCREEN:   BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.

SELECTION-SCREEN: BEGIN OF LINE.

PARAMETERS:   RB_DOC  RADIOBUTTON GROUP R1.

SELECTION-SCREEN: COMMENT 10(40) TXT_DOC FOR FIELD RB_DOC.

SELECTION-SCREEN: END OF LINE.

SELECTION-SCREEN: BEGIN OF LINE.

PARAMETERS:   RB_XLS  RADIOBUTTON GROUP R1.

SELECTION-SCREEN: COMMENT 10(40) TXT_XLS FOR FIELD RB_XLS.

SELECTION-SCREEN: END OF LINE.

SELECTION-SCREEN: BEGIN OF LINE.

SELECTION-SCREEN: COMMENT 3(40) TXT_FIL FOR FIELD P_FILE.

PARAMETERS:   P_FILE  TYPE FILE.

SELECTION-SCREEN: END OF LINE.

SELECTION-SCREEN:   END OF BLOCK B1.

INITIALIZATION.

  TXT_DOC = ‘MS Document File’.

  TXT_XLS = ‘MS Excel File’.

  TXT_FIL = ‘File Name’.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.

  PERFORM SUB_GET_FILE.

START-OF-SELECTION.

  CALL SCREEN 9000.

*&———————————————————————*

*&      Module  STATUS_9000  OUTPUT

*&———————————————————————*

*       text

*———————————————————————-*

MODULE STATUS_9000 OUTPUT.

  IF CL_CON IS NOT INITIAL.

    CALL METHOD CL_CON->DESTROY_CONTROL

*  EXPORTING

*    NO_FLUSH = ‘ ‘

      IMPORTING

        ERROR    = CL_ERR

        RETCODE  = RETCODE

        .

  ENDIF.

  CALL METHOD C_OI_CONTAINER_CONTROL_CREATOR=>GET_CONTAINER_CONTROL

    IMPORTING

      CONTROL = CL_CON.

  CALL METHOD CL_CON->INIT_CONTROL

    EXPORTING

      R3_APPLICATION_NAME      = ‘R/3 Basis’

      INPLACE_ENABLED          = ‘X’

      INPLACE_SCROLL_DOCUMENTS = ‘X’

      PARENT                   = CL_GUI_CUSTOM_CONTAINER=>DEFAULT_SCREEN

      REGISTER_ON_CLOSE_EVENT  = ‘X’

      REGISTER_ON_CUSTOM_EVENT = ‘X’

      NO_FLUSH                 = ‘X’.

  IF RB_XLS EQ ‘X’.

    CALL METHOD CL_CON->GET_DOCUMENT_PROXY

      EXPORTING

        DOCUMENT_TYPE  = ‘Excel.sheet’

        NO_FLUSH       = ‘X’

      IMPORTING

        DOCUMENT_PROXY = CL_DOC.

  ELSEIF RB_DOC EQ ‘X’.

    CALL METHOD CL_CON->GET_DOCUMENT_PROXY

      EXPORTING

        DOCUMENT_TYPE  = ‘Word.Document’

        NO_FLUSH       = ‘X’

      IMPORTING

        DOCUMENT_PROXY = CL_DOC.

  ENDIF.

  IF P_FILE EQ SPACE.

    CALL METHOD CL_DOC->CREATE_DOCUMENT

      EXPORTING

        OPEN_INPLACE   = ‘X’

        DOCUMENT_TITLE = ‘PRV’

        NO_FLUSH       = ‘X’.

  ELSE.

    CONCATENATE ‘FILE://’ P_FILE INTO FILE.

    CALL METHOD CL_DOC->OPEN_DOCUMENT

      EXPORTING

        DOCUMENT_TITLE = ‘INFO’

        DOCUMENT_URL   = FILE “‘FILE://C:\Users\iPrv\Desktop\Cover Letter.docx’

        NO_FLUSH       = ‘X’

        OPEN_INPLACE   = ‘X’

      IMPORTING

        ERROR          = CL_ERR.

  ENDIF.

  DATA: IS  TYPE I.

  IF RB_XLS EQ ‘X’.

    CALL METHOD CL_DOC->HAS_SPREADSHEET_INTERFACE

      EXPORTING

        NO_FLUSH     = ‘X’

      IMPORTING

        IS_AVAILABLE = IS.

    CALL METHOD CL_DOC->GET_SPREADSHEET_INTERFACE

      EXPORTING

        NO_FLUSH        = SPACE

      IMPORTING

        SHEET_INTERFACE = CL_SHT.

  ELSEIF RB_DOC EQ ‘X’.

    CALL METHOD CL_DOC->HAS_WORDPROCESSOR_INTERFACE

      EXPORTING

        NO_FLUSH     = ‘X’

      IMPORTING

        IS_AVAILABLE = IS.

    CALL METHOD CL_DOC->GET_WORDPROCESSOR_INTERFACE

      EXPORTING

        NO_FLUSH     = SPACE

      IMPORTING

        WP_INTERFACE = CL_WRD.

  ENDIF.

ENDMODULE.                 ” STATUS_9000  OUTPUT

*&———————————————————————*

*&      Form  SUB_GET_FILE

*&———————————————————————*

*       text

*———————————————————————-*

*  –>  p1        text

*  <–  p2        text

*———————————————————————-*

FORM SUB_GET_FILE .

  DATA: LIT_FILE  TYPE FILETABLE,

        LFL_FILE  LIKE LINE OF LIT_FILE,

        L_STR     TYPE C,

        L_RC      TYPE I.

  CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG

    EXPORTING

      WINDOW_TITLE            = ‘Open Doc or Xls File’

      FILE_FILTER             = ‘Excel File (*.XLSX)|*.XLSX|Document File (*.DOCX)|*.DOCX’

*     WITH_ENCODING           =

*     INITIAL_DIRECTORY       =

*     MULTISELECTION          =

    CHANGING

      FILE_TABLE              = LIT_FILE

      RC                      = L_RC

    EXCEPTIONS

      FILE_OPEN_DIALOG_FAILED = 1

      CNTL_ERROR              = 2

      ERROR_NO_GUI            = 3

      NOT_SUPPORTED_BY_GUI    = 4

      others                  = 5.

  IF SY-SUBRC EQ 0.

    LOOP AT LIT_FILE INTO LFL_FILE.

      P_FILE = LFL_FILE-FILENAME.

    ENDLOOP.

  ENDIF.

ENDFORM.                    ” SUB_GET_FILE

Thanks & regards

Praveer Kumar Sen

Assigned Tags

      Be the first to leave a comment
      You must be Logged on to comment or reply to a post.