Skip to Content
0
Oct 25 at 07:08 AM

RFC Error: Obligatory parameter not provided in dynamic method call. How can I resolve this issue?

215 Views Last edit Oct 25 at 01:06 PM 4 rev

We recently upgraded SAP S4 / HANA QUALITY from version 1511 to version 2020 SP2 and now our FIORI app doesn't work anymore.

The name of the app is "Imballaggio consegne" and now, when we try to open the app, the system returns us this error:

"

{

"code": "/IWFND/CM_BEC/029",

"message": {

"lang": "it",

"value": "RFC Error: Obligatory parameter not provided in dynamic method call."

},

"innererror": {

"application": {

"component_id": "",

"service_namespace": "/SAP/",

"service_id": "Z*****************",

"service_version": "0002"

},

"transactionid": "4163FE5E257600B0E00616AF87BDCB39",

"timestamp": "20211022084652.1620620",

"Error_Resolution": {

"SAP_Transaction": "Run transaction /IWFND/ERROR_LOG on SAP Gateway hub system and search for entries with the timestamp above for more details",

"SAP_Note": "See SAP Note 1797736 for error analysis (https://service.sap.com/sap/support/notes/1797736)",

"Batch_SAP_Note": "See SAP Note 1869434 for details about working with $batch (https://service.sap.com/sap/support/notes/1869434)"

},

"errordetails": []

}

}

"

The error is logged in quality system, it is visible in ST22 and it occurs when the system try to execute method GET_IMPLEMENTATION of standard class /IWBEP/CL_MGW_DPC_FACTORY.

Below a part of the Code:

"

READ TABLE gt_dpc_class INTO ls_runtime_class

WITH TABLE KEY class_name = iv_class_name

technical_name = iv_technical_name

namespace = iv_namespace

version = iv_version.

IF sy-subrc = 0.

ro_implementation = ls_runtime_class-runtime.

ELSE.

TRY.

----> CREATE OBJECT ro_implementation TYPE (iv_class_name).

CATCH cx_sy_create_object_error INTO lx_create_obj_error.

RAISE EXCEPTION TYPE /iwbep/cx_mgw_tech_exception

EXPORTING

previous = lx_create_obj_error.

ENDTRY.

ls_runtime_class-class_name = iv_class_name.

ls_runtime_class-technical_name = iv_technical_name.

ls_runtime_class-namespace = iv_namespace.

ls_runtime_class-version = iv_version.

ls_runtime_class-runtime = ro_implementation.

INSERT ls_runtime_class INTO TABLE gt_dpc_class.

ENDIF.

"

The variable "iv_class_name" contains our custom class which has been redefined by the class CL_SADL_GTK_GENERIC_DPC when that class was in 1511 version.

When the system try to create object ro_implementation now it would expect an input parameter.

We have done our checks and we noticed that the superior class of our custom class , class CL_SADL_GTK_GENERIC_DPC, now (S4/HANA 2020 SP02) has a new CONSTRUCTOR method that it didn't have before (S4/HANA 1511). Now that new constructor method would expect a new obligatory parameter call IO_BUNDLE_PROVIDER.

In S4/HANA 1511 version class CL_SADL_GTK_GENERIC_DPC did not have a CONSTRUCTOR method and therefore the CONSTRUCTOR was determined by its superior class, class CL_SADL_GW_GENERIC_DPC, that it woudn't expect any obligatory input parameter.

A couple of questions:

Inherited classes shouldn't keep backward compatibility?

If in the 2020 version of S4 / HANA our custom class is now based on the new constructor of the upper class CL_SADL_GTK_GENERIC_DPC which expects a mandatory parameter to create the referenced object, why in the GET_IMPLEMENTATION method of the / IWBEP_DPC_MGACTORY_ the adaptation of the new mandatory parameter required IO_BUNDLE_PROVIDER was not done?

We noticed that until version 1909 the GET_IMPLEMENTATION method of the / IWBEP / CL_MGW_DPC_FACTORY class is not change.

Summary: in 1511 our app works and in 2020 our app doesn't work anymore and NOTHING in our custom code is changed.

Have any of you had our problems?
Is there a way to go back to the old way?

Thanks in advance,