Quality Gate Management Szenario löschen

Frage: Lassen sich testweise angelegte Szenarien im Quality Gate Management (QGM) löschen?

Antwort: Vielleicht mit Tendenz zu Nein.


Change-Control-Landschaft anlegen, ändern und löschen:

https://help.sap.com/viewer/60943adf3ff44893b62c568bb8a87d17/7.2.05/de-DE/bba95557e03f9067e10000000a4450e5.html

Lösung löschen:

https://launchpad.support.sap.com/#/notes/2375895

Szenario schließen:

https://help.sap.com/viewer/8b923a2175be4939816f0981b73856c7/7.2.05/de-DE/92fa205a04594b089c4c51cf1afdafa1.html

Szenario anlegen und ändern:

https://help.sap.com/viewer/8b923a2175be4939816f0981b73856c7/7.2.05/de-DE/ba41da6d057f42cbae01d64926763007.html

Laut meinem Kenntnisstand lassen sich Szenarien nicht löschen. Das ist so ähnlich wie wenn sie Änderungszyklen und Aufgabenpläne im Change Request Management löschen wollten.

Offiziell geht das nicht. Bei Änderungszyklen gibt es einen Trick u.a. mittels Transaktion CRMD_ORDER oder Report CRM_ORDER_DELETE. Falls Szenarien auch nur CRM-Vorgänge sind, wäre das einen Versuch wert.

Möglich ist auch, dass das Szenario automatisch gelöscht wird, wenn die ganze Change-Control-Landschaft gelöscht wird.

Das wäre also auch einen Versuch wert, falls Sie die Change-Control-Landschaft nicht noch für was anderes nutzen.

Und wenn alle Stricke reißen: Dann verwenden Sie das Szenario doch einfach wieder, indem Sie die Szenariodaten ändern.

Ansonsten bleibt Ihnen nur das Abschließen. Oder Das Hoffen auf ein entsprechendes Feature in einem zukünftigen SP.

Prüfung kritischer Objekte / Critical Objects Check – Performanceoptimierung

Manchmal zweifle ich.

Nutzt überhaupt irgend jemand den SAP Solution Manager?

Gerade habe ich die Funktion „Prüfung kritischer Objekte / Critical Objects Check“ für 50.000 Objektdefinitionen getestet. Die Laufzeit von mehr als 10 Minuten für das Anlegen von Transportaufträgen, den Wechsel auf den AB „Transport Management“, das Erzeugen von ToCs oder die Freigabe von Transportaufträgen ist definitiv zu lang.

Wir alle wissen ja spätestens seit Einführung der Downgrade Protection (DGP), dass SAP SE gar nicht oder nur unter unrealistischen Laborbedingungen testet. Also hat auch hier SAP SE höchstens zwei bis drei kritische Objekte definiert und war dann mit der Performance sehr zufrieden.

Aber es muss doch da draußen auch Nutzer geben, die 10, 20, 100 oder sogar (wie wir) mehrere tausend kritische Objekte definieren?!

Zumal das Problem seit Einführung von Standard Changes im SAP Solution Manager 7.2 SP5 noch größer geworden ist, schließlich werden viele Anwender diese Änderungsart inklusive Whitelist-Feature nutzen wollen. Aber wenn da die Performance genauso ist, sehe ich schwarz.

Die schlechte Nachricht: SAP HANA hilft hier nicht viel. Das ist einfach nur richtig schlechte Programmierung.

Die gute Nachricht: Das Problem ist durch lokale Optimierungen lösbar:

Es kann so einfach sein.

Funktionsbaustein /TMWFLOW/RCK_CHECK_SM_CALL wird für die Durchführung der Prüfungen genutzt. Allerdings wird er viel zu häufig (einmal pro Transport, einmal pro Aufgabe, einmal pro ToC) aufgerufen. Eine Pufferung (ca. 60 Sekunden Gültigkeit des Puffers, implementiert mittels Enhancement-Technik) wirkt hier wunder.

