Technical Articles
Multiple Shades of ABAP!!!
Yes, you heard it right shades or different versions of ABAP. With changing deployment options and the way, we can enhance business solutions in addition to the classical extensibility, leads to different versions of ABAP currently.
So, we will be discussing these different versions of ABAP in this blog and see different constrains in versions of ABAP language. Let’s start …
Versions of ABAP language
ABAP VERSION | Meaning | Version ID |
Standard ABAP (Unicode) | This is the universal version of ABAP which has all ABAP elements in scope in a UNICODE system. Unicode checks are performed in programs of this type. | X |
ABAP for Key Users | This version is designed for key users to do the enhancement implementations in secure manner. The rules of standard ABAP apply but very restricted set of ABAP language elements are allowed with restriction on access to external repository objects. It is used in web editor inside In-App extensibility tools(custom fields and logic, custom business object etc.) | 2 |
Static ABAP with restricted object use | In this version, rules of Standard ABAP(Unicode) apply, with restriction on access to external repository objects. Dynamic data declaration and dynamic program creation is not allowed . | 3 |
Standard ABAP with restricted object use | In this version of ABAP, the rules for Standard ABAP (Unicode) apply, with restrictions on access to external repository objects. Dynamic language elements are not forbidden in this version | 4 |
ABAP for SAP Cloud Platform | This version is designed for development in SAP Cloud platform with restricted set of ABAP language elements. | 5 |
Obsolete ABAP (Non-Unicode) | This version is obsolete and is no longer supported. Version ID is blank in this case | – |
Every ABAP program has an attribute “ABAP Language version” and by default “Standard ABAP (Unicode)” is selected on the program creation dialog box. But if we check the value help, we can see and can select from all the available versions as shown below.
So, now when you know the different ABAP version and know that there are different constraints with versions other than Standard ABAP (Unicode) version, you must be curious to know what all language element we can use with all these different versions and how we can find all these details… right?? So, let’s see how we can find that.
SAP has provided standard report “ABAP_DOCU_VERSION_WHITELIST” to list all language elements, which are allowed, based on language version. For e.g. to check the available elements list for “ABAP for key users”. Select language version 2 on selection screen and execute and we have the list of whitelisted objects for version 2 as shown below.
Alternatively, you can check the CDS view “ARS_APIS_RELEASED_FOR_C1” to get the same list.
Similarly, you can see the whitelisted objects for other versions using report “ABAP_DOCU_VERSION_WHITELIST”.
For “ABAP for SCP” you can alternatively use CDS view “ARS_APIS_RELEASED_FOR_C1_SCP”
As we can see below, only 33 whitelisted object type are available in “ABAP on SCP” version as of now and we must see increase in this number with future releases.
Object Type | Object Name | State |
DOMA | ABAP_BOOLEAN | RELEASED |
DOMA | XSDANY | RELEASED |
DOMA | XSDBOOLEAN | RELEASED |
DOMA | XSDCURRCODE | RELEASED |
DOMA | XSDDATETIME_LOCAL | RELEASED |
DOMA | XSDDATETIME_LOCAL_DT | RELEASED |
DOMA | XSDDATETIME_LONG_Z | RELEASED |
DOMA | XSDDATETIME_OFFSET | RELEASED |
DOMA | XSDDATETIME_Z | RELEASED |
DOMA | XSDDATE_D | RELEASED |
DOMA | XSDLANGUAGE | RELEASED |
DOMA | XSDQNAME | RELEASED |
DOMA | XSDTIME_T | RELEASED |
DOMA | XSDUNITCODE | RELEASED |
DOMA | XSDUUID_BASE32 | RELEASED |
DOMA | XSDUUID_BASE64 | RELEASED |
DOMA | XSDUUID_CHAR | RELEASED |
DOMA | XSDUUID_RAW | RELEASED |
DTEL | ABAP_BOOLEAN | RELEASED |
DTEL | FARR_ALLOCABLE_AMT | RELEASED |
DTEL | FARR_CHANGE_TYPE | RELEASED |
DTEL | FARR_TRANSACTION_PRICE | RELEASED |
INTF | IF_FARR_CHANGE_TYPE_DETN | RELEASED |
TABL | FARR_S_CHG_TYPE_RESULT_BADI | RELEASED |
TABL | FARR_S_CONTR_CHG_TYPE_BADI | RELEASED |
TABL | FARR_S_NEW_POB_CT_DET_BADI | RELEASED |
TABL | FARR_S_OLD_POB_CT_DET_BADI | RELEASED |
TABL | FARR_S_PRICE_ALLOC_CONTR_BADI | RELEASED |
TTYP | FARR_TH_CHG_TYPE_RESULT_BADI | RELEASED |
TTYP | FARR_TH_NEW_POB_CT_DET_BADI | RELEASED |
TTYP | FARR_TH_OLD_POB_CT_DET_BADI | RELEASED |
TTYP | FARR_TT_PRICE_ALLOC_POB_BADI | RELEASED |
TTYP | FARR_TT_PRICE_ALLOC_RSLT_BADI | RELEASED |
Okay, with this we have seen how to find out the whitelisted objects list for different ABAP versions.
Another important standard program that SAP has provided is “DEMO_ABAP_VERSIONS”. This program can be used to do the code syntax check for different ABAP versions.
And on checking the source code you will see if the syntax is allowed in the selected language version or now. For e.g. in ABAP for key users, direct select from transparent tables is not permitted, so if we try to do the same, we will get the syntax error message as shown below. The complete list of allowed ABAP statements for Key User extensions are listed here.
But, if we check the same with “Standard ABAP version”, we get no error as all ABAP language elements are allowed there.
Another way to do the syntax check for your custom code readiness for cloud is by using ATC check variant “SAP_CP_READINESS_REMOTE”. Check this wonderful blog here to know more on this.
With this I will stop here and hope that you will find it useful. Thanks!!
Reference: Standard SAP documentation here.
Mmmmmm.... Abap for "key users". I have to wonder who those key users are. Are they business people that can now write queries?
With that said, the only types not obsolete are:
I understand why standard and cloud platform would be used. I just can't understand the ABAP for key users. Who are the key users? I guess I keep coming back to that question.
Interesting blog - I never even noticed the ABAP Language Version. Just clicked save after entering my title and type.
Of course I still see the editor lock box, and have to laugh at all the memories that brought back. Developers would click that back in the day and then transport it with the lock clicked on. Not good. But funny that it is still there. 🙂
Thanks Michelle Crapo for reading the blog and sharing your thoughts.
hmm..who are the key users..tricky question :).... So, according to me these will be the users who have basis understanding of how code works and given minimal training can write simple lines of code... difficult ..but you normally found couple of such people around you among the business users :)..
Also, Key user or In-App extensibility is not all about code, there are other tools like, custom CDS views, Custom fields , UI Adaptation etc. where programming knowledge is not required and given basic training users should be able to make use of these user friendly tools ..
Rest is up to individuals, how far they want to stretch..:)
thanks
Vijay
Interesting thought. I do think of the few users who could write queries without issues in R/3. But I can't see them wanting to transport anything. It is something that will roll around in the back of my head for awhile, I'm sure.
It would be a good way to limit a new developer. But they also bring interesting ideas, and I wouldn't want to shut that down.
Thank you for the reply!
Consultant set Edit-Lock, transports report and leaves the company. User deleted. Had this fun recently.
Yes, I it does make things interesting.
Quite informative, never thought we have so many distinct characteristics of ABAP forming different versions . Thanks for sharing this.
Hi Vijay,
thanks for the write-up!
Never having noticed this ABAP-version field when creating a new report, I quickly checked in our DEV-system and now know why: the field doesn't yet exist in our NW 750 SP13 EHP8 system:
Could you please add the system version this option becomes available? Thanks!
Cheers
Bärbel
Thanks Bärbel Winkler
I think it is available starting with SAP NetWeaver AS ABAP Release 751. The screen shot i have used are from version 7.52.
Regards
Vijay