Professional Documents
Culture Documents
RPUTAXP0 Novo
RPUTAXP0 Novo
TABLES: t5p1p.
FIELD-SYMBOLS: <test>.
* Global constants-------------------------------------------
CONSTANTS: gc_true TYPE sap_bool VALUE 'X', "Flag
gc_use_grid TYPE c VALUE 'X', "use_grid parameter
gc_currency TYPE t500c-waers VALUE 'EUR'.
* Global Variables-------------------------------------------
DATA : gv_log_handle TYPE balloghndl, "Log Handle
gv_text(132) TYPE c, "Message text
gv_temp(16). "For concatenation
START-OF-SELECTION.
LOOP AT gt_file_data.
PERFORM build_col_def.
gv_curr_init = gc_currency(1).
SORT gt_key_tab.
LOOP AT gt_key_tab.
* Process file with IRS/VAR table
CONCATENATE tdate '_' gt_key_tab-tab '_'
gv_curr_init area '.csv' INTO gv_irs_file_aux.
PERFORM process_file_data.
ENDLOOP. "key_tab
SORT gt_sel.
DELETE ADJACENT DUPLICATES FROM gt_sel
COMPARING tab colum endda waers.
LOOP AT gt_d5p1p.
IF gt_d5p1p-begda NE tdate.
gt_d5p1p-endda = tdate - 1.
MODIFY gt_d5p1p.
IF test NE 'X'.
PERFORM store_transport_entry USING gt_d5p1p-tab gt_d5p1p-colum
gt_d5p1p-waers gt_d5p1p-endda.
ENDIF.
ELSE.
DELETE gt_d5p1p INDEX sy-tabix.
ENDIF.
ENDLOOP.
SORT gt_e071k.
DELETE ADJACENT DUPLICATES FROM gt_e071k
COMPARING tabkey.
LOOP AT gt_sel.
* Delete entries from previous year or
* "tyear" if already processed
DELETE FROM t5p1p WHERE tab = gt_sel-tab AND
colum = gt_sel-colum AND
endda = gt_sel-endda AND
waers = gt_sel-waers.
ADD sy-dbcnt TO gv_nr_del.
IF test NE 'X'.
PERFORM store_transport_entry USING gt_sel-tab gt_sel-colum
gt_sel-waers gt_sel-endda.
ENDIF.
ENDLOOP.
IF gv_return NE 0.
** WRITE: / 'No data updated: '(005).
CLEAR gv_temp.
MOVE text-005 TO gv_text.
* Add the messages in application log.
PERFORM add_msg_to_appl_log USING gv_text 'E'.
ELSE.
IF NOT gt_d5p1p[] IS INITIAL.
* Insert changed entries from previous year
** WRITE: / 'Number of lines NOT copied: '(003), gv_nr_del.
** WRITE: / 'Number of lines copied: '(004), gv_nr_cop.
IF gv_nr_del NE 0.
CLEAR gv_temp.
WRITE gv_nr_del TO gv_temp.
CONCATENATE TEXT-003 gv_temp INTO gv_text SEPARATED BY SPACE.
* Add the messages in application log.
PERFORM add_msg_to_appl_log USING gv_text 'E'.
ENDIF.
CLEAR gv_temp.
WRITE gv_nr_cop TO gv_temp.
CONCATENATE TEXT-004 gv_temp INTO gv_text SEPARATED BY SPACE.
* Add the messages in application log.
PERFORM add_msg_to_appl_log USING gv_text 'S'.
ELSE.
IF gv_nr_del NE 0.
** WRITE: / 'Number of lines deleted:'(006), gv_nr_del.
CLEAR gv_temp.
WRITE gv_nr_del TO gv_temp.
CONCATENATE TEXT-006 gv_temp INTO gv_text SEPARATED BY SPACE.
CLEAR gv_temp.
WRITE sy-dbcnt TO gv_temp.
CONCATENATE TEXT-002 gv_temp INTO gv_text SEPARATED BY SPACE.
* Add the messages in application log.
PERFORM add_msg_to_appl_log USING gv_text 'S'.
ENDIF.
IF test = 'X'.
ROLLBACK WORK.
* WRITE: / 'No data updated: '(005).
clear gv_temp.
move text-005 to gv_text.
* Add the messages in application log.
PERFORM add_msg_to_appl_log USING gv_text 'E'.
ENDIF.
END-OF-SELECTION.
*&---------------------------------------------------------------------*
*& Form READ_FILE
*&---------------------------------------------------------------------*
* Upload file with definitions or values
*----------------------------------------------------------------------*
* --> P_FILE text *
* <-- global data text
*----------------------------------------------------------------------*
FORM read_file USING p_file.
CASE sy-subrc.
WHEN '1' OR '2' OR '3'.
MESSAGE e053(3i) WITH p_file.
WHEN '4.'.
MESSAGE e054(3i).
ENDCASE.
ENDFORM. " READ_FILE
*&---------------------------------------------------------------------*
*& Form BUILD_COL_DEF
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM build_col_def.
CLEAR lv_actual_pos.
*&---------------------------------------------------------------------*
*& Form CHECK_FILE
*&---------------------------------------------------------------------*
* Check if definition file(.DAT) exists
*----------------------------------------------------------------------*
* --> P_FILE text *
*----------------------------------------------------------------------*
FORM check_file USING p_file.
DATA: lv_result.
IF sy-subrc EQ 0.
IF lv_result EQ 0.
MESSAGE e052(3i) WITH p_file.
ENDIF.
ENDIF.
*&---------------------------------------------------------------------*
*& Form STORE_TRANSPORT_ENTRY
*&---------------------------------------------------------------------*
* Define transport entries
*----------------------------------------------------------------------*
* --> P_TAB text *
* --> P_COLUMN text *
* --> P_WAERS text *
* --> P_ENDDA text *
* <-- global data text
*----------------------------------------------------------------------*
FORM store_transport_entry USING p_tab p_column p_waers p_endda.
gt_e071k-pgmid = 'R3TR'.
gt_e071k-object = 'TABU'.
gt_e071k-objname = 'T5P1P'.
gt_e071k-mastertype = 'TABU'.
gt_e071k-mastername = 'T5P1P'.
ls_task_key-tab = p_tab.
ls_task_key-colum = p_column.
ls_task_key-waers = p_waers.
ls_task_key-endda = p_endda.
CONCATENATE ls_task_key '*' INTO gt_e071k-tabkey.
APPEND gt_e071k.
CLEAR: sy-subrc.
lt_ko200-pgmid = 'R3TR'.
lt_ko200-object = 'TABU'.
lt_ko200-obj_name = 'T5P1P'.
lt_ko200-objfunc = 'K'.
APPEND lt_ko200.
SORT gt_e071k.
IF sy-subrc NE 0.
ROLLBACK WORK.
p_return = 1.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
EXIT.
ENDIF.
IF ld_appendable IS INITIAL.
ROLLBACK WORK.
p_return = 2.
MESSAGE i732(tk). " Transport system is not established
EXIT.
ENDIF.
IF sy-subrc NE 0.
ROLLBACK WORK.
p_return = 3.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
LOOP AT gt_file_data.
PERFORM build_col_def.
* Process lines of file with amount range
READ TABLE gt_col_def WITH KEY col = '1'.
gv_actual_len = gt_col_def-end - gt_col_def-beg - 1.
ASSIGN gt_file_data+gt_col_def-beg(gv_actual_len) TO <test>.
lv_col_nr = 1.
DO gt_key_tab-nr_col TIMES.
* Process column of file with tax rates
ADD 1 TO lv_col_nr.
READ TABLE gt_col_def WITH KEY col = lv_col_nr.
gv_actual_len = gt_col_def-end - gt_col_def-beg - 1.
ASSIGN gt_file_data+gt_col_def-beg(gv_actual_len) TO <test>.
TRANSLATE <test> USING '% ,.'.
gt_i5p1p-rate = <test>.
CONCATENATE area gt_key_tab-tab INTO gt_i5p1p-tab.
TRANSLATE gt_i5p1p-tab USING 'C '.
gt_i5p1p-colum = lv_col_nr - 1.
TRANSLATE gt_i5p1p-colum USING gv_rule."Numbers into letter
gt_i5p1p-maxv = lv_max_amount.
gt_i5p1p-begda = tdate.
gt_i5p1p-endda = '99991231'.
gt_i5p1p-waers = gc_currency.
APPEND gt_i5p1p.
gt_sel-tab = gt_i5p1p-tab.
gt_sel-colum = gt_i5p1p-colum.
gt_sel-endda = '99991231'.
gt_sel-waers = gc_currency.
APPEND gt_sel.
CLEAR gt_i5p1p.
CLEAR gt_sel.
ENDDO.
ENDLOOP.
*&---------------------------------------------------------------------*
*& Form fill_min_value
*&---------------------------------------------------------------------*
* Calculates Minimun Value for each NEW entry table
*----------------------------------------------------------------------*
* <-- global data text
*----------------------------------------------------------------------*
FORM fill_min_value.
LOOP AT gt_i5p1p.
AT NEW colum.
lv_oldval = 0.
ENDAT.
AT NEW tab.
lv_oldval = 0.
ENDAT.
gt_i5p1p-minv = lv_oldval.
MODIFY gt_i5p1p INDEX sy-tabix.
lv_oldval = gt_i5p1p-maxv + 1.
ENDLOOP.
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 SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " add_msg_to_appl_log
*&---------------------------------------------------------------------*
*& Form appl_log_display_popup
*&---------------------------------------------------------------------*
* Display Application Logs as popup
*----------------------------------------------------------------------*
FORM appl_log_display_popup .
FORM get_directory_path.
DATA lv_path_sel TYPE string.
DATA lv_separator_symbol TYPE c.
cl_gui_frontend_services=>directory_browse(
CHANGING
selected_folder = lv_path_sel
EXCEPTIONS
cntl_error = 1
error_no_gui = 2
not_supported_by_gui = 3
OTHERS = 4
).
IF sy-subrc = 0.
cl_gui_cfw=>flush( ).
IF lv_path_sel IS NOT INITIAL.
cl_gui_frontend_services=>get_file_separator(
CHANGING
file_separator = lv_separator_symbol
EXCEPTIONS
not_supported_by_gui = 1
error_no_gui = 2
cntl_error = 3
OTHERS = 4
).
IF sy-subrc = 0.
CONCATENATE lv_path_sel lv_separator_symbol INTO lv_path_sel.
cod_dir = lv_path_sel.
ENDIF.
ENDIF.
ENDIF.
ENDFORM.