Symptom: Version: 2, Released On: 20.07.2016
Symptom: Version: 2, Released On: 20.07.2016
Symptom
1. When calling a function module in a backend system with codepage 6100 and the function module contains a structure
parameter with character-like fields (CHAR, NUMC, DATE, etc.), then the value of those fields is truncated to half its
length.
2. With NCo 3.0.16 and 3.0.17, performance has decreased compared to previous versions, in particular in networks with
high latency.
3. An NCo server program uses the parameter SNC_PARTNER_NAMES, and a backend system is refused access to the
server program, even though its SNC name is included in the SNC_PARTNER_NAMES value.
4. The RfcDestinationMonitor returns duplicate entries in its monitor list.
5. When providing default values for a parameter of data types like FLOAT, BCD, or DECF16, in a function module
definition in ABAP, the value is ignored and 0.0 is used instead.
6. It is not possible to establish an IPv6 connection to an ABAP system via message server, if SNC is used. The connection
simply fails.
Solution
Upgrade to at least NCo 3.0.18, which is available on the download page under https://service.sap.com/connectors -> SAP
Connector for Microsoft .NET -> Download SAP Connector for Microsoft .NET Version 3.0.
Choose the version for .NET 4.0, when using the .NET runtime 4.0, 4.5, 4.5.1, or 4.5.2, and the version for .NET 2.0, when
using the .NET runtimes 2.0, 3.0, or 3.5.
1. The codepage converter has been corrected to provide the correct result length, and the full byte result is transferred to
the backend system.
2. NCo now recognizes the capabilities of the backend system correctly during RFC handshake.
3. NCo now converts all SNC names into a unique binary representation (SNC ACL Key) and makes a binary comparison of
the keys.
4. When processing RfcCustomDestination instances for the RfcDestinationMonitor, it is made sure that no duplicate entry
is created.
5. NCo now uses a Culture independent parsing of the default values for decimal types in parameters.
6. NCo does now retrieve the correct list of application servers from the layer below. See note 2331363 for details.
In addition, the following enhancements have been added:
1. If an NCo client program calls a function module, and the function module attempts an RFC Callback (CALL FUNCTION
... DESTINATION 'BACK'), then NCo would formerly throw a NotSupportedException, which would a) cause an error
"Connection closed (no data received)" in the backend and b) potentially abort the client program, if the programmer
did not expect such an exception. Now NCo returns a SYSTEM_FAILURE with detail text "Callbacks from ABAP are not
supported" to the backend and throws an exception of type RfcAbapRuntimeException, which a client program needs to
be prepared for anyway.
2. When trying to use the saplogon.ini file for providing logon parameters via SapLogonIniConfiguration, NCo now
additionally checks the registry keys \\HKLM[HKCU]\SOFTWARE\SAP\SAPLogon\Options\ConfigFileOnServer for
the location of the saplogon.ini file. (This registry key has been introduced with SAPLogon 7.30 in order to provide the
ability to use one centrally maintained saplogon.ini file on a Windows Network Share instead of having to maintain
potentially thousands of files on every end-user's frontend machine.)
The locations, where NCo looks for the saplogon.ini file, are now as follows:
1. File given in environment variable SAPLOGON_INI_FILE
2. File SAP\Common\saplogon.ini in the current user's AppData directory
3. The %WINDIR% directory (usually C:\WINDOWS)
4. File given in registry key SAP\SAPLogon\Options\ConfigFileOnServer, where NCo checks both
HKEY_CURRENT_USER and HK_LOCAL_MACHINE, and both \SOFTWARE and \SOFTWARE\Wow6432Node
3. If an NCo program loads the DLLs sapnco.dll/sapnco_utils.dll not from the standard DLL search path, but for
example via the Shadow Copy Feature (e.g. if NCo is used in an Excel plugin), and this NCo program needs to process
function modules that have parameters of type DecFloat (ABAP types decfloat16/decfloat34 or DDIC types
DF16_RAW/DF34_RAW/DF16_DEC/DF34_DEC), then the program could abort with the error message "decfloat
shared library could not be loaded". In order to avoid this, the installation directory of NCo had to be added explicitly to
the PATH. Now NCo will always try to load the library libicudecnumber.dll from its own installation directory.
Note: this is achieved via the Win32 Kernel API SetDllDirectory(). If this causes unwanted side-effects in your program,
so that maybe other required DLLs can no longer be found, you can turn off this feature using the general configuration
parameter LoadDecFloatLibFromInstallDir=false.
4. The exceptions of NCo are now offering an ErrorCode property, in which some more detailed information about the
cause for the exception is encoded. This allows programmatic interpretation of this concrete exception without parsing
the message text, which is in particular useful, when error info of low level components is forwarded by the NCo layer.
See the NCo3 API documentation for details about the available codes.
5. With the property GeneralConfiguration.SocketBufferSize, it is possible to configure the socket buffer size for all sockets
used by NCo. See the NCo3 API documentation for details. In addition, the GeneralSettings section in app.config has
been extended to support socketBufferSize.
6. NCo now sends CPIC keep alive pings in regular time intervals to the SAP gateway during long running RFC clientc calls
in order to prevent firewalls and other network devices from closing the used underlying TCP/IP socket after some
low level network connection idle timeout, although the respective RFC call is still being executed and processed at the
target AS ABAP back-end system. Additionally, this new CPIC keep alive ping feature also helps with promptly detecting
network errors and the loss of the RFC communication partner, so that an appropriate RfcCommunicationException can
be thrown in such cases.
7. Starting with NCo 3.0.18, Windows 10 is a supported platform for the .NET 40 runtime variants.
Software Components
Software Component From To And subsequent