わけあって、パラメータありCDS Viewが HANA上でどう生成されるかを確認しました。

パラメータありCDS Viewを定義します。DDICが生成される少し古いやり方です。

@AbapCatalog.sqlViewName: 'YSAPTEST00'
@AbapCatalog.compiler.compareFilter: true
@AbapCatalog.preserveKey: true
@AccessControl.authorizationCheck: #NOT_REQUIRED
@EndUserText.label: 'Test CDS View with parameter'
define view YSAP_Test00 with parameters aaa:abap.dats
 as select from t000 
 {
 $parameters.aaa as TEST
}

 

HANAのレイヤではこんなTable Functionが作られています。t-cd:SE11 からDDIC View詳細画面でユーティリティ -> データベースオブジェクト -> 照会で 確認。

CREATE FUNCTION "YSAPTEST00" (    "AAA" NVARCHAR(000008) )  
RETURNS TABLE                                               
(    "TEST" NVARCHAR(000008) )                              
LANGUAGE SQLSCRIPT AS                                       
BEGIN RETURN                                                
SELECT                                                      
AAA AS "TEST"                                              
FROM                                                        
"T000" "T000"   ; END                                       

 

こんなSQLでクライアントの件数分、結果取得できます。

SELECT "TEST" FROM "SAPHANADB"."YSAPTEST00"("AAA" => 20220815)

 

Pythonから使うとhdbcliだけでなく、hana_mlでDataFrameとしても扱えます。1件だけだすようにCDS Viewを微修正しています。

>> from hana_ml.dataframe import ConnectionContext,
>> conn = ConnectionContext(address=<HOST>, port=<PORT>, 
>>                          user=<USER>, password=<PASSWORD>, schema=<SCHEMA>)
>> dfh = conn.sql('SELECT "TEST" FROM "YSAPTEST00"("AAA" => 20220102)')
>> dfh.collect()

       TEST
0  20220102

 

Sara Sampaio

Sara Sampaio

Author Since: March 10, 2022

0 0 votes
Article Rating
Subscribe
Notify of
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x