CREACION SuBTOTALES - ALV GRID

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • soykies
    Junior Member
    • abr
    • 16

    #1

    CREACION SuBTOTALES - ALV GRID

    Hola,

    Necesito crear un subtotal en mi report (tal como indica la figura) que me sume hasta donde esta la linea roja, la columna efectivos, horas norm, horas supl, y h.sup/h.norm:




    Este es mi codigo:

    FORM display_alv TABLES i_employee.
    PERFORM build_header.
    PERFORM build_layout.
    PERFORM call_alv TABLES i_employee.
    ENDFORM.
    -----------------------------------------------------------
    FORM build_header.
    DATA: v_alv_color TYPE slis_specialcol_alv.

    CLEAR gt_fieldcat.
    REFRESH gt_fieldcat.

    fieldcat_ln-fieldname = 'PERIODO'.
    fieldcat_ln-seltext_l = 'Periodo'(001).
    APPEND fieldcat_ln TO gt_fieldcat.

    fieldcat_ln-fieldname = 'EFECTIVOS'.
    fieldcat_ln-seltext_l = 'Efectivos'(002).
    fieldcat_ln-do_sum = 'X'.
    fieldcat_ln-sp_group = '1'.
    APPEND fieldcat_ln TO gt_fieldcat.

    fieldcat_ln-fieldname = 'HN'.
    fieldcat_ln-seltext_l = 'Horas Norm. Inscritos'(003).
    fieldcat_ln-do_sum = 'X'.
    APPEND fieldcat_ln TO gt_fieldcat.

    fieldcat_ln-fieldname = 'HS'.
    fieldcat_ln-seltext_l = 'Horas Supl. Inscritos'(004).
    fieldcat_ln-do_sum = 'X'.
    APPEND fieldcat_ln TO gt_fieldcat.

    fieldcat_ln-fieldname = 'HN_HS'.
    fieldcat_ln-seltext_l = 'H.Sup/H.Nor %'(005).
    fieldcat_ln-do_sum = 'C'.
    APPEND fieldcat_ln TO gt_fieldcat.
    ENDFORM. "build_header

    ---------------------------------------------------------------
    FORM build_layout.
    gs_layout-colwidth_optimize = 'X'. "Optimizar ancho del listado
    gs_layout-zebra = 'X'. "Mostrar líneas tipo cebra.
    gs_layout-detail_popup = 'X'. "Mostrar opción de información detalle
    gs_layout-totals_text = 'X'.
    gs_layout-subtotals_text = 'X'.
    ENDFORM. "build_layout
    ----------------------------------------------------------------
    FORM call_alv TABLES alv_employee.
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
    i_callback_program = 'g_repid'
    is_layout = gs_layout
    it_fieldcat = gt_fieldcat[]
    TABLES
    t_outtab = alv_employee
    EXCEPTIONS
    program_error = 1
    OTHERS = 2
    ENDFORM. "CALL_ALV



    Espero que me puedan echar una mano.

    Muchas gracias
    Archivos Adjuntos
    Editado por última vez por soykies; 01/04/2008, 10:35:15.
  • DavidXD_XD
    Moderator
    • ago
    • 1255

    #2
    Hola, para poder crear subtotales deberias de crear un campo adicional que permita diferenciar cuales seran los grupos para formar los subtotales, al ver la figura creo q deberias de crearlo por Periodo ... ahi si el ALV identificara que grupos separar ... espero te sirva
    David Carballido Córdova

    Comentario

    • soykies
      Junior Member
      • abr
      • 16

      #3
      Muy buenas, el campo que diferencia un grupo y otro es TYP:


      fieldcat_ln-fieldname = 'TYP'.
      fieldcat_ln-seltext_l = 'Tipo'(006).
      fieldcat_ln-no_out = 'X'.
      fieldcat_ln-sp_group = 1.
      APPEND fieldcat_ln TO gt_fieldcat.

      y dependiendo de si es '1' o es '2' los diferencia. Este campo solo lo uso para diferenciar los 2 grupos y no me interesa que salga en el listado.

      Que tendría que hacer ahora?

      Muchas gracias por responder

      Comentario

      • agv1976
        Member
        • jun
        • 66

        #4
        Para que te salga los subtotales de una columna no tienes que hacer nada de lo anterior, ni poner la propiedad del campo sum, basta con que la columna que quieras totalizar sea de tipo quan o menge y en fieldcat te pongo un ejemplo de mi programa, importante que en la propiedad quantity pongas la unidad.

        Ej:
        * Cantidad
        it_fieldtab-fieldname = 'CANT_SER'.
        it_fieldtab-tabname = 'IT_DATOS_AUX'.
        it_fieldtab-seltext_l = 'Cantidad'.
        it_fieldtab-datatype = 'QUAN'.
        it_fieldtab-quantity = 'ST'.

        Luego marcas la columna que quieras totalizar y le das al boton de subtotales,
        si quieres el status standard con todos los botones vete a la me41 metes el nombre del estandar copiar interfase y pones tu zstatus y tu programa y te lo copie espero te sirva saludos.

        Comentario

        • DavidXD_XD
          Moderator
          • ago
          • 1255

          #5
          Hola, es la SE41 ... no la ME41
          David Carballido Córdova

          Comentario

          • agv1976
            Member
            • jun
            • 66

            #6
            gracias si todos lo errores fueran como ese....

            Comentario

            • soykies
              Junior Member
              • abr
              • 16

              #7
              Gracias a todos. Ya lo tengo resulto. Saludos

              Comentario

              Trabajando...