Entering content frameAdjustability Criteria from Release 4.5B Locate the document in its SAP Library structure

Introduction

Table maintenance dialogs are used mainly to create and transport customizing settings. Experience shows that problems can arise when importing customizing changes into the production system because of the different customizing environment compared to the quality assurance system, requiring additional effort and causing increased costs. Many customers are aware of this problem and avoid it by recreating the customizing settings in the target system (usually the production system) manually. This procedure is made no longer necessary by the Customizing Cross-System Viewer (CCS Viewer) and the Customizing Transfer Assistant (CTA) from Release 4.5A. The CCS Viewer compares the customizing settings in two clients and adjusts any diffences individually (performing all checks). The CTA is a CCS Viewer add-on which automatically controls the checked mass copy of customizing data.

Customizing settings are compared and copied with checks using the standard table maintenance, i.e. the customizing activity must use the view/view cluster maintenance for adjustment to be possible. Individually programmed IMG activities cannot be handled by the CCS Viewer and CTA.

The CCS Viewer and CTA copy the customizing changes into the target client in the associated dialogs. All checks which are made in online maintenance are performed. This procedure is technically unproblematic for unmodified dialogs. If individual checks, dialogs or events have been added to the dialog, the adjustment may not work. For this reason, the two tools cannot currently handle modified dialogs. This is unsatisfactory because many modifications need not prevent adjustment. The person responsible for a modified dialog must decide whether it can be handled by the CCS Viewer and CTA according to fixed criteria. This document describes these criteria to enable the person responsible to decide whether a dialog is "adjustable" or not.

The adjustability is indicated by a flag in the maintenance object description header, which is processed by the CCS Viewer and CTA. The flag can have the following values:

The flag must be set manually for modified dialogs, by the person responsible. This new flag is maintained for individual dialogs in SE54. The flags for all the maintenance dialogs in a development class can be set by the program RSVIEWMOD.

The developer must check the effects of modifications/enhancements on the adjustment, according to the criteria, before setting the flag. The effort required to do this depends on the environment, and cannot be estimated generally.

This graphic is explained in the accompanying text

The document is divided into sections for view maintenance and view cluster maintenance. Both sections start with an overview of the critical points to allow quick orientation and selective reading.

Modified view maintenance dialog criteria

The following maintenance dialog modifications are critical for automatic and dialog adjustment:

    1. Use of subsets
    2. Field value change sequence
    3. Subobject-specific checks
    4. Create, change or delete additional data independently of Save
    5. Additional table maintenance
    6. Messages
    7. User dialogs
    8. View-specifically generated internal data table access

Preliminary remarks

If the VIM_IMPORT_MODE_ACTIVE flag is not SPACE_DIRECT_UPGRADE, the maintenance dialog was called by CTA in automatic adjustment mode.

If the VIM_SPECIAL_MODE flag is VIM_DIRECT_UPGRADE, the maintenance dialog was called by the CCS Viewer and CTA in dialog adjustment.

1. Use of subsets

If a key field is defined as a subset of the view, only this subset is locked in normal view maintenance, and only the data belonging to this subset is read into the internal table TOTAL.

Checked copying completely locks the affected tables, and the entire dataset is read into the table TOTAL. DBA_SELLIST, the internal table conaining the database access selection criteria, contains no value for the subset field at lock and read time

This graphic is explained in the accompanying text

If there is a subset field value in the ABAP/4 Dictionary, the subset is used for locking and reading.

Application-specific events which assume that DBA_SELLIST contains concrete subset field values at lock or read time are not automatically adjustable.

This graphic is explained in the accompanying text

  1. Ensure that these events are subset-independent in automatic adjustment. Use the VIM_IMPORT_MODE_ACTIVE flag to check in which mode the maintenance dialog was called.

Automatic adjustment

Datasets are automatically adjusted and saved by subset, i.e. both DBA_SELLIST and DPL_SELLIST, which contains the selection critera for data display, contain the current subset field value. The table EXTRACT contains the entries to be copied from the adjustment data set.

