Performing File Content Conversion (FCC) is a common requirement when developing interfaces that deal with flat file formats. This can be easily accomplished in the File/FTP adapter. However, for other adapter types, this needs to be achieved by adding the MessageTransformBean (MTB) module with conversion class com.sap.aii.af.sdk.xi.adapter.Conversion into the module chain.
However, MTB is not feature-equivalent with the FCC functionality in the File/FTP adapter. Certain parameters that are available for configuration in the File/FTP adapter are not equally supported in MTB. Furthermore, the SAP Help Library online documentation does not fully list down all the available configuration parameters. Therefore, more often than not when working with MTB, it becomes a trial and error exercise.
This blog is an attempt to come up with a list (as comprehensive as possible) of the configuration options available when using MTB. This has been accomplished by decompiling the corresponding JAR package for MTB. Whilst this is on a PI 7.11 system, hopefully most of it will still be applicable for higher releases. Hopefully this will be a helpful reference for those who plan to use MTB in the future.
1) Conversion type: SimplePlain2XML
Parameter Name | Default value if parameter not configured | Additional remarks |
---|---|---|
xml.skipEmptyFile | false | |
xml.encoding | UTF-8 | |
xml.conversionType | SimplePlain2XML | |
xml.structureTitle | row | |
xml.fieldFixedLengths | Either fieldFixedLengths or fieldSeparator must be populated | |
xml.fieldFixedLengthType | char | |
xml.fieldSeparator | Either fieldFixedLengths or fieldSeparator must be populated | |
xml.endSeparator | nl | |
xml.beginSeparator | ||
xml.enclosureSign | ||
xml.enclosureSignEnd | xml.enclosureSign | |
xml.enclosureSignEscape | ||
xml.enclosureSignEndEscape | xml.enclosureSignEscape | |
xml.enclosureConversion | YES | |
xml.checkForXMLPredefinedEntities | YES | |
xml.checkForISOControls | ||
xml.lastFieldsOptional | NO | Deprecated and should not be used with missingLastFields or additionalLastFields |
xml.missingLastFields | ignore | |
xml.additionalLastFields | ||
xml.keepIncompleteFields | NO | |
xml.addBeginSeparatorAsField | ||
xml.addEndSeparatorAsField | ||
xml.fieldContentFormatting | trim | |
xml.processFieldNames | Required parameter | |
xml.documentName | ||
xml.documentNamespace | ||
xml.documentNamespaceScope | root | |
xml.fieldNames | Required parameter if xml.processFieldNames = fromConfiguration |
2) Conversion type: StructPlain2XML
<StructureName> is per the structure names defined in xml.recordsetStructure. For each structure name listed, configure the corresponding xml.<StructureName>.* parameters.
Parameter Name | Default value if parameter not configured | Additional remarks |
---|---|---|
xml.skipEmptyFile | false | |
xml.encoding | UTF-8 | |
xml.conversionType | StructPlain2XML | |
xml.recordsetStructure | Required parameter | |
xml.recordsetStructureOrder | asc | |
xml.allowEmptyRecordsets | YES | |
xml.recordsetName | Recordset | |
xml.recordsetNamespace | ||
xml.recordsetNamespaceScope | root | |
xml.recordsetBeginSeparator | ||
xml.recordsetEndSeparator | ||
xml.documentName | ||
xml.documentNamespace | ||
xml.documentNamespaceScope | root | |
xml.recordsetsPerMessage | * | |
xml.documentSkipFirstRows | 0 | |
xml.keyFieldName | Required parameter if there is a structure with * in xml.recordsetStructure | |
xml.keyFieldType | Required parameter if there is a structure with * in xml.recordsetStructure | |
xml.<StructureName>.fieldFixedLengths | Either fieldFixedLengths or fieldSeparator must be populated | |
xml.<StructureName>.fieldFixedLengthType | char | |
xml.<StructureName>.fieldSeparator | Either fieldFixedLengths or fieldSeparator must be populated | |
xml.<StructureName>.endSeparator | nl | |
xml.<StructureName>.beginSeparator | ||
xml.<StructureName>.enclosureSign | ||
xml.<StructureName>.enclosureSignEnd | ||
xml.<StructureName>.enclosureSignEscape | ||
xml.<StructureName>.enclosureSignEndEscape | ||
xml.<StructureName>.enclosureConversion | YES | |
xml.<StructureName>.checkForXMLPredefinedEntities | YES | |
xml.<StructureName>.checkForISOControls | ||
xml.<StructureName>.lastFieldsOptional | NO | Deprecated and should not be used with missingLastFields or additionalLastFields |
xml.<StructureName>.missingLastFields | ignore |
|
xml.<StructureName>.additionalLastFields | ||
xml.<StructureName>.keepIncompleteFields | NO | |
xml.<StructureName>.addBeginSeparatorAsField | ||
xml.<StructureName>.addEndSeparatorAsField | ||
xml.<StructureName>.fieldContentFormatting | trim | |
xml.<StructureName>.processFieldNames | fromConfiguration | |
xml.<StructureName>.keyFieldValue | Required parameter if there is a structure with * in xml.recordsetStructure | |
xml.<StructureName>.keyFieldInStructure | add | |
xml.<StructureName>.fieldNames | Required parameter if xml.<StructureName>.processFieldNames = fromConfiguration |
3) Conversion type: SimpleXML2Plain
Parameter Name | Default value if parameter not configured | Additional remarks |
---|---|---|
xml.skipEmptyFile | false | |
xml.encoding | UTF-8 | |
xml.conversionType | SimpleXML2Plain | |
xml.fieldFixedLengths | Either fieldFixedLengths or fieldSeparator must be populated | |
xml.fieldFixedLengthType | char | |
xml.fieldSeparator | Either fieldFixedLengths or fieldSeparator must be populated | |
xml.endSeparator | nl | |
xml.beginSeparator | ||
xml.checkForXMLPredefinedEntities | YES | |
xml.checkForISOControls | ||
xml.addHeaderLine | Required parameter | |
xml.headerLine | Required parameter if xml.addHeaderLine = 3 or 4 | |
xml.absoluteRowWidth | 0 | |
xml.fixedLengthTooShortHandling | Error |
4) Conversion type: StructXML2Plain
<StructureName> is per the structure names defined in xml.recordsetStructure. For each structure name listed, configure the corresponding xml.<StructureName>.* parameters.
Parameter Name | Default value if parameter not configured | Additional remarks |
---|---|---|
xml.skipEmptyFile | false | |
xml.encoding | UTF-8 | |
xml.conversionType | StructXML2Plain | |
xml.recordsetStructure | Required parameter | |
xml.<StructureName>.fieldFixedLengths | Either fieldFixedLengths or fieldSeparator must be populated | |
xml.<StructureName>.fieldFixedLengthType | char | |
xml.<StructureName>.fieldSeparator | Either fieldFixedLengths or fieldSeparator must be populated | |
xml.<StructureName>.endSeparator | nl | |
xml.<StructureName>.beginSeparator | ||
xml.<StructureName>.checkForXMLPredefinedEntities | YES | |
xml.<StructureName>.checkForISOControls | ||
xml.<StructureName>.absoluteRowWidth | 0 | |
xml.<StructureName>.fixedLengthTooShortHandling | Error |
References:
For details about the functionality & values related to each parameter, refer to the corresponding parameter listed in the FCC section of the File/FTP adapter below:-
Converting Text Format in the Sender File/FTP Adapter to XML
Converting XML in the Receiver File/FTP Adapter to Text Format