Show TOC

Adjustability Criteria from Release 4.5BLocate this document in the navigation structure

Use

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, that is, 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 comparability depends on a flag in the maintenance object description header which is used by the CCS viewer and CTA. It can have the following values:

  • No value, i.e. the dialog is modified and the comparability of this dialog has not been maintained. The dialog is ignored by the CCS viewer and CTA;

  • Not comparable, that is, the dialog can not be used by the CCS viewer and CTA;

  • comparable in dialog, that is, the CCS viewer or CTA run the dialog, the user adjusts the data and saves. An automatic compare is not possible;

  • automatically comparable, that is, the dialog is not modified or only has modifications which do not affect the automatic (and, of course, dialog) compare.

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.

Note

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 function
  5. Additional table maintenance
  6. Messages
  7. Own Dialogs
  8. View-specifically generated internal data table access

Introduction

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

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

Caution

If there is a subset field value in the ABAP 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.

Recommendation

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, that is, 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. The DBA_SELLIST contains the relevant selection criteria. It can therefore not be assumed here that exactly one value in specified in the DBA_SELLIST 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 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.

  • Suppress these checks in the comparison. Use flag VIM_IMPORT_MODE_ACTIVE to do this.

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.

  • Check whether the logic is relevant for the adjustment.

  • If the subobject-specific logic is not adjustment-relevant, change your program code so that the logic is not processed in the adjustment.

  • If the subobject-specific logic is adjustment-relevant, it must be changed so that knowledgde of the subobject is not required for the adjustment.

    Note

    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 function

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.

Recommendation

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)

Note

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.

There is the same problem in the dialog comparison as in the online maintenance: If the modified view data is not saved by the end user during the maintenance, the edditional data is still saved to 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.

Note

Additional data derived from the view data and maintained in the background, is handled as in online maintenance, that is, the dialog can be flagged as adjustable without modification. Such entries in the work list are ignored by the CCS Viewer and CTA, that is, 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:

  • E and A messages automatically end the processing of the record and are automatically logged. no further action is required. No further actions are required.

  • For S, W, and I messages, which need not be logged and can be ignored, no further action is required;

  • For S, W, and I messages which are to be logged or used for error handling, call the form routine VIM_PROCESS_MESSAGE instead of the MESSAGE statement.

    Note

    The interface of the form routine is as follows: form vim_process_message using ... (see also 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, that is, without dialog.

    Note

    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. Constructions such as this can lead to endless loops in automatic comparisons. It is therefore necessary that messages in automatic mode get either type E or A. The parameter PM_BATCH_TYPE in the routine VIM_PROCESS_MESSAGE must be set appropriately.

    Example 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'. "anwendungsspez. Nachrichtenklasse *Sowohl im Dialog als auch beim automatischen Abgleich m_online_type = 'S'. *soll S-Message gesendet werden m_batch_type = 'S'. *andwendungsspezifische Nachrichtennummer 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 ...
                         
    Example 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_id = 'xx'. m_online_type = 'S'. _batch_type = 'E'. m-id = 'xx'. "anwendungsspez. Nachrichtenklasse *andwendungsspezifische Nachrichtennummer 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. Own Dialogs

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

Recommendation

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

Example

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

Caution

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, that is, the global field symbols defined in the view maintenance, for example, <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, for example, in the statement sort sort vhugo_total by <vim_xtotal_key>, the program is canceled.

On

          
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.

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

Example

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.
Note

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

          
               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> (xheader-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.

Example

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. Own 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

    The following modifications also prevent dialog adjustment:

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

Introduction

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

  • VCL_IMPORT_MODE, view cluster maintenance is in transfer mode

  • VCL_COMPARE_MODE, view cluster maintenance is in adjustment mode

  • SPACE, view cluster maintenance is in normal maintenance mode.

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. Own 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. The events not processed in the automatic comparison are an exception.

Recommendation

Check if the maintenance dialog can be left out in automatic comparison mode. Use flag VCL_SPECIAL_MODE for this.

Example

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").

Example

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. No note to the error situation remains in the log. In the worst case a situation such as this can lead to an endless loop as the error situation cannot be resolved and an I or S message does not lead to cancelaltion of the action.

Recommendation

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.

Example

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 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.

Example

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:

  • 02

  • 03

  • 07

  • 09

  • 10

  • GR

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

Recommendation

Check whether the checks can be made elsewhere.

5. Use of the event SV

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 - for example, if a table cannot be locked) is forbidden because it stops the automatic adjustment.

Recommendation

Execute an error message of type 'A' in the automatic comparison in order to terminate the comparison. Use the form routine VCL_PROCESS_MESSAGE. (see also messages) for this.

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, that is, 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:

  • there are root objects with key subset fields which are not linked by an I dependency;

  • a key subset field at root level is in the generic part of the transport key;

    Note

    "Generically transported" means: keys in the change request cannot be completely specified, for technical reasons, for example, because the key of an entry is longer than 120 characters, or it contains special data types, for example, 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.

  • A key subset field at root level is in an object which depends on the root object, is not a key field, or is in the generic transport key.

If the subset values cannot be reconstructed from the transport key, all entries are processed at once, not by subsets, that is, 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.

Example

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 used 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:

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 Start of the navigation path Utilities Next navigation step Adjust End of the navigation path. 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 flag is VCL_SPECIALMODE = VCL_COMPARE_MODE, the view cluster maintenance is in adjust mode. This also applies in function object maintenance. 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:

  • 02

  • 03

  • 07

  • 09

  • 10

  • GR

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

Recommendation

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, that is, they are not created explicitly by the end user. These entries are also created hidden because all modifications are also performed in dialog adjustment.

Caution

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).

View clusters with hide flags which hide objects during navigation in an event are also not adjustable.

Example

Your view cluster has a root object ROOT and 2 dependent objects DEP1 and DEP2. ROOT also has 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.