In contrast to normal processing, the internal table TOTAL contains the complete dataset of the relevant tables during automatic adjustment. Any individual check modules and events before or at saving must handle this correctly.

Dialog adjustment

In contrast to automatic adjustment, only the dataset for the current key, not the entire dataset, is read into the table TOTAL in dialog adjustment. DBA_SELLIST contains the selection criteria, so you can here also not assume that DBA_SELLIST contains exactly one value for a subset field.

The table EXTRACT contains the entries to be copied. Data are copied subset-independently, so the table can contain data records for various subset values. When an indivdual dataset is copied, the current subset value is in the table DPL_SELLIST.

All datasets are saved in one subset-independent step. This must be taken into account in the individual save routine.

2. Field value change sequence

Field value change sequence checks are not relevant for adjustment, because the CCS Viewer and CTA only check the resulting data consistency, not the input process.

This graphic is explained in the accompanying text

  1. Deactivate these checks for adjustment, using the VIM_IMPORT_MODE_ACTIVE flag.

3. Subobject-specific checks

The CCS Viewer and CTA do not recognize or perform subobject-specific checks or logic. The maintenance object description subobject is not in the change request and is therefore unknown. The associated Set/Get parameter CUS is also not set.

This graphic is explained in the accompanying text

  1. Check whether the logic is relevant for the adjustment.
  2. If the subobject-specific logic is not adjustment-relevant, change your program code so that the logic is not processed in the adjustment.
  3. If the subobject-specific logic is adjustment-relevant, it must be changed so that knowledgde of the subobject is not required for the adjustment.

This graphic is explained in the accompanying text

If the subobject specifies a subset field value, this value can be determined from DPL_SELLIST during copying and saving (but not when locking and reading, see Use of subsets), so the subobject can be found.

If the subobject specifies selection areas (for non-subset fields), it is not possible to determine the associated subobject, because all view keys in the change request are copied in one step, and data for different subobjects can be read in in the same step . If the individual routines need to know the subobject, this dialog can be adjusted neither in dialog nor automatically .

4. Create, change or delete additional data independently of Save

Standard dialog modifications or enhancements which create change or delete database data or objects independently of the view maintenance Save function, are not allowed for automatic adjustment. These database changes cannot be reset in the case of a CCS Viewer or CTA error, and would cause an inconsistent target system.

This graphic is explained in the accompanying text

  1. Check whether the enhancements/modifications are required for the adjustment.

If this is not the case, ensure that the enhancements/modifications are not processed at the adjustment, using the global flag VIM_IMPORT_MODE_ACTIVE. (for the use of VIM_IMPORT_MODE_ACTIVE see:)

This graphic is explained in the accompanying text

Modifications/enhancements which create, change or delete database data independently of the view maintenance Save function also conflict with the table maintenance online dialog concept and should therefore be revised.

The problem is the same for dialog adjustment as for online maintenanceif the view data modified by the end user during the maintenance is not saved, the additional data are nevertheless saved in the database.

5. Additional table maintenance

Modifications/enhancements of a standard dialog which maintain additional data in tables which are not in the view, are not processed by the CCS Viewer and CTA.

This graphic is explained in the accompanying text

Additional data derived from the view data and maintained in the background, is handled as in online maintenance, i.e. the dialog can be flagged as adjustable without modification . Such entries in the work list are ignored by the CCS Viewer and CTA, i.e. the data are not read in from the adjust dataset. This is also not necessary as these data are created in the background during the adjust (as in online maintenance).

You must read in and save the additional tables yourself, as in online maintenance. If you do this in the view maintenance events intended for it, these actions are performed in automatic and dialog adjustment (as in online maintenance).

If the additional data must also be imported because it cannot be derived from the view data, neither automatic nor dialog adjustment is possible, because the interfaces to the individual realization are not available centrally .

