OpenData v2 Integration

Read

Search for entities and load them into PFX:

XML
    <route id="sap4hana-list-with-connection">
        <from uri="timer:in?repeatCount=1&amp;delay=5000"/>
        <to uri="pfx-odata2://read?entity=A_CreditMemoRequest&amp;$select=CreditMemoRequest,TransactionCurrency,TotalNetAmount,CreditMemoRequestType,PricingDate,CreditMemoRequestDate&amp;$filter=TransactionCurrency eq 'USD' and OverallSDProcessStatus eq 'A'&amp;$orderby=CreditMemoRequest desc&amp;$top=1&amp;$skip=0&amp;connection=cognitus"/>
        <to uri="pfx-api:loaddata?objectType=P&amp;connection=aperture-labs&amp;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&amp;delay=5000"/>
        <to uri="pfx-odata2://read?entity=A_CreditMemoRequest&amp;$select=CreditMemoRequest,TransactionCurrency,TotalNetAmount,CreditMemoRequestType,PricingDate,CreditMemoRequestDate&amp;$filter=TransactionCurrency eq 'USD' and OverallSDProcessStatus eq 'A'&amp;$orderby=CreditMemoRequest desc&amp;$top=1&amp;$skip=0&amp;serviceUrl={{sap.url}}&amp;username={{sap.username}}&amp;password={{sap.password}}"/>
        <to uri="pfx-api:loaddata?objectType=P&amp;connection=aperture-labs&amp;mapper=pfimcore354"/>
    </route>

Search for an entity defined by a single ID:

XML
    <route id="sap4hana-get">
        <from uri="timer:in?repeatCount=1&amp;delay=5000"/>
        <setHeader headerName="PfxOpenData2.id"><constant>60000001</constant></setHeader>
        <to uri="pfx-odata2://read?entity=A_CreditMemoRequest&amp;connection=cognitus"/>
        <to uri="pfx-api:loaddata?objectType=P&amp;connection=aperture-labs&amp;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&amp;delay=5000"/>
        <setHeader headerName="PfxOpenData2.id"><groovy>['CreditMemoRequest':'60000001','CreditMemoRequestItem':'10']</groovy></setHeader>
        <to uri="pfx-odata2://read?entity=A_CreditMemoRequestItem&amp;connection=cognitus"/>
        <to uri="pfx-api:loaddata?objectType=P&amp;connection=aperture-labs&amp;mapper=pfimcore354"/>
    </route>

Batch read and upload to PFX:

XML
<route id="sap4hana-batch-read" autoStartup="true">
	<from uri="timer:in?repeatCount=1&amp;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&amp;$skip=0&amp;$top=0&amp;$inlinecount=allpages&amp;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&amp;connection=cognitus"/>
		<log message="Processing ${body}"/>
		<to uri="pfx-api:loaddata?objectType=P&amp;connection=aperture-labs&amp;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&amp;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&amp;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&amp;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&amp;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&amp;delay=5000"/>
        <setHeader headerName="PfxOpenData2.id"><constant>60000001</constant></setHeader>
        <to uri="pfx-odata2://delete?entity=A_CreditMemoRequest&amp;connection=cognitus"/>
    </route>