Cerca nel blog

giovedì 5 dicembre 2024

Creazione CDS View custom per replica in DataSpere con CDC

Creazione CDS View custom per replica in DataSpere con CDC

Le CDS View custom per replica in DataSpere con CDC (Change Data Capture, cioè con la possibilità di fare estrazioni DELTA oltre  a quella FULL) devono avere delle annotazioni particolari


Esempio 1: Bisogna creare una CDS View su una tabella standard senza filtri

@EndUserText.label: 'CDS della tabella CDPOS'

@AbapCatalog: { sqlViewName: 'ZCDS_DS_CDPOS',

                compiler.compareFilter: true,

                preserveKey: true

              }

@VDM.viewType: #BASIC

@AccessControl.authorizationCheck: #NOT_REQUIRED

@Analytics: {

    dataCategory: #CUBE,

    internalName: #LOCAL,

    dataExtraction: {

        enabled: true,

        delta.changeDataCapture: {

            automatic: true

        }

    }

}

define view ZCDS_CDPOS

  as select from cdpos

{

  key objectclas,

  key objectid,

  key changenr,

  key tabname,

  key tabkey,

  key fname,

  key chngind,

      text_case,

      unit_old,

      unit_new,

      cuky_old,

      cuky_new,

      value_new,

      value_old,

      _dataaging

}


NOTA: la parola KEY viene messa vicino a tutti i campi chiave della tabella standard

Esempio 2: Bisogna creare una CDS View su una tabella standard filtrando i dati

Creo una prima CDS View in cui inserisco i filtri

//@EndUserText.label: 'CDS della tabella LFA1 filtrata'
@AbapCatalog.sqlViewName: 'ZCDS_LFA1_F'
@AbapCatalog.compiler.compareFilter: true
@AbapCatalog.preserveKey: true
@VDM.viewType: #BASIC
@AccessControl.authorizationCheck: #NOT_REQUIRED
@VDM.private:true
@ClientHandling.algorithm: #SESSION_VARIABLE
@AbapCatalog.buffering.status: #NOT_ALLOWED
define view ZCDS_LFA1_FILTER
  as select from lfa1
    inner join   lfb1 on lfa1.lifnr = lfb1.lifnr
{
  key   lfa1.lifnr,
        lfa1.land1,
        lfa1.name1,
        lfa1.name2,
        lfa1.name3,
        lfa1.name4
}
where
  (
    lfb1.bukrs <> 'AAAA'
  )

Creo la seconda CDS View che viene poi richiamata da DataSpere, e la select di questa seconda CDS viene fatta sulla prima CDS view creata

@EndUserText.label: 'CDS View per estrazioni dati LFA1'

@AbapCatalog: { sqlViewName: 'ZCDS_DS_LFA1',
                compiler.compareFilter: true,
                preserveKey: true
              }

@VDM.viewType: #BASIC
@AccessControl.authorizationCheck: #NOT_REQUIRED
@Analytics: {
    dataCategory: #CUBE,
    internalName: #LOCAL,
    dataExtraction: {
        enabled: true,
        delta.changeDataCapture: {
            mapping:[
                {
                    table: 'LFA1',
                    role: #MAIN,
                    viewElement: ['lifnr'],
                    tableElement: ['lifnr']
                } ]
        }
    }
}
define view ZCDS_LFA1
  as select from ZCDS_LFA1_FILTER
{
  key lifnr,
      land1,
      name1,
      name2,
      name3,
      name4
}

Per verificare che la CDS view funziona per l'estrazione dei dati, eseguire da SE38 il programma RODPS_REPL_TEST,  e nei parametri di input inserire la CDS creata e premere F8



Se la CDS view è stata creata correttamente verranno visualizzati i dati.






Nessun commento:

Posta un commento