cancel
Showing results for 
Search instead for 
Did you mean: 

Calling a CAP Service from SAP MDK, getting an : Error: Failed to get Java object by ID. id=732

07-05-2026 8:55 PM
GOVARDAN Explorer
181 views 2 comments
0 Likes
SAP Managed Tags
Subscribe

hi Team,  

we are executing an action from a rule.js file as shown below. 

export default async function CreateDeliveryDocket( context) 
{
    let l_var_CreateDeliveryDocketPromise ;
    try {
        
            let pageProxy = context.getPageProxy ? context.getPageProxy() : context;
            let appData = pageProxy.getAppClientData();
            
            if(appData._isCreateDocketInProgress === true)
            {

                await context.executeAction({
                        "Name": "/ABCDSyncApp/Actions/Docket/GenericMessage.action",
                        "Properties": {
                            "Title": "Information",
                            "Message": "Create Delivery Docket is already in progress.",
                            "OKCaption": "OK"
                        }
                    });
                return;
            }


            appData._isCreateDocketInProgress = true; // this is used at OnCreatePageReturning.js
            await ABCDSyncLogger(context,'Error',"1.CreateDeliveryDocket : Start",''); 
           
           let l_var_payload =   await getDeliveryDocketPayload(context,'CREATE');
            await ABCDSyncLogger(context,'Error',"1.2.Payload received from getDeliveryDocketPayload "+JSON.stringify(l_var_payload),''); 

        // Check network connectivity       
        let l_var_NetWorkAvaialbility =  isNetworkConnectivityAvailable(context);
         
                    
            if (l_var_NetWorkAvaialbility === true)
            {
                        await ABCDSyncLogger(context,'Error',"1.3.Network Connectivity Available: " + l_var_NetWorkAvaialbility,'');
                        await ABCDSyncLogger(  context, 'Error', "1.4.Main Payload Passed : " + JSON.stringify(l_var_payload), '' );
 
                    let l_var_result = await ExecuteAction(context, "/ABCDSyncApp/Actions/Docket/CreateDeliveryDocket_G/CreateDeliveryDocket_Online.action", l_var_payload);
                    let l_var_resultData = l_var_result && l_var_result.data ? l_var_result.data : {};
                    l_var_resultData                            =  l_var_result?.data || {};
                    let l_var_appData                           =  context.getAppClientData();
                    l_var_appData.createdDocketId               =  l_var_resultData.docketId || "";
                    l_var_appData.createdDocketNumber           =  l_var_resultData.docketNumber || "";
                    l_var_appData.createdScheduleOccurrenceId   =  l_var_resultData.scheduleOccurrenceId || "";
                    l_var_appData.createdDocketStatus           =  l_var_resultData.status || "";
                    let l_var_docketNumber = l_var_resultData.docketNumber || l_var_resultData.DocketNumber || "Created";
                    await  ABCDSyncLogger(context,'Error',"Docket Number Obtained from Back End : " + l_var_docketNumber    ,'');
                    return context.executeAction({
                                                    "Name": "/ABCDSyncApp/Actions/Docket/GenericMessage.action",
                                                    "Properties": 
                                                    {
                                                        "Title": "Success",
                                                        "Message": "Delivery docket created successfully.\nDocket Number: " + l_var_docketNumber,
                                                        "OKCaption": "OK"
                                                    }
                                                });       
            }
		  } catch (error) 
    {
         DebugMessage(context, "Error Caught " + JSON.stringify(error.stack), "Execute_CreateDeliveryDocketMDK_Function");
        ABCDSyncLogger(context,'error',"Error occurred while creating delivery docket."+error.stack,'');
    }finally
             {
                    l_var_appData._isCreateDocketInProgress = false;
             }  
}			 

The ExecuteAction rule file in turn executes the MDK Action : as shown below

/**
 * Describe this function...
 * @Param {IClientAPI} clientAPI
 * @Param {IContext} context
 */
import ABCDSyncLogger from "../../../Utils/ABCDSyncLogger";
export default async function ExecuteAction(context,p_var_Action_Path,p_var_Action_Payload) 
{
   await  ABCDSyncLogger(context, "Executing action ::" + p_var_Action_Path + " with payload ::" + JSON.stringify(p_var_Action_Payload),"");
   let l_var_Result = '';
        try{


                      l_var_Result = await context.executeAction(
                                {
                                    "Name": p_var_Action_Path,
                                    "Properties": 
                                    {
                                        "Target": 
                                            {
                                                "Function": 
                                                {                                                   
                                                    "Parameters": p_var_Action_Payload                                                    
                                                }
                                            }    
                                    }
                                });
                                return l_var_Result;
                              







        }catch(err){
            ABCDSyncLogger(context, "Error occurred while executing action ::" + p_var_Action_Path + " :: " + err.message,"");
        }
}

The MDK Action is as shown below

{
	"_Type": "Action.Type.ODataService.CallFunction",
	"ActionResult": {
		"_Name": "CreateDeliveryDocket_Online"
	},
	"OnSuccessLog": {
		"Level": "Debug",
		"Message": "Delivery Docket Created Successfully"
	},
	"OnFailureLog": {
		"Level": "Debug",
		"Message": "Unable to create Delivery Docket"
	},
	"ShowActivityIndicator": true,
	"ActivityIndicatorText": "Creation In Progress",
	"Target": {
		"Service": "/ABCDSyncApp/Services/ABCD_ORG_Scheduling_Online.service",
		"Function": {
			"Name": "createDeliveryDocketMDK"
		}
	}
}

