Fiori Element List Report 开发实战2

作者:郑德鼎 约 8 分钟阅读 更新日期:2025-03-02 1 年前更新 标签:ABAP, 开发
Fiori Element List Report 开发实战2 - 封面图
Fiori Element List Report 开发实战2 - 封面图

Fiori Element List Report开发实战2——ODATA的开发

UI5的应用都是在web端显示,数据的获取和部分处理就要依赖接口来处理。这里使用的接口技术就是OData。OData 是用于构建和使用 RESTful

API 的开放标准。它定义了一种查询语言,用于通过 HTTP 发送和检索数据并对数据执行操作。该协议有两个广泛使用的版本:OData v2

和更扩展和功能更强大的 OData v4。

本次案例使用OData v2创建。

按计划,我要将一个日志监控程序发布成Fiori Element List Report。我们需要先为日志表创建一个OData接口。

Fiori Element List Report 开发实战2 - 封面图
Fiori Element List Report 开发实战2 - 封面图

理论上,CDS视图可以直接发布OData服务,在CDS抬头加入@OData.publish

true,后面就可以直接发布OData,不过这样直接发布的接口存在一些问题,比如最后的两个字段,是string类型的字段,实际发布为OData后,会无法调用,还需要增加一些设置。此外,ERDAT和ERDAT_OUT,是日期类型,但是在OData

V2中,只能显示为时间戳或带时区的时间戳。(冷知识,在OData V4中,时间类型字段会显示为时间戳,日期可以显示为普通的年月日)

这里我们只是创建视图,然后转到事物代码SEGW继续创建。

按照网上的教程,这里应该有一个简单的向导来创建,然而2022版本的程序,这个向导没有了。所以我们需要手动建立这些项目。

Fiori Element List Report 开发实战2 - 封面图
Fiori Element List Report 开发实战2 - 封面图

首先点击新建创建一个项目。后续如果需要传输,可以存在开发包中。

Fiori Element List Report 开发实战2 - 封面图
Fiori Element List Report 开发实战2 - 封面图

接下来我们需要创建Entity Types。首先输入ET的name,然后勾选Create Related Entity Set,Entity Set

Name会自动生成。

Fiori Element List Report 开发实战2 - 封面图
Fiori Element List Report 开发实战2 - 封面图

创建完成后,我们在右侧维护的属性窗口中,维护ABAP Structure,这里能选择的是我们刚才创建的视图,也可以选择结构或者数据库表。

Fiori Element List Report 开发实战2 - 封面图
Fiori Element List Report 开发实战2 - 封面图
Fiori Element List Report 开发实战2 - 封面图
Fiori Element List Report 开发实战2 - 封面图

接下来,我们维护Entity Types下的Properties。

Fiori Element List Report 开发实战2 - 封面图
Fiori Element List Report 开发实战2 - 封面图

我们需要确定一些字段,这些字段可以作为主键来选择,在IS KEY列勾选。

Edm Core

Type是OData中每个字段的属性,这里日期只能选择Edm.DateTime或者Edm.DateTimeOffset。时间字段选择Edm.Time,GUID选择Edm.Guid,字符类型字段选择Edm.String。

Fiori Element List Report 开发实战2 - 封面图
Fiori Element List Report 开发实战2 - 封面图

根据OData的实际使用要求,我们可以支持它的查询、创建、更新或删除、排序、筛选等功能。这里我禁止这个接口产生任何修改,所以只勾选了排序,允许空值存在字段,和筛选。

Fiori Element List Report 开发实战2 - 封面图
Fiori Element List Report 开发实战2 - 封面图

Label是描述字段,可以带到后面创建的页面中。

ABAP Field是参考前面ET类型的字段。

接下来我们维护Entity Sets。

Fiori Element List Report 开发实战2 - 封面图
Fiori Element List Report 开发实战2 - 封面图

因为功能简单,这里只勾选筛选相关的选项。

接下来我们需要在Service Implementation中创建mapping

Fiori Element List Report 开发实战2 - 封面图
Fiori Element List Report 开发实战2 - 封面图
Fiori Element List Report 开发实战2 - 封面图
Fiori Element List Report 开发实战2 - 封面图

如图筛选,返回这样的结果,确定

Fiori Element List Report 开发实战2 - 封面图
Fiori Element List Report 开发实战2 - 封面图

在弹出的界面中,点击Generate Mapping,自动充填Element

Fiori Element List Report 开发实战2 - 封面图
Fiori Element List Report 开发实战2 - 封面图
Fiori Element List Report 开发实战2 - 封面图
Fiori Element List Report 开发实战2 - 封面图

到这里,配置步骤基本完成,我们先点击下生成,生成代理类

