相信通过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模型应用的简单调试,敬请期待。
相关推荐
在ABAP中,你可以通过定义和实现特定的日志类来创建自定义的日志机制,这些类通常会记录接口调用的输入参数、返回值、异常以及执行时间等信息。 接下来,我们转向RESTful动态调用Function Module(FM)。REST...
在IT领域,ABAP(Advanced Business Application Programming)是一种高级业务应用编程语言,主要应用于SAP系统,用于开发企业级的应用程序。本主题聚焦于“ABAP编程”与“JavaScript”的结合,探讨如何在SAP环境中...
描述:本实验使用SpringBoot、Mybatis和CXF框架来实现Restful API和WebService API接口的大实验,涵盖了数据库设计、 Maven依赖管理、Restful API和WebService API的实现等方面。 标签:spring boot、mybatis、...
ABAP(Advanced Business Application Programming)是SAP公司开发的一种编程语言,主要用于开发SAP系统中的业务应用程序。在“ABAP 帮助 英文版”这个资源中,你将找到一个ABAP4的帮助文件(ABAP.HLP),这对于那些...
- 数据类型:ABAP有多种数据类型,如CHAR、INT、FLOAT等,用于定义变量。 - 语句结构:包括选择、循环、条件判断等基本控制流程。 - 报表程序:用于生成报表的程序,包括内部表处理和数据输出。 - 对话模块:...
另外,ABAP也有用于处理Web服务的工具,如SOAP和RESTful服务的实现。 最后,持续学习和适应新技术是ABAP程序员必须具备的素质。随着SAP HANA的出现,ABAP与内存数据库的集成带来了新的编程模型,如ABAP on HANA和...
在现代软件开发环境中,RESTful(Representational State Transfer)应用程序编程模型已经成为Web服务和API设计的标准。ABAP RAP(Repository Applications Programming)是SAP引入的一种新的开发方式,旨在简化ABAP...
ABAP RESTful应用程序编程模型的ABAP飞行参考方案ABAP RESTful应用程序编程模型定义了用于在SAP BTP ABAP环境和Application Server ABAP上对SAP HANA优化的Fiori应用程序进行有效的端到端开发的体系结构。...
thinkphp6 RESTful API开发 开发过程记录笔记 https://blog.csdn.net/weixin_41120504/article/details/115638094
2. **ABAP RESTful Programming Model (RPMB)**:为了与AI服务通信,开发者可能需要使用ABAP RESTful Programming Model创建和调用RESTful服务。RPMB提供了一种基于HTTP和JSON的标准方法,使ABAP应用能与其他系统...
- Tables:ABAP中的表,包括透明表、池表和结构化表。 - Structures:组合数据类型的集合。 - Classes and Objects:面向对象编程的基础,包括类定义、对象实例化、继承、多态等。 - Interfaces:定义一组方法,...
10. SAP NetWeaver Gateway和Web服务:了解如何通过ABAP与外部系统交换数据,如使用OData服务进行RESTful通信。 11. ABAP Web Dynpro:学习使用ABAP Web Dynpro进行复杂用户界面的开发,提供更加丰富的交互体验。 ...
ABAP(Advanced Business Application Programming)是SAP公司推出的一种高级业务应用编程语言,主要用于开发和定制SAP系统。本篇文章将深入探讨SAP ABAP编程的基础知识、关键概念和技术,结合"实战SAP程序开发:从...
这个C#的RESTful服务端和客户端Demo,旨在帮助开发者快速理解和实践RESTful API的设计和实现,是学习和开发相关应用的良好起点。通过实际操作和修改这个Demo,你可以更深入地了解RESTful架构的精髓以及C#在Web服务...
- **函数与过程**:ABAP支持定义自己的函数和过程来实现复杂逻辑。 #### 四、ABAP面向对象编程 - **类与对象**:ABAP支持面向对象编程,可以定义类和创建对象。 - **继承与多态**:ABAP支持继承机制,并且可以实现...
5. 设计和实现RESTful接口,根据HTTP方法和URL路由请求。 6. 使用JSON库解析和生成JSON数据。 这个项目"https-example-master"可能包含了一个完整的示例代码,你可以通过阅读和运行这个项目来进一步理解上述概念。...
1. **ABAP Objects和面向对象编程**:ABAP Objects是ABAP的一个重要扩展,引入了类、对象、继承、多态等面向对象的概念。通过学习,开发者能够创建更灵活、可复用的代码结构。 2. **Enhancement Framework**:增强...
- **SOAP和RESTful服务**:ABAP支持创建和消费这些类型的Web服务。 - **RFC(Remote Function Call)**:SAP系统间的通信协议,也可用于与外部系统交互。 9. **开发工具与调试** - **SAP GUI**:标准的桌面...
Spring Boot 整合 Mybatis 实现RESTful API ,具体可以查看博客: http://blog.csdn.net/yaozhiqi1905658804/article/details/70820892
1. 数据库表(Database Table):ABAP可以直接访问和操作SAP R/3系统的数据库表。 2. SELECT语句:用于从数据库检索数据,支持各种查询条件和操作。 3. INSERT、UPDATE、DELETE语句:用于向数据库添加新记录、修改...