2 Grid ALV y detalles

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • ayasir
    Junior Member
    • sep
    • 7

    #1

    2 Grid ALV y detalles

    Hola, necesito que aparezcan 2 ALV en un reporte, esto es, quiero que pararezca uno con una informacion y abajo de ese quisiera otro con otra informacion. Tambien quiero saber como puedo hacer que al darle click a un campo del grid me aparezca una ventanita con un alv tipo pop up que despliegue algunos datos de ese campo.

    Espero puedan ayudarme.

    Muchas Gracias de antemano..
  • ibecerra

    #2
    hola lo que deseas es tener en una pantalla donde 2 alv
    bueno eso lo puedes hacer con la funcion
    si no entiendes y deseas el programa completo dame tu correo y te lo paso

    *------------------------------------------------*
    * Inicializamos el Bloque de la Lista ALV *
    *------------------------------------------------*
    CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_INIT'
    EXPORTING
    I_callback_program = w_repid
    I_CALLBACK_PF_STATUS_SET = 'SET_STATUS'
    I_CALLBACK_USER_COMMAND = 'USER_COMMAND'.
    w_print-no_print_listinfos = 'X'.

    PERFORM fieldcat_init USING i_fieldcat_alv[].

    *------------------------------------------------*
    * Imprimimos los Bloques del ALV *
    *------------------------------------------------*
    w_print-reserve_lines = 1.
    CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_DISPLAY'
    EXPORTING
    IS_PRINT = w_print.

    Donde
    Fielcat_init


    * Monto IVA
    CLEAR ls_fieldcat.
    ls_fieldcat-tabname = 'IT_DATA'.
    ls_fieldcat-fieldname = 'MONTOIVA'.
    ls_fieldcat-seltext_m = text-h20.
    ls_fieldcat-outputlen = 20.
    ls_fieldcat-just = 'R'.
    ls_fieldcat-do_sum = 'X'.
    ls_fieldcat-datatype = 'CURR'.
    APPEND ls_fieldcat TO rt_fieldcat.

    * Retención IVA
    CLEAR ls_fieldcat.
    ls_fieldcat-tabname = 'IT_DATA'.
    ls_fieldcat-fieldname = 'RETENIVA'.
    ls_fieldcat-seltext_m = text-h21.
    ls_fieldcat-outputlen = 20.
    ls_fieldcat-just = 'R'.
    ls_fieldcat-do_sum = 'X'.
    ls_fieldcat-datatype = 'CURR'.
    APPEND ls_fieldcat TO rt_fieldcat.

    * IVA Percibido
    CLEAR ls_fieldcat.
    ls_fieldcat-tabname = 'IT_DATA'.
    ls_fieldcat-fieldname = 'IVAPER'.
    ls_fieldcat-seltext_m = text-h22.
    ls_fieldcat-outputlen = 20.
    ls_fieldcat-just = 'R'.
    ls_fieldcat-do_sum = 'X'.
    ls_fieldcat-datatype = 'CURR'.
    APPEND ls_fieldcat TO rt_fieldcat.

    * PERFORM eventtab_build USING gt_events[].

    CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
    EXPORTING
    is_layout = w_layout
    it_fieldcat = rt_fieldcat[]
    it_events = i_events[]
    i_tabname = 'IT_DATA'
    TABLES
    t_outtab = IT_DATA
    EXCEPTIONS
    PROGRAM_ERROR = 1
    MAXIMUM_OF_APPENDS_REACHED = 2
    OTHERS = 3.


    CLEAR ls_fieldcat.
    ls_fieldcat-tabname = 'IT_RESUMEN'.
    ls_fieldcat-fieldname = 'CASILLERO2'.
    ls_fieldcat-seltext_s = text-T04.
    ls_fieldcat-outputlen = 09.
    ls_fieldcat-just = 'C'.
    APPEND ls_fieldcat TO RE_FIELDCAT.
    * Subtotal
    CLEAR ls_fieldcat.
    ls_fieldcat-tabname = 'IT_RESUMEN'.
    ls_fieldcat-fieldname = 'SUBTOTAL2'.
    ls_fieldcat-seltext_s = text-T05.
    ls_fieldcat-outputlen = 20.
    ls_fieldcat-just = 'R'.
    ls_fieldcat-datatype = 'CURR'.
    ls_fieldcat-no_zero = 'X'.
    APPEND ls_fieldcat TO RE_FIELDCAT.
    * Debito Fiscal (IVA)debitofis
    CLEAR ls_fieldcat.
    ls_fieldcat-tabname = 'IT_RESUMEN'.
    ls_fieldcat-fieldname = 'DEBITOFIS'.
    ls_fieldcat-seltext_s = text-T06.
    ls_fieldcat-outputlen = 20.
    ls_fieldcat-just = 'R'.
    ls_fieldcat-datatype = 'CURR'.
    ls_fieldcat-no_zero = 'X'.
    APPEND ls_fieldcat TO RE_FIELDCAT.

    PERFORM build_eventtab1 USING X_EVENTS[].

    CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
    EXPORTING
    is_layout = w_layout
    it_fieldcat = RE_FIELDCAT[]
    it_events = X_EVENTS[]
    i_tabname = 'IT_RESUMEN'
    tables
    t_outtab = it_resumen
    EXCEPTIONS
    PROGRAM_ERROR = 1
    MAXIMUM_OF_APPENDS_REACHED = 2
    OTHERS = 3.

    Comentario

    • ayasir
      Junior Member
      • sep
      • 7

      #3
      Hola Muchas Gracias!!!

      Si por favor pasame el programa, mi correo es ibaa_29@hotmail.com

      Muchas Gracias por tu atención y ayuda.

      Comentario

      • darona
        Member
        • jun
        • 44

        #4
        ¿Podrías mandarme a mi también el código?
        Mi mail es david.romay@gmail.com

        Gracias.

        Comentario

        • ibecerra

          #5
          hay les mande la informacion solicitada
          saludos coordiales

          Comentario

          • ayasir
            Junior Member
            • sep
            • 7

            #6
            Originalmente publicado por ibecerra
            hola lo que deseas es tener en una pantalla donde 2 alv
            bueno eso lo puedes hacer con la funcion
            si no entiendes y deseas el programa completo dame tu correo y te lo paso

            *------------------------------------------------*
            * Inicializamos el Bloque de la Lista ALV *
            *------------------------------------------------*
            CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_INIT'
            EXPORTING
            I_callback_program = w_repid
            I_CALLBACK_PF_STATUS_SET = 'SET_STATUS'
            I_CALLBACK_USER_COMMAND = 'USER_COMMAND'.
            w_print-no_print_listinfos = 'X'.

            PERFORM fieldcat_init USING i_fieldcat_alv[].

            *------------------------------------------------*
            * Imprimimos los Bloques del ALV *
            *------------------------------------------------*
            w_print-reserve_lines = 1.
            CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_DISPLAY'
            EXPORTING
            IS_PRINT = w_print.

            Donde
            Fielcat_init


            * Monto IVA
            CLEAR ls_fieldcat.
            ls_fieldcat-tabname = 'IT_DATA'.
            ls_fieldcat-fieldname = 'MONTOIVA'.
            ls_fieldcat-seltext_m = text-h20.
            ls_fieldcat-outputlen = 20.
            ls_fieldcat-just = 'R'.
            ls_fieldcat-do_sum = 'X'.
            ls_fieldcat-datatype = 'CURR'.
            APPEND ls_fieldcat TO rt_fieldcat.

            * Retención IVA
            CLEAR ls_fieldcat.
            ls_fieldcat-tabname = 'IT_DATA'.
            ls_fieldcat-fieldname = 'RETENIVA'.
            ls_fieldcat-seltext_m = text-h21.
            ls_fieldcat-outputlen = 20.
            ls_fieldcat-just = 'R'.
            ls_fieldcat-do_sum = 'X'.
            ls_fieldcat-datatype = 'CURR'.
            APPEND ls_fieldcat TO rt_fieldcat.

            * IVA Percibido
            CLEAR ls_fieldcat.
            ls_fieldcat-tabname = 'IT_DATA'.
            ls_fieldcat-fieldname = 'IVAPER'.
            ls_fieldcat-seltext_m = text-h22.
            ls_fieldcat-outputlen = 20.
            ls_fieldcat-just = 'R'.
            ls_fieldcat-do_sum = 'X'.
            ls_fieldcat-datatype = 'CURR'.
            APPEND ls_fieldcat TO rt_fieldcat.

            * PERFORM eventtab_build USING gt_events[].

            CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
            EXPORTING
            is_layout = w_layout
            it_fieldcat = rt_fieldcat[]
            it_events = i_events[]
            i_tabname = 'IT_DATA'
            TABLES
            t_outtab = IT_DATA
            EXCEPTIONS
            PROGRAM_ERROR = 1
            MAXIMUM_OF_APPENDS_REACHED = 2
            OTHERS = 3.


            CLEAR ls_fieldcat.
            ls_fieldcat-tabname = 'IT_RESUMEN'.
            ls_fieldcat-fieldname = 'CASILLERO2'.
            ls_fieldcat-seltext_s = text-T04.
            ls_fieldcat-outputlen = 09.
            ls_fieldcat-just = 'C'.
            APPEND ls_fieldcat TO RE_FIELDCAT.
            * Subtotal
            CLEAR ls_fieldcat.
            ls_fieldcat-tabname = 'IT_RESUMEN'.
            ls_fieldcat-fieldname = 'SUBTOTAL2'.
            ls_fieldcat-seltext_s = text-T05.
            ls_fieldcat-outputlen = 20.
            ls_fieldcat-just = 'R'.
            ls_fieldcat-datatype = 'CURR'.
            ls_fieldcat-no_zero = 'X'.
            APPEND ls_fieldcat TO RE_FIELDCAT.
            * Debito Fiscal (IVA)debitofis
            CLEAR ls_fieldcat.
            ls_fieldcat-tabname = 'IT_RESUMEN'.
            ls_fieldcat-fieldname = 'DEBITOFIS'.
            ls_fieldcat-seltext_s = text-T06.
            ls_fieldcat-outputlen = 20.
            ls_fieldcat-just = 'R'.
            ls_fieldcat-datatype = 'CURR'.
            ls_fieldcat-no_zero = 'X'.
            APPEND ls_fieldcat TO RE_FIELDCAT.

            PERFORM build_eventtab1 USING X_EVENTS[].

            CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
            EXPORTING
            is_layout = w_layout
            it_fieldcat = RE_FIELDCAT[]
            it_events = X_EVENTS[]
            i_tabname = 'IT_RESUMEN'
            tables
            t_outtab = it_resumen
            EXCEPTIONS
            PROGRAM_ERROR = 1
            MAXIMUM_OF_APPENDS_REACHED = 2
            OTHERS = 3.
            Disculpa, lo que pasa es que en este ejemplo que me diste, ya estuve checando como funciona y si puede poner varios alv, pero son LIST, y yo quisiera poner varios ALV GRID, pero no he encontrado alguna forma de acerlo, espero me puedas ayudar...

            Comentario

            • ibecerra

              #7
              bueno lo que yo haria en tu caso seria alv orientado a objetos es decir
              en un dympro pongo varios contenedores, dependiendo de los alvs q necesite

              Comentario

              • ayasir
                Junior Member
                • sep
                • 7

                #8
                Lo que pasa es que lo quiero hacer en un reporte y no se como usar alv orientado a objetos.

                Comentario

                • garbe
                  Junior Member
                  • ago
                  • 1

                  #9
                  Reporte con 2 alv

                  hola pueden pasarme el programa completo tambien a mi, es que preciso tengo este mismo requerimiento ahora. Mi correo es jaimegb_99@yahoo.com.

                  Gracias por la colaboración.

                  Comentario

                  • DavidXD_XD
                    Moderator
                    • ago
                    • 1255

                    #10
                    Hola puedes usar como dicen los ALV orientados a objetos, no son tan dificiles de entender dale una mirada a los programas que empiezan con BCALV*, ahora si quieres 2 ALV en un mismo reporte lo puedes hacer utilizando la clase CL_GUI_SPLITTER_CONTAINER, esa clase permite partir el contenedor en las partes que tu quieras y dentro de ellas colocas un ALV y cada uno es independiente .... espero te sirva
                    David Carballido Córdova

                    Comentario

                    • vickxo
                      Senior Member
                      • nov
                      • 118

                      #11
                      Hola, he aqui un ejemplo...

                      Debes de crear dos dynpros 0001 y 0100 con estos condigos:
                      Con los containers:

                      CONTEINER1
                      CONTEINER2

                      Seguro funciona.

                      0001
                      PROCESS BEFORE OUTPUT.
                      * MODULE STATUS_0100.
                      MODULE pbo.
                      *
                      PROCESS AFTER INPUT.
                      * MODULE USER_COMMAND_0100.
                      MODULE pai.

                      MODULE user_command_0001.



                      0100

                      PROCESS BEFORE OUTPUT.
                      * MODULE STATUS_0100.
                      MODULE pbo.
                      *
                      PROCESS AFTER INPUT.
                      * MODULE USER_COMMAND_0100.
                      MODULE pai.

                      Codigo de los modules
                      REPORT test.
                      TYPE-POOLS: icon.

                      DATA: ok_code LIKE sy-ucomm.


                      DATA gs_variant TYPE disvariant.
                      DATA: gt_fieldcat TYPE lvc_t_fcat.
                      DATA: gs_layout TYPE lvc_s_layo.
                      DATA: gs_fieldcat TYPE lvc_s_fcat.
                      DATA: BEGIN OF gt_sflight OCCURS 0.
                      INCLUDE STRUCTURE sflight.
                      DATA: carrname LIKE scarr-carrname,
                      cell TYPE lvc_t_styl,
                      END OF gt_sflight.

                      DATA: BEGIN OF it_sflight OCCURS 0.
                      INCLUDE STRUCTURE sflight.
                      DATA: END OF it_sflight.

                      DATA: BEGIN OF gt_sflight1 OCCURS 0.
                      INCLUDE STRUCTURE sflight.
                      DATA: carrname LIKE scarr-carrname,
                      END OF gt_sflight1,

                      * g_container TYPE scrfname VALUE 'BCALV_GRID_DEMO_0100_CONT1',
                      g_container TYPE scrfname VALUE 'CONTEINER1',
                      g_container2 TYPE scrfname VALUE 'CONTEINER2',

                      grid1 TYPE REF TO cl_gui_alv_grid,
                      grid2 TYPE REF TO cl_gui_alv_grid,

                      g_custom_container TYPE REF TO cl_gui_custom_container,
                      g_custom_container2 TYPE REF TO cl_gui_custom_container.

                      CLASS lcl_event_receiver DEFINITION DEFERRED.
                      DATA: o_event_receiver TYPE REF TO lcl_event_receiver.

                      *---------------------------------------------------------------------*
                      * CLASS lcl_event_receiver DEFINITION
                      *---------------------------------------------------------------------*
                      * ........ *
                      *---------------------------------------------------------------------*
                      CLASS lcl_event_receiver DEFINITION.
                      PUBLIC SECTION.
                      METHODS:
                      handle_toolbar FOR EVENT toolbar OF cl_gui_alv_grid
                      IMPORTING
                      e_object e_interactive,
                      handle_user_command FOR EVENT user_command OF cl_gui_alv_grid
                      IMPORTING e_ucomm.
                      ENDCLASS.

                      *---------------------------------------------------------------------*
                      * class lcl_event_receiver implementation
                      *---------------------------------------------------------------------*
                      CLASS lcl_event_receiver IMPLEMENTATION.
                      METHOD handle_toolbar.
                      * manejador del evento para el evento toolbar

                      CONSTANTS:
                      * constantes de botón
                      c_button_normal TYPE i VALUE 0,
                      c_menu_and_default_button TYPE i VALUE 1,
                      c_menu TYPE i VALUE 2,
                      c_separator TYPE i VALUE 3,
                      c_radio_button TYPE i VALUE 4,
                      c_checkbox TYPE i VALUE 5,
                      c_menu_entry TYPE i VALUE 6.

                      DATA:
                      ls_toolbar TYPE stb_button.

                      * añade un separador
                      CLEAR ls_toolbar.
                      MOVE c_separator TO ls_toolbar-butn_type..
                      APPEND ls_toolbar TO e_object->mt_toolbar.

                      * append a new button that to the toolbar. use e_object of
                      * event toolbar.e_object is of type cl_alv_event_toolbar_set.
                      * this class has one attribute mt_toolbar which is of table type
                      * ttb_button.
                      * the structure is stb_button
                      *******Borrado de Botones Estandar:
                      DELETE e_object->mt_toolbar WHERE ( function EQ '&MB_SUM'
                      OR function EQ '&MB_SUBTOT'
                      OR function EQ '&GRAPH'
                      OR function EQ '&&SEP07'
                      OR function EQ '&INFO' ).
                      ********
                      CLEAR ls_toolbar.
                      MOVE 'LOG' TO ls_toolbar-function.
                      MOVE icon_error_protocol TO ls_toolbar-icon.
                      MOVE 'Log Errores' TO ls_toolbar-quickinfo.
                      MOVE 'Log' TO ls_toolbar-text.
                      MOVE ' ' TO ls_toolbar-disabled.
                      APPEND ls_toolbar TO e_object->mt_toolbar.
                      ENDMETHOD.

                      METHOD handle_user_command.
                      * handle own functions defined in the toolbar
                      CASE e_ucomm.
                      WHEN 'CHANGE'.
                      LEAVE TO SCREEN 0.
                      WHEN 'LOG'.
                      CALL TRANSACTION 'SM35'.
                      ENDCASE.

                      ENDMETHOD.
                      ENDCLASS.

                      *---------------------------------------------------------------------*
                      * MAIN *
                      *---------------------------------------------------------------------*
                      START-OF-SELECTION.
                      DATA: wa_sflight LIKE gt_sflight.
                      DATA: flag1(1), flag2(1).
                      DATA: seatsocc LIKE gt_sflight-seatsocc.
                      DATA: planetype LIKE gt_sflight-planetype.

                      SELECT * INTO CORRESPONDING FIELDS OF TABLE it_sflight FROM sflight.

                      LOOP AT it_sflight.
                      MOVE-CORRESPONDING it_sflight TO gt_sflight.
                      APPEND gt_sflight.
                      ENDLOOP.
                      SORT gt_sflight BY planetype.

                      * SEATSMAX
                      *PLANETYPE
                      LOOP AT gt_sflight INTO wa_sflight.
                      IF seatsocc NE wa_sflight-seatsocc
                      AND planetype NE wa_sflight-planetype.
                      CLEAR wa_sflight-seatsmax.
                      MOVE '1' TO wa_sflight-seatsmax.
                      MODIFY gt_sflight FROM wa_sflight.
                      MOVE: wa_sflight-seatsocc TO seatsocc,
                      wa_sflight-planetype TO planetype.
                      ELSEIF seatsocc EQ wa_sflight-seatsocc
                      AND planetype NE wa_sflight-planetype.
                      CLEAR wa_sflight-seatsmax.
                      MOVE '1' TO wa_sflight-seatsmax.
                      MODIFY gt_sflight FROM wa_sflight.
                      MOVE: wa_sflight-seatsocc TO seatsocc,
                      wa_sflight-planetype TO planetype.
                      ELSEIF seatsocc NE wa_sflight-seatsocc
                      AND planetype EQ wa_sflight-planetype.
                      CLEAR wa_sflight-seatsmax.
                      MOVE '1' TO wa_sflight-seatsmax.
                      MODIFY gt_sflight FROM wa_sflight.
                      MOVE: wa_sflight-seatsocc TO seatsocc,
                      wa_sflight-planetype TO planetype.
                      ELSE.
                      MOVE: wa_sflight-seatsocc TO seatsocc,
                      wa_sflight-planetype TO planetype.
                      CLEAR wa_sflight-seatsmax.
                      MOVE '0' TO wa_sflight-seatsmax.
                      MODIFY gt_sflight FROM wa_sflight.
                      ENDIF.
                      ENDLOOP.


                      CLEAR gs_fieldcat.
                      gs_fieldcat-fieldname = 'CARRID'.
                      gs_fieldcat-ref_table = 'SFLIGHT'.
                      gs_fieldcat-outputlen = '5'.
                      gs_fieldcat-key = 'X'.
                      * gs_fieldcat-edit = 'X'.
                      gs_fieldcat-auto_value = 'X'.
                      APPEND gs_fieldcat TO gt_fieldcat.

                      CLEAR gs_fieldcat.
                      gs_fieldcat-fieldname = 'CARRNAME'.
                      gs_fieldcat-ref_table = 'SCARR'.
                      gs_fieldcat-outputlen = '12'.
                      gs_fieldcat-key = 'X'.
                      gs_fieldcat-auto_value = 'X'.
                      APPEND gs_fieldcat TO gt_fieldcat.

                      CLEAR gs_fieldcat.
                      gs_fieldcat-fieldname = 'CONNID'.
                      gs_fieldcat-ref_table = 'SFLIGHT'.
                      gs_fieldcat-key = 'X'.
                      * gs_fieldcat-edit = 'X'.
                      gs_fieldcat-auto_value = 'X'.
                      APPEND gs_fieldcat TO gt_fieldcat.

                      CLEAR gs_fieldcat.
                      gs_fieldcat-fieldname = 'FLDATE'.
                      gs_fieldcat-ref_table = 'SFLIGHT'.
                      * gs_fieldcat-edit = 'X'.
                      gs_fieldcat-key = 'X'.
                      APPEND gs_fieldcat TO gt_fieldcat.

                      CLEAR gs_fieldcat.
                      gs_fieldcat-fieldname = 'SEATSOCC'.
                      gs_fieldcat-ref_table = 'SFLIGHT'.
                      * gs_fieldcat-edit = 'X'.
                      APPEND gs_fieldcat TO gt_fieldcat.

                      CLEAR gs_fieldcat.
                      gs_fieldcat-fieldname = 'PLANETYPE'.
                      gs_fieldcat-ref_table = 'SFLIGHT'.
                      * gs_fieldcat-edit = 'X'.
                      APPEND gs_fieldcat TO gt_fieldcat.

                      CLEAR gs_fieldcat.
                      gs_fieldcat-fieldname = 'SEATSMAX'.
                      gs_fieldcat-ref_table = 'SFLIGHT'.
                      APPEND gs_fieldcat TO gt_fieldcat.



                      CLEAR gs_fieldcat.
                      gs_fieldcat-fieldname = 'PAYMENTSUM'.
                      gs_fieldcat-datatype = 'CURR'.
                      gs_fieldcat-coltext = text-004.
                      gs_fieldcat-cfieldname = 'CURRENCY'.
                      * gs_fieldcat-edit = 'X'.
                      APPEND gs_fieldcat TO gt_fieldcat.

                      CLEAR gs_fieldcat.
                      gs_fieldcat-fieldname = 'PRICE'.
                      gs_fieldcat-ref_table = 'SFLIGHT'.
                      gs_fieldcat-cfieldname = 'CURRENCY'.
                      * gs_fieldcat-edit = 'X'.
                      APPEND gs_fieldcat TO gt_fieldcat.

                      CLEAR gs_fieldcat.
                      gs_fieldcat-fieldname = 'CURRENCY'.
                      gs_fieldcat-ref_table = 'SFLIGHT'.
                      * gs_fieldcat-edit = 'X'.
                      gs_fieldcat-checktable = '!'.
                      gs_fieldcat-auto_value = 'X'.
                      APPEND gs_fieldcat TO gt_fieldcat.

                      gs_variant-report = sy-repid.



                      * CALL SCREEN 100.
                      CALL SCREEN 0001.

                      *---------------------------------------------------------------------*
                      * MODULE PBO OUTPUT *
                      *---------------------------------------------------------------------*
                      MODULE pbo OUTPUT.
                      PERFORM pbo_output.
                      ENDMODULE.

                      *---------------------------------------------------------------------*
                      * MODULE PAI INPUT *
                      *---------------------------------------------------------------------*
                      MODULE pai INPUT.
                      PERFORM pai_input.
                      ENDMODULE. " F4

                      *&---------------------------------------------------------------------*
                      *& Form pbo_output
                      *&---------------------------------------------------------------------*
                      * text
                      *----------------------------------------------------------------------*
                      FORM pbo_output.
                      SET PF-STATUS 'MAIN100'.
                      * SET PF-STATUS 'MAIN0001'.
                      SET TITLEBAR '001'.
                      IF g_custom_container IS INITIAL.
                      IF sy-batch IS INITIAL.
                      CREATE OBJECT g_custom_container
                      EXPORTING container_name = g_container.

                      ENDIF.
                      CREATE OBJECT grid1
                      EXPORTING i_parent = g_custom_container.

                      CREATE OBJECT o_event_receiver.

                      SET HANDLER o_event_receiver->handle_user_command FOR grid1.
                      SET HANDLER o_event_receiver->handle_toolbar FOR grid1.
                      gs_layout-stylefname = 'CELL'.
                      gs_layout-no_toolbar = ' '.
                      gs_layout-grid_title = 'Facturas Contabilizadas en SAP'.
                      CALL METHOD grid1->set_table_for_first_display
                      EXPORTING
                      i_save = 'A'
                      is_layout = gs_layout
                      CHANGING it_fieldcatalog = gt_fieldcat
                      it_outtab = gt_sflight[].
                      CALL METHOD grid1->set_toolbar_interactive.



                      ENDIF.
                      IF g_custom_container2 IS INITIAL.
                      IF sy-batch IS INITIAL.
                      CREATE OBJECT g_custom_container2
                      EXPORTING container_name = g_container2.

                      ENDIF.
                      CREATE OBJECT grid2
                      EXPORTING i_parent = g_custom_container2.

                      * CREATE OBJECT o_event_receiver.

                      SET HANDLER o_event_receiver->handle_user_command FOR grid2.
                      SET HANDLER o_event_receiver->handle_toolbar FOR grid2.

                      gs_layout-stylefname = 'CELL'.
                      gs_layout-grid_title = 'Facturas Anuladas en SAP'.
                      CALL METHOD grid2->set_table_for_first_display
                      EXPORTING
                      i_save = 'A'
                      is_layout = gs_layout
                      CHANGING it_fieldcatalog = gt_fieldcat
                      it_outtab = gt_sflight[].
                      CALL METHOD grid2->set_toolbar_interactive.

                      ENDIF.

                      ENDFORM. " pbo_output

                      *&---------------------------------------------------------------------*
                      *& Form pai_input
                      *&---------------------------------------------------------------------*
                      * text
                      *----------------------------------------------------------------------*
                      FORM pai_input.
                      DATA: l_valid(1) TYPE c.

                      ok_code = sy-ucomm.

                      CASE ok_code.
                      WHEN 'SAVE'.
                      CALL METHOD grid1->check_changed_data IMPORTING e_valid = l_valid.
                      IF l_valid = 'X'.
                      MESSAGE i000(0k) WITH text-009.
                      ELSE.
                      MESSAGE i000(0k) WITH text-010.
                      ENDIF.
                      WHEN 'CHANGE'.
                      IF grid1->is_ready_for_input( ) = 0.
                      CALL METHOD grid1->set_ready_for_input EXPORTING
                      i_ready_for_input = 1.
                      ELSE.
                      CALL METHOD grid1->check_changed_data
                      IMPORTING e_valid = l_valid.
                      IF l_valid = 'X'.
                      CALL METHOD grid1->set_ready_for_input EXPORTING
                      i_ready_for_input = 0.
                      ENDIF.
                      ENDIF.
                      WHEN 'EXIT'.
                      SET SCREEN 0.
                      LEAVE SCREEN.
                      ENDCASE.
                      CLEAR ok_code.
                      ENDFORM. " pai_input
                      *&---------------------------------------------------------------------*
                      *& Module STATUS_0100 OUTPUT
                      *&---------------------------------------------------------------------*
                      * text
                      *----------------------------------------------------------------------*
                      MODULE status_0100 OUTPUT.
                      * SET PF-STATUS 'xxxxxxxx'.
                      * SET TITLEBAR 'xxx'.

                      ENDMODULE. " STATUS_0100 OUTPUT

                      Te pongo el codigo principal:

                      REPORT test.
                      TYPE-POOLS: icon.

                      DATA: ok_code LIKE sy-ucomm.


                      DATA gs_variant TYPE disvariant.
                      DATA: gt_fieldcat TYPE lvc_t_fcat.
                      DATA: gs_layout TYPE lvc_s_layo.
                      DATA: gs_fieldcat TYPE lvc_s_fcat.
                      DATA: BEGIN OF gt_sflight OCCURS 0.
                      INCLUDE STRUCTURE sflight.
                      DATA: carrname LIKE scarr-carrname,
                      cell TYPE lvc_t_styl,
                      END OF gt_sflight.

                      DATA: BEGIN OF it_sflight OCCURS 0.
                      INCLUDE STRUCTURE sflight.
                      DATA: END OF it_sflight.

                      DATA: BEGIN OF gt_sflight1 OCCURS 0.
                      INCLUDE STRUCTURE sflight.
                      DATA: carrname LIKE scarr-carrname,
                      END OF gt_sflight1,

                      * g_container TYPE scrfname VALUE 'BCALV_GRID_DEMO_0100_CONT1',
                      g_container TYPE scrfname VALUE 'CONTEINER1',
                      g_container2 TYPE scrfname VALUE 'CONTEINER2',

                      grid1 TYPE REF TO cl_gui_alv_grid,
                      grid2 TYPE REF TO cl_gui_alv_grid,

                      g_custom_container TYPE REF TO cl_gui_custom_container,
                      g_custom_container2 TYPE REF TO cl_gui_custom_container.

                      CLASS lcl_event_receiver DEFINITION DEFERRED.
                      DATA: o_event_receiver TYPE REF TO lcl_event_receiver.

                      *---------------------------------------------------------------------*
                      * CLASS lcl_event_receiver DEFINITION
                      *---------------------------------------------------------------------*
                      * ........ *
                      *---------------------------------------------------------------------*
                      CLASS lcl_event_receiver DEFINITION.
                      PUBLIC SECTION.
                      METHODS:
                      handle_toolbar FOR EVENT toolbar OF cl_gui_alv_grid
                      IMPORTING
                      e_object e_interactive,
                      handle_user_command FOR EVENT user_command OF cl_gui_alv_grid
                      IMPORTING e_ucomm.
                      ENDCLASS.

                      *---------------------------------------------------------------------*
                      * class lcl_event_receiver implementation
                      *---------------------------------------------------------------------*
                      CLASS lcl_event_receiver IMPLEMENTATION.
                      METHOD handle_toolbar.
                      * manejador del evento para el evento toolbar

                      CONSTANTS:
                      * constantes de botón
                      c_button_normal TYPE i VALUE 0,
                      c_menu_and_default_button TYPE i VALUE 1,
                      c_menu TYPE i VALUE 2,
                      c_separator TYPE i VALUE 3,
                      c_radio_button TYPE i VALUE 4,
                      c_checkbox TYPE i VALUE 5,
                      c_menu_entry TYPE i VALUE 6.

                      DATA:
                      ls_toolbar TYPE stb_button.

                      * añade un separador
                      CLEAR ls_toolbar.
                      MOVE c_separator TO ls_toolbar-butn_type..
                      APPEND ls_toolbar TO e_object->mt_toolbar.

                      * append a new button that to the toolbar. use e_object of
                      * event toolbar.e_object is of type cl_alv_event_toolbar_set.
                      * this class has one attribute mt_toolbar which is of table type
                      * ttb_button.
                      * the structure is stb_button
                      *******Borrado de Botones Estandar:
                      DELETE e_object->mt_toolbar WHERE ( function EQ '&MB_SUM'
                      OR function EQ '&MB_SUBTOT'
                      OR function EQ '&GRAPH'
                      OR function EQ '&&SEP07'
                      OR function EQ '&INFO' ).
                      ********
                      CLEAR ls_toolbar.
                      MOVE 'LOG' TO ls_toolbar-function.
                      MOVE icon_error_protocol TO ls_toolbar-icon.
                      MOVE 'Log Errores' TO ls_toolbar-quickinfo.
                      MOVE 'Log' TO ls_toolbar-text.
                      MOVE ' ' TO ls_toolbar-disabled.
                      APPEND ls_toolbar TO e_object->mt_toolbar.
                      ENDMETHOD.

                      METHOD handle_user_command.
                      * handle own functions defined in the toolbar
                      CASE e_ucomm.
                      WHEN 'CHANGE'.
                      LEAVE TO SCREEN 0.
                      WHEN 'LOG'.
                      CALL TRANSACTION 'SM35'.
                      ENDCASE.

                      ENDMETHOD.
                      ENDCLASS.

                      *---------------------------------------------------------------------*
                      * MAIN *
                      *---------------------------------------------------------------------*
                      START-OF-SELECTION.
                      DATA: wa_sflight LIKE gt_sflight.
                      DATA: flag1(1), flag2(1).
                      DATA: seatsocc LIKE gt_sflight-seatsocc.
                      DATA: planetype LIKE gt_sflight-planetype.

                      SELECT * INTO CORRESPONDING FIELDS OF TABLE it_sflight FROM sflight.

                      LOOP AT it_sflight.
                      MOVE-CORRESPONDING it_sflight TO gt_sflight.
                      APPEND gt_sflight.
                      ENDLOOP.
                      SORT gt_sflight BY planetype.

                      * SEATSMAX
                      *PLANETYPE
                      LOOP AT gt_sflight INTO wa_sflight.
                      IF seatsocc NE wa_sflight-seatsocc
                      AND planetype NE wa_sflight-planetype.
                      CLEAR wa_sflight-seatsmax.
                      MOVE '1' TO wa_sflight-seatsmax.
                      MODIFY gt_sflight FROM wa_sflight.
                      MOVE: wa_sflight-seatsocc TO seatsocc,
                      wa_sflight-planetype TO planetype.
                      ELSEIF seatsocc EQ wa_sflight-seatsocc
                      AND planetype NE wa_sflight-planetype.
                      CLEAR wa_sflight-seatsmax.
                      MOVE '1' TO wa_sflight-seatsmax.
                      MODIFY gt_sflight FROM wa_sflight.
                      MOVE: wa_sflight-seatsocc TO seatsocc,
                      wa_sflight-planetype TO planetype.
                      ELSEIF seatsocc NE wa_sflight-seatsocc
                      AND planetype EQ wa_sflight-planetype.
                      CLEAR wa_sflight-seatsmax.
                      MOVE '1' TO wa_sflight-seatsmax.
                      MODIFY gt_sflight FROM wa_sflight.
                      MOVE: wa_sflight-seatsocc TO seatsocc,
                      wa_sflight-planetype TO planetype.
                      ELSE.
                      MOVE: wa_sflight-seatsocc TO seatsocc,
                      wa_sflight-planetype TO planetype.
                      CLEAR wa_sflight-seatsmax.
                      MOVE '0' TO wa_sflight-seatsmax.
                      MODIFY gt_sflight FROM wa_sflight.
                      ENDIF.
                      ENDLOOP.


                      CLEAR gs_fieldcat.
                      gs_fieldcat-fieldname = 'CARRID'.
                      gs_fieldcat-ref_table = 'SFLIGHT'.
                      gs_fieldcat-outputlen = '5'.
                      gs_fieldcat-key = 'X'.
                      * gs_fieldcat-edit = 'X'.
                      gs_fieldcat-auto_value = 'X'.
                      APPEND gs_fieldcat TO gt_fieldcat.

                      CLEAR gs_fieldcat.
                      gs_fieldcat-fieldname = 'CARRNAME'.
                      gs_fieldcat-ref_table = 'SCARR'.
                      gs_fieldcat-outputlen = '12'.
                      gs_fieldcat-key = 'X'.
                      gs_fieldcat-auto_value = 'X'.
                      APPEND gs_fieldcat TO gt_fieldcat.

                      CLEAR gs_fieldcat.
                      gs_fieldcat-fieldname = 'CONNID'.
                      gs_fieldcat-ref_table = 'SFLIGHT'.
                      gs_fieldcat-key = 'X'.
                      * gs_fieldcat-edit = 'X'.
                      gs_fieldcat-auto_value = 'X'.
                      APPEND gs_fieldcat TO gt_fieldcat.

                      CLEAR gs_fieldcat.
                      gs_fieldcat-fieldname = 'FLDATE'.
                      gs_fieldcat-ref_table = 'SFLIGHT'.
                      * gs_fieldcat-edit = 'X'.
                      gs_fieldcat-key = 'X'.
                      APPEND gs_fieldcat TO gt_fieldcat.

                      CLEAR gs_fieldcat.
                      gs_fieldcat-fieldname = 'SEATSOCC'.
                      gs_fieldcat-ref_table = 'SFLIGHT'.
                      * gs_fieldcat-edit = 'X'.
                      APPEND gs_fieldcat TO gt_fieldcat.

                      CLEAR gs_fieldcat.
                      gs_fieldcat-fieldname = 'PLANETYPE'.
                      gs_fieldcat-ref_table = 'SFLIGHT'.
                      * gs_fieldcat-edit = 'X'.
                      APPEND gs_fieldcat TO gt_fieldcat.

                      CLEAR gs_fieldcat.
                      gs_fieldcat-fieldname = 'SEATSMAX'.
                      gs_fieldcat-ref_table = 'SFLIGHT'.
                      APPEND gs_fieldcat TO gt_fieldcat.



                      CLEAR gs_fieldcat.
                      gs_fieldcat-fieldname = 'PAYMENTSUM'.
                      gs_fieldcat-datatype = 'CURR'.
                      gs_fieldcat-coltext = text-004.
                      gs_fieldcat-cfieldname = 'CURRENCY'.
                      * gs_fieldcat-edit = 'X'.
                      APPEND gs_fieldcat TO gt_fieldcat.

                      CLEAR gs_fieldcat.
                      gs_fieldcat-fieldname = 'PRICE'.
                      gs_fieldcat-ref_table = 'SFLIGHT'.
                      gs_fieldcat-cfieldname = 'CURRENCY'.
                      * gs_fieldcat-edit = 'X'.
                      APPEND gs_fieldcat TO gt_fieldcat.

                      CLEAR gs_fieldcat.
                      gs_fieldcat-fieldname = 'CURRENCY'.
                      gs_fieldcat-ref_table = 'SFLIGHT'.
                      * gs_fieldcat-edit = 'X'.
                      gs_fieldcat-checktable = '!'.
                      gs_fieldcat-auto_value = 'X'.
                      APPEND gs_fieldcat TO gt_fieldcat.

                      gs_variant-report = sy-repid.



                      * CALL SCREEN 100.
                      CALL SCREEN 0001.

                      *---------------------------------------------------------------------*
                      * MODULE PBO OUTPUT *
                      *---------------------------------------------------------------------*
                      MODULE pbo OUTPUT.
                      PERFORM pbo_output.
                      ENDMODULE.

                      *---------------------------------------------------------------------*
                      * MODULE PAI INPUT *
                      *---------------------------------------------------------------------*
                      MODULE pai INPUT.
                      PERFORM pai_input.
                      ENDMODULE. " F4

                      *&---------------------------------------------------------------------*
                      *& Form pbo_output
                      *&---------------------------------------------------------------------*
                      * text
                      *----------------------------------------------------------------------*
                      FORM pbo_output.
                      SET PF-STATUS 'MAIN100'.
                      * SET PF-STATUS 'MAIN0001'.
                      SET TITLEBAR '001'.
                      IF g_custom_container IS INITIAL.
                      IF sy-batch IS INITIAL.
                      CREATE OBJECT g_custom_container
                      EXPORTING container_name = g_container.

                      ENDIF.
                      CREATE OBJECT grid1
                      EXPORTING i_parent = g_custom_container.

                      CREATE OBJECT o_event_receiver.

                      SET HANDLER o_event_receiver->handle_user_command FOR grid1.
                      SET HANDLER o_event_receiver->handle_toolbar FOR grid1.
                      gs_layout-stylefname = 'CELL'.
                      gs_layout-no_toolbar = ' '.
                      gs_layout-grid_title = 'Facturas Contabilizadas en SAP'.
                      CALL METHOD grid1->set_table_for_first_display
                      EXPORTING
                      i_save = 'A'
                      is_layout = gs_layout
                      CHANGING it_fieldcatalog = gt_fieldcat
                      it_outtab = gt_sflight[].
                      CALL METHOD grid1->set_toolbar_interactive.



                      ENDIF.
                      IF g_custom_container2 IS INITIAL.
                      IF sy-batch IS INITIAL.
                      CREATE OBJECT g_custom_container2
                      EXPORTING container_name = g_container2.

                      ENDIF.
                      CREATE OBJECT grid2
                      EXPORTING i_parent = g_custom_container2.

                      * CREATE OBJECT o_event_receiver.

                      SET HANDLER o_event_receiver->handle_user_command FOR grid2.
                      SET HANDLER o_event_receiver->handle_toolbar FOR grid2.

                      gs_layout-stylefname = 'CELL'.
                      gs_layout-grid_title = 'Facturas Anuladas en SAP'.
                      CALL METHOD grid2->set_table_for_first_display
                      EXPORTING
                      i_save = 'A'
                      is_layout = gs_layout
                      CHANGING it_fieldcatalog = gt_fieldcat
                      it_outtab = gt_sflight[].
                      CALL METHOD grid2->set_toolbar_interactive.

                      ENDIF.

                      ENDFORM. " pbo_output

                      *&---------------------------------------------------------------------*
                      *& Form pai_input
                      *&---------------------------------------------------------------------*
                      * text
                      *----------------------------------------------------------------------*
                      FORM pai_input.
                      DATA: l_valid(1) TYPE c.

                      ok_code = sy-ucomm.

                      CASE ok_code.
                      WHEN 'SAVE'.
                      CALL METHOD grid1->check_changed_data IMPORTING e_valid = l_valid.
                      IF l_valid = 'X'.
                      MESSAGE i000(0k) WITH text-009.
                      ELSE.
                      MESSAGE i000(0k) WITH text-010.
                      ENDIF.
                      WHEN 'CHANGE'.
                      IF grid1->is_ready_for_input( ) = 0.
                      CALL METHOD grid1->set_ready_for_input EXPORTING
                      i_ready_for_input = 1.
                      ELSE.
                      CALL METHOD grid1->check_changed_data
                      IMPORTING e_valid = l_valid.
                      IF l_valid = 'X'.
                      CALL METHOD grid1->set_ready_for_input EXPORTING
                      i_ready_for_input = 0.
                      ENDIF.
                      ENDIF.
                      WHEN 'EXIT'.
                      SET SCREEN 0.
                      LEAVE SCREEN.
                      ENDCASE.
                      CLEAR ok_code.
                      ENDFORM. " pai_input
                      *&---------------------------------------------------------------------*
                      *& Module STATUS_0100 OUTPUT
                      *&---------------------------------------------------------------------*
                      * text
                      *----------------------------------------------------------------------*
                      MODULE status_0100 OUTPUT.
                      * SET PF-STATUS 'xxxxxxxx'.
                      * SET TITLEBAR 'xxx'.

                      ENDMODULE. " STATUS_0100 OUTPUT


                      Saludos
                      el tema esta en hacer la pregunta correcta...

                      Comentario

                      • PercyFloresSotelo
                        Member
                        • jul
                        • 66

                        #12
                        alv's en graficos

                        hola ibecerra me puedes ayudar como crear un alv y que se mue¿stre en un grafico
                        ----
                        "Hay dos tipos de inteligencia: la ocasional y la del trabajo. La primera depende de la suerte, la segunda es fruto del intercambio de horas por conocimientos."

                        ____________________
                        Percy Flores Sotelo
                        Consultor SAP / CO - ABAP
                        www.Ferreyros.com.pe
                        Ferreyros - Perú

                        Comentario

                        • mcarrasco
                          Member
                          • jul
                          • 71

                          #13
                          Amigo vea los programas BCALV* en la trx se80... ahi salen varios demos. Saludos!

                          Atte. Marcos Carrasco...

                          Comentario

                          • lau00_77
                            Junior Member
                            • may
                            • 1

                            #14
                            Ver Detalle de ALV

                            Hola buenos dias, espero que me ayuden.....

                            tengo un reporte ALV, pero necesito que al seleccionar un registro y dar click aparezca el detalle del registro, osea que me mande a otra pantalla, donde muestre el detalle del registro...

                            muchas gracias

                            Comentario

                            • marianoa
                              Member
                              • jun
                              • 77

                              #15
                              probaste con la funcion read_text??
                              Saludos

                              Comentario

                              Trabajando...