Seleccionar página

Modificar la cabecera en un CL_SALV_TABLE

por | Feb 21, 2019 | ABAP, SAP

Miguel me ha pedido hacer un programa que devuelva un ALV. Simplemente necesita hacer unas selecciones y mostrar el resultado por pantalla. Algo que vamos a relsolver sobre la marcha.

La forma más fácil según mi criterio es hacerlo con objetos.

Necesitamos definir:

  DATA: lt_alv_log TYPE REF TO cl_salv_table,
        lo_columns TYPE REF TO cl_salv_columns,
        lo_column TYPE REF TO cl_salv_column.

Lo primero es usar el método FACTORY del siguiente modo:

TRY.
    CALL METHOD cl_salv_table=>factory
      IMPORTING
        r_salv_table = lt_alv_log
      CHANGING
        t_table      = lt_salida.
  ENDTRY.

Donde LT_SALIDA es la tabla con los datos que queremos mostrar. En nuestro caso Miguel necesita que se defina el tipo de la siguiente forma:

TYPES: BEGIN OF ty_salida,
  factura TYPE bkpf-awkey,
  fecha TYPE budat,
  documento TYPE bkpf-belnr,
  estatus TYPE string,
  motivo TYPE string,
  END OF ty_salida.

DATA lt_salida TYPE TABLE OF ty_salida.

El siguiente  paso es informar las columnas que se van a mostrar mendiante la instrucción GET_COLUMNS()

  lo_columns = lt_alv_log->get_columns( ).

Y para que salga bonito para a decirle que optimice el ancho de la columna con la instrucción SET_OPTIMIZE

  lo_columns->set_optimize( abap_true ).

Si no quisieramos modificar la cabecera solo habría que añadir el método para mostrar el ALV que es el DISPLAY

  lt_alv_log->display( ).

Pero para Modificar la cabecera en un CL_SALV_TABLE hay que añadir las instrucciones siguientes antes del DISPLAY

TRY .
      lo_column = lo_columns->get_column(‘FACTURA’).
      lo_column->set_long_text(‘Número de Factura’).
      lo_column->set_medium_text(‘Nº Factura’).
      lo_column->set_short_text(‘N Fac.’).

      lo_column = lo_columns->get_column(‘FECHA’).
      lo_column->set_long_text(‘Fecha de Contabilización’).
      lo_column->set_medium_text(‘F Contabilización’).
      lo_column->set_short_text(‘F Contb.’).

      lo_column = lo_columns->get_column(‘DOCUMENTO’).
      lo_column->set_long_text(‘Número de Documento Contable’).
      lo_column->set_medium_text(‘N Doc. Contable’).
      lo_column->set_short_text(‘N Doc Cont’).

      lo_column = lo_columns->get_column(‘ESTATUS’).
      lo_column->set_long_text(‘Estado de Proceso’).
      lo_column->set_medium_text(‘Estado Proceso’).
      lo_column->set_short_text(‘Estado’).

      lo_column = lo_columns->get_column(‘MOTIVO’).
      lo_column->set_long_text(‘Motivo’).
      lo_column->set_medium_text(‘Motivo’).
      lo_column->set_short_text(‘Motivo’).

    CATCH cx_salv_not_found.
  ENDTRY.

Y eso es todo, simple y rápido. Miguel está contento, en la máquina de los resfrescos me espera 😉

Mi diario SAP

¿PUEDO HACER ALGO POR TI? ¡CUENTA CONMIGO!

v

COntacto

Calle Infanta Cristina 17
41140, Isla Mayor (Sevilla)
luicarper17@gmail.com
(+34) 600 96 36 94