场景:ABAP读取主视图访问依赖视图中的字段,
1: 先建一个从视图 ydemo_c_status
@AbapCatalog.sqlViewName: 'YDEMOSTATUS'
@AbapCatalog.compiler.compareFilter: true
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: 'status '
define view ydemo_c_status as select from sflight
{
@EndUserText.label: 'Carrid'
key sflight.carrid,
key sflight.connid,
@EndUserText.label: 'Plane Type'
planetype
}
2: 创建主视图: ydemo_c_Rstatus
@AbapCatalog.sqlViewName: 'YDEMOSTATUSR'
@AbapCatalog.compiler.compareFilter: true
@AbapCatalog.preserveKey: true
@AccessControl.authorizationCheck: #NOT_REQUIRED
@EndUserText.label: 'root status'
define view ydemo_c_Rstatus as select from spfli
association [0..1] to ydemo_c_status as _spfliPtype
on $projection.connid = _spfliPtype.connid
and $projection.carrid = _spfliPtype.carrid
{
key spfli.carrid,
key spfli.connid,
@ObjectModel.association.type: [#TO_COMPOSITION_CHILD]
_spfliPtype
}
3:ABAP测试:
TYPES:BEGIN OF ty_data,
carrid TYPE ydemo_c_rstatus-carrid,
connid TYPE ydemo_c_rstatus-connid,
planetype TYPE ydemo_c_status-planetype,
END OF ty_data.
TYPES: ty_t_data TYPE STANDARD TABLE OF ty_data.
DATA: lt_tab TYPE ty_t_data.
"\_spfliptype是VIEW ydemo_c_Rstatus 中的association view 的名字,
* VIEW ydemo_c_Rstatus 并不包含planetype 这个字段,但是出可以访问
SELECT carrid,
connid,
\_spfliptype-planetype AS plane_type
FROM ydemo_c_rstatus
WHERE ydemo_c_rstatus~carrid = 'LH'
AND \_spfliptype-planetype = 'A319' INTO TABLE @lt_tab.
LOOP AT lt_tab ASSIGNING FIELD-SYMBOL(<fs>).
WRITE:/ <fs>-carrid,<fs>-connid,<fs>-planetype.
ENDLOOP.