C4C: When PDI Finalize logic is re-triggered
Some background information recently obtained via an SAP incident regarding the finalize logic (finalize means that BeforeSave is triggered):
Some background information recently obtained via an SAP incident regarding the finalize logic (finalize means that BeforeSave is triggered):
In case you're facing a C4C dump (500 Internal Server Error), create an incident from it and find that the the Incident Context => /SAP/ABAP/RuntimeError file shows the error "Object instance creation of action rejection implementation class "<PDI solution namespace>_CL_ACTION_VALIDATION" of action "<PDI solution namespace>_<ID>" on node "ROOT" in BO "<BO>" failed" - you have to do a full solution activation to resolve the issue.
If you want to add an extension field to the standard c4codatapi service via Cloud Application Studio, you will find that "c4codataapi" is not listed in the ODATA dropdown when you create the ODATA Extension (.xodata) object.
As C4C development systems (that are in development) use a different namespace than non-dev systems, one challenge is to adjust the CPI mapping of extension fields when moving to test or production.
When you are finished with development and unit testing in your dev environment, naturally, all CPI iflow mappings that involve extension fields would be mapped to the DEV namespace. If you simply move this iflow/mapping to your test system, it won't work, as the DEV namespace is not known in the test/production environment.
The C4C object identifier webservice (CommunicationServicesManagementQueryObjectIdentifierMappingIn/Query Object Identifier Mappings) only works if you supply the correct Remote and Local ID type code. Thankfully, the documentation (linked above) provides a list of type codes for commonly used objects, however, the employee business object is missing.
To make it short, the type codes for employee are:
I recently needed to modify the body of an HTTP response in a BSP page. Previously, the request was simply returning a status 403. This was done using request->set_status. So I assumed that I simply had to do request->set_cdata to set the HTML body corresponding to the status. But this was incorrect.
The correct approach was to use me->write (me referring to the BSP page in the DO_REQUEST method). I know too little about BSP to explain why the request and the BSP page are two different objects.
I came across this interesting article by Paul Hardy yesterday and in one of his screenshots he's using a pretty cool header/signature for his methods.
Surveys in C4C are a bit complicated. Here's a quick overview of the data structure (based on Ticket/ServiceRequest).
In case you're operating multiple tenants and find it tedious to monitor incidents created in each tenant separately, please check out SAP note 2611988, which explains the two available options Central Helpdesk Scenario - CHD and Customer Competence Center Scenario - CCC.
One of the things that's a bit annoying in C4C coding is that you can't check if a business document is locked. Or so I thought. I just googled this issue again and came across this blog post.