the action is  executing the cap service, and it throws error as shown below. The Action or payload is not even reaching the cap service, the below error is occuring at the mdk framework itself. The parameters are properly passed. 

 

 

Error running action propagating error Action.Type.ODataService.CallFunction.3: Error: Failed to get Java object by ID. id=732, class=com/sap/cloud/mobile/odata/DataService. com.tns.NativeScriptException: Attempt to use cleared object reference id=732 : Error: Failed to get Java object by ID. id=732, class=com/sap/cloud/mobile/odata/DataService. com.tns.NativeScriptException: Attempt to use cleared object reference id=732\n at ODataActionImporter.getDataQuery (file:///data/data/com.sap.mobileservices.client/files/app/vendor.js:2:1801060)\n at file:///data/data/com.sap.mobileservices.client/files/app/vendor.js:2:1800330\n at new Promise (<anonymous>)\n at ODataActionImporter.execute (file:///data/data/com.sap.mobileservices.client/files/app/vendor.js:2:1800269)\n at ODataServiceProvider.callFunction (file:///data/data/com.sap.mobileservices.client/files/app/vendor.js:2:1750417)\n at file:///data/data/com.sap.mobileservices.client/files/app/vendor.js:2:1728788\n at new Promise (<anonymous>)\n at OData.callFunction (file:///data/data/com.sap.mobileservices.client/files/app/vendor.js:2:1728689)\n at ODataService.callFunction (file:///data/data/com.sap.mobileservices.client/files/app/vendor.js:2:815346)\n at file:///data/data/com.sap.mobileservices.client/files/app/vendor.js:2:107457

 

 

0 Likes

Accepted Solutions (0)

Answers (1)

Answers (1)

bill_froelich
Product and Topic Expert
Product and Topic Expert
0 Likes

I would suggest enabling Tracing Categories and set the log level to Trace and try it again to see if there is better information logged related to call.  

If you could also please share the $metadata for your CAP service so we can see how the action is defined that would also be very helpful.

Thanks,

--Bill

GOVARDAN
Explorer
0 Likes
$metadata of the CAP service is as follows , <Action Name="createDeliveryDocketMDK" IsBound="false"> <Parameter Name="plantId" Type="Edm.String" MaxLength="4" Nullable="false"/> <Parameter Name="plantName" Type="Edm.String" MaxLength="200"/> <Parameter Name="deliveryDate" Type="Edm.Date" Nullable="false"/> <Parameter Name="deliveryTime" Type="Edm.TimeOfDay"/> <Parameter Name="soldToId" Type="Edm.String" MaxLength="20" Nullable="false"/> <Parameter Name="soldToName1" Type="Edm.String" MaxLength="50"/> <Parameter Name="soldToName2" Type="Edm.String" MaxLength="50"/> <Parameter Name="shipToId" Type="Edm.String" MaxLength="20" Nullable="false"/> <Parameter Name="shipToName1" Type="Edm.String" MaxLength="50"/> <Parameter Name="shipToName2" Type="Edm.String" MaxLength="50"/> <Parameter Name="custPoNumber" Type="Edm.String" MaxLength="35"/> <Parameter Name="contractNo" Type="Edm.String" MaxLength="50"/> <Parameter Name="shotId" Type="Edm.String" MaxLength="20"/> <Parameter Name="locationText" Type="Edm.String" MaxLength="200"/> <Parameter Name="notes" Type="Edm.String" MaxLength="500"/> <Parameter Name="offlineDocketNumber" Type="Edm.String" MaxLength="60"/> <Parameter Name="operatorSigned" Type="Edm.Boolean"/> <Parameter Name="operatorSignedTimestamp" Type="Edm.DateTimeOffset" Precision="7"/> <Parameter Name="operatorSignedBy" Type="Edm.String" MaxLength="80"/> <Parameter Name="operatorSignature" Type="Edm.String"/> <Parameter Name="customerSigned" Type="Edm.Boolean"/> <Parameter Name="customerSignedTimestamp" Type="Edm.DateTimeOffset" Precision="7"/> <Parameter Name="customerSignedBy" Type="Edm.String" MaxLength="80"/> <Parameter Name="customerSignature" Type="Edm.String"/> <Parameter Name="vehicleOperators" Type="Collection(ABCD.schedulingapp_phase2.schedulingService.ABCD_schedulingapp_phase2_VehicleOperatorInput)" Nullable="true"/> <Parameter Name="products" Type="Collection(ABCD.schedulingapp_phase2.schedulingService.ABCD_schedulingapp_phase2_ProductInput)" Nullable="true"/> <Parameter Name="services" Type="Collection(ABCD.schedulingapp_phase2.schedulingService.ABCD_schedulingapp_phase2_ProductInput)" Nullable="true"/> <Parameter Name="additional" Type="ABCD.schedulingapp_phase2.schedulingService.ABCD_schedulingapp_phase2_DocketAdditionalInput"/> <ReturnType Type="ABCD.schedulingapp_phase2.schedulingService.return_ABCD_schedulingapp_phase2_schedulingService_createDeliveryDocketMDK"/> </Action>