Introduction
DataXstream, an SAP Solution Partner, builds, packages, and distributes custom solutions for our clients. We have built and packaged these solutions both in our own SAP landscape and in our client’s SAP landscape. In doing so, we must be careful about how we manage our namespaces, their associated development and repair license keys, and packages. It is not surprising, then, that I have received several inquiries asking about our namespace strategy for the development, packaging, and distribution of add-on products.
It all started with two name ranges
If you have ever developed a new object in SAP, you are probably already familiar with the customer name range. SAP has established the customer name range because within an object type (e.g. report, table, authorization class, etc.), the name of each object must be unique. It is important, then, to use some organized method of insuring that the names of your custom-developed SAP objects will not conflict with the names of standard SAP objects; and that your custom-developed objects will persist if either a patch is applied or an upgrade is undertaken.
A table showing the Y*, Z*, and other naming prefixes used for naming various SAP objects in the customer name range can be found in SAP documentation. I have placed this table in the Appendix of this blog.
Then there were naming conventions
For most custom-developed objects that are local in scope, using the customer name range is sufficient to protect your custom development. This becomes a bit more problematic if you are sharing your custom development with other organizations within your company that also have custom development capabilities. Here, it may be possible to establish and use a naming convention solution; but this solution can be difficult, as it requires stringent up-front agreements and continuous monitoring.
Protecting custom development from naming conflicts and also from unauthorized modification is also an issue for SAP Solution Partners who distribute their custom-built products and solutions to a wide variety of clients. In this situation, it is impossible to consider the use of a naming convention. What is the solution?
Now, the namespace
DataXstream is an SAP Solution Partner. A service that we offer to our clients is the development of custom solution add-on products. We can deliver these products to any of our customers, and be assured that our custom development will be protected from unauthorized customer modification, and from SAP patch applications and upgrade procedures. How are we able to achieve this?
For these situations, and starting with release 4.0, SAP has provided the unique namespace, which is reserved for exclusive use by an SAP customer or partner. Using the unique namespace not only prevents naming conflicts, but it also prevents unauthorized modification of distributed objects that were built in the unique namespace.
A unique namespace is reserved with SAP against your SAP installation number. It is not transferrable, and can only be registered and used on that installation of SAP. (You can find the installation number of your system in the SAP System->Status screen.) The namespace also comes with a development license key and a repair license key. Only the owner of the unique namespace development license key can develop objects in their unique namespace; and only after the development license key is registered on the development system. Likewise, the recipients of products that were built in the unique namespace cannot modify or repair the delivered objects without receiving the repair license key from the namespace owner.
DataXstream has applied for and has reserved the unique namespace /XSTREAM/. All development at DataXstream that is intended for customer distribution is built within our /XSTREAM/ namespace. In development, the namespace is used as the prefix for naming all of our objects. So, for example, if we are creating an ABAP report, we would name it /XSTREAM/myabapreport. And if we are creating a dictionary table, we would name it /XSTREAM/mytable. Since the /XSTREAM/ namespace is unique, we never need to be concerned about naming conflicts. Also, since we hold the development and repair license keys, we never need to be concerned about unauthorized modifications, once the objects are distributed to our customers.
As DataXstream may have several solution products either already completed or under construction, we need a way to organize the objects within each solution project. We do this by assigning all of the objects that belong to a project to a unique package. For example, if we had a project named “PROJ1”, we would build a package named /XSTREAM/PROJ1 and we would then assign all of the objects for that project to package /XSTREAM/PROJ1. This is a most useful way of organizing the objects, since we can then use the SAP Object Navigator to manage all of the objects belonging to a specific package. It is also useful when packaging a product for delivery, using the SAP Add-on Assembly Kit. When it comes time to define the list of objects to be included in the delivered package, the Add-on Assembly Kit allows you to indicate that you want to include all of the objects belonging to a specified package.
Obtaining and using a unique namespace
There are four steps needed to acquire and begin using a unique namespace:
- Request a namespace
- Reserve an accepted namespace
- Generate license keys for a reserved namespace
- Register the namespace on your development system
The first three steps are performed on the SAP Support Portal at this address:
www.service.sap.com/namespaces
This site is very well laid out and the steps are clearly explained. Here is what it looks like:
Things to have ready before you request a namespace.
Have your namespace name and a brief description ready. A namespace name can contain no more than ten characters (including the two ‘/’ characters e.g. /ABCDEFGH/). I would not make this too long, because some object names, like SAP table names, are on the short side.
Select the SAP system where you want to develop in your unique namespace and get its installation number. The installation number is found on the System -> Status screen.
Step four is performed on your development system using transaction SE03.
In this transaction, under the Administration folder, you want to select Display/Change Namespaces.
It is here, in CHANGE mode, that you will add a new entry to register your namespace, along with the development and repair license keys. After registering your unique namespace on your development system, you are now ready to begin using it.
Summary
As mentioned before, DataXstream offers custom development and packaging services using either our development landscape or yours. With respect to strategies for namespaces, packaging using the SAP Add-on Assembly Kit, and product distribution, we have expert consultants who can advise, walk you through the process, or do it entirely for you.
Appendix
Customer Name Ranges as shown in SAP Documentation
Object |
Length |
Customer name range |
Application logObjectSubobject |
20 20 |
Y* Z* Y* Z* |
Authorization object |
10 |
Y* Z* |
Authorization object class |
4 |
Y* Z* |
Authorization/authorization profile |
12 |
No “_” as the second character |
CATT procedure |
30 |
Y* Z* |
Change document object |
10 |
Y* Z* |
Class |
30 |
Y* Z* (Underscore allowed) |
Code page |
4 |
9000-9999 |
Code page segments |
5 |
Y* Z* 9* |
Context |
20 |
Y* Z* (Underscore allowed) |
Customer roles |
30 |
Any except “SAP_” |
Data element |
30 |
Y* Z* |
Dialog module |
30 |
Y* Z* RP_9* RH_INFOTYP_P9* |
Documentation modulesGeneral text (TX)Authorization objectAuthorization profileDocument: Description of a test runMain chapter of a structure (BOOK)Chapter of the Implementation GuideChapter of a structure (CHAP)Note on a chapter of a structure (NOTE)
Release Note Text in dialog |
28 10 12 20 20 20 20 26 20 28 |
Y* Z* Like object name Like object name Y* Z* Y* Z* Y* Z* Y* Z* Y* Z* Y* Z* Y* Z* |
Domain |
30 |
Y* Z* |
EDMData modelEntity |
10 10 |
Y* Z* Y* Z* |
Enhancement |
8 |
Y* Z* |
Enhancement project |
8 |
* |
Function BuilderFunction moduleFunction groupUser exit function moduleUser exit function module (customer-specific) |
30 26 26 26 |
Y_* Z_* Y* Z* XZ* * |
IDOC developmentSegment typeSegment nameBasis IDOC typeEnhancement typeLogical message |
27 30 30 30 30 |
Z1* Z2* Y* Z* * * |
Info type number |
4 |
9000 – 9999 |
Interface |
30 |
Y* Z* (Underscore allowed) |
LISEventUnit |
2 2 |
Y* Z* Y* Z* |
Lock object |
16 |
EY* EZ* |
Logical database |
20 |
Y* Z* |
Maintenance and transport object |
31 |
Y* Z* |
Menu |
20 |
Y* Z* +* |
MessageMessage IDMessage number |
20 3 |
Y* Z* 900 – 999 |
Module poolModule pool for dialogINCLUDESModule pool for screensINCLUDESModule pool for info typesINCLUDESModule pool for subroutinesINCLUDES
Module pool for update programs INCLUDES |
30 30 30 30 30 30 30 30 30 30 |
SAPDY* SAPDZ* DY* DZ* SAPMY* SAPMZ* MY* MZ* MP9* MP9* SAPFY* SAPFZ* FY* FZ* SAPUY* SAPUZ* UY* UZ* |
Number range document object |
10 |
Y* Z* |
Package |
30 |
Y* Z* |
Pool name/cluster name |
10 |
Y* Z* |
Printer macro |
– |
Y* Z* 9* |
Relation ID/cluster ID |
2 |
See SAP Note 212246 |
Report |
30 |
Y* Z* |
Report category |
4 |
0* – 9* |
Report variantTransportable, globalTransportable, localNot transportable |
14 14 14 |
X* CUS&* Y* Z* |
Report WriterReportReport groupLibraryStandard layout |
8 4 3 7 |
First character not numeric First character not numeric First character not numeric First character not numeric |
SAPscriptFormStandard text IDStandard text nameStyle |
16 4 32 8 |
Y* Z* Y* Z* Y* Z* Y* Z* |
Screen |
4 |
9000 – 9999 If the screen does not belong to a module pool in the customer name range. |
Search helps |
30 |
Y* Z* |
Set |
12 |
First character not numeric |
SPA/GPA parameter |
20 |
Y* Z* |
SpoolLayout typeFont groupDevice typePage formatSystem barcode |
16 8 8 8 8 |
Y* Z* Y* Z* Y* Z* Y* Z* Y* Z* |
Standard role |
8 |
9* |
Standard task |
8 |
9* |
SYSLOG message ID |
2 |
Y* Z* |
TablePooled tables and cluster tablesTransparent tablesTable field |
10 16 16 |
Y* Z* T9* P9* PA9* PB9* PS9* PT9* HRT9* HRP9* HRI9* YY* ZZ* (in the append structure, if possible) If included using the append structure: YY* ZZ* |
Transaction code |
20 |
Y* Z* +* |
Types in the ABAP DictionaryData elementStructureTable type |
30 30 30 |
(Underscore allowed) Y* Z* Y* Z* Y* Z* |
ViewDatabase view, projection view, maintenance viewHelp view |
16 16 |
Y* Z* H_Y* H_Z* |
View cluster |
16 |
Y* Z* |
View maintenance dataView contentTable content |
– – |
reserved in TRESC reserved in TRESC |
Workflow object type |
10 |
Y* Z* |
Thanks so much for taking the time to write this article. I feel like I’ve read 10 pages on SDN and SAP.com but couldn’t get an explanation as simple and succinct as this one.
Thanks for sharing this, it was very useful.
So, what I have understantood is that the namespace should have slashes in the beggining and in the end, and no more than 10 characters. But there are some objects that have only 8 characters, like Enhancement and Enhancement project, so this could be a problem right?
Regards,
Thanks for your detailed explanation. It was very helpfull. I have couple of questions:
We are planning for a custom development, which we are planning to sell to SAP customers. For that In order to do ABAP development work, do we need to buy SAP licence?
Thanks,
Nathan
Superb,
All by doubts are cleared.
Thanks alot.
Ravinder