Ver Mensaje Individual
  #2  
Viejo 09/11/10, 21:50:04
Mari.Sole Mari.Sole is offline
Senior Member
 
Fecha de Ingreso: nov 2010
Localización: Argentina
Mensajes: 121
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!
Responder Con Cita