`
JerryWang_SAP
  • 浏览: 1026127 次
  • 性别: Icon_minigender_1
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论

Jerry带您了解Restful ABAP Programming模型系列之二:Action和Validation的实现

阅读更多

相信通过Jerry的前一篇文章 30分钟用Restful ABAP Programming模型开发一个支持增删改查的Fiori应用,想必大家对Restful ABAP Programming模型已经有了一个最基本的了解吧?

简单回忆一下,我们在前一篇文章里,在SAP云平台ABAP编程环境里创建了一个Z表,然后基于这张自定义数据库表创建了CDS view,基于该view创建Service Definition,把view暴露成服务,然后通过Behavior Definition实现对Z表的增删改查。

 

 

第一篇文章有朋友留言,询问通过RAP模型生成的Fiori应用如何部署到云上。这位朋友忘记了Jerry从始至终都是在SAP云平台ABAP环境上操作的啊,所以这个生成的Fiori应用也直接在云上可用了。

双击Service Binding里的TravelProcessor或者右键菜单里选择Open Fiori Elements App Preview, 就可以访问Fiori应用。

 

 

 

 

 

稍稍有点经验的顾问朋友们都明白,一个模型只有增删改查的功能是不能满足客户实际需求的。在SAP Cloud for Customer里,开发顾问可以在Cloud Application Studio里创建beforeSave和afterModify这些脚本文件并实现业务逻辑,Jerry也曾经介绍过,它们相当于S/4HANA BOPF框架里创建的determination.

除了上述在运行时特定的时间点才能触发(beforeSave,afterModify)的逻辑外,Action机制则提供了自由度更高的业务逻辑编写机制。体现在UI上,Action逻辑一般通过UI按钮触发。

Validation比较容易理解——自定义的数据校验逻辑。

本文按照顺序介绍Action和Validation.

为了介绍在Restful ABAP Programming模型下如何开发Action,Jerry需要在第一篇文章创建的SFLIGHT表增添一个表示航班预订状态的字段,并开发一个Action,当其被调用时,修改这个状态。

(1)在数据库表里增添一个OVERALL_STATUS字段:

 

 

当然在对应的CDS view上也要通过@UI相关的注解把这个字段配置到UI上。通过注解lineItem和identification分别把view的这个字段显示在搜索结果的table控件和航班信息明细页面的字段上。通过label指定UI上显示的标签,通过注解的dataAction把这个状态字段绑定到一个名为acceptTravel的Action上。

 

 

重新激活CDS view后,我们就能在工具栏上看到CDS view里通过label维护的标签文本为Accept Travel了:

 

 

因为缺乏实现,此时点击无效果。

 

 

(2) 在Behavior Definition的声明部分,添加如下三行代码:

 

 

  • action ( features: instance ) acceptTravel result [1] $self;
  • validation validateCustomer on save { field customer_id; }
  • validation validateDates on save { field begin_date, end_date; }

上面的代码除了定义一个Action外,还声明了两个Validation,在特定字段发生变化并保存时触发校验逻辑,字段名称维护在大括号内。

剩下的就是ABAP编程实现了。在Behavior Definition的ABAP实现类里,声明下面这些ABAP类方法,来实现Behavior Definition里的定义。

 

 

首先看Action的实现,位于ABAP方法SET_STATUS_COMPLETED里:

 

 

将输入参数travel_id指定的航班预订记录的状态字段置为A - Accepted.

现在我选中ID为22这条记录,点击Accept Travel按钮:

 

 

点击之后,状态成功被置为A了:

 

 

再来加上对航班日期的校验:如果航班结束日期在起始日期之前,显然不合理,需要弹一条错误消息。

第87行到第91行把输入参数包含的航班信息读到内表lt_travel_result里,然后第95行把结束日期和起始日期做比较,如果后者早于前者,进入97行开始的IF分支,弹一个错误信息到UI.

 

 

错误信息仍然和传统的ABAP编程一样,通过ABAP Message类定义:

 

 

 

现在把结束日期维护成起始日期之前,保存的时候就看到了期望的错误消息:

 

 

至此,我们这个SFLIGHT模型除了增删改查之外,又增添了Action和Validation的功能。

这个系列的下一篇文章,Jerry会聊聊在SAP云平台ABAP编程环境里对基于Restful ABAP Programming模型应用的简单调试,敬请期待。

 

0
0
分享到:
评论

相关推荐

    SAP ABAP 通用接口日志&restful 动态调用FM

    在ABAP中,你可以通过定义和实现特定的日志类来创建自定义的日志机制,这些类通常会记录接口调用的输入参数、返回值、异常以及执行时间等信息。 接下来,我们转向RESTful动态调用Function Module(FM)。REST...

    Abap programming

    在IT领域,ABAP(Advanced Business Application Programming)是一种高级业务应用编程语言,主要应用于SAP系统,用于开发企业级的应用程序。本主题聚焦于“ABAP编程”与“JavaScript”的结合,探讨如何在SAP环境中...

    SpringBoot+Mybatis+CXF框架,实现Restful api与 WebService api接口的大实验

    描述:本实验使用SpringBoot、Mybatis和CXF框架来实现Restful API和WebService API接口的大实验,涵盖了数据库设计、 Maven依赖管理、Restful API和WebService API的实现等方面。 标签:spring boot、mybatis、...

    ABAP 帮助 英文版

    ABAP(Advanced Business Application Programming)是SAP公司开发的一种编程语言,主要用于开发SAP系统中的业务应用程序。在“ABAP 帮助 英文版”这个资源中,你将找到一个ABAP4的帮助文件(ABAP.HLP),这对于那些...

    SAP_ABAP_4.7.rar_SAP abap4_abap_abap chm_abap 4_abap4

    - 数据类型:ABAP有多种数据类型,如CHAR、INT、FLOAT等,用于定义变量。 - 语句结构:包括选择、循环、条件判断等基本控制流程。 - 报表程序:用于生成报表的程序,包括内部表处理和数据输出。 - 对话模块:...

    abap程序员之路

    另外,ABAP也有用于处理Web服务的工具,如SOAP和RESTful服务的实现。 最后,持续学习和适应新技术是ABAP程序员必须具备的素质。随着SAP HANA的出现,ABAP与内存数据库的集成带来了新的编程模型,如ABAP on HANA和...

    abap-rap-utilities:ABAP RESTful应用程序编程模型实用程序

    在现代软件开发环境中,RESTful(Representational State Transfer)应用程序编程模型已经成为Web服务和API设计的标准。ABAP RAP(Repository Applications Programming)是SAP引入的一种新的开发方式,旨在简化ABAP...

    abap-platform-refscen-flight:SFlight又回来了! 这是ABAP RESTful编程模型的飞行参考方案

    ABAP RESTful应用程序编程模型的ABAP飞行参考方案ABAP RESTful应用程序编程模型定义了用于在SAP BTP ABAP环境和Application Server ABAP上对SAP HANA优化的Fiori应用程序进行有效的端到端开发的体系结构。...

    thinkphp6 RESTful API开发

    thinkphp6 RESTful API开发 开发过程记录笔记 https://blog.csdn.net/weixin_41120504/article/details/115638094

    ABAP GIT 项目 AI SDK FOR ABAP 代码

    2. **ABAP RESTful Programming Model (RPMB)**:为了与AI服务通信,开发者可能需要使用ABAP RESTful Programming Model创建和调用RESTful服务。RPMB提供了一种基于HTTP和JSON的标准方法,使ABAP应用能与其他系统...

    sap abap用户指南

    - Tables:ABAP中的表,包括透明表、池表和结构化表。 - Structures:组合数据类型的集合。 - Classes and Objects:面向对象编程的基础,包括类定义、对象实例化、继承、多态等。 - Interfaces:定义一组方法,...

    1500+页的ABAP图文教程+SAP标准教程

    10. SAP NetWeaver Gateway和Web服务:了解如何通过ABAP与外部系统交换数据,如使用OData服务进行RESTful通信。 11. ABAP Web Dynpro:学习使用ABAP Web Dynpro进行复杂用户界面的开发,提供更加丰富的交互体验。 ...

    ABAP完整版

    ABAP(Advanced Business Application Programming)是SAP公司推出的一种高级业务应用编程语言,主要用于开发和定制SAP系统。本篇文章将深入探讨SAP ABAP编程的基础知识、关键概念和技术,结合"实战SAP程序开发:从...

    C# 一个简单的 Restful 服务端和 Restful 客户端 Demo

    这个C#的RESTful服务端和客户端Demo,旨在帮助开发者快速理解和实践RESTful API的设计和实现,是学习和开发相关应用的良好起点。通过实际操作和修改这个Demo,你可以更深入地了解RESTful架构的精髓以及C#在Web服务...

    ABAP用户指南(SAP ABAP开发)

    - **函数与过程**:ABAP支持定义自己的函数和过程来实现复杂逻辑。 #### 四、ABAP面向对象编程 - **类与对象**:ABAP支持面向对象编程,可以定义类和创建对象。 - **继承与多态**:ABAP支持继承机制,并且可以实现...

    C++实现 Https Server 支持 restful json

    5. 设计和实现RESTful接口,根据HTTP方法和URL路由请求。 6. 使用JSON库解析和生成JSON数据。 这个项目"https-example-master"可能包含了一个完整的示例代码,你可以通过阅读和运行这个项目来进一步理解上述概念。...

    BC402 - Advanced ABAP

    1. **ABAP Objects和面向对象编程**:ABAP Objects是ABAP的一个重要扩展,引入了类、对象、继承、多态等面向对象的概念。通过学习,开发者能够创建更灵活、可复用的代码结构。 2. **Enhancement Framework**:增强...

    ABAP Tips

    - **SOAP和RESTful服务**:ABAP支持创建和消费这些类型的Web服务。 - **RFC(Remote Function Call)**:SAP系统间的通信协议,也可用于与外部系统交互。 9. **开发工具与调试** - **SAP GUI**:标准的桌面...

    Spring Boot + Mybatis 整合实现RESTful API

    Spring Boot 整合 Mybatis 实现RESTful API ,具体可以查看博客: http://blog.csdn.net/yaozhiqi1905658804/article/details/70820892

    SAP ABAP 大全

    1. 数据库表(Database Table):ABAP可以直接访问和操作SAP R/3系统的数据库表。 2. SELECT语句:用于从数据库检索数据,支持各种查询条件和操作。 3. INSERT、UPDATE、DELETE语句:用于向数据库添加新记录、修改...

Global site tag (gtag.js) - Google Analytics