6. Messages

Messages are logged by the CCS Viewer and CTA in automatic adjustment. The processing of the current record (or records) is also canceled if an error occurs. For messages in modifications and enhancements to the standard dialog to be logged and the copy canceled if an error occurs, note that:

This graphic is explained in the accompanying text

The form routine interface is as follows:
form vim_process_message using ... (see the Include LSVIMF09).

A batch message type (parameter PM_BATCH_TYPE) must be passed to this routine in addition to the usual MESSAGE parameters. This message type is used when the adjustment runs in the background, i.e. without dialog.

This graphic is explained in the accompanying text

The parameter for the batch message type is required for technical reasons: only E and A messages lead to a system exception and can be handled by the CCS Viewer and CTA. In dialog mode it is possible and sometimes useful to use S,W, or I messages as well for error handling, for example to check entries in several loop lines for consistency together. Such constructions can cause infinite loops in automatic adjustment, so such messages must have type E or A in automatic mode. The parameter PM_BATCH_TYPE in the routine VIM_PROCESS_MESSAGE must be set appropriately.

This graphic is explained in the accompanying text

You want an S message in automatic adjustment to be logged, but not to cancel processing of the record:

data:

m_id like sy-msgid,

m_online_type like sy-msgty,

m_batch_type like sy-msgty,

m_nbr like sy-msgno,

m_v1 like sy-msgv1,

m_v2 like sy-msgv1,

m_v3 like sy-msgv1,

m_v4 like sy-msgv1.

m_id = 'xx'. "applic-spec. message class

* in dialog and automatic adjustment

m_online_type = 'S'.

* send S message

m_batch_type = 'S'.

*application-specific message number

m_nbr = 'yyy'.

perform vim_process_message using m-id m-online_type m_batch_type m_nbr m_v1 m_v2 m_v3 m_v4.

instead of

message Syyy(xx) with ...

This graphic is explained in the accompanying text

The program code for sending an S message which has the character of an E message and cancels the processing of the current record in automatic adjustment, is as follows (with analogous data declaration):

m_id = 'xx'.

m_online_type = 'S'.

m_batch_type = 'E'.

m-id = 'xx'. "applic-spec. message class

*application-specific message number

m_nbr = 'yyy'.

perform vim_process_message using m_id m_online_type m_batch_type m_nbr m_v1 m_v2 m_v3 m_v4.

7. User dialogs

No modifications/enhancements which contain user dialogs are allowed because the CCS Viewer and CTA copy the customizing settings in the background.

This graphic is explained in the accompanying text

  1. Check whether the user dialogs can be copied in the background or not at all.

This graphic is explained in the accompanying text 

User dialogs can be omitted if the information requested in the dialogs is already in the data to be copied.

If the user dialogs are omitted use the VIM_IMPORT_ACTIVE flag to not process the dialogs in adjustment mode.

If the user dialogs are also necessary in the adjustment and can run in the background, change the program code appropriately (SUPPRESS DIALOG). You must program your own input field data entry. Otherwise the entire maintenance dialog cannot be adjusted automatically .

8. View-specifically generated internal data table access

This graphic is explained in the accompanying text

This section is only relevant for views, not tables, as generated data tables only exist for views.

You can access the internal tables which contain the view data in view maintenance, using the generated variable <viewname>_TOTAL or <viewname>_EXTRACT, or the global parameters TOTAL and EXTRACT. Both types of access get an internal table header record.

In normal online processing, these header records occupy the same memory space, i.e. the global field symbols defined in the view maintenance, e.g. <VIM_XTOTAL_KEY> or <ACTION> point to this header record. In background copying there are two different header records. If the view is called VHUGO, header records exist for VHUGO_TOTAL and TOTAL, although the rest of the tables VHUGO_TOTAL and TOTAL occupy the same memory.

