SAPUI5 (35) - OData Model 连接后端 SAP 系统 (中)

2024-02-05 13:48

本文主要是介绍SAPUI5 (35) - OData Model 连接后端 SAP 系统 (中),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

完成上一篇的配置,现在我们可以在 SAP 系统中创建基于 SAP Netweaver Gateway 的 OData Service。本篇主要是介绍在 SAP 系统中创建 OData service 的过程,为后续在 OpenUI5 中通过 OData Model 使用 SAP 系统提供的 OData 数据服务。SAP OData service 本身包含很多知识点,也需要系统学习。

本次要实现的功能:创建数据库表 zemployee,并基于 SAP Netweaver OData Service, 实现对 zemployee 的增删改查。

1. 创建 zemployee 数据库表

使用事务码 SE11 创建 zemployee 表。因为本文主要介绍 OData service 创建的过程,所以并不打算详细说明创建表的细节。为了足够简单, zemployee 表只包含 empid, empname, empaddr (employee address) 三个字段。

2. 创建基于 Netweaver Gateway 的 OData Service

2.1 创建 Gateway service project

通过事务码 SEGW,进入下面的界面:

点击 Create Project 按钮,创建一个 Gateway service project, 将 project 命名为 zempprj。点击 「Local Object」按钮,zempprj 项目创建成功:


本节动图:

我们可以看到,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 创建 Data Model

1) 创建 Entity

选中 Data Model,右键,Import -> DDIC Structure,表示从 DDIC 中导入结构作为 Entity:

将 Entity type 命名为 Employee, 字段来自 DDIC 的 zemployee 表:

选中 zemployee 表的所有字段,点击 Next 按钮:

系统进入如下界面。在这个界面中,定义 Employee 这个 entity 的字段属性。将 mandt 和 empid 定义为 primary key,并将 Name 的名称规范为首字母大写。

属性定义完成后,左边的 panel 中, Properties 下面可以看到主键和属性:


本节动图:

2) 创建 Entity set

选中左边 Panel 的 Entity Set,右键,Create。将 Entity set 命名为 EmployeeCollection, Entity type 为刚刚创建的 Employee

定义 EmployeeCollection 可以进行 CRUD:

本节动图:

2.3 Generate Runtime Objects

选中左边 Panel 的 Runtime Artifacts,点击 Generate Runtime Objects 按钮,系统进入下面的界面:

保持所有默认不变,点击 Continue 按钮。系统生成 Runtime Objects。

2.4 服务注册

前面我们在 SAP 系统中创建了 Gateway service 的别名,我们可以看到,这个别名出现在 Service maintenance 下面。双击可以进入下面的界面。

此时, Registration status 是没有状态的,点击 Register 按钮,系统弹出对话框:

选择 Sytem Alias 为 local,进入下面的界面

确认,完成系统注册。本节动图:

2.5 测试 OData service

尽管我们还没有编写 OData service 的实现代码,但已经可以通过 Browser 或者 SAP Gateway Client 进行测试了。双击左边 Panel Service maintenance 下的 localgateway,点击右边出现的 Maintain 按钮,进入下面的界面:

我们可以通过点击左下角的 Call Browser 或者 SAP Gateway Client 按钮进行测试。当点击 SAP Gateway Client 按钮的时候,界面如下:

后面我们会多次进入到这个界面,进行 CRUD 的测试。

利用 Browser 来进行测试,则有可能碰到一些问题。在这里介绍两种极有可能的情况及解决方法:

一是点击 Call Browser 按钮,系统显示 host name 或 port 没有配置好,这个时候,使用事务码 SMICM,然后通过菜单 Goto -> Services,看看主机和端口是否配置好,是否启用。

另外,还要注意域名解析,如果服务器没有在 Internet 上公开,这个 host name 不能通过 Internet 网进行访问,则需要设置本机的 hosts 文件,让本机指向这个域名。Windows 10 中 hosts 文件的位置在 C:\Windows\System32\drivers\etc 文件夹中。

2.6 服务实现 (Service maintenance)

服务实现是指提供 CRUD 的具体实现,因为读取数据的时候,存在 Entity 和 EntitySet,SAP 一般把读取 Entity 叫做 Read,把读取 EntitySet 叫做 Query。在 SEGW 界面中 展开 Service Implementation:

