Anuncio

Colapsar
No hay anuncio todavía.

table control dinamico

Colapsar
X
 
  • Filtrar
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes

  • table control dinamico

    Holaaa

    mi problema es el siguiente, tengo un table control donde el numero de columnas y de renglones no es fijo,
    aveces apareceran 4 renglones con 6 columnas otras veces solo 2 renglones con 4 columnas , etc etc.

    la otra situación es que por ejemplo aparecen 2 renglones y en el tercero tengo que poner los totales de las columnas, o si son 4 renglones en el 5° tengo que poner los totales de las columnas, si son 8 renglones en el renglon 9 apareceran los totales de las columnas y asi dependiendo del numero de renglones que vengan con información...

    alguna idea o sugerencia?
    Muchisimas gracias

  • #2
    Hola,
    te he hecho un ejemplito que creo que te vale para adaptarlo a tus necesidades.
    Aqui dependiendo del valor que tenga COLUMNA esconde la columna correspondiente.
    *Supongo que sabes el máximo nº de columnas que puede tener la tabla
    TYPES: BEGIN OF reg,
    col1(3),
    col2(3),
    col3(3),
    col4(3),
    col5(3),
    col6(3),
    END OF reg.
    DATA: ireg TYPE reg.

    DATA itab TYPE TABLE OF reg WITH HEADER LINE.

    DATA columna(1).
    CONTROLS: tcontrol TYPE TABLEVIEW USING SCREEN 9999.
    DATA cols LIKE LINE OF tcontrol-cols. " estructura de linea del TC

    * como ejemplo relleno la tabla con 6 columnas y 3 filas con el mismo valor
    DO 3 TIMES.
    itab-col1 = 1.
    itab-col2 = 2.
    itab-col3 = 3.
    itab-col4 = 4.
    itab-col5 = 5.
    itab-col6 = 6.
    APPEND itab.
    CLEAR itab.
    ENDDO.
    CLEAR ireg.
    *hago la suma de las filas
    LOOP AT itab.
    ireg-col1 = ireg-col1 + itab-col1.
    ireg-col2 = ireg-col2 + itab-col2.
    ireg-col3 = ireg-col3 + itab-col3.
    ireg-col4 = ireg-col4 + itab-col4.
    ireg-col5 = ireg-col5 + itab-col5.
    ireg-col6 = ireg-col6 + itab-col6.
    ENDLOOP.
    MOVE-CORRESPONDING ireg TO itab.
    APPEND itab.
    CLEAR itab.
    CALL SCREEN 9999.


    *---------------------------------------------------------------------*
    * MODULE modifica_tcontrol INPUT *
    *---------------------------------------------------------------------*
    * dejo la columna que corresponda invisible
    *---------------------------------------------------------------------*
    MODULE modifica_tcontrol INPUT.
    CASE columna.
    WHEN '1'.
    LOOP AT tcontrol-cols INTO cols.
    CASE cols-screen-name.
    WHEN 'ITAB-COL1'.
    cols-invisible = 1.
    WHEN OTHERS.
    cols-invisible = 0.
    ENDCASE.
    MODIFY tcontrol-cols FROM cols.
    ENDLOOP.
    WHEN '2'.
    LOOP AT tcontrol-cols INTO cols.
    CASE cols-screen-name.
    WHEN 'ITAB-COL2'.
    cols-invisible = 1.
    WHEN OTHERS.
    cols-invisible = 0.
    ENDCASE.
    MODIFY tcontrol-cols FROM cols.
    ENDLOOP.
    WHEN '3'.
    LOOP AT tcontrol-cols INTO cols.
    CASE cols-screen-name.
    WHEN 'ITAB-COL3'.
    cols-invisible = 1.
    WHEN OTHERS.
    cols-invisible = 0.
    ENDCASE.
    MODIFY tcontrol-cols FROM cols.
    ENDLOOP.
    WHEN '4'.
    LOOP AT tcontrol-cols INTO cols.
    CASE cols-screen-name.
    WHEN 'ITAB-COL4'.
    cols-invisible = 1.
    WHEN OTHERS.
    cols-invisible = 0.
    ENDCASE.
    MODIFY tcontrol-cols FROM cols.
    ENDLOOP.
    WHEN '5'.
    LOOP AT tcontrol-cols INTO cols.
    CASE cols-screen-name.
    WHEN 'ITAB-COL5'.
    cols-invisible = 1.
    WHEN OTHERS.
    cols-invisible = 0.
    ENDCASE.
    MODIFY tcontrol-cols FROM cols.
    ENDLOOP.
    WHEN '6'.
    LOOP AT tcontrol-cols INTO cols.
    CASE cols-screen-name.
    WHEN 'COL6'.
    cols-invisible = 1.
    WHEN OTHERS.
    cols-invisible = 0.
    ENDCASE.
    MODIFY tcontrol-cols FROM cols.
    ENDLOOP.
    WHEN OTHERS.
    LOOP AT tcontrol-cols INTO cols.
    cols-invisible = 0.
    ENDLOOP.
    ENDCASE.
    ENDMODULE. " modifica_tcontrol INPUT

    Comentario

    Trabajando...
    X