首页 > 其他分享 >Fiori开发之使用oData进行数据查询

Fiori开发之使用oData进行数据查询

时间:2023-03-07 11:34:10浏览次数:37  
标签:set 查询 oData odata Entity Fiori 服务 entity 代码

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

相关文章

  • MybatisPlus多表连接查询
    一、(一)背景内容软件应用技术架构中DAO层最常见的选型组件为MyBatis,熟悉MyBatis的朋友都清楚,曾几何时MyBatis是多么的风光,使用XML文件解决了复杂的数据库访问的难题。时至......
  • 海关数据查询系统「查询平台分类」
    海关数据去哪里查?有没有免费和付费的查询平台?有没有专门提供海关数据的公司?海关信息网查询数据:哪里可以查到详细的海关数据?有没有专门提供海关数据的公司?目前免费的较少,例......
  • linux服务器qps查询,查看当前linux服务器的QPS
    https://blog.csdn.net/weixin_42119281/article/details/116595205 QPS:每秒查询率(QPS,Queries-per-second)是对一个特定的查询服务器在规定时间内所处理流量多少的......
  • (C语言)实现对注册表创建修改,查询,删除操作的简单操作
    最初是发现有款软件是根据注册表的数据判断限免额度,但手动更改注册表比较麻烦,然后尝试用bat写一个一键更改的,但bat写条件判断比较麻烦,然后想到了C语言可以直接编译exe执行......
  • (C语言)实现对注册表创建修改,查询,删除操作的简单操作(省略版)
    前言本文为省略版直接贴代码,用就完事了,下文三个方法都为独立模块可以单独调用,详细步骤版在这,点击跳转。一、代码实现#include<stdio.h>#include<Windows.h>//删......
  • postgreSQL 查询表结构
    SELECTDISTINCTC.relnameAStabname,obj_description(C.oid)ASCOMMENTFROM(SELECTDISTINCTtablename,schemanameFROMpg_tablesWHEREPOSITION('_2'IN......
  • 使用IntelliJ IDEA操作Hive时,执行查询语句报错
    问题描述:同样的查询语句在Hive客户端中能够顺利执行,而通过JDBC查询时报如下错误:org.apache.hadoop.security.AccessControlException:Permissiondenied:user=root,ac......
  • 解决C#使用MySQL时,无法进行中文模糊查询的问题
    以前用MySQL用得少,也没出现过类似的问题,大概就是如下的情况1select*fromxxxxwherexxlike'%中文关键字%';在C#里进行更新时时,发现未查询到相关结果,在网上找了一......
  • Android 查询远程服务器的工具QueryUtils
    /***查询远程服务器的工具*@authorchen.lin**/publicclassQueryUtils{privatestaticfinalStringTAG="CommonUtils";privatestaticQueryUtilsins......
  • 子查询学习
    转自:http://c.biancheng.net/sql/sub-query.html,https://www.cnblogs.com/geaozhang/p/6756825.html1.介绍子查询也称“内部查询”或者“嵌套查询”,是指将一个SELECT查......