#1
|
|||
|
|||
![]() Buenas gente,
Quería consultarles si conocen de alguna función que te genere una tabla interna dinámicamente según los datos que tenga en la tabla it_fieldcat de un alv(Es decir con la columnas según el campo fieldname de la it_fieldcat). Muchas gracias de antemano. Saludos, Germán. ![]() |
#2
|
|||
|
|||
![]() Yo le paso una tabla dinamica a un alv , asi que cogiendo cada uno de los campos (nombres) del alv podras hacerlo igual.
FORM CARGA_TABLA TABLES P_IT_TIEND STRUCTURE WA_TIEND P_IT_CATRE STRUCTURE WA_CATRE. DATA: ls_struc TYPE REF TO cl_rs_struc, lo_data TYPE REF TO data. CREATE OBJECT ls_struc. data: cont type i value 0, cont2 type i. * Se añaden los campos (referentes a elementos de datos) * Campo Categoria de reparto CALL METHOD ls_struc->add_element EXPORTING i_sconame = 'CATREPARTO' i_type = 'ZTSD_CATRE-CATEGORIA_REPART'. * Se crea el catalogo aqui por ser tabla dinamica. ls_fcat-fieldname = 'CATREPARTO'. ls_fcat-coltext = 'CAT.REPARTO'. ls_fcat-ref_table = '<tabla>'. APPEND ls_fcat to gt_fieldcat. CLEAR ls_fcat. * Todos los campos que tenga la tabla Tiendas. LOOP AT P_IT_TIEND into wa_tiend. CALL METHOD ls_struc->add_element EXPORTING i_sconame = wa_tiend-TIPO_TIENDA i_type = 'ZTSD_TIEND-TIPO_TIENDA'. * Se crea el catalogo aqui por ser tabla dinamica. ls_fcat-fieldname = wa_tiend-TIPO_TIENDA. ls_fcat-ifieldname = wa_tiend-TIPO_TIENDA. ls_fcat-coltext = wa_tiend-TIPO_TIENDA. ls_fcat-ref_table = '<tabla>'. ls_fcat-edit ='X'. cont = cont + 1. wa_campos-num = cont + 1. wa_campos-nom = wa_tiend-TIPO_TIENDA. APPEND wa_campos to it_campos. APPEND ls_fcat to gt_fieldcat. CLEAR ls_fcat. ENDLOOP. * Se crea la estructura de la tabla dinamica CALL METHOD ls_struc->create EXPORTING i_dynamic = rs_c_false RECEIVING r_r_data = lo_data EXCEPTIONS wrong_struc_definition = 1 no_struc_definition = 2 OTHERS = 3. * La variable lo_data lleva un numerajo que es el handle para manejar ese objeto * por lo que tenemos que utilizar el operador ->* para referenciar al contenido * de ese objeto, en este caso una estructura ASSIGN lo_data->* TO <linea>. * previamente hemos creado una wa ahora crearemos la tabla del tipo de esa misma wa CREATE DATA lo_data LIKE TABLE OF <linea>. * la asignamos a otro fieldsymbol ASSIGN lo_data->* TO <tabla>. * Recorremos e insertamos en la tabla dinamica todos los campos. loop at P_IT_CATRE into wa_catre. cont2 = 1. ASSIGN COMPONENT cont2 OF STRUCTURE <linea> TO <campo>. <campo> = wa_catre-CATEGORIA_REPART. cont2 = cont2 + 1. do cont times. ASSIGN COMPONENT cont2 OF STRUCTURE <linea> TO <campo>. <campo> = '0'. cont2 = cont2 + 1. enddo. APPEND <linea> TO <tabla>. endloop. ENDFORM. suerte |
![]() |
Herramientas | Buscar en Tema |
Desplegado | |
|
|