Consulta sobre ALV List

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • danieldl
    Member
    • feb
    • 70

    #1

    Consulta sobre ALV List

    Si quisiera ver en pantalla un ALV LIST com encabezados y logos la funcion REUSE_ALV_LIST_DISPLAY lo mostraria?

    desde ya gracias
  • Juan Jo
    Member
    • abr
    • 80

    #2
    Alv

    Hola !!

    Yo tengo un problema critico, entrando al foro veo que existe este tema relacionado con ALV, les cuento...
    En la transaccion VB(8 Lista de acuerdos, deseo inlcuir mas campos en la lista de visualizacion, como debo hacerlo?
    Gracias anticipadas..
    Juan Jo

    Comentario

    • bono
      Junior Member
      • mar
      • 21

      #3
      Aqui os enviuo una plantilla para crear consultas ALV

      REPORT ZPLANTILLA_ALV.


      * Tabla interna donde almacenar info Base Datos
      data: begin of it_datos occurs 0,
      <...>
      end of it_datos.

      * Tabla interna donde almacenar info a mostrar mediante ALV
      DATA: BEGIN OF it_list OCCURS 0,
      sel, "campo de selección
      <...>
      end of it_list.

      * Objetos para ALV
      TYPE-POOLS: slis, "necesario para ALV
      icon. "sólo si se utilizan iconos

      DATA: repid LIKE sy-repid.
      * Obligatorio, estructuras para ALV grid
      DATA: s_layout TYPE slis_layout_alv,
      fieldcat TYPE slis_t_fieldcat_alv,
      tab_sort TYPE slis_t_sortinfo_alv,
      gt_list_top_of_page TYPE slis_t_listheader.

      * Criterios de selección
      SELECTION-SCREEN BEGIN of block b1 with frame title text-001.
      PARAMETERS: p_em LIKE zdat_sgaa_zmigo-carta_porte.
      SELECTION-SCREEN END of block b1.


      INITIALIZATION.
      repid = sy-repid.

      START-OF-SELECTION.
      PERFORM cargar_datos.

      IF it_datos[] IS INITIAL.
      MESSAGE s899(v1) WITH 'No se han seleccionado registros'.
      EXIT.
      ELSE.
      PERFORM visualizar_info.
      ENDIF.



      *&---------------------------------------------------------------------*
      *& Form visualizar_info
      *&---------------------------------------------------------------------*
      * text
      *----------------------------------------------------------------------*
      * --> p1 text
      * <-- p2 text
      *----------------------------------------------------------------------*
      FORM visualizar_info.

      * Generación tabla it_tabla a partir de los datos obtenidos en la tabla
      * it_datos.
      PERFORM construir_tabla.
      * Parámetros ALV
      PERFORM parametros_alv.
      * Construcción del catálogo de campos
      PERFORM field_catalog_build TABLES fieldcat.
      * Tabla de orden de salida (opcional)
      PERFORM sorttab_build TABLES tab_sort.
      * Cabecera
      PERFORM comment_build USING gt_list_top_of_page[].
      * MOSTRAR ALV
      PERFORM mostrar_alv.
      ENDFORM. " visualizar_info
      *&---------------------------------------------------------------------*
      *& Form parametros_alv
      *&---------------------------------------------------------------------*
      * text
      *----------------------------------------------------------------------*
      * --> p1 text
      * <-- p2 text
      *----------------------------------------------------------------------*
      FORM parametros_alv.
      s_layout-box_fieldname = 'SEL'. "campo de selección de it_list
      s_layout-colwidth_optimize = ''.
      s_layout-zebra = 'X'.
      s_layout-f2code = 'DISPLAY'.
      ENDFORM. " parametros_alv
      *&---------------------------------------------------------------------*
      *& Form field_catalog_build
      *&---------------------------------------------------------------------*
      * text
      *----------------------------------------------------------------------*
      * -->P_FIELDCAT text
      *----------------------------------------------------------------------*
      FORM field_catalog_build TABLES p_fieldcat TYPE slis_t_fieldcat_alv.
      DATA inclname LIKE trdir-name.
      DATA v_text(50).

      MOVE repid TO inclname.

      CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
      EXPORTING
      i_program_name = repid
      i_internal_tabname = 'IT_LIST'
      i_inclname = inclname
      CHANGING
      ct_fieldcat = p_fieldcat[].

      LOOP AT p_fieldcat.

      p_fieldcat-key = ''. "los campos clave aparecen los primeros

      CASE p_fieldcat-fieldname.
      WHEN 'SEL'.
      * No mostrar ni dejar incluir campo
      p_fieldcat-no_out = 'X'.
      p_fieldcat-tech = 'X'.
      WHEN 'ERR_1'. "Cambio labels
      p_fieldcat-seltext_s =
      p_fieldcat-seltext_m =
      p_fieldcat-seltext_l =
      p_fieldcat-reptext_ddic = 'No existe en tabla AA'.
      p_fieldcat-checkbox = 'X'. "Mostrar como checkbox
      ENDCASE.

      MODIFY p_fieldcat.

      ENDLOOP.

      ENDFORM. " field_catalog_build

      *---------------------------------------------------------------------*
      * FORM sorttab_build *
      *---------------------------------------------------------------------*
      FORM sorttab_build TABLES tx_sort TYPE slis_t_sortinfo_alv.
      CLEAR tx_sort. REFRESH tx_sort.
      ENDFORM.

      *---------------------------------------------------------------------*
      * FORM comment_build *
      *---------------------------------------------------------------------*
      FORM comment_build USING lt_top_of_page TYPE slis_t_listheader.

      DATA ls_line TYPE slis_listheader.
      DATA mes(50).

      CLEAR lt_top_of_page. REFRESH lt_top_of_page.

      * LIST HEADING LINE: TYPE H
      CLEAR ls_line.
      ls_line-typ = 'H'.

      * LS_LINE-KEY: NOT USED FOR THIS TYPE
      ls_line-info = sy-title.
      APPEND ls_line TO lt_top_of_page.

      * STATUS LINE: TYPE S
      CLEAR ls_line.
      ls_line-typ = 'S'.
      ls_line-key = 'Nombre:'.
      ls_line-info = sy-uname.
      APPEND ls_line TO lt_top_of_page.
      ls_line-key = 'Fecha:'.
      WRITE sy-datum TO ls_line-info.
      APPEND ls_line TO lt_top_of_page.
      ls_line-key = 'Centro:'.
      CONCATENATE s_werks-low '-' s_werks-high INTO ls_line-info
      SEPARATED BY space.
      APPEND ls_line TO lt_top_of_page.
      ls_line-key = 'Almacén:'.
      CONCATENATE s_lgort-low '-' s_lgort-high INTO ls_line-info
      SEPARATED BY space.
      APPEND ls_line TO lt_top_of_page.

      * ACTION LINE: TYPE A
      CLEAR ls_line.
      ls_line-typ = 'A'.

      * LS_LINE-KEY: NOT USED FOR THIS TYPE
      ls_line-info = sy-cprog.
      APPEND ls_line TO lt_top_of_page.

      ENDFORM.

      *---------------------------------------------------------------------*
      * FORM mostrar_alv *
      *---------------------------------------------------------------------*
      FORM mostrar_alv.
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
      EXPORTING
      i_callback_program = repid
      i_callback_top_of_page = 'TOP_OF_PAGE'
      i_callback_pf_status_set = 'PF_STATUS_SET'
      i_callback_user_command = 'USER_COMMAND'
      is_layout = s_layout
      it_fieldcat = fieldcat
      it_sort = tab_sort
      i_save = 'A'
      TABLES
      t_outtab = it_list
      EXCEPTIONS
      program_error = 1
      OTHERS = 2.

      IF sy-subrc <> 0.
      MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
      WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
      ENDIF.

      ENDFORM.

      *---------------------------------------------------------------------*
      * FORM pf_status_set *
      *---------------------------------------------------------------------*
      * ........ *
      *---------------------------------------------------------------------*
      FORM pf_status_set USING gt_extab TYPE slis_t_extab.

      SET TITLEBAR 'ALV' WITH sy-title.
      SET PF-STATUS 'ALV'.

      ENDFORM.


      *---------------------------------------------------------------------*
      * FORM top_of_page *
      *---------------------------------------------------------------------*
      * ........ *
      *---------------------------------------------------------------------*
      FORM top_of_page.

      * Para mostrar un logo en la cabecera hay que crearlo en:
      * Transacción OAOR
      * Oficina -> Documentos comerciales ->
      * Documentos -> Buscar (nombre de clase: Pictures, tipo de clase: OT)

      * Es un transacción un poco complicada de utlizar pero desde ahí
      * se carga el logo como el del ejemplo ZLOGO_CALIER

      CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
      EXPORTING
      * i_logo = 'ZLOGO_CALIER'
      it_list_commentary = gt_list_top_of_page.

      WRITE: 'Pág.:', sy-pagno LEFT-JUSTIFIED.

      ENDFORM. " top_of_page

      FORM user_command USING f_ucomm LIKE sy-ucomm
      i_selfield TYPE slis_selfield.

      * READ TABLE it_list INDEX i_selfield-tabindex.
      *
      * CLEAR: v_okcode, v_refresh.
      *
      * MOVE f_ucomm TO v_ucomm.
      *
      * CASE f_ucomm.
      * WHEN 'ZDEL'.
      * CALL SCREEN 2 STARTING AT 45 2.
      * IF NOT v_refresh IS INITIAL.
      * PERFORM get_data.
      * PERFORM construir_lista. "Actualizar info ALV
      * i_selfield-refresh = 'X'.
      * ENDIF.
      * WHEN 'DISPLAY'.
      * CASE i_selfield-fieldname.
      * WHEN 'EBELN'.
      * PERFORM visualizar_doc USING it_list-ebeln '00000'.
      * WHEN 'EBELP'.
      * PERFORM visualizar_doc USING it_list-ebeln it_list-ebelp.
      * WHEN 'MATNR'.
      * SET PARAMETER ID 'MAT' FIELD it_list-matnr.
      * CALL TRANSACTION 'MM03' AND SKIP FIRST SCREEN.
      * ENDCASE.
      * ENDCASE.

      * Si queremos salir a la pantalla de selección, podemos llenar f_ucomm
      * con el código asignado a BACK (&F03 si copias el status
      * STANDARD_FULLSCREEN del programa SAPLSLVC_FULLSCREEN)

      * f_ucomm = '&F03'.

      ENDFORM.


      *&---------------------------------------------------------------------*
      *& Form construir_tabla
      *&---------------------------------------------------------------------*
      * text
      *----------------------------------------------------------------------*
      * --> p1 text
      * <-- p2 text
      *----------------------------------------------------------------------*
      FORM construir_tabla.
      LOOP AT it_datos.
      CLEAR it_list.
      MOVE-CORRESPONDING it_datos TO it_list.
      APPEND it_list.
      ENDLOOP.
      ENDFORM.

      form cargar_datos.
      * Llenar tabla it_datos con SQL a BBDD
      endform.

      Comentario

      • danieldl
        Member
        • feb
        • 70

        #4
        Alv List

        Compañeros del foro necesito a ver quien me puede pasar algun pgm ejemplo de ALVList sencillo pero completo y si es posible explicado en cada sentencia, además , el ALV list que veo en pantalla si le quiero pasar titulos y logo como saldria en papel tambien lo veria?
        Espero vuestra respuesta, desde ya gracias.

        Comentario

        • Marco
          Senior Member
          • abr
          • 141

          #5
          Hola,
          El ejemplo q han enviado esta bien... utilizalo como plantilla.
          En descargas tambien hay varios ejemplos explicados (cheka ahi).

          Sobre los titulos, al momento de cargar las columnas del ALV eso lo pondra automatico segun el campo de tabla q le des en la opcion ref_fieldname en tu llenado de ALV, y si no te gusta ese titulo, tu puedes declar un Elemento de Texto y ahi poner el titulo, luego en el campo seltext_l.

          Espero que te ayude en algo.
          Saludos,

          Comentario

          • chamoe
            Junior Member
            • mar
            • 4

            #6
            El problema de este ejemplo es que el top_of_page es bastante limitado, me refiero que el logo no te deja ponerlo donde tu quieres, me parece que lo pone en la izquierda.

            Yo me encontré con este problema, necesitaban un listado y queria que apareciese el logo, un titulo con letras mas grandes, etc...
            No se si se puede hacer con alv, yo acabé haciendo un smartform, al fin y al cabo se le pasa la misma tabla interna.


            espero que te sirva

            Comentario

            • chamoe
              Junior Member
              • mar
              • 4

              #7
              Originalmente publicado por danieldl
              Si quisiera ver en pantalla un ALV LIST com encabezados y logos la funcion REUSE_ALV_LIST_DISPLAY lo mostraria?

              desde ya gracias
              Con el rollo que he soltado, y no te he contestado la pregunta,

              No lo muestra, se muestra con el grid, y com he dicho antes, es limitado

              Comentario

              • Ariamxp
                Junior Member
                • ago
                • 2

                #8
                no logro que me funcione ese codigo, me da un error en (zdat_sgaa_zmigo-carta_porte) yo creo que es por las tablas internas que debo declarar al principio. que nombre deberia DARLES A ESAS TABLAS???

                Comentario

                • cubanito
                  Junior Member
                  • nov
                  • 13

                  #9
                  Hola...
                  Todo lo que quieres hacer lo puedes lograr con objetos. No es sencillo, pero es posible. Puedes poner tantos "logos" como quieras y tantos "ALV's" como quepan en tu pantalla...
                  Si quieres te puedo enviar toda una serie de programas como ejemplo o puedes darte una vueltecita por las siguientes transacciones que están llenas de ejemplos sobre lo que te interesa y mil cosas mas:
                  La SE83, la DWDM y, por supuesto, la transacción ABAPDOCU.

                  Saludos!!!

                  Comentario

                  Trabajando...