#1
|
|||
|
|||
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!! |
#2
|
|||
|
|||
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. |
#3
|
|||
|
|||
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. |
#4
|
|||
|
|||
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... |
Herramientas | Buscar en Tema |
Desplegado | |
|
|