Sei sulla pagina 1di 16

Release Notes for SAP .

NET Connector (NCo)


==========================================
Please read the license terms and release notes carefully.
--------------------------------------------------------------------------------

This product is property of SAP AG. You are granted usage of this product in
your development environment. Deploying this product with your application in a
production environment is only valid with the sufficient amount of SAP Software
Licenses according to the terms and conditions of SAP Software.

THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT.
SAP AG further does not warrant the accuracy or completeness of the information,
text, graphics, links or other items contained within these materials. SAP AG
shall not be liable for any special, indirect, incidental or consequential
damages, including without limitation, lost revenues or lost profits, which may
result from the use of these materials. The information in this software is
subject to change without notice and does not represent a commitment on the
part of SAP AG in the future.
--------------------------------------------------------------------------------

Release Notes 3.0.13
* Bugfix: element type compatibility
An RfcTypeConversionException was thrown when setting a structure as a field,
parameter,
or attribute value even though the respective data types are the same. This is
sue happened
after clearing or loading metadata and when retaining a structure from the tim
e before
loading or clearing and setting it on a container created after clearing or lo
ading.
* Bugfix: saplogon.ini parameters
When using saplogon.ini as source of logon parameters, entries of the form [Or
igin]=MS_SEL_SERVER
did not work correctly, resulting in the error message "group name too large".
* Bugfix: loss of trailing white space
Trailing white space characters other than SPACE (0x20) disappeared from value
s of CHAR fields.
* Bugfix: SNC connectivity
When a backend was configured to allow SNC connections only via the 48XX ports
, NCo failed to
establish the connection.
* Bugfix: Metadata lookup in connection with custom destinations
When using custom destinations without one or more designated repository desti
nations and changing
backend users/passwords, metadata lookup may have failed.
* Bugfix: Destination configuration
The default IDestinationConfiguration implementation, which is using app.confi
g did not support
the following configuration parameters for destinations: REPOSITORY_USER, REPO
SITORY_PASSWD,
USE_SYMBOLIC_NAMES, and ALIAS_USER
* Enhancement: RfcServerContextInfo
RfcServerContextInfo was enhanced to expose the RfcServer instance which is pr
ocessing the incoming
request as property Server.
* Enhancement: General configuration
With the property GeneralConfiguration.DisableWily it's possible to disable
Wily for the NCo application. See API documentation for details.
In addition, the GeneralSettings section in app.config has been extended
to support disableWily.
* Enhancement: General configuration
With the property GeneralConfiguration.CPICMaxConnections it's possible to
configure the maximum number of CPIC connections for the NCo application.
See API documentation for details.
In addition, the GeneralSettings section in app.config has been extended
to support cpicMaxConnections.
* Enhancement: General configuration
With the property GeneralConfiguration.CPICKeepAlivePingInterval it's possible

to configure the interval for RfcServer connection keep alive messages.
See API documentation for details.
In addition, the GeneralSettings section in app.config has been extended
to support cpicKeepAlivePingInterval.
* Enhancement: Destination Management
Class RfcDestinationManager now offers a static method IsDestinationConfigurat
ionRegistered to check
whether a destination configuration (other than the default configuration read
from app.config) was
registered. See API documentation for details.
* Enhancement: Server Management
Class RfcServerManager now offers a static method IsServerConfigurationRegiste
red to check
whether a server configuration (other than the default configuration read from
app.config) was
registered. See API documentation for details.
--------------------------------------------------------------------------------

Release Notes 3.0.12
* Bugfix: tracing
Setting trace level 2 or higher (or trace level PublicAPI) in connection
with TRfc incurred a NullReferenceException.
* Bugfix: time and date values
Time/date conversion errors caused by the Japanese calendar have been fixed
by (explicitly) using the invariant culture (and hence the Greogrian calendar)
at all times.

* Bugfix: runtime
It could happen that even function invocations have been canceled running
within sessions that are still alive.
* Bugfix: Memory consumption
In applications that used many short-lived threads, a memory leak occurred due
to
the fact that thread local storage memory in unmanaged code was not freed when
the thread
was released.
* Improvement: function serialization performance
Performance issues notable when transmitting large amounts of structured
data in exporting, importing or changing parameters that contain single fields
with a
major part of this data amount.
* Improvement: initial field values
Validity checks for strings representing initial date/time are now
less stringent to take into account ABAP's lax treatment of such values
* Enhancement: data type conversions
Fields, parameters, or attributes with ABAP data type STRING or CHAR
now have setters and getters for integer types (Byte, Int16, Int32, and Int64)
.
Consult the API documentation for details.
--------------------------------------------------------------------------------

