SAP ABAP-BOPF基础培训-02 导入、节点和关联

news2024/10/7 14:31:37

1.  介绍-Introduction

业务对象实例示例

本次案例主要探讨客户发票业务对象内容
ESR中建模的业务对象示例

发票的结构和属性在ESR中建模。在使用业务对象之前,我们需要首先实现该模型的所有功能。

2. 导入业务对象代理-Importing a Business Object Proxy

将代理模型导入BOPF:

请执行以下步骤将代理BO导入BOPF:
① 启动BOPF设计工作台Workbench(事务码: /BOBF/CONF_UI);
② 通过按图标创建一个新的业务对象;
③ 输入BOPF名称和BO的代理名称;
④ 将代理对象模型导入BOPF,并创建与ESR模型实体(节点、关联等)相对应的BOPF模型实体。

重新导入代理-Proxy Re-Import:

如果ESR-Model或代理发生了变化,则需要将代理模型重新导入BOPF

1) “Extras” > “Import Proxy Business Object”;
2) 成功重新导入后,将自动显示更改列表;
3) 显示了更改节点的详细信息;

3. 节点配置-Configuration of the Nodes

导入后的节点配置-Node Configuration right after Import:

导入后的BOPF节点需要进行配置。该节点实例没有存储数据所必需的数据类型集。

3.1 创建节点数据模型-Create Node Data Model


数据结构(Data Structure):每个节点都有一个包含持久字段的内部数据结构;
数据结构(tr.) transient:包含该节点临时字段的数据结构(临时字段:不存储在持久性中,只存在于缓冲区中的字段);
组合结构(Combined Structure):由数据结构、可选的临时数据结构和包括一个 technical key(例如缓冲所必需的);
组合表类型(Combined Table Type):用于存储一个节点的多个实例的数据的表类型(对于大规模访问是必要的)。行类型对应于组合的结构。

3.2 建议存储库名称-Propose Repository Names


BOPF为各种字典对象提供了命名建议:
可以选择实体,并为生成的名称指定名称空间和前缀;
检查提议的名称是否符合命名约定(截断等);

这是执行“Propose Repository Names”函数的结果。

3.3 生成DDIC元素-Generate DDIC Elements


BOPF可以在模型中指定其名称后生成DDIC元素(手动或通过“Propose Repository Names”)。
可选择生成的元素:
        组合数据结构包括手动创建的内部数据结构和添加框架特定字段;
        组合表类型使用组合数据结构作为行类型。
命名建议和字典元素生成的示例:

① 手动创建数据结构(只有当有临时字段时才创建临时字段的数据结构);
② 建议组合结构和组合表类型的存储库名称;
③ 为合并结构和合并表类型生成字典元素。

3.4 代理属性映射-Proxy Attribute Mapping


代理结构和内部模型之间的映射是必要的,因为代理结构可以深度嵌套,但内部数据类型应该是完全扁平的(数据库的限制)

        将每个叶代理结构元素分配给组合结构的内部结构元素(对每个业务对象节点执行此操作,在本例中仅为根节点);
      必须映射代理结构的叶子元素,因为只有叶子元素包含数据;
      未映射的内部字段可以存储内部数据,这些数据对客户永远不可见

异常(Exception):显示映射表项是否一致。
层次(Hierarchy):该属性的代理结构中的级别。
转换(Conversion):可以添加转换规则(例如大写或字母数字)提示:如果不启用写模式,属性表是完全不可见的。

3.5 创建数据库表-Creation of a Database Table


为节点创建数据库表
1. 数据库表名可以由BOPF提出(" Extras " -> " proposed Repository Names ")
2. 数据库表可以生成(“Extras”->“Generate Repository Objects”->“Generate Dictionary Elements”)或手动创建

3.6 节点持续性映射-Node Persistency Mapping


数据库表中的持续性:
数据库中的字段名必须与内部数据结构相对应,或者一个命名的include可以在持续性映射中使用和指定;
数据库表中不存在的内部字段称为“transient”(即临时字段);
示例中的节点是根节点的子节点,因此我们可以将两个字段(ROOT_KEY和PARENT_KEY)映射到一个数据库属性,因为它们总是具有相同的值。

3.7 常量接口生成-Constant Interface Generation


