PDA

Ver la Versión Completa : validacion de datos dynpro 1000


risaval
09/11/10, 19:46:42
Hola que tal a todos, antes de preguntar me puse a investigar un poco si encontre algunos temas de ayuda pero no logré entenderlo a la perfección, espero me puedan ayudar, voy comenzando en el mundo sapero en el modulo de abap y ya estoy trabajando en mi primer report, la duda que tengo es la siguiente: en la dynpro 1000 se ingresan los datos directamente ahi quiero hacer unas cuantas validaciones, primero que el parametro de entrada del campo de ejercicio (bkpf-gjahr) concuerde con el año del parametro de entrada de la fecha del documento (bkpf-bldat) y la otra validacion es que verifique los parametros de entrada en los campos bseg-lifnr-low y bseg-lifnr-high realmente esten bien ingresados y no esten al reves, espero me puedan ayudar.
Saludos y de antemano gracias

Mari.Sole
09/11/10, 21:50:04
Hola,
Me quedé con dudas con respecto a tu explicación y ante esa duda te paso una breve explicación de la opción más sencilla.

Si estás trabajando en un Reporte con Selection-Screen lo primero que puedes hacer es determinar la rutina de validacion.
Si las validaciones deben hacerse una vez que el usuario ingresó todos los parámetros de la Selection Screen al presionar F8 irá al evento START-OF-SELECTION.
Dentro de este evento deberás determinar el nombre de dicha rutina.
Ejemplo:

TABLES: Mara.
*** Selection-Screen ***
SELECT-OPTIONS s_matnr FOR mara-matnr.

***Programa ***
START-OF-SELECTION.

perform validar_datos.

END-OF-SELECTION.


FORM validar_datos.

Select matnr
From Mara
Into Table I_Mara
Where matnr IN s_matnr.

IF sy-subrc IS NOT INITIAL (ni un solo material del rango en el maestro de materiales)
Message S001(ZZ) display like 'E'. (mensaje "Material no existe"
LEAVE LIST-PROCESSING. (devuelve a la Selection Screen para que ingrese nuevos valores el usuario
ENDIF.

ENDFORM.

En tu caso debería chequear en tu validacion que los parámetros ingresados sean iguales, si son iguales que siga haciendo el resto de las validaciones y sino que muestre un mensaje avisando al usuario que debe corregir los datos de entrada.

Ejemplo de tu primera validacion:

Parameters: p_gjahr type bkpf-gjahr,
p_bldat type bkpf-bldat.

***Programa ***
START-OF-SELECTION.

perform validar_datos.

FORM validar_datos.

IF P_GHJAHR = P_BLDAT(4). (tomo los primeros 4 caracteres que es el año)

SIGO EL PROCESO SIGUIENTE.

ELSE.

Message S001(ZZ) display like 'E'. (mensaje "Texto que necesites"
LEAVE LIST-PROCESSING. (devuelve a la Selection Screen para que ingrese nuevos valores)
ENDIF.

ENDFORM.


Con respecto a la segunda validación, SAP lo hace sin especificar rutinas. Los Select-Options al estar declarados del tipo bseg-lifnr ya traen todas las validaciones correspondientes para dicho campo y no es necesario que controles que realmente está ingresando un LIFNR ni tampoco que está ingresando primero el del valor menor y luego el mayor. Eso también está en el tratamiento estandard de SAP.

Si lo que estás haciendo es un Modul Pool. Ahi el tema de validaciones tiene un tratamiento diferente. Deberías establecer las rutinas en el PBO o PAI según corresponda.

Espero te sirva la Info y si no entendí bien tu consulta, comentame con más detalle así puedo ayudarte mejor.

Saludos!

VLozano
10/11/10, 06:49:40
Hola que tal a todos, antes de preguntar me puse a investigar un poco si encontre algunos temas de ayuda pero no logré entenderlo a la perfección, espero me puedan ayudar, voy comenzando en el mundo sapero en el modulo de abap y ya estoy trabajando en mi primer report, la duda que tengo es la siguiente: en la dynpro 1000 se ingresan los datos directamente ahi quiero hacer unas cuantas validaciones, primero que el parametro de entrada del campo de ejercicio (bkpf-gjahr) concuerde con el año del parametro de entrada de la fecha del documento (bkpf-bldat) y la otra validacion es que verifique los parametros de entrada en los campos bseg-lifnr-low y bseg-lifnr-high realmente esten bien ingresados y no esten al reves, espero me puedan ayudar.
Saludos y de antemano gracias
Mira la ayuda del evento AT SELECTION-SCREEN. Si validas en el START-OF-SELECTION, el usuario ya no podrá modificar los datos, y el tratamiento de errores es mucho más complicado.