Provides integration with the SAP platform using the BAPI collection of interfaces, allowing you to acquire data from and publish data to the system.
Before using the ERP Connector node, you may first want to use the Extract ERP Metadata node to extract metadata information.
The main use cases of the ERP Connector node are as follows:
- Executes a remote function call on the SAP system to create, read, update or delete data from the SAP system for a specific object.
- Depending on the function executed, this could be a BAPI, an RFM that is not a BAPI, or another RFC that does not interact with a RFM.
- import parameters provided via configuring input pins and/or node properties.
- Output pins must be configured to retrieve the export parameters.
If you plan to use the same function regularly, it is recommended that you create a library node (see Creating library nodes) such that the inputs/outputs required by the node are configured correctly, and parameters to the function can be named properties in the Data360 Analyze node removing the need for end users to know which "Scalar Parameters" and "Structure Parameters" are required by the function.
For examples of using the ERP Connector node, see ERP Connector examples.
Standard configuration
By default, the node does not contain any inputs. However, if import parameters are to be specified dynamically, via input data, corresponding inputs need to be created on the node. Similarly, any export parameters to deactivate can be specified in a corresponding input.
Since the ERP Connector node is very generic and can be used to call any remote function, the configuration that is to be provided to this node is very much function specific. However, the following general rules apply:
- First, determine the interface of the function using the Extract ERP Metadata node, see Extract ERP Metadata.
- Set the name of the function to execute in the FunctionName property, or via a node input called "Function Name".
- If the function requires any scalar import parameters, either:
- Set these in the ScalarParameters property in the following format:
<Property name>=<Property value>
- Provide these parameters via an input:
- Create an input named "Scalar Parameters".
- For each scalar parameter, the input needs to have a field, where the field name equals the name of the parameter.
- The parameter value must be provided as the field value for the corresponding field in the input.
- The type of the field must match the specified "Data360 Analyze Field Type" specified in the interface, which can be seen on the corresponding record of the "Scalar Parameters" output on the Extract ERP Metadata node.
- There must only be one input record.
- Set these in the ScalarParameters property in the following format:
- If the function requires any structure import parameters, either:
- Set these in the StructureParameters property in the following format:
<StructureName>.<PropertyName>=<PropertyValue>
- Provide these parameters via inputs to the node. Each structure import parameter provided must have its own input. For each structure:
- Create an input "Structure Parameters_<StructureName>".
- For each parameter in the structure, the input needs to have a field, where the field name equals the name of the parameter.
- The parameter value must be provided as the field value for the corresponding field in the input.
- The type of the field must match the specified "Data360 Analyze Field Type" specified in the interface, which can be seen on the corresponding record of the "Structure Parameters" output on the Extract ERP Metadata node.
- There must only be one input record.
- Set these in the StructureParameters property in the following format:
- If the function requires any table import parameters:
- Provide these parameters via inputs to the node. Each table import parameter provided must have its own input. For each structure:
- Create an input "<TableName>".
- For each field in the table, the input needs to have a field, where the field name equals the name of the field in the table import parameter.
- The field value must be provided as the field value for the corresponding field in the input.
- The type of the field must match the specified "Data360 Analyze Input Field Type" specified in the interface, which can be seen on the corresponding record of the "Tables" output on the Extract ERP Metadata node.
- There can be any number of records for a Table import parameter.
- Provide these parameters via inputs to the node. Each table import parameter provided must have its own input. For each structure:
- By default, the node does not contain any outputs. However, if export parameters are to be extracted, you must create corresponding outputs on the node. If the function defines any scalar export parameters that you want to extract, construct an output "Scalar Parameters". All scalar parameters will be written to this output. To determine which scalar parameters will be written to the output, run the Extract ERP Metadata node for this function and investigate the "Scalar Parameters" output.
- If the function defines any structure export parameters that you want to extract, construct corresponding outputs on the node. For each of the structures to extract, create an output on the node "Structure Parameters_<StructureName>". The parameters for that structure will be written to this output.
A special case is the "RETURN" structure. All BAPIs will define a structure export parmeter "RETURN" which will contain information returned from the BAPI related to the success or otherwise of the function.
Since BAPIs follow a general approach of returning exceptions via the RETURN structure rather than throwing the exceptions directly, it is good practice whenever executing a BAPI to create the corresponding "Structure Parameters_RETURN" output.
- If the function defines any table export parameters that you want to extract, construct corresponding outputs on the node "<TableName>". The corresponding exported table will be written to this output. To determine which fields will be written to the output and which table outputs should be constructed, run the Extract ERP Metadata node for this function and investigate the "Tables" output.
- If the function you are executing is a BAPI function that is going to modify the SAP system (a creation, update or deletion function), then you need to set the CommitTransaction property to True in order for the operation to take effect in the system.
Generally, the BAPI is executed once using the scalar, structure and table input data as import properties to the SAP BAPI function. However, if you to provide multiple scalar, structure and table import property groups and have the node execute the BAPI multiple times, then you need to have an execution group identifier field in each of the scalar, structure and table inputs. This field is then used to ensure that the BAPI will be executed with the correct data from each input. See the properties ExecutionIdentifierField and OutputExecutionIdentifiers for more information.
Advanced configuration
For performance reasons, it is sometimes desirable to deactivate certain export parameters. If the export parameters are deactivated, they will not be returned through the SAP Jco interface and the function call can take significantly less time. To deactivate the parameters this can be done either via the node property DeactivateExportParameters or can be provided via an input pin. If using the DeactivateExportParameters property, specify the name of each export parameter to deactivate in its own line.
If specifying the export parameters to deactivate via an input pin, construct an input "Deactivate Parameters". The input must contain one string or Unicode field only. The value in this field for each records specifies the name of the export parameter to deactivate.
There is no one-to-one mapping from SAP data types to Data360 Analyze data types, therefore the following mapping tables can be used to determine which Data360 Analyze types map to which SAP data types. When an SAP export property is to be output to a Data360 Analyze field, the following table is used:
SAP data type | Data360 Analyze data type |
---|---|
BCD (P) | string String representation of integer |
BYTE (X) | byte[] Appears as "string" in Data360 Analyze metadata. Base64 encoded string of byte[] |
CHAR (C) | string character string returned in string format |
FLOAT (F) | double Pass through |
DECF16 (decfloat16) | string String representation of the floating point number |
DECF34 (decfloat34) | string String representation of the floating point number |
INT (I) | int Pass through |
INT_1 (b) | int Pass through |
INT_2 (s) | int Pass through |
NUM (N) | string Pass through |
STRING (g) | string Pass through |
XSTRING (y) | byte[] Appears as "string" in Data360 Analyze metadata. Base64 encoded string of byte[] |
DATE (D) | Date Pass through |
TIME (T) | Time Pass through |
When import properties are entered in the ScalarParameters or StructureParameters properties, these properties are entered in key=value pairs. The format required for the "value" part is defined in the following table.
SAP data type | Required format |
---|---|
BCD (P) | Standard floating point number. Example: bcdParam=123.45 |
BYTE (X) | Hex representation of bytes. Requires leading '0x' characters. Example: bytesParam=0x12CF |
CHAR (C) | character string Example: charParam=SomeVal |
FLOAT (F) | Standard floating point number. Example: floatParam=1234.542 |
DECF16 (decfloat16) | Standard floating point number. Example: decf16Param=123.45 |
DECF34 (decfloat34) | Standard floating point number. Example: decf34Param=123.45 |
INT (I) | Standard integer. Example: intParam=12345467 |
INT_1 (b) | Standard integer. Example: int1Param=10 |
INT_2 (s) | Standard integer. Example: int2Param=32000 |
NUM (N) | Standard integer. Example: numParam=12345467 |
STRING (g) | String. Example: stringParam=some string text |
XSTRING (y) | Hex representation of bytes. Requires leading '0x' characters. Example: xstringParam=0x12CF |
DATE (D) | Date in format: "CCYY-MM-DD". Example: dateParam=2012-12-23 |
TIME (T) | Time in format: "HH:MM:SS". timeParam=23:15:55 |
When mapping Data360 Analyze data from an input pin to an SAP data type in an import property, the situation is slightly more complex. The following table indicates how Data360 Analyze input types are mapped to SAP data types. If there is not an entry in the table present for a mapping, this means that the mapping is not supported. Where the table specifies that coercion is required to map the type, this coercion will only be performed if the CoerceInput property is set to True.
Data360 Analyze input type | SAP import parameter type mapping | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
boolean |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
int |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
long |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
double |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
date |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
time |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
datetime |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
string |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
unicode |
|
Error handling
The ERP Connector node has the following properties specifically designed to deal with error scenarios:
Property name | Property type | Required | Allowable options | Default | Description |
---|---|---|---|---|---|
CoerceInputData | boolean | No | N/A | false | Specifies whether or not input Data360 Analyze data should attempt to be coerced to SAP data types, when the mapping is not the preferred choice. (for example, Data360 Analyze boolean->SAP character. If coerce is used, this could export true as 'T'). |
UnmappableInputBehavior | choice | No |
|
Error | Action to take when Data360 Analyze input data cannot be coerced to an SAP data format. This can occur either because there is no valid coercion method, or because coerce is set to false. |
UnmappableOutputBehavior | choice | No |
|
Error | Action to take when SAP data cannot be mapped to a Data360 Analyze data type (for example, ABAPObject types) |
RecoverableErrorBehavior | choice | No |
|
Log | In some circumstances, a call to an SAP function can complete sucessfully, however the function will be returned with an exception list. This generally implies that processing can continue but that there were some errors. In the case of running non-BAPI RFMs, these errors will always be returned. This property specifies the action to take when such errors occur. |
Properties
FunctionName
Specify the BAPI RFM to be called. If not set, a "BAPI Name" input pin must be provided specifying the BAPI RFM to be called.
One of these must be set, and both cannot be set.
ScalarParameters
Specify scalar "import properties" to be provided to the specified BAPI function.
Newline separated set of key=value pairs specifying the SAP properties to be imported for the BAPI function.
Required format:
<param1Name>=<param1Value>
<param2Name>=<param2Value>
Blank lines and lines beginning with the hash character ('#') will be ignored.
Alternately, the "Scalar Parameters" input pin can be used to provide these SAP import properties.
Both can be used in conjunction however an error will be thrown if the same SAP property is declared in an Data360 Analyze property and in the "Scalar Parameters" input pin.
StructureParameters
Specify structure "import properties" to be provided to the specified BAPI function.
Newline separated set of key=value pairs specifying the SAP properties to be imported for a specified structure to the BAPI function.
Required format:
<structure1Name>.<param1Name>=<param1Value>
<structure2Name>.<param2Name>=<param2Value>
Blank lines and lines beginning with the hash character ('#') will be ignored.
Alternately, the "Structure Parameters_" input pins can be used to provide these SAP import properties.
Both can be used in conjunction however an error will be thrown if the same SAP property is declared in an Data360 Analyze property and in the "Structure Parameters_" input pins.
DeactivateExportParameters
Specify any export properties which are to be "deactivated".
Deactivating an export property means that no data for the property will be returned from SAP.
The name of each export property to deactivate is specified in its own line in the property value.
If these properties are to be specified via an input, these can be provided in an input "Deactivate Export Parameters"
CommitTransaction
Optionally specify whether or not the transaction is to be committed to the SAP system.
For a create/update/delete operation this is required for the changes to take effect in the system.
The default value is False.
CoerceInputData
Optionally specify whether or not the input of Data360 Analyze data should attempt to be coerced to SAP data types, when the mapping is not the preferred choice. (e.g. Data360 Analyze boolean->SAP character. If coerce is used, this could load true as 'T').
The default value is False.
ConnectionType
Specify the type of connection you are using. If you are not using a load balanced login, then you can connect to a Custom Application Server. Otherwise, you should select Group/Server Selection.
Choose from:
- Custom Application Server - Forms a connection to the specified SAP Application Server without using group load balancing for the logins.
- Group/Server Selection - Load balanced login using the SAP Group/Server mechanism.
A value is required for this property. For more information, see your SAP documentation.
When Custom Application Server is specified, the following properties are required:
- ApplicationServer
- SystemNumber
When Group/Server Selection is specified, the following properties are required:
- MessageServerHost
- Group/Server
- R3Name
In all cases, the following properties are required:
- User
- Password
- ClientNumber
ApplicationServer
Specify the name of the SAP Application server.
A value is required if ConnectionType is set to Custom Application Server.
Should not be set if ConnectionType is set to Group/Server Selection.
Group/Server
Specify the group of SAP application servers.
A value is required if ConnectionType is set to Group/Server Selection.
Should not be set if ConnectionType is set to Custom Application Server.
MessageServerHost
Specify the SAP message server host.
A value is required if ConnectionType is set to Group/Server Selection.
Should not be set if ConnectionType is set to Custom Application Server.
MessageServerPort
Specify the SAP message server port.
Optional if ConnectionType is set to Group/Server Selection.
Should not be set if ConnectionType is set to Custom Application Server.
SystemNumber
Specify the two-digit system number of the SAP system.
Called the "Instance Number" in the SAP Logon GUI.
Required if the ConnectionType is set to Custom Application Server.
R3Name
Specify the system ID of the SAP system.
Required if the ConnectionType is set to Group/Server Selection.
ClientNumber
Specify the three digit client number for the SAP system.
Called the "SystemID" in the SAP Logon GUI.
A value is required for this property.
RouterString
Specify the SAP Router String. In format: /H/<IP address where your SAP router is located>/S/<port for your SAP router>/H/<SAP server host ip address>/H/
User
Specify the name of the SAP user.
A value is required for this property.
Password
Specify the password for the specified user on the SAP system.
A value is required for this property.
ConnectionMethod
Optionally specify the method used to connect to the SAP system. Choose from:
- Direct Connection - Connection will be held for the duration of the node run.
- Pooled Connection - Connection will be taken and returned as needed during node execution.
The default value is Pooled Connection.
LargeDecimalAsDouble
Some of the SAP numeric types have a range, or precision which cannot be fully handled by the double type in Data360 Analyze.
Therefore, by default these will be output as a string to ensure that there is no loss of precision or accuracy.
However, if you want to have these output in numeric format, you can set this optional property to true.
This affects the SAP types: BCD (P) DECF16 (DECFLOAT16) DECF34 (DECFLOAT34)
ExecutionIdentifierField
If processing data from the node's input and the SAP function is to be executed multiple times, then this property needs to be set.
While for scalar and structure properties, there will only ever be 1 record per execution, for table input properties there could be multiple records required for a given execution.
Therefore, this property specifies a field in the input which identifies which execution the record belongs to. The field must be present on each of the Scalar, Structure and Table import inputs.
The function to be called cannot change, therefore this does not apply if providing the function via a node input.
For each function execution there must be at least one corresponding record in each of the node inputs for scalar, structure and table import properties. These must also be in order, meaning that if in the scalar properties input the first record contains an execution identifier "A", and in the second record an execution identifier "B", then the same ordering ("A", "B") must appear in all structure and table import property inputs.
OutputExecutionIdentifiers
Optionally specify whether or not the execution identifier field will be written to all of the node outputs.
This cannot be set to true if the ExecutionIdentifierField property is not set.
UnmappableInputBehavior
Optionally specify the action to take when Data360 Analyze input data cannot be coerced to an SAP data format. This can occur either because there is no valid coercion method, or because coerce is set to false. Choose from:
- Error
- Log
- Ignore
The default value is Error.
AdditionalParameterBehavior
Optionally specify the action to take when a scalar property, or a field within a structure property or table property exists in the node properties or node inputs but does not exist in the corresponding SAP BAPI function. Choose from:
- Error - The node will error
- Log - An entry will be written to the log for each occurrence of the problem, but the node will continue processing and not attempt to pass the properties to the SAP function.
- Ignore - No entry will be written to the log for each occurrence of the problem and the node will continue processing and not attempt to pass the properties to the SAP function.
The default value is Error.
UnmappableOutputBehavior
Optionally specify the action to take when SAP data cannot be mapped to a Data360 Analyze data type (e.g. ABAPObject types). Choose from:
- Error
- Log
- Ignore
The default value is Error.
RecoverableErrorBehavior
In some circumstances, a call to an SAP function can complete successfully, however the function will be returned with an exception list.
This generally implies that processing can continue but that there were some errors.
In the case of running non-BAPI RFMs (as an example, the RFC_READ_TABLE function), these errors will always be returned.
This optional property specifies the action to take when such errors occur. Choose from:
- Error - The node will error with the appropriate error message
- Log - The node will continue, however the errors will be written to the node log
- Ignore - Such errors are ignore.
The default value is Log.
PoolCapacity
Optionally specify an integer value specifying the pool capacity for the SAP system when using pooled connections.
The default value is 3.
See: http://docs.oracle.com/cd/E14571_01/doc.1111/e17656/jco_updates.htm
PeakLimit
Optionally specify an integer value specifying the peak limit when using pooled connections to the SAP system.
The default value is 10.
See: http://docs.oracle.com/cd/E14571_01/doc.1111/e17656/jco_updates.htm
Inputs and outputs
Inputs: Multiple optional.
Outputs: Multiple optional.