CDS view与替代对象

一,简介

替代对象是指用一个CDS view指派给一个透明表或常规数据库视图,使得透明表或常规数据库视图的访问重定向到该CDS view。

替代有诸多要求:

      • 字段数量一致且同名对应,顺序可以不一致
      • 对应的字段数据类型长度等必须一致
      • CDS view不能带入参
      • 替代与Buffer不能共存

怎么知道一个透明表或视图被重定向了呢:

      • SE11 菜单【附加】--【替换对象】

      • SE16N 可见代理对象

      • 使用ST05来跟踪SQL
      • 在eclipse中打开这个透明表的DDL,看到如下注解,就表示存在重定向

二,重定向

在OpenSQL中的查询操作比如使用Select语句,或者Open cursor和Fetch,会重定向到CDS view。

还有一些情况不会重定向,仍指向透明表本身:

      • OpenSQL中的修改操作
      • 在Select语句中使用single for update
      • 在数据库层面使用:作为view的数据源,在数据库过程或数据库函数中访问

三,实例分析
3.1 诡异的数量查询

定义如下CDS view发现取不到数据,将where子句去掉之后能取到数据,但数量【CLABS】全为0,而此时SE16N查数是正常的。我们发现MCHB重定向到nsdm_e_mchb这个CDS view,而它由mchb【表】与nsdm_e_mchb_diff【view】连接而来,且数量字段来自后者,所以mchb【表】里面数量字段真的是0,而我们下面自定义的这个view从mchb取数不会重定向,而是直接取mchb【表】,所以数量全是0。

@AbapCatalog.sqlViewName: 'ZCI_TEST'
@AbapCatalog.compiler.compareFilter: true
@AccessControl.authorizationCheck: #NOT_REQUIRED
@EndUserText.label: 'Test'
define view ZTEST001_11 as select from mchb
{matnr,charg,lgort,werks,clabs
}
where clabs > 0

3.2 诡异的数量更改

首先创建一个透明表,然后创建CDS,最后将透明表重定向到CDS。

在SE16N中我们修改数量为3,保存后重新打开SE16N,发现数量显示13。查询显示时使用了重定向,取数逻辑来自CDS;修改保存则不走重定向,直接改底表。

//step-1 透明表
@AbapCatalog.replacementObject : 'ycds_test' //step-3 重定向到CDS
define table ytest_cl {key mandt : mandt not null;key docno : ebeln not null;quant     : menge_d;
}//step-2 CDS view
@AbapCatalog.sqlViewName: 'YSQL_VIEW'
define view ycds_test
as select from ytest_cl
{ mandt,docno,cast( quant + 10 as menge_d )  as quant
};

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

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

相关文章

在Linux下搭建自己的私有maven库并部署和发布自定义jar依赖和自定义maven插件(三)开发和发布自己开发的maven插件

系列文章目录 在Linux下搭建自己的私有maven库并部署和发布自定义jar依赖和自定义maven插件(二)发布自己开发的jar包 文章目录 系列文章目录在Linux下搭建自己的私有maven库并部署和发布自定义jar依赖和自定义maven插件(二)发布自己开发的jar包 前言一、插件需求二、maven自定…

前端JavaScript篇之对 rest 参数的理解、ES6中模板语法与字符串处理

目录 对 rest 参数的理解ES6中模板语法与字符串处理 对 rest 参数的理解 rest参数是一种在函数定义中使用的特殊语法,它允许函数接受任意数量的参数,并将它们收集到一个数组中。通俗地说,rest参数就像是一个容器,用来存放函数接收…

帮管客CRM SQL注入漏洞

免责声明:文章来源互联网收集整理,请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后果与文章作者无关。该…

2024年美赛B题:寻找潜水器 Searching for Submersibles 思路模型代码解析

2024年美赛B题:寻找潜水器 Searching for Submersibles 思路模型代码解析 【点击最下方群名片,加入群聊,获取更多思路与代码哦~】 问题翻译 海上游轮迷你潜艇(MCMS)是一家位于希腊的公司,专门制造能够将人…

如何在Windows部署GoLand并通过SSH远程连接Linux服务器

文章目录 1. 安装配置GoLand2. 服务器开启SSH服务3. GoLand本地服务器远程连接测试4. 安装cpolar内网穿透远程访问服务器端4.1 服务器端安装cpolar4.2 创建远程连接公网地址 5. 使用固定TCP地址远程开发 本文主要介绍使用GoLand通过SSH远程连接服务器,并结合cpolar内…

Vue 环境准备

1.安装vscode https://code.visualstudio.com/ 2.安装开发vue所需插件: Vetur —— 语法高亮、智能感知、Emmet等 包含格式化功能, AltShiftF (格式化全文),CtrlK CtrlF(格式化选中 代码,两…

在 Elastic Agent 中为 Logstash 输出配置 SSL/TLS

