Customer Development

Objectives

After completing this lesson, you will be able to:
  • Explain object locking and version management
  • Describe the proecess of releasing a transport request that contains repository objects
  • List selected Transport Organizer tools and explain their use
  • List authorizations for software logistics

Object Locking

There are two locking mechanisms when repository objects are being changed:

Enqueue Lock

The editor program, which works with the enqueue service ensures that only one user at a time can change an object in the SAP system.

Repository Lock

The workbench transport request ensures that the developer changing the object is assigned to a valid task within the workbench request.

When a repository object is assigned to a task within a workbench request, that object can only be changed by the developers associated with that transport request. This prevents users outside the development team from making changes to any of the objects in the transport request before the development project is completed and the associated transport requests are released.

An object list is associated with each task. Each user working on an object has a corresponding entry in the object list of their task. The object list records which users have actually edited the object.

Objects may be manually entered in the object list of a task or transport request. For this, in the Transport Organizer (transaction SE09) choose Display. You can manually add objects, for example, by double-clicking the transport request and adding the desired objects. Or you can use the menu path Request/TaskObject ListInclude Objects....

These objects are not automatically locked if they are entered manually. To manually lock the object, in the Transport Organizer initial screen (transaction SE09), choose Display, select the transport request or task in question and then choose Request/TaskObject ListLock Objects from the menu.

Version Management

