*----------------------------------------------------------------------*
***INCLUDE /xxxxI_CALC_FORMULA_F01.
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form GET_DATA
*&---------------------------------------------------------------------*
FORM get_data .
*use the file name from config to extract the data and delete the headerline if it is checked to have header lines
IF p_file1 IS NOT INITIAL.
gv_file = p_file1.
CALL METHOD cl_gui_frontend_services=>gui_upload
EXPORTING
filename = gv_file
has_field_separator = 'X'
CHANGING
data_tab = gt_config
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
not_supported_by_gui = 17
error_no_gui = 18
OTHERS = 19.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
IF p_head IS NOT INITIAL.
DELETE gt_config INDEX 1.
ENDIF.
CLEAR gv_file.
ENDIF.
IF p_file2 IS NOT INITIAL.
*use the file name from mapping to extract the data and delete the headerline if it is checked to have header lines
gv_file = p_file2.
CALL METHOD cl_gui_frontend_services=>gui_upload
EXPORTING
filename = gv_file
has_field_separator = 'X'
CHANGING
data_tab = gt_map
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
not_supported_by_gui = 17
error_no_gui = 18
OTHERS = 19.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
IF p_head IS NOT INITIAL.
DELETE gt_map INDEX 1.
ENDIF.
CLEAR gv_file.
ENDIF.
IF p_file3 IS NOT INITIAL.
*use the file name from structure to extract the data and delete the headerline if it is checked to have header lines
gv_file = p_file3.
CALL METHOD cl_gui_frontend_services=>gui_upload
EXPORTING
filename = gv_file
has_field_separator = 'X'
CHANGING
data_tab = gt_struc
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
not_supported_by_gui = 17
error_no_gui = 18
OTHERS = 19.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
IF p_head IS NOT INITIAL.
DELETE gt_struc INDEX 1.
ENDIF.
CLEAR gv_file.
ENDIF.
IF p_file4 IS NOT INITIAL.
*use the file name from header to extract the data and delete the headerline if it is checked to have header lines
gv_file = p_file4.
CALL METHOD cl_gui_frontend_services=>gui_upload
EXPORTING
filename = gv_file
has_field_separator = 'X'
CHANGING
data_tab = gt_header
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
not_supported_by_gui = 17
error_no_gui = 18
OTHERS = 19.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
IF p_head IS NOT INITIAL.
DELETE gt_header INDEX 1.
ENDIF.
CLEAR gv_file.
ENDIF.
IF p_file5 IS NOT INITIAL.
*use the file name from header to extract the data and delete the headerline if it is checked to have header lines
gv_file = p_file5.
CALL METHOD cl_gui_frontend_services=>gui_upload
EXPORTING
filename = gv_file
has_field_separator = 'X'
CHANGING
data_tab = gt_cycle
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
not_supported_by_gui = 17
error_no_gui = 18
OTHERS = 19.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
IF p_head IS NOT INITIAL.
DELETE gt_cycle INDEX 1.
ENDIF.
CLEAR gv_file.
ENDIF.
ENDFORM. " GET_DATA
*&---------------------------------------------------------------------*
*& Form FILE_HELP_DIALOG1
*&---------------------------------------------------------------------*
FORM file_help_dialog1 .
CLEAR gt_filetab1.
CALL METHOD cl_gui_frontend_services=>file_open_dialog
EXPORTING
multiselection = space
CHANGING
file_table = gt_filetab1
rc = gv_rc.
LOOP AT gt_filetab1 INTO gs_file1.
p_file1 = gs_file1-filename.
ENDLOOP.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FILE_HELP_DIALOG2
*&---------------------------------------------------------------------*
FORM file_help_dialog2 .
CLEAR gt_filetab2.
CALL METHOD cl_gui_frontend_services=>file_open_dialog
EXPORTING
multiselection = space
CHANGING
file_table = gt_filetab2
rc = gv_rc.
LOOP AT gt_filetab2 INTO gs_file2.
p_file2 = gs_file2-filename.
ENDLOOP.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FILE_HELP_DIALOG3
*&---------------------------------------------------------------------*
FORM file_help_dialog3 .
CLEAR gt_filetab3.
CALL METHOD cl_gui_frontend_services=>file_open_dialog
EXPORTING
multiselection = space
CHANGING
file_table = gt_filetab3
rc = gv_rc.
LOOP AT gt_filetab3 INTO gs_file3.
p_file3 = gs_file3-filename.
ENDLOOP.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FILE_HELP_DIALOG4
*&---------------------------------------------------------------------*
FORM file_help_dialog4 .
CLEAR gt_filetab4.
CALL METHOD cl_gui_frontend_services=>file_open_dialog
EXPORTING
multiselection = space
CHANGING
file_table = gt_filetab4
rc = gv_rc.
LOOP AT gt_filetab4 INTO gs_file4.
p_file4 = gs_file4-filename.
ENDLOOP.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form PROCESS_DATA
*&---------------------------------------------------------------------*
FORM process_data .
DATA:
lv_records TYPE i.
DATA:
ls_config TYPE /XXX/KPI_CONF,
ls_map TYPE /XXX/KPI_MAPP,
ls_struc TYPE /XXX/KPI_STRUC,
ls_cycle TYPE /XXX/KPI_CYCLE,
ls_head TYPE XXX/KPI_HEAD.
*records to be updated
DATA:
lt_config TYPE STANDARD TABLE OF /XXX/KPI_CONF,
lt_map TYPE STANDARD TABLE OF /XXX/KPI_MAPP,
lt_struc TYPE STANDARD TABLE OF /XXX/KPI_STRUC,
lt_cycle TYPE STANDARD TABLE OF /XXX/KPI_CYCLE,
lt_head TYPE TABLE OF /XXX/KPI_HEAD.
IF gts_config_old IS NOT INITIAL.
LOOP AT gt_config INTO ls_config.
READ TABLE gts_config_old
WITH TABLE KEY xx100011 = ls_config-xxx
xxx = ls_config-xxx
xxx = ls_config-xxx
xxx = ls_config-xxx
TRANSPORTING NO FIELDS.
IF sy-subrc = 0.
APPEND ls_config TO lt_config.
DELETE gt_config.
ENDIF.
ENDLOOP.
ENDIF.
IF gts_map_old IS NOT INITIAL.
LOOP AT gt_map INTO ls_map.
READ TABLE gts_map_old
WITH TABLE KEY xxxxx = ls_map-xxx
xxx = ls_map-xxx
xxx = ls_map-xxx
xxx = ls_map-xxx
TRANSPORTING NO FIELDS.
IF sy-subrc = 0.
APPEND ls_map TO lt_map.
DELETE gt_map.
ENDIF.
ENDLOOP.
ENDIF.
IF gts_struc_old IS NOT INITIAL.
LOOP AT gt_struc INTO ls_struc.
READ TABLE gts_struc_old
WITH TABLE KEY xxxxxx = ls_struc-xxx "area
xxxxx = ls_struc-xxxxxx "record
xxxxx = ls_struc-xxxxx " appset
xxxxx = ls_struc-xxxxx
TRANSPORTING NO FIELDS.
IF sy-subrc = 0.
APPEND ls_struc TO lt_struc.
DELETE gt_struc.
ENDIF.
ENDLOOP.
ENDIF.
IF gts_header_old IS NOT INITIAL.
LOOP AT gt_header INTO ls_head.
READ TABLE gts_header_old
WITH TABLE KEY xxxxxx = ls_head-xxxxxx
TRANSPORTING NO FIELDS.
IF sy-subrc = 0.
APPEND ls_head TO lt_head.
DELETE gt_header.
ENDIF.
ENDLOOP.
ENDIF.
IF gts_cycle_old IS NOT INITIAL.
LOOP AT gt_cycle INTO ls_cycle.
READ TABLE gts_cycle_old
WITH TABLE KEY sh100001 = ls_cycle-sh100001
sh100002 = ls_cycle-sh100002
sh000676 = ls_cycle-sh000676
TRANSPORTING NO FIELDS.
IF sy-subrc = 0.
APPEND ls_cycle TO lt_cycle.
DELETE gt_cycle.
ENDIF.
ENDLOOP.
ENDIF.
IF gt_config IS NOT INITIAL.
CALL FUNCTION 'RSDRI_ODSO_INSERT'
EXPORTING
i_odsobject = gc_xxxxx_dso
i_t_insert = gt_config
i_trigger_smartmerge = space
IMPORTING
e_records = lv_records
EXCEPTIONS
data_target_not_ods = 1
ods_type_not_transactional = 2
active_table_name_not_found = 3
record_key_already_exists = 4
array_insert_failed = 5
internal_error = 6
OTHERS = 7.
IF sy-subrc <> 0.
PERFORM unlock_table.
ENDIF.
ENDIF.
IF lt_config IS NOT INITIAL.
CALL FUNCTION 'RSDRI_ODSO_UPDATE'
EXPORTING
i_odsobject = gc_xxxx_dso
i_t_update = lt_config
i_trigger_smartmerge = space
IMPORTING
e_records = lv_records
EXCEPTIONS
data_target_not_ods = 1
ods_type_not_transactional = 2
active_table_name_not_found = 3
record_key_does_not_exist = 4
array_update_failed = 5
internal_error = 6
OTHERS = 7.
IF sy-subrc <> 0.
PERFORM unlock_table.
ENDIF.
ENDIF.
IF gt_map IS NOT INITIAL.
CALL FUNCTION 'RSDRI_ODSO_INSERT'
EXPORTING
i_odsobject = gc_xxxxx_dso
i_t_insert = gt_map
i_trigger_smartmerge = space
IMPORTING
e_records = lv_records
EXCEPTIONS
data_target_not_ods = 1
ods_type_not_transactional = 2
active_table_name_not_found = 3
record_key_already_exists = 4
array_insert_failed = 5
internal_error = 6
OTHERS = 7.
IF sy-subrc <> 0.
PERFORM unlock_table.
ENDIF.
ENDIF.
IF lt_map IS NOT INITIAL.
CALL FUNCTION 'RSDRI_ODSO_UPDATE'
EXPORTING
i_odsobject = gc_xxxx_dso
i_t_update = lt_map
i_trigger_smartmerge = space
IMPORTING
e_records = lv_records
EXCEPTIONS
data_target_not_ods = 1
ods_type_not_transactional = 2
active_table_name_not_found = 3
record_key_does_not_exist = 4
array_update_failed = 5
internal_error = 6
OTHERS = 7.
IF sy-subrc <> 0.
PERFORM unlock_xx100002.
PERFORM unlock_table.
ENDIF.
ENDIF.
IF gt_struc IS NOT INITIAL.
CALL FUNCTION 'RSDRI_ODSO_INSERT'
EXPORTING
i_odsobject = gc_xxxxx_dso
i_t_insert = gt_struc
i_trigger_smartmerge = space
IMPORTING
e_records = lv_records
EXCEPTIONS
data_target_not_ods = 1
ods_type_not_transactional = 2
active_table_name_not_found = 3
record_key_already_exists = 4
array_insert_failed = 5
internal_error = 6
OTHERS = 7.
IF sy-subrc <> 0.
PERFORM unlock_table.
ENDIF.
ENDIF.
IF lt_struc IS NOT INITIAL.
CALL FUNCTION 'RSDRI_ODSO_UPDATE'
EXPORTING
i_odsobject = gc_xxxxx_dso
i_t_update = lt_struc
i_trigger_smartmerge = space
IMPORTING
e_records = lv_records
EXCEPTIONS
data_target_not_ods = 1
ods_type_not_transactional = 2
active_table_name_not_found = 3
record_key_does_not_exist = 4
array_update_failed = 5
internal_error = 6
OTHERS = 7.
IF sy-subrc <> 0.
PERFORM unlock_table.
ENDIF.
ENDIF.
IF gt_header IS NOT INITIAL.
CALL FUNCTION 'RSDRI_ODSO_INSERT'
EXPORTING
i_odsobject = gc_xxxxx_dso
i_t_insert = gt_header
i_trigger_smartmerge = space
IMPORTING
e_records = lv_records
EXCEPTIONS
data_target_not_ods = 1
ods_type_not_transactional = 2
active_table_name_not_found = 3
record_key_already_exists = 4
array_insert_failed = 5
internal_error = 6
OTHERS = 7.
IF sy-subrc <> 0.
PERFORM unlock_table.
ENDIF.
ENDIF.
IF lt_head IS NOT INITIAL.
CALL FUNCTION 'RSDRI_ODSO_UPDATE'
EXPORTING
i_odsobject = gc_xxxxx_dso
i_t_update = lt_head
i_trigger_smartmerge = space
IMPORTING
e_records = lv_records
EXCEPTIONS
data_target_not_ods = 1
ods_type_not_transactional = 2
active_table_name_not_found = 3
record_key_does_not_exist = 4
array_update_failed = 5
internal_error = 6
OTHERS = 7.
IF sy-subrc <> 0.
PERFORM unlock_table.
ENDIF.
ENDIF.
IF gt_cycle IS NOT INITIAL.
CALL FUNCTION 'RSDRI_ODSO_INSERT'
EXPORTING
i_odsobject = gc_xxxxxx_dso
i_t_insert = gt_cycle
i_trigger_smartmerge = space
IMPORTING
e_records = lv_records
EXCEPTIONS
data_target_not_ods = 1
ods_type_not_transactional = 2
active_table_name_not_found = 3
record_key_already_exists = 4
array_insert_failed = 5
internal_error = 6
OTHERS = 7.
IF sy-subrc <> 0.
PERFORM unlock_table.
ENDIF.
ENDIF.
IF lt_cycle IS NOT INITIAL.
CALL FUNCTION 'RSDRI_ODSO_UPDATE'
EXPORTING
i_odsobject = gc_xxxx_dso
i_t_update = lt_cycle
i_trigger_smartmerge = space
IMPORTING
e_records = lv_records
EXCEPTIONS
data_target_not_ods = 1
ods_type_not_transactional = 2
active_table_name_not_found = 3
record_key_does_not_exist = 4
array_update_failed = 5
internal_error = 6
OTHERS = 7.
IF sy-subrc <> 0.
PERFORM unlock_table.
ENDIF.
ENDIF.
ENDFORM. " PROCESS_DATA
*&---------------------------------------------------------------------*
*& Form GET_EXISTING_RECORDS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM get_existing_records .
SELECT *
FROM /XXX/KPI_CONF
INTO TABLE gts_config_old.
SELECT *
FROM /XXX/KPI_MAPP
INTO TABLE gts_map_old.
SELECT *
FROM /XXX/KPI_STRUC
INTO TABLE gts_struc_old.
SELECT *
FROM /XXX/KPI_HEAD
INTO TABLE gts_header_old.
SELECT *
FROM /XXX/KPI_CYCLE
INTO TABLE gts_cycle_old.
ENDFORM. " GET_EXISTING_RECORDS
FORM file_help_dialog5 .
CLEAR gt_filetab5.
CALL METHOD cl_gui_frontend_services=>file_open_dialog
EXPORTING
multiselection = space
CHANGING
file_table = gt_filetab5
rc = gv_rc.
LOOP AT gt_filetab5 INTO gs_file5.
p_file5 = gs_file5-filename.
ENDLOOP.
ENDFORM. " FILE_HELP_DIALOG5
I want to replace CALL FUNCTION 'RSDRI_ODSO_UPDATE with a code that it inserts the data into the tables not DSO
Cheers,
Rabie