Created
October 10, 2012 18:56
-
-
Save hugo-dc/3867666 to your computer and use it in GitHub Desktop.
Backup to transparent tables with common key
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
*&---------------------------------------------------------------------* | |
*& Report ZMAY_BACKUP | |
*& | |
*&---------------------------------------------------------------------* | |
*& | |
*& | |
*&---------------------------------------------------------------------* | |
REPORT zmay_backup. | |
TABLES: | |
zclients_may_cat, | |
zhcortes_may_cat, | |
zdcortes_may_cat, | |
zcmc_anticipos, | |
zcorte_bloqueado. | |
DATA: | |
ti_clientes LIKE zclients_may_cat OCCURS 0 WITH HEADER LINE, | |
ti_hcortes LIKE zhcortes_may_cat OCCURS 0 WITH HEADER LINE, | |
ti_dcortes LIKE zdcortes_may_cat OCCURS 0 WITH HEADER LINE, | |
ti_anticipos LIKE zcmc_anticipos OCCURS 0 WITH HEADER LINE, | |
ti_corte_blq LIKE zcorte_bloqueado OCCURS 0 WITH HEADER LINE, | |
BEGIN OF ti_file OCCURS 0, | |
line(600), | |
END OF ti_file, | |
BEGIN OF ti_tables OCCURS 0, | |
zeta LIKE dd02l-tabname, | |
it(12), | |
END OF ti_tables. | |
DATA: | |
ref_tab TYPE REF TO data. | |
DATA: | |
ti_uno LIKE rfc_db_opt OCCURS 0 WITH HEADER LINE, | |
ti_dos LIKE tab512 OCCURS 0. | |
FIELD-SYMBOLS: | |
<itable> TYPE table, | |
<wa> TYPE ANY, | |
<field>. | |
DATA: | |
ti_fields LIKE rfc_db_fld OCCURS 0 WITH HEADER LINE, | |
field TYPE string, | |
fname TYPE string, | |
len TYPE i, | |
v_ans TYPE c. | |
*--------------------------------------------------------------------* | |
*--------------------------------------------------------------------* | |
* | |
*--------------------------------------------------------------------* | |
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001. | |
PARAMETERS: | |
p_kunnr LIKE kna1-kunnr, | |
p_dw RADIOBUTTON GROUP r1, | |
p_up RADIOBUTTON GROUP r1. | |
SELECTION-SCREEN END OF BLOCK b1. | |
*--------------------------------------------------------------------* | |
* | |
*--------------------------------------------------------------------* | |
INITIALIZATION. | |
PERFORM add_table USING: 'zclients_may_cat' 'ti_clientes', | |
'zhcortes_may_cat' 'ti_hcortes', | |
'zdcortes_may_cat' 'ti_dcortes', | |
'zcmc_anticipos' 'ti_anticipos', | |
'zcorte_bloqueado' 'ti_corte_blq'. | |
*--------------------------------------------------------------------* | |
* | |
*--------------------------------------------------------------------* | |
START-OF-SELECTION. | |
CASE 'X'. | |
WHEN p_dw. | |
PERFORM download USING p_kunnr. | |
WHEN p_up. | |
PERFORM upload USING p_kunnr. | |
ENDCASE. | |
*&---------------------------------------------------------------------* | |
*& Form DOWNLOAD | |
*&---------------------------------------------------------------------* | |
* text | |
*----------------------------------------------------------------------* | |
* -->P_P_KUNNR text | |
*----------------------------------------------------------------------* | |
FORM download USING i_kunnr. | |
CALL FUNCTION 'POPUP_TO_CONFIRM' | |
EXPORTING | |
text_question = '¿Realmente quiere eliminar los registros de las tablas?' | |
default_button = '2' | |
IMPORTING | |
answer = v_ans. | |
IF v_ans <> '1'. | |
EXIT. | |
ENDIF. | |
LOOP AT ti_tables. | |
CLEAR: | |
ti_uno[], | |
ti_dos[], | |
ti_fields[], | |
ti_file[], | |
ti_file. | |
TRANSLATE ti_tables-zeta TO UPPER CASE. | |
CALL FUNCTION 'RFC_READ_TABLE' | |
EXPORTING | |
query_table = ti_tables-zeta | |
TABLES | |
OPTIONS = ti_uno | |
fields = ti_fields | |
data = ti_dos. | |
CREATE DATA ref_tab TYPE TABLE OF (ti_tables-zeta). | |
ASSIGN ref_tab->* TO <itable>. | |
SELECT * FROM (ti_tables-zeta) INTO TABLE <itable> | |
WHERE kunnr = i_kunnr. | |
IF sy-subrc <> 0. | |
WRITE:/ 'No se encontraron registros en la tabla', ti_tables-zeta, 'para el cliente', i_kunnr, | |
/ 'no se hace nada para esta tabla', /. | |
CONTINUE. | |
ENDIF. | |
LOOP AT <itable> ASSIGNING <wa>. | |
LOOP AT ti_fields. | |
field = '<WA>'. | |
CONCATENATE field '-' ti_fields-fieldname INTO field. | |
ASSIGN (field) TO <field>. | |
field = <field>. | |
CONCATENATE ti_file ',' field INTO ti_file. | |
ENDLOOP. | |
len = STRLEN( ti_file ). | |
ti_file = ti_file+1(len). | |
APPEND ti_file. | |
ENDLOOP. | |
AT NEW it. | |
fname = ti_tables-zeta. | |
CONCATENATE 'C:\Proyectos_SAP\respaldo_c8q\' i_kunnr '+' fname '.txt' INTO fname. | |
CALL FUNCTION 'GUI_DOWNLOAD' | |
EXPORTING | |
filename = fname | |
TABLES | |
data_tab = ti_file. | |
IF sy-subrc = 0. | |
DELETE FROM (ti_tables-zeta) | |
WHERE kunnr = i_kunnr. | |
WRITE:/ '>> Se ha eliminado de tabla Z:', ti_tables-zeta, 'para el cliente', i_kunnr, 'y respaldado en el archivo: ', fname. | |
ELSE. | |
WRITE:/ 'Ocurrió un error al descargar la tabla', ti_tables-zeta, 'para el cliente', i_kunnr, '. No se eliminó de tabla Z'. | |
ENDIF. | |
ENDAT. | |
ENDLOOP. | |
ENDFORM. " DOWNLOAD | |
*&---------------------------------------------------------------------* | |
*& Form UPLOAD | |
*&---------------------------------------------------------------------* | |
* text | |
*----------------------------------------------------------------------* | |
* -->P_P_KUNNR text | |
*----------------------------------------------------------------------* | |
FORM upload USING i_kunnr. | |
DATA: | |
ti_values TYPE char100 OCCURS 0 WITH HEADER LINE, | |
ix TYPE i. | |
LOOP AT ti_tables. | |
fname = 'C:\Proyectos_SAP\respaldo_c8q\'. | |
CONCATENATE fname i_kunnr '+' ti_tables-zeta '.txt' INTO fname. | |
CLEAR ti_file[]. | |
CALL FUNCTION 'GUI_UPLOAD' | |
EXPORTING | |
filename = fname | |
TABLES | |
data_tab = ti_file | |
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. | |
LOOP AT ti_file. | |
CLEAR: ti_fields[]. | |
SPLIT ti_file AT ',' INTO TABLE ti_values. | |
ASSIGN (ti_tables-zeta) TO <wa>. | |
TRANSLATE ti_tables-zeta TO UPPER CASE. | |
CALL FUNCTION 'RFC_READ_TABLE' | |
EXPORTING | |
query_table = ti_tables-zeta | |
TABLES | |
OPTIONS = ti_uno | |
fields = ti_fields | |
data = ti_dos. | |
LOOP AT ti_fields. | |
ix = sy-tabix. | |
LOOP AT ti_values. | |
IF ix = sy-tabix. | |
CONCATENATE ti_tables-zeta '-' ti_fields-fieldname INTO field. | |
ASSIGN (field) TO <field>. | |
<field> = ti_values. | |
EXIT. | |
ENDIF. | |
ENDLOOP. | |
ENDLOOP. | |
ASSIGN (ti_tables-zeta) TO <field>. | |
INSERT (ti_tables-zeta) FROM <field>. | |
IF sy-subrc = 0. | |
WRITE: / 'Se ha cargado información en tabla ', ti_tables-zeta, 'para el cliente', i_kunnr. | |
ENDIF. | |
ENDLOOP. | |
ENDIF. | |
ENDLOOP. | |
ENDFORM. " UPLOAD | |
*&---------------------------------------------------------------------* | |
*& Form ADD_TABLE | |
*&---------------------------------------------------------------------* | |
* text | |
*----------------------------------------------------------------------* | |
* -->P_0116 text | |
* -->P_0117 text | |
*----------------------------------------------------------------------* | |
FORM add_table USING p_zeta | |
p_it. | |
ti_tables-zeta = p_zeta. | |
ti_tables-it = p_it. | |
APPEND ti_tables. | |
ENDFORM. " ADD_TABLE |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment