CDS:核心是在sap自动生成一个封装的视图
视图是虚拟表,不存储数据,存储的是sql,检索它的时候实际上是执行定义它的sql语句
eclipse编写cds
登陆
创建cds
点击next
在模板选择界面选择自己需要的模板,包括join、带参数、association,然后finish
@AbapCatalog.sqlViewName: 'ZVDEMO1_JERRY' /*生成sql view*/
@AbapCatalog.compiler.compareFilter: true
@AbapCatalog.preserveKey: true /*值为TRUE时,SQL view中的key字段使用CDS中定义的key; 值为FALSE时,使用DB table中table的key field.*/
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: 'CDS DEMO1 FOR JERRY'
define view ZCDS_DEMO1_JERRY /*定义的CDS View的名字*/
with parameters /*cds view 的参数*/
p_matnr :matnr,
p_mtart :mtart
as select from mara /*cds view数据源*/
left outer join makt on mara.matnr = makt.matnr
{ /*定义了CDS view中包含哪些字段*/
key mara.matnr, /*指定CDS View中哪些字段是Key字段*/
mtart,
maktx
}
where mara.matnr = $parameters.p_matnr
and mara.mtart = $parameters.p_mtart
其中
with parameters /*cds view 的参数*/
p_matnr :matnr, //前面是参数名字,后面是参数参照的类型(有可能直接参照ABAP表里的字段不行,就参照到那个字段的数据元素)
p_mtart :mtart
运行过后ABAP中就会生成视图
然后从视图中获取自己要的数据
*&---------------------------------------------------------------------*
*& Report ZCDS_DEMO1
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT zcds_demo1_09.
TABLES: mara.
PARAMETERS: p_matnr TYPE mara-matnr,
P_mtart TYPE mara-mtart
.
INITIALIZATION.
START-OF-SELECTION.
PERFORM frm_get_data.
END-OF-SELECTION.
*&---------------------------------------------------------------------*
*& Form frm_get_data
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM frm_get_data .
* 获取数据
SELECT *
FROM ZVDEMO1_JERRY( P_matnr = @P_MATNR,P_MTART = @P_MTART )
INTO TABLE @DATA(lt_mara)
.
* 显示数据
CALL METHOD cl_demo_output=>display( lt_mara ).
ENDFORM.
- 获取数据
SELECT *
FROM ZVDEMO1_JERRY( P_matnr = @P_MATNR,P_MTART = @P_MTART )
INTO TABLE @DATA(lt_mara)
在最后从视图获取数据时,where条件的写法和普通的从db表获取数据有所差异,需要注意