SAP ABAP Code Text File to Internal Table

 ABAP Code To upload data from Text file to internal table and perform further required operations.





Source Code

REPORT zmilestone_update.

TABLES zmilestone.

TYPES BEGIN OF tp_itab,
          proj_id    TYPE zmilestone-proj_id,
          building   TYPE zmilestone-building,
          milestone  TYPE zmilestone-milestone,
          ecdate(10TYPE c,
        END OF tp_itab.

DATA gt_itab  TYPE STANDARD TABLE OF tp_itab,
       gs_itab  TYPE tp_itab,
       gs_mlstn TYPE zmilestone.

DATA gv_file TYPE string,
       gv_flag TYPE flag,
       gv_date TYPE sy-datum.

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
PARAMETERS p_file    TYPE ibipparms-path OBLIGATORY.
SELECTION-SCREEN SKIP.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 02(79text-c01.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 02(79text-c02.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 02(79text-c03.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK b1.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.

*  PERFORM get_file_path CHANGING filename.
  CALL FUNCTION 'F4_FILENAME'
*    EXPORTING
*      PROGRAM_NAME  = SYST-CPROG
*      DYNPRO_NUMBER = SYST-DYNNR
*      FIELD_NAME    = ''
    IMPORTING
      file_name p_file.


START-OF-SELECTION.

  gv_file p_file.
  CLEAR gt_itab[].

  CALL FUNCTION 'GUI_UPLOAD'
    EXPORTING
      filename                gv_file
      filetype                'ASC'
      has_field_separator     'X'
*     HEADER_LENGTH           = 0
*     READ_BY_LINE            = 'X'
*     DAT_MODE                = ' '
*     CODEPAGE                = ' '
*     IGNORE_CERR             = ABAP_TRUE
*     REPLACEMENT             = '#'
*     CHECK_BOM               = ' '
*     VIRUS_SCAN_PROFILE      =
*     NO_AUTH_CHECK           = ' '
*  IMPORTING
*     FILELENGTH              =
*     HEADER                  =
    TABLES
      data_tab                gt_itab[]
*  CHANGING
*     ISSCANPERFORMED         = ' '
    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
      OTHERS                  17.
  IF sy-subrc <> 0.
* Implement suitable error handling here
  ENDIF.

  DELETE gt_itab WHERE proj_id IS INITIAL OR
                       building IS INITIAL OR
                       milestone IS INITIAL.

  IF gt_itab[] IS NOT INITIAL.

    LOOP AT gt_itab INTO gs_itab.
      CONDENSE gs_itab-proj_id.
      CONDENSE gs_itab-building.
      CONDENSE gs_itab-milestone.

      TRANSLATE gs_itab-milestone to UPPER CASE.

    clear gv_date.

    if gs_itab-ecdate is NOT INITIAL.
    CALL FUNCTION 'CONVERT_DATE_TO_INTERNAL'
      EXPORTING
        date_external                  gs_itab-ecdate
*       ACCEPT_INITIAL_DATE            =
      IMPORTING
       DATE_INTERNAL                  gv_date
*     EXCEPTIONS
*       DATE_EXTERNAL_IS_INVALID       = 1
*       OTHERS                         = 2
              .
    IF sy-subrc <> 0.
* Implement suitable error handling here
    ENDIF.

    endif.

    clear gs_mlstn.
    select single from zmilestone into CORRESPONDING FIELDS OF gs_mlstn
    where proj_id  gs_itab-proj_id
      and building gs_itab-building
      and milestone gs_itab-milestone.

    if gs_mlstn-milestone is NOT INITIAL.

    UPDATE zmilestone SET ecdate gv_date
     WHERE proj_id   gs_itab-proj_id AND
           building  gs_itab-building AND
           milestone gs_itab-milestone.
    IF sy-subrc EQ 0.
       gv_flag 'X'.
    ELSE.

    ENDIF.

    endif.

      CLEAR gs_itabgs_mlstn.
    ENDLOOP.

  ENDIF.

   if gv_flag 'X'.
      message 'Milestone Date updated successfully' TYPE 'I'.
   else.
       message 'No records found for date updation'  TYPE 'I'.
   endif.

    set SCREEN 0.

END-OF-SELECTION.



Post a Comment

0 Comments

Total Pageviews