每个配置元素(例如节点,动作)在设计时和运行时都是由GUID在BOPF中唯一标识的。
使用内部模型信息的应用程序特定内容必须使用这些guid(例如,重用实现)。
BOPF提供了生成包含所有guid的常量接口的可能性。
提示:在创建新的配置元素之后需要重新生成Constant Interface。

3.8 加载-Loading

节点可以单独加载:Node Can Be Loaded Separately

缓冲数据(buffering data)的两个原因:
        事务性缓冲(Transactional Buffer):数据在事务期间被更改(ESI要求);
        缓存(Cache):出于性能原因对数据进行缓存。

BOPF的标准缓冲区实现以组合的方式支持这两种方法:
        提供简单的加载逻辑来管理缓存;
        决定何时以及加载业务对象的哪个部分;
        通过模型信息控制.

BOPF的方法:加载组(Loading groups)
        由一个标记为可加载的节点及其本身不可加载的子节点组成;
        根据定义,ROOT节点必须是可加载的;
        没有持续性的对象(临时对象)没有加载组;
        性能建议:加载组越小越好(通常是一个节点)。

3.9 锁定-Locking

节点可以单独锁定:Node Can Be Locked Separately


ESI 合同没有定义业务对象的锁定粒度,BOPF负责锁定业务对象实例
        显式锁定(Explicit locking)请求从ESF只有通过EDIT_MODE检索调用;
        隐式锁定(Implicit locking)需要通过修改;

锁定每个单独节点的可能性是没有意义的.

BOPF的方法:锁定组(Locking groups)
        由一个标记为可锁定的节点和它本身不能锁定的子节点组成;
        当对不可锁定的节点请求锁定时的策略:锁定最近的可锁定的上级节点;
        可锁定节点也必须是可加载的。

规则:来自同一个加载组的所有节点必须属于同一个锁定组!

3.10 节点类型-Node Types


BOPF在内部模型中支持不同类型的节点:
        标准节点(Standard Nodes)
        框架节点(Framework Nodes):默认不显示,包含有关实例的信息:
                属性节点-Property Nodes(后缀“_PROPERTY”):存储动态属性;
                锁节点-Lock Nodes(后缀“_LOCK”):缓冲锁信息;
                消息节点-Message Nodes(后缀“_MESSAGE”):包含的信息验证.

示例中未显示:
        委托节点-Delegated Nodes(依赖对象的表示);
        业务对象表示节点-Business Object Representation Nodes(跨bo关联目标的表示);
        查询响应转换节点-Query Response Transformation Node.

BOPF框架节点-BOPF Framework Nodes:

框架核心不保存任何实例特定的数据,因此框架节点用于存储这些数据;
框架节点不能被服务使用者访问,但是可以从BO内容访问;
框架节点不是持久化的(例外情况:消息节点可以选择持久化);
框架节点结构:
        每个节点只有一个属性节点;
        每个节点只有一个消息节点;
        每个可锁节点只有一个锁节点;

如何显示框架节点

默认情况下,框架节点在CONF_UI中是不可见的;
要使它们可见:"Utilities" >"Settings"> "Business Object",如上图对应打勾。

框架节点配置说明

4. 关联的配置-Configuration of the Association

Association配置概述:

Association 类型和类别
BOPF在内部模型中提供了两种不同类型的Association:
复合关联(Composite Associations):沿着父节点和子节点之间的组合。

类别(Categories)
       常规组合关联-Regular Composition Association;
       特殊化(不等于面向对象的“特殊化”)-Specialization (not equal to the "specialization" from object orientation);
       关联到委托节点(从属对象)-Association to delegated node (Dependent Object);
       框架关联(链接到框架节点,如属性节点)Framework Associations (Link to Framework Nodes, e.g. Property Nodes)。

一般关联(General Associations):跨组合树链接。

类别(Categories): 
        外键关联/反向外键关联- Foreign Key Association / Reverse Foreign Key Association;
        反向特殊化-Reverse Specialization;
        关联到Parent-Association To_Parent;
        关联到Root-Association To_Root;
        跨BO关联-Cross-BO Association;
        常规关联(具体实现)-Regular Association (implementation specific);