Funktionsbaustein /TMWFLOW/BCO_READ_OBJECTS wird für das Lesen der Objektdefinitionen genutzt. Mittels Modifikation können folgende Optimierungen durchgeführt werden, die die Performance signifikant verbessern:

  • Die Nutzung sortierter interner Tabellen verhindert Full Table Scan.
  • Die Optimierung des SQL-Statements zum Lesen der ausschließlich benötigten Datensätze verhindert das prozessieren aller Datensätze.
  • Das Entfernen des Sortieren-Befehls aus der Loop-Schleife löste die Bremse.

Funktionsbaustein /TMWFLOW/BCO_CHECK_OBJECTS dient zur Durchführung der Objektprüfung durch Vergleich der Liste der kritischen Objekte mit dem Inhalt des zu prüfenden Transportauftrages. Sobald ein Objekt als kritisch identifiziert wird, wird es aus der Liste des Transportauftrageinhaltes in die Liste der kritischen Objekte verschoben. Diese Verschiebung kostet Zeit/Performance. Zudem ist diese Verschiebung u.U. gar nicht gewollt, da ein Objekt ggf. zu mehreren kritischen Objektdefinitionen passen kann und dann auch mehrfach angemahnt (und genehmigt) werden sollte. Folglich sollten alle Löschoperationen auf den internen Tabellen lt_bao6163 und lt_e071k per Modifikation entfernt werden. Außerdem sollten auch hier sortierte interne Tabellen genutzt werden und sofern möglich auf den Vergleichsoperator „contains pattern“ verzichtet werden.

Funktionsbaustein /TMWFLOW/RCK_APPLY_SPECS wird genutzt um die Liste der kritischen Objekte mit den bereits genehmigten kritischen Objekten abzumischen. Hier sollten ebenfalls sortierte interne Tabellen genutzt werden um performanceoptimal zu arbeiten. Zudem ist hier eine Fehlerkorrektur erforderlich, um zu verhindern, dass Genehmigung nicht wieder verloren gehen und um sicherzustellen, dass jede Objekt- oder Subobjektgenehmigung für nur genau dieses Objekt/Subobjekt angewendet wird.

Die Prüfung eines Transportauftrages mit 40.000 Objekten gegen eine Objektliste mit 40.000 kritischen Objekten dauert jetzt ca. 20 Sekunden statt vorher mehr als 20 Minuten.

Feature Attributes (DNO_CUST04 2.0)

Introduction

Sometimes we need the capability to activate or deactivate a certain feature or to select a feature variant in context of a specific process type or project id. The already existing solution DNO_CUST04 / DNOC_USERCFG or AGS_WORK_CUSTOM are no proper solutions because here we cannot define attribute names & values and we cannot assign attributes to a project id.

Because SAP SE is not able to design and implement a proper solution, we have to do it.

Tables and Maintenance Views

Attribute Name

Table ZAT_N_C | Attribute Name

  • CLIENT | Client
  • NAME | Attribute Name

Table ZAT_N_T | Attribute Name (Text)

  • CLIENT | Client
  • LANGU | Language
  • NAME | Attribute Name
  • TEXT | Attribute Name Description

Attribute Value

Table ZAT_V_C | Attribute Value

  • CLIENT | Client
  • NAME | Attribute Name
  • VALUE | Attribute Value

Table ZAT_V_T | Attribute Value (Text)

  • CLIENT | Client
  • LANGU | Language
  • NAME | Attribute Name
  • VALUE | Attribute Value
  • TEXT | Attribute Value Description

Search Help ZAT_SH | Attribute Values (used for dynamic value list determination in customizing tables)

  •  ZAT_V_C-NAME | I+E | | Attribute Name
  • ZAT_V_C-VALUE | E | 1 | Attribute Value
  • ZAT_V_T-TEXT | | 2 | Attribute Value Description

Attribute Assignment