Release Notes 3.0.11
* Bugfix: Logon Language
The conversion routine that converts ISO into SAP language wrongly relied
on upper-case language codes, but was given, and tried to work with, lower-cas
e codes.
* Bugfix: Delta Manager
An RFC client request failed with an "RfcAbapRuntimeException: Invalid Delta M
anager
object ID (2 <=> 1)". On ABAP side a shortdump CALL_FUNCTION_OBJECT_ID with th
e same
error message is recorded in ST22. Reason for thsi was that the NCo client was

trying to execute a stateful sequence of RFMs, some of which reused the same i
nternal
table. The stateful connection broke down - e.g. because of a network error -
but the
client tried to continue the sequence. NCo took a fresh (stateless) connection
for the
following requests, but reused the delta manager object IDs from the stateful
connection.
This led to an object ID mismatch in the ABAP backend system.
* Bugfix: sapogon.ini integration
SapLogonIniConfiguration accidentally interpretes the saplogon.ini entry
as being of type "message server logon". This leads to a mismatch of the requi
red
logon parameters.
* Bugfix: configuration
The configuration property REPOSITORY_USER was not working as desired, the
value had been simply ignored even for repository connections.

* Bugfix: CPIC connection management
Hanging server connections caused by a bug in the CPIC layer has been fixed
as described in note 1791529. The relevant patch level is included in NCo 3.0.
11.
* Improvement: Performance tracing
Introduction of flag for performance tracing as additional possibility
for simple trace analysis.
* Improvement: Monitoring
Enhancements of destination monitoring. See API documentation
of RfcDestinationMonitor for details.
* Improvement: Monitoring
Introducing repository monitoring. See API documentation of
RfcRepositoryMonitor for details.
* Improvement: Configuration
A designated timeout for idling repository connections was introduced.
See API documentation of RfcConfigParameters.RepositoryConnectionIdleTimeout f
or details.
* Improvement: Configuration
Loading the default configuration has now a built-in recovery mechanism
in case a ConfigurationErrorsException occurs while loading. See API documenta
tion of
RfcConfigParameters for details.

* Enhancement: Security
It is now possible to pass passwords as SecureString to a destinaton. For
that an implementation of IDestinationConfiguration can set the password into
the
returned RfcConfigParameters instance. See API documentation of
RfcConfigParameters.SecurePassword for details.
--------------------------------------------------------------------------------

Release Notes 3.0.10
* Bugfix: binary incompatibility in public API
After applying NCo 3.0.9, a System.MissingMethodException with the text
"Method not found: 'System.String SAP.Middleware.Connector.RfcDestination.get_
Name()'"
was thrown when trying to use an existing NCo application with it. However,
when compiling the application again, everything works fine. This was caused b
y some
source code compatible change that was not binary compatible: The public read-
only
property Name was changed to be a public read-only field. In order to fix the
issue,
the source code compatible change was adjusted so that it is now binary compat
ible
again.
--------------------------------------------------------------------------------

Release Notes 3.0.9
* Bugfix: Replacing expired SSO2 tickets
Expired SAP SSO2 tickets could not be replaced with valid tickets without
rendering the affected destinations invalid, and hence losing the entire conne
ction
pool as well as open connections, because there was no explicit mechanism for
"on the fly" replacement of expired tickets and implicit mechanisms like used
in JCo were simply not possible due to the .NET implementation of Dictionary.
With patch level 3.0.9, a mechanism for replacing expired SSO2 tickets was add
ed
that leaves destinations and their connections intact. See API documentation o
f
RfcConfigParameters.UpdateSSO2Ticket and IDestinationConfiguration.GetParamete
rs
for details.

* Bugfix: Interchangeable metadata
Data containers (tables, structures, or ABAP objects) had been rejected if the
y
were taken from a repository that is different from the repository of the targ
et
container, even though the metadata has been identical (but from different
repositories). NCo3 employed instance equality to check for compatibility of
data containers, which implied that identical metadata (taken from the same
repository) has been required to pass the compatibility check.
The compatibility check of data containers is now less restrictive and also
admits data containers with equivalent metadata that do not necessarily have
to originate in the same repository.
* Improvement: destanation configuration exceptions
When not specifying required configuration parameters, e.g. the SYSID, when
trying to connect via load balancing, a very low level exception had been thro
wn,
in which it was not immediately clear, why the connection could not be
established. Now, there are early checks and in case of a configuration issue,
a descriptive RfcConfigurationException is informing in detail about the
configuration issue.
--------------------------------------------------------------------------------

