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(10) TYPE 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(79) text-c01.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 02(79) text-c02.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 02(79) text-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_itab, gs_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.
TABLES : zmilestone.
TYPES : BEGIN OF tp_itab,
proj_id TYPE zmilestone-proj_id,
building TYPE zmilestone-building,
milestone TYPE zmilestone-milestone,
ecdate(10) TYPE 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(79) text-c01.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 02(79) text-c02.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 02(79) text-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_itab, gs_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.
0 Comments