DOCX-Workshop - Teil 2 (Upload der docx-Datei)

In diesem 2. Teil unserer Workshop-Reihe soll es nun darum gehen die entsprechende docx-Datei per Upload im Programm zu verarbeiten. Dieses Programm wird in den folgenden Teilen dann entsprechend erweitert.

Der Report besteht nur aus einem einzigen Parameter der entsprechend einen Datei-Auswahl-Dialog öffnet.

Hier wird dann entsprechend eine docx-Datei gewählt.

Nach dem Aufruf des Funktionsbaustein SCMS_BINARY_TO_XSTRING steht die Datei als XSTRING zur Verfügung.

Die Verarbeitung dieses XSTRING wird im nächsten Teil unserer Workshop-Reihe demonstriert.

************************************************************************
* Autor : exxsens GmbH
************************************************************************
* Beschreibung:
* Demo-Programm für den Upload einer docx-Datei
************************************************************************
* Änderungen:
* Nr.  Datum  Name | UserID | Ticket Nr.
*-----------------------------------------------------------------------
*
************************************************************************
REPORT  zms_demo_docx_01.

CONSTANTS c_linelen TYPE i VALUE 255.

DATA: lv_path            TYPE string,
      lv_template        TYPE xstring,
      ls_data(c_linelen) TYPE x,
      lt_data            LIKE TABLE OF ls_data,
      lv_filename        TYPE string,
      lv_length          TYPE i.      .

************************************************************************
*    S E L E K T I O N S B I L D
************************************************************************
PARAMETERS:     p_path  LIKE rlgrap-filename.


************************************************************************
*    A T   S E L E C T I O N - S C R E E N
************************************************************************
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path.
  CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
    EXPORTING
      mask      = ''
      static    = 'X'
    CHANGING
      file_name = p_path.

START-OF-SELECTION.


  lv_filename = p_path.

  CALL METHOD cl_gui_frontend_services=>gui_upload
    EXPORTING
      filename                = lv_filename
      filetype                = 'BIN'
    IMPORTING
      filelength              = lv_length
    CHANGING
      data_tab                = lt_data
    EXCEPTIONS
      file_open_error         = 1
      file_read_error         = 2
      no_batch                = 3
      gui_refuse_filetransfer = 4
      invalid_type            = 5
      no_authority            = 6
      unknown_error           = 7
      bad_data_format         = 8
      header_not_allowed      = 9
      separator_not_allowed   = 10
      header_too_long         = 11
      unknown_dp_error        = 12
      access_denied           = 13
      dp_out_of_memory        = 14
      disk_full               = 15
      dp_timeout              = 16
      not_supported_by_gui    = 17
      error_no_gui            = 18
      OTHERS                  = 19.
  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
               WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.

  CALL FUNCTION 'SCMS_BINARY_TO_XSTRING'
    EXPORTING
      input_length = lv_length
    IMPORTING
      buffer       = lv_template
    TABLES
      binary_tab   = lt_data
    EXCEPTIONS
      failed       = 1
      OTHERS       = 2.
  IF sy-subrc  <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.