Estoy tratando de comprobar si un campo es de hoja inicial o no en sm30 con una tabla que he hecho. Me he ido a la tabla de mantenimiento del generador, entonces Ambiente->Modificaciones->Eventos e hizo una entrada con nombre check_class con el tipo 01 (antes de guardar los datos en la base de datos) con el siguiente código:

FORM CHECK_CLASS.

IF z10ficlassfica-z_class IS INITIAL.
  MESSAGE text-001 TYPE 'E'.
ENDIF.

ENDFORM.

Funciona todo bien, excepto que cuando z10ficlassfica es inicial no permanece en el mantenimiento de la mesa y va a la sm30 primera pantalla. ¿Cómo puedo hacer que la estancia en la pantalla de mantenimiento de sm30? La esperanza que me he hecho a mí mismo claro. Gracias.

  • si utiliza el tipo de mensaje ‘E’, el contexto actual es abortado. Pruebe con otro tipo de mensaje más adecuado para su caso, por ejemplo, ‘S’ o ‘yo’. Consulte aquí para ver los diferentes tipos de mensaje y su efecto sobre la ejecución del programa: help.sap.com/saphelp_470/helpdata/en/9f/…
  • Sí, pero yo no lo quiero para guardar la entrada con el hecho de tener que campo lleno. S es para el éxito así que no es muy apropiado. Yo es por la información, no sé si es el derecho de un bien. Pero voy a intentarlo. Gracias.
  • Por favor, edite la pregunta original en lugar de agregar otro. Yo he respondido a la pregunta ya: no use un evento, pero modificar el generado de la pantalla. Los eventos son inadecuados aquí porque usted tiene que levantar el MENSAJE en la pantalla de la instrucción LOOP.
  • posibles duplicados de llenado Automático de NAME_1 cuando introducida es válida KUNNR – SM30
  • si usted sólo desea que el campo sea obligatorio, usted puede modificar el mantenimiento de la pantalla y cambiar el campo sea obligatorio. En la tabla maint. generador, ir al medio Ambiente->Modificaciones->Pantallas de Mantenimiento, seleccione la pantalla de detalles, vaya al elemento de la lista y marque la casilla de «Entrada» de la columna. No estoy seguro de si la transacción se realice su check_class, así que tal vez usted recibirá un mensaje estándar si el campo es inicial.
  • esta es una mala idea porque, a continuación, se mostrará el campo como un campo obligatorio, incluso en las líneas que son totalmente vacío (cuando la adición de nuevas entradas, por ejemplo).
  • sí, pero que sólo tiene sentido en el contexto de la pregunta original con un requisito adicional (sólo es obligatorio si otro campo es llenado), que no era parte de esta pregunta. Yo sólo vi su referencia a la otra pregunta.

InformationsquelleAutor Eva Dias | 2012-10-16

2 Comentarios

  1. 3

    por favor, consulte esta enlace :

    • Puede usar los eventos, y debe hacer uso de ellos, no vaya modificar generado de las pantallas, que es la razón por la SAP proporciona eventos.
    • Solo necesitas 2 cosas para dejar de guardar y permanecer en la pantalla
      • MESSAGE 'Currency must be USD or IDR' TYPE 'S' DISPLAY LIKE 'E'.
      • vim_abort_saving = 'X'.
    • Leer que el vínculo, hay una gran cantidad de información que hay.
    • Como una buena práctica, el uso de la clave del registro que le fue mal en el mensaje de error, por lo que el usuario puede encontrar el registro de regreso al entrar en miles de nuevos registros
    • Gracias, que también funciona y es aún más elegante que la que he conseguido.
    • Desde mi punto de vista, que es una aproximación inferior: Se pierde la opción para resaltar los campos que contienen valores no válidos. Imagina una tabla con miles de líneas – tendrías que buscar las entradas no válidas por sí mismo. Eso es una mala manera de volar.
    • esto sólo se aplica a las nuevas entradas, no hay miles de líneas cuando se haga clic en ‘Agregar nuevas entradas’ en SM30, todas las entradas están ocultos.
    • así que no les permite entrar en el valor de FOO cuando la adición de una entrada, pero usted puede agregar una entrada con el nuevo valor de la BARRA y, a continuación, cambiar a la prohibida valor de FOO? Que hace aún menos sentido para mí.
  2. 2

    Por favor, edite tu pregunta original en lugar de agregar otro. Yo he respondido a la pregunta ya: no use un evento, pero modificar el generado de la pantalla. Los eventos son inadecuados aquí porque usted tiene que elevar el MESSAGE dentro de la pantalla LOOP declaración.

Dejar respuesta

Please enter your comment!
Please enter your name here