RFC call results differ from expected

The response when invoking ABAP function module directly via transaction SE37 may be different from the response when called via NodeJS connector. Typically leading zeros are not shown in SE37 but sent to NodeJS when remote FM is called from NodeJS.

This is surely a bug and in general there are few possible causes: the node-rfc package, the SAP NW RFC Library, or the function module itself. Bugs in SAP NW RFC Library are unlikely, in node-rfc less likely and the cause is usually the implementation of the ABAP FM, not respecting technical restriction described here.

Conversion (“ALPHA”) exists are triggered in SAP GUI and in SE37 but not when the ABAP FM is called via SAP RFC protocol, therefore the rectifying logic shall be implemented in the FM. The behaviour can be also caised by different authorization levels, when ABAP FM is invoked locally or remotely, via SAP RFC protocol.

Please try to assure that RFC is working (e.g. testing with the C connector), before reporting the problem.

Open, valid, and alive connections

A connection may be closed by the client (e.g. via Client.close()) or by the server (e.g. if an ABAP message is raised). The connection object maintains a object variable alive to record the actual state. However, the variable is of internal use only, as the connection object will try to reopen the connection, if needed. This leads to the – seemingly strange – situation that an explicitly closed connection will allow you to call, e.g.

Implementation remark: It is not possible to query the actual state of the connection in a reliable manner. Although SAP NW RFC Library offers the function RfcIsConnectionHandleValid(), it will only return False if the connection was closed by the client, not if it was closed from the server side. Therefore, an explicit object variable is kept.