iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >怎么用Restful ABAP Programming模型开Fiori应用
  • 356
分享到

怎么用Restful ABAP Programming模型开Fiori应用

2023-06-04 06:06:54 356人浏览 八月长安
摘要

本篇内容介绍了“怎么用Restful ABAP Programming模型开Fiori应用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Je

本篇内容介绍了“怎么用Restful ABAP Programming模型开Fiori应用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

Jerry的通过CDS view + Smart Template 开发Fiori应用的blog合集。

ABAP在不断向前进化,如今我们有了新的编程模型:Restful ABAP Programming模型,简称为RAP模型。该模型定义了一套架构体系,应用开发人员能够凭借其来高效地进行应用的端到端开发,这种应用具有与生俱来的Restful特质,能充分利用HANA平台的强大计算能力,支持云环境和Fiori UX。

怎么用Restful ABAP Programming模型开Fiori应用

RAP模型的三大支柱:

  • Business Service

  • Core Data Service

  • Behavior Definition

怎么用Restful ABAP Programming模型开Fiori应用

下面请跟着Jerry一起,通过一个实际的例子,了解一下这种全新的通过Restful ABAP Programming模型进行Fiori应用开发的步骤吧。

Jerry还是沿用传统ABAP On-Premises编程培训教材里使用过的经典的SFLIGHT模型来作为底层数据库存储。

(1)首先创建一个数据库表ZTRAVEL_JERRY:(如果想复制这段源代码,请点击文末的“阅读原文”获得)

@EndUserText.label : 'Database table for travel data XXX'@AbapCatalog.enhancementCateGory : #NOT_EXTENSIBLE@AbapCatalog.tableCategory : #TRANSPARENT@AbapCatalog.deliveryClass : #A@AbapCatalog.dataMaintenance : #LIMITEDdefine table ztravel_jerry {  key client      : abap.clnt not null;  key travel_id   : /dmo/travel_id not null;  agency_id       : /dmo/agency_id;  customer_id     : /dmo/customer_id;  begin_date      : /dmo/begin_date;  end_date        : /dmo/end_date;  @Semantics.amount.currencyCode : 'ztravel_jerry.currency_code'  booking_fee     : /dmo/booking_fee;  @Semantics.amount.currencyCode : 'ztravel_jerry.currency_code'  total_price     : /dmo/total_price;  currency_code   : /dmo/currency_code;  description     : /dmo/description;  created_by      : syuname;  created_at      : timestampl;  last_changed_by : syuname;  last_changed_at : timestampl;}

怎么用Restful ABAP Programming模型开Fiori应用

因为我们在ABAP Development Tools里无法用事务码SE16手动往这张表里插入数据,所以我创建一个ABAP类,用ABAP代码往这个表里插入三条数据。

怎么用Restful ABAP Programming模型开Fiori应用

按F9执行这个ABAP类,然后看到三条数据成功插入了:

怎么用Restful ABAP Programming模型开Fiori应用

(2) 我们最终的目的是创建一个支持对这张表进行增删改查的Fiori应用,而Restful ABAP Programming模型的三大支柱之一为Core Data Service,因此我们首先得有基于数据库表ZTRAVEL_JERRY的CDS view.

所以我首先创建一个CDS view:

@AbapCatalog.sqlViewName: 'ZVI_TRAVEL'@AbapCatalog.compiler.compareFilter: true@AbapCatalog.preserveKey: true@AccessControl.authorizationCheck: #CHECK@EndUserText.label: 'Travel data - XXX'define root view ZI_TRAVEL_JERRY as select from ztravel_jerry as Travel  association [0..1] to /DMO/I_Agency   as _Agency   on $projection.agency_id = _Agency.AgencyID association [0..1] to /DMO/I_Customer as _Customer on $projection.customer_id = _Customer.CustomerID association [0..1] to I_Currency      as _Currency on $projection.currency_code = _Currency.Currency {  key travel_id,     agency_id,     customer_id,     begin_date,     end_date,     @Semantics.amount.currencyCode: 'currency_code'     booking_fee,     @Semantics.amount.currencyCode: 'currency_code'     total_price,     @Semantics.currencyCode: true     currency_code,     description,     @Semantics.user.createdBy: true     created_by,     @Semantics.systemDateTime.createdAt: true     created_at,     @Semantics.user.lastChangedBy: true     last_changed_by,     @Semantics.systemDateTime.lastChangedAt: true     last_changed_at,          _Agency,     _Customer,     _Currency}

