SAP JCo Account

In this article

Overview

You can use this account type to connect SAP Snaps with data sources that use SAP JCo account. The SAP JCo Account connects to an application server (ASHOST - Application Server Host). Learn more.

Ensure that your SAP instance is configured to work with the Snap Pack.

Prerequisites

None.

Known Issues

In version 4.28 (main14627), the SAP Snap Pack's bundled JCo library was upgraded to 3.1.4. Prior to that, version 3.0.6 was used.

In version 3.0.21 of SAP:

  • The default login behavior of the JCo library changed. 

  • The default value of property jco.client.snc_sso was changed from 0 to 1 (enabled).

The above changes will impact your pipelines if you use a username/password for RFC login. Login would work with the SAP Snap Pack versions before 4.28 but will fail with versions 4.28 or later.

The following workarounds can help mitigate the issues:

  • Add the jco.client.snc_sso JCo property with a value of 0 (disabled). If the account still fails with a "Name or password is incorrect (repeat logon)" error, even after adding this property, then reach out to the SAP team to enable the option "Permit Password Logon SAP GUI" for that specific user.

  • Select the Permit Password Logon for SAP GUI (User-Specific) in SAP portal.

The permit password option is effective only if the profile parameter snc/accept_insecure_gui is set to U. (Unsecure login is permitted for specific users).


Behavior change

The 4.38 GA main27765 Snap Pack version that included the SAP library upgrade introduced the following behavior change:
In JCo 3.1.4, if a decimal number couldn't be stored in a BCD field, it was rounded, resulting in a loss of precision. This behavior was removed in JCo 3.1.9, and instead, a conversion error is raised when this condition is detected.

Here's an example of a conversion error:

Cannot convert value '1035.1532177250149' from type java.math.BigDecimal to type BCD field ZINV_AMT in record ZINVENTORY

Note from SAP documentation mentioned in SAP Note 3446411 (Version: 4, Released On: 04.04.2024):

This happened at calling API method JCoRecord.setValue([name|index], BigDecimal) for a type BCD field or parameter, if the fraction part of the provided java.math.BigDecimal value had too many digits to fully fit into the BCD field. In this case, the provided BigDecimal value was unintentionally rounded instead of throwing an appropriate ConversionException for notifying the caller about the value not fitting into the BCD field. Hence, there might have been an unnoticed loss of precision.

Workaround:

Before passing the parameter value to SAP, modify the value by rounding or truncating to ensure it fits into the target BCD field.

Account Settings

sap-jco-account.png

 

  • Asterisk (*): Indicates a mandatory field.

  • Suggestion icon (): Indicates a list that is dynamically populated based on the configuration.

  • Expression icon ( ): Indicates whether the value is an expression (if enabled) or a static value (if disabled). Learn more about Using Expressions in SnapLogic.

  • Add icon ( ): Indicates that you can add fields in the fieldset.

  • Remove icon ( ): Indicates that you can remove fields from the fieldset.

Field Name

Field Type

Description

Field Name

Field Type

Description

Label*

 

Default Value: None
ExampleSAP JCo Account

String

Specify a unique name for the account instance.

 

Username

 

Default Value: N/A
Example: SAP User

String

Specify the SAP username.

For SAP SNC authentication, Username is not required for authentication through SAP SNC. If you define values in the Advanced JCo properties, leave the Username field blank.

Password

 

