Guest User

Untitled

a guest
Jul 4th, 2016
5,616
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 42.98 KB | None | 0 0
  1. Release Notes for SAP .NET Connector (NCo)
  2. ==========================================
  3.  
  4.  
  5. Please read the license terms and release notes carefully.
  6.  
  7. --------------------------------------------------------------------------------
  8.  
  9. This product is property of SAP AG. You are granted usage of this product in
  10. your development environment. Deploying this product with your application in a
  11. production environment is only valid with the sufficient amount of SAP Software
  12. Licenses according to the terms and conditions of SAP Software.
  13.  
  14. THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
  15. OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
  16. MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT.
  17. SAP AG further does not warrant the accuracy or completeness of the information,
  18. text, graphics, links or other items contained within these materials. SAP AG
  19. shall not be liable for any special, indirect, incidental or consequential
  20. damages, including without limitation, lost revenues or lost profits, which may
  21. result from the use of these materials. The information in this software is
  22. subject to change without notice and does not represent a commitment on the
  23. part of SAP AG in the future.
  24.  
  25. --------------------------------------------------------------------------------
  26.  
  27. Release Notes 3.0.13
  28. * Bugfix: element type compatibility
  29. An RfcTypeConversionException was thrown when setting a structure as a field, parameter,
  30. or attribute value even though the respective data types are the same. This issue happened
  31. after clearing or loading metadata and when retaining a structure from the time before
  32. loading or clearing and setting it on a container created after clearing or loading.
  33.  
  34. * Bugfix: saplogon.ini parameters
  35. When using saplogon.ini as source of logon parameters, entries of the form [Origin]=MS_SEL_SERVER
  36. did not work correctly, resulting in the error message "group name too large".
  37.  
  38. * Bugfix: loss of trailing white space
  39. Trailing white space characters other than SPACE (0x20) disappeared from values of CHAR fields.
  40.  
  41. * Bugfix: SNC connectivity
  42. When a backend was configured to allow SNC connections only via the 48XX ports, NCo failed to
  43. establish the connection.
  44.  
  45. * Bugfix: Metadata lookup in connection with custom destinations
  46. When using custom destinations without one or more designated repository destinations and changing
  47. backend users/passwords, metadata lookup may have failed.
  48.  
  49. * Bugfix: Destination configuration
  50. The default IDestinationConfiguration implementation, which is using app.config did not support
  51. the following configuration parameters for destinations: REPOSITORY_USER, REPOSITORY_PASSWD,
  52. USE_SYMBOLIC_NAMES, and ALIAS_USER
  53.  
  54. * Enhancement: RfcServerContextInfo
  55. RfcServerContextInfo was enhanced to expose the RfcServer instance which is processing the incoming
  56. request as property Server.
  57.  
  58. * Enhancement: General configuration
  59. With the property GeneralConfiguration.DisableWily it's possible to disable
  60. Wily for the NCo application. See API documentation for details.
  61. In addition, the GeneralSettings section in app.config has been extended
  62. to support disableWily.
  63.  
  64. * Enhancement: General configuration
  65. With the property GeneralConfiguration.CPICMaxConnections it's possible to
  66. configure the maximum number of CPIC connections for the NCo application.
  67. See API documentation for details.
  68. In addition, the GeneralSettings section in app.config has been extended
  69. to support cpicMaxConnections.
  70.  
  71. * Enhancement: General configuration
  72. With the property GeneralConfiguration.CPICKeepAlivePingInterval it's possible
  73. to configure the interval for RfcServer connection keep alive messages.
  74. See API documentation for details.
  75. In addition, the GeneralSettings section in app.config has been extended
  76. to support cpicKeepAlivePingInterval.
  77.  
  78. * Enhancement: Destination Management
  79. Class RfcDestinationManager now offers a static method IsDestinationConfigurationRegistered to check
  80. whether a destination configuration (other than the default configuration read from app.config) was
  81. registered. See API documentation for details.
  82.  
  83. * Enhancement: Server Management
  84. Class RfcServerManager now offers a static method IsServerConfigurationRegistered to check
  85. whether a server configuration (other than the default configuration read from app.config) was
  86. registered. See API documentation for details.
  87.  
  88. --------------------------------------------------------------------------------
  89.  
  90. Release Notes 3.0.12
  91. * Bugfix: tracing
  92. Setting trace level 2 or higher (or trace level PublicAPI) in connection
  93. with TRfc incurred a NullReferenceException.
  94.  
  95. * Bugfix: time and date values
  96. Time/date conversion errors caused by the Japanese calendar have been fixed
  97. by (explicitly) using the invariant culture (and hence the Greogrian calendar)
  98. at all times.
  99.  
  100. * Bugfix: runtime
  101. It could happen that even function invocations have been canceled running
  102. within sessions that are still alive.
  103.  
  104. * Bugfix: Memory consumption
  105. In applications that used many short-lived threads, a memory leak occurred due to
  106. the fact that thread local storage memory in unmanaged code was not freed when the thread
  107. was released.
  108.  
  109. * Improvement: function serialization performance
  110. Performance issues notable when transmitting large amounts of structured
  111. data in exporting, importing or changing parameters that contain single fields with a
  112. major part of this data amount.
  113.  
  114. * Improvement: initial field values
  115. Validity checks for strings representing initial date/time are now
  116. less stringent to take into account ABAP's lax treatment of such values
  117.  
  118. * Enhancement: data type conversions
  119. Fields, parameters, or attributes with ABAP data type STRING or CHAR
  120. now have setters and getters for integer types (Byte, Int16, Int32, and Int64).
  121. Consult the API documentation for details.
  122.  
  123. --------------------------------------------------------------------------------
  124.  
  125. Release Notes 3.0.11
  126. * Bugfix: Logon Language
  127. The conversion routine that converts ISO into SAP language wrongly relied
  128. on upper-case language codes, but was given, and tried to work with, lower-case codes.
  129.  
  130. * Bugfix: Delta Manager
  131. An RFC client request failed with an "RfcAbapRuntimeException: Invalid Delta Manager
  132. object ID (2 <=> 1)". On ABAP side a shortdump CALL_FUNCTION_OBJECT_ID with the same
  133. error message is recorded in ST22. Reason for thsi was that the NCo client was
  134. trying to execute a stateful sequence of RFMs, some of which reused the same internal
  135. table. The stateful connection broke down - e.g. because of a network error - but the
  136. client tried to continue the sequence. NCo took a fresh (stateless) connection for the
  137. following requests, but reused the delta manager object IDs from the stateful connection.
  138. This led to an object ID mismatch in the ABAP backend system.
  139.  
  140. * Bugfix: sapogon.ini integration
  141. SapLogonIniConfiguration accidentally interpretes the saplogon.ini entry
  142. as being of type "message server logon". This leads to a mismatch of the required
  143. logon parameters.
  144.  
  145. * Bugfix: configuration
  146. The configuration property REPOSITORY_USER was not working as desired, the
  147. value had been simply ignored even for repository connections.
  148.  
  149. * Bugfix: CPIC connection management
  150. Hanging server connections caused by a bug in the CPIC layer has been fixed
  151. as described in note 1791529. The relevant patch level is included in NCo 3.0.11.
  152.  
  153. * Improvement: Performance tracing
  154. Introduction of flag for performance tracing as additional possibility
  155. for simple trace analysis.
  156.  
  157. * Improvement: Monitoring
  158. Enhancements of destination monitoring. See API documentation
  159. of RfcDestinationMonitor for details.
  160.  
  161. * Improvement: Monitoring
  162. Introducing repository monitoring. See API documentation of
  163. RfcRepositoryMonitor for details.
  164.  
  165. * Improvement: Configuration
  166. A designated timeout for idling repository connections was introduced.
  167. See API documentation of RfcConfigParameters.RepositoryConnectionIdleTimeout for details.
  168.  
  169. * Improvement: Configuration
  170. Loading the default configuration has now a built-in recovery mechanism
  171. in case a ConfigurationErrorsException occurs while loading. See API documentation of
  172. RfcConfigParameters for details.
  173.  
  174. * Enhancement: Security
  175. It is now possible to pass passwords as SecureString to a destinaton. For
  176. that an implementation of IDestinationConfiguration can set the password into the
  177. returned RfcConfigParameters instance. See API documentation of
  178. RfcConfigParameters.SecurePassword for details.
  179.  
  180. --------------------------------------------------------------------------------
  181.  
  182. Release Notes 3.0.10
  183. * Bugfix: binary incompatibility in public API
  184. After applying NCo 3.0.9, a System.MissingMethodException with the text
  185. "Method not found: 'System.String SAP.Middleware.Connector.RfcDestination.get_Name()'"
  186. was thrown when trying to use an existing NCo application with it. However,
  187. when compiling the application again, everything works fine. This was caused by some
  188. source code compatible change that was not binary compatible: The public read-only
  189. property Name was changed to be a public read-only field. In order to fix the issue,
  190. the source code compatible change was adjusted so that it is now binary compatible
  191. again.
  192.  
  193. --------------------------------------------------------------------------------
  194.  
  195. Release Notes 3.0.9
  196. * Bugfix: Replacing expired SSO2 tickets
  197. Expired SAP SSO2 tickets could not be replaced with valid tickets without
  198. rendering the affected destinations invalid, and hence losing the entire connection
  199. pool as well as open connections, because there was no explicit mechanism for
  200. "on the fly" replacement of expired tickets and implicit mechanisms like used
  201. in JCo were simply not possible due to the .NET implementation of Dictionary.
  202. With patch level 3.0.9, a mechanism for replacing expired SSO2 tickets was added
  203. that leaves destinations and their connections intact. See API documentation of
  204. RfcConfigParameters.UpdateSSO2Ticket and IDestinationConfiguration.GetParameters
  205. for details.
  206.  
  207. * Bugfix: Interchangeable metadata
  208. Data containers (tables, structures, or ABAP objects) had been rejected if they
  209. were taken from a repository that is different from the repository of the target
  210. container, even though the metadata has been identical (but from different
  211. repositories). NCo3 employed instance equality to check for compatibility of
  212. data containers, which implied that identical metadata (taken from the same
  213. repository) has been required to pass the compatibility check.
  214. The compatibility check of data containers is now less restrictive and also
  215. admits data containers with equivalent metadata that do not necessarily have
  216. to originate in the same repository.
  217.  
  218. * Improvement: destanation configuration exceptions
  219. When not specifying required configuration parameters, e.g. the SYSID, when
  220. trying to connect via load balancing, a very low level exception had been thrown,
  221. in which it was not immediately clear, why the connection could not be
  222. established. Now, there are early checks and in case of a configuration issue,
  223. a descriptive RfcConfigurationException is informing in detail about the
  224. configuration issue.
  225.  
  226. --------------------------------------------------------------------------------
  227.  
  228. Release Notes 3.0.8
  229. * Bugfix: destination configuration
  230. Changing the trace level of a destination by modifying the configuration of
  231. the destination had no effect on property TraceLevel for that destination,
  232. even when a configuration update event was fired.
  233.  
  234. * Bugfix: destination configuration
  235. Using the connection parameter CharacterFaultIndicatorToken incurred an
  236. RfcInvalidParameterException, as the 4-digit string value was attempted to be
  237. parsed as a 1-byte integer.
  238.  
  239. * Bugfix: repository persistence
  240. Deserialized table metadata (using RfcRepository.Load) and all containers
  241. using it might exhibit iconsistent behavior; e.g., (table) parameter values
  242. might be empty where a non-empty table was expected, because the table
  243. metadata obtained through RfcRepository.Load was not properly set up.
  244.  
  245. * Bugfix: server runtime
  246. In the server case, received parameters might not be deserialized (e.g., the
  247. TID transmitted in the context of ARFC_DEST_CONFIRM was an empty string). This
  248. issue was hard to reproduce since it was happening rarely and randomly.
  249. Typically, the issue was most likely to occur if there was only one server
  250. connection (i.e., REG_COUNT=1).
  251.  
  252. * Bugfix: destination management runtime
  253. Destinations were replaced (shown as REPLACED in trace files) even though the
  254. destination configuration did not change. However, critical parameters that
  255. warrant a destination replacement were provided by the configuration in a
  256. non-normalized manner; for instance, SYSNR="5" (instead of SYSNR="05").
  257. Those were considered modified, as the destination always holds normalized
  258. values, whereas the configuration may provide values that were not normalized
  259. and hence different.
  260.  
  261. * Bugfix: SAPRouter string handling
  262. When trying to establish a connection to an ABAP system, which is configured
  263. to use load balancing, the connection shall be established via a SAPRouter, and
  264. the saprouter string has a trailing /H/, establishing the connection failed.
  265.  
  266. * Enhancement: Support for saplogon.ini
  267. Applications that want to reuse logon parameters maintained in a saplogon.ini
  268. file on the current host can do so now. For a complete documentation of the
  269. new feature see the API documentation of class
  270. SAP.Middleware.Connector.SapLogonIniConfiguration.
  271.  
  272. * Enhancement: new property on IRFCParameter
  273. Introduction of property IRfcParameter.DefaultValue. See API documentation
  274. for details.
  275.  
  276. * Enhancement: logging
  277. The dev_nco_rfc.log file entries were enhanced to contain the process ID so
  278. that it's easier to correlate them with the corresponding trace files.
  279.  
  280. * Enhancement: logon procedure
  281. Improved logon procedure for languages available in Unicode SAP systems only.
  282. Some languages like Armenian, Georgian, Vietnamese, Macedonian and many
  283. others are available in Unicode SAP systems only. If logging on with such a
  284. language to an SAP ABAP backend system, it was mandatory to specify an
  285. additional destination configuration parameter like RfcConfigParameters.Codepage
  286. (CODEPAGE) which was indicating a unicode communication type, otherwise such
  287. logons failed with an RfcLogonException showing the error message "Select
  288. one of the installed languages" although the appropriate language was installed.
  289. This logon procedure has been improved so that it does not require any
  290. additional communication code page destination property anymore in this case.
  291. The unicode communication type is now automatically detected and used for
  292. logging on with such new SAP system language keys. Please see note 895560
  293. (https://service.sap.com/sap/support/notes/895560) for details on languages
  294. that are only available in Unicode SAP systems.
  295.  
  296. * Enhancement: DNS caching configuration
  297. With the new properties GeneralConfiguration.DNSCacheTTL and
  298. GeneralConfiguration.DNSNegativeCacheTTL it is possible to configure the
  299. behavior of the DNS caches in NI. See API documentation for details.
  300. In addition, the GeneralSettings section in app.config has been extended
  301. to support dnsCacheTTL and dnsNegativeCacheTTL.
  302.  
  303. * Enhancement: CPIC tracing
  304. Instead of having to set the environment variable CPIC_TRACE for turning on
  305. CPIC trace, NCo now offers GeneralConfiguration.CPICTraceLevel. Thus, it is
  306. possible to adjust the CPIC trace level at runtime without having to restart
  307. the executable. See API documentation for details. In addition, the
  308. GeneralSettings section in app.config has been extended to support
  309. cpicTraceLevel.
  310.  
  311. --------------------------------------------------------------------------------
  312.  
  313. Release Notes 3.0.7
  314. * Bugfix: monitoring
  315. RfcDestinationMonitor.GetConnectionsData() always returned an empty list. Now,
  316. all RfcConnectionData belonging to the destination are returned in a list.
  317.  
  318. * Bugfix: repository - dynamic metadata lookup
  319. When using RFC_METADATA_GET for roundtrip optimization, the metadata might be
  320. faulty (e.g., character fields had the wrong length). This happened
  321. exclusively in connection with parameter metadata in the case when the type of
  322. the parameter was a predefined type (defined through a predefined field of a
  323. structure).
  324.  
  325. * Bugfix: connection management
  326. Peak connection limit was exceeded although the number of active connections
  327. did not exceed that limit. This happened after communication failures
  328. (RfcCommunicationException), because those connections were not removed from
  329. the list of active connections. Eventually, that list is clogged up with
  330. invalid connections.
  331.  
  332. * Bugfix: communication runtime
  333. When not configuring the language in a destination, English was used instead
  334. of the default language as configured for the corresponding user in the
  335. backend. In case there is no language provided through the configuration,
  336. the NCo runtime internally added English as configured value for the language,
  337. which was not correct.
  338.  
  339. * Bugfix: communication runtime
  340. An ArgumentOutOfRangeException with the message "Length cannot be less than zero"
  341. was thrown when invoking a function module a function module that is implemented
  342. on top of VM container, i.e. a function module implemented in Java,
  343. e.g. CFG_API_CREATE_CONFIG. The call stack of the exception was similar to the one
  344. below
  345. Parameter name: length
  346. at System.String.InternalSubStringWithChecks(Int32 startIndex, Int32 length, Boolean fAlwaysCopy)
  347. at SAP.Middleware.Connector.RfcConnection.ReadRfcCDestination(Int32 length)
  348. at SAP.Middleware.Connector.RfcConnection.ReadUpTo(RFCGET readState, RfcFunction function, RFCID toRid)
  349. at SAP.Middleware.Connector.RfcConnection.RfcReceive(RfcFunction function)
  350. at SAP.Middleware.Connector.RfcFunction.RfcDeserialize(RfcConnection conn, IRfcIOStream stream)
  351. at SAP.Middleware.Connector.RfcFunction.RfcCallReceive(RfcConnection conn, IRfcIOStream stream, RFCID rid)
  352. at SAP.Middleware.Connector.RfcFunction.RfcCallReceive(RfcConnection conn)
  353. at SAP.Middleware.Connector.RfcFunction.Invoke(RfcDestination destination)
  354. Now, NCo was made aware of the slightly different behavior of the VMC runtime
  355. that caused this failure.
  356.  
  357. * Improvement: Monitoring
  358. Assigning a value of 0 to environment variable Cor_Enable_Profiling did not
  359. disable Wily (and therefore did not prevent the creation of a possibly unwanted
  360. client passport handler), because only 0x0 was accepted as valid value.
  361. Now, various representations of the value 0 are recognized.
  362.  
  363. * Bugfix: date serialization
  364. Initial dates transmitted via xRfc as four spaces, a hyphen, two spaces,
  365. a hyphen, and two spaces, incurred a conversion error.
  366.  
  367. * Bugfix: multithreading with RfcDestinationManager
  368. One or more NullReferenceException exceptions with message
  369. "Object reference not set to an instance of an object" were thrown when
  370. calling RfcDestinationManager.GetDestination or RfcRepostory.CreateFunction
  371. concurrently from multiple threads. RfcDestinationManager.GetDestination
  372. was changed to be implemented fully thread-safe.
  373.  
  374. * Bugfix: server runtime
  375. Server restart was not working as expected. A server remained disconnected,
  376. even if a registration with the gateway should work. The restart check has
  377. been improved so that server restart is working as expected.
  378.  
  379. * Enhancement: configuration enhancement
  380. The use of roundtrip optimization can be configured in the GeneralSettings
  381. section via attribute useRoundtripOptimization. Values "on" or "true" switch
  382. on roundtrip optimization for all repositories, whereas "off" or "false"
  383. switch it off. (These string values are case-insensitive). In the absense
  384. of the attribute (or the entire section), or if any other value is supplied,
  385. the backward compatible default behavior is applied. See API documentation
  386. of RfcRepository.UseRoundtripOptimization for details.
  387.  
  388. * Enhancement: security configuration enhancement
  389. The new configuration parameter SNC_SSO for destinations allows turning off
  390. the SSO behavior of SNC setups. More details are available in note 1701870:
  391. https://service.sap.com/sap/support/notes/1701870.
  392.  
  393. --------------------------------------------------------------------------------
  394.  
  395. Release Notes 3.0.6
  396. * Improvement: SystemAttributes
  397. If the backend is down while someone tried to retrieve the SystemAttributes
  398. from the corresponding destination for the first time, the attributes remained
  399. empty forever, leading to System.ArgumentNullExceptions when trying to access
  400. them. Now, NCo updates fields containing null on later access.
  401.  
  402. * Bugfixes: Multithreaing and NullReferenceExceptions
  403. In a multi-threaded scenario a NullReferenceException might erratically occur
  404. when starting parallel sessions through RfcSessionManager.BeginContext (and
  405. using the default session provider) or in RfcDestinationManager.GetDestination().
  406. To avoid those race conditions, some internal methods have been synchronized.
  407.  
  408. * Enhancement: initial values for fields
  409. When trying to set a byte array containing only 0 bytes to a DATE or TIME field,
  410. a RfcTypeConversionException occured, as this value was conisdered invalid.
  411. Now, 0 bytes are no longer considered an invalid date or time. Instead they are
  412. considered to signify 'initial' which translates to "00000000" or "000000",
  413. respectively.
  414.  
  415. * Bugfix: configuration update for RfcConfigParameters.SAPSSO2Ticket
  416. Existing destinations were not affected by modification of configuration parameter
  417. RfcConfigParameters.SAPSSO2Ticket, regardless of whether the registered destination
  418. configuration fires a change event or not. This was due to a bug in the handling
  419. of this parameter: RfcConfigParameters.SAPSSO2Ticket was not treated as a
  420. parameter that should trigger a replacement of destinations (i.e., invalidating
  421. existing destinations and creating new ones in their place).
  422. As a matter of fact, no action was taken whenever that parameter changed.
  423.  
  424. * Bugfix: SAPGUI with RFC
  425. When making RFC with SAPGUI dialog by using a destination with USE_SAPGUI=1 (or 2),
  426. the RFC call failed with an RfcAbapRuntimeException "Starting of SAPGUI failed".
  427. In SAPGUI, an error message like "partner '192.168.13.75:3200' not reached.
  428. WSAEWOULDBLOCK: resource temporarily unavailable" was also shown.
  429. If there exists a NAT-like firewall between the frontend and the SAP backend
  430. system, the SAP application server may have an internal IP-address for accessing
  431. the server behind the firewall and an external IP-address for accessing the
  432. server from outside. When trying to start the SAPGUI session during setting up an
  433. RFC connection with SAPGUI dialog, NCo 3.0 mistakenly passed the internal
  434. IP-address, instead of the external IP-address, to the SAPGUI and this caused the
  435. SAPGUI to fail to reach the application server. NCo now ensures to pass the
  436. external address, under which it knows the partner system, to the SAP GUI startup
  437. call so that the SAP GUI succeeds to establish the connection.
  438.  
  439. * Bugfix: CPIC layer fix
  440. In certain situations, very often in conjunction with the use of VPN, one or more
  441. of the following exceptions are thrown:
  442. a) System.FormatException with different messages.
  443. b) SAP.Middleware.Connector.RfcCommunicationException with a message like this:
  444. LOCATION CPIC (TCP/IP) on local host with Unicode
  445. ERROR client with wrong appc header version rejected
  446. TIME Wed Dec 07 23:15:31 2011
  447. RELEASE 720
  448. COMPONENT CPIC (TCP/IP) with Unicode
  449. VERSION 3
  450. RC 246
  451. MODULE r3cpic.c
  452. LINE 8554
  453. DETAIL client version 6, gateway version 120 (165.130.193.210/3385)
  454. COUNTER 2
  455. The bug causing this in the underlying CPIC library has been fixed. Find more
  456. details in note 1664732: https://service.sap.com/sap/support/notes/1664732.
  457.  
  458. * Bugfix: destination management
  459. Getting a destination via RfcDestinationManager.GetDestination using
  460. RfcConfigParameters a second time with modified parameters (but with the same
  461. name) returned the destination with the original outdated parameters. Now, the
  462. correct set of parameters is returned.
  463.  
  464. * Bugfix: destination configuration RfcConfigParameters.MaxPoolWaitTime (MAX_POOL_WAIT_TIME)
  465. Setting the parameter MAX_POOL_WAIT_TIME (or RfcConfigParameters.MaxPoolWaitTime)
  466. had no effect. The value of MaxPoolWaitTime is now taken into account.
  467. *Note* that after the fix MaxPoolWaitTime is measured in milliseconds, which
  468. is also reflected by the API documentation.
  469.  
  470. * Bugfix: connection monitoring
  471. When using RfcConnectionMonitor.GetConnectionsData no idle connections (retained
  472. for possible later use) were returned.
  473. Now, besides active (stateless) connections and stateful connections, also "pooled"
  474. connections (i.e., connections that are idle but retained for later use) are
  475. returned. Note that property State as well as the associated int constants
  476. of class RfcConnectionData have been deprecated. We recommend to replace State
  477. with property CurrentState (which makes use of an enumeration) and discontinue
  478. the use of the int constants as soon as possible.
  479.  
  480. * Bugfix: CPIC tracing
  481. The CPIC trace file generated by NCo 3.0 processes didn't contain CPIC function
  482. calls nor the CPIC payload regardless of CPIC trace level, because the CPIC
  483. tracing functionality of CPIC library was suppressed for client connections.
  484.  
  485. * Enhancement: repository persistence
  486. Repositories (metadata caches) can be saved to and loaded from a resource of your
  487. choice. That way, startup time of an application can be reduced significantly
  488. if expensive metadata lookup is involved. However, keeping the saved
  489. repositories up-to-date is the application's responsibility.
  490.  
  491. * Enhancement: destination management
  492. RfcDestinationManager.GetDestination(string) could solely be used if an
  493. IDestinationConfiguration was present. Now this method can also be used to
  494. retrieve a destination created with RfcConfigParameters, effectively getting
  495. the destination by its name without the necessity to set up RfcConfigParameters
  496. containing the name only.
  497.  
  498. * Enhancement: WMI provider
  499. In the .NET 4.0 variant, NCo 3.0 now offers a WMI data provider that can be
  500. used for monitoring and analysis purposes. Details can be found in the
  501. documentation.
  502.  
  503. --------------------------------------------------------------------------------
  504.  
  505. Release Notes 3.0.5
  506. * Bugfix: Crash introduced with 3.0.4
  507. The .NET application using NCo simply terminated with the following exception:
  508. System.InvalidOperationException was unhandled
  509. Message: Queue empty.
  510. at System.ThrowHelper.ThrowInvalidOperationException(ExceptionResource resource)
  511. at System.Collections.Generic.Queue`1.Peek()
  512. at SAP.Middleware.Connector.RfcConnectionPool.RemoveTimedoutConnections(DateTime now)
  513. at SAP.Middleware.Connector.RfcConnectionPool.CheckConnectionTimeout(Object state)
  514. at System.Threading._TimerCallback.TimerCallback_Context(Object state)
  515. at System.Threading.ExecutionContext.Run(ExecutionContext executionContext,
  516. ContextCallback callback, Object state)
  517. at System.Threading._TimerCallback.PerformTimerCallback(Object state)
  518. This happened in the timeout checker, when the pool was getting empty.
  519. Unfortunately, the timeout checker routine did not catch all exceptions so
  520. that the Thread running that timer crashed and with it the whole .NET
  521. application. The timeout checker was adjusted to check the pool state without
  522. causing exceptions, and in addition it catches all exceptions that might occur
  523. due to error situations to avoid further undesired terminations of the NCo
  524. application.
  525.  
  526. --------------------------------------------------------------------------------
  527. Release Notes 3.0.4
  528. * Bugfix: configuration with app.config
  529. When specifying a GenerelSettings section in the app.config file, but
  530. not the parameter traceDir in it, the application aborted with the
  531. following error message:
  532. Could not initialize configuration: System.ArgumentNullException: String
  533. reference not set to an instance of a String.
  534. Parameter name: source
  535. at System.Globalization.CompareInfo.IsSuffix(String source, String suffix,
  536. CompareOptions options)
  537. at System.String.EndsWith(String value, StringComparison comparisonType)
  538. at System.String.EndsWith(String value)
  539. at SAP.Middleware.Connector.RfcTrace.Initialize(String directory,
  540. Boolean perThread, String encoding)
  541. The configuration parser was enhanced to accept such a valid configuration.
  542.  
  543. * Bugfix: server runtime
  544. An attempt to obtain the function list from a server (e.g. by using
  545. Extras/Function List for a destination in SM59) incurred a
  546. RfcInvalidParameterException as the implementation of RFC_DOCU to gain
  547. access to a non-existent parameter "RFCDOCU" instead of "DOCU".
  548.  
  549. * Bugfix: serialization and compression
  550. When sending documents to an NCo Server, an exception like
  551. "RfcSerializationException: End mark of RFCID.NotUsed (0x0000) not found."
  552. occured. The documents were sent concurrently via tRFC and produced a heavy
  553. load in a server running several threads. The documents required compression
  554. due to their size. When exchanging data between managed and unmanaged code
  555. sections data could get lost if the garbage collector re-arranged memory
  556. due to heap fragmentation. Thus, the decompressed tRFC datastream started
  557. with many 0 bytes, which eventually resulted in the RfcSerializationException.
  558. Now, the code which is exchanging the data between managed and unmanaged code
  559. sections was adjusted to react correctly in case the garbage collector
  560. re-arranged memory due to heap fragmentation.
  561.  
  562. * Bugfix: SAPRouter string handling
  563. When trying to establish a connection to an ABAP system, which is configured
  564. to use load balancing and the connection shall be established via a SAPRouter,
  565. an exception occurred without any detail message.
  566.  
  567. * Bugfix: WCF service support
  568. If the .NET application runs as a WCF Service, the initialization of NCo
  569. aborted with the exception
  570. "Could not initialize configuration:
  571. System.ArgumentException: exePath must be specified when not running inside
  572. a stand alone exe.
  573. at System.Configuration.ConfigurationManager.OpenExeConfigurationImpl
  574. (ConfigurationFileMap fileMap, Boolean isMachine,
  575. ConfigurationUserLevel userLevel, String exePath)
  576. at System.Configuration.ConfigurationManager.OpenExeConfiguration
  577. (ConfigurationUserLevel userLevel)
  578. at SAP.Middleware.Connector.RfcConfigParameters..cctor()"
  579. This happened, because within a WCF Service, the application configuration needs
  580. to be looked up differently, even differently compared to ASP .NET where
  581. typically a HttpContext is available, which is not the case for WCF.
  582. Hence, NCo did not recognize to run within a WCF Service context, and therefore
  583. could not look up the application configuration. Now, NCo checks whether a
  584. VirtualPathExtension exists, assumes in this case to run within a WCF Service,
  585. and opens the web configuration using the virtual path.
  586. *Note:* the solution for this problem is available only in the .NET 4.0 variant
  587. of NCo 3.0.4. If you are using the .NET Framework 2.0, you can, as a workaround,
  588. add the following parameter to the configuration of your WCF Service:
  589. <system.serviceModel>
  590. <serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
  591. </system.serviceModel>
  592.  
  593. * Bugfix: function serialization
  594. Invoking function modules involving basXML may incur a RfcSerializationException
  595. or other kinds of exceptions in conjunction with a RABAX on the ABAP side, if
  596. the exchanged data amount was exceeding a certain (rather small) threshold.
  597. The basXML parser and renderer were fixed to deal with larger amounts of data
  598. correctly.
  599.  
  600. * Enhancement: tracing
  601. RFC trace can now be activated by setting the environment variable RFC_TRACE.
  602. Valid values are the same as for the app.config parameter "defaultTraceLevel":
  603. see section "General Configuration Parameters" in Appendix A of the NCo
  604. Programming Guide.
  605.  
  606. * Enhancement: Delta management
  607. Support for delta management for table paramaters has been introduced for client
  608. communication. Thus, the performance is improved dramatically for certain use
  609. cases, in particular if the table sent to the ABAP system is hardly modified or
  610. not at all.
  611.  
  612. * Enhancement: Support for special destination "BACK".
  613. "BACK" is only usable within a NCo server function and allows to execute a
  614. function module in the context of the caller and simply re-uses the connection
  615. over which the server function has been received. The newly introduced constant
  616. RfcDestination.BACK can be used to retrieve the destination object instance.
  617.  
  618. * Enhancement: Supportability
  619. A default passport handler has been introduced to be used in connection with
  620. Wily (code instrumentation). If Wily is installed and enabled (environment
  621. variable Cor_Enable_Profiling=0x1) and no passport handler was set by the
  622. application, the Wily-specific passport handler is active and reads a passport
  623. from the thread local data slot named "SAP-PASSPORT-OUTBOUND" (if available),
  624. making it available through IRfcClientPassportHandler.OnCallStart. Conversely,
  625. IRfcClientPassportHandler.OnCallEnd puts the passport into the named data slot
  626. "SAP-PASSPORT-OUTBOUND-LASTUSED".
  627.  
  628. --------------------------------------------------------------------------------
  629. Release Notes 3.0.3
  630. * Bugfix: IMPORTING/EXPORTING parameter handling
  631. Older ABAP releases allow IMPORTING and EXPORTING parameters with the same name,
  632. thus emulating CHANGING parameters. However, NCo threw an
  633. RfcInvalidParameterException in such a case, because it did not did not accept
  634. duplicate parameter names. Now, such situations are treated like a single
  635. CHANGING parameter.
  636.  
  637. * Bugfix: server function runtime
  638. When trying to use the repository inside a server function implementation via
  639. RfcServerContext.Repository, the program crashed with a
  640. System.StackOverflowException. The property has been fixed not to refer to
  641. itself again.
  642.  
  643. * Bugfix: Exception handling
  644. If one or more logon parameters were missing when trying to connect to a SAP
  645. ABAP system, an RfcAbapRuntimeException instead of an RfcLogonException is thrown.
  646.  
  647. * Bugfix: Server tracing
  648. RFC servers always used the global trace level, not the server-specific trace
  649. level defined in the corresponding configuration parameters.
  650.  
  651. * Enhancement: initial values for fields
  652. An RfcTypeConversionException was thrown when trying to set a byte array
  653. consisting of "zeroes only" to a BCD or NUM field, as this value was considered
  654. invalid. However, it can be seen as valid initial value, and therefore NCo
  655. now accepts it as one.
  656.  
  657. * Bugfix: destination configuration - timeouts
  658. When using the destination configuration parameters IdleTimeout/IDLE_TIMEOUT
  659. or IdleCheckTime/IDLE_CHECK_TIME, it seemed as if random values were used
  660. for them. This happened, because they had accidentally been treated as global
  661. parameters instead of as per-destination parameters. Thus, all destinations
  662. had been using the parameters of the destination that had been adjusted last.
  663. Moreover, when using IdleCheckTime/IDLE_CHECK_TIME a NullReferenceException
  664. could occur. Now, this has been corrected.
  665.  
  666. * Bugfix: compression
  667. When sending very large IDocs to an NCo Server, an exception like
  668. "RfcSerializationException: End mark of RFCID.######## not found." was
  669. occurring. Examples for ####### were "TableContLZ (0x0305)",
  670. "NotUsed (0x0000)", or "XMLData (0x3C05)". NCo's decompression logic was
  671. redesigned to avoid these situations.
  672.  
  673. * Bugfix: RfcServer state
  674. When an RfcServer received an RfcCommunicationException with the information
  675. that the connection to partner is broken, because the network connection to
  676. the gateway was lost, and this happened for all existing connections,
  677. the server state remained "Running", instead of turning its state to "Broken".
  678. After the network was available again, the server connection did still no
  679. longer work. The server state changes and restart mechanism were adjusted to
  680. recognized such situations. Now, it is recognized when all connections are
  681. dead, and the state is changed to "Broken". This is logged as an info message
  682. in dev_nco_rfc.log. Another log entry is written as soon as the server has
  683. recovered and returned to state "Running" again.
  684.  
  685. * Enhancement: Tracing
  686. The bgRFC Unit IDs in NCo traces and the ones available in bgRFC monitors on
  687. ABAP side did not match. Nevertheless, bgRFC worked fine as this was only
  688. caused by the difference how the Unit IDs were traces on both ends. Now,
  689. the traced unit IDs match.
  690.  
  691. * Enhancement: Data Binding
  692. DataBinding support for structured types. Find more details in the programming
  693. guide in chapter "Using Data Binding in Windows Forms"
  694.  
  695. * Enhancement: new API methods
  696. - new constructors for RfcAbapRuntimeException and RfcAbapMessageException.
  697. - property TraceLevel in RfcServer class.
  698. - method SetDestination() in RfcCustomRepository class.
  699. Find details in the API documentation.
  700.  
  701. --------------------------------------------------------------------------------
  702. Release Notes 3.0.2
  703. * Enhancement: support for bgRFC units
  704. bgRFC support is introduced with NCo 3.0.2. Check the API documentation for
  705. details.
  706.  
  707. * Enhancement: codepage converters
  708. Using special SAP codepages, such as blended codepages, did not work: An error
  709. message like "Invalid SAP Codepage 6110" was displayed. For other codepages
  710. the SAP special characters had been destroyed during conversion. This happened
  711. because Blended codepages (Starting with a 6 in the 4-digit name, e.g. 6110)
  712. are not supported by the standard codepage converters of .NET. The same is
  713. true for SAP special characters. SAP-specific codepages are now supported by
  714. integrating SAP codepage converters. Through an additional configuration
  715. parameter - RfcConfigParameters.UseSAPCodepages (USE_SAP_CODEPAGES) - a list
  716. of codepages can be specified for which SAP converters are employed instead
  717. of the .NET converters. Check the API documentation for details.
  718.  
  719. * Bugfix: server configuration events processing corrected
  720. Despite updating a server configuration and firing a change event an affected
  721. (running) server did not react properly and did not adjust itself
  722. automatically as expected due to a bug in event processing.
  723.  
  724. * Bugfix: stateful server behavior
  725. After setting all connections of a server to stateful the server could no
  726. longer be reached by additional clients. Establishing the connection timed
  727. out even though the RfcServer program was only idling, because the server
  728. did not start additional stateless connections if a server connection got
  729. stateful. Thus, all connections were blocked. Now, the RfcServer opens
  730. additional stateless connections for every server connection that turns
  731. stateful. The maximal number of additional connections is limited by the
  732. new configuration parameter RfcConfigParameters.MaxRegistrationCount
  733. (MAX_REG_COUNT).
  734. See API documentation for details.
  735.  
  736. * Bugfix: server exception handling
  737. Whenever a server function threw a "good" ABAP exception the server
  738. connection hung, because it did not enter the correct state so that
  739. processing could not continue properly.
  740.  
  741. * Bugfix: special time and date values
  742. The time value 24:00:00 considered valid by ABAP was rejected by NCo 3.0.
  743. The same was true for a few other peculiar ABAP date and time values. Now,
  744. those values are accepted as valid.
  745.  
  746. --------------------------------------------------------------------------------
  747. Release Notes 3.0.1
  748. * Bugfix: runtime initialization
  749. In certain client scenarios a problem in the initialization order of the
  750. .NET framework leads to the .NET Connector being unable to login to the
  751. SAP system. (Error message "invalid user or password", even though the
  752. credentials are ok.)
  753.  
  754. * Bugfix: codepage assignment 1100
  755. Codepage 1100 is now mapped to ISO-Latin-1 instead of Cp1252.
  756.  
  757. * Bugfix: compression
  758. In a long-running process, which is sending/receiving many calls with
  759. compressed tables, the calls may fail with an RfcSerializationException.
  760.  
  761. * Enhancement: server configuration RfcConfigParameters.SystemIDs, SYS_IDS
  762. The server configuration now contains a new property allowing to restrict
  763. access to this server to a certain selection of SAP backend systems
  764. identified by Sys-ID. See property "RfcConfigParameters.SystemIDs".
  765.  
  766. * Enhancement: Dedicated .NET 4.0 variant
  767. Support for Microsoft .NET Framework 4.0. a dedicated NCo 3.0 version for
  768. .NET 4.0 is now available for download
  769.  
  770. --------------------------------------------------------------------------------
  771.  
  772. Release Notes 3.0
  773. SAP .NET Connector 3.0 brings a complete redesign of the NCo API and a new
  774. architecture that also requires some redesign of the applications using NCo.
  775. But as you will learn when getting more used to it, it is worth redesigning
  776. your applications so that they can use the new .NET Connector 3.0.
  777. The redesign of NCo is the result of a long experience with NCo 2.0 as well
  778. as with SAP Java Connector 2.1 and 3.0.
  779. In particular, important improvements are:
  780. * NCo 3.0 is more stable, robust, and more secure
  781. * It enforces a better design of your application by decoupling the
  782. connection handling from the .NET application proper
  783. * It encourages separation of concerns: infrastructure embedding is clearly
  784. separated from business application logic
  785. * NCo 3.0 reduces memory consumption at runtime
  786. * It Allows dynamic programming without the need for proxy generation
  787. * It can dynamically look up metadata (so if something changes in the
  788. related ABAP system - e.g. if parameters in a function module signature
  789. are added or the ABAP system is switched from Non-Unicode to Unicode, you
  790. no longer need to regenerate the proxies and recompile your solution)
  791. * NCo 3.0 is no longer bound to a special Visual Studio version.
  792.  
  793. NCo 3.0 also adds some more features:
  794. * Full BgRFC support, the successor of tRFC/qRFC
  795. * Support for bASXML serialization in protocol
  796. * Monitoring APIs
  797. * Support for DECFLOAT data types
  798. * Support for ABAP condition "IS SUPPLIED"
  799. --------------------------------------------------------------------------------
  800.  
  801. Copyright © 2010-2014 SAP AG. All Rights Reserved.
Advertisement
Add Comment
Please, Sign In to add comment