如何自行给指定的SAP OData服务添加自定义日志记录功能

有的时候,SAP标准的OData实现或者相关的工具没有提供我们想记录的日志功能,此时可以利用SAP系统强大的扩展特性,进行自定义日志功能的二次开发。

以SAP CRM Fiori应用“My Opportunity”为例:我们首先在其OData服务CRM_OPPORTUNITY的实现类CL_CRM_OPPORTUNITY_IMPL的构造函数方法CONSTRUCTOR里设置一个值为GET_BADI的动态断点,这样调试模式下,ABAP调试器会自动停在所有出现了GET BADI关键字调用的地方。

通过这个方法,我们很快找到了一个能够放置我们自定义日记记录逻辑的地方:就是代码85行的BAdI定义,CRM_OPPORTUNITY_ODATA_DB. 在SAP标准OData服务实现的读取操作里,每次从数据库调用One Order API读取Opportunity数据后,都要执行这个BAdI.

这是该BAdI执行的调用栈:

事务码SE18,根据我们刚刚找到的BAdI定义创建一个增强实现:



这个增强实现类ZCL_JERRY_ODATA_TRACE里,现在可以编写我们的日志记录逻辑了。

首先创建一个数据库表,用于存放我们的日志记录。为简单起见,我仅仅记录了请求的用户名,请求日期和时间,大家可以根据自己实际需求添加相关字段。

增强代码也很简单:

DATA(ls_log) = VALUE zorder_guid( user_name = sy-uname
      req_date = sy-datum req_time = sy-timlo ).

    CALL FUNCTION 'SYSTEM_UUID_CREATE'
      IMPORTING
        uuid = ls_log-guid.

    INSERT zorder_guid FROM ls_log.

激活这个增强后,到Fiori UI上随便做几个点击操作:

回到我们自定义的日志记录表里,发现填充了一些记录了,这个自定义日志记录功能就实现了。

要获取更多Jerry的原创文章,请关注公众号"汪子熙":

原文地址:https://www.cnblogs.com/sap-jerry/p/11968028.html

时间: 2024-07-31 22:08:33

如何自行给指定的SAP OData服务添加自定义日志记录功能的相关文章

haproxy的日志记录到指定位置

[[email protected] ~]# cat /etc/rsyslog.conf ######以下的并不是全部的rsyslog的内容,只是其中比较重要的部分. # Provides UDP syslog reception $ModLoad imudp $UDPServerRun 514 #允许514端口接收使用UDP协议转发过来的日志(去掉注释表示开启) # Provides TCP syslog reception #$ModLoadimtcp #$InputTCPServerRun

SAP C/4HANA Sales Cloud使用OData服务和第三方系统集成的一个具体例子

出于工作需要,Jerry写了这篇文章,给某些Partner做参考. 以前Jerry曾经介绍过SAP C/4HANA的五朵云到底包含哪些具体产品,其实在SAP官网上有更权威的中文解释: https://www.sap.com/china/products/crm-commerce/c4-hana-cx-suite.html 其中明确提到销售云包含SAP Cloud for Customer(C4C),SAP Revenue Cloud和Callidus Cloud. 有Partner询问有没有更详

如何在SAP gateway系统配置路由到后台系统的OData服务路径

看这张架构图,SAP Gateway系统也叫frontend系统,通过RFC远程调用SAP后台系统的OData服务实现. 以SAP CRM Fiori应用My Opportunity为例,使用事务码/IWFND/MAINT_SERVICE, 根据关键字CRM_OPPORTUNITY查找,在搜索结果里点击Add System Alias: 如果不知道怎样配置新建的这条记录,可以参考系统里已有的配置,例如下面SALES_PIPELINE这个OData服务的配置: 依次完成每个字段的设置: 配置完成的

Web Api系列教程第2季(OData篇)(二)——使用Web Api创建只读的OData服务

前言 很久没更新了,之前有很多事情,所以拖了很久,非常抱歉.好了,废话不多说,下面开始正题.本篇仍然使用上一季的的项目背景(系列地址http://www.cnblogs.com/fzrain/p/3490137.html)来演示OData服务,因此我们可以直接使用之前建好的数据访问层.但是不是说一定要看到之前的所有内容,我们只是借用数据库访问层,对于数据库的模型构建移步(使用Entity Framework Code First构建数据库模型). 有了数据访问的基础,我们可以开始构建OData服

[转]Web Api系列教程第2季(OData篇)(二)——使用Web Api创建只读的OData服务

本文转自:http://www.cnblogs.com/fzrain/p/3923727.html 前言 很久没更新了,之前有很多事情,所以拖了很久,非常抱歉.好了,废话不多说,下面开始正题.本篇仍然使用上一季的的项目背景(系列地址http://www.cnblogs.com/fzrain/p/3490137.html)来演示OData服务,因此我们可以直接使用之前建好的数据访问层.但是不是说一定要看到之前的所有内容,我们只是借用数据库访问层,对于数据库的模型构建移步(使用Entity Fram

腾讯云容器服务大容量日志的处理记录

一.项目背景 1.1 项目痛点 在目前小程序为主的大背景下,有客户大部分业务在腾讯云,使用的大部分为容器服务,在大规模的使用容器下,需要对容器内业务的日志采集及分析,在腾讯云对应容器服务的日志提供了两种消费方式:Kafka.日志服务CLS.但是对应业务线众多,在腾讯云容器服务只能指定十条日志收集规则,完全满足不了大规模日志收集场景,客户已经指定分业务两种消费方式均使用了起来,Kafka&日志服务,但是在Ckafka查看日志发现最高每分钟20W条消息,尽管已经最大程度的提升了消费端的能力(消费端使

2016-11-05实战-定义ssh服务的日志

1.编辑/etc/rsyslog.conf 输入 local 0 .*     /var/log/sshd.log   #日志的保存路径 2.定义ssh服务的日志级别 编辑sshd服务的主配置文件:/etc/ssh/sshd_config 3.使配置生效 1)重启rsyslog服务(生效配置) systemctl restart rsyslog 2)重启sshd服务,重启后生成文件/var/log/sshd.log systemctl restart sshd 4.查看sshd.log

Linux下定时切割Mongodb数据库日志并删除指定天数前的日志记录(转)

文章转自:http://www.osyunwei.com/archives/8998.html 说明: 操作系统:CentOS Mongodb安装目录:/usr/local/mongodb Mongodb数据库存放目录:/home/data/mongodb/mongodb_data Mongodb日志存放目录:/home/data/mongodb/mongodb_log 实现目的: 对Mongodb数据库日志按天保存,并且只保留最近7天的日志记录. 具体操作: 使用Mongodb数据库自带的命令

Thrift 个人实战--Thrift RPC服务框架日志的优化

前言: Thrift作为Facebook开源的RPC框架, 通过IDL中间语言, 并借助代码生成引擎生成各种主流语言的rpc框架服务端/客户端代码. 不过Thrift的实现, 简单使用离实际生产环境还是有一定距离, 本系列将对Thrift作代码解读和框架扩充, 使得它更加贴近生产环境. 本文讲述RPC服务框架中, 日志的重要性, 以及logid的引入. 日志不仅包含丰富的数据(就看是否会挖掘), 而且还是线上服务问题追踪和排查错误最好的方式. 日志级别 采用大家喜闻乐见的log4j作为该RPC服