在ECC与PI连接发送(接口)数据时,会需要在ECC端记录一下PI接口MONI中的MESSAGE ID号,以便以方便日志记录,或者问题的查找跟踪,以下是ECC中的ABAP代码的实现方式。
1.取发出PROXY(OUTBOUND)的MESSAGE ID获取
隐藏内容需要支付:¥1
任何问题请联系yan252@163.com
任何问题请联系yan252@163.com
在调用OUTBOUND的PROXY发出数据后,我们想得到PI中的MESSAGE ID,我们先在调用的接口类中写入Enhance增强记录MESSAGE ID,类名如下,
1.写入代码先记录MESSAGE ID到内存ZZPI_MSGGUID中
3 4 5 6 7 8 |
ENHANCEMENT 1 ZPI_GET_MSGGUID. "active version DATA: l_msgguid TYPE sxmsmguid. EXPORT l_msgguid FROM im_msgguid TO MEMORY ID 'ZZPI_MSGGUID'. * ENDENHANCEMENT. |
2.在调用PORXY后,从内存ZZPI_MSGGUID中读取出MESSAGE ID
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
FUNCTION ZGET_PI_MSGGUID. *"-------------------------------------------------------------------- *"*"本地接口: *" EXPORTING *" REFERENCE(MSGGUID) TYPE SXMSMGUID *"-------------------------------------------------------------------- DATA: L_MSGGUID TYPE SXMSMGUID. IMPORT L_MSGGUID FROM MEMORY ID 'ZZPI_MSGGUID' . MSGGUID = L_MSGGUID. FREE MEMORY ID 'ZZPI_MSGGUID'. CLEAR L_MSGGUID. ENDFUNCTION. |
2.取入站PROXY的MESSAGE ID
把以下代码写在入站的PROXY的代理类函数中,就能取到了,当然为了使用最好以下代码写在最前面
1 2 3 4 5 6 7 8 9 |
DATA: lo_protocol TYPE REF TO if_wsprotocol_message_id, lo_server_context TYPE REF TO if_ws_server_context. TRY. lo_server_context = cl_proxy_access=>get_server_context( ). lo_protocol ?= lo_server_context->get_protocol( if_wsprotocol=>message_id ). DATA(lv_pi_msgid_out_raw) = lo_protocol->get_message_id( ). CATCH cx_ai_system_fault. ENDTRY. |
隐藏内容需要支付:¥1
任何问题请联系yan252@163.com
任何问题请联系yan252@163.com