PI.SFSF Integration.DOC – SFSF OData Dynamic query “$filter” clause at runtime.
Document Objective: Objective of this document is to providing information about “How to Build SFSF OData query “filter Clause” dynamically at runtime using SAP PI synchronously?”
7.4 Single Stack.
Connectivity add on
Lastest sca file : PICOASUF and PIADAPTERS.sca
Normally SFSF OData Sender and Receiver Communication channel supports a hard coded Query.
Operation Type: Query
Operation Query: dummy-tableName?$select=dummy-fieldNames &$filter=dummy-filterCondition.
Now as you see in above query filter expression and condition is also included as part of actual written query in Communication Channel (hard-coded).
But our requirement is to build and add this filter expression and condition at runtime rather than doing as fixed/hardcoding.
This document provides an example of main steps required to build interface in SAP PI. This is further divided into following three steps:-
- 1. PI Enterprise Service Repository Configurations
- 2. PI Integration Directory Configurations
- 3. Unit Testing of Scenario.
Brief about Technical Scenario:
Synchronous scenario flow would be as follows:-
- 1. Response Message will flow from SAP HCM to Successfactors
- 2. Response Message will flow from Successfactors to SAP HCM.
SAP HCM is SOAP – XI Proxy Sender Channel.
Successfactors is SFSF Receiver Channel.
Enterprise Service Repository:-
External Definition :
Request Message will from SAP HCM to Successfactors
External Definition (This is delivered by SAP in their latest patch). I have attached external definition along with this document.
I have attached it in txt format. so before using it save it in xsd format and use it.
Note (Just for others information)
You can also create your own data type name, message type but name and its namespace should be fixed as defined by SAP.
Response Message flow from Successfactors to SAP HCM.
External Definition (This is generated from eclipse Juno – How to generate this xsd using Juno: Please follow my other blog).
URL to Blog: PI.SFSF Integration.DOC – How to Model Successfactors SOAP and ODATA Entities using Eclipse Juno Tool.
Outbound Service Interface:
Inbound Service Interface:
Message Mapping and Operation Mapping
My is pass-through Scenario so no message and operation mapping required.
1. Sender Communication channel.
2. Receiver Communication Channel.
Focus on Target Channel Arrow and Double Click.
Channel Properties will be Open.
Choose AdapterType as Successfactors
Message Protocol as SOAP ( Note : For OData choose OData Message Protocol).
Fill the neccessry information.
Eg. Address of SFSF DataCenter . In our case it is API5.
Company ID – User – Password ( Ask above information from SFSF Configuration Expert ).
SAP recently released patch to support pulling complete data from Successfactors with an upper limit of 25MB.
It will be good for customers if they can download latest PICOASUF and PIADAPTERS.sca from the SMP and apply both to the PI system.
Is there a document that provides a list of operators supported by the Dynamic Query $Filter?
I am trying to use a like operatore in my Filter but the same fails with a error:
org.apache.olingo.odata2.api.uri.expression.ExpressionParserException: Invalid token "like" detected after parsing at position 10 in "username like '%25admin%25'
Can you please tell me how are u generating dynamic query?
Where you are using dynamic query in receiver adapter ?
you have mentioned your scenario is a pass through one.
Dymanic Query Paramter true means whats ever filter value will come in structure it will directly add this value to query mentioned in Communication Channel.
In my case we were sending dynamic query using SAP Proxy Side. in filter field.
Could you provide sample xml for QueryStringOptions having example with field values to understand the format of filter field passed over payload part "<xsd:element name="filter" type="xsd:string" minOccurs="0"/>
Well done my firend.
Is there a similar approach for SFAPI? I have to query CompoundEmployee XSD which is a SFAPI.
Yes Same Approaach for oData and SOAP.