我们需要编写具体的代码,这样外部才能实现对 SAP 数据的增删改查。首先我们来看看 GetEntitySet 方法的编写过程。

Query

选中 GetEntitySet (Query),右键,Go to ABAP Workbench。系统提示:

点击「确认」按钮,进入下面的界面:

找到 EMPLOYEECOLLECTI_GET_ENTITYSET,右键,选择 Redefine,改写这个方法。其它的方法创建过程类似,不再重复说明。

改写后 employeecollecti_get_entityset 方法代码如下:

  METHOD employeecollecti_get_entityset.SELECT * FROM zemployeeINTO CORRESPONDING FIELDS OF TABLE et_entityset.ENDMETHOD.

et_entityset 是代码框架预设的方法参数,通过追踪,我们知道,它是基于 zemployee 的内表类型。

测试:

在 SAP Gateway Client 界面中:

  • HTTP Method: GET
  • Request URL: /sap/opu/odata/sap/ZEMPPRJ_SRV/EmployeeCollection?$format=json

系统返回的结果:

我们总可以从 SEGW 进入服务维护和 Gateway client 界面。也可以通过另外的事务码:

  • Service maintain: /IWFND/MAINT_SERVICE。这两个事务码比较怪,不通过/o 系统提示错误。所以应该输入 /O/IWFND/MAINT_SERVICE
  • SAP Gateway client: /o/iwfnd/gw_client
Read

实现 GetEntity (Read) 方法:

  METHOD employeecollecti_get_entity.DATA: ls_key_tab  TYPE /iwbep/s_mgw_name_value_pair,l_empid     TYPE zemployee-empid,ls_employee TYPE zemployee.READ TABLE it_key_tab WITH KEY name = 'EmpId' INTO ls_key_tab.l_empid = ls_key_tab-value.SELECT SINGLE * FROM zemployee INTO er_entity WHERE empid = l_empid.ENDMETHOD.

SAP Gateway Client 测试:

  • HTTP Method: GET

  • Request URL: /sap/opu/odata/sap/ZEMPPRJ_SRV/EmployeeCollection(Mandt='100',EmpId='1')?$format=json

  • Response:

{"d" : {"__metadata" : {"id" : "http://dph01.ourdomain:8180/sap/opu/odata/sap/ZEMPPRJ_SRV/EmployeeCollection(Mandt='100',EmpId='1')","uri" : "http://dph01.ourdomain:8180/sap/opu/odata/sap/ZEMPPRJ_SRV/EmployeeCollection(Mandt='100',EmpId='1')","type" : "ZEMPPRJ_SRV.Employee"},"Mandt" : "100","EmpId" : "1","EmpName" : "Stone","EmpAddr" : "Wuhan"}
}
Create

实现 Create 方法

  METHOD employeecollecti_create_entity.DATA: ls_employee TYPE zemployee." Get requested data from inputio_data_provider->read_entry_data( IMPORTING es_data = er_entity ).MOVE-CORRESPONDING er_entity TO ls_employee.INSERT zemployee FROM ls_employee.ENDMETHOD.

SAP Gateway Client 测试:

因为 Create 操作需要数据,我们可以先用 GET 方法得到一笔数据,更改后再用 POST 方法进行提交。操作步骤如下:

点击 「Use as request」,将获取的数据进行更改后提交:

返回的状态码为 201 则表示成功。

Update

实现 Update 方法:

  method EMPLOYEECOLLECTI_UPDATE_ENTITY.DATA: ls_employee TYPE zemployee." Get requested dataio_data_provider->read_entry_data( IMPORTING es_data = er_entity ).MOVE-CORRESPONDING er_entity TO ls_employee.MODIFY zemployee FROM ls_employee.endmethod.

Update 的测试使用 PUT 方法:

  • HTTP Method: PUT
  • Request URI: /sap/opu/odata/sap/ZEMPPRJ_SRV/EmployeeCollection(Mandt='100',EmpId='3')
Delete

