ALV OO de FONDO

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • oskymoreok
    Junior Member
    • jul
    • 25

    #1

    ALV OO de FONDO

    Hola como estan? les comento, basicamente comence a trabajar con metodos funciones y objetos, la idea es mostrar un alv con un titulo dinamico, puedo hacer todo el inconveniente que al correrlo de fondo no me aparece el titulo, no se si tendran una idea






    hasta ahora probé haciendo lo siguiente
    Obejeto y seteeo del evento top_op_page

    Tambien utilice metodos de la clase
    CL_GUI_CUSTOM_CONTAINER

    SET_TITLE_SIZE
    SET_TITLE_STYLE

    Tambien setee el titulo
    SET TITLEBAR 'T9001_1'.


    Tambien dividi el cointener en dos uno para el top_of_page y otro para el alv restante

    El codigo que tengo armado en el PBO es el siguiente

    * Chequea la funcion de fondo
    IF cl_gui_alv_grid=>offline( ) IS INITIAL.
    CREATE OBJECT gf_contenedor
    EXPORTING
    container_name = 'GF_CONTENEDOR'.

    CREATE OBJECT contenedor_alv
    EXPORTING
    i_parent = gf_contenedor.


    ELSE.
    * corre de fondo
    CREATE OBJECT contenedor_alv
    EXPORTING
    i_parent = contenedor_acopla.

    ENDIF.

    CALL METHOD contenedor_alv->set_table_for_first_display
    EXPORTING
    is_layout = gs_layout
    CHANGING
    it_fieldcatalog = gt_fieldcat[]
    it_outtab = gt_informe[].

    CALL METHOD contenedor_alv->set_gridtitle
    EXPORTING
    i_gridtitle = 'Osqui'.
  • cmacvicar
    Member
    • may
    • 43

    #2
    set_list_header

    Intenta con el Metodo set_list_header de la clase cl_salv_display_settings

    Ej:

    * Carga Titulo del ALV
    gr_display = gr_table->get_display_settings( ).
    gr_display->set_striped_pattern( cl_salv_display_settings=>true ).
    DESCRIBE TABLE ti_sal LINES sy-index.
    WRITE sy-index TO w_tit LEFT-JUSTIFIED.
    CONCATENATE sy-title '[' w_tit ']' INTO w_tit SEPARATED BY space.
    gr_display->set_list_header( w_tit ).

    * En este Ejemplo muestra al final del titulo la cantidad de registros encontrados.
    Que estes, bien.


    Suerte chau

    Comentario

    • oskymoreok
      Junior Member
      • jul
      • 25

      #3
      Funciona perfecto es lo que buscaba! ahora te consulto otra cosa ya que el metodo

      gr_table->display( ).

      envia la tabla asi cruda, y revice los metodos que tiene esa clase, no sabes como pasarle un fieldcat?

      Comentario

      • cmacvicar
        Member
        • may
        • 43

        #4
        Catalogo en ALV OO

        Hola,

        Efectivamente. Puedes pesarle una tabla interna y los textos los toma de los dominios asociados a su declaración o campo de referencia.

        Si de todas formas quieres modificar el catalogo para ponerle hotspot o lo que sea es asi:

        DATA: gr_columns TYPE REF TO cl_salv_columns_table. " Clase Genera una Instancia para Modificar los Textos de una Columna del ALV
        DATA: gr_column TYPE REF TO cl_salv_column_table. " Clase Genera una Instancia para Modificar los Textos de una Columna del ALV

        gr_column ?= gr_columns->get_column( 'MATNR' ).
        gr_column->set_long_text( 'Mat.' ).
        gr_column->set_medium_text( 'Material' ).
        gr_column->set_short_text( 'Codigo de Material' ).
        gr_column->set_cell_type( if_salv_c_cell_type=>hotspot ). " hotspot
        gr_column->set_visible( ' ' ). " Dejar Oculta la columna

        Te recomiendo crear una macro para no repetir este código n veces.
        Que estes, bien.


        Suerte chau

        Comentario

        • oskymoreok
          Junior Member
          • jul
          • 25

          #5
          Disculpa que te moleste nuevamente pero me da un DUMP

          Err.tmpo.ejec. OBJECTS_OBJREF_NOT_ASSIGNED
          Excep. CX_SY_REF_IS_INITIAL
          Fecha y hora 25.03.2015 15:08:09



          An exception occurred that is explained in detail below.
          The exception, which is assigned to class 'CX_SY_REF_IS_INITIAL', was not
          caught in
          procedure "ALV" "(FORM)", nor was it propagated by a RAISING clause.
          Since the caller of the procedure could not have anticipated that the
          exception would occur, the current program is terminated.
          The reason for the exception is:
          You attempted to use a 'NULL' object reference (points to 'nothing')
          access a component (variable: "GR_COLUMNS").
          An object reference must point to an object (an instance of a class)
          before it can be used to access components.
          Either the reference was never set or it was set to 'NULL' using the
          CLEAR statement.


          y el error en el codigo es

          >>>>> gr_column ?= gr_columns->get_column( 'DATUM_BAL' ).

          de paso te pregunto que es el '?='

          te comento yo entendi, segun el errror que gr_columns es una variables que estoy tratando de meter en una referencia null de gr_column, estoy en lo cierto? que deberia hacer?

          Comentario

          Trabajando...