ALV Grid Editable – Actualizar datos modificados en la tabla interna del reporte

30 12 2020

En un reporte ALV Grid editable los datos modificados no se actualizan en la tabla interna si el usuario no apreta ENTER.
Con el siguiente código lo podremos solucionar:

*Colocar este código en el FORM del User Command antes del CASE del sy-ucomm
DATA: lo_grid TYPE REF TO cl_gui_alv_grid.
IF lo_grid IS INITIAL.
CALL FUNCTION ‘GET_GLOBALS_FROM_SLVC_FULLSCR’
IMPORTING
e_grid = lo_grid.
ENDIF.
IF NOT lo_grid IS INITIAL.
CALL METHOD lo_grid->check_changed_data.
ENDIF.

*Con ese código la tabla interna del reporte ALV Grid tendrá actualizados los datos modificados por el usuario.


Technorati tags:





BAPIS para el Libro de Planificación (Planning Book)

28 12 2020

BAPI_PBSRVAPS_CHANGEKEYFIGVAL2 sirve para actualizar valores de un Key Figure para un libro de planificación.

Mientras que la BAPI_PBSRVAPS_GETDETAIL2 se utiliza para leer valores de un Key Figure de una vista de datos para un libro de planificación.


Technorati tags:





Función que obtiene el contenido/datos de un LAYOUT de ALV

17 12 2020

LT_DBDATA_READ_FROM_LTDX es una función que nos devuelve todo el contenido/datos que tiene un LAYOUT de un reporte ALV.

Para su ejecución hay que llenar la estructura IS_VARKEY con:
– Campo REPORT: completar nombre técnico del programa/reporte ALV.
– Campo VARIANT: completar con el nombre del LAYOUT.
– Campo Type: completar con F.

Tras la ejecución la función devuelve 4 tablas:

  • T_DBFIELDCAT: Devuelve toda la información del Field Catalog de ese Layout en particular. Por ejemplo qué columnas son visibles y cuáles ocultas, posición de las columnas, etc.
  • T_DBSORTINFO: Devuelve si para ese Layout en particular se aplicó algún tipo de SORT (ordenamiento) en el reporte.
  • T_DBFILTER: Devuelve si para ese Layout en particular se aplicó algún tipo de filtro en el reporte.
  • T_DBLAYOUT: Devuelve si el ALV tiene alguna configuración especial como ser la opción ZEBRA o Column Width Optimization, etc.


Technorati tags:





Crear tabla interna de forma dinámica

27 11 2020

Con la siguiente porción de código se puede crear una tabla interna de forma dinámica a partir de un Field Catalog (fieldcat).

DATA:
FIELD-SYMBOLS: <fs_table> TYPE STANDARD TABLE,
                    <fs_wa>    TYPE any.
DATA: dyn_table        TYPE REF TO data,
           dyn_line          TYPE REF TO data,
           ltb_field_cat  TYPE lvc_t_fcat.

*Lo primero es cargar el Field Catalog (la tabla interna ltb_field_cat) por ejemplo con la función ‘LVC_FIELDCATALOG_MERGE

*Y a continuación podemos modificar el Field Catalog como queramos. Por ejemplo quedarnos únicamente con los campos/columnas visibles:

SORT ltb_field_cat BY no_out.
DELETE ltb_field_cat WHERE no_out = abap_true.

SORT ltb_field_cat BY col_pos.

*Luego entonces creamos la tabla interna dinámica y se asigna al Field Symbol:

        CALL METHOD cl_alv_table_create=>create_dynamic_table
          EXPORTING
            it_fieldcatalog = ltb_field_cat
          IMPORTING
            ep_table        = dyn_table.
        ASSIGN dyn_table->* TO <fs_table>.

*Y también creamos su respectiva work area dinámica y se asigna al Field Symbol

 CREATE DATA dyn_line LIKE LINE OF <fs_table>.
 ASSIGN dyn_line->* TO <fs_wa>.

*Finalmente cargamos con datos la tabla dinámica que creamos en el paso anterior. Se puede hacer un select into a la tabla <fs_table>.
O bien con un código como el siguiente con datos de otra tabla interna previa:

  LOOP AT tb_report ASSIGNING FIELDSYMBOL(<lwa_report>).
          MOVE-CORRESPONDING <lwa_report> TO <fs_wa>.
          APPEND <fs_wa> TO <fs_table>.
  ENDLOOP.


Technorati tags:





Agregar íconos en pantalla de selección

21 06 2016

En nuestra pantalla de selección podemos agregar íconos al costado de cada parámetro:
Dibujo

 

Para esto simplemente hay que agregar una “combinación de caracteres” (código ID) al comienzo de los textos de selección:
Dibujo
Ruta: Goto –> Text Elements –> Selection texts

 

Cada ícono tiene su propia combinación de caracteres:
Dibujo

 

Y con este programa podemos conocer todos los íconos y su respectivo ID:
DATA :
gs_icon TYPE ICON,
gt_icon TYPE TABLE OF ICON.
SELECT * FROM icon INTO TABLE gt_icon.
LOOP AT gt_icon INTO gs_icon.
WRITE :/
gs_icon-name,
33 '@',
34 gs_icon-id+1(2),
36 '@',
40 gs_icon-id.
ENDLOOP.

 


Technorati tags: