1.说明:
此例子在HANA STUDIO创建一个带参数的CDS,并创建一个ABAP 的程序,使用此带参数的CDS,显示到ALV中。解决如下问题:
1.如何创建带参数的CDS;
2.在程序中如何使用带参数的CDS;
2.一、创建带参数CDS
1. 在New ABAP Repository Object窗口中,通过在搜索字段中键入来搜索DDL源对象。选择DDL Source,然后单击Next。
2. 在“ 新建DDL源”窗口中,输入CDS视图的名称和描述,然后单击完成.
3. A new ABAP CDS view editor opens up like below and paste the below code.
在例子中,p_land1,p_ktokd,f都为CDS的传入参数,另外,
land1_gp为p_LAND1传入参数的数据类型,
ktokd为P_KTOKD传入CDS数据的数据类型,
在CDS的WHERE 使用了两种方法读取传入数据,使用中可以对照
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
@AbapCatalog.sqlViewName: 'Z_CDS_PARAMS' @AbapCatalog.compiler.compareFilter: true @AbapCatalog.preserveKey: true @AccessControl.authorizationCheck: #CHECK @EndUserText.label: 'CDS PARAMS' define view Z_SQL_PARAMS with parameters p_LAND1 : land1_gp, P_KTOKD : ktokd as select from kna1 { kunnr, land1, name1 } where land1 = :p_LAND1 and ktokd = $parameters.P_KTOKD; |
以此带参数的CDS创建完成,保存并激活后,可以在HANA STUDIO中直接查看CDS的查询结果如图。
3.二、调用带参数CDS创建ALV程序
可以在HANA STUDIO中创建一个程序,创建方法参看: 何在HANA上的ABAP程序中调用ABAP CDS视图 ,创建程序完成后,程序代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 |
SELECT orderno, itemno, currency, grossamount, netamount, bill_status FROM z_cds_params( p_billing_status = 'P', p_delivery_status = 'D' ) INTO TABLE @DATA(lt_result). * Display cl_demo_output=>display( lt_result ). |
激活运行后如图,成功按CDS查询条件显示出ALV来。
最后,在CDS的SELECT 字段列表中,可以使用直接使用传入参数,也能使用传入参数据进行计算,及其它有些OPEN SQL的函数比如
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
@AbapCatalog.sqlViewName: 'Z_CDS_PARAMS' @AbapCatalog.compiler.compareFilter: true @AbapCatalog.preserveKey: true @AccessControl.authorizationCheck: #CHECK @EndUserText.label: 'CDS PARAMS' define view Z_SQL_PARAMS with parameters p_LAND1 : land1_gp, P_KTOKD : ktokd as select from kna1 { kunnr, land1, name1, :P_KTOKD as PARAMS1, case :p_LAND1 when 'DE' then '德国' when 'ZH' then '中国' end as LANG } where land1 = :p_LAND1 and ktokd = $parameters.P_KTOKD; |