Default Value: N/A
Example: lkj(83@%_sd

String

Specify a password for the username.

Language*

 

Default Value: N/A
Example: EN

String

Specify the SAP language code corresponding to the jco.client.lang.

Client*

 

Default Value: N/A
Example: 800

String

Specify the SAP client to use corresponding to the jco.client.client.

Application server*

 

Default Value: N/A
Example: ec2-21-121-199-12.test.amazonaws.com

String

Specify the SAP ABAP application server address corresponding to the jco.client.host.

System number*

 

Default Value: N/A
Example: 01

String

Specify the system instance number of the SAP ABAP application server corresponding to jco.client.sysnr.

Peak limit*

 

Default Value5
Example: 5

String

Specify the maximum number of active connections that can be created simultaneously for a destination.

Connection pool capacity*

 

Default Value: N/A
Example: 20

String

Specify the maximum number of idle connections kept open by the destination. No connection pooling takes place when the value is 0.

Router String

 

Default Value: N/A
Example:

String

Specify the SAP Router string required for making connections to systems that are behind the SAP Router. An SAP router string contains a chain of SAP routers with their port numbers and has the form (/H/<host>[/S/<port>][/W/<password, if provided>])+. Learn more: Router Strings in SAP Help.

Enable trace

 

Default ValueDeselected

Checkbox

Activates the JCo traces to get more information that can help analyze the connection-related errors.

Reload Metadata on Validate

 

Default ValueDeselected

Checkbox

Select this checkbox to clear the JCo Metadata cache on the plex node before validating the account.

 

Advanced JCo Client Properties

Use this field set to define JCo parameters and respective values for SAP Secure Network Communications (SNC) authentication.

Property Name

 

Default Value: N/A
Example:

  • jco.client.user,

  • jco.client.passwd,

  • jco.client.cert1

String/Expression/Suggestion

Specify the name of the JCo parameter to be passed for SAP SNC authentication. Alternatively, select the parameter from the Suggestions dropdown list list.

 

Property Value

 

Default Value: N/A
Example:

  • johndoe

  • pass*w0rd#4

String/Expression

Specify the value for the JCo parameter for SAP SNC authentication. If you define the JCo parameters at a Pipeline-level, pass the pipeline parameter names as expressions.

Troubleshooting

Error

Reason

Resolution

ZINVENTORY field: ZINV_AMT type: BCD value: 1035.1532177250149, error_detail: Cannot convert value '1035.1532177250149' from type java.math.BigDecimal to type BCD field ZINV_AMT in record ZINVENTORY"}

Cannot convert value '1035.1532177250149'
from type java.math.BigDecimal to type BCD field ZINV_AMT in record ZINVENTORY

The rounding behavior in JCo 3.1.4 allowed processing "invalid" values by reducing the precision of the value at the back end. However, with JCo 3.1.9, this rounding of the values is not allowed and the value cannot be stored in the BCD field.

Modify the parameter value by rounding or truncating to ensure it fits into the target BCD field before passing it to SAP.

Pipeline failed to prepare.

SnapCcException: Not starting pipeline as pipeline has prepare error. "{57df90cf-a994-43ab-8caa-91b24d3e2300

Dependent native library not found or could not be resolved.

Could not initialize the account <account-name>.

  1. Copy the updated native library:

    • For Linux, copy the updated native library libsapjco3.so file to the /opt/snaplogic/ldlib folder on every node in the Snaplex.

    • For Windows, copy the updated native library sapjco3.dllfile to the C:\opt\Snaplogic\ldlib folder on every node in the Snaplex.
      Note: For Snaplexes with multiple nodes, make sure to install the library on every node.

  2. Restart all the nodes in the Snaplex.

Could not initialize account.

[com-snaplogic-snaps-sap-jcoaccount_2-438rc27664]:

Native library sapjco3 is an older version. The library found/opt/snaplogic/ldlib/libsapjco3.so has version "753.811", but the required version is at least 753.1324.

Ensure that the required native library is installed on each node of the Snaplex.

Caused by:** com.sap.conn.jco.JCoException: (180) JCO_ERROR_DESTINATION_DATA_INVALID: Destination <sap.domain.com> null was changed. Please refresh the destination instance using the JCoDestinationManager.

This error might result from using pooling parameters with values that are too low.

If you encounter the JCo error, increase the pooling parameters (Peak limit, Connection pool capacity).

 

 

Snap Pack History


Related Content