Copiar variantes entre programas/reports
Escenario: buscando un reporte para poder copiar variantes entre reports SAP, encontré un par de post interesantes, armé un programa que une los post que permite copiar variantes y layouts de ALV.
Espero les sirva.
*&———————————————————————*
*& Report Z_COPIAR_VARIANTES
*&
*&———————————————————————*
*& Programa para copiar variantes entre programas ABAP
*& Bajado de: http://www.mundosap.com/foro/showthread.php?t=422
*& http://www.abap.es/foro/index.php?topic=138.0
*& Autor: Ing. Eduardo M. Puricelli
*& Fecha: 15.06.2011
*&———————————————————————*
REPORT z_copiar_variantes.
TABLES: trdir,
raldb,
varid,
varis,
varit.
TABLES: ltdx, ltdxd, ltdxt.
SELECT-OPTIONS:
variant FOR raldb-variant.
PARAMETERS: p_rep1 LIKE raldb-report OBLIGATORY,
p_rep2 LIKE raldb-report OBLIGATORY.
DATA: tab_vari LIKE vari OCCURS 0 WITH HEADER LINE,
tab_varid LIKE varid OCCURS 0 WITH HEADER LINE,
tab_varis LIKE varis OCCURS 0 WITH HEADER LINE,
tab_varit LIKE varit OCCURS 0 WITH HEADER LINE,
tab_ltdx LIKE ltdx OCCURS 0 WITH HEADER LINE,
tab_ltdxd LIKE ltdxd OCCURS 0 WITH HEADER LINE,
tab_ltdxt LIKE ltdxt OCCURS 0 WITH HEADER LINE.
INITIALIZATION.
variant-low = ‘&*’.
variant-sign = ‘E’.
variant-option = ‘CP’.
APPEND variant.
AT SELECTION-SCREEN.
trdir-name = p_rep1.
READ TABLE trdir.
IF sy-subrc NE 0.
MESSAGE e001(00) WITH ‘No existe el reporte origen. Verifique’.
ENDIF.
trdir-name = p_rep2.
READ TABLE trdir.
IF sy-subrc NE 0.
MESSAGE e001(00) WITH ‘No existe el reporte destino. Verifique’.
ENDIF.
START-OF-SELECTION.
SELECT * FROM vari
INTO TABLE tab_vari
WHERE report = p_rep1
AND variant IN variant.
SELECT * FROM varis
INTO TABLE tab_varis
WHERE report = p_rep1
AND variant IN variant.
SELECT * FROM varit
INTO TABLE tab_varit
WHERE report = p_rep1
AND variant IN variant.
SELECT * FROM varid
INTO TABLE tab_varid
WHERE report = p_rep1
AND variant IN variant.
LOOP AT tab_vari.
tab_vari-report = p_rep2.
INSERT INTO vari VALUES tab_vari.
ENDLOOP.
LOOP AT tab_varis.
tab_varis-report = p_rep2.
INSERT INTO varis VALUES tab_varis.
ENDLOOP.
LOOP AT tab_varid.
tab_varid-report = p_rep2.
INSERT INTO varid VALUES tab_varid.
ENDLOOP.
LOOP AT tab_varit.
tab_varit-report = p_rep2.
INSERT INTO varit VALUES tab_varit.
IF sy-subrc EQ 0.
WRITE:/ ‘OK’,tab_varit-variant.
ELSE.
WRITE:/ ‘Error:’,tab_varit-variant.
ENDIF.
ENDLOOP.
* Variantes de visualización (ALV)
SELECT * FROM ltdx
INTO TABLE tab_ltdx
WHERE report = p_rep1.
LOOP AT tab_ltdx.
tab_ltdx-report = p_rep2.
INSERT INTO ltdx VALUES tab_ltdx.
ENDLOOP.
SELECT * FROM ltdxd
INTO TABLE tab_ltdxd
WHERE report = p_rep1.
LOOP AT tab_ltdxd.
tab_ltdxd-report = p_rep2.
INSERT INTO ltdxd VALUES tab_ltdxd.
ENDLOOP.
SELECT * FROM ltdxt
INTO TABLE tab_ltdxt
WHERE report = p_rep1.
LOOP AT tab_ltdxt.
tab_ltdxt-report = p_rep2.
INSERT INTO ltdxt VALUES tab_ltdxt.
ENDLOOP.
COMMIT WORK.
Muchas gracias estimado. Me sirvió el programa, esta para pulirlo un poquito nomas. Saludos.
Muchas gracias estimado, me sirvio el programa, esta para pulirlo un poquito nomas. Saludos.
Hola agrego a mi propio post lo siguiente: También se puede ejecutar la SE37 y usar la función RS_COPY_SELECTION_SETS, parece que hace lo mismo y más fácil!!!
Muchas gracias por compartir esta herramienta me ahorro bastante trabajo.