怎么用Restful ABAP Programming模型开Fiori应用

然后创建一个projection view,将该view的字段有选择性地暴露出来。

@EndUserText.label: 'Travel projection view - Processor'@AccessControl.authorizationCheck: #NOT_REQUIRED@UI: { headerInfo: { typeName: 'Travel', typeNamePlural: 'Travels', title: { type: #STANDARD, value: 'TravelID' } } }@Search.searchable: truedefine root view entity ZC_TRAVEL_JERRY as projection on ZI_TRAVEL_JERRY { @UI.facet: [ { id:              'Travel',                purpose:         #STANDARD,                type:            #IDENTIFICATION_REFERENCE,                label:           'Travel',                position:        10 } ] @UI: {     lineItem:       [ { position: 10, importance: #HIGH } ],     identification: [ { position: 10, label: 'Travel ID [1,...,99999999]' } ] } @Search.defaultSearchElement: true key travel_id          as TravelID, @UI: {     lineItem:       [ { position: 20, importance: #HIGH } ],     identification: [ { position: 20 } ],     selectionField: [ { position: 20 } ] } @Consumption.valueHelpDefinition: [{ entity : {name: '/DMO/I_Agency', element: 'AgencyID'  } }] @ObjectModel.text.element: ['AgencyName'] ----meaning? @Search.defaultSearchElement: true agency_id          as AgencyID, _Agency.Name       as AgencyName, @UI: {     lineItem:       [ { position: 30, importance: #HIGH } ],     identification: [ { position: 30 } ],     selectionField: [ { position: 30 } ] } @Consumption.valueHelpDefinition: [{ entity : {name: '/DMO/I_Customer', element: 'CustomerID'  } }] @ObjectModel.text.element: ['CustomerName'] @Search.defaultSearchElement: true customer_id        as CustomerID, @UI.hidden: true _Customer.LastName as CustomerName, @UI: {     lineItem:       [ { position: 40, importance: #MEDIUM } ],     identification: [ { position: 40 } ] } begin_date         as BeginDate, @UI: {     lineItem:       [ { position: 41, importance: #MEDIUM } ],     identification: [ { position: 41 } ] } end_date           as EndDate, @UI: {     lineItem:       [ { position: 50, importance: #MEDIUM } ],     identification: [ { position: 50, label: 'Total Price' } ] } @Semantics.amount.currencyCode: 'CurrencyCode' total_price        as TotalPrice, @Consumption.valueHelpDefinition: [{entity: {name: 'I_Currency', element: 'Currency' }}] currency_code      as CurrencyCode, @UI.identification: [ { position: 60, label: 'Remarks' } ] description as Description, @UI.hidden: true last_changed_at    as LastChangedAt }

大家可以注意到,这个projection view里包含了很多@UI注解,作用和Fiori Elements一样,作为元数据,告诉对应的渲染框架,运行时这些字段应该以什么样的方式渲染在Fiori UI上。

怎么用Restful ABAP Programming模型开Fiori应用

(3) 现在三大支柱之一的Core Data Service已经就位了,接下来我们基于前一步得到的projection view创建Business Service. 选中projection view,右键选择New Service Definition:

怎么用Restful ABAP Programming模型开Fiori应用

这个服务定义的第一条记录,就是通过ABAP expose关键字把projection view ZC_TRAVEL_JERRY暴露出来,模型名称为TravelProcessor:

怎么用Restful ABAP Programming模型开Fiori应用

@EndUserText.label: 'Service Defintion for ZC_Travel_JERRY'define service ZUI_C_TRAVEL_JERRY {  expose ZC_TRAVEL_JERRY as TravelProcessor;  expose /DMO/I_Customer as Passenger;  expose /DMO/I_Agency as TravelAgency;  expose /DMO/I_Airport as Airport;  expose I_Currency as Currency;  expose I_Country as Country;}

然后基于这个Service Definition创建一个Service Binding,可以简单把Service Binding理解成Service Definition的一个实例:

