Wednesday 13 December 2017

How to track calls to SICF

https://blogs.sap.com/2013/07/12/logging-calls-to-your-gateway-service-sicf-for-beginners/

Hadn't come across this before, good to see we can do it from inside as well as outside SAP...

Monday 25 September 2017

What is SPAU?


Been asked this a couple of times recently, so thought it worth saving here for posterity! 

During the normal day to day operation of an SAP system, OSS notes and other client-approved modifications to the standard code may be made to accommodate business process and requirements in ways that SAP didn’t provide for when they wrote their computer programs. This obviously changes the state of the code (by which I mean, there are lines of code that SAP don’t expect to be there).

As such, when we come to do an upgrade, whereby SAP might be updating the “official” version of the code, there may conflicts between what SAP expect to be there, and what actually is there.

When an upgrade is done, any objects that have been affected by the upgrade are offered to the developer in the SPAU list. The developer will review the code and compare the before upgrade and after upgrade code, with the option to merge existing bespoke and OSSNoted code with the newly minted SAP Upgraded code.

The process of reviewing and updating is known as “SPAU” after the transaction where the comparison is done. It generates a transport, because after the patch/upgrade is done, there are further “changes” (i.e. re-merging the bespoke/OSSNote code into the standard).

Usually  the upgrade is done, then the SPAU list is processed, which generates a transport, in the DEV box. Once this has been completed, the same occurs in the QAS box, with the transport from DEV going through to QAS and taking care of most, if not all, of the SPAU entries in the QAS box.


The assumption here is that the boxes are all roughly consistent, so any SPAU entries taken care of in DEV and QAS should take care of any in PRD….

Tuesday 16 May 2017

UI5 oData Gotcha...


Sending a request to my oData service with 2 filter parameters (Postcode and Distance)

/sap/opu/odata/sap/YPD_PL1_SRV/OTabset?$filter=Postcode eq 'TQ8 8JT' and Distance eq '10'

was yielding me the following error:

<message xml:lang="en">Invalid parametertype used at function 'eq' (Position: 36)</message>

And the problem was... since my SEGW declaration of Distance was Edm.Decimal the interface gets a bit pissy that it's being asked to look at something in single-quotes...

So the fix is, remove the single quotes on that variable - 

Now we have:

/sap/opu/odata/sap/YPD_PL1_SRV/OTabset?$filter=Postcode eq 'TQ8 8JT' and Distance eq 10

and this yields my beautiful oData:


Yay! Simple mistake, but I couldn't find it when Googling for Invalid ParameterType and it took me a while to spot, so hopefully helpful to someone out there.

Thursday 19 January 2017

Count von Count. I love to count.... normally


In trying to improve performance on one of my UI5 applications, I've spotted that there's a dozen or so calls to count the number of entries that sit in an entityset.


Now it's quite straightforward to switch this off using 

oDatamodel.setCountSupported(false)

from https://archive.sap.com/discussions/thread/3519523

However, WHY would I want a count of all this guff? I don't even know if it's being used yet, and even when it's being used, I just want the damn list. I can do a count of items in a list using javascript, it's one of the array properties!!??

Then it occurred to me, it's for the FIORI tiles, if you're using them : The beautiful poster-child of SAP's UX in all it's glory : 



Yeah, looks beautiful, but it's not in my design, so I'm going to get rid of these counts. Owing to the way JS pings these requests all off in parallel, I'm not expecting it to make much of a difference to performance, but at least it will make my console that much less cluttered.