DataXstream OMS+

What’s in a Namespace?

What’s in a Namespace?

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:

  1. Request a namespace
  2. Reserve an accepted namespace
  3. Generate license keys for a reserved namespace
  4. 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:

namespace support portal

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.

se03 initial screen

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.

se03 namespace registration screen

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*

4 Comments

  1. Avatar for Ray Mannion
    Ray Mannion
    June 21, 2010 at 9:35 am · Reply

    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.

  2. Avatar for Ronaldo Schork
    Ronaldo Schork
    February 4, 2011 at 6:43 am · Reply

    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,

  3. Avatar for Nathan
    Nathan
    June 22, 2011 at 7:35 pm · Reply

    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

  4. Avatar for Ravinder
    Ravinder
    November 12, 2012 at 4:50 am · Reply

    Superb,

    All by doubts are cleared.

    Thanks alot.

    Ravinder

Leave a reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.