怎么用Restful ABAP Programming模型开Fiori应用

怎么用Restful ABAP Programming模型开Fiori应用

Service Binding创建完毕后,点击Activate激活:

怎么用Restful ABAP Programming模型开Fiori应用

之前Service Definition里用expose关键字暴露并指定成的模型TravelProcessor此时就可见了,双击:

怎么用Restful ABAP Programming模型开Fiori应用

双击后会自动打开一个链接,一个Fiori应用就呈现在我们眼前了。我们没有进行一行的javascript WEB编程,就得到了一个专业的支持高级搜索的Fiori应用,能查看底层数据库表ZTRAVEL_JERRY的内容。

怎么用Restful ABAP Programming模型开Fiori应用

(4) 至此我们已经了解了Restful ABAP Programming模型的前两大支柱,还剩下Behavior Definition. 既然RAP的口号是打造具有Restful特性的应用,但到目前为止我们还没有感受到RAP对Restful的支持,这有待Behavior Definition来完成。

选中之前创建的CDS view,创建一个新的Behavior Definition:

怎么用Restful ABAP Programming模型开Fiori应用

实现类型指定为Managed:

怎么用Restful ABAP Programming模型开Fiori应用

我们可以看到这个Behavior Definition的定义里,又多了一些新的ABAP关键字。这个Behavior Definition负责定义底层模型的Transaction Behavior,即代码第18到20行的create,update,delete.

怎么用Restful ABAP Programming模型开Fiori应用

当然增删改查的功能光定义不行,还得创建其对应的实现。上图Definition中已经指定了实现这些行为的ABAP类名称为ZCL_BP_I_TRAVEL_M_JERRY. 为此,右键选择New Behavior Implementation:

怎么用Restful ABAP Programming模型开Fiori应用

创建这个特殊的ABAP实现类:

怎么用Restful ABAP Programming模型开Fiori应用

这个实现类里面也不需要开发人员手动编写代码来完成对底层数据库表的增删改查操作——既然能称之为一个编程模型,那么这些通用的功能都通过框架类CL_ABAP_BEHAVIOR_HANDLER统一完成了,应用开发人员只需要定义一个对该类的声明即可。

怎么用Restful ABAP Programming模型开Fiori应用

怎么用Restful ABAP Programming模型开Fiori应用

把这一步创建好的Behavior Definition模型和其实现全部激活,然后回到我们之前浏览器里打开的Fiori应用,刷新,会发现多了Create和Delete两个按钮,这意味着该应用对创建和删除的支持也已经自动可用了。

怎么用Restful ABAP Programming模型开Fiori应用

“怎么用Restful ABAP Programming模型开Fiori应用”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

--结束END--

本文标题: 怎么用Restful ABAP Programming模型开Fiori应用

