mercoledì 16 marzo 2016

Inserire o modificare report in modo massivo

*----------------------------------------------------------------------*
* LAYOUT                                                               *
*----------------------------------------------------------------------*
PARAMETERS: pa_src(255) TYPE C LOWER CASE.

*----------------------------------------------------------------------*
* FORM INSERT_REPORT                                                   *
*----------------------------------------------------------------------*
FORM insert_report.

  TYPES: BEGIN OF ty_datatab,
           line(255) TYPE C,
         END OF ty_datatab.
  DATA: lt_datatab TYPE TABLE OF ty_datatab,
        ls_datatab TYPE OF lt_datatab.
  DATA: lt_filetab TYPE TABLE OF ty_datatab,
        ls_filetab TYPE lt_filetab.
  DATA: lv_filename TYPE STRING,
        lv_progname TYPE PROGNAME,
        lv_korr     TYPE TRKORR,
        lv_flag     TYPE C.

  lv_filename = pa_src.
  CL_GUI_FRONTEND_SERVICES=>GUI_UPLOAD(
    EXPORTING
      FILENAME = lv_filename
    CHANGING
      DATA_TAB = lt_filetab ).
  LOOP AT lt_filetab INTO ls_filetab.
    lv_filename = ls_filetab.
    CL_GUI_FRONTEND_SERVICES=>GUI_UPLOAD(
      EXPORTING
        FILENAME = lv_filename
      CHANGING
        DATA_TAB = lt_datatab ).
    READ TABLE lt_datatab INTO ls_datatab INDEX 3.
    lv_progname = ls_datatab.
    SHIFT lv_progname BY 2 PLACES.
    TRANSLATE lv_progname USING '. '.
    TRANSLATE lv_progname TO UPPER CASE.
    CONDENSE lv_progname.
    CALL FUNCTION 'RS_CORR_INSERT'
      EXPORTING
        OBJECT                         = lv_progname
        OBJECT_CLASS                   = 'PROG'
        DEVCLASS                       = 'ZBO'
        KORRNUM                        = lv_korr
        SUPPRESS_DIALOG                = lv_flag
      IMPORTING
        KORRNUM                        = lv_korr
      EXCEPTIONS
        CANCELLED                      = 1
        PERMISSION_FAILURE             = 2
        UNKNOWN_OBJECTCLASS            = 3
        OTHERS                         = 4.
    IF SY-SUBRC <> 0.
*      MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*              WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    lv_flag = 'X'.
    INSERT REPORT lv_progname FROM lt_datatab.
  ENDLOOP.

ENDFORM.

Nessun commento: