Como recalcular totales en reporte ALV??

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • DCErick
    Moderator
    • mar
    • 1090

    #16
    mmm

    No veo nada en el f_alv_top no está el código que te pase.
    -------------------
    ¿Dudas para descargar manuales? Ver este tema -> Cómo descargar manuales de la sección "Descargas" ?

    Comentario

    • Eduesqueda
      Senior Member
      • dic
      • 103

      #17
      Originalmente publicado por DCErick
      mmm

      No veo nada en el f_alv_top no está el código que te pase.
      __________________________________________________ ___________

      Si lo quité,, ya la acabo de poner y probar y los totales no cambian al valor de 100.
      Asi quedó la rutina:

      *&---------------------------------------------------------------------*
      *& 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.


      DATA: BEGIN OF i_sumSel OCCURS 0,
      waers LIKE i_alv-waers, "Moneda
      wrbtr LIKE i_alv-wrbtr, "Importe
      END OF i_sumSel.

      * 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.
      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
      DESCRIBE TABLE i_alv
      LINES v_tot_reg_t.

      CLEAR: i_gs_line.
      i_gs_line-typ = c_s.
      i_gs_line-key = text-t04. "Total records
      i_gs_line-info = v_tot_reg_t.
      APPEND i_gs_line TO i_list_top.

      * Create Selected Total Records
      v_tot_reg_s = c_zeros.
      REFRESH i_sumSel.
      CLEAR i_sumSel.
      LOOP AT i_alv.
      IF i_alv-despu = c_x.
      v_tot_reg_s = v_tot_reg_s + c_uno.
      i_sumSel-waers = i_alv-waers.
      i_sumSel-wrbtr = i_alv-wrbtr.
      COLLECT i_sumSel.
      ENDIF.
      ENDLOOP.

      CLEAR: i_gs_line.
      i_gs_line-typ = c_s.
      i_gs_line-key = text-t05. "Total Selected
      i_gs_line-info = v_tot_reg_s.
      APPEND i_gs_line TO i_list_top.

      * Create Total Moneda
      LOOP AT i_sumSel.
      CLEAR: i_gs_line.
      i_gs_line-typ = c_s.

      CONCATENATE text-t06 "Total Moneda
      i_sumSel-waers
      INTO i_gs_line-key
      SEPARATED BY SPACE.

      CONCATENATE i_gs_line-key
      c_2ptos
      INTO i_gs_line-key.

      i_gs_line-info = i_sumSel-wrbtr.
      APPEND i_gs_line TO i_list_top.
      ENDLOOP.

      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-t07. " 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.

      * Código que me pasastes.

      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.

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

      Comentario

      • DCErick
        Moderator
        • mar
        • 1090

        #18
        Hola, trata de usar etiquetas para encerrar tu código, es medio molesto leerlo sin etiquetas xD ""....

        Como ultimo intento te dejo un ejemplo, si ese no te funciona dile a tu usuario que no se puede jajaja.
        Archivos Adjuntos
        -------------------
        ¿Dudas para descargar manuales? Ver este tema -> Cómo descargar manuales de la sección "Descargas" ?

        Comentario

        • Eduesqueda
          Senior Member
          • dic
          • 103

          #19
          Originalmente publicado por DCErick
          Hola, trata de usar etiquetas para encerrar tu código, es medio molesto leerlo sin etiquetas xD ""....

          Como ultimo intento te dejo un ejemplo, si ese no te funciona dile a tu usuario que no se puede jajaja.
          __________________________________________________ __________

          GRACIAS MUCHAS.....LO VOY A CHECAR....TE AVISO.....SALUDOS.
          GRACIAS POR LA MOLESTIA.
          BYE.
          __________________________________________________ ___________
          HOLA DCERICK NO SE PUDO TAMPOCO, PERO LO QUE HICE FUE PONERLE DOS TOTALES POR MONEDA TOTALES EN EL TOP DEL ALV Y UN TOTAL DE REGISTROS SELECCIONADOS.
          CADA VEZ QUE SELECCIONO O DESELECCIONO UN RENGLON DEL ALV ESTOS TRES INDICADORES CAMBIAN.
          GRACIAS.
          Editado por última vez por Eduesqueda; 03/05/2012, 22:02:38.
          Saludos
          Alabado Seas Yhavé.
          -Hay Un Mundo Mejor Cuando Aprendes a AMAR

          Comentario

          Trabajando...