rajgopal class
class 4thapril2025:
1. generic splitter.
2. itterative splitter.
3. camle reserved variables ( mainly exception.message)
4. namespace mapping in main iflow. ( remove double quotaiton, add multiple
reading xml fields are string, node, nodelist;
5. spilter and gaterh( same or different xml payload, any paylaod, non xml);
5. exception throwing in exception branch( message end, error, escalation );
6. splitter, gater, content modifer( appending xml header, namespaced, single root element) as template.
7. sending paramters in postman, instad of headers ; ( last 3 examples).
Class 8:
1. generic receiver,
process direct, datastore write operation with (name , unique number ,payload), seeing in monitor.
calling process direct from main iflow;
postman calling, dynamic header values;
2. xml2json mapping , with json schema given by client, expecting same format json schema.
3. http->parent -> generic receiver;
4. http-> parent -> child->parent -> generic receiver; iflows;
with some examples.
class 7
xslt mapping use
1. adding 3rd line, to enable cpi paramters to be used in xslt mapping.
2. adding header and propertires using param syntax.
3. syntax for setting header and properties in xslt mapping.
4. W3 schools , learning xml, xslt mapping baiscs.
Encoding and decoding
1. example seeing any file, we can encodeing using based64,
2. we can use that payload of image/any file, in xml payload as field.
3. extract image payload filed, do decoding base64 , use as image,pdf,word after processing in cpi.
both examples we have seen.
class 6
1. rename iflow , copy iflow
2. accepting all paramters from source. *
3. filter step use ( accessing grand child, nodelist, node, string, integer , etc)
( filter on xml payload, directly give $variable instead, ${property.name}
4. router.
mutlitple branchs(with condition), one branch is default.
use condition on json payload( only with header and property)
use condition on xsl payload( header, property, body content with xapth);
5. cm( content modify step).
body
expression, append prefix and suffix. prepare payload as you required.
constant.
--------------------------------------------------------------------------------------------------------------
class 5:
1. headers praramters from sender system, use in mapping
2. property prepared from payload and use in mapping.
3. odata call to external system
4. odata receveiver call , dynamically configure with propery varaible.
5. getproperty and getheader methods in mapping.
6. prepare xsd or get structure from refenced(if odata supports to save response schema), for next mapping.
7. sendering header paramters in from postman.
8. odata query prepare ( using wizard option avaialbe in odata adatper).
Adapters: HTTP, ODATA supports syncronous call.
9. Dynamica configuration of File adapter using camel expression ${header.name} and suffix.
------------------------------------------------------------------------------------------------------
class 4:
-----------------
1. json to xml, namespace add, root node adding,
( having namespaces in xml, prolog, xml declaration, ....) topics are important for xsd validation.
2. using help.sap.com documenation if any help required for unknown fields found in step properties.
3. json array element is important.
4. graphical mapping example
5. seeing difference pi po , cpi graphical mapping view and its differences.
6. exporting graphical mapping and use in next iflow.( with out importing xsd of source and target).
7. no xsd creating in iflow, ( take xsd from client and prepare using online tools ).
8. we can use wsdl/ json schema/xsd/edmx in graphical mapping source or target strcuture.
9. we can use java mapping in graphical mapping udf, we use groovy code. // we discuss tmrw.
----------------------------------------------------------------------
-------------------------------
class 3;
step,simulator
testing from postman , http requests, seeing response payload( contenty type);
generate http request url
csv to xml convertion step; aternative is groovy script;
redeply after transport , to over write earliar settings save in run time;
step simulators limitations;
seeing scehmas, mapping objects, scripts in referecne section.
HTTP adapter sender, context generation ; http keyword ;
------------
Import discover to design,
-->externaliztion paramters
->file transaport, ( all iflow in draft to version state),
---
transport ->
----
cm -> body camel expression.
camel expression in receiver communication channels, cm header , property variables ,;
local ip
external ip using process direct.
------------------
raj gopal/kumar 24th march 2025
1. copy standar package to design
( also explain , package, overview, artiface, value mapping ,
2. externaliation
3. formatiing verticaly or horizontally.
4. monitoring
iflow status
message monitoring
security parameters( credentails, secure parameter), -> explain how this alias is addedin sender and receiver channel;
6. most support project( reuse sap standard packages).
------------------------
raj kumar class1
23rd march 2025.
1.smoke test.
2. tracing option
3. logging( before and after steps);
4. versioning.
5. header and property variables
6. understand groovy script( log payload, header, property);
7. using sap standard variables in property step, ( also reserved varaibles not visible in );
-----------------
import com.sap.gateway.ip.core.customdev.util.Message;
import java.util.HashMap;
def Message processData(Message message) {
def logEnabled = message.getProperty("enableLog") as String;
if(logEnabled == "true") {
def body = message.getBody(java.lang.String) as String;
def headers = message.getHeaders() as Map<String, Object>;
def properties = message.getProperties() as Map<String, Object>;
def propertiesAsString ="\n";
properties.each{ it -> propertiesAsString = propertiesAsString + "${it}" + "\n" };
def headersAsString ="\n";
headers.each{ it -> headersAsString = headersAsString + "${it}" + "\n" };
def messageLog = messageLogFactory.getMessageLog(message);
if(messageLog != null){// if no error happending during message processing.
messageLog.addAttachmentAsString("Log - Message", "\n Properties \n ---------- \n" + propertiesAsString +
"\n Headers \n ---------- \n" + headersAsString +
"\n Body \n ---------- \n\n" + body,
"text/xml");
}
}
return message;
}