有的时候,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的原创文章,请关注公众号"汪子熙":

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

  1. SAP中的读访问日志Read Access Logging(RAL)

    定义 读取访问日志(以下简称RAL)用于监视并记录对敏感数据的读取访问.这里的数据是指会被法律,外部公司政策或公司内部政策归类为敏感信息的数据.以下典型问题可能会与使用读取访问日志的应用程序有关: 谁 ...

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

    出于工作需要,Jerry写了这篇文章,给某些Partner做参考. 以前Jerry曾经介绍过SAP C/4HANA的五朵云到底包含哪些具体产品,其实在SAP官网上有更权威的中文解释: https:// ...

  3. 在SAP云平台的CloudFoundry环境下消费ABAP On-Premise OData服务

    我的前一篇文章 使用Java+SAP云平台+SAP Cloud Connector调用ABAP On-Premise系统里的函数介绍了在SAP云平台的Neo环境下如何通过SAP Cloud Conne ...

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

    看这张架构图,SAP Gateway系统也叫frontend系统,通过RFC远程调用SAP后台系统的OData服务实现. 以SAP CRM Fiori应用My Opportunity为例,使用事务码/ ...

  5. 如何在SAP云平台ABAP编程环境里把CDS view暴露成OData服务

    Jerry 2016年在学习SAP CDS view时,曾经写过一个CDS view的自学系列,其中有一篇提到了一个很方便的注解: @OData.publish: true 加上这个注解的CDS vi ...

  6. SAP OData编程指南

    OData(Open Data Protocol)协议是一个开放的工业标准,用于定义RESTFul API的设计和使用.我的文章标题前加上SAP的前缀,只是为了表明这篇文章介绍的是Jerry在SAP项 ...

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

    前言 很久没更新了,之前有很多事情,所以拖了很久,非常抱歉.好了,废话不多说,下面开始正题.本篇仍然使用上一季的的项目背景(系列地址http://www.cnblogs.com/fzrain/p/34 ...

  8. 与众不同 windows phone (29) - Communication(通信)之与 OData 服务通信

    原文:与众不同 windows phone (29) - Communication(通信)之与 OData 服务通信 [索引页][源码下载] 与众不同 windows phone (29) - Co ...

  9. UI5-学习篇-7-Postman测试SAP OData Services

    1.Postman简介 用户在开发或者调试网络程序或者是网页B/S模式的程序的时候是需要一些方法来跟踪网页请求的,用户可以使用一些网络的监视工具比如著名的Firebug等网页调试工具. postman ...

随机推荐

  1. chmod: changing permissions of ‘/etc/fstab': Read-only file system

    给passwd文件加权限,修改/etc/fstab目录下所有的文件夹属性为可写可读可执行,执行以下命令:chomd 777 /etc/fstab 的时候提示错误: chmod: changing pe ...

  2. linux安装nvm和nodejs

    下载nvm包: [root@centos ~]# wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install ...

  3. word中的总页数不包括封面、目录

    删除分隔符:选项-显示-显示所有格式标记

  4. python中的绝对导入与相对导入,from __future__ import absolute_import的区别

    相对导入:在不指明 package 名的情况下导入自己这个 package 的模块,比如一个 package 下有 a.py 和 b.py 两个文件,在 a.py 里 from . import b ...

  5. OpenShift 4.2 离线安装补充记录

    OpenShift4.2详细安装参考同事王征的安装手册(感谢王征大师的研究和答疑解惑, 大坑文章都已经搞定了,我这里是一些小坑) https://github.com/wangzheng422/doc ...

  6. dotnet core 3.0 swagger 显示枚举描述

    上一篇net core 2.2 swagger的枚举描述,core 3.0 需要升级swagger到5.0rc版,配置需要做些修改,swaager启用了OpenApi标准,之前的枚举描述方法也失效了. ...

  7. makefile那些事儿

    一.好处 自动化编译,一条make命令,整个工程可以完全自动编译,make命令是构建大型项目的首选方案. makefile就像一个shell脚本一样,用来定义规则,一个名称包含一条或多条命令,在终端m ...

  8. 创建Windows Service

    基本参照使用C#创建Windows服务,添加了部分内容 目录 创建Windows Service 可视化管理Windows Service 调试 示例代码 创建Windows Service 选择C# ...

  9. 忘记树莓派pi账户密码简单重设

    网上搜到的教程多是要修改cmdline.txt,非常繁琐,其实树莓派本身的root账户还没有启用,在root账户下重设pi的密码是很容易的,下面教你启用root账户,一切都需要在树莓派本机上操作 打开 ...

  10. centos7如何将docker容器配置成开机自启动

    docker 服务器开机自启动: 1.systemctl is-enabled docker.service  检查服务是否开机启动 2.systemctl enable docker.service ...