基数和解析节点-Cardinality and Resolving Node
关联的基数(Cardinality of an Association):连接到一个源实例的节点实例的数量。

解析节点(Resolving Node):可以根据用于解析关联的节点来区分关联。
        源解析关联(Source resolved associations):源节点包含解析关联所需的信息;
        目标解析关联(Target resolved associations):目标节点包含解析关联所需的信息。

实施与绑定-Implementation vs. Binding
关联逻辑可以通过两种不同的方式存储:
实施(Implementation):
        需要与特定业务逻辑的关联,现有的关联绑定没有涵盖这一点。
        IF_FRW_ASSOCIATION接口的实现是必要的;
关联绑定-Association Binding
        可以在不需要任何实现的情况下轻松建模;
        绑定由缓冲区实现解决;
        绑定支持的关联类型:
        – Compositions (no binding necessary)
        – Specialization / Reverse Specialization
        – Foreign Key Associations / Reverse Foreign Key Associations
        – To_Parent
        – To_Roo
t

建议:如果可能的话,使用关联绑定

使用关联绑定-Using Association Binding

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1577492.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

力扣刷题 二叉树层序遍历相关题目

NO.107 二叉树的层次遍历 II 给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历) 示例 1: 输入:root [3,9,20,null,null,15,7] 输出&#xff1…

面试题:volatile

一旦一个共享变量(类的成员变量、类的静态成员变量)被volatile修饰之后,那么就具备了两层语义: 1. 保证线程间的可见性 保证了不同线程对这个变量进行操作时的可见性,即一个线程修改了某个变量的值,这新值…

新零售SaaS架构:客户管理系统架构设计(万字图文总结)

什么是客户管理系统? 客户管理系统,也称为CRM(Customer Relationship Management),主要目标是建立、发展和维护好客户关系。 CRM系统围绕客户全生命周期的管理,吸引和留存客户,实现缩短销售周…

【AN】简单的实现点击播放影片剪辑再点击暂停的功能

动画故事背景 一个影片剪辑,里面做了一个动画。我希望影片剪辑一开始是暂停的,按钮点击后开始播放,再次点击就暂停! 下图那个花瓣就是影片剪辑,里面有个掉落的路径引导动画! 1.首先给花瓣影片剪辑一个实例…

SSM项目转Springboot项目

SSM项目转Springboot项目 由于几年前写的一个ssm项目想转成springboot项目,所以今天倒腾了一下。 最近有人需要毕业设计转换一下,所以我有时间的话可以有偿帮忙转换,需要的私信我或+v:Arousala_ 首先创建一个新的spr…

GD32F470_GP2Y0A02YK0F 红外激光测距传感器 避障测距20-150cm模块移植

2.4 红外测距传感器 GP2Y0A02YKOF是夏普的一款距离测量传感器模块。它由PSD(position sensitive detector)和IRED(infrared emitting diode)以及信号处理电路三部分组成。由于采用了三角测量方法,被测物体的材质、环境温度以及测量时间都不会影响传感器的测量精度。传感器输出电…

【迅为iTOP-4412-linux 系统制作(1)】linux内核移植-5.4并适配设备树

