Hola,
En esta publicación de blog, me gustaría mostrarle cómo validar datos en la pantalla de vista de mantenimiento antes de guardar.
Las vistas de mantenimiento son interfaces muy útiles para crear un visor y editor de tablas de base de datos. Y con eventos y ayudas de búsqueda, podemos hacerlos aún más útiles.
En esta publicación de blog, crearemos una tabla, donde podemos asignar códigos de empresa a rangos especiales para órdenes de compra. La tabla tendrá solo 3 campos, cliente, código de empresa y rango. Antes de guardar los datos en la vista de mantenimiento, comprobaremos tanto el código de la empresa como el rango y, si no son válidos, advertiremos al usuario y no permitiremos que se guarden los datos.
Mesa
Supongo que ha creado una vista de mantenimiento. Y dispuesto a agregar un evento para validar los datos. Si no sabe cómo crear una vista de mantenimiento, por favor leer en ese enlace.
Agregue el evento antes de guardar y asigne un nombre de formulario para que se llame cuando se active el evento.
Bloque de código
Haga clic en abrir editor y cree el formulario que proporcionó anteriormente (ANTES DE GUARDAR en ese ejemplo)
Arriba, desde la línea 9 a la 15 se utilizan para recopilar nuevos registros o datos de registros modificados en la tabla interna recs. total la tabla contiene todos los registros y cuando hacemos un bucle en los registros totales,
Más tarde, en la línea 19, la tabla recs se pasa a una clase que contiene lógica de validación. Ese método de clase devuelve una estructura de estado. Si el resultado no es el éxito. estamos configurando vim_abort_saving = abap_true en la línea 21. De esa manera, el ahorro no sucederá.
Y estamos mostrando un mensaje para informar al usuario en la línea 22.
Aquí están las líneas, que te serán útiles.
FORM before_save.
"Collect records to be checked
DATA : recs TYPE TABLE OF zmm_t_po_nr_cust,
rec TYPE zmm_t_po_nr_cust.
LOOP AT total.
IF <vim_total_struc> IS ASSIGNED AND ( <action> EQ 'N' OR <action> EQ 'U' ).
CLEAR rec.
MOVE-CORRESPONDING <vim_total_struc> TO rec.
APPEND rec TO recs.
ENDIF.
ENDLOOP.
"Validate changes
IF recs IS NOT INITIAL.
"Place your logic below
DATA(status) = zmm_cl_po_numbering=>validate_new_entries( recs = recs ).
IF status-status NE zutils_cl_defs=>c_stat_success.
vim_abort_saving = abap_true. "To abort saving
MESSAGE status-status_text TYPE 'S' DISPLAY LIKE 'E'.
ENDIF.
ENDIF.
ENDFORM.
Active sus cambios y vaya a sm30 para probar.
Eso es todo. Espero que sea útil para usted.
Gracias por leer.
Link de referencia
https://blogs.sap.com/2015/10/29/validate-data-in-table-maintenance-generator-event/
Calle Eloy Gonzalo, 27
Madrid, Madrid.
Código Postal 28010
Paseo de la Reforma 26
Colonia Juárez, Cuauhtémoc
Ciudad de México 06600
Real Cariari
Autopista General Cañas,
San José, SJ 40104
Av. Jorge Basadre 349
San Isidro
Lima, LIM 15073