Perform the exercises of this lesson (with program ZREPORTING01 instead of ZPGM_##) and take a screen shot during the task containing version management.

Versions of SAP repository objects can be compared or restored.

When a workbench transport request is released, a new version of each repository object in the transport request is written to the version database, which contains a complete change history of all repository objects.

In addition to the versions created automatically by the release of transport requests, users can also create temporary versions at any time. To do this, in the maintenance transaction for the repository object, for example transaction SE38 (ABAP Editor), choose the menu path UtilitiesVersionsGenerate Version.

You can access the version management by choosing the menu path UtilitiesVersionsVersion Management from:

  • Object Navigator / Repository Browser (transaction SE80) when displaying / changing a repository object.

  • Display and maintenance transactions for all repository objects, for example ABAP Editor (transaction SE38), ABAP Dictionary (transaction SE11) or Function Builder (transaction SE37).

In the version overview, the active and modified (that is: inactive) versions are displayed in the development database, and versions saved as a result of released transport requests are displayed in the version database.

Note

The version database resides in the development system. Versions cannot easily be transported between SAP systems. If the development system is removed from the SAP system landscape, all versions in the version database are lost.

Releasing Transport Requests

After the development tasks are completed, a transport request is released so that the contents can be transported to subsequent SAP systems.

Note

Releasing a task or transport request requires the developer to have the necessary authorization.

Releasing a transport request requires that all (non-empty) tasks are documented (if mandatory) and released.

A released task can no longer be changed, but additional tasks for the same transport request can be created to change the objects in the released task, as long as the transport request itself is not released. A released task cannot be deleted. If a task is empty, it is deleted when the transport request is released.

  • Releasing a transportable transport request records a version of all the repository objects included in the transport request (for object types that are included in the version management), and then exports the objects, that is, copies the objects from the database to a file in the transport directory.

  • Releasing a local transport request records a version of the repository objects included in the transport request (for object types that are included in the version management), but does not export them to file system level.

Note

As of some patch level for tp version 381.183.11 and kernel 773 or higher, cofiles are written on operating system level even for local transport requests.

Export Logs

After releasing a transportable transport request, review the transport logs to ensure that the export was successful.

Release a non-empty transport request in transaction SE09 and display the logs

To access the transport logs from the initial screen of the Transport Organizer (transaction code SE09), choose Display, select a transport request, and choose GotoTransport Logs.

In the transport logs, the following return codes indicate the success or failure of the export:

  • 0: The export was successful.
  • 4: A warning was issued but all objects were exported successfully.
  • 8: An error in an object occurred. Whether the objects are considered as exported successfully depends on tp parameter settings.
  • 12 or higher: A critical error has occurred, generally not caused by the objects in the transport request, but by the transport tools themselves.

Transport Organizer Settings

Take a screen shot from transaction SE03.

The Transport Organizer Tools are a collection of tools that support the work with the Change and Transport System (CTS). These tools can be accessed either by the corresponding button in the Transport Organizer (for example, transaction SE09) or by starting transaction SE03 directly.

You can find documentation of the functions by selecting the corresponding line and using the Documentation button, shown in the figure above. A documentation of the tools can also be accessed by right-clicking them.

The options available under Global Customizing (Transport Organizer) provide customers with several options that can be used for:

  • Displaying transport errors at log on.

    To cause transport errors to be displayed to transport request owners when they log on, set Transport error display at logon to globally activated or to set by user.

  • Applying objects checks to objects contained in transport requests before the transport request is exported to a file in the transport directory.

    Object checks identify and display errors found in workbench transport requests. Errors, such as program syntax errors, are identified and displayed when a transport request is released, but not yet exported. More detailed information about the error can be found by simply double-clicking the error on the displayed report.

Enter transaction SE03 and choose activity Display/Change Request Attributes or / and activity Global Customizing (Transport Organizer).

You can activate or deactivate the display of transport errors at logon and object checks in two different ways:

  • Globally: For this, enter transaction SE03, choose AdministrationGlobal Customizing (Transport Organizer) and select globally (de)activated for the corresponding area.
  • For a specific user: For this, enter transaction SE03, choose AdministrationGlobal Customizing (Transport Organizer) and select the option Set by user for the corresponding area.

    Then, for a logged-on user, enter the Transport Organizer (for example, transaction SE09) and choose SettingsTransport Organizer from the menu. Here, the options Display Transport Errors at Logon to SAP System, Check Objects at Request Release, and Check for Task Documentation at Release can be set by the user that is logged on (provided the settings in transaction SE03 allow this).

You can use the Transport Organizer Tools for many different tasks concerning objects in tasks and requests. These tools also allow access to several administrative transactions, which can also be accessed in other ways.

Authorizations for Change Management

As we have seen before, different tools and concepts exist for managing customizing and workbench transport requests in a controlled way. By specifying the customizing and development roles for that SAP system, you usually define how these tools are used as well as the responsibility for changing customizing and repository objects in an SAP system.

In the most cases, the authorization split can be done as shown in the figure above:

Super user (for example, SAP system administrator)
Has all authorizations related to transport requests and tasks.
Project leader
Can create and manage transport requests and tasks.
Developer
Can use only existing transport requests.
End user (not shown in the figure above)
Has display authorization only.

Perform customer development

Business Example

As a developer, during the implementation process of your new business process, you need to create and change repository objects.

Note

## represents the group number the instructor has assigned to you.

Task 1: Create a New ABAP Program

Create the new ABAP program ZPGM_##.

Steps

  1. Log onto the development system S4D, development client 100. Create the ABAP program ZPGM_##.

    1. Log on to the development client using the credentials that are provided by your instructor.

    2. Start the ABAP Editor (transaction SE38). Enter the name of the program that you wish to create, ZPGM_##, and choose Create.

      Note

      Instead of using the ABAP Editor (transaction SE38) you can also use the Object Navigator (transaction SE80). In this case, choose Display (there is no Create button) and do not select the Create with TOP include check box.

  2. (If required): if you're not yet registered in this SAP system as a developer, the SAP system will prompt you for your developer key.

    1. For the purposes of this class, you are not required to provide a developer key. For more information, see SAP Note 2309060 – The SSCR license key procedure is not supported in SAP S/4 HANA.

  3. In the ABAP: Program Attributes... dialog box, enter a Title (such as Program for Group ##) and choose the TypeExecutable program.

    1. Following the first step of this task, enter the Title and Type as indicated in the step statement.

    2. Keep the other fields unchanged and choose Save.

  4. As this is a repository object, the SAP system displays the Create Object Directory Entry screen. Assign your new ABAP program to the package that you have created in a previous exercise and choose Save.

    1. When the Create Object Directory Entry dialog box displays, enter the PackageZPACKAGE_## and choose Save.

      Hint

      If the object is assigned to a package with an invalid transport layer, the object can't be exported and, therefore, can't be transported to the target systems.

  5. The Prompt for transportable workbench request dialog box appears. Select one of the transport requests you have created for your project.

    1. To display your transport requests, use the search help of the Request field. Choose one of the transport requests created for your project. The transport request must be of type Workbench request. Choose Continue (Enter).

  6. From the ABAP Editor screen, on a new line below the report name, enter the following command:

    write / 'At night it is colder than outside...'..

    Note

    Make sure that you use single quotes and end the command with a period.

    Verify that there are no syntax errors in your program. Save, activate, and execute your program.

    1. In the editor, place your cursor on the next free line.

    2. When entering the command from the task statement, make sure that you end the command with a period, otherwise a syntax error will result. Enter: write / 'At night it is colder than outside...'..

    3. To check your program for errors choose the menu path ProgramCheckSyntax. If no syntax errors can be found in the program, activate the program. For this, choose the menu path ProgramActivate.

      Note

      Activating a program (among others also) saves the program.

    4. Choose Back arrow to return to the ABAP Editor: Initial Screen. Finally, choose Execute from the application toolbar to run your program.

Task 2: Release Your Task and Your Transport Request

Release your task and workbench transport request.

Steps

  1. As the developer, release the task containing your ABAP program.

    How can you check whether or not the task has been released?

    1. If you have not yet already done, log on to the development client using the credentials that are provided by your instructor.

    2. Start the Transport Organizer (transaction SE09) and Display the modifiable transport requests and tasks assigned to your user.

    3. To release a task of a changeable transport request, mark the task and choose the menu path Request/TaskReleaseDirectly (here, and in the following, you may need to expand the folder structure of your transport request first). When a task is released, a check mark is shown right to the task ID.

  2. As the project leader, release and export the transport request.

    1. Following the previous task, select your (transportable) transport request and choose the menu path Request/TaskReleaseDirectly.

      Note

      In this training, you play the role both of the developer and the project leader. Therefore, you can continue on the same screen of transaction SE09.

      Hint

      If there are non-empty tasks in the transport request that have not been released, you cannot release the transport request. Empty tasks will be deleted by the SAP system automatically when a transport request is released.

Task 3: Change Your Program

Change the program that you have created in a previous task.

Steps

  1. Change your ABAP program ZPGM_## by adding a new line to the program. Add the following command:

    write / 'Downhill is faster than walking.'.
    1. Keep working in the development client of your development system.

    2. To edit your program, start the ABAP Editor (transaction SE38). Enter the name of the ProgramZPGM_## and choose Change.

    3. In a new line, add the following command:

      write / 'Downhill is faster than walking.'.

      Note

      Again, make sure that you use single quotes and end the command with a period.

    4. Save and Activate your program using the corresponding buttons. When prompted, use the value help to choose one of your transport requests for the changes you have just made.

Task 4: Release Your Second Task and Your Second Transport Request

Release your task and the workbench transport request from the previous task.

Steps

  1. As the developer, release the task containing the changes to your ABAP program.

    1. If you have not yet already done, log on to the development client using the credentials that are provided by your instructor.

    2. Start the Transport Organizer (transaction SE09) and Display the modifiable transport requests and tasks assigned to your user.

    3. To release a task of a changeable transport request, mark the task and choose the menu path Request/TaskReleaseDirectly (here and in the following, you may need to expand the folder structure of your transport request first). When a task is released, a check mark is shown to the right of the task ID.

  2. As the project leader, release and export the transport request.

    1. Following the previous task, select your (transportable) transport request and choose the menu path Request/TaskReleaseDirectly.

      Note

      In this training, you play the role both of the developer and the project leader. Therefore, you can continue on the same screen of transaction SE09.

      Hint

      If there are non-empty tasks in the transport request that have not been released, you cannot release the transport request. Empty tasks will be deleted by the SAP system automatically when a transport request is released.

Task 5: Work With Local Objects

Create a local object and later reassign it to a package for transporting.

Steps

  1. Create an ABAP program called ZCREATEDLOCAL_##. Enter a short title for your program. Choose Executable program for type, and Test Program for Status.

    1. If you're not logged on yet, log on to the development client using the credentials that are provided by your instructor.

    2. To start the ABAP Editor, choose transaction SE38.

    3. Enter the name of the program you wish to create, ZCREATEDLOCAL_## and choose Create. Then enter a Title (for example Local Program Group ##), choose the TypeExecutable program and the StatusTest Program. Keep the other fields unchanged and choose Save.

  2. Save this new program as a local object.

    1. When the Create Object Directory Entry dialog box displays, select Local Object instead of assigning a package.

  3. On a new line of the ABAP Editor, enter the command:

    write 'I was born as a local object...'.

    Save your coding and activate it.

    1. Following the previous step, in a new line of the ABAP Editor, add the following command:

      write 'I was born as a local object...'..

      Again, make sure that you use single quotes and end the command with a period.

    2. Save and Activate your program using the corresponding buttons.

  4. Is there a transport request associated with this program? Why or why not?

    1. Switch to the Transport Organizer screen by starting transaction SE09.

    2. Make sure that your user ID is entered in the field User and that Workbench Requests and Modifiable is selected. Choose Display.

    3. On the resulting screen, expand the folder structure of your modifiable workbench requests.

      Result

      There is no transport request associated with this program. Local objects are not linked to the Transport Organizer.

  5. Is there a package associated with this program? Why or why not?

    1. Yes. The package is $TMP.

      All repository objects, including local objects, are listed in the Object Directory (table TADIR). To display the Object Directory entry, start transaction SE38. Enter the name of the Program from the first step of this task and choose the menu path Goto → Object Directory Entry. The Package for your local program is $TMP.

      Hint

      You can also find out the attributes in the Object Catalog by using the Transport Organizer Tools, transaction SE03 (activity Change Object Directory Entries).

  6. Is this object transportable? Why? Which change is necessary to make this local object a transportable object? Reassign your program to the package that you have created in a previous exercise. What happens?

    1. No, the object is not transportable yet. The assigned package is $TMP and changes to objects of this package are not recorded in transport requests, that is, local objects are not linked to the Transport Organizer.

    2. To make it a transportable object, the object must be reassigned to a package that refers to a transport layer which in turn is used in an existing consolidation route and for which changes are recorded in transport requests.

    3. For this, start the ABAP Editor (transaction SE38). In the Program field, enter your program, ZCREATEDLOCAL_##. Choose the menu path Goto → Object Directory Entry. In the Display Object Directory Entry screen, choose Display/Change and enter the packageZPACKAGE_## that you have created in a previous exercise. Choose Save.

    4. Now the Prompt for transportable workbench request dialog box displays because the object is now assigned to a package for which changes are recorded in transport requests. It is now linked to the Transport Organizer.

  7. Assign the former local program to one of the transport requests of your project. Release both the transport request and its task(s).

    1. Following the previous step, in the Prompt for transportable workbench request dialog box, use the value help to select one of your transport requests that is assigned to "your" project. The transport request must be of the type Workbench. Then choose Continue.

    2. To verify that the transport request is transportable, switch to the Transport Organizer (transaction SE09) and display your modifiableworkbench requests.

    3. In the Transport Organizer, as a developer, expand the folder structure of your workbench transport request which you have selected in the previous step. Select the task and choose (More) Release Directly from the application toolbar. After, as the project leader, select the transport request and choose (More) Release Directly again.

      Hint

      If necessary, activate your program in the ABAP Editor first (only active repository objects can be exported).

Task 6: Work with Version Management

Restore a repository object from a previous version.

Steps

  1. How many versions of your ABAP program ZPGM_## exist? Compare the first version with the latest version of your program. What does the comparison indicate?

    1. Following the previous task, switch to the ABAP Editor (transaction SE38). Enter your programZPGM_## from a previous task and choose Display.

    2. To view all saved versions of the program, choose UtilitiesVersionsVersion Management from the menu. To compare two versions, select the two versions and choose Compare.

      Hint

      There should be two versions of your program in the version database. One was created when your first transport request was released, and the second one was created when your second transport request was released.
    3. Comparing these two versions shows that a new command line was added to the program.

    4. Choose Back to get back to the screen Versions of Object <Object> of Type <Type>.

  2. Retrieve the first saved version, restoring your program back to its former status. Why does the SAP system ask for a transport request?

    1. Following the previous step, in version management, to bring back the first version of your program, mark this first version in the list, choose Versions → Retrieve from the menu and confirm the warning dialog box with Continue.

    2. This is a change in the program (just as a manual change), and, to be recorded, it must be assigned to a transport request. Therefore use the value help to select a workbench request (if a workbench request no longer exists, Create a new one first and assign it to your CTS Project).

    3. After you have selected and confirmed the workbench request, choose Back to go back to the ABAP Editor.

    4. Activate the program (for this you may need to switch to the inactive view first by clicking on Active <-> Inactive).

  3. As the developer, release the task. As the project leader, release the transport request.

    1. Start the Transport Organizer (transaction SE09) and Display the Modifiable transport requests assigned to your user ID.

    2. To release a task of a changeable transport request, mark the task and choose the menu path Request/TaskReleaseDirectly (here and in the following, you may need to expand the folder structure of your transport request first). When a task is released, a check mark is shown right to the task ID.

    3. Then select the transport request itself and choose the menu path Request/TaskReleaseDirectly again.

Task 7: Use the Transport Organizer Tools

Analyze the attributes of repository objects using the Transport Organizer Tools.

Steps

  1. Search for transport requests and tasks using the relevant tools in the Transport Organizer Tools. Locate all transport requests and tasks containing your ZPGM_## program.

    1. Following the previous task, switch to the Transport Organizer screen by starting transaction SE09 (or choosing Back twice).

    2. From the initial screen of this transaction, choose GotoTransport Organizer Tools from the menu or call the Transport Organizer Tools (transaction SE03) directly. A list of Transport Organizer Tools displays.

    3. Select Find Objects in Requests/Tasks (in folder Objects in Requests) and choose Execute. The Find Objects in Requests/Tasks screen displays.

    4. On the left side of the screen, mark the check box in the line for PGMID R3TR and Obj PROG, and enter the name of your program ZPGM_##. To display all released transport requests containing this ABAP program, select Released in the Requests/Tasks Selection section at the bottom of the screen.

      Note

      Select Search for Subobjects too (not if generic entry chosen) to also find transport requests containing subobjects (for example LIMU REPS entries) of the program.

    1. Choose Execute. You get a list of both transport requests and tasks containing the program ZPGM_## (or subobjects of it, if selected).

  2. Display all of the attributes associated with the objects in the transport request.

    1. From the initial screen of the Transport Organizer Tools (transaction SE03), choose Analyze Objects in Requests/Tasks (in folder Objects in Requests).

    2. Use the search help to select the transport request number that you have used in the previous task (for this, you may need to select Released as well in the Analyze objects... dialog box) and choose Execute.

      A list of all objects contained in the transport request displays.

    3. To display the attributes associated with an object, select one of the objects and select the (Display) Object Directory button.

      Note

      The attributes are stored in the Object Directory (table TADIR).

Log in to track your progress & complete quizzes