Transaction variants allows us to selectively mask certain fields in SAP transactions/screens. Though strictly not a security tool, transaction variants can have applications in security by helping to prevent users from updating fields which are not protected through authorization objects
Transaction Variants are created trough the SHD0 t-code. The initial screen SHD0 is given below. To create a transaction variant we mention the name of the parent transaction, give a name of the variant and click the create button.
In our example below, we create a transaction variant ZSU01 for the very common SU01 tcode. The transaction variant allows an administrator only to reset passwords and hides all other functions of SU01. Each transaction variant contains of one or more screen variants depending on the number of screens being called in the entire transaction flow. We don’t have to manually keep track of the screen variants when we are working with transaction variants. As we move from one screen to the next, SHD0 automatically creates and appends a new screen variant to the sequence.
On clicking the create button for ZSU01, we are taken to the standard SU01 screen. We enter a user name and click the change password button. A pop-up window appears with a list of the screen fields. This window contains the attributes of our first screen variant. Its here where we enter a name of the screen variant and can selectively mark screen fields to invisible/output only/required, etc.
The screen variant window has a button for “Menu Functions” where we can selectively hide/de-activate menu items or toolbar buttons. Since our intention is to disable everything except password change options, we end up with below screen.
On clicking the check button from the screen variant we are taken to the next screen and need to save our entries for the password change screen.
On clicking, the save and exit button we are taken to the overview screen for the transaction variant. As shown below, this screen gives the definition of the individual screen variants which form part of the transaction variant. On saving our entries, we are taken to the SHD0 initial screen which shows the transaction variant and the screen variants defined under it.
SHD0 provides a test button here we can check if the newly created transaction variants works as per our requirement. Once tested we create a new Z transaction (ZSU01) for the transaction variant by following the menu path Goto>Create Variant Transaction.
Once set up, this new transaction can be assigned to a user’s role just like a normal transaction. Executing, ZSU01 display a modified form of SU01 screen with all functions other than change password button is disabled.
This wiki is currently a copy of the sap library. Please make this wiki more useful and remove this warning when done.
Whenever you use a transaction in the SAP system to process specific business transactions, it often makes sense to adjust processing flow to mirror these business activities. This can be done by hiding all information not pertinent to the business. More important information should be placed in a better position.
Creating a transaction variant alters the layout of the screen. Business processes delivered by SAP retain their integrity in any case.
Transaction variants are actually made up of a series of screen variants. The field values and settings for each screen in the transaction variant are stored in a screen variant.
You can create as many variants of a specific transaction as you like. These variants are started by entering a transaction code that you have selected. Your system administrator can assign your transaction codes to user menus. This allows the users in the departments that use your transaction to call the transaction directly.
The functions of the transactions variants are supplemented by the integration of the tool GuiXT. Transactions can be enhanced using graphics, texts, and HTML pages. Screen fields can also be moved around on the screen, and important new menu functions can be added to the user interface or application toolbar in the form of pushbuttons.
Transaction variants simplify transaction flow by:
- Inserting default values in fields
- Hiding and changing the ready for input status of fields
- Hiding and changing the attributes of table control columns
- Hiding individual menu functions
- Hiding entire screens
Transaction variants are actually made up of a series of screen variants. The field values and field attributes for each screen in a transaction variant are stored in screen variants. Each variant is assigned to a transaction. Variants may, however, contain values for screens in multiple transactions, if transaction flow makes this necessary. The transaction the variant is assigned to serves as its initial transaction, whenever you start the variant.
Both client-specific and cross-client transaction variants exist. Screen variants are always cross-client; they may, however, be assigned to a client-specific transaction.
A specific namespace has been designated for cross-client transaction variants and screen variants and they are both automatically attached to the Change and Transport System. Client-specific transaction variants can be transported manually.
Transaction and screen variants may be created for all dialog and reporting transactions. However, there are certain restrictions that apply to their use, depending on how their corresponding transactions have been realized internally.
Transaction variants may not be created for transactions already containing pre-defined parameters (parameter transactions and variant transactions).
You can only create transaction variants for dialog transactions and reporting transactions.
Only "normal" screens, dialog boxes, and subscreens can be included in the variant.
Screen variants are automatically created anytime you create a transaction variant.
Creating a transaction variant
To create a transaction variant (cross-client by default), proceed as follows:
- Choose Tools ® AcceleratedSAP ® Personalization to call the transaction variant maintenance transaction, or use transaction code SHD0.
- Enter the name of the transaction and the transaction variant on the initial screen.
- See Transaction Variant - A Step by Step Guide for Creation. This guide also shows how to attach a transaction variant to a transaction code
If you want to create a *client-specific* transaction variant:
- choose Goto ® Client-specific transaction variants to branch the client-specific transaction variant maintenance transaction.
- Client-specific transaction variants only exist in the client in which they are created. The field contents of the transaction variant must be available in this client. Cross-client transaction variants are available throughout the system, regardless of the client currently being used. The field contents of these transaction variants must be available in all clients.
Attach a transaction variant to a transaction code
Creating a screen variant
- Choose "Create" to create a screen variant.
- The system calls the application transaction that you want to create a variant for.
- Enter the values you want to use in the input fields.
- Each time an action is completed (choosing for example), a dialog box appears listing the fields of the current screen with their current values. The kind of dialog box called depends on the kind of screen currently being processed ( see Requirements).
- Choose the options you want. The following options checkboxes can be selected:
- Adopt field values: Saves the field values you have inserted on the current screen. Resetting this field (deselecting it) allows you to delete all values saved for this screen in your transaction variant.
- Do not display screen: Hides screen. This is only possible if settings are copied to your variant (Adopt field values).
- With contents: Field contents are saved with it
- Output only: Field is no longer ready for input (display mode only)
- Invisible: Hides field
- Mandatory: Required field
- You may or may not be able to select each of these checkboxes for every field depending on the field's type (see Requirements).
- Enter a screen variant name and corresponding short text if necessary.
- Screen variants are created automatically for each screen where values have been saved (copied). Enter screen variant names in the Name of screen variant: field. These names must be unique. If the system is able to find a unique name for a screen variant, it is automatically inserted into this field. (The convention reads as follows: <name_of_transaction_variant>(<client>)<screen_number>.)
- The following pushbuttons are available from this dialog box:
- Cancel: Displays current application transaction screen again. Here you can make changes to your settings.
- Deactivate menu functions: Deactivates menu functions in an additional dialog box.
- GuiXT: Allows user to edit a GuiXT script for the current screen (see GuiXT).
- Exit and Save: Exits and saves application transaction.
- Choose the function Continue to proceed to the next screen in your application transaction. Repeat steps 3-5 for all further screens in the transaction.
- When you have reached the last screen of the transaction and inserted the values you want to insert, choose Exit and Save. The system exits the application transaction and saves your entries. A list appears containing all of the screens in the application transaction that you want to save entries for (that is, all screens for which screen variants will be created).
- You can also branch to this list using the Change values function during the function selection process.
- Enter a short text for your transaction variant.
- Display settings can be changed as needed from this list in the future. Settings that require information at application transaction runtime (field values, table control columns) cannot be changed from this list.
- Choose Save. The system saves your transaction variant and the corresponding screen variants. The Workbench Organizer dialog box is displayed for the transaction variant and for each screen variant. Use it to assign each of these objects to a package.
- Deleting Preassigned Values: You can delete all of the values you assigned to fields of a single screen in a transaction variant by resetting (deselecting) the Adopt field values checkbox. This deletes the screen from your variant, even those entries that were transferred to the variant during previous processing.
- If a screen variant has already been created for this screen, then the system simply deletes the screen variant's transaction variant assignment; the screen variant itself is not actually deleted.
- Individual fields can be deleted from transaction and screen variants by resetting (deselecting) their corresponding checkboxes.
Variant Groups are used to start transactions with different transaction variants according to the user which runs the transaction.
Key concepts are:
- Variant groups are maintained in SHD0, in tab "Standard Variant, then in tab "Variant Groups".
- A Variant Group is assigned to 0 to N users
- A user may have 0 to N variant groups. If he has several variant groups, he may switch using SHD_SWITCH transaction.
- At a given time, a user can be assigned to only one variant group.
- At each logon, the user is assigned by default to the variant group assigned by button "Set proposal" in SHD0.
- When user has currently ZVVVV variant group and he runs ZT transaction, SAP automatically uses ZVVVVZT transaction variant if it exists.
- A variant group named ZVVVV is linked automatically to all transaction variants named ZVVVV* (where * must be the transaction code to which the transaction variant applies).
- If a transaction has both a standard variant and a group variant, SAP runs the transaction using the transaction variant from the variant group.