buenas tardes, estoy realizando un reporte,
asi que tengo dos parametros, el primer parametro al llenarlo, se debe convertir el otro en obligatorio pero no se de que manera, se que los parametros los conviertes con OBLIGATORY pero no se de que manera convertirlo al llenar otro parametro.
PD: Apenas estoy iniciando en el mundo de SAP, de ante mano gracias
Ok, habías publicado este tema en otra categoría, ya le he movido a la categoría de la versión que usas. Lee por favor: Cómo usar el foro de Consultoria-SAP y también pasa por #presentaciones así creas un debate nuevo para tu presentación, y nos contas qué haces, cuánto llevas con SAP etc, así te ayudamos mejor en las consultas que abras.
Podrías usar una validación en el evento AT SELECTION SCREEN, Si el primer campo tiene información, validas que el segundo también, si no cumple mandas un mensaje sencillo indicado que debe de llenarse.
Según se el valor de OBLIGATORY no se puede asignar en tiempo de ejecución, te tocaría ya colocarlo despues del START-OF-SELECTION validar si está lleno o no o de otra forma como dice @Alonso_mx.
Efectivamente, cómo te comenta Alonso_mx, en lugar de utilizar el comando OBLIGATORY puedes validar el segundo de esta forma:
IF p_valor1 IS INITIAL.
* Sigues con tu flujo normal
ELSE. "Si el primer parametro tiene algún valor
IF p_valor2 IS INITIAL.
MESSAGE TEXT-e01 TYPE 'S' DISPLAY LIKE 'E'. "Mensaje de valor 2 obligatorio
ELSE.
"Sigues con el flujo normal
ENDIF.
ENDIF.
Agregado a esto para que sea visual el obligatorio podes usar el siguiente evento:
AT SELECTION-SCREEN OUTPUT.
LOOP AT SCREEN.
IF p_valor1 is initial.
IF screen-name EQ p_valor2.
screen-required = ‘2’.
ENDIF.
MODIFY SCREEN.
ENDLOOP.
De esta forma esta loopeando el screen, cuando parametro 1 (p_valor1) este vacío, se mostrará la “tilde” de campo obligatorio en el parametro 2 (p_valor2).
gracias por responder, estoy tratando de llevarlo en practica pero esta instruccion no la comprendo
el parametro 2 hace la comparacion screen-name pero que vendria siendo (screen.name)
IF screen-name EQ p_valor2.
y el screen-required a que se refiere? , al ejecutarlo me marca error en el 2
Screen es la pantalla de selección, es una tabla, cuando la recorres en cada recorrido vas obteniendo cada objeto de la pantalla de seleccción, el campo NAME nos da el ID del parámetro, el objetivo es modificar el registro del parámetro 2, el que queremos poner como obligatorio, indicar en el campo required el valor 2, lo que hacemos es que el campo sea “visualmente” obligatorio, osea se va a mostrar con la “tilde” de obligatorio.
Osea nos ubicamos en el parámetro que queremos modificar y le indicamos que sea “visualmente” obligatorio, el contro del campo completado lo haces con la lógica compartida por @Jafetlo_Lo
ya quedo, muchas gracias, dejo el codigo
PARAMETERS: p_valor1 TYPE string,
p_valor2 TYPE string.
AT SELECTION-SCREEN OUTPUT.
LOOP AT SCREEN.
IF p_valor2 IS NOT INITIAL AND p_valor1 is INITIAL.
IF screen-name CS ‘p_valor1’.
screen-required = ‘2’.
MESSAGE ‘Llena valor 1’ TYPE ‘S’ DISPLAY LIKE ‘E’.
MODIFY SCREEN.
ENDIF.
ENDIF.
ENDLOOP.