Fiori Element List Report开发实战3——通过向导创建报表并发布
上篇文章中,我们已经得到了创建好的OData,现在将通过VS
Code的向导创建报表程序。需要注意,前面几步中,我们通过SICF打开的接口,文档中有self和latest-
version两个字段,这里的地址是你的真实OData地址。稍后创建要使用这个地址。
还记得第一篇文章新建的文件夹吗?现在它真的有用了!
首先我们在VS Code打开新建好的文件夹,添加到工作区之中。
虽然我承认这里是在玩梗,但是工作区使用的文件夹对后续的开发影响不大。不过这里还是强烈建议,你的所有文件路径最好全部由英文数字所组成,不要夹杂中文或其他特殊字符。
接下来,我们鼠标点击中上部的命令栏,选择显示并运行命令。
这时,我们可以使用的命令基本就列出来了。这里我们简单输入一些关键字进行查询,比如“Fiori:Open”。
我们可以看到,相似字符的命令都自动搜索出来了。我们点击
,开始向导创建。
我们的目标是List Report程序,这里选择第三个页签。这里也能预览到大致的样式。
下一步,我们选择OData服务,输入地址和能访问接口的服务账号,之后下一步。
这里默认带出了Main entity。有的服务可能带有一些其他功能,所以Main entity需要手动选择下。
Table type是表格的样式,这里使用Responsive,表现最接近ALV。其他样式大家可以自行体验。
下一步,我们会定义程序的名称描述相关信息
我们这里修改下信息。
需要注意一些东西:
Application namespace:命名空间是一种在编程中用于区分不同模块、类、函数等标识符的机制。在 SAP UI5
中,命名空间用于标识和组织应用的各个模块、库和资源。每个命名空间都代表了一个独特的标识符前缀,用于将相关的功能模块组织在一起。这有助于确保不同部分之间的标识符不会发生冲突,同时也提供了一种逻辑结构,使开发者能够更好地组织和维护代码。如果后面打算增加一些自定义的功能,这里最好填上。
Minimum SAPUI5 version:UI5组件一定程度上可以向下兼容,这里选择可以支持的最小UI5版本。这里直接保持默认,后续可以修改。
Add deployment configuration:可以在当前向导配置传输。目前点No,后续生成。
Add FLP configuration:可以配置应用挂在Fiori Launchpad上,这里点No,上传后可以本地再配置。
Configure advanced options:可以定义主题,启用一些特性,这里保持默认就行,点No。
点击Finish,开始生成程序。等待片刻。
然后我们可以看到这个界面。
我们先预览下创建的报表
如上图点击按钮,选择命令,稍等服务启动,默认浏览器会弹出一个页面。
确定下密码
好像不对劲……既没有搜索框,也没有字段展示,发生什么事了?
莫慌,浏览器不要关,回到VS Code。
测试生成的语言默认是英文,我们先修改一下。
我们先修改下本地测试环境的语言为中文
这样回到之前的网页,它已经自动刷新,能看到Adapt
Filters内的字段起码是中文了。这说明程序已经从OData读取正确的语言了。我们当然可以用英文登录SAP,SEGW中设置英语的描述。
同时在VS Code的终端窗口中看到,OData的数据访问确实切换到中文了。
然后我们修改annotation.xml,定义默认的搜索页面和默认的展示表字段。
虽然在向导中,有按钮
,可以在下面的列表里定位要修改的部分,创建内容。但是如果知道修改位置,跳过向导才是速度最快的方法。
定位在这里,我们插入一些内容
< Annotations Target = " ZODATA_ZLOG_V2_SRV . zlog_et " >
< Annotation Term = " UI . SelectionFields " >
< Collection >
< PropertyPath > ERDAT PropertyPath >
< PropertyPath > UZEIT PropertyPath >
< PropertyPath > ZSYSID PropertyPath >
< PropertyPath > ZFM_ID PropertyPath >
< PropertyPath > ZFM_NAME PropertyPath >
< PropertyPath > ZFM_MS PropertyPath >
< PropertyPath > UUID PropertyPath >
< PropertyPath > ERDAT_OUT PropertyPath >
< PropertyPath > UZEIT_OUT PropertyPath >
Collection >
Annotation >
Annotations >
Target参数是OData的服务+Entity Type组成。
UI.SelectionFields可以设置默认的搜索字段。
接下来是默认的表列。
< Annotation Term = " UI . LineItem " >
< Collection >
< Record Type = " UI . DataField " >
< PropertyValue Property = " Value " Path = " ERDAT " />
Record >
< Record Type = " UI . DataField " >
< PropertyValue Property = " Value " Path = " UZEIT " />
Record >
< Record Type = " UI . DataField " >
< PropertyValue Property = " Value " Path = " ZSYSID " />
Record >
< Record Type = " UI . DataField " >
< PropertyValue Property = " Value " Path = " ZFM_ID " />
Record >
< Record Type = " UI . DataField " >
< PropertyValue Property = " Value " Path = " ZFM_NAME " />
Record >
< Record Type = " UI . DataField " >
< PropertyValue Property = " Value " Path = " ZFM_MS " />
Record >
< Record Type = " UI . DataField " >
< PropertyValue Property = " Value " Path = " UUID " />
Record >
< Record Type = " UI . DataField " >
< PropertyValue Property = " Value " Path = " ERDAT_OUT " />
Record >
< Record Type = " UI . DataField " >
< PropertyValue Property = " Value " Path = " UZEIT_OUT " />
Record >
< Record Type = " UI . DataField " >
< PropertyValue Property = " Value " Path = " ZINPUT " />
Record >
< Record Type = " UI . DataField " >
< PropertyValue Property = " Value " Path = " ZOUTPUT " />
Record >
Collection >
Annotation >
注意,这里显示不下的传入传出Json,会通过显示在正常字段下方的形式进行展示。
我们的查询表,默认优先关注当前的日期,所以我们要针对传入日期时间进行倒叙排列。
< Annotation Term = " UI . PresentationVariant " >
< Record >
< PropertyValue Property = " Visualizations " >
< Collection >
< AnnotationPath > @ UI . LineItem AnnotationPath >
Collection >
PropertyValue >
< PropertyValue Property = " SortOrder " >
< Collection >
< Record Type = " Common . SortOrderType " >
< PropertyValue Property = " Property " PropertyPath = " ERDAT " />
< PropertyValue Property = " Descending " Bool = " true " />
Record >
< Record Type = " Common . SortOrderType " >
< PropertyValue Property = " Property " PropertyPath = " UZEIT " />
< PropertyValue Property = " Descending " Bool = " true " />
Record >
Collection >
PropertyValue >
Record >
Annotation >
至此,这个单纯查询的报表功能就算开发完成了。由于是OData V2,一些更好的效果无法配置,实际开发中,还是推荐优先使用OData
V4。此外,向导生成的页面模型,是JSON,因此功能还是受限严重。真的想开发一些有功能的报表,最好还是直接手搓页面。
想学习UI5开发,官方文档是https://ui5.sap.com/。这里可以学会如果一步一步的手搓UI5页面。同时可以下载现有的样例进行参考。
程序已经开发完成。接下来就是发布到本地的SAP环境中了。
回到Application Information页面。如果页面找不到,可以在命令行中打开:
点击
如下图这样配置,程序可以发布到本地SAP。目标
...