如何提取SAP事务码/AIF/ERR的数据 解决现有导出方式报错问题
SAP事务码
/AIF/ERR数据提取可行方案 你之前尝试的两种方法失效是因为/AIF/ERR作为SAP AIF的标准错误监控事务,底层采用自定义ALV渲染逻辑,既不支持传统的List内存导出机制,也未接入CL_SALV_BS_RUNTIME_INFO类的运行时数据捕获能力,以下是3种可落地的实现方案:
方案1:调用AIF标准取数API(最推荐)
CL_AIF_MSG_CONTROLLER是/AIF/ERR底层直接调用的消息查询类,可直接返回和事务码界面完全一致的结构化数据,示例代码如下:" 实例化消息控制器,传入接口基础信息 DATA(lo_msg_controller) = NEW cl_aif_msg_controller( iv_namespace = '你的AIF命名空间' iv_interface = '你的接口名称' iv_version = '接口版本号' ). " 传入筛选条件获取消息列表 DATA(lt_aif_error_messages) = lo_msg_controller->get_messages( iv_date_from = '起始日期' iv_date_to = '结束日期' iv_status = 'E' " E代表错误,可按需传入其他状态值 " 可追加更多筛选参数,如消息ID、发送方、接收方等 ).该方案自动继承标准权限校验逻辑,兼容AIF版本迭代,稳定性最高。
方案2:BDC录制后直接获取ALV内表
若有特殊场景需要完全模拟前台操作逻辑,可通过SHDB录制/AIF/ERR的筛选、执行操作,跳转至ALV展示界面后,通过CL_GUI_ALV_GRID=>GET_GRID_FROM_HANDLE方法获取ALV实例,调用实例的GET_DATA_TABLE方法直接获取展示的内表数据,无需走通用的运行时数据捕获逻辑。方案3:直接查询底层数据库表
简单筛选场景下可直接关联查询/AIF/ERR的核心存储表:/AIF/T_ALRT(告警头数据)、/AIF/T_MSG(消息头数据)、/AIF/T_MSG_DTL(消息明细数据),关联键为消息ID、命名空间、接口ID字段。注意该方案需要自行实现权限校验逻辑,不会复用标准事务码的权限控制规则。
优先选择方案1实现,避免后续AIF版本升级、配置调整导致取数逻辑失效。
内容的提问来源于stack exchange,提问作者Kjarlvi
相关产品推荐
相关产品推荐

