【SAP PO】SAP 接口PO日志&RFC日志查询

您所在的位置:网站首页 saprfc接口 【SAP PO】SAP 接口PO日志&RFC日志查询

【SAP PO】SAP 接口PO日志&RFC日志查询

2023-04-03 03:39| 来源: 网络整理| 查看: 265

SAP 接口PO日志&RFC日志查询 1、PO接口消息流1.1、SAP发布的服务1.2、SAP访问外部服务1.3、关键代码 2、接口日志查询2.1、接口示例2.2、PO日志查询2.3、RFC日志查询

1、PO接口消息流

PO中间件,在接口消息传入和传出时,都会产生全局唯一的消息ID,合理记录该消息ID,可用于快速搜索PO接口报文消息。

1.1、SAP发布的服务

(1)PO消息ID的产生与应用 在这里插入图片描述 说明: ①请求报文,此时第三方请求系统还无法获取PO请求消息ID; ②请求消息,通过PO中间件的映射转换,可将PO请求消息ID赋给SAP RFC作为入参(IS_REQ-MESSAGEID,同时可以传递REQKEYID、SNDPRN、RCVPRN等信息); ③响应消息,在SAP RFC内部,将PO请求消息ID赋给SAP RFC作为出参(ES_STATUS-MESSAGEID),返回给请求方; ④响应报文,携带PO请求消息ID(msgid),PO响应消息ID(msgid2),传给请求方系统,用于日志记录。

应用建议: 当请求到达SAP时,SAP端日志可以记录PO请求消息ID; 当请求完成时,请求方日志可以记录PO请求消息ID和PO响应消息ID。

(2)PO报文消息(以Restful服务为例) 在这里插入图片描述 说明: 1、Sender JSON Request(json),原始请求报文,json格式; 2、BI(xml),原始请求报文,xml格式(在通道中自动实现转换); 3、AM(xml),RFC入参结构,xml格式(由BI通过MM_REQ转换而来),此时产生msgid; 4、AM(xml),RFC出参消息,xml格式 5、BI(xml),响应报文,xml格式(由AM通过MM_RES转换而来),此时产生msgid2; 6、Sender JSON Response(json),最终响应报文,json格式(由BI在通道中转换而来)。

1.2、SAP访问外部服务

(1)PO消息ID的产生与应用 在这里插入图片描述 说明: ①请求报文,发送请求时还没有PO请求消息ID,但是发送成功后,SAP端是可以获取到PO端的请求消息ID,可记入到本地日志; ②请求消息,通过PO中间件的映射转换,可将PO请求消息ID,传给第三方系统,用于日志记录(如果第三方系统愿意配合接收该参数的话); ③响应消息,此步无特别要求; ④响应报文,携带PO响应消息ID(msgid2),返回给请求方,用于日志记录。

应用建议: PO接口配置生成代理类,将对代理类的调用,封装到FM中,并对FM的调用记录到本地日志。 当请求发出后,SAP端即可获取PO请求消息ID; 当请求到达服务方时,服务方可以记录PO请求消息ID; 当请求完成时,SAP端日志可以记录PO请求消息ID和PO响应消息ID。

(2)报文消息(以Restful服务为例) 在这里插入图片描述 说明: 1、BI(xml),SAP原始请求报文,xml格式; 2、AM(xml),经PO映射后的请求报文,xml格式(由BI通过MM_REQ转换而来),此时产生msgid; 3、Receiver JSON Request,经通道转换后的请求报文,json格式; 4、Receiver JSON Response,服务方返回的原始响应报文,json格式; 5、AM(xml),经通道转换后的响应报文,xml格式 6、BI(xml),最终响应报文,xml格式(由AM通过MM_RES转换而来),此时产生msgid2。

1.3、关键代码

(1)PO端,获取消息ID的Java代码

public String getMESSAGE_ID(Container container) throws StreamTransformationException{ String MessageID; java.util.Map param = container.getTransformationParameters(); MessageID = (String) param.get (StreamTransformationConstants.MESSAGE_ID).toString().replaceAll("-", "").toUpperCase(); return MessageID; }

