MUNDOSAP

Regresar   MUNDOSAP > DESARROLLO > Programación ABAP IV
Nombre de Usuario
Contraseña
Home Descargas Registrar FAQ Miembros Calendario Buscar Temas de Hoy Marcar Foros Como Leídos




 
Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Viejo 06/11/08, 14:30:09
antonio_maltos antonio_maltos is offline
Junior Member
 
Fecha de Ingreso: ene 2008
Mensajes: 3
Unhappy 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.
Responder Con Cita
  #2  
Viejo 06/11/08, 14:51:22
Avatar de DavidXD_XD
DavidXD_XD DavidXD_XD is offline
Moderator
 
Fecha de Ingreso: ago 2006
Localización: Lima - Perú
Mensajes: 1,251
Hola .. yo hice algo parecido, colocando como parametro de entrada las columnas que quiero que tenga el reporte ...

__________________
David Carballido Córdova
Responder Con Cita
  #3  
Viejo 06/11/08, 15:55:49
ag2020 ag2020 is offline
Junior Member
 
Fecha de Ingreso: mar 2006
Mensajes: 5
************************************************************************
** 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
Responder Con Cita
  #4  
Viejo 07/11/08, 16:08:35
ibecerra
 
Mensajes: n/a
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.
Responder Con Cita
  #5  
Viejo 24/11/08, 21:22:13
antonio_maltos antonio_maltos is offline
Junior Member
 
Fecha de Ingreso: ene 2008
Mensajes: 3
Thumbs up 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.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Reglas de Mensajes
no puedes crear nuevos temas
no puedes responder temas
no puedes adjuntar archivos
no puedes editar tus mensajes

El código vB está On
Las caritas están On
Código [IMG] está On
Código HTML está Off
Saltar a Foro


Husos Horarios son GMT. La hora en este momento es 08:30:31.


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