
Recientemente, observé cómo manejar el mensaje de error AIF dentro del código fuente y habilitarlos en el registro.
Porque no todos los usuarios finales se sentían cómodos con /FIA/ERR para comprobar el estado del mensaje AIF. Sin embargo, no pude encontrar un blog donde se explicara en detalle, así que decidí publicar cómo manejé técnicamente los mensajes de error en mi caso.
Antes de profundizar, me gustaría compartir dos datos interesantes y útiles sobre cómo monitorear errores con transacciones AIF dedicadas:
Ahora echemos un vistazo al caso que encontré y cómo lo resolví. Usé el reprocesamiento automático AIF. (Encuentre los pasos en mi blog anterior: El reprocesamiento automático AIF hace la vida más fácil )
he definido FM ZAKB_FM_INSERTITEMOBD para manejar las acciones durante el reprocesamiento automático.
Aquí está la lógica en la que estoy activando el reprocesamiento automático de AIF. Pero el punto es que la llamada no devuelve ningún mensaje de éxito o error:
" Call AIF automatic re-processing
TRY.
/aif/cl_enabler_xml=>transfer_to_aif( is_any_structure = ls_new_itemobd " Persistence structure type to keep payload
iv_queue_ns="ZIFTST" " AIF Namespace
iv_queue_name="ZRC" ). " Runtime group configuration ID
CATCH /aif/cx_aif_engine_not_found INTO DATA(lx_engine_not_found).
CATCH /aif/cx_enabler_base INTO DATA(lx_enabler_base).
CATCH /aif/cx_aif_engine_base INTO DATA(lx_engine_base).
CATCH /aif/cx_error_handling_general INTO DATA(lx_error_handling).
CATCH /aif/cx_inf_det_base INTO DATA(lx_inf_det_base).
ENDTRY.
Entonces, como solución, hagamos los siguientes pasos.
Inicialmente, genere una tabla de persistencia para la carga útil a través de la transacción /AIF/PERS_TBL_GEN. Después de la generación de la tabla, verá que contiene todos los campos de su estructura de persistencia, además de algunos campos clave como los siguientes:
Por lo tanto, cuando active una llamada a AIF, se creará una nueva entrada con respecto a su espacio de nombres, nombre de interfaz y versión de interfaz.
En segundo lugar, necesitamos obtener una entrada que se crea durante la llamada AIF, por lo que debemos hacer un pequeño cambio mientras llamamos /aif/cl_enabler_xml=>transferir_a_aif, de la firma de clase podemos ver que tiene un parámetro de exportación: EV_MSGGUUID.
Devolverá el GUID del mensaje generado, que usaremos para encontrar los mensajes generados.
Como paso final, necesitamos obtener los mensajes generados por AIF y se almacenan en la tabla: /AIF/MMSG_VARS Variables de mensaje AIF. Aquí obtengo los mensajes a través de una declaración de selección con respecto al GUID del mensaje, el espacio de nombres y el nombre de la interfaz.
" Get the log messages from AIF Framework
SELECT * FROM /aif/mmsg_vars INTO TABLE @lt_aif_messages
WHERE msgguid = @lv_aif_message_id
AND ns="ZIFTEST"
AND ifname="ZIF_OBDINS".
" Add messages to log
LOOP AT lt_aif_messages ASSIGNING FIELD-SYMBOL(<fs_aif_messages>).
" Map the exception error messages
INSERT VALUE #( id = <fs_aif_messages>-msgid number = <fs_aif_messages>-msgno
message_v1 = <fs_aif_messages>-msgv1 message_v2 = <fs_aif_messages>-msgv2
message_v3 = <fs_aif_messages>-msgv3 message_v4 = <fs_aif_messages>-msgv4
type = <fs_aif_messages>-msgty ) INTO TABLE return.
ENDLOOP.
En resumen, ahora puede asignar los mensajes seleccionados de manera adecuada a su registro y el usuario final también puede verificar los mensajes relacionados con AIF en el registro.
Calle Eloy Gonzalo, 27
Madrid, Madrid.
Código Postal 28010
Paseo de la Reforma 26
Colonia Juárez, Cuauhtémoc
Ciudad de México 06600
Real Cariari
Autopista General Cañas,
San José, SJ 40104
Av. Jorge Basadre 349
San Isidro
Lima, LIM 15073