#1
|
|||
|
|||
Tabla Interna Dinamica
Hola a todos,
alguien podria ayudarme a crear una tabla dinamica? la cuestion es la siguiente. He encontrado algunos posts referente a esto, pero solo me permiten crear la tabla interna a partir de alguna existente, pero el problema es que necesito crear una tabla con estructuras que no existen!!! por ejemplo. para un reporte si seleccionan agrupamiento por meses en mi tabla interna debo tener los campos "enero", "febrero", "marzo", etc.... para reflejarlos en un alv, pero si me piden agupamiento por dias, debo tener en lugar de esos campos en mi tabla interna los de los dias "lunes", "martes", "miercoles", etc... ahora si me piden semanas debo tener "semana1", "semana2", "semana3" y si me piden años debo tener "2008", "2009", "2010", etc... Alguien podria ayudarme en este aspecto?? Gracias de antemano. |
#2
|
||||
|
||||
Hola .. yo hice algo parecido, colocando como parametro de entrada las columnas que quiero que tenga el reporte ...
__________________
David Carballido Córdova |
#3
|
|||
|
|||
************************************************************************
** NOMBRE : Z51FI_7701_TABLAS ** ** AUTOR : ALEX (BSA) ** ** FECHA : 16-10-08 ** ************************************************************************ REPORT (sy-repid) LINE-SIZE 260 LINE-COUNT 65 MESSAGE-ID 00 NO STANDARD PAGE HEADING. CONSTANTS: c_select(3) VALUE 'C11'. DATA: cl_gui_frontend TYPE REF TO cl_gui_frontend_services. TYPES: BEGIN OF xml_line_type, line TYPE char256, END OF xml_line_type, xml_line_tab_type TYPE TABLE OF xml_line_type. DATA: data_itab TYPE xml_line_tab_type. DATA: alv_def LIKE disvariant-variant. * Includes INCLUDE rm07alvi. DATA: BEGIN OF tt_list OCCURS 0, box(1), icono LIKE icon-id, apunt(4), kostl TYPE csks-kostl, gsber TYPE csks-gsber, gtext TYPE v_tgsb-gtext, kalsm TYPE kalsm_d, mwskz TYPE mwskz, text1 TYPE text1_007s, saknr TYPE skb1-saknr, bukrs TYPE skb1-bukrs, lifnr TYPE lfa1-lifnr, kunnr TYPE kna1-kunnr, stcdt(20), "Número de identificación fiscal stcd1(20), "Número identificación fiscal 3 stcd2(20), "Número identificación fiscal 4 stceg(20), "Número de identificación fiscal comunitario color TYPE char3, color_cell TYPE lvc_t_scol, END OF tt_list. DATA: t_list LIKE tt_list OCCURS 0 WITH HEADER LINE. CONSTANTS: c_click LIKE sy-ucomm VALUE '&IC1', " Codigo del doble click c_struct(50) TYPE c VALUE space, c_pf_status_set TYPE slis_formname VALUE 'ALV_SET_STATUS', c_user_command TYPE slis_formname VALUE 'USER_COMMAND', c_layout TYPE slis_formname VALUE 'LAYOUT', c_a(1) TYPE c VALUE 'A', c_xselp(5) TYPE c VALUE 'XSELP', c_marked TYPE c VALUE 'X', c_tipo_grande TYPE c VALUE 'H', c_tipo_mediano TYPE c VALUE 'S', c_tipo_pequeno TYPE c VALUE 'A', c_tipo_alv TYPE c VALUE '1', c_tipo_list TYPE c VALUE '2', c_manual(6) TYPE c VALUE 'Manual', c_views(5) TYPE c VALUE 'YCB81'. * Data for ALV DATA: t_fc TYPE slis_t_fieldcat_alv, t_events TYPE slis_t_event, t_sort TYPE slis_t_sortinfo_alv. DATA: it_layout TYPE slis_layout_alv. TYPES: BEGIN OF lin_documento, bukrs LIKE fkkvkp-opbuk, gpart LIKE dfkkop-gpart, vkont LIKE dfkkop-vkont, opbel LIKE dfkkop-opbel, blart LIKE dfkkop-blart, budat LIKE dfkkop-budat, betrh LIKE dfkkop-betrh, waers LIKE dfkkop-waers, texto(50) TYPE c, status TYPE c, END OF lin_documento. SELECTION-SCREEN BEGIN OF BLOCK a1 WITH FRAME TITLE text-001. SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-004. PARAMETERS: p_bukrs LIKE bseg-bukrs DEFAULT 'BSA' OBLIGATORY. SELECT-OPTIONS: s_datum FOR sy-datum DEFAULT sy-datum. SELECTION-SCREEN END OF BLOCK b2. SELECTION-SCREEN END OF BLOCK a1. SELECTION-SCREEN BEGIN OF BLOCK p WITH FRAME TITLE text-005. SELECTION-SCREEN BEGIN OF LINE. PARAMETERS: p1 RADIOBUTTON GROUP g1. SELECTION-SCREEN COMMENT 5(12) text-0l1 FOR FIELD p1. PARAMETERS2 RADIOBUTTON GROUP g1. SELECTION-SCREEN COMMENT 20(15) text-0l2 FOR FIELD p2. PARAMETERS3 RADIOBUTTON GROUP g1. SELECTION-SCREEN COMMENT 40(15) text-0l3 FOR FIELD p3. PARAMETERS4 RADIOBUTTON GROUP g1. SELECTION-SCREEN COMMENT 58(15) text-0l4 FOR FIELD p4. PARAMETERS5 RADIOBUTTON GROUP g1. SELECTION-SCREEN COMMENT 78(15) text-0l5 FOR FIELD p5. SELECTION-SCREEN END OF LINE. SELECTION-SCREEN BEGIN OF LINE. PARAMETERS6 RADIOBUTTON GROUP g1. SELECTION-SCREEN COMMENT 5(15) text-0l6 FOR FIELD p5. SELECTION-SCREEN END OF LINE. SELECTION-SCREEN END OF BLOCK p. * Own selection screen: Only display variant SELECTION-SCREEN BEGIN OF BLOCK display WITH FRAME TITLE text-000. * Sacar Reservas especiales si se marca SELECTION-SCREEN END OF BLOCK display. * Structures for anciental export techniques ************************************************************************ * Initialization. Get ALV default variant INITIALIZATION. PERFORM alv_init. AT SELECTION-SCREEN. PERFORM alv_check. START-OF-SELECTION. ************************************************************************ * Data selection PERFORM f_load_t_list TABLES t_list. END-OF-SELECTION. ************************************************************************ * Evaluation of the result. DESCRIBE TABLE t_list. MESSAGE s001(00) WITH sy-tfill 'Registro(s) leido(s)'(s01). PERFORM data_process. PERFORM alv_build. PERFORM list_display. ************************************************************************ * Processing of the data. * Colorization, calculating differences, moving accountings... ************************************************************************ FORM data_process. DESCRIBE TABLE t_list. IF sy-tfill EQ 1. SET USER-COMMAND 'BOX1'. ENDIF. LOOP AT t_list. IF t_list-color EQ 'C61'. ELSE. t_list-color = 'C30'. ENDIF. PERFORM actualizar_color USING '1'. MODIFY t_list. ENDLOOP. ENDFORM. "data_process ************************************************************************ * Display the list ************************************************************************ FORM list_display. alv_detail_func = 'REUSE_ALV_GRID_DISPLAY'. * PERFORM p_sort_table TABLES t_sort . PERFORM layout_1. CALL FUNCTION alv_detail_func EXPORTING i_interface_check = ' ' i_callback_program = alv_repid i_callback_pf_status_set = 'STATUS_SET' i_callback_user_command = 'USER_COMMAND' is_layout = alv_layout it_fieldcat = t_fc * it_sort = t_sort i_default = 'X' i_save = 'A' is_variant = alv_variant it_events = t_events[] is_print = alv_print TABLES t_outtab = t_list. ENDFORM. "list_display *---------------------------------------------------------------------* * FORM build_eventtab * *---------------------------------------------------------------------* FORM build_eventtab USING po_events TYPE slis_t_event. CONSTANTS: c_top_of_page TYPE slis_formname VALUE 'TOP_OF_PAGE', c_top_of_list TYPE slis_formname VALUE 'TOP_OF_LIST', c_end_of_list TYPE slis_formname VALUE 'END_OF_LIST', c_status_set TYPE slis_formname VALUE 'STATUS_SET'. DATA: ls_event TYPE slis_alv_event. CALL FUNCTION 'REUSE_ALV_EVENTS_GET' EXPORTING i_list_type = 0 IMPORTING et_events = po_events. READ TABLE po_events WITH KEY name = slis_ev_top_of_list INTO ls_event. IF sy-subrc = 0. MOVE c_top_of_list TO ls_event-form. MODIFY po_events FROM ls_event INDEX sy-tabix. ENDIF. READ TABLE po_events WITH KEY name = slis_ev_top_of_page INTO ls_event. IF sy-subrc = 0. MOVE c_top_of_page TO ls_event-form. MODIFY po_events FROM ls_event INDEX sy-tabix. ENDIF. READ TABLE po_events WITH KEY name = slis_ev_end_of_list INTO ls_event. IF sy-subrc = 0. MOVE c_end_of_list TO ls_event-form. MODIFY po_events FROM ls_event INDEX sy-tabix. ENDIF. READ TABLE po_events WITH KEY name = slis_ev_pf_status_set INTO ls_event. IF sy-subrc = 0. MOVE c_status_set TO ls_event-form. MODIFY po_events FROM ls_event INDEX sy-tabix. ENDIF. ENDFORM. "build_eventtab *---------------------------------------------------------------------* * FORM alv_catalogo * *---------------------------------------------------------------------* FORM alv_catalogo USING p_estructura. DATA: it_fieldcat_hd LIKE LINE OF t_fc. REFRESH t_fc. DATA l_estructura LIKE dd02l-tabname. DATA l_estructura_int TYPE slis_tabname. l_estructura_int = l_estructura = p_estructura. CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE' EXPORTING i_structure_name = l_estructura i_client_never_display = 'X' i_bypassing_buffer = 'X' CHANGING ct_fieldcat = t_fc[]. * Si no encontró campos seguramente sea una tabla interna IF t_fc[] IS INITIAL. CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE' EXPORTING i_program_name = alv_repid i_internal_tabname = l_estructura_int i_client_never_display = 'X' i_bypassing_buffer = 'X' i_inclname = alv_repid CHANGING ct_fieldcat = t_fc[]. ENDIF. LOOP AT t_fc INTO it_fieldcat_hd WHERE seltext_l IS INITIAL AND seltext_m IS INITIAL AND seltext_s IS INITIAL. SELECT SINGLE ddtext INTO it_fieldcat_hd-seltext_l FROM dd03t WHERE tabname = l_estructura AND ddlanguage = sy-langu AND fieldname = it_fieldcat_hd-fieldname. CHECK sy-subrc EQ 0. it_fieldcat_hd-seltext_m = it_fieldcat_hd-seltext_l. it_fieldcat_hd-seltext_s = it_fieldcat_hd-seltext_l. MODIFY t_fc FROM it_fieldcat_hd. ENDLOOP. ENDFORM. "alv_catalogo *---------------------------------------------------------------------* * Form TOP_OF_LIST *---------------------------------------------------------------------* FORM top_of_list. FORMAT RESET. NEW-LINE. * WRITE: 'Status:', (10) space. * WRITE: '@01@' AS ICON NO-GAP, 'Contab.', (3) space . * WRITE: '@8A@' AS ICON NO-GAP, 'Cont.parcial.', (3) space . * WRITE: '@5C@' AS ICON NO-GAP, 'No corresponde', (3) space . * WRITE: '@5B@' AS ICON NO-GAP, 'Pendiente'. ENDFORM. "top_of_list *---------------------------------------------------------------------* * Form TOP_OF_PAGE *---------------------------------------------------------------------* FORM top_of_page. DATA: butxt TYPE t001-butxt. CHECK NOT 1 EQ 2. WRITE:/. * write: ' Cta.mayor'. * new-line. SELECT SINGLE butxt INTO butxt FROM t001 WHERE bukrs EQ p_bukrs. WRITE: ' Sociedad', p_bukrs, butxt. NEW-LINE. ENDFORM. "top_of_page *--------------------------------------------------------------------* * Form end_of_list *--------------------------------------------------------------------* FORM end_of_list. NEW-LINE. * PERFORM selecciones. NEW-LINE. ENDFORM. "end_of_list *---------------------------------------------------------------------* * FORM status_set * *---------------------------------------------------------------------* FORM status_set USING rt_extab TYPE slis_t_extab. DATA: lt_extab TYPE slis_t_extab WITH HEADER LINE. * APPEND LINES OF rt_extab TO lt_extab. * IF sy-tcode = c_views. * &excluir: 'MOD', 'OBSERVACIO', * 'BTT1', 'BTT2', 'BTT3', * 'NUEVA', 'SE16N', * 'RUN1', 'RUN2', 'RUN3', 'RUN4', * 'LOCALIZACI', 'ELIMINAR', 'ANULAR', * 'REFRESH'. * ELSE. * ENDIF. SET PF-STATUS 'STANDARD_FULLSCREEN' OF PROGRAM 'SAPLSLVC_FULLSCREEN' EXCLUDING lt_extab. ENDFORM. "status_set *---------------------------------------------------------------------* * FORM help * *---------------------------------------------------------------------* FORM help CHANGING po_partner. * Display Search dialog box for Contract Account. DATA: l_service LIKE sy-ucomm, select_value LIKE help_info-fldvalue, rsmdy_ret LIKE rsmdy, selection, help_infos LIKE help_info , dynpselect LIKE dselc OCCURS 0 WITH HEADER LINE, dynpvaluetab LIKE dval OCCURS 0 WITH HEADER LINE. help_infos-call = 'V'. help_infos-object = 'F'. help_infos-program = sy-repid. help_infos-dynpro = sy-dynnr. help_infos-tabname = 'YINTERSEG'. help_infos-fieldname = 'PARTNER'. * help_infos-fieldtype = 'CHAR'. * help_infos-fieldlng = '10'. * help_infos-spras = sy-langu. * help_infos-menufunct = 'HC'. ** help_infos-dynpprog = 'YEPCB0090'. ** help_infos-dynprofld = 'YINTERSEG-PARTNER'. * help_infos-pfkey = 'ST0220'. * help_infos-docuid = 'FE'. * * dynpselect-fldname = 'PARTNER'. * append dynpselect. * * Alle F4-Hilfe Aufrufe werden hier abgehandelt CALL FUNCTION 'DD_SHLP_CALL_FROM_DYNP' EXPORTING help_infos = help_infos IMPORTING selection = selection select_value = select_value rsmdy_ret = rsmdy_ret TABLES dynpselect = dynpselect dynpvaluetab = dynpvaluetab EXCEPTIONS OTHERS = 2. * SELECT SINGLE (all) INTO yinterseg FROM yinterseg * WHERE sgtxt EQ select_value. * IF sy-subrc NE 0. * CLEAR yinterseg. * ENDIF. ENDFORM. "help *--------------------------------------------------------------------* * Form actualizar_color *--------------------------------------------------------------------* FORM actualizar_color USING value(pi_color). DATA : it_color TYPE TABLE OF lvc_s_scol. DATA : wa_color TYPE lvc_s_scol. CLEAR: wa_color, it_color[]. MOVE pi_color TO wa_color-color-col. MOVE '0' TO wa_color-color-int. MOVE '0' TO wa_color-color-inv. MOVE 'GPART' TO wa_color-fname. APPEND wa_color TO it_color. t_list-color_cell = it_color[]. ENDFORM. "actualizar_color *---------------------------------------------------------------------* * FORM view_YINTERSEG * *---------------------------------------------------------------------* FORM view_yinterseg USING value(pi_action) value(pi_viewname) LIKE dd02v-tabname. pi_action = 'S'. CALL FUNCTION 'VIEW_MAINTENANCE_CALL' EXPORTING action = pi_action * CORR_NUMBER = ' ' * GENERATE_MAINT_TOOL_IF_MISSING = ' ' * SHOW_SELECTION_POPUP = ' ' view_name = pi_viewname * NO_WARNING_FOR_CLIENTINDEP = ' ' * RFC_DESTINATION_FOR_UPGRADE = ' ' * CLIENT_FOR_UPGRADE = ' ' * VARIANT_FOR_SELECTION = ' ' * COMPLEX_SELCONDS_USED = ' ' * CHECK_DDIC_MAINFLAG = ' ' * SUPPRESS_WA_POPUP = ' ' * TABLES * DBA_SELLIST = * EXCL_CUA_FUNCT = * EXCEPTIONS * CLIENT_REFERENCE = 1 * FOREIGN_LOCK = 2 * INVALID_ACTION = 3 * NO_CLIENTINDEPENDENT_AUTH = 4 * NO_DATABASE_FUNCTION = 5 * NO_EDITOR_FUNCTION = 6 * NO_SHOW_AUTH = 7 * NO_TVDIR_ENTRY = 8 * NO_UPD_AUTH = 9 * ONLY_SHOW_ALLOWED = 10 * SYSTEM_FAILURE = 11 * UNKNOWN_FIELD_IN_DBA_SELLIST = 12 * VIEW_NOT_FOUND = 13 * MAINTENANCE_PROHIBITED = 14 * OTHERS = 15 . IF sy-subrc <> 0. * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDIF. ENDFORM. "view_yinterseg *---------------------------------------------------------------------* * FORM layout * *---------------------------------------------------------------------* FORM layout_1. alv_layout-numc_sum = c_marked. " Permitir totalización en alv_layout-no_sumchoice = c_marked. " No permitir volver a sumar alv_layout-no_totalline = c_marked. " Sin linea de totalización alv_layout-no_subchoice = c_marked. " No permitir volvera a alv_layout-totals_before_items = c_marked. " Mostrar totales tras las ENDFORM. "layout_1 *---------------------------------------------------------------------* * FORM write_result_to_clipboard * *---------------------------------------------------------------------* FORM f_clipboard USING value(pi_txt). DATA: mylength TYPE i. DATA: myrc TYPE i. CLEAR data_itab[]. APPEND pi_txt TO data_itab. CALL METHOD cl_gui_frontend_services=>clipboard_export IMPORTING data = data_itab[] CHANGING rc = myrc EXCEPTIONS cntl_error = 1 error_no_gui = 2 OTHERS = 3. CALL METHOD cl_gui_frontend_services=>clipboard_import IMPORTING data = data_itab[] length = mylength. ENDFORM. "f_clipboard ************************************************************************ * User commands ************************************************************************ FORM user_command USING rf_ucomm LIKE sy-ucomm rs TYPE slis_selfield. * CASE rf_ucomm. * WHEN 'LOCALIZACI'. * $refresh. * WHEN 'REFRESH'. * PERFORM f_refresh. * $refresh. * WHEN OTHERS. * ENDCASE. CLEAR rf_ucomm. ENDFORM. "user_command *---------------------------------------------------------------------* * FORM f_load_t_list * *---------------------------------------------------------------------* FORM f_load_t_list TABLES t_list. CASE 'X'. WHEN p1. SELECT * INTO CORRESPONDING FIELDS OF TABLE t_list FROM csks WHERE bukrs EQ p_bukrs. WHEN p2. SELECT * INTO CORRESPONDING FIELDS OF TABLE t_list FROM tgsbt WHERE spras EQ sy-langu. WHEN p3. SELECT * INTO CORRESPONDING FIELDS OF TABLE t_list FROM t007s WHERE spras EQ sy-langu AND kalsm EQ 'TAXES'. WHEN p4. SELECT * INTO CORRESPONDING FIELDS OF TABLE t_list FROM lfa1. WHEN p5. SELECT * INTO CORRESPONDING FIELDS OF TABLE t_list FROM kna1. WHEN p6. SELECT * INTO CORRESPONDING FIELDS OF TABLE t_list FROM skb1 WHERE bukrs EQ p_bukrs. WHEN OTHERS. ENDCASE. ENDFORM. " f_load_t_list ************************************************************************ * Creation of the data for ALV: Field catalog, layout, sorting... ************************************************************************ FORM alv_build. DATA: ls_fieldcat TYPE slis_fieldcat_alv. DATA: lv_index TYPE sy-tabix. * PERFORM build_eventtab * USING t_events[]. CASE 'X'. WHEN p1. PERFORM alv_catalogo USING 'CSKS'. DELETE t_fc WHERE fieldname EQ 'KALSM'. WHEN p2. PERFORM alv_catalogo USING 'TGSBT'. WHEN p3. PERFORM alv_catalogo USING 'T007S'. WHEN p4. PERFORM alv_catalogo USING 'LFA1'. WHEN p5. PERFORM alv_catalogo USING 'KNA1'. WHEN p6. PERFORM alv_catalogo USING 'SKB1'. DELETE t_fc WHERE fieldname EQ 'MWSKZ'. WHEN OTHERS. ENDCASE. LOOP AT t_fc INTO ls_fieldcat. CASE ls_fieldcat-fieldname. WHEN 'KOSTL' OR 'KALSM' OR 'MWSKZ' OR 'TEXT1' OR 'GSBER' OR 'GTEXT' OR 'SAKNR' OR 'BUKRS' OR 'KUNNR' OR 'LIFNR' OR 'STCDT' OR 'STCD1' OR 'STCD2' OR 'STCEG'. WHEN OTHERS. DELETE t_fc. ENDCASE. ENDLOOP. * ls_fieldcat-fieldname = 'ICONO'. * ls_fieldcat-key = 'X'. * ls_fieldcat-col_pos = 1. * ls_fieldcat-icon = 'X'. * ls_fieldcat-hotspot = 'X'. * CLEAR: ls_fieldcat-ref_tabname. * ls_fieldcat-seltext_l = * ls_fieldcat-seltext_m = * ls_fieldcat-seltext_s = * ls_fieldcat-reptext_ddic = 'St'. * ls_fieldcat-intlen = 3. * APPEND ls_fieldcat TO t_fc. * * ls_fieldcat-fieldname = 'BOX'. * ls_fieldcat-no_out = 'X'. * ls_fieldcat-checkbox = 'X'. * ls_fieldcat-col_pos = 2. ** ls_fieldcat-hotspot = 'X'. * ls_fieldcat-intlen = 3. * APPEND ls_fieldcat TO t_fc. alv_layout-info_fieldname = 'COLOR'. alv_layout-coltab_fieldname = 'COLOR_CELL'. ENDFORM. "alv_build |
#4
|
|||
|
|||
yo tengo una solucion simple a ese problema.
dime cuantas semanas como maximo se debe presentar. create tu tabla con los datos necesarios .. ejemplo ti_final grupo_articulo pos001 pos002 pos003 pos004 pos005 . . . la logica es la siguiente trabajas con una tabla intermedia ejmplo ti_FECHA Donde TI_FECHA guarda la siguiente info TI_FECHA campo 1 campo 2(posicion) 012008 001 022008 002 032008 003 042008 004 052008 005 062008 006 o y tambien puede guarda años , meses ect [b][font=Tahoma]TI_FECHA campo 1 campo 2(posicion) 2008 001 2009 002 [b][font=Tahoma]2010 003 2011 004 2012 005 entonces cuando haces un loop a tu tabla interna q contenga meses o semanas... o lo q sea.. ejmplo ti_data. grupo_articulo fecha cantidad. 001 012008 2 001 022008 4 [b][font=Tahoma]001 032008 5 hacer una lectura a la tabla ti_fecha. y para colocar en los campos respectivos utilizas los asign... ejmplo read table ti_fecha fecha = '012008' capturas la posicion campo 2 = '001'... y aqui esta lo interesante los asign.. o field asignid.. CONCATENATE 'TI_DATA-POS' ti_fecha-POS INTO l_global_name. UNASSIGN <POS>. ASSIGN (l_global_name) TO <POS>. CHECK SY-SUBRC EQ 0. ti_final-grupo_articulo = TI_DATA-grupo_articulo. <POS> = TI_DATA-cantidad. collect ti_final. a la declaracion de esas variables es la siguiente. DATA: l_global_name TYPE string. FIELD-SYMBOLS: <POS> LIKE ZEMPSRES-VALTOT. espera q te sirva. |
#5
|
|||
|
|||
Ejemplo Tabla interna dinamica
Gracias a todos por sus respuestas, haciendo una combinacion de todos ellos y del post de ibecerra, pude hacer lo que necesitaba, aqui les dejo el codigo que genera la tabla interna dinamica, en este caso solo para los meses, cuestion de logica de programacion para hacer lo demas..
Saludos y gracias a todos de antemano . *&---------------------------------------------------------------------* *& Report ZPRUEBAS_ABAP *& *&---------------------------------------------------------------------* *& reporte para la creacion de una tabla interna dinamica. *& *&---------------------------------------------------------------------* REPORT ZPRUEBAS_ABAP. DATA: t_fieldcat TYPE lvc_t_fcat, t_fieldcat_wa TYPE LINE OF lvc_t_fcat. DATA: tabla TYPE REF TO data, EP_TABLE TYPE REF TO data, EP_line TYPE REF TO data. DATA: BEGIN OF MESES OCCURS 0, MES(12) TYPE C, END OF MESES. TYPE-POOLS: slis. FIELD-SYMBOLS: <l_table> TYPE ANY TABLE, <l_line> TYPE ANY, <l_field> TYPE ANY. START-OF-SELECTION. MESES-MES = 'ENERO'. APPEND MESES. MESES-MES = 'FEBRERO'. APPEND MESES. MESES-MES = 'MARZO'. APPEND MESES. MESES-MES = 'ABRIL'. APPEND MESES. MESES-MES = 'MAYO'. APPEND MESES. MESES-MES = 'JUNIO'. APPEND MESES. MESES-MES = 'JULIO'. APPEND MESES. MESES-MES = 'AGOSTO'. APPEND MESES. MESES-MES = 'SEPTIEMBRE'. APPEND MESES. MESES-MES = 'OCTUBRE'. APPEND MESES. MESES-MES = 'NOVIEMBRE'. APPEND MESES. MESES-MES = 'DICIEMBRE'. APPEND MESES. LOOP AT MESES. t_fieldcat_wa-col_pos = SY-TABIX. t_fieldcat_wa-fieldname = MESES-MES. APPEND t_fieldcat_wa TO t_fieldcat. ENDLOOP. CALL METHOD cl_alv_table_create=>create_dynamic_table EXPORTING it_fieldcatalog = t_fieldcat IMPORTING ep_table = tabla EXCEPTIONS GENERATE_SUBPOOL_DIR_FULL = 1 others = 2 . IF sy-subrc = 0. * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDIF. ASSIGN tabla->* TO <l_table>. CREATE DATA ep_line LIKE LINE OF <l_table>. ASSIGN ep_line->* TO <l_line>. LOOP AT MESES. assign component MESES-MES of structure <l_line> to <l_field>. <l_field> = SY-TABIX. ENDLOOP. insert <l_line> into table <l_table>. LOOP AT MESES. assign component meses-mes of structure <l_line> to <l_field>. write: / MESES-MES, ': ', <l_field>. ENDLOOP. |
Herramientas | Buscar en Tema |
Desplegado | |
|
|