Skip to Content
Product Information
Author's profile photo Melvin Hidalgo

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
  • Mail
  • 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

 

 

 

Assigned Tags

      23 Comments
      You must be Logged on to comment or reply to a post.
      Author's profile photo Johannes Schneider
      Johannes Schneider

      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

      Author's profile photo Horst Schaude
      Horst Schaude

      Hello Melvin,

      Precisely observed. 🙂

      Let me add one or two points to this.

      1. As you are mentioning that the SAP Platinum Engineering Libraries are " existing internal functions from SAP" they are not revised by the documentation team.
        Therefore it may happen that some values like that SADL UUID is not available for the "normal" PDI developer.
      2. Regarding documentation: I have asked the colleagues some tie ago if they are willing to provide documentation which would be incorporated in the documentation available via help.sap.com or direct in the SDK.
        Unfortunately and obviously without any success. 🙁
        I will take this blog as a new starting point for my request.

      Bye,
      Horst

      Author's profile photo Melvin Hidalgo
      Melvin Hidalgo
      Blog Post Author

      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.

       

       

      Author's profile photo Vincent Vancalbergh
      Vincent Vancalbergh

      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.

      Author's profile photo Josip Spajic
      Josip Spajic

      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.

      Author's profile photo Jan Sipkovsky
      Jan Sipkovsky

      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

      Author's profile photo Former Member
      Former Member

      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

      Author's profile photo Venkatesh Govindan
      Venkatesh Govindan

      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

      Author's profile photo Rufat Gadirov
      Rufat Gadirov

      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

       

      Author's profile photo Former Member
      Former Member

      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:

      Reuse libaries:
      • AddonSupport
      • Binary
      • BOAction
      • BPHierarchy
      • Calendar
      • ChangeHistory
      • Codelist
      • Context
      • CSV
      • CurrencyConversion
      • Date
      • DateTime
      • DocumentService
      • Duration
      • Fuzzy
      • GlobalDateTime
      • Hash
      • LanguageCode
      • LocalDateTime
      • LocalizedNormalizedDateTime
      • Mail
      • MDRO
      • NumberRange
      • Numeric
      • NumericCharacter
      • Odata
      • OrgUnitUtils
      • Output
      • OutputManagementUtilities
      • Performance
      • QuantityConversion
      • RetailExecution
      • SADLQuery
      • SalesHelpFunctions
      • SessionContext
      • TextAnalysis
      • Time
      • Trace
      • URL
      • UserUtils
      • Utilities
      • UUID
      • WebDav
      • WebserviceUtilities
      • ZXUtil

       

      Author's profile photo SAMUELE BARZAGHI
      SAMUELE BARZAGHI

      Info about method PSMTurnOff

      Disable PSM Check for a Solution in SAP Cloud Applications Studio

       

      Author's profile photo Dhruvin Mehta
      Dhruvin Mehta

      Thanks for this amazing blog!

      Just want to add one more point  and one more doubt.

      1. if we use Platinum Engineering library we cant raise a hig prio incident if it doesnt work.
      2. Above code for sending email somehow is not working for me! 🙁

      Kindly suggest.

      Dhruvin

      Author's profile photo Hanumath Kanamarlapudi
      Hanumath Kanamarlapudi

      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

       

      Author's profile photo Horst Schaude
      Horst Schaude

      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

      Author's profile photo Hanumath Kanamarlapudi
      Hanumath Kanamarlapudi

      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

      Author's profile photo Horst Schaude
      Horst Schaude

      Hello Hanu K,

      Maybe Stefan Kiefer can help you.

      Bye,
      .    Horst

      Author's profile photo Hanumath Kanamarlapudi
      Hanumath Kanamarlapudi

      Thanks, Horst.

      Author's profile photo Melvin Hidalgo
      Melvin Hidalgo
      Blog Post Author

      Hanumath, were you able to use that Odata method?

      Author's profile photo Hanumath Kanamarlapudi
      Hanumath Kanamarlapudi

      No, I couldn't.

       

      Hanu

      Author's profile photo Solène ROQUES
      Solène ROQUES

      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 :

      import AP.Common.GDT;
      import DocumentServices.Global;
      
      Author's profile photo Melvin Hidalgo
      Melvin Hidalgo
      Blog Post Author

      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!

      Author's profile photo Solène ROQUES
      Solène ROQUES

      Thanks !

      Author's profile photo Jens Niemeyer
      Jens Niemeyer

      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

      • I can not find the libary!
      • Code completions does not give my and "fuzzy" path!
      • Which import do a have to use?
      • Where is some documentation on that?

      Any help would be appricated

      Jens