Dos o mas en un mismo reporte

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • RAMONES
    Member
    • mar
    • 69

    #1

    Dos o mas en un mismo reporte

    Buenas tardes a todos amigos, quiero pedirles ayuda, estoy necesitando hacer un reporte con mas de dos alv, la verdad que no tengo idea de como hacerlo, por favor si alguien tiene un ejemplo de como hacerlo, puede colgarlo para saber mas o menos como se hace...muchas gracias a todos...este tema lo necesito solucionar con rapidez, se los agradezco!
    Editado por última vez por RAMONES; 18/08/2009, 18:36:43.
    El mundo es Redondo y de Ricota......
  • Abaunus
    Senior Member
    • nov
    • 119

    #2
    ¿Pero como necesitás organizarlo? ¿En "serie" o "paralelo"?

    Si es uno después de otro, el segundo lo disparás en el UCOMM del mismo modo que al primero. Si no con la función REUSE_ALV_BLOCK_LIST_DISPLAY podés sacar varios al mismo tiempo. Decíme cómo pensás y te subo algún ejemplo.

    Comentario

    • RAMONES
      Member
      • mar
      • 69

      #3
      Originalmente publicado por Abaunus
      ¿Pero como necesitás organizarlo? ¿En "serie" o "paralelo"?

      Si es uno después de otro, el segundo lo disparás en el UCOMM del mismo modo que al primero. Si no con la función REUSE_ALV_BLOCK_LIST_DISPLAY podés sacar varios al mismo tiempo. Decíme cómo pensás y te subo algún ejemplo.
      Muchas gracias....se tienen que ver en la misma pantalla pero separados...te agradeceria si subis un ejemplo que me clarifique...

      Saludos!!
      El mundo es Redondo y de Ricota......

      Comentario

      • Abaunus
        Senior Member
        • nov
        • 119

        #4
        Es básicamente como un ALV con funciones normal.

        Declarás:

        Código:
        TYPE-POOLS SLIS.
        
        CONSTANTS C_X VALUE 'X'.
        
        DATA: G_REPID TYPE SY-REPID,
              G_LAYOUT TYPE SLIS_LAYOUT_ALV,
              GS_LINE TYPE SLIS_LISTHEADER,
              WA_SALIDA1 TYPE tabla1,
              WA_SALIDA2 TYPE tabla2,
              l_tabname1 TYPE slis_tabname VALUE 'I_SALIDA1',
              l_tabname2 TYPE slis_tabname VALUE 'I_SALIDA2'.
        
        DATA: l_eventos  TYPE slis_alv_event,
              lv_estruct TYPE dd02l-tabname.
        
        DATA: i_fieldcat1 TYPE slis_t_fieldcat_alv,
              i_fieldcat2 TYPE slis_t_fieldcat_alv,
              i_eventos1 TYPE TABLE OF slis_alv_event,
              i_eventos_2 TYPE TABLE OF slis_alv_event,
              GT_TOP_OF_PAGE_1 TYPE SLIS_T_LISTHEADER,
              GT_TOP_OF_PAGE_2 TYPE SLIS_T_LISTHEADER,
              I_SALIDA1 TYPE TABLE OF tabla1,
              I_SALIDA2 TYPE TABLE OF tabla2.
        Bueno, completás cada tabla, y pasamos a las funciones.
        Primero tenés que "abrir":

        Código:
          CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_INIT'
            EXPORTING
              i_callback_program       = G_REPID
              i_callback_pf_status_set = 'SET-PF-STATUS'
              I_CALLBACK_USER_COMMAND  = 'F_USER_COMMAND'.

        Después, para cada ALV, tenés que ejecutar la función:

        Código:
          CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
            EXPORTING
              is_layout   = g_layout
              it_fieldcat = i_fieldcat1
              i_tabname   = l_tabname1
              it_events   = i_eventos1
            TABLES
              t_outtab    = i_salida1.
        Cada bloque de ALV con su layout, fieldcat (obligatorios) y eventos.

        Y al final:

        Código:
          CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_DISPLAY'
            EXCEPTIONS
              program_error = 1
              OTHERS        = 2.

        En cada tabla de eventos podés cargar un Top_of_page para cada ALV. Por ejemplo:

        Código:
          CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
            EXPORTING
              i_list_type = 0
            IMPORTING
              et_events   = i_eventos1.
        
        
          CLEAR l_eventos.
          READ TABLE i_eventos1 WITH KEY name = 'TOP_OF_PAGE'
          INTO l_eventos.
        
          IF sy-subrc = 0.
            MOVE 'F_TOP_OF_PAGE_1' TO l_eventos-form.
            MODIFY i_eventos1 INDEX sy-tabix FROM l_eventos.
          ENDIF.
        Y después:

        Código:
        FORM F_TOP_OF_PAGE_1.
        
          IF GT_TOP_OF_PAGE_1[] IS INITIAL.
        
            CLEAR GS_LINE.
            GS_LINE-TYP = 'H'.
            CONCATENATE 'FECHA:' SY-DATUM INTO GS_LINE-INFO
              SEPARATED BY SPACE.
            APPEND GS_LINE TO GT_TOP_OF_PAGE_1.
            
          CLEAR GS_LINE.
            GS_LINE-TYP = 'H'.
            CONCATENATE 'HORA:' SY-UZEIT INTO GS_LINE-INFO
              SEPARATED BY SPACE.
            APPEND GS_LINE TO GT_TOP_OF_PAGE_1.
        
          ENDIF.
        
          CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
            EXPORTING
              IT_LIST_COMMENTARY = GT_TOP_OF_PAGE_1.
        
        ENDFORM. "TOP_OF_PAGE_1
        Y así con los demás.

        Creo que no me olvidé nada. Espero te sirva.
        Saludos.

        Comentario

        • RAMONES
          Member
          • mar
          • 69

          #5
          Muchas gracias por el ejemplo y la molestia....voy a chequearlo y espero poder usarlo y aprenderlo, muchas gracias nuevamente!!!
          El mundo es Redondo y de Ricota......

          Comentario

          • RAMONES
            Member
            • mar
            • 69

            #6
            El ejemplo que me pasaste me sirvio a la perfeccion! Te lo agradezco....ahora que me saque este tema de encima quisiera saber si se pueden hacer varios ALV en un mismo reporte pero que sean jerarquicos cada uno...se puede? Muchas gracias por el apoyo...
            El mundo es Redondo y de Ricota......

            Comentario

            Trabajando...