Display filtered data in SM30

Crearemos una tabla transparente con N campos y cuando lo visualicemos por la SM30 haremos que muestre filtrado por un valor específico de algún campo.

Para el ejemplo la tabla se llamará ZTRH_STAFF


Generaremos la actualización de la tabla para poder dar mantenimiento por la SM30


Ingresamos a la tcode: SM30

A modo de ejemplo ingresaré estos 3 registros 
Observamos que sólo los 2 primeros registros tienen valor 1 en el campo 'status'
1: Activo
0: Inactivo

Por la tcode SE16 consultamos la tabla: ZTRH_STAFF

Ahora nos enfocaremos en el objetivo.
Haremos que al ingresar a la SM30 sólo muestre los que tiene status con valor 1

Veamos la siguiente manera de dar solución a este objetivo.
Ingresamos a la SE38 creamos un nuevo programa
para el ejemplo el programa se llamará ZRHP001

*&---------------------------------------------------------------------*
*& Report ZRHP001
*&---------------------------------------------------------------------*
REPORT ZRHP001.


DATA: gtd_vimsellist TYPE STANDARD TABLE OF vimsellist.
FIELD-SYMBOLS: <gtd_vimsellist> LIKE LINE OF gtd_vimsellist.


INITIALIZATION.
PERFORM f_populate_vimsellist.
PERFORM f_view_maintenance_call.


*&---------------------------------------------------------------------*
*& Form F_VIEW_MAINTENANCE_CALL
*&---------------------------------------------------------------------*
*Call Extended Table Maintenance (View Maint) Highest Level
*----------------------------------------------------------------------*

FORM f_view_maintenance_call .

CALL FUNCTION 'VIEW_MAINTENANCE_CALL'
  EXPORTING
     action = 'U'
     view_name = 'ZTRH_STAFF'
  TABLES
     dba_sellist = gtd_vimsellist
  EXCEPTIONS
    client_reference = 1
    foreign_lock = 2
    invalid_action = 3
    no_clientindependent_auth = 4
    no_database_function = 5
    no_editor_function = 6
    no_show_auth = 7
    no_tvdir_entry = 8
    no_upd_auth = 9
    only_show_allowed = 10
    system_failure = 11
    unknown_field_in_dba_sellist = 12
    view_not_found = 13
    maintenance_prohibited = 14
    OTHERS = 15.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
ENDFORM. " F_VIEW_MAINTENANCE_CALL 

*&---------------------------------------------------------------------*
*& Form F_POPULATE_VIMSELLIST
*&---------------------------------------------------------------------*
*Llenar los valores en la tabla interna gtd_vimsellist
*La cual ingresará en la función: 'VIEW_MAINTENANCE_CALL'
* TABLE: dba_sellist
*----------------------------------------------------------------------*
FORM f_populate_vimsellist .

  FREE gtd_vimsellist.
  REFRESH gtd_vimsellist.
  APPEND INITIAL LINE TO gtd_vimsellist ASSIGNING <gtd_vimsellist>.
  <gtd_vimsellist>-viewfield = 'STATUS'.
  <gtd_vimsellist>-operator = 'EQ'.
  <gtd_vimsellist>-value = '1'.
ENDFORM. " F_POPULATE_VIMSELLIST

Nuestro programa tendrá 2 rutinas:
  1. Para llenar los valores en la tabla VIMSELLIST
  2. Para invocar a la función VIEW_MAINTENANCE_CALL


En la rutina F_POPULATE_VIMSELLIST ingresamos las condiciones de selección, por ejemplo el operador EQ y los valores a considerar. Para este ejemplo el campo es STATUS y el único valor a considerar es cuando STATUS sea igual a 1

Luego llenado la tabla interna GTD_VIMSELLIST invocamos a la función VIEW_MAINTENANCE_CALL en la cual le indicamos los siguientes parámetros  de exportación:
ACTION = 'U'
VIEW_NAME = 'ZTRH_STAFF' (El nombre de nuestra tabla)

En la sección TABLES
DBA_SELLIST = GTD_VIMSELLIST (la tabla interna que contiene los parámetros de selección)

La función: VIEW_MAINTENANCE_CALL llamará a la SM30 con los registros filtrados.

Creamos una transacción al programa, grabamos y activamos.

Ejecutamos la transacción y ahora visualizamos sólo los registros con estado 1

Clic aquí para ver otro Post donde se plantea 3 casos para modificar la vista de actualización SM30


Nos vemos en el siguiente Blog ;)
MAGALEX

Comentarios

Entradas populares de este blog

Modificando Vista de Actualización SM30

User Exit para VA01 y VA02

Buttons and events in ALV GRID and ALV GRID OO