Release Notes 3.0.8
* Bugfix: destination configuration
Changing the trace level of a destination by modifying the configuration of
the destination had no effect on property TraceLevel for that destination,
even when a configuration update event was fired.
* Bugfix: destination configuration
Using the connection parameter CharacterFaultIndicatorToken incurred an
RfcInvalidParameterException, as the 4-digit string value was attempted to be
parsed as a 1-byte integer.
* Bugfix: repository persistence
Deserialized table metadata (using RfcRepository.Load) and all containers
using it might exhibit iconsistent behavior; e.g., (table) parameter values
might be empty where a non-empty table was expected, because the table
metadata obtained through RfcRepository.Load was not properly set up.
* Bugfix: server runtime
In the server case, received parameters might not be deserialized (e.g., the
TID transmitted in the context of ARFC_DEST_CONFIRM was an empty string). This
issue was hard to reproduce since it was happening rarely and randomly.
Typically, the issue was most likely to occur if there was only one server
connection (i.e., REG_COUNT=1).
* Bugfix: destination management runtime
Destinations were replaced (shown as REPLACED in trace files) even though the
destination configuration did not change. However, critical parameters that
warrant a destination replacement were provided by the configuration in a
non-normalized manner; for instance, SYSNR="5" (instead of SYSNR="05").
Those were considered modified, as the destination always holds normalized
values, whereas the configuration may provide values that were not normalized
and hence different.
* Bugfix: SAPRouter string handling
When trying to establish a connection to an ABAP system, which is configured
to use load balancing, the connection shall be established via a SAPRouter, an
d
the saprouter string has a trailing /H/, establishing the connection failed.
* Enhancement: Support for saplogon.ini
Applications that want to reuse logon parameters maintained in a saplogon.ini
file on the current host can do so now. For a complete documentation of the
new feature see the API documentation of class
SAP.Middleware.Connector.SapLogonIniConfiguration.
* Enhancement: new property on IRFCParameter
Introduction of property IRfcParameter.DefaultValue. See API documentation
for details.
* Enhancement: logging
The dev_nco_rfc.log file entries were enhanced to contain the process ID so
that it's easier to correlate them with the corresponding trace files.
* Enhancement: logon procedure
Improved logon procedure for languages available in Unicode SAP systems only.
Some languages like Armenian, Georgian, Vietnamese, Macedonian and many
others are available in Unicode SAP systems only. If logging on with such a
language to an SAP ABAP backend system, it was mandatory to specify an
additional destination configuration parameter like RfcConfigParameters.Codepa
ge
(CODEPAGE) which was indicating a unicode communication type, otherwise such
logons failed with an RfcLogonException showing the error message "Select
one of the installed languages" although the appropriate language was installe
d.
This logon procedure has been improved so that it does not require any
additional communication code page destination property anymore in this case.
The unicode communication type is now automatically detected and used for
logging on with such new SAP system language keys. Please see note 895560
(https://service.sap.com/sap/support/notes/895560) for details on languages
that are only available in Unicode SAP systems.
* Enhancement: DNS caching configuration
With the new properties GeneralConfiguration.DNSCacheTTL and
GeneralConfiguration.DNSNegativeCacheTTL it is possible to configure the
behavior of the DNS caches in NI. See API documentation for details.
In addition, the GeneralSettings section in app.config has been extended
to support dnsCacheTTL and dnsNegativeCacheTTL.
* Enhancement: CPIC tracing
Instead of having to set the environment variable CPIC_TRACE for turning on
CPIC trace, NCo now offers GeneralConfiguration.CPICTraceLevel. Thus, it is
possible to adjust the CPIC trace level at runtime without having to restart
the executable. See API documentation for details. In addition, the
GeneralSettings section in app.config has been extended to support
cpicTraceLevel.
--------------------------------------------------------------------------------
Release Notes 3.0.7
* Bugfix: monitoring
RfcDestinationMonitor.GetConnectionsData() always returned an empty list. Now,

all RfcConnectionData belonging to the destination are returned in a list.
* Bugfix: repository - dynamic metadata lookup
When using RFC_METADATA_GET for roundtrip optimization, the metadata might be
faulty (e.g., character fields had the wrong length). This happened
exclusively in connection with parameter metadata in the case when the type of
the parameter was a predefined type (defined through a predefined field of a
structure).
* Bugfix: connection management
Peak connection limit was exceeded although the number of active connections
did not exceed that limit. This happened after communication failures
(RfcCommunicationException), because those connections were not removed from
the list of active connections. Eventually, that list is clogged up with
invalid connections.
* Bugfix: communication runtime
When not configuring the language in a destination, English was used instead
of the default language as configured for the corresponding user in the
backend. In case there is no language provided through the configuration,
the NCo runtime internally added English as configured value for the language,

which was not correct.
* Bugfix: communication runtime
An ArgumentOutOfRangeException with the message "Length cannot be less than ze
ro"
was thrown when invoking a function module a function module that is implement
ed
on top of VM container, i.e. a function module implemented in Java,
e.g. CFG_API_CREATE_CONFIG. The call stack of the exception was similar to the
one
below
Parameter name: length
at System.String.InternalSubStringWithChecks(Int32 startIndex, Int32 length,
Boolean fAlwaysCopy)
at SAP.Middleware.Connector.RfcConnection.ReadRfcCDestination(Int32 length)
at SAP.Middleware.Connector.RfcConnection.ReadUpTo(RFCGET readState, RfcFunc
tion function, RFCID toRid)
at SAP.Middleware.Connector.RfcConnection.RfcReceive(RfcFunction function)
at SAP.Middleware.Connector.RfcFunction.RfcDeserialize(RfcConnection conn, I
RfcIOStream stream)
at SAP.Middleware.Connector.RfcFunction.RfcCallReceive(RfcConnection conn, I
RfcIOStream stream, RFCID rid)
at SAP.Middleware.Connector.RfcFunction.RfcCallReceive(RfcConnection conn)
at SAP.Middleware.Connector.RfcFunction.Invoke(RfcDestination destination)
Now, NCo was made aware of the slightly different behavior of the VMC runtime
that caused this failure.
* Improvement: Monitoring
Assigning a value of 0 to environment variable Cor_Enable_Profiling did not
disable Wily (and therefore did not prevent the creation of a possibly unwante
d
client passport handler), because only 0x0 was accepted as valid value.
Now, various representations of the value 0 are recognized.
* Bugfix: date serialization
Initial dates transmitted via xRfc as four spaces, a hyphen, two spaces,
a hyphen, and two spaces, incurred a conversion error.
* Bugfix: multithreading with RfcDestinationManager
One or more NullReferenceException exceptions with message
"Object reference not set to an instance of an object" were thrown when
calling RfcDestinationManager.GetDestination or RfcRepostory.CreateFunction
concurrently from multiple threads. RfcDestinationManager.GetDestination
was changed to be implemented fully thread-safe.
* Bugfix: server runtime
Server restart was not working as expected. A server remained disconnected,
even if a registration with the gateway should work. The restart check has
been improved so that server restart is working as expected.
* Enhancement: configuration enhancement
The use of roundtrip optimization can be configured in the GeneralSettings
section via attribute useRoundtripOptimization. Values "on" or "true" switch
on roundtrip optimization for all repositories, whereas "off" or "false"
switch it off. (These string values are case-insensitive). In the absense
of the attribute (or the entire section), or if any other value is supplied,
the backward compatible default behavior is applied. See API documentation
of RfcRepository.UseRoundtripOptimization for details.
* Enhancement: security configuration enhancement
The new configuration parameter SNC_SSO for destinations allows turning off
the SSO behavior of SNC setups. More details are available in note 1701870:
https://service.sap.com/sap/support/notes/1701870.
--------------------------------------------------------------------------------
Release Notes 3.0.6
* Improvement: SystemAttributes
If the backend is down while someone tried to retrieve the SystemAttributes
from the corresponding destination for the first time, the attributes remained
empty forever, leading to System.ArgumentNullExceptions when trying to access
them. Now, NCo updates fields containing null on later access.
* Bugfixes: Multithreaing and NullReferenceExceptions
In a multi-threaded scenario a NullReferenceException might erratically occur
when starting parallel sessions through RfcSessionManager.BeginContext (and
using the default session provider) or in RfcDestinationManager.GetDestination
().
To avoid those race conditions, some internal methods have been synchronized.
* Enhancement: initial values for fields
When trying to set a byte array containing only 0 bytes to a DATE or TIME fiel
d,
a RfcTypeConversionException occured, as this value was conisdered invalid.
Now, 0 bytes are no longer considered an invalid date or time. Instead they ar
e
considered to signify 'initial' which translates to "00000000" or "000000",
respectively.
* Bugfix: configuration update for RfcConfigParameters.SAPSSO2Ticket
Existing destinations were not affected by modification of configuration param
eter
RfcConfigParameters.SAPSSO2Ticket, regardless of whether the registered destin
ation
configuration fires a change event or not. This was due to a bug in the handli
ng
of this parameter: RfcConfigParameters.SAPSSO2Ticket was not treated as a
parameter that should trigger a replacement of destinations (i.e., invalidatin
g
existing destinations and creating new ones in their place).
As a matter of fact, no action was taken whenever that parameter changed.
* Bugfix: SAPGUI with RFC
When making RFC with SAPGUI dialog by using a destination with USE_SAPGUI=1 (o
r 2),
the RFC call failed with an RfcAbapRuntimeException "Starting of SAPGUI failed
".
In SAPGUI, an error message like "partner '192.168.13.75:3200' not reached.
WSAEWOULDBLOCK: resource temporarily unavailable" was also shown.
If there exists a NAT-like firewall between the frontend and the SAP backend
system, the SAP application server may have an internal IP-address for accessi
ng
the server behind the firewall and an external IP-address for accessing the
server from outside. When trying to start the SAPGUI session during setting up
an
RFC connection with SAPGUI dialog, NCo 3.0 mistakenly passed the internal
IP-address, instead of the external IP-address, to the SAPGUI and this caused
the
SAPGUI to fail to reach the application server. NCo now ensures to pass the
external address, under which it knows the partner system, to the SAP GUI star
tup
call so that the SAP GUI succeeds to establish the connection.
* Bugfix: CPIC layer fix
In certain situations, very often in conjunction with the use of VPN, one or m
ore
of the following exceptions are thrown:
a) System.FormatException with different messages.
b) SAP.Middleware.Connector.RfcCommunicationException with a message like th
is:
LOCATION CPIC (TCP/IP) on local host with Unicode
ERROR client with wrong appc header version rejected
TIME Wed Dec 07 23:15:31 2011
RELEASE 720
COMPONENT CPIC (TCP/IP) with Unicode
VERSION 3
RC 246
MODULE r3cpic.c
LINE 8554
DETAIL client version 6, gateway version 120 (165.130.193.210/3385)
COUNTER 2
The bug causing this in the underlying CPIC library has been fixed. Find more
details in note 1664732: https://service.sap.com/sap/support/notes/1664732.
* Bugfix: destination management
Getting a destination via RfcDestinationManager.GetDestination using
RfcConfigParameters a second time with modified parameters (but with the same
name) returned the destination with the original outdated parameters. Now, the
correct set of parameters is returned.
* Bugfix: destination configuration RfcConfigParameters.MaxPoolWaitTime (MAX_POO
L_WAIT_TIME)
Setting the parameter MAX_POOL_WAIT_TIME (or RfcConfigParameters.MaxPoolWaitTi
me)
had no effect. The value of MaxPoolWaitTime is now taken into account.
*Note* that after the fix MaxPoolWaitTime is measured in milliseconds, which
is also reflected by the API documentation.
* Bugfix: connection monitoring
When using RfcConnectionMonitor.GetConnectionsData no idle connections (retain
ed
for possible later use) were returned.
Now, besides active (stateless) connections and stateful connections, also "po
oled"
connections (i.e., connections that are idle but retained for later use) are
returned. Note that property State as well as the associated int constants
of class RfcConnectionData have been deprecated. We recommend to replace State
with property CurrentState (which makes use of an enumeration) and discontinue
the use of the int constants as soon as possible.
* Bugfix: CPIC tracing
The CPIC trace file generated by NCo 3.0 processes didn't contain CPIC functio
n
calls nor the CPIC payload regardless of CPIC trace level, because the CPIC
tracing functionality of CPIC library was suppressed for client connections.
* Enhancement: repository persistence
Repositories (metadata caches) can be saved to and loaded from a resource of y
our
choice. That way, startup time of an application can be reduced significantly
if expensive metadata lookup is involved. However, keeping the saved
repositories up-to-date is the application's responsibility.
* Enhancement: destination management
RfcDestinationManager.GetDestination(string) could solely be used if an
IDestinationConfiguration was present. Now this method can also be used to
retrieve a destination created with RfcConfigParameters, effectively getting
the destination by its name without the necessity to set up RfcConfigParameter
s
containing the name only.
* Enhancement: WMI provider
In the .NET 4.0 variant, NCo 3.0 now offers a WMI data provider that can be
used for monitoring and analysis purposes. Details can be found in the
documentation.
--------------------------------------------------------------------------------
Release Notes 3.0.5
* Bugfix: Crash introduced with 3.0.4
The .NET application using NCo simply terminated with the following exception:
System.InvalidOperationException was unhandled
Message: Queue empty.
at System.ThrowHelper.ThrowInvalidOperationException(ExceptionResource resour
ce)
at System.Collections.Generic.Queue`1.Peek()
at SAP.Middleware.Connector.RfcConnectionPool.RemoveTimedoutConnections(DateT
ime now)
at SAP.Middleware.Connector.RfcConnectionPool.CheckConnectionTimeout(Object s
tate)
at System.Threading._TimerCallback.TimerCallback_Context(Object state)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext,
ContextCallback callback, Object state
)
at System.Threading._TimerCallback.PerformTimerCallback(Object state)
This happened in the timeout checker, when the pool was getting empty.
Unfortunately, the timeout checker routine did not catch all exceptions so
that the Thread running that timer crashed and with it the whole .NET
application. The timeout checker was adjusted to check the pool state without
causing exceptions, and in addition it catches all exceptions that might occur
due to error situations to avoid further undesired terminations of the NCo
application.

--------------------------------------------------------------------------------
Release Notes 3.0.4
* Bugfix: configuration with app.config
When specifying a GenerelSettings section in the app.config file, but
not the parameter traceDir in it, the application aborted with the
following error message:
Could not initialize configuration: System.ArgumentNullException: String
reference not set to an instance of a String.
Parameter name: source
at System.Globalization.CompareInfo.IsSuffix(String source, String suffix
,
CompareOptions options)
at System.String.EndsWith(String value, StringComparison comparisonType)
at System.String.EndsWith(String value)
at SAP.Middleware.Connector.RfcTrace.Initialize(String directory,
Boolean perThread, String encoding)
The configuration parser was enhanced to accept such a valid configuration.
* Bugfix: server runtime
An attempt to obtain the function list from a server (e.g. by using
Extras/Function List for a destination in SM59) incurred a
RfcInvalidParameterException as the implementation of RFC_DOCU to gain
access to a non-existent parameter "RFCDOCU" instead of "DOCU".
* Bugfix: serialization and compression
When sending documents to an NCo Server, an exception like
"RfcSerializationException: End mark of RFCID.NotUsed (0x0000) not found."
occured. The documents were sent concurrently via tRFC and produced a heavy
load in a server running several threads. The documents required compression
due to their size. When exchanging data between managed and unmanaged code
sections data could get lost if the garbage collector re-arranged memory
due to heap fragmentation. Thus, the decompressed tRFC datastream started
with many 0 bytes, which eventually resulted in the RfcSerializationException.
Now, the code which is exchanging the data between managed and unmanaged code
sections was adjusted to react correctly in case the garbage collector
re-arranged memory due to heap fragmentation.
* Bugfix: SAPRouter string handling
When trying to establish a connection to an ABAP system, which is configured
to use load balancing and the connection shall be established via a SAPRouter,

an exception occurred without any detail message.
* Bugfix: WCF service support
If the .NET application runs as a WCF Service, the initialization of NCo
aborted with the exception
"Could not initialize configuration:
System.ArgumentException: exePath must be specified when not running inside
a stand alone exe.
at System.Configuration.ConfigurationManager.OpenExeConfigurationImpl
(ConfigurationFileMap fileMap, Boolean isMachine,
ConfigurationUserLevel userLevel, String exePath)
at System.Configuration.ConfigurationManager.OpenExeConfiguration
(ConfigurationUserLevel userLevel)
at SAP.Middleware.Connector.RfcConfigParameters..cctor()"
This happened, because within a WCF Service, the application configuration nee
ds
to be looked up differently, even differently compared to ASP .NET where
typically a HttpContext is available, which is not the case for WCF.
Hence, NCo did not recognize to run within a WCF Service context, and therefor
e
could not look up the application configuration. Now, NCo checks whether a
VirtualPathExtension exists, assumes in this case to run within a WCF Service,
and opens the web configuration using the virtual path.
*Note:* the solution for this problem is available only in the .NET 4.0 varian
t
of NCo 3.0.4. If you are using the .NET Framework 2.0, you can, as a workaroun
d,
add the following parameter to the configuration of your WCF Service:
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
</system.serviceModel>
* Bugfix: function serialization
Invoking function modules involving basXML may incur a RfcSerializationExcepti
on
or other kinds of exceptions in conjunction with a RABAX on the ABAP side, if
the exchanged data amount was exceeding a certain (rather small) threshold.
The basXML parser and renderer were fixed to deal with larger amounts of data
correctly.
* Enhancement: tracing
RFC trace can now be activated by setting the environment variable RFC_TRACE.
Valid values are the same as for the app.config parameter "defaultTraceLevel":

see section "General Configuration Parameters" in Appendix A of the NCo
Programming Guide.
* Enhancement: Delta management
Support for delta management for table paramaters has been introduced for clie
nt
communication. Thus, the performance is improved dramatically for certain use
cases, in particular if the table sent to the ABAP system is hardly modified o
r
not at all.
* Enhancement: Support for special destination "BACK".
"BACK" is only usable within a NCo server function and allows to execute a
function module in the context of the caller and simply re-uses the connection
over which the server function has been received. The newly introduced constan
t
RfcDestination.BACK can be used to retrieve the destination object instance.
* Enhancement: Supportability
A default passport handler has been introduced to be used in connection with
Wily (code instrumentation). If Wily is installed and enabled (environment
variable Cor_Enable_Profiling=0x1) and no passport handler was set by the
application, the Wily-specific passport handler is active and reads a passport
from the thread local data slot named "SAP-PASSPORT-OUTBOUND" (if available),
making it available through IRfcClientPassportHandler.OnCallStart. Conversely,
IRfcClientPassportHandler.OnCallEnd puts the passport into the named data slot
"SAP-PASSPORT-OUTBOUND-LASTUSED".
--------------------------------------------------------------------------------
Release Notes 3.0.3
* Bugfix: IMPORTING/EXPORTING parameter handling
Older ABAP releases allow IMPORTING and EXPORTING parameters with the same nam
e,
thus emulating CHANGING parameters. However, NCo threw an
RfcInvalidParameterException in such a case, because it did not did not accept

duplicate parameter names. Now, such situations are treated like a single
CHANGING parameter.
* Bugfix: server function runtime
When trying to use the repository inside a server function implementation via
RfcServerContext.Repository, the program crashed with a
System.StackOverflowException. The property has been fixed not to refer to
itself again.
* Bugfix: Exception handling
If one or more logon parameters were missing when trying to connect to a SAP
ABAP system, an RfcAbapRuntimeException instead of an RfcLogonException is thr
own.
* Bugfix: Server tracing
RFC servers always used the global trace level, not the server-specific trace
level defined in the corresponding configuration parameters.
* Enhancement: initial values for fields
An RfcTypeConversionException was thrown when trying to set a byte array
consisting of "zeroes only" to a BCD or NUM field, as this value was considere
d
invalid. However, it can be seen as valid initial value, and therefore NCo
now accepts it as one.
* Bugfix: destination configuration - timeouts
When using the destination configuration parameters IdleTimeout/IDLE_TIMEOUT
or IdleCheckTime/IDLE_CHECK_TIME, it seemed as if random values were used
for them. This happened, because they had accidentally been treated as global
parameters instead of as per-destination parameters. Thus, all destinations
had been using the parameters of the destination that had been adjusted last.
Moreover, when using IdleCheckTime/IDLE_CHECK_TIME a NullReferenceException
could occur. Now, this has been corrected.
* Bugfix: compression
When sending very large IDocs to an NCo Server, an exception like
"RfcSerializationException: End mark of RFCID.######## not found." was
occurring. Examples for ####### were "TableContLZ (0x0305)",
"NotUsed (0x0000)", or "XMLData (0x3C05)". NCo's decompression logic was
redesigned to avoid these situations.
* Bugfix: RfcServer state
When an RfcServer received an RfcCommunicationException with the information
that the connection to partner is broken, because the network connection to
the gateway was lost, and this happened for all existing connections,
the server state remained "Running", instead of turning its state to "Broken".
After the network was available again, the server connection did still no
longer work. The server state changes and restart mechanism were adjusted to
recognized such situations. Now, it is recognized when all connections are
dead, and the state is changed to "Broken". This is logged as an info message
in dev_nco_rfc.log. Another log entry is written as soon as the server has
recovered and returned to state "Running" again.
* Enhancement: Tracing
The bgRFC Unit IDs in NCo traces and the ones available in bgRFC monitors on
ABAP side did not match. Nevertheless, bgRFC worked fine as this was only
caused by the difference how the Unit IDs were traces on both ends. Now,
the traced unit IDs match.
* Enhancement: Data Binding
DataBinding support for structured types. Find more details in the programming
guide in chapter "Using Data Binding in Windows Forms"
* Enhancement: new API methods
- new constructors for RfcAbapRuntimeException and RfcAbapMessageException.
- property TraceLevel in RfcServer class.
- method SetDestination() in RfcCustomRepository class.
Find details in the API documentation.
--------------------------------------------------------------------------------
Release Notes 3.0.2
* Enhancement: support for bgRFC units
bgRFC support is introduced with NCo 3.0.2. Check the API documentation for
details.
* Enhancement: codepage converters
Using special SAP codepages, such as blended codepages, did not work: An error

message like "Invalid SAP Codepage 6110" was displayed. For other codepages
the SAP special characters had been destroyed during conversion. This happened

because Blended codepages (Starting with a 6 in the 4-digit name, e.g. 6110)
are not supported by the standard codepage converters of .NET. The same is
true for SAP special characters. SAP-specific codepages are now supported by
integrating SAP codepage converters. Through an additional configuration
parameter - RfcConfigParameters.UseSAPCodepages (USE_SAP_CODEPAGES) - a list
of codepages can be specified for which SAP converters are employed instead
of the .NET converters. Check the API documentation for details.
* Bugfix: server configuration events processing corrected
Despite updating a server configuration and firing a change event an affected
(running) server did not react properly and did not adjust itself
automatically as expected due to a bug in event processing.
* Bugfix: stateful server behavior
After setting all connections of a server to stateful the server could no
longer be reached by additional clients. Establishing the connection timed
out even though the RfcServer program was only idling, because the server
did not start additional stateless connections if a server connection got
stateful. Thus, all connections were blocked. Now, the RfcServer opens
additional stateless connections for every server connection that turns
stateful. The maximal number of additional connections is limited by the
new configuration parameter RfcConfigParameters.MaxRegistrationCount
(MAX_REG_COUNT).
See API documentation for details.
* Bugfix: server exception handling
Whenever a server function threw a "good" ABAP exception the server
connection hung, because it did not enter the correct state so that
processing could not continue properly.
* Bugfix: special time and date values
The time value 24:00:00 considered valid by ABAP was rejected by NCo 3.0.
The same was true for a few other peculiar ABAP date and time values. Now,
those values are accepted as valid.

--------------------------------------------------------------------------------
Release Notes 3.0.1
* Bugfix: runtime initialization
In certain client scenarios a problem in the initialization order of the
.NET framework leads to the .NET Connector being unable to login to the
SAP system. (Error message "invalid user or password", even though the
credentials are ok.)
* Bugfix: codepage assignment 1100
Codepage 1100 is now mapped to ISO-Latin-1 instead of Cp1252.
* Bugfix: compression
In a long-running process, which is sending/receiving many calls with
compressed tables, the calls may fail with an RfcSerializationException.
* Enhancement: server configuration RfcConfigParameters.SystemIDs, SYS_IDS
The server configuration now contains a new property allowing to restrict
access to this server to a certain selection of SAP backend systems
identified by Sys-ID. See property "RfcConfigParameters.SystemIDs".
* Enhancement: Dedicated .NET 4.0 variant
Support for Microsoft .NET Framework 4.0. a dedicated NCo 3.0 version for
.NET 4.0 is now available for download
--------------------------------------------------------------------------------
Release Notes 3.0
SAP .NET Connector 3.0 brings a complete redesign of the NCo API and a new
architecture that also requires some redesign of the applications using NCo.
But as you will learn when getting more used to it, it is worth redesigning
your applications so that they can use the new .NET Connector 3.0.
The redesign of NCo is the result of a long experience with NCo 2.0 as well
as with SAP Java Connector 2.1 and 3.0.
In particular, important improvements are:
* NCo 3.0 is more stable, robust, and more secure
* It enforces a better design of your application by decoupling the
connection handling from the .NET application proper
* It encourages separation of concerns: infrastructure embedding is clearly
separated from business application logic
* NCo 3.0 reduces memory consumption at runtime
* It Allows dynamic programming without the need for proxy generation
* It can dynamically look up metadata (so if something changes in the
related ABAP system - e.g. if parameters in a function module signature
are added or the ABAP system is switched from Non-Unicode to Unicode, you
no longer need to regenerate the proxies and recompile your solution)
* NCo 3.0 is no longer bound to a special Visual Studio version.
NCo 3.0 also adds some more features:
* Full BgRFC support, the successor of tRFC/qRFC
* Support for bASXML serialization in protocol
* Monitoring APIs
* Support for DECFLOAT data types
* Support for ABAP condition "IS SUPPLIED"
--------------------------------------------------------------------------------
Copyright 2010-2014 SAP AG. All Rights Reserved.