Table ZAT_A_C | Attribute Assignment

  • CLIENT | Client
  • PROCESS_TYPE | Process Type
  • PROJECT_ID | Project ID
  • NAME | Attribute Name
  • VALUE | Attribute Value

View ZAT_PT_V | Attribute Assignment on Process Type level (transportable)

  • CLIENT | H | Client
  • PROCESS_TYPE | | Process Type
  • PROJECT_ID | H | = “ | Project ID
  • NAME | | Attribute Name
  • VALUE | | Attribute Value
  • PROCESS_TYPE_TEXT | R | Process Type Description
  • NAME_TEXT | R | Attribute Name Description
  • VALUE_TEXT | R | Attribute Value Description

View ZAT_PT_V | Attribute Assignment on Project level (not transportable)

  • CLIENT | H | Client
  • PROCESS_TYPE | | Process Type
  • PROJECT_ID | <> “ | Project ID
  • NAME | | Attribute Name
  • VALUE | | Attribute Value
  • PROCESS_TYPE_TEXT | R | Process Type Description
  • NAME_TEXT | R | Attribute Name Description
  • VALUE_TEXT | R | Attribute Value Description

View Cluster ZAT_VC | Attributes

  • ZAT_N_C | Attribute Name
    • ZAT_V_C | Attribute Value

API (Class ZAT_CL)

CHECK_ATTRIBUTE

Purpose:

  • Check for Name and Value of an attribute

In:

  • Process Type
  • Project ID
  • Name
  • Value

Out:

  • Boolean

Content:

  • Check for attribute and context in table ZAT_A_C

GET_VALUE

Purpose:

  • Get Value of an attribute

In:

  • Process Type
  • Project ID
  • Name

Out:

  • Value

Content:

  • Read first value for given context and attribute name from table ZAT_A_C. Sort by process type (descending) and project id (descending) to enable overlapping capability.

Overlapping Capability:

  • PROCESS_TYPE | PROJECT_ID
  • X X
  • X O
  • O X
  • O O

GET_ATTRIBUTES

Purpose:

  • Get complete list of active attributes

In:

  • Process Type
  • Project ID

Out:

  • Table of Name Value pairs
  • Table of Strings

Content:

  • Read all attribute names and values for given context from table ZAT_A_C.
  • Concatenate name and value separated by slash (if string table result is requested).

GET_ATTRIBUTES_FOR_TRANSACTION

Purpose:

  • Get complete list of active attributes for a transaction

In:

  • Transaction GUID

Out:

  • Table of Name Value pairs
  • Table of Strings

Content:

  • Get process type using method cl_hf_helper=>get_proc_type_of_chng_doc.
  • Get project id using method cl_al_crm_cm_utility=>read_project_id.
  • Get result data calling method GET_ATTRIBUTES

Business Object Attribute (used by PPF actions)

SWO1 -> Enhancement of BUS2000116 (Service Process) -> Attribute „Features“

Data Reference: BDI_LOG-COMM (String table)

In:

  • Transaction Guid

Out:

  • Feature List

Content:

  • Call method GET_ATTRIBUTES_FOR_TRANSACTION

Note:

  • This attribute can be used in ppf schedule and start conditions
  • Usually we are using operator „CE“ to check for a certain name value pair („NAME/VALUE“). However pattern search (with asterisk and plus is also working).

SPRO / IMG

  • Attribute Definition (Name & Values): Define feature attributes with name and possible values.
  • Attribute Assignment on Process Type level (transportable): Assign feature attributes to process type in order to activate feature or choose feature variant for a specific process type. Note. This configuration is transportable.
  • Assign Attribute on Project level (not transportable): Assign feature attribute to project in order to activate feature or to choose feature variant. Note: This configuration is not transportable. Note: This configuration will overwrite configuration of process type level in case application wants to read the value for a specific attribute name. This configuration will be merged with configuration of process type level in case application wants to check a specific attribute (name & value) or wants to read complete list of active attributes.
  • Optionally we can add DNO_CUST04 and AGS_WORK_CUSTOM here (several existing IMG activities).

