ABAP CDS Filtering ile ilgili kod.

Ön koşullar

1. ABAP CDS yaratma
2. SAP EPM
3. ABAP CDS Associations

Senaryo

Faturanın ilk kalem tutarını ve sadece 01 müşteri rolüne sahip olan müşterileri listeleyen ayrı bir fatura raporu.

Base CDS View

@AbapCatalog.sqlViewName: 'ZZXB_V_ASSFILTBS'
@AbapCatalog.compiler.compareFilter: true
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: 'Association filter base CDS örneği'
define view zzxb_cdsv_filter_base as
  select from snwd_so_inv_head as invoice_header
    association[1..*] to snwd_so_inv_item as invoice_items
             on $projection.header_guid = invoice_items.parent_key
 { 
   invoice_header.so_guid  as order_guid,
   invoice_header.node_key as header_guid,
   invoice_items
 }

Consumer CDS View

@AbapCatalog.sqlViewName: 'ZZXB_V_ASSFILTCS'
@AbapCatalog.compiler.compareFilter: true
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: 'Association filter consumer CDS örneği'
define view zzxb_cdsv_filter_consumer as 
    select from snwd_so as so
    association [1] to snwd_bpa as bpa
                    on so.buyer_guid = bpa.node_key
    association [0..1] to zzxb_cdsv_filter_base as filter_base
                       on so.node_key = filter_base.order_guid
{
    key so.so_id as order_id,
    bpa[ bp_role = '01' ].company_name as customer_name,
    
    filter_base.invoice_items[ inv_item_pos = '0000000010'].gross_amount,
    filter_base.invoice_items[ inv_item_pos = '0000000010'].currency_code
}