要将数据从 Elastic Agent 安全地发送到 Logstash,你需要配置传输层安全性 (TLS)。 使用 TLS 可确保你的 Elastic Agent 将加密数据发送到受信任的 Logstash 服务器,并且你的 Logstash 服务器从受信任的 Elastic Agent 客户端接收数据。 先决条件 确保你…

防御保护 防火墙的双机热备和带宽管理实验

需求: 办公区设备可以通过电信和移动链路上网(多对多的NAT,并需要保留一个公网IP不能用来转换)分公司设备可以通过总公司的移动和电信链路访问DMZ区的http服务器分公司内部的客户端可以通过公网地址访问到内部的服务器FW1和FW4组…

Unity | YooAssetV2.1.0 + HybridCLR热更新

目录 一、项目更改 二、使用YooAsset热更 1.资源配置 2.资源构建 3.将两个文件夹下的资源上传CDN服务器 4.修改代码 5.运行效果 本文记录利用YooAssetHybridCLR来进行资源和dll的更新。YooAsset使用的是新版V2.1.0。相比于旧版,dll(原生文件)和资源要建两个p…

AI-数学-高中-18-三角函数-同角三角函数关系及计算

原作者视频:三角函数】5同角三角函数关系(易中档)_哔哩哔哩_bilibili 辅助三角形(计算速度快):1.画一个辅助计算的任意直接三角形;2.利用初中方法先计算sin、cos、tan值;3.看象限确定…

Python机器学习:样本划分之验证集法

评估机器学习模型优劣的标准是模型的泛化能力,所以关注的应该是泛化误差而不是经验误差,一味追求经验误差的降低,就会导致模型“过拟合”现象。但是泛化误差是难以直接观察到的,我们应该如何选择泛化能力比较好的模型呢&#xff1…

蓝桥杯---垒骰子

赌圣atm晚年迷恋上了垒骰子,就是把骰子一个垒在另一个上边,不能歪歪扭扭,要垒成方柱体。经过长期观察,atm 发现了稳定骰子的奥秘:有些数字的面贴着会互相排斥!我们先来规范一下骰子:1的对面是4&…

【Docker篇】Linux安装Docker、docker安装mysql、redis、rabbitmq

1.Linux安装docker 官方帮助文档:Install Docker Engine on CentOS | Docker Docs 1.1安装命令 # 1. 卸载之前的dockersudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate…

RK3568平台 安卓hal3适配usb camera

一.RK安卓hal3 camera框架 Camera hal3 在 android 框架中所处的位置如上图, 对上,主要实现 Framework 一整套 API 接口,响应其 控制命令,返回数据与控制参数结果。 对下, 主要是通 V4l2 框架实现与 kernel 的交互。3a…

linux 下mongodb7版本怎么连?

概述:linux下的mongodb7版本默认是没有安装客户端的,需要下载shell客户端才能连,下载之后解压,不需要编译,进入bin目录就能自己运行,。 安装: linux 下mongodb7版本没有安装客户端需要当地下载…

Java:你还在想着考虑使用 tess4j 做文字识别吗?给你看看我的一点实践

需求:删除带有图片水印的图片 语言也设置为中文了,最后给我识别的文字是这样的 | AT V ! w{)" . ) ,/ R Ko 87 ’ 我能理解,毕竟图片很大张,不过不用担心,因为这个水印很有规律,就在右下方裁剪出宽 1…

基于单片机的智能燃气灶控制系统设计

摘要:针对传统燃气灶存在不能防干烧、不能进行温度检测、不能进行火力自动调节等问题,设计了一种基于单片机控制的智能燃气灶,它通过单片机进行控制,由开关模块、测温模块、语音播报模块、火力控制模块和防空烧模块五个模块组成&a…

django+flask+python高校教材管理系统47nia

本.4论文结构 绪论:剖析项目可行性,表明研究方向。 开发技术:系统关键运用了Python技术性、Django框架、B/S架构和myspl数据库查询,并进行了详细介绍[6]。 系统分析:包含系统的总体构造,用例图和结构图。 系…

故障诊断 | 一文解决,CNN-LSTM卷积神经网络-长短期记忆神经网络组合模型的故障诊断(Matlab)

效果一览 文章概述 故障诊断 | 一文解决,CNN-LSTM卷积神经网络-长短期记忆神经网络组合模型的故障诊断(Matlab) 模型描述 CNN-LSTM模型是一种结合了卷积神经网络(Convolutional Neural Network)和长短期记忆神经网络(Long Short-Term Memory)的组合模型,常用于数据故障…

《动手学深度学习(PyTorch版)》笔记6.3

注:书中对代码的讲解并不详细,本文对很多细节做了详细注释。另外,书上的源代码是在Jupyter Notebook上运行的,较为分散,本文将代码集中起来,并加以完善,全部用vscode在python 3.9.18下测试通过&…