The field symbols defined by the view maintenance, such as <VIM_XTOTAL_KEY> and <ACTION> point to the header record for TOTAL, but not to the header record for VHUGO_TOTAL. If the generated data declarations and the field symbols are used at the same time in individual routines, e.g. in the statement sort vhugo_total by <vim_xtotal_key> , the program is canceled.

loop at vhugo_total

if <action> =

endloop.

does not have the desired result because <ACTION> points to the header record TOTAL and does not change in the loop.

This graphic is explained in the accompanying text

  1. Use either only the global parameter TOTAL or EXTRACT or only the generated data.

This graphic is explained in the accompanying text 

You should use the global parameter even if this is inconvenient because of the structure info not being statically available. Program the above examples as follows: sort total by <vim_xtotal_key> or:

loop at total

if <action> =

endloop.

The use of the generated data requires the definition of user field symbols.

This graphic is explained in the accompanying text

field_symbols: <vhugo_xtotal_key> type x,

<vhugo_xtotal>.type x,

<vhugoaction> type c.

read table x_header index 1.

assign vhugo_total to <vhugo_xtotal> casting.

assign <vhugo_xtotal> (x_header-after_keyx) to <vhugo_xtotal_key>.

assign <vhugo_xtotal> + x_header-after_tabc (cl_abap_char_utilities => charsize) to <vhugo_action> casting.

sort vhugo_total by <vhugo_xtotal_key>

or

loop at vhugo_total.

if <vhugo_action> = ...

endloop.

Alternatively, you can access the individual components directly using the generated data, without using field symbols.

This graphic is explained in the accompanying text

This example assumes that the view VHUGO has the keys K1 and K2.

sort vhugo_total by K1 K2

or

loop at vhugo_total.

if vhugo_total-action = ...

endloop.

Modified view cluster maintenance dialog criteria

Modified view clusters and view clusters with modified individual dialogs are critical for the CCS Viewer and CTA. The following modifications prevent automatic adjustment, but allow dialog adjustment:

  1. Subdialogs which are not automatically adjustable
  2. User dialogs
  3. Messages
  4. Events not processed in automatic adjustment
  5. Use of the event SV
  6. Switching to display mode in events
  7. Use of subsets
  8. Use of the table "EXTRACT" in automatic adjustment
  9. The following modifications also prevent dialog adjustment:

  10. Not dialog-adjustable dialogs
  11. Events not processed in dialog adjustment
  12. Checking events
  13. Subset processing
  14. Dynamic modifications to the object structure VCL_STRUC_TAB

Preliminary remarks

The global flag VCL_SPECIAL_MODE specifies the view cluster maintenance mode. If the flag is:

1. Subdialogs which are not automatically adjustable

If the view cluster contains one or more dialogs which cannot be adjusted automatically, the entire cluster is not automatically adjustable.

2. User dialogs

View cluster events must not contain user dialogs, except at events not processed in the automatic comparison, because this would stop the automatic adjustment.

This graphic is explained in the accompanying text

  1. Check whether the maintenance dialog can be omitted in automatic adjustment mode, using the VCL_SPECIAL_MODE flag.

This graphic is explained in the accompanying text

If a user selection condition input popup appears at event 01, it can be omitted in automatic adjustment mode, as the selections are determined from the keys in the change request.

If the user dialog is required, the view cluster is not automatically adjustable.

3. Messages

All S, I and W messages are ignored in automatic adjustment. As view cluster event error messages must always be sent as S or I messages, the errors are not logged (see also the Application help topic "View cluster events, technical background").

This graphic is explained in the accompanying text

An individual consistency check error occurs in the event before saving. An I message is sent, and VCL_STOP is set in the event to cancel the save routine. The log does not record the error. In the worst case, such a situation could even lead to an infinite loop becase the error cannot be solved and an I or S message does not cancel the action.

This graphic is explained in the accompanying text

  1. Use the VCL_PROCESS_MESSAGE routine, which is defined in the Include LSVCMCOD and has the following interface, instead of the MESSAGE statement:

