Hola,
1. ¿Dónde puedo mantener salidas de usuario para validaciones y sustituciones?
Las salidas para validaciones y sustituciones se almacenan en un include de tu elección.
Los siguientes includes se entregan como ejemplos de forma predeterminada:
RGGBR000 Val/Sub: Salidas para reglas
RGGBS000 Val/Sub: Salidas para sustituciones
Debes copiar estos en el espacio de nombres del cliente, por ejemplo ZGGBR000.
La longitud del nombre que elijas no debe exceder los 8 caracteres. Esto se debe a que el nombre también se genera en el código fuente y puede exceder una cierta longitud de línea.
También puedes crear un include separado para cada cliente, lo que puede mejorar el rendimiento.
En la transacción GCX2, debes definir dónde se utiliza tu include. Para hacerlo, ingresa el nombre de tu include como un FORM pool en el área de aplicación relevante.
2. ¿Cómo debo crear una salida de usuario?
Define tu salida de usuario en la rutina FORM GET_EXIT_TITLES con el tipo de salida correcto (EXITS-PARAM). Puedes usar las entradas de muestra existentes como plantilla para esto.
Los tipos de salida requeridos en la rutina FORM GET_EXIT_TITLES están organizados de la siguiente manera:
C_EXIT_PARAM_NONE Sin parámetros
Aparte del valor de retorno (B_TRUE o B_FALSE), no necesitas ningún parámetro para la validación. Si no deseas sustituir un campo, utiliza este parámetro en la sustitución (selecciona "Solo salida").
Sin embargo, debes usar una declaración TABLE en el FORM pool (no en el formulario real) para identificar la estructura relevante.
C_EXIT_PARAM_FIELD Se transfiere un campo como parámetro
Solo utiliza este tipo en la sustitución. Se sustituye exactamente un campo. Ingresa salidas de usuario de este tipo en el mantenimiento de sustituciones en lugar de asignar un valor constante.
C_EXIT_PARAM_CLASS Se transfiere un tipo completo como parámetro
Validaciones/sustituciones matriciales ("Solo salida"). Este tipo de salida solo se puede utilizar para puntos de llamada con documentos completos, por ejemplo, en FI y LC. No puedes usar este tipo de salida para otros puntos de llamada. El tipo transferido contiene toda la información sobre una clase. Un ejemplo es el uso del encabezado del documento y todos los elementos de línea correspondientes en el área de FI.
En la rutina FORM GET_EXIT_TITLES, cambia los campos NAME y TEXT de la tabla interna EXITS a los valores que desees.
Utiliza una de las rutinas de muestra como plantilla y copia estas a los nombres que seleccionaste. Ahora puedes implementar las funciones que desees en esta rutina FORM.
Después de haber terminado de crear la salida de usuario, puedes usarla en tus validaciones o sustituciones.
3. ¿Qué debo tener en cuenta al implementar la salida de usuario?
No se deben emitir cuadros de diálogo, mensajes de advertencia, información o mensajes de error en una salida, y un "COMMIT WORK" no debe ser rechazado. Esto, por ejemplo, interrumpiría el procesamiento por lotes o causaría problemas con los documentos a ser contabilizados. Si encuentras un error grave en el contenido del campo en la salida, envía un mensaje de terminación (A o X), lo que garantizará que la transacción se termine.
No uses comandos ABAP que te hagan salir directamente de la salida, por ejemplo, 'LEAVE (TO) SCREEN ...' o 'SUBMIT <REPORT> ...' o 'CALL TRANSACTION ...'
En una salida, utiliza solo campos de estructura que pertenezcan a la clase booleana de la sustitución, validación o regla de llamada. Los otros campos de estructura no están llenos o no se llenan correctamente para el punto de llamada de las sustituciones, validaciones o reglas.
Solo puedes realizar cambios en el contenido del campo en una salida de sustitución si este campo puede ser sustituido en la clase booleana. Puedes mostrar estos campos eligiendo "Agregar entrada" en el mantenimiento de sustituciones.
En los includes de las salidas de sustitución, no debes usar los comandos MODIFY, INSERT o DELETE en las estructuras utilizadas internamente como BSEG o BKPF. Estas estructuras se interpretan internamente como tablas de base de datos porque están definidas por una declaración TABLES. Como resultado, el sistema escribe, elimina o cambia registros de la base de datos si utilizas los comandos mencionados anteriormente. Esto puede causar serias inconsistencias y problemas en el procesamiento de documentos.
Si deseas cambiar el contenido del campo en el tipo de salida C_EXIT_PARAM_CLASS, debes realizar los cambios en la tabla interna BOOL_DATA (por ejemplo, BOOL_DATA-BSEG).
Saludos,