准备工作 服务器:Ubuntu 18 sudo apt install gcc-arm-linux-gnueabihf(arm-linux-gnueabihf-gcc (v7.4, 安装方法: sudo apt install gcc-arm-linux-gnueabihf)) sudo apt install flex sudo apt install bison sudo apt install u-boot-tools目标开发板 CPU (E…

算法实验二 矩阵最小路径和 LIS

算法实验课二 矩阵最小路径和 leetcode裸题 最小路径和 给定一个包含非负整数的 *m* x *n* 网格 grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。 说明:每次只能向下或者向右移动一步。 示例 1: 输入&…

Excel 文件底部sheet 如何恢复

偶然打开一个excel文件,惊奇地发现:原来excel文件底部的若干个sheet居然全都看不到了。好神奇啊。 用其它的电脑打开同样的excel文件,发现:其实能看到的。说明这个excel文件并没有被损坏。只要将修改相关设置。就可以再次看…

Mysql底层原理四:B+树索引

B树索引(索引的原理) 1.前言 前边我们详细唠叨了InnoDB数据⻚的7个组成部分,知道了各个数据⻚可以组成⼀个双向链表,⽽每个数据⻚中的记录会按照主键值从⼩到⼤的顺序组成⼀个单向链 表,每个数据⻚都会为存储在它⾥边…

SpringCloud Alibaba @SentinelResource 注解

一、前言 接下来是开展一系列的 SpringCloud 的学习之旅,从传统的模块之间调用,一步步的升级为 SpringCloud 模块之间的调用,此篇文章为第十五篇,即介绍 SpringCloud Alibaba 的 SentinelResource 注解。 二、简介 这个注解用于标…

Agenda家族再升级,跨平台定制化勒索引关注

Agenda勒索也被称为Qilin勒索,该家族的早期版本使用Go 语言编写的,增加了安全分析的难度。其早期版本是针对每位受害者定制的,使用受害者的机密信息(例如泄露的帐户和唯一的公司 ID)作为附加文件扩展名。针对早期版本A…

TS封装axios并约束请求参数以及响应的类型

封装一个简单的axios src/utils/axiosInstance.ts&#xff1a;其中定义了基本返回数据的类型 import axios, {AxiosInstance,AxiosResponse,AxiosError,AxiosRequestConfig, } from "axios"// 定义基本返回数据类型 export interface ApiResponse<T> {code: …

蓝桥杯-DS18B20温度传感器

一.管脚&芯片&寄存器 1.芯片 2.了解封装以及引脚的用法 3.相关寄存器 报警功能 二&#xff0c;如何使能DS18B20芯片 1.初始化芯片&比赛提供的驱动代码 比赛提供的底层驱动代码 /* # 单总线代码片段说明1. 本文件夹中提供的驱动代码供参赛选手完成程序设计参考…

基于R语言lavaan结构方程模型(SEM)实践技术应用

原文链接&#xff1a;基于R语言lavaan结构方程模型&#xff08;SEM&#xff09;实践技术应用https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247596681&idx4&sn08753dd4d3e7bc492d750c0f06bba1b2&chksmfa823b6ecdf5b278ca0b94213391b5a222d1776743609cd…

跨服务器迁移nextcloud数据

背景 阿里云最近做活动,99一年的2U2G的服务器,比我原来的1U1G的服务器不知道高到哪里去了,于是决定迁移服务器数据到另一台主机上。原先的计划是直接做一个自定义镜像,然后复制到另一台主机就行,结果发现旧主机是aliyunOS,新主机不想踩这个坑了,决定换成乌班图,因此决定重新搭…

Mac系统Unity团结引擎打包OpenHomeny项目配置

1、团结引擎下载&#xff1a;直接百度下载即可 2、mac版本的DevEco4.0编辑器下载&#xff1a; widthdevice-width,initial-scale1.0https://docs.openharmony.cn/pages/v4.0/zh-cn/release-notes/OpenHarmony-v4.0-release.md/#%E9%85%8D%E5%A5%97%E5%85%B3%E7%B3%BB3、打开D…

什么是多路复用器滤波器

本章将更深入地介绍多路复用器滤波器&#xff0c;以及它们如何用于各种应用中。您将了解到多路复用器如何帮助设计人员创造出更复杂的无线产品。 了解多路复用器 多路复用器是一组射频(RF)滤波器&#xff0c;它们组合在一起&#xff0c;但不会彼此加载&#xff0c;可以在输出之…

智能化办公时代来临:AI助你解放双手

文章目录 一、AI在办公领域的广泛应用二、AI助力办公效率提升1.自动化流程减少繁琐任务2.智能分析辅助决策制定3.个性化服务提升用户体验 三、AI提升办公效率的未来趋势1.更加智能化的办公场景2.更高效的团队协作3.更全面的数据安全保护 四、应对AI带来的挑战《AI高效工作一本通…

RocketMQ笔记(七)SpringBoot整合RocketMQ发送事务消息

目录 一、简介1.1、流程图1.2、事务消息流程介绍 二、Maven依赖三、生产者3.1、application配置3.2、员工表3.3、实体3.4、持久层3.5、监听器 四、测试4.1、普通消息4.2、事务消息4.2.1、消费者4.2.2、正常提交4.2.3、异常提交 五、其他5.1、接口说明5.2、checkLocalTransactio…