Skip to end of metadata
Go to start of metadata

By this demo, you'll have a better understanding about how CDC works in the system.

Create a CDS based on table ROOSATTR:

@AbapCatalog.sqlViewName: 'ZROOSOURCE_D'
@AbapCatalog.compiler.compareFilter: true
@AbapCatalog.preserveKey: true
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: 'Delta of ROOSATTR'
@Analytics: {
dataCategory: #FACT,
dataExtraction: { enabled: true, delta.changeDataCapture:
{    mapping: [ { table: 'ROOSATTR',
                         role: #MAIN, 
                         viewElement: ['ODPExtractor'],
                         tableElement: ['OLTPSOURCE'] } ]
} } }
define view ZROOSATTRD as select from roosattr {
key oltpsource as ODPExtractor,
expose_external as IfExpose
}


Run Full extraction

SE38 → RODPS_REPL_TEST → ZROOSOURCE_D$F / Full→ Execute

ODQMON:

Run Delta Init
SE38 → RODPS_REPL_TEST → ZROOSOURCE_D$F / Last Delta → Execute

TCode.DHCDCMON → 1 entry is generated:

Remember: the 2 jobs (Observer Job & Transfer Job) must be Green status. So long as anyone of them is RED, the CDC won't work. 
You could get more information in the job log. Some cases are relevant to EIM-DH-ABA-CDC.

Observer job /1DH/OBSERVE_LOGTAB is scheduled hourly:

Delta push job /1DH/PUSH_CDS_DELTA was started once several hours ago. Only when there's new data changed, this job will start again:

Insert new table entry to ROOSATTR ( using z report or INSERT manually ):

ROOSATTR-OLTPSOURCE 'TEST1'.
ROOSATTR-EXPOSE_EXTERNAL 'X'.
INSERT INTO ROOSATTR VALUES ROOSATTR.

Delta push job /1DH/PUSH_CDS_DELTA is started again (controlled by observer job):


TCode.DHCDCMON → 1 new entry can be seen – Last Pointer is changed from 0 to 1:

One new unit has been written into ODQMON → Unit

The entry in the unit is just the entry in table ODQDATA (TID is the same):


Run Delta extraction

SE38 → RODPS_REPL_TEST → ZROOSOURCE_D$F / Last Delta → Execute


Check ODQMON again: the TSN in Units View is the same with 'Upper Limit for TSN' in Request view