form vcl_process_message using value(pm_id) like sy-msgid

value(pm_online_type) like sy-msgty

value(pm_batch_type) like sy-msgty

value(pm_nbr) like sy-msgno

value(pm_v1) like sy-msgv1

value(pm_v2) like sy-msgv2

value(pm_v3) like sy-msgv3

value(pm_v4) like sy-msgv4.

Message types for import and online maintenance (PM_BATCH_TYPE/PM_ONLINE_TYPE) can be specified here.

This graphic is explained in the accompanying text

You perform your own consistency check, which sends the following I error message, in the event before saving:

message I999(yy) with m_v1 m_v2 m_v3 m_v4.

Using the routine produces the following ABAP/4 statement:

perform vcl_process-message using 'yy' 'I' 'E' '999' m_v1 m_v2 m_v3 m_v4.

In online maintenance the routine sends the message normally as an I message like the message statement in the above example. In automatic adjustment the error message is logged. No save is made, so the data which causes the inconsistency is not imported.

To cancel the entire automatic adjustment, use message type A as PM_BATCH_TYPE.

This graphic is explained in the accompanying text

You use an individual lock routine. A table lock error occurs. In dialog you would continue in display mode after sending a message (by changing the maintenance mode in the routine). In automatic adjustment mode, this call:

m_v1 = sy-uname.

clear:m_v2, m_v3, m_v4.

perform vcl_process-message using 'SV' 'I' 'A' '049' m_v1 m_v2 m_v3 m_v4.

causes cancellation.

4. Events not processed in automatic adjustment

The following view cluster navigation or data maintenance area definition events are not processed:

If these events contain relevant checks, automatic adjustment with the CCS Viewer and CTA is not possible.

This graphic is explained in the accompanying text

  1. Check whether the checks can be made elsewhere.

5. Use of the event SV

If the event SV is used instead of save, the transfer results are not logged. There is no remedy because the structures are not known.

6. Switching to display mode in events

Switching to display mode in events (in particular events 01, 06, EQ, RE - e.g. if a table cannot be locked) is forbidden because it stops the automatic adjustment.

This graphic is explained in the accompanying text

  1. Send a type 'A' error message using the form routine VCL_PROCESS_MESSAGE to cancel automatic adjustment (see messages).

7 Use of subsets

If a subset is defined in a root object for the view cluster, the keys in the change request are used to reconstruct the subsets and automatically adjust by subset. Only the records for a subset in the change request are read in, changed and saved, i.e. the "TOTAL" tables of all subobjects only contain the entries for this subset. The subset field(s) value is entered in the selection list "DBA-SELLIST" for all subobjects, as in online maintenance. Lock is an exception. All tables involved are completely locked at the start of automatic adjustment. So application-specific lock events must lock subset-independently in automatic transfer, otherwise the view cluster is not automatically adjustable.

In the following cases the values for the subset fields cannot be determined from the keys in the change request:

Note

"Generically transported" means: keys in the change request cannot be completely specified, for technical reasons, e.g. because the key of an entry is longer than 120 characters, or it contains special data types, e.g. integer or packed number. In this case the change request contains the key only uo to the 119th place, or until the first field with a special data type. If the key subset field has such a special data type or is "to the right" of such a field in the table, the value of this field cannot be derived from the key in the change request.

If the subset values cannot be reconstructed from the transport key, all entries are processed at once, not by subsets, i.e. the subobject "TOTAL" data tables contain entries for several different subset values and no subset field value is specified in the data read selection lists "DBA_SELLIST". If the event program logic assumes that the "TOTAL" tables only contain entries for one subset, or that the subset value is entered in the "DBA_SELLIST", automatic adjustment is not possible. Lock, read and save events in particular should be checked for this.

This graphic is explained in the accompanying text

Individual read routines is to be programmed so that the complete tables are read in.

An individual check routine which checks the consistency of all entries for a subset before saving must be modified so that it processes the entries for a subset, not all entries in "TOTAL".

