Fiori开发之使用oData进行数据查询
一、ABAP系统oData服务搭建
1、创建数据字典
(1)、SE11创建数据库表(日期,金额,数量类型的字段在UI5前端显示时需要经过一定的转换,因时间问题于是都采用字符类型)
2、创建 Gateway service project
(2-1) 事务代码:SEGW,点击新建项目ZPURCHASE_ORDER
我们可以到,Gateway service 分为四个部分 (左边的 panel):
•Data Model: 数据模型,主要包括 Entity type,( 比如说 product entity,customer entity 等),Entity set (Entity 的集合,多笔数据) 和 Association (Entity 之间的关联)
•Service Implementation: Entity set 的 CRUD 实现
•Runtime Artifacts: 基于 Entity set 的代码框架,包括数据模型 (Data model),数据提供者 (Data provider)
•Service maintenance:注册服务,测试服务。
(2-2)创建 Entity
选中 Data Model,右键,Import -> DDIC Structure,表示从 DDIC 中导入结构作为 Entity:
上面复选框由于汉化问题,实际意义为创建默认实体集合(entity set)
选择所有字段,点击下一步
勾选mandt和ebeln为主键,NAME列为entity 的字段名,系统默认为驼峰式,但我个人还是建议将其全部转换为大写,因为后续在进行CRUD操作时必须按照这个NAME列的名称严格区分大小写,对于ABAPER来说真的是非常麻烦。
(2-3)创建entity set(如果导入DDIC结构时没有勾选创建默认entity set才需要执行本步骤)
(2-4)设置entity set 可以支持CRUD,实测发现红圈中复选框不勾选也可以支持CRUD,但是Addr.able一定要勾上
(2-5)生成运行时对象(生成访问entity set 的代理类),在弹出的对话框中不改变任何值,点击continue即可(如果entity类型有变化比如增加字段或者调整字段类型需要重新点击生成运行是对象),生成完之后则服务实施文件夹下生成了相应的方法名
(2-6)服务注册,绿灯极为可以对外提供odata 服务了
(2-7)测试odata服务
尽管我们还没有编写 OData service 的实现代码,但已经可以通过 Browser 或者 SAP Gateway Client 进行测试了。双击左边 Panel Service maintenance 下的 DEVCLNT100,点击右边出现的 Maintain 按钮,进入下面的界面:
系统提供浏览器和GUI两种测试方法,我们采用GUI测试,如下图所示,状态为200则为正常
(2-8)编写服务实现,服务实现是指提供 CRUD 的具体实现,因为读取数据的时候,存在 Entity 和 EntitySet,SAP 一般把读取 Entity 叫做 Read,把读取 EntitySet 叫做 Query。在 SEGW 界面中 展开 运行时对象
对EKKOSET_GET_ENTITYSET方法进行重定义(下述截图只是演示,该方法之前已经重定义了)
下述代码中有关于过滤器相关代码
下面为read(单条数据)的代码,传入参数为主键
在GUI里测试读取方法:
/sap/opu/odata/SAP/ZPURCHASE_ORDER_SRV/EKKOSet,右下角的entry则为获取到的实体集合(内表数据)
二、创建一个UI5项目
具体请参考<<Fiori开发之WEB IDE创建一个简单项目.docx>>
三、添加数据源
关于数据源配置请参考<< Fiori开发之数据源配置.docx>>
1、添加网关服务,双击打开manifest.json,选择我们在SEGW里面建立的网关服务,点击下一步即完成
ZPURCHASE_ORDER_SRV
添加完成之后如下图所示
2、创建数据模型(data model)
仍然在manifest.json中,切换到Models标签页
保存成功之后,在下图中将绑定模式选择为双向(既可查询服务器端数据,也可修改)
将manifest.json切换为代码编辑模式,也可以手工修改model,数据源等信息
四、在view中绑定odata model
1、在VIEW中新建一个LIST TABLE(类似于SAP GUI中的LIST列表),可以采用代码直接编辑添加或者使用layout布局模式编辑VIEW,代码如下:
table标签声明一个list table,items属性用于绑定一个odata model(类似于ABAP中的调用ALV显示函数时传入的内表名),通过items直接关联前面添加的数据源并且定义到具体的entity set,无需编写Javascript代码显示的去调用后端odata服务,系统会自动向后端发送HTTP请求(不带任何过滤条件)。
items节点代表要显示的具体字段
columns节点代表表头名,items+columns节点即类似于ALV中的fieldcat
2、测试VIEW,按下图所示,系统会打开新的浏览器窗口
3、跟踪调试,在ABAP后端系统,通过事务代码SEGW进入到代理类的实现方法打上用户断点(非会话断点),刷新网页即可进入断点进行调试
标签:set,查询,oData,odata,Entity,Fiori,服务,entity,代码 From: https://www.cnblogs.com/ZJY-1314/p/17187455.html