2 Alv

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • SAPING
    Senior Member
    • may
    • 199

    #1

    2 Alv

    Hola.
    Estoy buscando la manera de mostrar 2 ALV LIST en pantalla.
    Estuve revisando y veo que hay funciones para hacerlo, el problema es que mi primer ALV es un TREE y las funciones BLOCK, por lo que vi, trabajan con LIST comunes.

    Entonces, tengo un ALV LIST TREE y debajo tengo que mostrar un LIST comun.
    Se puede???
    Como ??

    Gracias.
  • SAPING
    Senior Member
    • may
    • 199

    #2
    Solucionado!!

    Bueno gente.
    Mirando un std pude hacerlo.
    Les paso a explicar como:

    -Tenemos que cargar la tabla de Eventos con el evento 'END_OF_LIST'
    FORM eventos .
    DATA: ls_event TYPE slis_alv_event.
    *
    CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
    EXPORTING
    i_list_type = 0
    IMPORTING
    et_events = gt_events.
    READ TABLE gt_events WITH KEY name = slis_ev_end_of_list
    INTO ls_event.
    IF sy-subrc = 0.
    MOVE 'END_OF_LIST' TO ls_event-form.
    APPEND ls_event TO gt_events.
    ENDIF.
    ENDFORM. " EVENTOS


    - Luego, llamo a mi ALV TREE normalmente (con la tabla de eventos cargada)
    FORM listado.
    CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
    EXPORTING
    i_callback_program = g_repid
    is_layout = gs_layout
    it_fieldcat = gt_fieldcat[]
    IT_EVENTS = GT_EVENTS[]
    i_tabname_header = 'GT_HEADER'
    i_tabname_item = 'GT_ITEM'
    is_keyinfo = gs_key
    TABLES
    t_outtab_header = gt_header[]
    t_outtab_item = gt_item[]
    EXCEPTIONS
    program_error = 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.
    ENDFORM. " LISTADO


    - Y dentro del evento que declaramos, colocamos nuestro otro ALV:
    FORM end_of_list.
    DATA: text(20) TYPE c,
    gs_print TYPE slis_print_alv. "print settings

    DATA: lr_grid TYPE REF TO cl_salv_form_layout_grid,
    lr_abap TYPE REF TO cl_salv_form_abap.

    CREATE OBJECT lr_grid.
    CREATE OBJECT lr_abap.

    lr_grid->create_label(
    row = 1
    column = 20
    text = text-001 ). "LINEA DE TITULO QUE APARECERA ANTES DEL ALV LIST

    lr_grid->create_text(
    row = 1
    column = 52
    text = '' ).

    lr_grid->add_row( ).
    lr_abap->set_content( lr_grid ).
    lr_abap->display( ).
    PERFORM filcat2. "DEBEMOS GENERAR EL NUEVO LAYOUT
    gs_layout-list_append = 'X'.
    gs_print-no_new_page = 'X'.

    CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
    EXPORTING
    i_callback_program = g_repid
    i_structure_name = 'GT_ITEM'
    is_layout = gs_layout
    it_fieldcat = gt_fieldcat[]
    TABLES
    t_outtab = gt_item[].
    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. "END_OF_LIST


    - LISTO !!

    En pantalla saldra primero nuestro TREE y al final aparecera nuestro LIST normal.
    (use las mismas tablas ya que es una prueba solamente)



    slds.

    Comentario

    Trabajando...