Product Information
SAP Platinum Engineering Libraries
2023 Update – This Blog Post is referenced by SAP’s Official Support Note:
I was told by a colleague that this Blog Post is being referenced as part of the official SAP Support Note regarding SAP Platinum Engineering Libraries, I’ll be leaving the link below:
SAP Support Note on Platinum Engineering Libraries
Original Post:
Since I haven’t seen any information about this at all, I would like to start this post, so we can share our experiencies with this so-called Platinum Libraries.
Let’s start with the QA
1. What is an SAP Reuse Library?
These are basically a collection libraries with functions that SAP offers to make simple actions, conversions, etc. One good example of this will be the following to convert a string to a Date.
var forDate = Date.ParseFromString("2017-01-01T00:00:00")
2. SAP Platinum Engineering Libraries?
Yes, there’re a group of these reuse libraries that offer really nice functionalities.
What I believe so far, is that these are existing internal functions from SAP, that they’ve been using all this time to accomplish some of the things that we as ‘Partners’ didn’t have access, at least until now.
2.1. How to access the Platinum Engineering Libraries?
This is the easiest part, and you’ll be able to visualize all the different functions that are available; in order to do this, just add the following two import lines to your ABSL code
import AP.PlatinumEngineering;
import AP.PlatinumEngineering.Public;
Then, just click Ctrl + Space, and navigate through all the wonderful collection:
And this is just an example of one collection called UserUtils, there’re a lot more.
Looks cool doesn’t it? But there’s something about it that gets me to think
2.2. Main Issue using this Libraries
The main issue that I have encounter with this Libraries, is that some of the really cool ones, for example the one that let’s you execute a SADL Query has no information at all about the parameters that must be set.
Check this example:
Check that the function receives a SADL_UUID, this I have absolutely no idea where to get it.
And the same happens with a lot of them, some are pretty much straight forward, but then you find a really cool function like this, and you have no clue about how to use it.
3. Why there’s no documentation on this?
Well, at least I haven’t been able to find it.
But the main thought that comes to my mind is that all of these are still experimental, and SAP is going to be delivering them officially at some point (please note that I’m not sure of this, perhaps a colleague from SAP can confirm my theory)
So, please comment below your experiences with this Libraries and if you were able to make a hard one work please share it with us, I’ll leave one myself.
4. Platinum Engineering Examples
I’ll assume you already made the imports mentioned on 2.1.
4.1. Sending an Email via ABSL
Note: Thanks to Solène ROQUES for reminding me of adding the missing imports to this code snippet
import AP.Common.GDT;
import DocumentServices.Global;
//Create sender
var sender : EmailURI;
sender.content = "NoReply@myXXXXXX.sapbydesign.com";
//Assign recipients (receivers)
var recipients : EmailRecepientDataTable;
var dat : EmailRecepientData;
dat.EmailUri.content = "Destination@Email.com";
dat.EmailRecepientTypeCode = "TO";
recipients.EmailData.Add(dat);
//Assign the content of the Email
var bodyMail : XPEStringTab;
bodyMail.XPEString.Add("This is the content of the email");
//Call SAP Platinum Engineering Function
Mail.Send("Email Subject", bodyMail, sender, recipients);
5. List of Current Libraries
– Thanks to Former Member
- AddonSupport
- Binary
- BOAction
- BPHierarchy
- Calendar
- ChangeHistory
- Codelist
- Context
- CSV
- CurrencyConversion
- Date
- DateTime
- DocumentService
- Duration
- Fuzzy
- GlobalDateTime
- Hash
- LanguageCode
- LocalDateTime
- LocalizedNormalizedDateTime
- MDRO
- NumberRange
- Numeric
- NumericCharacter
- Odata
- OrgUnitUtils
- Output
- OutputManagementUtilities
- Performance
- QuantityConversion
- RetailExecution
- SADLQuery
- SalesHelpFunctions
- SessionContext
- TextAnalysis
- Time
- Trace
- URL
- UserUtils
- Utilities
- UUID
- WebDav
- WebserviceUtilities
- ZXUtil
Thanks, and Pura Vida.
Melvin
Hello Melvin,
as you already mentioned in your blog there are some guides on how to use the platinum engineering library for example for writing an email in absl or handling timestamps etc.
In my over one year trying to research do researches for the SAP C4C development i never saw a whole documentation for this. Some Platinum Engineering devs are sometimes here if there is a specific error with something in their library and i think i remember there is also a forum for their development but i couldn't find it or i dont remember it right.
Kind Regards,
Johannes
Hello Melvin,
Precisely observed. 🙂
Let me add one or two points to this.
Therefore it may happen that some values like that SADL UUID is not available for the "normal" PDI developer.
Unfortunately and obviously without any success. 🙁
I will take this blog as a new starting point for my request.
Bye,
Horst
Horst,
Thanks for your comments on this.
And yes, please feel free to use this post as you wish, the idea is to have all the insights and comments from all the colleagues, share some thoughts and add some more content to it.
Horst, Allow me to rant for a bit.
I'd like to add that it has been (practically) 5 years since this question and we are still waiting. Adding meta-capabilities to an SDK is critical to allowing people to really empower themselves and should be prioritzed over expanding the base application. SAP Business ByDesign has been around for 15 years and people are still requesting basic additions via the Influence forum. This floods the system with changes a Partner should be able to handle by themselves. Less trivial requests means SAP has more time to work on making the application stronger.
Where's the implementation of industry standards? Like, Intellisense that doesn't take 10 seconds to pop up (if ever). Source Control integration? XML Libraries (we're still manipulating text strings like its the 90s, manually escaping them a lot of the times)? JSON Libraries for creating json data. Since the base application is a black box, how about documentation about what happens in what order internally? What is done asynchronously and what is done synchronously? How about being able to pass actual objects to Reuse Libraries (or as a stopgap, being able to convert an object to an elementsof versions and then "apply" the changed elementsof back to the BO)? How about some consistent datetime handling (we have global datetimes, local datetimes, just datetimes, but only globals have the "useful" functions, and god forbit you try to manipulate an "end date", I just flatout refuse anymore).
You point to the Influence Forum and run away quickly. But the Influence Forum is where good ideas go to die. After 3 years of ByDesign I've given up on trying to make it better. I've given up on expecting SAP to make it better. And it seems SAP have as well. The port of SAP Cloud Applications Studio to VS2015 should have happened somewhere around 2015, not 7 years later.
I can't belive I have been working on ByD for over 2 years and by pure chance one of the developers directed me to this platinum libraries a couple of hours ago in a community post answer.
Everything Vincent said, as usual, is completely correct and should be taken very seriously.
Best regards.
very good post. Gentleman (Knut Heusermann Horst Schaude Stefan Kiefer ), do you think it's real we can expect at least some overview which libraries work and which does not?
I understand you're probably getting such questions often and it's already anoying, but I think we all agree some of the platinum eng. functions would be(are?) really powerful and without single line of documentation it's so frustrating just to 'try and hope' with guessing the inport params. I'm used already that C4C has so much limitations compared to all other environments I ever worked but would be really great to have at least a little info - to expect/plan into the future.
Thanks a lot for any update! And best to all of you 🙂
Jan
Hi Melvin,
Thanks for sharing, this is great!
Currently i have a question on the function "Hash.EncryptString()". I don't know how to use the parameters . Do you have some code on how to use it ?
Thanks and Regards.
Qiang
Hi Qiang,
Were you successful in using Hash Library for decryption / Encryption? If yes , please share some information.
We are in need of Encrypting and Decrypting a JSON string. Thanks in Advance.
Regards
Venkatesh
Hello Melvin,
thank you for this very useful Information!
I tried this approach in Cloud Studio with C4C as backend. But unfortunately, it seems that the namespace "import AP.PlatinumEngineering.Public" is not available in C4C, only in ByD. Thus, I cannot use the respective functions.
Best regards, Rufat
That's strange, for me the libraries are available in C4C also.
Also, I have compiled a list of Reuse libraries, as documentation is lacking:
Info about method PSMTurnOff
Disable PSM Check for a Solution in SAP Cloud Applications Studio
Thanks for this amazing blog!
Just want to add one more point and one more doubt.
Kindly suggest.
Dhruvin
Thanks, Melvin for the excellent blog.
I have a question regarding the current available list of reuse libraries. In the list I would like to use a function related to consumption of ODATA API on the ByDesign reports.
Please let me know if that function is available to use and can I execute the report and look into the data.
Knut Heusermann Horst Schaude Any suggestions on this would be great help for us to achieve the customer need.
Thanks.
Regards
Hanu K
Hello Hanumath,
The Platinum Engineering libraries are not an official part of the SDK shipment.
Therefore my effort to get them documented had no success. 🙁
As Dhruvin mentioned these libraries are not supported w.r.t. raising incidents.
Therefore if you need any function which you did not find in the SDK, please raise an idea request: https://influence.sap.com/sap/ino/#/campaign/903
HTH,
. Horst
Thanks, Horst Schaude .
But do you have any other sources to get the information just alone on the requested Method?
Odata.ReportExecute is the Library and method I am looking for to execute the ODATA API on the ByDesign reports.
I will raise an idea request too.
Regards
Hanu K
Hello Hanu K,
Maybe Stefan Kiefer can help you.
Bye,
. Horst
Thanks, Horst.
Hanumath, were you able to use that Odata method?
No, I couldn't.
Hanu
Dear Melvin, thanks a lot for this amazing post !
A little advice for beginners like me, if you are trying Melvin's script to send emails, do not forget to add the two following libraries to your absl script :
Thanks for your comment Solène ROQUES I totally forgot about adding those imports, I'll be updating the code and leaving you a greeting message!
Thanks !
Hello,
the last days I did some investigation for an ABSL based dublicate check for my custom BO.
I found this article (used Platiunum before for E-Mails).
I can imagine, that the lib "Fuzzy" is related somehow to my dublicated check, BUT
Any help would be appricated
Jens