Transport-Related Checks (available with SAP Solution Manager 7.2 SPS 3+)

With SAP Solution Manager 7.2 SPS 3 there is a new assignment block available. This new assignment block is called „Transport-Related Checks“ (german: „Transportbezogene Prüfungen“). It merges the results of the Cross-System Object Lock (CSOL), Downgrade Protection (DGP), Critical Object Check (COC), ABAP Test Cockpit (ATC) and Code Inspector (CI) to one place. Additionally it provides a feature to implement Customer-Specific checks (CUC) as BADI implementation.

This is an improvement which will simplify the Change Request Management solution significantly. But …

  • The previously existing assignment blocks for DGP, COC or ATC/CI are no longer valid because they are part of the new assignment block.
  • The checks are not harmonized in one framework. That mean that DGP and COC and ATC still have their own approval feature. DGP can be approved on conflict, event and system level. COC can be approved on conflict level. ATC can be approved on issue level. CUC cannot be approved yet.
  • The checks are not harmonized in one framework. That mean that CSOL/DGP, COC, ATC/CI and CUC are triggered at different events. COC and ATC/CI are still not supported on transport import. On the other side COC and CUC are now supported on object save (analogously to CSOL).
  • The checks are not harmonized in one framework. That mean, that there is no unified customizing setting to activate these checks for specific events, landscapes, systems or clients. Only DGP has the capability to activate or deactivate checks on event, landscape, system or client level. COC and ATC/CI can be activated on system level only. CUC needs to implement an own customizing table to enable flexible configuration of the custom-specific checks.
  • When upgrading to SAP Solution Manager SPS 3, you have to run WCF_RT_COMP and WCF_CC. You also have to adjust your UI configurations for Change Documents and Change Cycles and to synchronize UI personalization. Otherwise the new assignment block will not be available or not be visible.

Official documentation:

SAP Help: Transport-Related Checks

Using IBase Components in Change Requests

Requirement

We want to display and select IBase Components in Change Requests.

Challenge

In SAP Standard IBase Components are not supported on CR level, only on CD Header level and CR Item Level (Scope Assignment Block). Therefore there is not only a UI configuration to do.

Solution

We can reuse the solution already implemented for Change Documents.

However, this is a dirty solution, because it contains one modification, one modified enhancement and two copy-past source code clones.

This is acceptable as temporary solution only till SAP will implement it in Standard. Let’s hope it will happen soon.

Steps

  1. Exchange Context Node Controller of AIC_CMCR_H/AICCMCRHeaderEF-BTREFOBJMAIN from CL_SRQM_H_BTREFOBJ_CN to CL_AIC_CMCD_IBASE_CN. Use the enhancement technique on context node controller level to do that. (We have to do it manually because of technical reasons).
  2. Generalize context node controller CL_AIC_CMCD_IBASE_CN to work with CDs and CRs. Therefore correct definition of attribute MR_VIEW_CONTROLLER from CL_AIC_CMCD_AICCMCDHEADER_IMPL to CL_SRQM_RFC_REQUESTFORCH0_IMPL (or OBJECT) by modification.
  3. Add component usage CUSolmanIbaseValueHelp to AIC_CMCR_H and implement view controller methods OP_FINDIBASECOMPONENT and EH_ONSELIBASECOMPONENT analogous to AIC_CMCD_H by copy & past.
  4. Configure Status Dependent Input Readiness (SPRO -> … -> Adjust UI objects by User Status) for UI element „IBASE_COMPONENT“ to make fields editable at the right time (usually analogous to Project ID).
  5. Configure UI and make fields //BTREFOBJMAIN/IBINSTANCE + //BTREFOBJMAIN/IBINSTANCEDESC visible and editable.
  6. Copy Control is usually working fine because the hidden fields are already used in Standard CR to store IBase Component copied from preceeding Incident.
  7. Steps 1 – 5 are needed for editability and selectability. For display only step 5 is sufficient.