实现 Delete 方法:

  METHOD employeecollecti_delete_entity.DATA: ls_key_tab  TYPE /iwbep/s_mgw_name_value_pair,l_empid     TYPE zemployee-empid,ls_employee TYPE zemployee.READ TABLE it_key_tab WITH KEY name = 'EmpId' INTO ls_key_tab.l_empid = ls_key_tab-value.DELETE FROM zemployee  WHERE empid = l_empid.ENDMETHOD.

测试比较简单,不再赘述。

这篇关于SAPUI5 (35) - OData Model 连接后端 SAP 系统 (中)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/681103

相关文章

不懂推荐算法也能设计推荐系统

本文以商业化应用推荐为例,告诉我们不懂推荐算法的产品,也能从产品侧出发, 设计出一款不错的推荐系统。 相信很多新手产品,看到算法二字,多是懵圈的。 什么排序算法、最短路径等都是相对传统的算法(注:传统是指科班出身的产品都会接触过)。但对于推荐算法,多数产品对着网上搜到的资源,都会无从下手。特别当某些推荐算法 和 “AI”扯上关系后,更是加大了理解的难度。 但,不了解推荐算法,就无法做推荐系

W外链微信推广短连接怎么做?

制作微信推广链接的难点分析 一、内容创作难度 制作微信推广链接时,首先需要创作有吸引力的内容。这不仅要求内容本身有趣、有价值,还要能够激起人们的分享欲望。对于许多企业和个人来说,尤其是那些缺乏创意和写作能力的人来说,这是制作微信推广链接的一大难点。 二、精准定位难度 微信用户群体庞大,不同用户的需求和兴趣各异。因此,制作推广链接时需要精准定位目标受众,以便更有效地吸引他们点击并分享链接

基于人工智能的图像分类系统

目录 引言项目背景环境准备 硬件要求软件安装与配置系统设计 系统架构关键技术代码示例 数据预处理模型训练模型预测应用场景结论 1. 引言 图像分类是计算机视觉中的一个重要任务,目标是自动识别图像中的对象类别。通过卷积神经网络(CNN)等深度学习技术,我们可以构建高效的图像分类系统,广泛应用于自动驾驶、医疗影像诊断、监控分析等领域。本文将介绍如何构建一个基于人工智能的图像分类系统,包括环境

水位雨量在线监测系统概述及应用介绍

在当今社会,随着科技的飞速发展,各种智能监测系统已成为保障公共安全、促进资源管理和环境保护的重要工具。其中,水位雨量在线监测系统作为自然灾害预警、水资源管理及水利工程运行的关键技术,其重要性不言而喻。 一、水位雨量在线监测系统的基本原理 水位雨量在线监测系统主要由数据采集单元、数据传输网络、数据处理中心及用户终端四大部分构成,形成了一个完整的闭环系统。 数据采集单元:这是系统的“眼睛”,

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟 开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚 第一站:海量资源,应有尽有 走进“智听

【区块链 + 人才服务】可信教育区块链治理系统 | FISCO BCOS应用案例

伴随着区块链技术的不断完善,其在教育信息化中的应用也在持续发展。利用区块链数据共识、不可篡改的特性, 将与教育相关的数据要素在区块链上进行存证确权,在确保数据可信的前提下,促进教育的公平、透明、开放,为教育教学质量提升赋能,实现教育数据的安全共享、高等教育体系的智慧治理。 可信教育区块链治理系统的顶层治理架构由教育部、高校、企业、学生等多方角色共同参与建设、维护,支撑教育资源共享、教学质量评估、

软考系统规划与管理师考试证书含金量高吗?

2024年软考系统规划与管理师考试报名时间节点: 报名时间:2024年上半年软考将于3月中旬陆续开始报名 考试时间:上半年5月25日到28日,下半年11月9日到12日 分数线:所有科目成绩均须达到45分以上(包括45分)方可通过考试 成绩查询:可在“中国计算机技术职业资格网”上查询软考成绩 出成绩时间:预计在11月左右 证书领取时间:一般在考试成绩公布后3~4个月,各地领取时间有所不同

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

计算机毕业设计 大学志愿填报系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点赞 👍 收藏 ⭐评论 📝 🍅 文末获取源码联系 👇🏻 精彩专栏推荐订阅 👇🏻 不然下次找不到哟~Java毕业设计项目~热门选题推荐《1000套》 目录 1.技术选型 2.开发工具 3.功能