Read
Search for entities and load them into PFX:
XML
<route id="sap4hana-list-with-connection">
<from uri="timer:in?repeatCount=1&delay=5000"/>
<to uri="pfx-odata2://read?entity=A_CreditMemoRequest&$select=CreditMemoRequest,TransactionCurrency,TotalNetAmount,CreditMemoRequestType,PricingDate,CreditMemoRequestDate&$filter=TransactionCurrency eq 'USD' and OverallSDProcessStatus eq 'A'&$orderby=CreditMemoRequest desc&$top=1&$skip=0&connection=cognitus"/>
<to uri="pfx-api:loaddata?objectType=P&connection=aperture-labs&mapper=pfimcore354"/>
</route>
Authenticate using serviceUrl and credentials in URI:
XML
<route id="sap4hana-list-with-properties-connection-details">
<from uri="timer:in?repeatCount=1&delay=5000"/>
<to uri="pfx-odata2://read?entity=A_CreditMemoRequest&$select=CreditMemoRequest,TransactionCurrency,TotalNetAmount,CreditMemoRequestType,PricingDate,CreditMemoRequestDate&$filter=TransactionCurrency eq 'USD' and OverallSDProcessStatus eq 'A'&$orderby=CreditMemoRequest desc&$top=1&$skip=0&serviceUrl={{sap.url}}&username={{sap.username}}&password={{sap.password}}"/>
<to uri="pfx-api:loaddata?objectType=P&connection=aperture-labs&mapper=pfimcore354"/>
</route>
Search for an entity defined by a single ID:
XML
<route id="sap4hana-get">
<from uri="timer:in?repeatCount=1&delay=5000"/>
<setHeader headerName="PfxOpenData2.id"><constant>60000001</constant></setHeader>
<to uri="pfx-odata2://read?entity=A_CreditMemoRequest&connection=cognitus"/>
<to uri="pfx-api:loaddata?objectType=P&connection=aperture-labs&mapper=pfimcore354"/>
</route>
Search for an entity defined by a composite ID:
XML
<route id="sap4hana-get-with-composite-id">
<from uri="timer:in?repeatCount=1&delay=5000"/>
<setHeader headerName="PfxOpenData2.id"><groovy>['CreditMemoRequest':'60000001','CreditMemoRequestItem':'10']</groovy></setHeader>
<to uri="pfx-odata2://read?entity=A_CreditMemoRequestItem&connection=cognitus"/>
<to uri="pfx-api:loaddata?objectType=P&connection=aperture-labs&mapper=pfimcore354"/>
</route>
Batch read and upload to PFX:
XML
<route id="sap4hana-batch-read" autoStartup="true">
<from uri="timer:in?repeatCount=1&delay=5000"/>
<!-- Read with option '$inlinecount=allpages' that returns count of all records along with first batch -->
<to uri="pfx-odata2://read?entity=A_CreditMemoRequest&$skip=0&$top=0&$inlinecount=allpages&connection=cognitus"/>
<log message="Detected [${headers['PfxOpenData2.$inlinecount']}] records." />
<!-- Set batch size -->
<setHeader headerName="$top"><constant>4</constant></setHeader>
<loop doWhile="true">
<groovy>headers['PfxOpenData2.$inlinecount'] > (exchange.getProperty('CamelLoopIndex', 0, Integer) + 1) * headers.$top.toInteger()</groovy>
<setHeader headerName="$skip"><groovy>exchange.getProperty('CamelLoopIndex', 0, Integer) * headers.$top.toInteger()</groovy></setHeader>
<log message="Batch [#${exchangeProperty.CamelLoopIndex}]. Fetching [${header.$top}] elements form index [${header.$skip}]. "/>
<to uri="pfx-odata2://read?entity=A_CreditMemoRequest&connection=cognitus"/>
<log message="Processing ${body}"/>
<to uri="pfx-api:loaddata?objectType=P&connection=aperture-labs&mapper=pfimcore354"/>
</loop>
<log message="Job done. Fetched [${headers['PfxOpenData2.$inlinecount']}] in [${exchangeProperty.CamelLoopIndex} + 1)] batches with size [${header.$top}]."/>
</route>
Create
XML
<!-- Create entity with multiple IDs - A_CreditMemoRequestItems(CreditMemoRequest='60000001',CreditMemoRequestItem='10') -->
<route id="sap4hana-create-credit-memo-item" autoStartup="false">
<from uri="timer:in?repeatCount=1&delay=5000"/>
<setBody>
<groovy>
[
"CreditMemoRequest":"60000001",
"CreditMemoRequestItem":"10",
"CreditMemoRequestItemCategory":"G2N",
"CreditMemoRequestItemText":"Computer",
"TotalNetAmount":new BigDecimal("500.00"),
"TransactionCurrency":"USD",
"RequestedQuantity":"10"
]
</groovy>
</setBody>
<to uri="pfx-odata2://create?entity=A_CreditMemoRequestItem&connection=cognitus"/>
<log message="Created ${body}"/>
</route>
Update
XML
<!-- Update TotalNetAmount of entity 'A_CreditMemoRequest' with id 60000001 -->
<route id="sap4hana-update" autoStartup="false">
<from uri="timer:in?repeatCount=1&delay=5000"/>
<setHeader headerName="PfxOpenData2.id"><constant>60000001</constant></setHeader>
<setBody>
<groovy>
[
"CreditMemoRequest":"60000002",
"TotalNetAmount":new BigDecimal("1500.00")
]
</groovy>
</setBody>
<to uri="pfx-odata2://update?entity=A_CreditMemoRequest&connection=cognitus"/>
<log message="Created ${body}"/>
</route>
Delete
XML
<!-- Delete entity 'A_CreditMemoRequest' with id 60000001 -->
<route id="sap4hana-delete">
<from uri="timer:in?repeatCount=1&delay=5000"/>
<setHeader headerName="PfxOpenData2.id"><constant>60000001</constant></setHeader>
<to uri="pfx-odata2://delete?entity=A_CreditMemoRequest&connection=cognitus"/>
</route>