【学习系列】SAP RAP 3:添加多层级的子节点

AI摘要

本文介绍了如何在SAP RAP中添加多层级的子节点,包括明细层级和计划行层级的数据库及CDS视图实体创建。重点讲解了关联关系的定义、投影视图的配置、行为定义的更新以及元数据扩展的设置,确保UI界面能够正确展示多层级结构。

前言

在前一篇中已经创建了最基本的RAP应用,但是只有抬头层级,本篇将创建另外两个子节点(明细和计划行信息),并且将其关联至根节点(抬头信息)。

正文

1.创建明细层级Database

@EndUserText.label : 'RAP Demo item info'
@AbapCatalog.enhancement.category : #NOT_EXTENSIBLE
@AbapCatalog.tableCategory : #TRANSPARENT
@AbapCatalog.deliveryClass : #A
@AbapCatalog.dataMaintenance : #RESTRICTED
define table ztrap_demo_item {

  key client       : abap.clnt not null;
  key order_number : ebeln not null;
  key item_number  : ebelp not null;
  material         : matnr;
  plant            : werks_d;
  location         : lgort_d;
  @Semantics.quantity.unitOfMeasure : 'ztrap_demo_item.unit'
  quantity         : menge_d
SAP RAP学习系列合集介绍 《SAP RAP学习系列合集:从入门到部署的完整指南》摘要: 本文介绍了作者创建的SAP RAP学习系列合集,涵盖RAP开发从基础概念到实战部署的全流程。系列目前包含17篇文章,系统讲解了RAP核心开发技术:从数据建模、UI构建到行为定义(包括并发控制、草稿功能、授权验证等),最后详细演示了应用部署到Fiori Launchpad的两种方案(OP版和ES版)。 阅读详情

相关推荐

用 UUID 把多层级 managed RAP BO 设计顺,4 层节点也能让框架自动跑起来

本文探讨了在RAP建模中处理多层级数据结构的设计原则。文章指出,当层级达到第3层及以上时,传统的语义键模型会变得复杂且低效,而采用UUID主键则能简化设计。关键建议包括: 每个表只需一个UUID主键字段,无需构建复杂的复合键 子节点保存父节点UUID,第3层及以上节点额外保存根节点UUID 业务可读编号作为语义键单独保留,与数据库主键解耦 根节点需包含完整的管理字段(创建人、修改时间等) 这种设计使RAP框架能更好地处理深层级节点的锁控制和draft支持,同时保持业务可读性。文章提供了各层级节点的具体表结构

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 6976

【学习系列】SAP RAP 18:Unmanaged场景开发示例-基本数据更新

本文介绍了在SAP RAP中unmanaged模式下从0到1的开发步骤。unmanaged模式下需要自行实现数据更新、权限检查等逻辑,适用于操作现有数据库表或复杂业务场景。文章以两层的采购订单对象为例,详细说明了创建技术对象(表、视图、行为定义等)的过程,并重点阐述了如何实现CRUD相关方法的核心逻辑。通过创建缓冲类来处理交互阶段和保存阶段的数据操作,确保事务一致性。完整代码展示了抬头层级的增删改查功能实现,为后续明细层级的开发奠定了基础。

DeveloperMrMeng的博客 636

【学习系列】SAP RAP 7:行为定义-Draft

本文介绍了RAP框架中的草稿表(Draft)功能及其应用。草稿表允许用户临时保存数据,在激活前不影响业务逻辑,支持保存继续、暂存和设备切换功能。草稿分为独占草稿(仅限同一用户编辑)和协作草稿(允许多用户协同编辑)。启用草稿需在行为定义和投影中包含标准action,并创建包含TotalETag等管理字段的草稿表。TotalETag确保草稿转换时活动数据未被修改,而ETagmaster则防止并发修改。文章通过OData调用示例详细说明了ETag验证过程,强调草稿功能由RAP框架自动处理,开发者只需关注定义和配置

DeveloperMrMeng的博客 437

【学习系列】SAP RAP 6:行为定义-Concurrency Control

本文介绍了RAP行为定义中的并发控制机制,包括乐观并发控制和悲观并发控制两种方式。乐观控制通过ETag字段实现,在数据更新时检查ETag值是否匹配,防止覆盖修改;悲观控制则采用独占锁机制,锁定期间其他用户无法编辑。文章详细说明了两种控制的实现原理、使用场景(managed/unmanaged)及混合控制模式,即在编辑时使用悲观锁,保存时通过ETag进行乐观控制。同时指出根节点必须作为lockmaster,并强调了不同场景下的实现差异。

DeveloperMrMeng的博客 362

【学习系列】SAP RAP 5:行为定义-Numbering

本文介绍了RAP框架中编号赋值的两种方式:EarlyNumbering和LateNumbering。EarlyNumbering在创建前确定主键编号,分为框架托管的managed和自定义的unmanaged实现。LateNumbering在数据持久化前生成编号,适用于无间隔编号需求,通常用于子节点层级。文章通过订单号和计划行编号的实例,详细说明了两种方式的实现步骤和注意事项,包括代码示例和运行效果演示。最后指出下一篇文章将介绍行为定义中的锁概念。

DeveloperMrMeng的博客 507

站稳再行远,老子这句话放进 SAP RAP 开发里的工程分寸

摘要: 老子“企者不立,跨者不行”的智慧在SAP RAP开发中尤为适用。RAP分层架构(数据模型、服务供给、消费层)需严格遵循,避免业务对象未定型就急于堆砌UI或API。核心在于: 根基稳固:Business Object需明确边界、组合关系及事务语义,避免为短期需求扭曲模型; 循序渐进:区分managed/unmanaged场景,不强行套用旧逻辑或绕过框架机制; 业务优先:Behavior实现应聚焦状态变化而非技术炫技,保持代码可读性与可维护性; 分层协作:逻辑合理分布(CDS View、Projecti

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 3611

从毫末到千里,借《道德经》理解 SAP RAP 开发的渐进之道

文章摘要: SAP ABAP RAP开发强调渐进式构建,正如老子所言「合抱之木生于毫末」。RAP应用应从最小业务语义出发,厘清字段、主键、状态等基础元素,而非直接设计复杂架构。开发过程需分层递进:先建立核心数据模型与行为定义,再逐步扩展服务绑定、权限控制等功能,避免过早堆砌对象导致系统臃肿。RAP提供managed和unmanaged两种实现模式,分别适用于新老系统集成。关键在于通过业务对象(BO)聚合事务边界,使验证规则等业务逻辑内生于BO生命周期,而非分散在各层。开发者应从一个可运行的纵切片开始,在持续

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 912

【学习系列】SAP RAP 12:行为定义-Side Effects

本文介绍了行为定义中的SideEffects(附加作用)概念及其应用场景。SideEffects用于在草稿模式下自动触发数据刷新,解决因UI不主动请求更新导致的数据不一致问题。文章详细说明了五种触发类型(字段变更、操作执行、数据源变更、实体修改、事件触发)和四种可刷新目标(字段、权限、实体、消息)。通过实际案例展示了如何通过SideEffects实现自动加载更新数据,并强调需在行为定义投影中启用该功能。这种机制提高了数据同步效率,确保界面显示与后台数据的一致性。

DeveloperMrMeng的博客 351

从无名到有名,老子这句话放进 SAP RAP 开发里,就是一条从混沌业务到可演进业务对象的路

在做 SAP ABAP RESTful Application Programming Model 开发时,我最怕的不是代码难写,而是业务一开始就被过早命名。一个字段刚从用户访谈里听到,就急着建成 CDS element;一个动作刚在会议里被提到,就立刻写成 action;一个状态还没弄清生命周期,就已经放进 behavior definition。表面上看,系统很快有了名字,有了实体,有了服务,有了 URL,有了 SAP Fiori Elements 页面。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 2034

有之以为利,无之以为用,在 RAP 开发里的虚实取舍

摘要(149字) SAP RAP框架通过"有"与"无"的哲学平衡实现业务应用价值。其"有"体现在CDS视图、行为定义、服务绑定等具体对象,为系统提供形体;而"无"则表现为保留的扩展空间、未暴露的实现细节和框架托管的生命周期。在采购审批应用中,RAP既通过明确定义的行为模型建立业务语义,又通过验证、动作等机制保持灵活性。这种架构既确保核心功能稳固,又为未来演进留出余地,印证了"有之以为利,无之以为用"的技术智慧

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1302

在 SAP LUW 中拆解 RAP Transaction:从 Interaction Phase 到 Save Sequence 的完整活动链路

本文详细解析了SAP RAP框架中业务事务(SAP LUW)的处理流程。RAP将事务划分为交互阶段(Interaction Phase)和保存序列(Save Sequence)两个核心环节,通过事务缓冲(transactional buffer)机制确保数据一致性。交互阶段允许临时性修改并支持草稿(draft)保存,保存序列则分为早期校验和晚期持久化两个阶段,确保最终一致性。文章结合费用报销案例,说明了RAP如何通过严格的分阶段处理来保证业务事务的完整性和安全性,同时提供了可运行的示例思路来观察这一机制的实

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 4616

在 SAP RAP Fiori Elements 里用 Domain Fixed Values 做 Value Help

摘要:在RAP开发Fiori Elements应用时,状态字段等固定值推荐使用ABAP Domain的固定值范围(Domain Value Range)管理,而非单独建表。通过创建CDS View读取DD07L/DD07T表数据作为Value Help提供者,并在Projection View中通过@Consumption.valueHelpDefinition注解绑定,可实现轻量化的值帮助功能。这种方法避免了冗余配置表,同时确保字段取值约束和多语言支持,适合状态码等稳定的枚举型字段。 核心步骤: 在Dom

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 742

SAP S/4HANA 中 RAP 业务对象接口的消费模式

本文探讨了SAP S/4HANA中RAP业务对象接口的消费模式,重点介绍了通过EML直接调用和CDS投影两种Clean Core开发路径。文章分析了BO Interface作为稳定契约的价值,并提供了BAdI集成、OData服务发布等实际场景案例,同时对比了OData V2/V4的技术选型考量,最后强调了ADT向导使用中的DCL权限注意事项。全文旨在帮助开发者构建升级友好的业务对象消费方案。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 757

ABAP RAP Tools 实战笔记,从 Service Binding 到 SAP Fiori elements 预览

文章摘要: 本文探讨了SAP RAP工具在实际交付中的核心问题——服务发布流程。不同于传统ABAP开发将建模、编码、服务激活分离的模式,RAP通过Service Definition和Service Binding将端到端开发链路整合。Service Definition定义服务边界(如暴露采购申请实体),而Service Binding则指定消费协议(如OData V4 UI或Web API)。文中提供了最小化RAP服务代码示例,并对比了Eclipse ADT(表单式操作)和VS Code(Code Le

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1040

Dify+MCP 双剑合璧:告别知识库模糊统计,让AI精准查询数据库数据!

本文详细介绍了如何通过Dify和MCP的结合,解决知识库在数据库查询中的模糊统计问题。通过MCP中间件将自然语言实时转换为SQL语句,实现精准数据查询,并支持SSE协议持续更新数据。文章包含MySQL环境搭建、MCP服务端部署、Dify工作流配置等实战步骤,帮助用户高效构建智能数据库查询系统。

weixin_33737774的博客 368

Unity中基于SkinMeshRenderer的骨骼动画换装系统优化实践

本文深入探讨了Unity中基于SkinnedMeshRenderer的骨骼动画换装系统优化实践。针对换装卡顿、显示错误等常见问题,文章剖析了SkinnedMeshRenderer的核心数据原理,对比了“数据替换”与“实体替换”两种主流方案的性能差异,并详细阐述了通过骨骼字典缓存、对象池管理、材质合并与Draw Call优化等实战技巧,构建高性能、高稳定性的生产级换装系统。

weixin_29008055的博客 314

最小二乘法(看完即会)

其中,X是数据矩阵,每一行是一个数据点,每一列是一个自变量(包括截距项),Y是观测值向量,β是待求的系数向量。为了找到使S最小的a和b的值,我们需要对S求关于a和b的偏导数,并令它们等于零。最小二乘法的数学公式通常用于线性回归问题,其中目标是找到一条直线(或更高维度的超平面),使得这条直线与给定数据点的误差平方和最小。同样地,通过求偏导数和令偏导数等于零,我们可以得到一个线性方程组,解这个方程组可以找到最优的b_0, b_1, …+ b_m*x_m,其中b_0是截距,b_1到b_m是各个自变量的系数。

qlkaicx的博客 2万+

告别CAPL编程!用Matlab/Simulink+CANoe实现复杂ECU仿真的5个技巧

本文介绍了如何利用Matlab/Simulink与CANoe进行联合仿真,以替代复杂的CAPL编程,高效实现复杂ECU仿真。文章分享了5个核心技巧,涵盖信号映射、模型编译集成、实时参数调整、性能优化及数据分析,帮助算法工程师构建稳定强大的仿真环境,显著提升开发与测试效率。

rgv234567的博客 295

Seedance 2.5本地部署指南:AI生图与视频生成的完整实践

最近在AI生成内容领域,本地部署方案越来越受到开发者关注。特别是Seedance 2.5的发布,让很多原本依赖云端服务的用户开始转向本地化解决方案。本文将从实际使用角度出发,完整介绍Seedance 2.5的本地部署流程、功能特性对比以及实际应用技巧。 1. Seedance 2.5核心特性解析 1.1 什么是Seedance 2.5 Seedance 2.5是一款开源的AI生图和视频生成工具,支持在本地环境运行,无需联网即可实现高质量的图像和视频生成。相比之前的2.0版本,2.5在生成质量、运行效率和功能

weixin_42566121的博客 1653

3大绝招!MySQL如何轻松搞定文本、图像和视频的多模态数据分析?

首先,让我们来了解一下“多模态”到底是什么意思。简单来说,多模态指的是能够同时处理不同类型数据(如文本、图像、音频等)的能力。传统的数据库往往只能专注于一种或几种特定类型的数据,比如关系型数据库主要处理结构化数据,而文档型数据库则更适合非结构化数据。但是现在,随着技术的进步,像MySQL这样的数据库也开始支持更加复杂的数据模型,允许我们在同一个系统内处理多种格式的数据。通过上述五个部分的详细介绍,相信你现在应该对如何利用MySQL进行多模态数据分析有了更清晰的认识。

java专栏 2114

智能车图像处理11-进阶篇3--中线累积差值的统计

中线累积差值的统计在后面判断小S,以及长直道的时候都有用到,关键点在于中线的跳变 第12 - 13 行:comulants1 和comlants2代表的是两种不同的累差,取的行数不同 第14-17 行:comulants2取6到25行,其实就是My_Abs(LCenter[i], LCenter[i - 1])的累加 第18-21 行:comulants1去第1到40行 第27- 行: 计算了一下右线的开始于最终结束行,这里判断R_black是否为0,是和中线的提取中g

taiyuezyh的博客 3821

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

上一篇: 【学习系列】SAP RAP 2:创建第一个RAP应用
下一篇: 【学习系列】SAP RAP 4:通过注解来完成一些常规需求
DeveloperMrMeng
博客等级 码龄5年 1767粉丝 113原创
评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DeveloperMrMeng

觉得有用的佛系投币哦

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值