mercoledì 22 marzo 2017

Modifica massiva degli utenti

*----------------------------------------------------------------------*
* DECLARATIONS                                                         *
*----------------------------------------------------------------------*
TYPES: BEGIN OF kcde_intern_struc.
    INCLUDE STRUCTURE kcde_cells.
TYPES: END OF kcde_intern_struc.
TYPES: kcde_intern TYPE kcde_intern_struc OCCURS 0.

DATA: gt_input    TYPE kcde_intern,
      gs_input    LIKE LINE OF gt_input,
      gv_username LIKE bapibname-bapibname,
      gs_pwd      TYPE bapipwd,
      gs_pwdx     TYPE bapipwdx,
      gt_return   TYPE bapiret2 OCCURS 0,
      gs_return   LIKE LINE OF gt_return.

*----------------------------------------------------------------------*
* LAYOUT                                                               *
*----------------------------------------------------------------------*
SELECTION-SCREEN: BEGIN OF LINE,
                  COMMENT (30) TEXT-001,"File TXT separato da TAB
                  END OF LINE.
SELECTION-SCREEN: BEGIN OF LINE,
                  COMMENT (30) TEXT-002,"File CSV separato da ";"
                  END OF LINE.
PARAMETERS: pa_flcl TYPE localfile.

*----------------------------------------------------------------------*
* EVENTS                                                               *
*----------------------------------------------------------------------*
AT SELECTION-SCREEN ON VALUE-REQUEST FOR pa_flcl.
  DATA: lt_filetab TYPE filetable,
        ls_file    TYPE localfile,
        lv_rc      TYPE i.
  cl_gui_frontend_services=>file_open_dialog(
    EXPORTING
      window_title      = 'Apri file'
      default_filename  = '*.csv;*.txt'
      initial_directory = 'C:\'
      multiselection    = ' '
    CHANGING
      file_table        = lt_filetab
      rc                = lv_rc ).
  READ TABLE lt_filetab INTO ls_file INDEX 1.
  pa_flcl = ls_file.

*----------------------------------------------------------------------*
* PROGRAM BODY                                                         *
*----------------------------------------------------------------------*
START-OF-SELECTION.

  CALL FUNCTION 'KCD_CSV_FILE_TO_INTERN_CONVERT'
    EXPORTING
      i_filename      = pa_flcl
      i_separator     = ';'
    TABLES
      e_intern        = gt_input
    EXCEPTIONS
      upload_csv      = 1
      upload_filetype = 2
      OTHERS          = 3.

  gs_pwdx-bapipwd = 'X'.
  LOOP AT gt_input INTO gs_input.
    CASE gs_input-col.
      WHEN 1.
        gv_username = gs_input-value.
      WHEN 2.
        gs_pwd-bapipwd = gs_input-value.
        CALL FUNCTION 'BAPI_USER_CHANGE'
          EXPORTING
            username  = gv_username
            password  = gs_pwd
            passwordx = gs_pwdx
          TABLES
            return    = gt_return.
        LOOP AT gt_return INTO gs_return WHERE type = 'E'.
          WRITE / gs_return-message.
        ENDLOOP.
        CLEAR gt_return[].
    ENDCASE.
  ENDLOOP.

END-OF-SELECTION.
  EXIT.

*----------------------------------------------------------------------*

Nessun commento: