MUNDOSAP

MUNDOSAP (foro/index.php)
-   Programación ABAP IV (foro/forumdisplay.php?f=4)
-   -   Crear tipo dinámico (foro/showthread.php?t=67490)

braisco 27/06/13 13:26:48

Crear tipo dinámico
 
¿Es posible crear un tipo (TYPES:) dinámico?

Necesito crear un tipo dinámico para declarar una tabla interna de ese tipo. Esa tabla interna será para un ALV que tiene que mostrar una serie de campos fijos + una serie de campos dinámicos. Por lo que necesito es hacer un tipo con campos fijos y campos que vengan de un <fs> o algo por el estilo... pero no se como...

Un saludo!!

Mauricio Hidalgo 27/06/13 15:38:44

Tomado desde la ayuda en línea para CREATE DATA.

PARAMETERS: type(10) TYPE c,
length TYPE i,
decimals TYPE i.

DATA dref TYPE REF TO data.

FIELD-SYMBOLS <fs> TYPE ANY.

START-OF-SELECTION.
TRY.
PERFORM create_data USING type
length
decimals
CHANGING dref.
ASSIGN dref->* TO <fs>.
DESCRIBE FIELD <fs> TYPE type
LENGTH length IN BYTE MODE
DECIMALS decimals.
WRITE: type, length, decimals.
CATCH cx_sy_create_data_error.
WRITE: 'Error creating', type, length, decimals.
ENDTRY.

FORM create_data USING value(typ) TYPE c
value(len) TYPE i
value(dec) TYPE i
CHANGING dref TYPE REF TO data
RAISING cx_sy_create_data_error.
TRANSLATE typ TO LOWER CASE.
CASE typ.
WHEN 'd' OR 'f' OR 'i' OR 'string' OR 't' OR 'xstring'.
CREATE DATA dref TYPE (typ).
WHEN 'c' OR 'n' OR 'x'.
CREATE DATA dref TYPE (typ) LENGTH len.
WHEN 'p'.
CREATE DATA dref TYPE p LENGTH len DECIMALS dec.
WHEN OTHERS.
RAISE EXCEPTION TYPE cx_sy_create_data_error.
ENDCASE.
ENDFORM.

joau_fedipe 27/06/13 17:38:24

Hola Braisco,
Si vas a mostrar campos dinámicos en un ALV no tienes que definir ningún tipo. Lo único que debes hacer antes de mostrar el ALV es lo siguiente:
Al definir el layout para los fieldcat aquellos campos que son dinamicos tendrás que decidir si se muestran o no. Si no se van a mostrar no lo defines en el layout pero si se van a mostrar si lo tienes que definir en el layout.

Una condición para mostrar estos campos dinamicos puede ser: si en la tabla interna este campo tiene información lo muestro pero si no tiene información no lo muestro.

Espero que lo explicado te ayude.
Saludos.

braisco 28/06/13 09:19:36

Gracias a los dos por contestar!

El problema no es el catálogo de campos, el problema lo tengo a la hora de declarar la tabla que contiene los datos a mostrar.

No se como declarar una parte fija y una parte dinámica.

Algo como:



Esto por supuesto no funciona...


Husos Horarios son GMT. La hora en este momento es 05:54:20.

www.mundosap.com 2006 - Spain
software crm, crm on demand, software call center, crm act, crm solutions, crm gratis, crm web