本文链接: https://www.lsjlt.com/news/236710.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 怎么用Restful ABAP Programming模型开Fiori应用
    本篇内容介绍了“怎么用Restful ABAP Programming模型开Fiori应用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Je...
    99+
    2023-06-04
  • 在SAP ABAP编程环境里怎么使用CAP模型创建Fiori应用
    这篇文章主要介绍“在SAP ABAP编程环境里怎么使用CAP模型创建Fiori应用”,在日常操作中,相信很多人在在SAP ABAP编程环境里怎么使用CAP模型创建Fiori应用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希...
    99+
    2023-06-04
  • 怎么把ABAP webdynpro应用配置到SAP Fiori Launchpad里
    本篇内容介绍了“怎么把ABAP webdynpro应用配置到SAP Fiori Launchpad里”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有...
    99+
    2023-06-04
  • 怎么用React开发SAP Fiori应用
    本篇内容主要讲解“怎么用React开发SAP Fiori应用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用React开发SAP Fiori应用”吧!SAP官方Github上,对UI5 We...
    99+
    2023-06-04
  • 如何使用SAP Cloud Application Programming模型开发OData
    本篇内容介绍了“如何使用SAP Cloud Application Programming模型开发OData”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,...
    99+
    2023-06-04
  • 到底什么样的ABAP系统能运行Fiori应用
    有朋友在微信上问我两个问题:S/4 fiori是标配吗?如果是ERP R/3,可以激活fiori配置吗?先回答第二个问题。在Jerry的微信公众号文章SAP Fiori应用的三种部署方式曾经提到这张图:...
    99+
    2023-06-05
  • 怎么用WebIDE打开并运行CRM Fiori应用
    这篇文章主要介绍怎么用WebIDE打开并运行CRM Fiori应用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! 访问Web IDE url 在Web IDE里进行...
    99+
    2024-04-02
  • SAP Fiori应用索引怎么查
    这篇文章主要讲解了“SAP Fiori应用索引怎么查”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“SAP Fiori应用索引怎么查”吧!官网地址:Fiori Apps Library顾名思义...
    99+
    2023-06-04
  • 怎么免费试用SAP的Fiori应用
    这篇文章主要介绍“怎么免费试用SAP的Fiori应用”,在日常操作中,相信很多人在怎么免费试用SAP的Fiori应用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么免费试用SAP的Fiori应用”的疑惑有所...
    99+
    2023-06-04
  • 怎么在SAP Fiori应用里使用React component
    这篇文章主要讲解了“怎么在SAP Fiori应用里使用React component”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么在SAP Fiori应用里使用React compone...
    99+
    2023-06-04
  • 怎么使用ABAP Restful API进行代码的全文搜索
    这篇文章主要介绍“怎么使用ABAP Restful API进行代码的全文搜索”,在日常操作中,相信很多人在怎么使用ABAP Restful API进行代码的全文搜索问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答...
    99+
    2023-06-04
  • 怎么用Eclipse进行ABAP开发
    这篇文章主要讲解了“怎么用Eclipse进行ABAP开发”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用Eclipse进行ABAP开发”吧!ABAP Development Tools,...
    99+
    2023-06-04
  • 怎么如何让SAP S/4HANA的Material Fiori应用配置到Fiori Launchpad里
    怎么如何让SAP S/4HANA的Material Fiori应用配置到Fiori Launchpad里,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。UXT/9...
    99+
    2023-06-04
  • 怎么开发并部署一个支持增删改查的Fiori应用
    本篇内容主要讲解“怎么开发并部署一个支持增删改查的Fiori应用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么开发并部署一个支持增删改查的Fiori应用”吧!Restful ABAP Pro...
    99+
    2023-06-04
  • 全球首个开放应用模型 OAM 开源
    业界要闻全球首个开放应用模型 OAM 开源2019 年 10 月 17 日,阿里巴巴合伙人、阿里云智能基础产品事业部总经理蒋江伟(花名:小邪)在 Qcon 上海重磅宣布,阿里云与微软联合推出开放应用模型 Open Application M...
    99+
    2023-06-05
  • Django3.x框架模型字段类型怎么应用
    在Django 3.x框架中,模型字段用于定义数据库表中的列。以下是一些常见的模型字段类型及其用法: 字符型字段(CharFiel...
    99+
    2023-10-23
    Django
  • 聊聊MVVM模型在Vue中怎么应用
    Vue中的实现MVVM即模型-视图-视图模型。模型指的是后端传递的数据;视图指的是所看到的页面。视图模型是mvvm模式的核心,它是连接view和model的桥梁。它有两个方向:一是将模型转化成视图,即将后端传递的数据转化成所看到的页面。实现...
    99+
    2022-11-22
    javascript vue3 Vue vue.js
  • Laravel应用程序中怎么使用模型工厂
    本文小编为大家详细介绍“Laravel应用程序中怎么使用模型工厂”,内容详细,步骤清晰,细节处理妥当,希望这篇“Laravel应用程序中怎么使用模型工厂”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。Laravel...
    99+
    2023-07-04
  • PHP原型模式是什么及怎么应用
    这篇文章主要介绍了PHP原型模式是什么及怎么应用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇PHP原型模式是什么及怎么应用文章都会有所收获,下面我们一起来看看吧。原型模式,属于创建型模式的一种。主要针对对象进...
    99+
    2023-07-05
  • 怎么使用ABAP异步RFC调用提升应用性能
    本篇内容介绍了“怎么使用ABAP异步RFC调用提升应用性能”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!采用如下report 研究async...
    99+
    2023-06-04
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作