如何自行查找出 SAP ABAP 标准的 OData 服务返回数据的后台数据库表和表字段名称试读版

简介: 如何自行查找出 SAP ABAP 标准的 OData 服务返回数据的后台数据库表和表字段名称试读版

笔者的知识星球有朋友提问,询问如何查找一个 SAP ABAP OData 服务,暴露出的字段到底来自 SAP ABAP 后台哪些数据库表的哪些字段。


要回答这个问题,需要综合运用到我们过去学过的包括 ABAP 后台程序单步调试的知识。


本文我们还是通过之前使用过的 SAP CRM 标准的 Fiori 应用,My Accounts 作为例子进行讲解。


在 Fiori Launchpad 里点击 My Accounts tile 之后,能看到 SAP OData 服务返回的 Accounts 数据列表。


点击其中一个行项目,就能进入 Accounts 的明细页面。这里在 SAP UI5 应用界面上看到的字段,都是该应用对应的 OData 服务从 SAP 后台业务服务器取回的。


在实际的 SAP 集成项目中,我们有时候会需要知道这些 OData 返回字段值,到底是存储在哪些数据库表的哪些字段中。这些信息作为系统集成二次开发的理论前提。


本教程前一篇文章,已经介绍了如何通过 Chrome 开发者工具,自行找到该 SAP UI5 应用使用的 OData 服务的名称,以及运行时部署在 SAP Gateway 系统上的 SAP UI5 应用,发出的 OData 服务,到底被哪一台 SAP 后台服务器接收并处理。



11be632b46db1b4c4f57d5657373dc70_49ed3923ea67d2193c057eb3ec58cc0f.png


本文首先介绍另一种方式,不通过 Chrome 开发者工具,即可直接找到 My Accounts 应用使用的 OData 服务名称。

按照笔者这篇教程介绍的步骤,即可轻松找到 OData 服务的名称为 CRM_BUPA_ODATA.


并且能够快速获得下面这张列表,即 OData CRM_BUPA_ODATA 在运行时访问的 SAP 数据库表的清单。


从清单里我们很容易找到 Fiori UI 上的 Account 字段,对应数据库表里哪些存储字段。


上图第三列 Accesses 列表示该行表示的数据库表在整个执行过程中,被访问的次数,第四列 Net 代表访问该数据库表耗费的时间,单位是微秒。Short Description 即数据库表的描述信息,Package 即所在 ABAP 开发包的名称。


从上图描述信息能够看出,BUT000 这张表存储了 Business Partner 数据模型的抬头信息。本文讨论的 My Accounts 应用里显示的 Account 模型,是一种特殊类型的 Business Partner.


比如 My Accounts 应用显示的 First Name 和 Last Name 的值:

实际存储在数据库表 BUT000 如下图所示的 NAME_LASTNAME_FIRST 字段里。


通过这张表里的 PERSNUMBER 字段作为外键:

还能链接到其他数据库表,比如同样出现在 SAT 事务码结果列表里的 ADR12, Account 在 Fiori UI 上显示的 WebSite,就存储在这张数据库表的 URI_SRCH 字段里。


总结


这篇文章首先介绍了已知一个 SAP UI5 应用名称,如何通过 SAP 官方工具,快速查找到其使用的 OData 服务名称。接着介绍了如何在 ABAP 调试器里,通过内置的 ABAP Trace 将调试器里执行的 ABAP 代码的明细全部记录下来,保存成能够在事务码 SAT 里查看的 Trace 文件。最后通过实际的例子,展示了如何在事务码 SAT 里查看 OData 服务运行时访问了哪些数据库表,以及将 SAP UI5 界面上的字段同这些数据库表的字段进行一一匹配。


相关文章
|
4月前
|
存储 安全 数据库
什么是 SAP ABAP 数据库表的 Display Maintenance Allowed with Restrictions
什么是 SAP ABAP 数据库表的 Display Maintenance Allowed with Restrictions
|
4月前
|
安全 API 数据库
SAP ABAP OData 中 Function import 的概念介绍
SAP ABAP OData 中 Function import 的概念介绍
|
4月前
|
前端开发 数据库 开发者
如何在 SEGW 事务码里为 SAP ABAP OData 服务实现 Function Import 试读版
如何在 SEGW 事务码里为 SAP ABAP OData 服务实现 Function Import 试读版
SAP ABAP OData 服务里需要指定 guid 类型的请求参数时,正确语法是什么?
SAP ABAP OData 服务里需要指定 guid 类型的请求参数时,正确语法是什么?
|
21天前
|
SQL 关系型数据库 MySQL
【揭秘】MySQL binlog日志与GTID:如何让数据库备份恢复变得轻松简单?
【8月更文挑战第22天】MySQL的binlog日志记录数据变更,用于恢复、复制和点恢复;GTID为每笔事务分配唯一ID,简化复制和恢复流程。开启binlog和GTID后,可通过`mysqldump`进行逻辑备份,包含binlog位置信息,或用`xtrabackup`做物理备份。恢复时,使用`mysql`命令执行备份文件,或通过`innobackupex`恢复物理备份。GTID模式下的主从复制配置更简便。
90 2
|
16天前
|
弹性计算 关系型数据库 数据库
手把手带你从自建 MySQL 迁移到云数据库,一步就能脱胎换骨
阿里云瑶池数据库来开课啦!自建数据库迁移至云数据库 RDS原来只要一步操作就能搞定!点击阅读原文完成实验就可获得一本日历哦~
|
19天前
|
关系型数据库 MySQL 数据库
RDS MySQL灾备服务协同解决方案构建问题之数据库备份数据的云上云下迁移如何解决
RDS MySQL灾备服务协同解决方案构建问题之数据库备份数据的云上云下迁移如何解决
|
16天前
|
人工智能 小程序 关系型数据库
【MySQL】黑悟空都掌握的技能,数据库隔离级别全攻略
本文以热门游戏《黑神话:悟空》为契机,深入浅出地解析了数据库事务的四种隔离级别:读未提交、读已提交、可重复读和串行化。通过具体示例,展示了不同隔离级别下的事务行为差异及可能遇到的问题,如脏读、不可重复读和幻读等。此外,还介绍了在MySQL中设置隔离级别的方法,包括全局和会话级别的调整,并通过实操演示了各隔离级别下的具体效果。本文旨在帮助开发者更好地理解和运用事务隔离级别,以提升数据库应用的一致性和性能。
95 2
【MySQL】黑悟空都掌握的技能,数据库隔离级别全攻略
|
22天前
|
数据可视化 关系型数据库 MySQL
Mysql8 如何在 Window11系统下完成跳过密钥校验、完成数据库密码的修改?
这篇文章介绍了如何在Windows 11系统下跳过MySQL 8的密钥校验,并通过命令行修改root用户的密码。
Mysql8 如何在 Window11系统下完成跳过密钥校验、完成数据库密码的修改?
|
19天前
|
SQL 关系型数据库 MySQL
【MySQL 慢查询秘籍】慢SQL无处遁形!实战指南:一步步教你揪出数据库性能杀手!
【8月更文挑战第24天】本文以教程形式深入探讨了MySQL慢SQL查询的分析与优化方法。首先介绍了如何配置MySQL以记录执行时间过长的SQL语句。接着,利用内置工具`mysqlslowlog`及第三方工具`pt-query-digest`对慢查询日志进行了详细分析。通过一个具体示例展示了可能导致性能瓶颈的查询,并提出了相应的优化策略,包括添加索引、缩小查询范围、使用`EXPLAIN`分析执行计划等。掌握这些技巧对于提升MySQL数据库性能具有重要意义。
50 1