ABAP CDS编写

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表获取数据有所差异,需要注意
  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值