Fiori Element List Report开发实战2——ODATA的开发
UI5的应用都是在web端显示,数据的获取和部分处理就要依赖接口来处理。这里使用的接口技术就是OData。OData 是用于构建和使用 RESTful
API 的开放标准。它定义了一种查询语言,用于通过 HTTP 发送和检索数据并对数据执行操作。该协议有两个广泛使用的版本:OData v2
和更扩展和功能更强大的 OData v4。
本次案例使用OData v2创建。
按计划,我要将一个日志监控程序发布成Fiori Element List Report。我们需要先为日志表创建一个OData接口。
true,后面就可以直接发布OData,不过这样直接发布的接口存在一些问题,比如最后的两个字段,是string类型的字段,实际发布为OData后,会无法调用,还需要增加一些设置。此外,ERDAT和ERDAT_OUT,是日期类型,但是在OData
V2中,只能显示为时间戳或带时区的时间戳。(冷知识,在OData V4中,时间类型字段会显示为时间戳,日期可以显示为普通的年月日)
这里我们只是创建视图,然后转到事物代码SEGW继续创建。
按照网上的教程,这里应该有一个简单的向导来创建,然而2022版本的程序,这个向导没有了。所以我们需要手动建立这些项目。
首先点击新建创建一个项目。后续如果需要传输,可以存在开发包中。
接下来我们需要创建Entity Types。首先输入ET的name,然后勾选Create Related Entity Set,Entity Set
Name会自动生成。
创建完成后,我们在右侧维护的属性窗口中,维护ABAP Structure,这里能选择的是我们刚才创建的视图,也可以选择结构或者数据库表。
接下来,我们维护Entity Types下的Properties。
我们需要确定一些字段,这些字段可以作为主键来选择,在IS KEY列勾选。
Edm Core
Type是OData中每个字段的属性,这里日期只能选择Edm.DateTime或者Edm.DateTimeOffset。时间字段选择Edm.Time,GUID选择Edm.Guid,字符类型字段选择Edm.String。
根据OData的实际使用要求,我们可以支持它的查询、创建、更新或删除、排序、筛选等功能。这里我禁止这个接口产生任何修改,所以只勾选了排序,允许空值存在字段,和筛选。
Label是描述字段,可以带到后面创建的页面中。
ABAP Field是参考前面ET类型的字段。
接下来我们维护Entity Sets。
因为功能简单,这里只勾选筛选相关的选项。
接下来我们需要在Service Implementation中创建mapping
如图筛选,返回这样的结果,确定
在弹出的界面中,点击Generate Mapping,自动充填Element
到这里,配置步骤基本完成,我们先点击下生成,生成代理类
直接确定,生成类。
因为之前的日期字段,我们需要处理下它的显示,这里我们修改MPC_EXT类的DEFINE方法,这里我们不能直接修改,要重新定义方法。
这里我们指定ERDAT的显示类型为日期。后续UI5界面,还可以参考这里的文档,
https://sapui5.hana.ondemand.com/#/api/sap.m.DatePicker
,使用DatePicker空间,显示中长度的日期,这样只显示到年月日。
现在SEGW相关的设置已经完成了,接下来,就是将OData服务激活。进入事务代码/IWFND/MAINT_SERVICE中,我们点击添加服务。
搜索我们前一步创建的服务。需要注意,这里系统别名的选择是必须的,一般是LOCAL。这里能够搜索出来的服务都是没有添加过的服务。如果找不到,请确定名称描述,或者是否已经被添加。
选中要添加的行,点击添加
这里有个弹窗,可以直接确定下一步。需要传输的情况下选择包分配,如果对安全有进一步要求的,可以勾选Oauth启用。
确定后,服务就已经创建好了。点击
返回上一页面,我们能找到刚才创建的服务。
不过现在接口还是不能正常使用。看向右下角,我们需要添加系统别名。
这里有可能只是页面刷新存在问题,实际系统已经自动创建。如果没有创建,可以补充下配置。
双击服务目录,可以看到Intelnet通信框架节点
正常情况下是绿灯,这时可以点击SAP Gateway进行测试。
不过我这里的测试系统有些问题,SAP Gateway无法使用。不过没有关系,我们可以POSTMAN来测试我们的接口。
我们从这里点击配置,直接跳转到SICF。
点击测试服务获取真实的接口地址
注意这里的zlog_etSet。当前地址后面加上这个,才是真正的查询接口地址。
OData传输的内容可以指定传输为json或xml。需要在地址后指定 $format=json
这里我们需要注意下日期和时间,这里明显不是我们常用的8位日期或者6位时间,二十有明显格式化的日期时间。
自此,OData的创建结束了,下篇文章将在VS Code上创建报表。