8 Use of the table "EXTRACT" in automatic adjustment

In online maintenance the "EXTRACT" tables contain records from the "TOTAL" data table which the user has filtered out because of an action performed. In adjust mode, the "EXTRACT" tables are useed for other purposes. As the tables are empty, or contain the data to be adjusted, accessing "EXTRACT" is usually unnnecessary and can cause errors.

Dialog adjustment: General comments

In dialog adjustment the view cluster object hierarchy is presented to the user in its own screen:

This graphic is explained in the accompanying text

The adjustment can be performed per subobject (view/table) from this screen, using the adjust icons. All entries in the change request for a subobject are adjusted in one step, not selectively for the entries which were selected at a higher level. There is no navigation in adjustment as in 'normal' view cluster maintenance, in which entries in a higher-level object are selected and then just the dependent objects can be processed . The reason for this is that a user cannot get an overview of all changed entries, he or she must go to all dependent subobjects of all higher-level entries to make the adjustment

You can go to the 'normal' view cluster maintenance by choosing Object maintenance. You can also adjust individual entries here under Utilities à Adjust. Not all maintenance function are available because you are in adjust mode (Delete, New entries, Copy are not possible). You can return to the adjustment structure overview by choosing Back.

If the VCL_SPECIALMODE flag is VCL_COMPARE_MODE, the view cluster maintenance is in adjustment mode, including in the Object maintenance function, where VCL_FUNCTION <> SPACE. In structure overview operations VCL_FUNCTION = SPACE.

9 Not dialog-adjustable subdialogs

If the view cluster contains one or more dialogs which cannot be adjusted in dialog, the entire cluster is not dialog-adjustable.

10 Events not processed in dialog adjustment

The following view cluster navigation or data maintenance area definition events are not processed, as in automatic adjustment:

If these events contain relevant checks, dialog adjustment with the CCS Viewer and CTA is not possible.

This graphic is explained in the accompanying text

  1. Check whether the checks can be made elsewhere.

11. Subset processing

When you enter a view cluster with subsets, all subsets in the adjustment dataset, or the complete dataset, if the subset field values cannot be determined from the keys in the change request (see Use of subsets), are read in. The "TOTAL" data tables contain entries for several different subset values and no subset field value is specified in the data read selection lists "DBA_SELLIST". If the event program logic assumes that the "TOTAL" tables only contain entries for one subset, or that the subset value is entered in the "DBA_SELLIST", dialog adjustment is not possible. (See Use of subsets)

12. Dynamic modifications to the object structure VCL_STRUC_TAB

You can adjust view clusters in dialog by subdialog in the hierarchical view cluster display (See General remarks). Only those subobjects are presented which are not marked as hidden in the object structure (as in the navigation subscreen). Subobjects marked as hidden cannot be adjusted. This is usually not a problem because entries in such a table are also created hidden in the 'normal' dialog, i.e. they are not created explicitly by the end user. These entries are also created hidden because all modifications are also performed in dialog adjustment.

This graphic is explained in the accompanying text

View clusters in which this hidden flag is changed dynamically in an event are not adjustable (component SUPPRESS in the global internal table VCL_STRUC_TAB).

Viewc lusters with hide flags which hide objects during navigation in an event are also not adjustable.

This graphic is explained in the accompanying text

Your viewcluster has a root object ROOT and 2 dependent objects DEP1 and DEP2, and a field FLAG. There is an entry in either DEP1 or in DEP2, depending on the value of FLAG. The subobject DEP2 is flagged as hidden. Event 10 determines which navigation entry was set in ROOT and goes dynamically to either DEP1 or DEP2 depending on the value of FLAG in this record, by setting VCL_NEXT_VIEW

This beviour cannot be reproduced in dialog adjustment. This view cluster is not adjustable because not all subobjects are offered for dialog adjustment because of the hidden flag.

 

 

Leaving content frame