PDA

Ver la Versión Completa : Copiar variantes


Floren
24/04/06, 08:48:49
Hola a todos!

No llevo mucho tiempo trabajando en SAP y un mar de dudas me llenan cada día en este entorno, al ser éste mi primer posteo en el foro, quería saludar primero a todos sus miembros.

Tengo un pequeño 'brown' en ABAP y quería saber si alguien ha tenido alguna situación similar alguna vez.

Verán, tengo un programa estándar con más de 300 variantes, y un programa Z desarrollado por mi empresa en el que debo copiar cada una de esas 300 variantes, éste programa Z no es copia del estándar pero admite sus variantes .

La primera y basta opción, es crear cada una de esas variantes en el programa Z con el mismo nombre, los mismos valores y los mismos atributos que la correspondiente en el estándar. La pega de esta opción es la cantidad de tiempo que me llevaría y no resulta óptimo.

Existe alguna manera de copiar las variantes a mi programa Z sin tener que pasarme la vida delante del ordenador?

Un saludo a todos, y gracias por adelantado.

tracer
24/04/06, 11:02:35
Hola Floren,

Bienvenido a nuestro foro de sap, esperamos seas un miembro activo de nuestra comunidad.

Contestando a tu pregunta el siguiente programa copia las variantes de un report a otro.


REPORT zcpvariant MESSAGE-ID zs.

TABLES: trdir,
raldb,
varid,
varis,
varit.

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.

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 e022 with 'please check value'.
ENDIF.

TRDIR-NAME = p_rep2.
READ TABLE TRDIR.
IF SY-SUBRC ne 0.
message e022 with 'please check value'.
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 = 0.
write:/ 'OK',tab_varit-variant.
else.
write:/ 'NG',tab_varit-variant.
endif.
ENDLOOP.

COMMIT WORK.




Espero te sea de utilidad.
Ya nos contaras, un saludo :) .

Andresf
17/01/08, 16:05:47
Hola,

Tenéis un programa standar que copia las variantes entre programas. Es RKKBALVC

Un saludo.