CDS view与替代对象

2024-02-01 21:04
文章标签 对象 view 替代 cds

本文主要是介绍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
};

这篇关于CDS view与替代对象的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/668461

相关文章

Java第二阶段---09类和对象---第三节 构造方法

第三节 构造方法 1.概念 构造方法是一种特殊的方法,主要用于创建对象以及完成对象的属性初始化操作。构造方法不能被对象调用。 2.语法 //[]中内容可有可无 访问修饰符 类名([参数列表]){ } 3.示例 public class Car {     //车特征(属性)     public String name;//车名   可以直接拿来用 说明它有初始值     pu

cdsapi CDS-Beta

原来版本的cds在 2024年9月26日将不再支持,取而代之的是CDS-Beta。 需要重新更新.cdsapirc以及cdsapi版本,并接受许可。 1.注册获取Personal Access Token CDS-Beta:https://cds-beta.climate.copernicus.eu/ 2.更新.cdsapirc/以及cdsapi版本 https://cds-beta.clima

MVC(Model-View-Controller)和MVVM(Model-View-ViewModel)

1、MVC MVC(Model-View-Controller) 是一种常用的架构模式,用于分离应用程序的逻辑、数据和展示。它通过三个核心组件(模型、视图和控制器)将应用程序的业务逻辑与用户界面隔离,促进代码的可维护性、可扩展性和模块化。在 MVC 模式中,各组件可以与多种设计模式结合使用,以增强灵活性和可维护性。以下是 MVC 各组件与常见设计模式的关系和作用: 1. Model(模型)

HTML5自定义属性对象Dataset

原文转自HTML5自定义属性对象Dataset简介 一、html5 自定义属性介绍 之前翻译的“你必须知道的28个HTML5特征、窍门和技术”一文中对于HTML5中自定义合法属性data-已经做过些介绍,就是在HTML5中我们可以使用data-前缀设置我们需要的自定义属性,来进行一些数据的存放,例如我们要在一个文字按钮上存放相对应的id: <a href="javascript:" d

PHP7扩展开发之对象方式使用lib库

前言 上一篇文章,我们使用的是函数方式调用lib库。这篇文章我们将使用对象的方式调用lib库。调用代码如下: <?php $hello = new hello(); $result = $hello->get(); var_dump($result); ?> 我们将在扩展中实现hello类。hello类中将依赖lib库。 代码 基础代码 这个扩展,我们将在say扩展上增加相关代码。sa

hibernate修改数据库已有的对象【简化操作】

陈科肇 直接上代码: /*** 更新新的数据并并未修改旧的数据* @param oldEntity 数据库存在的实体* @param newEntity 更改后的实体* @throws IllegalAccessException * @throws IllegalArgumentException */public void updateNew(T oldEntity,T newEntity

MFC中App,Doc,MainFrame,View各指针的互相获取

纸上得来终觉浅,为了熟悉获取方法,我建了个SDI。 首先说明这四个类的执行顺序是App->Doc->Main->View 另外添加CDialog类获得各个指针的方法。 多文档的获取有点小区别,有时间也总结一下。 //  App void CSDIApp::OnApp() {      //  App      //  Doc     CDocument *pD

类和对象的定义和调用演示(C++)

我习惯把类的定义放在头文件中 Student.h #define _CRT_SECURE_NO_WARNINGS#include <string>using namespace std;class student{public:char m_name[25];int m_age;int m_score;char* get_name(){return m_name;}int set_name

react笔记 8-19 事件对象、获取dom元素、双向绑定

1、事件对象event 通过事件的event对象获取它的dom元素 run=(event)=>{event.target.style="background:yellowgreen" //event的父级为他本身event.target.getAttribute("aid") //这样便获取到了它的自定义属性aid}render() {return (<div><h2>{

Caused by: android.view.WindowManager$BadTokenException: Unable to add window -- token android.os.B

一个bug日志 FATAL EXCEPTION: main03-25 14:24:07.724: E/AndroidRuntime(4135): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.syyx.jingubang.ky/com.anguotech.android.activity.Init