Здесь я выложу обрывки кода для HANA CDS (Core Data Service)
Это новая технология для описания модели данных в ABAP словаре,
пришедшая на смену стандартным ABAP View.
Фишка в том, что все вычисления выносятся на уровень СУБД
CDS view с ассоциацией и параметром
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
@AbapCatalog.sqlViewName: 'sql_view_name' @AbapCatalog.compiler.compareFilter: true @AccessControl.authorizationCheck: #CHECK @EndUserText.label: 'Описание DDL' define view zddl_sample with parameters p_werks : werks_d as select from t001w AS z1 association [1..1] to kna1 as _kna1 on _kna1.kunnr = t001w.kunnr { t001w.werks, _kna1.kunnr, _kna1.name1 } where t001w.werks = $parameters.p_werks |
Выборка из CDS с определенными параметрами
1 2 3 4 5 6 7 8 9 10 11 |
@AbapCatalog.sqlViewName: 'sql_view_name3' @AbapCatalog.compiler.compareFilter: true @AccessControl.authorizationCheck: #CHECK @EndUserText.label: 'get assoc' define view Zext_Assoc_Get as select from zddl_sample (p_werks:'N005') { zddl_sample.werks, zddl_sample.name1 } |
Можно еще так
1 2 3 4 5 6 7 8 9 |
@AbapCatalog.sqlViewName: 'sql_view_name3' @AbapCatalog.compiler.compareFilter: true @AccessControl.authorizationCheck: #CHECK @EndUserText.label: 'get assoc' define view Zext_Assoc_Get as select * from zddl_sample (p_werks:'N005') |
Выборка из CDS View с параметром с помощью Open SQL, проверка на возможность такой выборки
1 2 3 4 5 6 7 8 9 10 11 |
IF cl_abap_dbfeatures=>use_features( VALUE #( ( cl_abap_dbfeatures=>views_with_parameters ) ) ). SELECT * INTO TABLE @DATA(lt_test) FROM sql_view_name( p_werks = 'N005' ). cl_demo_output=>display_data( EXPORTING value = lt_test * name = " Name ). ENDIF. |
Использование case в запросе (стырил тут)
1 2 3 4 5 6 7 8 9 10 11 12 13 |
@AbapCatalog.sqlViewName: 'DEMO_CDS_SCASE' define view demo_cds_searched_case as select from spfli { key carrid, key connid, distance, distid, case when distance >= 2000 then 'long-haul flight' when distance >= 1000 and distance < 2000 then 'medium-haul flight' end as flight_type } where distid = 'MI' |
Быстрый просмотр в IDA ALV (стырил тут)
1 |
cl_salv_gui_table_ida=>create( iv_table_name = 'SBOOK' )->fullscreen( )->display( ). |
Расширение стандартных CDS View (на примере Z, но главное суть)
1 2 3 4 5 6 |
@AbapCatalog.sqlViewAppendName: 'zddl_append_view' @EndUserText.label: 'extend_ddl_test' extend view zddl_sample with zextend_ddl { z1.kunnr as test } |