Como recalcular totales en reporte ALV??

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • Eduesqueda
    Senior Member
    • dic
    • 103

    #1

    Como recalcular totales en reporte ALV??

    Hola a todos de casualidad alguien sabe lo siguiente:

    1.- Tengo un reporte ALV que despliega ciertas columnas y la última columna es un checkbox para seleccionar o deseleccionar el renglón.
    2.- También al desplegar mi reporte me muestra totales por proveedor (LIFNR) y un total TOTAL. Y lo que sumariza es el importe (WRBTR). Todos los renglones la primer vez aparecen seleccionados o marcados.
    3.- Tengo el evento "data_changed" que me detecta si el usuario selecciona o deselecciona el checkbox del renglón. Si el usuario "Deselecciona" entonces se limpia el Checkbox....si el usuario "Selecciona" entonces se marca el checkbox. Y también se actualiza el checkbox en mi tabla de salida. De tal manera que mi tabla de salida es un reflejo del reporte ALV.

    La duda es??:

    Como le podría hacer para que me esté recalculando los totales ( proveedor y total total) dependiendo de los renglones que se estén seleccionando?


    Ejemplo de ALV al principio:

    lifnr wrbtr checkbox
    10 200 x
    10 150 x

    TOTAL 10 350

    20 300 x
    20 131 x
    20 70 x

    TOTAL 20 501

    TOTAL 851


    Ahora si yo desmarco
    el proveedor 10 importe 200 y
    el proveddor 20 importe 70 poniendole al checkbox blancos,
    quiero que me quede asi EN LOS TOTALES:

    lifnr wrbtr checkbox
    10 200
    10 150 x

    TOTAL 10 150

    20 300 x
    20 131 x
    20 70

    TOTAL 20 431

    TOTAL 581

    La tabla de salida para el alv tiene estas columnas: lifnr, wrbtr, envio (que es el checkbox).
    El campo envio se actualiza con espacios o x cada vez que el usuario deselecciona o selecciona.
    Siempre tengo que mostrar los marcados y no marcados en la tabla de salida para el ALV por lo que no le puedo mandar en una tabla de salida al ALV solo los registros marcados para el recálculo de totales.

    EN BASE A LO ANTERIOR:
    Se puede recalcular los totales, DEPENDIENDO DEL CHECKBOX AL MOMENTO QUE SE ESTA SELECCIONANDO O DESELECCIONANDO?? Como??

    Y la tabla de salida está así después de seleccionar o deseleccionar por renglón según el evento "Data_Changed":

    lifnr wrbtr envio
    10 200
    10 150 x
    20 300 x
    20 131 x
    20 70

    ES DECIR QUIERO QUE PARA LOS TOTALES SOLO SUME LOS REGISTROS MARCADOS CON X CUANDO MUESTRO LA TABLA EN ALV YA QUE AHORITA SUMA TODOS LOS RENGLONES DE LA TABLA DE SALIDA AL ALV.


    Saludos y espero alguien me pueda ayudar.
    Gracias.
    Editado por última vez por Eduesqueda; 26/04/2012, 19:01:35.
    Saludos
    Alabado Seas Yhavé.
    -Hay Un Mundo Mejor Cuando Aprendes a AMAR
  • kibo
    Senior Member
    • may
    • 177

    #2
    La suma la hace de manera std? deberias de hacer la suma manual. Entonces en tu evento de data change, haces los calculos manuales y le "appendias" la linea a tu tabla de salida.

    Es medio picapiedra la cosa
    http://diariotitular.com/contacto/

    Comentario

    • Eduesqueda
      Senior Member
      • dic
      • 103

      #3
      Originalmente publicado por kibo
      La suma la hace de manera std? deberias de hacer la suma manual. Entonces en tu evento de data change, haces los calculos manuales y le "appendias" la linea a tu tabla de salida.

      Es medio picapiedra la cosa

      Si gracias, lo que pasa es que no puedo agregar nada a la tabla de salida porque esto es lo que el usuario está viendo y va a seleccionar para generar un archivo de salida con lo seleccionado y si lo hago como tú dices entonces los botones estandard de SAP en ALV para grupos, cortes y totales me van a incluír en la suma los totales que yo calculé como me estás diciendo y aparte me va a activar el checkbox en estos renglones calculados y el usuario los podría seleccionar cuando no debe ser.

      Por lo que mejor lo hago de manera estandard con las rutinas ya creadas por sap, pasandole solo la tabla de salida con sus registros a sumarizar y que SAP haga los totales pero solo quiero que no me sume o no me incluya en los totales los que no tienen el checkbox seleccionado.

      Esto ya está en la tabla a desplegar con los campos: lifnr, wrbtr y checkbox solo que me suma todos los registros.....y solo quiero los marcados en el checkbox.

      Utilizo las rutinas estandar de SAP como:

      1.- * Construction of the Layout.
      PERFORM f_construction_layout.----> llena estructura con valores de layout

      2.- * Build field catalog
      PERFORM f_build_fieldcatalog---> utiliza la funcion: FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'

      *Aqui especifico que el importe es el campo que se sumará.
      WHEN 'WRBTR'.
      lw_fieldcat-do_sum = c_x.

      3.- * Build Events
      PERFORM f_build_events---> llena evento estatus y data_changed
      CHANGING i_events.

      4.- * Build Sort Criteria
      PERFORM f_build_sortCat.--->llena estructura para que sume por proveedor como:

      CLEAR wa_sort.
      REFRESH it_sortCat.
      wa_sort-spos = 1.
      wa_sort-fieldname = 'LIFNR'.
      wa_sort-up = c_x.
      wa_sort-subtot = c_x. "subtotals any totals column by this field
      APPEND wa_sort TO it_sortCat.
      CLEAR wa_sort.

      5.- * Display alv report on output screen
      PERFORM f_display_alv_report.--->utiliza la funcion:
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
      Editado por última vez por Eduesqueda; 27/04/2012, 14:50:22.
      Saludos
      Alabado Seas Yhavé.
      -Hay Un Mundo Mejor Cuando Aprendes a AMAR

      Comentario

      • Eduesqueda
        Senior Member
        • dic
        • 103

        #4
        Originalmente publicado por Eduesqueda
        Si gracias, lo que pasa es que no puedo agregar nada a la tabla de salida porque esto es lo que el usuario está viendo y va a seleccionar para generar un archivo de salida con lo seleccionado y si lo hago como tú dices entonces los botones estandard de SAP en ALV para grupos, cortes y totales me van a incluír en la suma los totales que yo calculé como me estás diciendo y aparte me va a activar el checkbox en estos renglones calculados y el usuario los podría seleccionar cuando no debe ser.

        Por lo que mejor lo hago de manera estandard con las rutinas ya creadas por sap, pasandole solo la tabla de salida con sus registros a sumarizar y que SAP haga los totales pero solo quiero que no me sume o no me incluya en los totales los que no tienen el checkbox seleccionado.

        Esto ya está en la tabla a desplegar con los campos: lifnr, wrbtr y checkbox solo que me suma todos los registros.....y solo quiero los marcados en el checkbox.

        Utilizo las rutinas estandar de SAP como:

        1.- * Construction of the Layout.
        PERFORM f_construction_layout.----> llena estructura con valores de layout

        2.- * Build field catalog
        PERFORM f_build_fieldcatalog---> utiliza la funcion: FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'

        *Aqui especifico que el importe es el campo que se sumará.
        WHEN 'WRBTR'.
        lw_fieldcat-do_sum = c_x.

        3.- * Build Events
        PERFORM f_build_events---> llena evento estatus y data_changed
        CHANGING i_events.

        4.- * Build Sort Criteria
        PERFORM f_build_sortCat.--->llena estructura para que sume por proveedor como:

        CLEAR wa_sort.
        REFRESH it_sortCat.
        wa_sort-spos = 1.
        wa_sort-fieldname = 'LIFNR'.
        wa_sort-up = c_x.
        wa_sort-subtot = c_x. "subtotals any totals column by this field
        APPEND wa_sort TO it_sortCat.
        CLEAR wa_sort.

        5.- * Display alv report on output screen
        PERFORM f_display_alv_report.--->utiliza la funcion:
        CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

        TIENES ALGUNA OTRA IDES KIBO? O ALGUIEN MAS??
        HELP, PLEASE!!
        Saludos
        Alabado Seas Yhavé.
        -Hay Un Mundo Mejor Cuando Aprendes a AMAR

        Comentario

        • kibo
          Senior Member
          • may
          • 177

          #5
          No creo que al ALV_GRID puedas hacer de manera std eso... o al menos yo no lo se, si estuviera en Objetos tenes un poco mas de chances.

          La UNICA que se me ocurre, es que copies la funcion de sumarizacion e un Z y ahi le puedas metar vos que solo tenga en cuenta los registros marcados.

          No es muy alentadora la idea porque tendras que debuguear el std un rato pero desde mis pocos conocimientos no se me ocurre mas, tal vez puedas buscar en SDN a ver si saben algo.

          Y sino la respuesta mas habitual "No, mira... eso SAP no lo contempla, bajalo a Excel y cualquier cosa preguntale a Microsft "
          http://diariotitular.com/contacto/

          Comentario

          • Eduesqueda
            Senior Member
            • dic
            • 103

            #6
            Originalmente publicado por kibo
            No creo que al ALV_GRID puedas hacer de manera std eso... o al menos yo no lo se, si estuviera en Objetos tenes un poco mas de chances.

            La UNICA que se me ocurre, es que copies la funcion de sumarizacion e un Z y ahi le puedas metar vos que solo tenga en cuenta los registros marcados.

            No es muy alentadora la idea porque tendras que debuguear el std un rato pero desde mis pocos conocimientos no se me ocurre mas, tal vez puedas buscar en SDN a ver si saben algo.

            Y sino la respuesta mas habitual "No, mira... eso SAP no lo contempla, bajalo a Excel y cualquier cosa preguntale a Microsft "

            OK.....KIBO....MUCHAS GRACIAS....ESO ES LO QUE ESTABA DEBUGUEANDO HACE RATO LA FUNCION: REUSE_ALV_GRID_DISPLAY PERO ME DESESPERE...voy a ver si encuentro el sumarizado para excluír los que no fueron marcados.....

            y si no les voy a decir que no se puede en SAP....

            GRACIAS y te aviso si pude encontrar el punto exacto para cambiar en la funcion.

            Saludos
            Saludos
            Alabado Seas Yhavé.
            -Hay Un Mundo Mejor Cuando Aprendes a AMAR

            Comentario

            • DCErick
              Moderator
              • mar
              • 1090

              #7
              Puedes truquear los subtotales con el evento SUBTOTAL_TEXT, hacer tu calculo con los registros marcados y reemplazar el valor, pero el grand total seguirá siendo el de todos los registros de la tabla....
              -------------------
              ¿Dudas para descargar manuales? Ver este tema -> Cómo descargar manuales de la sección "Descargas" ?

              Comentario

              • DCErick
                Moderator
                • mar
                • 1090

                #8
                En el evento changed, haz lo sigiuente:

                Código:
                 DATA: lo_grid TYPE REF TO cl_gui_alv_grid.
                
                * Obtenemos referencia al ALV
                  CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
                    IMPORTING
                      e_grid = lo_grid.
                
                * Tablas internas para grantotal y subtotal. 
                * En este caso solo tenemos un subtotal, si se subtotalizara por otros 
                * campos hay que agregar mas it_##.
                  DATA: it_00 TYPE REF TO data,
                           it_01 TYPE REF TO data.
                
                  CALL METHOD lo_grid->get_subtotals
                    IMPORTING
                      ep_collect00 = it_00  "Gran Total 
                      ep_collect01 = it_01.  "Novel LIFNR
                
                * Cambiamos los datos.
                  FIELD-SYMBOLS: <ft_tab> TYPE ANY TABLE,
                                 <fs_tab> TYPE ANY,
                                 <ff_field> TYPE ANY.
                
                * Gran Total
                  ASSIGN it_00->* TO <ft_tab>.
                  LOOP AT <ft_tab> ASSIGNING <fs_tab>.
                    ASSIGN COMPONENT 'WRBTR' OF STRUCTURE <fs_tab> TO <ff_field>.
                    <ff_field> = '1000'. "Modificamos
                  ENDLOOP.
                
                * LIFNR Level
                  ASSIGN it_01->* TO <ft_tab>.
                  LOOP AT <ft_tab> ASSIGNING <fs_tab>.
                    ASSIGN COMPONENT 'WRBTR' OF STRUCTURE <fs_tab> TO <ff_field>.
                    <ff_field> = '100'. "Modificamos
                  ENDLOOP.
                Bueno ya tu le metes la lógica para calcular los totales en base a tu check.... Creo que tendré que ir a tu consultora a pasarte mas trucos xD.
                -------------------
                ¿Dudas para descargar manuales? Ver este tema -> Cómo descargar manuales de la sección "Descargas" ?

                Comentario

                • Eduesqueda
                  Senior Member
                  • dic
                  • 103

                  #9
                  Originalmente publicado por DCErick
                  En el evento changed, haz lo sigiuente:

                  Código:
                   DATA: lo_grid TYPE REF TO cl_gui_alv_grid.
                  
                  * Obtenemos referencia al ALV
                    CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
                      IMPORTING
                        e_grid = lo_grid.
                  
                  * Tablas internas para grantotal y subtotal. 
                  * En este caso solo tenemos un subtotal, si se subtotalizara por otros 
                  * campos hay que agregar mas it_##.
                    DATA: it_00 TYPE REF TO data,
                             it_01 TYPE REF TO data.
                  
                    CALL METHOD lo_grid->get_subtotals
                      IMPORTING
                        ep_collect00 = it_00  "Gran Total 
                        ep_collect01 = it_01.  "Novel LIFNR
                  
                  * Cambiamos los datos.
                    FIELD-SYMBOLS: <ft_tab> TYPE ANY TABLE,
                                   <fs_tab> TYPE ANY,
                                   <ff_field> TYPE ANY.
                  
                  * Gran Total
                    ASSIGN it_00->* TO <ft_tab>.
                    LOOP AT <ft_tab> ASSIGNING <fs_tab>.
                      ASSIGN COMPONENT 'WRBTR' OF STRUCTURE <fs_tab> TO <ff_field>.
                      <ff_field> = '1000'. "Modificamos
                    ENDLOOP.
                  
                  * LIFNR Level
                    ASSIGN it_01->* TO <ft_tab>.
                    LOOP AT <ft_tab> ASSIGNING <fs_tab>.
                      ASSIGN COMPONENT 'WRBTR' OF STRUCTURE <fs_tab> TO <ff_field>.
                      <ff_field> = '100'. "Modificamos
                    ENDLOOP.
                  Bueno ya tu le metes la lógica para calcular los totales en base a tu check.... Creo que tendré que ir a tu consultora a pasarte mas trucos xD.

                  JIJIJIJI....Si verdad, me falta mucho, yo sé. Muchas Gracias, DERICK, lo voy a probar te estoy avisando...gracias y saludos.


                  HOLA DCERICK, FIJATE QUE PROBE EL CODIGO COMO ME DIJISTES EN EL EVENTO DATA_CHANGED Y SI VI QUE FUNCIONA MUY BIEN. ** CAMBIA EL RENGLON DE LA TABLA DEL EL TOTAL TOTAL AL VALOR 100 ó 1000 (WRBTR)
                  ** CAMBIA TODA LA INFO DE LA TABLA DE LOS SUBTOTALES POR PROVEEDOR AL VALOR 100 (WRBTR)

                  PERO NO ME CAMBIA EN MI ALV O PANTALLA NADA al salir del evento DATA_CHANGED y regresa a mi ALV, DEBERIA VER EL TOTAL TOTAL con 1000 Y LOS TOTALES POR PROVEEDOR CON 100.
                  PERO SIGUE CON LOS DATOS ORIGINALES...PORQUE?

                  GRACIAS Y SI ME PUDIERAS DECIR TE LO AGRADECERIA DE TODO CUCHARON.
                  SALUDOS.
                  Editado por última vez por Eduesqueda; 27/04/2012, 22:42:02.
                  Saludos
                  Alabado Seas Yhavé.
                  -Hay Un Mundo Mejor Cuando Aprendes a AMAR

                  Comentario

                  • DCErick
                    Moderator
                    • mar
                    • 1090

                    #10
                    mmm sabes, no tengo forma de probarlo ahorita con el user_command

                    Yo lo puse en el top_of_page y me jala bien....
                    -------------------
                    ¿Dudas para descargar manuales? Ver este tema -> Cómo descargar manuales de la sección "Descargas" ?

                    Comentario

                    • Eduesqueda
                      Senior Member
                      • dic
                      • 103

                      #11
                      Originalmente publicado por DCErick
                      mmm sabes, no tengo forma de probarlo ahorita con el user_command

                      Yo lo puse en el top_of_page y me jala bien....
                      __________________________________________________ __________

                      Buen día, DERICK y hola: disculpa esta forma que me dijistes al final me debe actualizar los totales de mi alv en pantalla autómaticamente? Será que a mi no me funcionó porque estoy usando funciones estandar de sap para desplegar mi alv?

                      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

                      mi tabla al alv se llama i_alv. y solo contiene los registros a sumarizar.

                      saludos
                      Saludos
                      Alabado Seas Yhavé.
                      -Hay Un Mundo Mejor Cuando Aprendes a AMAR

                      Comentario

                      • DCErick
                        Moderator
                        • mar
                        • 1090

                        #12
                        Originalmente publicado por Eduesqueda
                        __________________________________________________ __________

                        Buen día, DERICK y hola: disculpa esta forma que me dijistes al final me debe actualizar los totales de mi alv en pantalla autómaticamente? Será que a mi no me funcionó porque estoy usando funciones estandar de sap para desplegar mi alv?

                        CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

                        mi tabla al alv se llama i_alv. y solo contiene los registros a sumarizar.

                        saludos
                        Asi es, eso te coloca los totales en tu ALV, ah yo tambien lo hice con REUSE_ALV_GRID_DISPLAY, recuerda agregar el evento yo lo hice desde el parametro i_callback_top_of_page

                        Código:
                          CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
                            EXPORTING
                              i_callback_program     = l_repid
                             [B] i_callback_top_of_page = 'SUB_ALV_TOP_OF_PAGE'[/B]
                        'SUB_ALV_TOP_OF_PAGE' <- Nombre del form donde coloqué el código que te mandé xD.
                        -------------------
                        ¿Dudas para descargar manuales? Ver este tema -> Cómo descargar manuales de la sección "Descargas" ?

                        Comentario

                        • Eduesqueda
                          Senior Member
                          • dic
                          • 103

                          #13
                          Originalmente publicado por DCErick
                          Asi es, eso te coloca los totales en tu ALV, ah yo tambien lo hice con REUSE_ALV_GRID_DISPLAY, recuerda agregar el evento yo lo hice desde el parametro i_callback_top_of_page

                          Código:
                            CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
                              EXPORTING
                                i_callback_program     = l_repid
                               [B] i_callback_top_of_page = 'SUB_ALV_TOP_OF_PAGE'[/B]
                          'SUB_ALV_TOP_OF_PAGE' <- Nombre del form donde coloqué el código que te mandé xD.

                          __________________________________________________ ______

                          YA LO HICE TAMBIEN ASI Y NO ME FUNCIONO, NI MODO...GRACIAS DERICK.
                          Saludos
                          Alabado Seas Yhavé.
                          -Hay Un Mundo Mejor Cuando Aprendes a AMAR

                          Comentario

                          • DCErick
                            Moderator
                            • mar
                            • 1090

                            #14
                            Originalmente publicado por Eduesqueda
                            __________________________________________________ ______

                            YA LO HICE TAMBIEN ASI Y NO ME FUNCIONO, NI MODO...GRACIAS DERICK.

                            Algo te debe estar faltando....
                            Que versión de SAP tienes?
                            ¿Puedes compartir tu programa para ver como le estas haciendo?
                            -------------------
                            ¿Dudas para descargar manuales? Ver este tema -> Cómo descargar manuales de la sección "Descargas" ?

                            Comentario

                            • Eduesqueda
                              Senior Member
                              • dic
                              • 103

                              #15
                              Originalmente publicado por DCErick
                              Algo te debe estar faltando....
                              Que versión de SAP tienes?
                              ¿Puedes compartir tu programa para ver como le estas haciendo?
                              __________________________________________________ ___________
                              VERSION 6.4 (COMO COMPARTO EL PGMA Y SUS INCLUDES? ESQUE NO ME DEJA ATACHARLOS TODOS PERO HAY VAN SOLO 3 RUTINAS)

                              PROGRAME LO QUE ME DIJISTES EN LA RUTINA DEL TOP ANTES DEL ENDFORM

                              __________________________________________________ ___________
                              ESTA ES LA RUTINA DEL DISPLAY ALV
                              __________________________________________________ ___________

                              *&---------------------------------------------------------------------*
                              *& Form F_DISPLAY_ALV_REPORT *
                              *&---------------------------------------------------------------------*
                              * Display alv report on output screen *
                              *----------------------------------------------------------------------*

                              FORM f_display_alv_report .

                              * Local variables------------------------------------------------------*
                              DATA: lv_program TYPE sy-repid,
                              i_lvc_s_glay LIKE lvc_s_glay.

                              i_lvc_s_glay-edt_cll_cb = 'X'.

                              CLEAR w_variant.

                              lv_program = sy-repid.

                              * Variant for ALV.
                              w_variant-report = lv_program.
                              w_variant-variant = p_vari.

                              CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
                              EXPORTING
                              i_callback_program = lv_program
                              i_callback_pf_status_set = 'C'
                              i_callback_user_command = 'USER_COMMAND'
                              i_callback_top_of_page = 'F_ALV_TOP'
                              i_structure_name = 'I_ALV'
                              i_grid_settings = i_lvc_s_glay
                              is_layout = w_layout
                              it_fieldcat = i_fieldcat
                              it_sort = it_sortCat
                              i_default = c_x
                              i_save = c_a
                              is_variant = w_variant
                              it_events = i_events
                              TABLES
                              t_outtab = i_alv
                              EXCEPTIONS
                              program_error = 1
                              OTHERS = 2.

                              IF sy-subrc <> c_zeros.

                              MESSAGE ID sy-msgid
                              TYPE sy-msgty
                              NUMBER sy-msgno
                              WITH sy-msgv1
                              sy-msgv2
                              sy-msgv3
                              sy-msgv4.
                              ENDIF.

                              ENDFORM. " F_DISPLAY_ALV_REPORT
                              __________________________________________________ ___________

                              ESTA ES LA RUTINA DEL TOP
                              __________________________________________________ ___________


                              *&---------------------------------------------------------------------*
                              *& Form f_alv_top *
                              *&---------------------------------------------------------------------*
                              * Routine To generate the headed one of the ALV *
                              *----------------------------------------------------------------------*
                              FORM f_alv_top.

                              * Local Variables------------------------------------------------------*
                              DATA: lv_date(10) TYPE c,
                              lv_layout(50) TYPE c,
                              lv_textvar LIKE varit-vtext,
                              lv_variant(50) TYPE c.

                              * to verify that the Head does not have data.
                              REFRESH i_list_top.
                              * CHECK i_list_top[] IS INITIAL.

                              * Change Sy-Datum by Sy-Datlo.
                              WRITE sy-datlo TO lv_date DD/MM/YYYY.

                              * Create the name of the file to be generated.
                              CLEAR: i_gs_line.
                              i_gs_line-typ = c_s.
                              i_gs_line-key = text-t03. "File
                              i_gs_line-info = p_displ.
                              APPEND i_gs_line TO i_list_top.

                              * Create Date
                              CLEAR: i_gs_line.
                              i_gs_line-typ = c_s.
                              i_gs_line-key = text-t01. "Date
                              i_gs_line-info = lv_date.
                              APPEND i_gs_line TO i_list_top.

                              * Create User
                              CLEAR: i_gs_line.
                              i_gs_line-typ = c_s. "Line type [H]eader
                              i_gs_line-key = text-t02. "User
                              i_gs_line-info = sy-uname.
                              APPEND i_gs_line TO i_list_top.
                              CLEAR: i_gs_line.

                              * Create Total Records
                              CLEAR: i_gs_line.
                              i_gs_line-typ = c_s. "Line type [H]eader
                              i_gs_line-key = text-t04. "Total records
                              i_gs_line-info = v_tot_reg_t.
                              APPEND i_gs_line TO i_list_top.

                              CALL FUNCTION 'RS_VARIANT_TEXT'
                              EXPORTING
                              curr_report = sy-cprog
                              langu = sy-langu
                              variant = sy-slset
                              IMPORTING
                              v_text = lv_textvar
                              EXCEPTIONS
                              no_text = 1.
                              IF sy-subrc EQ c_zeros.
                              CONCATENATE sy-slset
                              lv_textvar
                              INTO lv_variant
                              SEPARATED BY space.
                              ENDIF.

                              * i_gs_line-typ = c_s. " Line type [H]eader
                              * i_gs_line-key = text-t05. " Variant
                              * i_gs_line-info = lv_variant.
                              * APPEND i_gs_line TO i_list_top.

                              * Create the Third label of Title
                              CLEAR: i_gs_line.

                              CONCATENATE p_vari
                              v_text_lay
                              INTO lv_layout
                              SEPARATED BY space.

                              CLEAR: i_gs_line.
                              i_gs_line-typ = c_s. " Line type [H]eader
                              i_gs_line-key = text-t06. " Layout
                              i_gs_line-info = lv_layout.
                              APPEND i_gs_line TO i_list_top.

                              * Write the Headed
                              CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
                              EXPORTING
                              it_list_commentary = i_list_top.

                              ENDFORM. " f_alv_top
                              __________________________________________________ ___________

                              ESTA ES LA RUTINA DE DATA_CHANGED
                              __________________________________________________ ___________


                              *&---------------------------------------------------------------------*
                              *& Form DATA_CHANGED
                              *&---------------------------------------------------------------------*
                              * Modifies the CheckBox in the ALV Report
                              *----------------------------------------------------------------------*
                              * <--P_I_EXTAB text
                              *----------------------------------------------------------------------*
                              FORM data_changed
                              USING rr_data TYPE REF TO cl_alv_changed_data_protocol.

                              DATA : ls_mod_cell TYPE lvc_s_modi,
                              lv_value TYPE lvc_value.

                              SORT rr_data->mt_mod_cells BY row_id .
                              LOOP AT rr_data->mt_mod_cells INTO ls_mod_cell.
                              IF ls_mod_cell-fieldname = 'DESPU'.
                              READ TABLE i_alv index ls_mod_cell-row_id .
                              IF sy-subrc = 0.
                              i_alv-despu = ls_mod_cell-value.
                              MODIFY i_alv index ls_mod_cell-row_id.
                              CALL METHOD rr_data->MODIFY_CELL
                              EXPORTING
                              i_row_id = ls_mod_cell-row_id
                              i_fieldname = 'DESPU'
                              i_value = ls_mod_cell-value.
                              ENDIF.
                              ENDIF.
                              ENDLOOP.

                              ENDFORM.
                              Saludos
                              Alabado Seas Yhavé.
                              -Hay Un Mundo Mejor Cuando Aprendes a AMAR

                              Comentario

                              Trabajando...