Fiori Element List Report 开发实战2 - 封面图
Fiori Element List Report 开发实战2 - 封面图
Fiori Element List Report 开发实战2 - 封面图
Fiori Element List Report 开发实战2 - 封面图

直接确定,生成类。

因为之前的日期字段,我们需要处理下它的显示,这里我们修改MPC_EXT类的DEFINE方法,这里我们不能直接修改,要重新定义方法。

Fiori Element List Report 开发实战2 - 封面图
Fiori Element List Report 开发实战2 - 封面图
Fiori Element List Report 开发实战2 - 封面图
Fiori Element List Report 开发实战2 - 封面图
Fiori Element List Report 开发实战2 - 封面图
Fiori Element List Report 开发实战2 - 封面图

这里我们指定ERDAT的显示类型为日期。后续UI5界面,还可以参考这里的文档,

https://sapui5.hana.ondemand.com/#/api/sap.m.DatePicker

,使用DatePicker空间,显示中长度的日期,这样只显示到年月日。

现在SEGW相关的设置已经完成了,接下来,就是将OData服务激活。进入事务代码/IWFND/MAINT_SERVICE中,我们点击添加服务。

Fiori Element List Report 开发实战2 - 封面图
Fiori Element List Report 开发实战2 - 封面图

搜索我们前一步创建的服务。需要注意,这里系统别名的选择是必须的,一般是LOCAL。这里能够搜索出来的服务都是没有添加过的服务。如果找不到,请确定名称描述,或者是否已经被添加。

Fiori Element List Report 开发实战2 - 封面图
Fiori Element List Report 开发实战2 - 封面图

选中要添加的行,点击添加

Fiori Element List Report 开发实战2 - 封面图
Fiori Element List Report 开发实战2 - 封面图

这里有个弹窗,可以直接确定下一步。需要传输的情况下选择包分配,如果对安全有进一步要求的,可以勾选Oauth启用。

Fiori Element List Report 开发实战2 - 封面图
Fiori Element List Report 开发实战2 - 封面图

确定后,服务就已经创建好了。点击

Fiori Element List Report 开发实战2 - 封面图
Fiori Element List Report 开发实战2 - 封面图

返回上一页面,我们能找到刚才创建的服务。

Fiori Element List Report 开发实战2 - 封面图
Fiori Element List Report 开发实战2 - 封面图

不过现在接口还是不能正常使用。看向右下角,我们需要添加系统别名。

Fiori Element List Report 开发实战2 - 封面图
Fiori Element List Report 开发实战2 - 封面图

这里有可能只是页面刷新存在问题,实际系统已经自动创建。如果没有创建,可以补充下配置。

Fiori Element List Report 开发实战2 - 封面图
Fiori Element List Report 开发实战2 - 封面图
Fiori Element List Report 开发实战2 - 封面图
Fiori Element List Report 开发实战2 - 封面图

双击服务目录,可以看到Intelnet通信框架节点

Fiori Element List Report 开发实战2 - 封面图
Fiori Element List Report 开发实战2 - 封面图

正常情况下是绿灯,这时可以点击SAP Gateway进行测试。

不过我这里的测试系统有些问题,SAP Gateway无法使用。不过没有关系,我们可以POSTMAN来测试我们的接口。

Fiori Element List Report 开发实战2 - 封面图
Fiori Element List Report 开发实战2 - 封面图

我们从这里点击配置,直接跳转到SICF。

Fiori Element List Report 开发实战2 - 封面图
Fiori Element List Report 开发实战2 - 封面图

点击测试服务获取真实的接口地址

Fiori Element List Report 开发实战2 - 封面图
Fiori Element List Report 开发实战2 - 封面图
Fiori Element List Report 开发实战2 - 封面图
Fiori Element List Report 开发实战2 - 封面图

注意这里的zlog_etSet。当前地址后面加上这个,才是真正的查询接口地址。

Fiori Element List Report 开发实战2 - 封面图
Fiori Element List Report 开发实战2 - 封面图

OData传输的内容可以指定传输为json或xml。需要在地址后指定 $format=json

Fiori Element List Report 开发实战2 - 封面图
Fiori Element List Report 开发实战2 - 封面图
Fiori Element List Report 开发实战2 - 封面图
Fiori Element List Report 开发实战2 - 封面图

这里我们需要注意下日期和时间,这里明显不是我们常用的8位日期或者6位时间,二十有明显格式化的日期时间。

自此,OData的创建结束了,下篇文章将在VS Code上创建报表。

郑德鼎

关于作者:郑德鼎

企业信息化与 SAP 技术顾问,长期专注 SAP ABAP、FI/CO、MM、SD 等模块的技术分享与实战经验总结。查看更多介绍

来源说明:本文内容由「FioriElementListReport开发实战2.md」整理生成,仅用于内部技术分享与学习交流。