(2)SAP端,调用代理类后,获取PO消息ID的代码:

TRY. "获取SXI_MONITOR 外发消息的MESSAGE_ID DATA: lo_protocol TYPE REF TO if_wsprotocol_message_id. lo_protocol ?= lr_req->get_protocol( if_wsprotocol=>message_id ). log_req-messageid = lo_protocol->get_message_id( ). CATCH cx_ai_system_fault. ENDTRY. 2、接口日志查询 2.1、接口示例

以下示例,访问SAP端发布的Restful服务: 在这里插入图片描述 搜集接口相关信息,可以作为接口日志的查询条件的,如:接口名称、调用双方、函数名称、调用时间、调用账号、调用执行状态、PO消息ID等。 而接口报文的具体内容,一般是不能直接作为查询条件。

以下演示,使用不同的查询条件,分别在不同的端查询接口日志的方法。

2.2、PO日志查询

访问地址:http://192.168.0.213:50000/dir/start/index.jsp(内网地址,仅限内网访问) 点击:Configuration and Monitoring Home 在这里插入图片描述 用户名:PO_MONITOR 密码:*******(请询问管理员) 在这里插入图片描述 进入监控主页,点击“适配器引擎” 在这里插入图片描述 选择“消息监控器” 在这里插入图片描述 进入消息状态概览页面,默认显式最近一天的接口消息状态统计列表, 一般同步接口,一次完整的调用会产生两条消息状态,分别对应请求消息和响应消息 在这里插入图片描述 点击展开过滤按钮,可以根据具体的接口信息进行查找(如接口函数名称:ZMMFM010) 在这里插入图片描述 此界面,一般需要重点关注失败数量,成功数量和失败数量,点击后可以查看相应的消息列表。

或者:切换数据库页签,可以对消息列表进行搜索,支持基本查询和高级查询 在这里插入图片描述 在这里插入图片描述 高级查询中,尤其需要关注标识符,即为本文开头提及的PO消息ID。 可以根据具体的接口日志信息中记录的消息ID,来定位PO消息,查看相应报文。 在这里插入图片描述 在这里插入图片描述 点击消息列表中的某个消息,下拉可以查看到该消息日志 在这里插入图片描述 点击上方按钮“打开消息”,即可参看该接口各个环节的消息报文内容(具体建有效负载页签) 在这里插入图片描述

2.3、RFC日志查询

对于添加了以下全局宏代码的FM,都可以在函数日志中心查询到执行日志。

FUNCTION zmmfm010. *"---------------------------------------------------------------------- *"*"本地接口: *" IMPORTING *" VALUE(IS_PARAMS) TYPE ZSMM024 *" VALUE(IS_REQ) TYPE /ZJT/SAPPO_REQ_INFO OPTIONAL *" EXPORTING *" VALUE(ES_STATUS) TYPE ZSBC005 *" VALUE(ES_RETURN) TYPE ZSMM025 *" TABLES *" IT_DATA STRUCTURE ZSMM026 *" ET_DATA STRUCTURE ZSMM090 *"---------------------------------------------------------------------- zjt-rfc-log-b. "日志记录开始,函数进入时写 DATA:ls_ret TYPE /zjt/sappo_ret_info. es_status-messageid = is_req-messageid. . . . ls_ret = CORRESPONDING #( es_status MAPPING code = type msg = message ). zjt-rfc-log-e is_req ls_ret. "日志记录结束,函数结束时写 ENDFUNCTION.

SAP端执行事务码:ZFLG 或 ZFLGN,根据接口相关信息,搜索FM执行日志 在这里插入图片描述 在这里插入图片描述 以上两个事务码,选择条件和返回结果字段大同小异,可以按各自喜好,选择使用 在这里插入图片描述 可以查看功能函数的输入输出数据 在这里插入图片描述

原创文章,转载请注明来源-X档案



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3