VinceCoder
2/22/2019 - 10:27 AM

Batch Input (CTU)

Batch Input con metodo call transaction completo

TYPES:   BEGIN OF t_employee,
         pernr        TYPE    p0002-pernr, "Employee Number
         midnm        TYPE    p0002-midnm, "mid name
         rufnm        TYPE    p0002-rufnm, "nick name
         begda(10)    TYPE   c,
         endda(10)    TYPE   c,
        END OF t_employee.  
DATA:   it_employee   TYPE  STANDARD TABLE OF t_employee,
        wa_employee   TYPE t_employee,
        it_bdcdata    TYPE bdcdata OCCURS 0 WITH HEADER LINE ,
        i_file_path   TYPE localfile,
        file_name     TYPE string,
        I_SESSIONNAME(12) TYPE c. 

SELECTION-SCREEN BEGIN OF BLOCK bk1 WITH FRAME TITLE title1.
  SELECTION-SCREEN COMMENT 1(10) txt_01.
  PARAMETERS p_fname TYPE rlgrap-filename OBLIGATORY.
  PARAMETERS p_sess LIKE APQI-GROUPID .
SELECTION-SCREEN END OF BLOCK bk1.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_fname.
  CLEAR i_file_path.
  PERFORM select_input_file_name.
  MOVE i_file_path TO p_fname.
  file_name = p_fname.

START-OF-SELECTION.

PERFORM BDC_CALL_TRANSACTION_METHOD
  CALL FUNCTION 'GUI_UPLOAD'
    EXPORTING
      filename            = file_name
      filetype            = 'ASC'
      has_field_separator = 'X'
    TABLES
      data_tab            = it_employee.
FORM BDC_CALL_TRANSACTION.
    LOOP AT it_employee INTO wa_employee.

      PERFORM bdc_dynpro      USING 'SAPMP50A' '1000'.

      PERFORM bdc_field       USING 'RP50G-PERNR'
                                    wa_employee-pernr.
      PERFORM bdc_field       USING 'RP50G-TIMR6'
                                    'X'.
      PERFORM bdc_field       USING 'BDC_CURSOR'
                                    'RP50G-CHOIC'.
      PERFORM bdc_field       USING 'RP50G-CHOIC'
                                    '0002'.
      PERFORM bdc_field       USING 'BDC_OKCODE'
                                    '=MOD'.
      PERFORM bdc_dynpro      USING 'MP000200' '2044'.
      PERFORM bdc_field       USING 'BDC_OKCODE'
                                    '=UPD'.
      PERFORM bdc_field       USING 'BDC_CURSOR'
                                    'P0002-RUFNM'.

      PERFORM bdc_field       USING 'P0002-BEGDA'
                                    wa_employee-begda.
      PERFORM bdc_field       USING 'P0002-ENDDA'
                                    wa_employee-endda.

      PERFORM bdc_field       USING 'P0002-MIDNM'
                                    wa_employee-midnm.
      PERFORM bdc_field       USING 'P0002-RUFNM'
                                   wa_employee-rufnm.

      CALL TRANSACTION 'PA30' USING it_bdcdata
                                MODE 'A'
                                UPDATE 's'.
     REFRESH it_bdcdata.
  ENDLOOP.
ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  select_input_file_name
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM select_input_file_name.
  CALL FUNCTION 'F4_FILENAME'
    EXPORTING
      program_name  = sy-repid
      dynpro_number = sy-dynnr
      field_name    = 'PATH'
    IMPORTING
      file_name     = i_file_path.

ENDFORM.                    "select_input_file_name

*&---------------------------------------------------------------------*
*&      Form BDC_DYNPRO
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->PROG       text
*      -->SCR        text
*----------------------------------------------------------------------*
FORM bdc_dynpro USING prog scr.
  CLEAR it_bdcdata.
  it_bdcdata-program = prog.
  it_bdcdata-dynpro  = scr.
  it_bdcdata-dynbegin = 'X'.
  APPEND it_bdcdata.
ENDFORM.                    "BDC_DYNPRO

*&---------------------------------------------------------------------*
*&      Form  BDC_FIELD
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->FNAM       text
*      -->FVAL       text
*----------------------------------------------------------------------*
FORM bdc_field USING fnam fval.
  CLEAR it_bdcdata.
  it_bdcdata-fnam = fnam.
  it_bdcdata-fval  = fval.
  APPEND it_bdcdata.
ENDFORM.                    "BDC_FIELD