Change Request Management RollOut Guide

Leitfaden für das Anbinden, Verändern oder Bauen von ChaRM-Satelliten-Landschaften

Die in diesem Leitfaden beschriebenen Aktivitäten sind zu tun wenn

  • Eine bestehende SAP-Lösungs-Landschaft an das SAP Solution Manager Change Request Management angebunden werden soll.
  • Eine bestehende an das SAP Solution Manager Change Request Management angebundene SAP-Lösungs-Landschaft verändert werden soll (z.B. Aufbau von dauerhaftem Projekt- und Konsolidierungssystem).
  • Eine bestehende an das SAP Solution Manager Change Request Management angebundene SAP-Lösungs-Landschaft verändert werden soll (z.B. Aufbau von temporärem Wartungs- und Qualitätssicherungssystem. Bisherige Wartung wird für Projekt genutzt.).
  • Eine bestehende an das SAP Solution Manager Change Request Management angebundene SAP-Lösungs-Landschaft verändert werden soll (z.B. Verlängerung des Wartungsstrangen um ein zusätzliches Qualitätssicherungs- oder Vorproduktionssystem).
  • Eine Demolandschaft im SAP Solution Manager Entwicklungssystem angelegt werden soll.
  • Ein Releasezyklus abgeschlossen und ein neuer Releasezyklus angelegt werden soll.
Change Request Management RollOut Guide.pdf (571.8 KiB)

Change Request Management Downgrade Protection Handbuch

Handbuch zur Steuerung, Überwachung und Vermeidung von Parallelentwicklungen

Systemübergreifende Objektsperre / Cross System Object Lock / CSOL

Die „Systemübergreifende Objektsperre / Cross System Object Lock / CSOL“ ist eine Funktion des SAP Solution Manager Change Request Management. Sie gewährleistet, dass ein Objekt bei Änderung in einem verwalteten System im zentralen SAP-Solution-Manager-System gesperrt wird. Spätestens beim Speichern dieser Änderung wird der Entwickler/Customizer über aktuell laufende parallele Anpassungen am selben Objekt informiert und kann seine Änderung ggf. gar nicht oder nur im fremden Änderungsvorgang speichern. Hierdurch werden Importprobleme von vornherein ausgeschlossen bzw. der Implementierer wird im Vorfeld über die Gefahr informiert.

Downgrade-Schutz / Downgrade Protection / DGP

Der „Downgrade-Schutz / Downgrade Protection / DGP“ ist eine Funktion des SAP Solution Manager Change Request Management. Die Funktion dient der Nachverfolgung von Objektänderungen und deren Transport durch die gesamte Lösungslandschaft. Konflikte und daraus resultierende potentielle und tatsächliche Downgrade-Risiken (z.B. Überholen eines Vorgängers oder Überschreiben eines Nachfolgers) werden identifiziert, bewertet, gemeldet und müssen explizit vom Change- / Release-Manager genehmigt werden. Hierdurch werden Importprobleme proaktiv verhindert bzw. der Change- / Release-Manager wird im Vorfeld über die Gefahr informiert.

Projektschnittmengenprüfung / Project Intersection Check / PIC

Wenn Sie in einer Systemlandschaft mit mehreren parallelen Projekten arbeiten, die Projekte aber nicht vollständig disjunkt halten können, dann müssen Sie Abhängigkeitsbeziehungen zwischen den Transportaufträgen definieren. Beim Import von Transportaufträgen werden die Abhängigkeitsbeziehungen ausgewertet und das System weist die Transport­administration automatisch darauf hin, dass sie die Menge der zu importierenden Aufträge vergrößern muss, um die korrekte Importreihenfolge zu erhalten. Die Funktion „Projekt­schnitt­mengenprüfung / Project Intersection Check / PIC“ dient der automatischen Identifikation technisch bedingten Transportabhängigkeiten, der manuellen Vormerkung von logischen Transportabhängigkeiten und der Überwachung der Abhängigkeiten beim Import.

Änderungs-und-Transport-System-Analyse / Change- and Transport System Analysis / CTSA

Die „Änderungs-und-Transport-System-Analyse / Change- and Transport System Analysis / CTSA“ dient der Ad-Hoc-Analyse einer Menge von Transportaufträgen, der darin enthaltenen Objekte und deren Umfeld. Mit Hilfe dieser Analyse können vor dem Projektimport Abhängigkeiten zu anderen Änderungen / Transportaufträge, deren Produktivsetzungen aktuell noch nicht anstehen, identifiziert werden. Der Umfang der zu importierenden Transportaufträge ist anschließend um diese Transportaufträge zu erweitern, da es ansonsten zu kritischen Objektversionsunterschieden zwischen Quell- und Zielsystem und damit einhergehend zu abweichendem Funktionsverhalten, Inkonsistenzen oder Systemabbrüchen kommen kann.

Transportnachverfolgungsmonitor / Transport Tracking Monitor / TRMO

Nach einem GoLive eines größeren Releases bzw. Projektes besteht häufig der Wunsch eines Nachweises der Transport- und Objektkonsistenz. Für eine Schnellanalyse kann die Funktion „Transportnachverfolgungsmonitor / Transport Tracking Monitor / TRMO“ genutzt werden. Sie können hiermit Transportaufträge von dem System, in dem sie angelegt und freigegeben wurden, bis zu dem System, in das sie importiert wurden, nachverfolgen. Dabei lassen sich sowohl Transportdeltas als auch Reihenfolgeverletzungen identifizieren.

Transportausführungsanalyse / Transport Execution Analysis / TEA

Eine ausführliche Analyse der Lösungslandschaft oder des Releases / Projektes ist mit dem Self-Service „Transportausführungsanalyse (für Projekte) / Transport Execution Analysis (for Project) / TEA(P)“ möglich. Diese Analyse kann vor und/oder nach einem GoLive ausgeführt werden. Sie kann auch unabhängig von einem GoLive ausgeführt werden. In jedem Fall erhalten Sie als Ergebnis einen ausführlichen Analysebericht (Word / HTML / PDF) mit konkreten Handlungsanweisungen zur nachhaltigen Sicherung bzw. Verbesserung der Transport- und Objektkonsistenz.

Importqueue-Web-UI – Importprüfungen / Import Queue Web UI – Import Checks / IQIC

Sämtliche zuvor beschriebenen Funktionalitäten sind ausschließlich für ABAP-Änderungen nutzbar. Für Non-ABAP-Änderungen sind sie nicht anwendbar. Ergänzend zur Funktion „Downgrade-Schutz“ und „Projektschnittmengenprüfung“ ist die Funktion „Importqueue-Web-UI – Importprüfungen / Import Queue Web UI – Import Checks / IQIC“ anzuwenden. Diese Funktion unterstützt die Prüfarten „Prüfung auf Vorgänger“ und „Prüfung auf Downgrades“ für alle ABAP- und fast alle Non-ABAP-Transporte. Es erfolgt ausschließlich eine Analyse der aktuell in der Importqueue zum Import anstehenden oder bereits importierten Transportaufträge, weshalb Überholer nur ein einziges Mal erkannt werden – z.B. nur beim Import in das Qualitätssicherungssystem aber nicht beim Import in das Produktionssystem.

Importhistorie-Web-UI – Analysemodus / Import History Web UI – Analysis Mode / IHAM

Ergänzend zur Funktion „Transportnachverfolgungsmonitor“ ist die Funktion „Importhistorie-Web-UI – Analysemodus / Import History Web UI – Analysis Mode / IHAM“ anzuwenden. Diese Funktion identifiziert Reihenfolgeverletzungen, Downgrades und reparierte Downgrades für alle ABAP- und fast alle NonABAP-Transporte. Es erfolgt ausschließlich eine Analyse der Importhistorie, weshalb unter anderem Transportdeltas nicht erkannt werden können.

Download

Change Request Management Downgrade Protection Handbuch.pdf (2.0 MiB)

Checking landscape information in SAP CRM PPF action conditions using BADI CONTAINER_PPF

In SAP Solution Manager Change Request Management we want to work with different status flows dependent on the landscape (in one process type). Therefore we need to use landscape information in Action schedule (and start) conditions.

With BADI implementation ZLIAC_SYSTROLE_EXIST (BADI Definition CONTAINER_PPF) we have the possibility to check the use of specific system roles. To do this, we simply have to define a condition parameter “ZLIAC_SYSTEM_ROLE_EXISTS_<SYSTEM_ROLE>“. Please have a look at transaction MAINT_ROLES for valid system roles.

In our first use case, we want do differentiate between 3-trier and 5-trier landscapes. To do that, we check for existence of system role “3”. This role will only be used in 5-trier landscapes like “D -> T -> 2 -> 3 -> P”. In 3-trier landscapes like “D -> T -> P”, this role will never be used.


*"----------------------------------------------------------------------
*"Methoden Signatur:
*"  Importing
*"    FLT_VAL TYPE OJ_NAME
*"  Changing
*"    CI_CONTAINER TYPE REF IF_SWJ_PPF_CONTAINER
*"    CI_PARAMETER TYPE REF IF_SWJ_PPF_CONTAINER
*"----------------------------------------------------------------------
method IF_EX_CONTAINER_PPF~MODIFY_CONTAINER.

  TYPE-POOLS: socmt.

  data:
    lv_result          type abap_bool,
    lt_parameter       TYPE SWCONTTAB,
    lv_system_role     type /TMWFLOW/PROJECT_SYSTEM_S-SYSTEM_ROLE,
    ls_object          TYPE sibflporb,
    lv_guid            TYPE crmt_object_guid,
    lv_doc_flow_id     TYPE crmt_doc_flow_id_wrk,
    lv_tasklist        TYPE /tmwflow/tasklist,
    lt_system          TYPE TABLE OF /tmwflow/project_system_s,
    lt_transport       TYPE SOCMT_TRORDHC_TYPE.

  field-symbols:
    <fs_parameter> like line of lt_parameter,
    <fs_transport> like line of lt_transport.

*-------------------------------------------------------------------------

*check if classes are bound
  CHECK: ci_container IS BOUND,
         ci_parameter IS BOUND.

*get all parameters
  CALL METHOD ci_parameter->get_values
    RECEIVING
      values = lt_parameter.

*process every matching parameter "ZLIAC_SYSTEM_ROLE_EXISTS_<SYSTEM_ROLE>". Please have a look at transaction MAINT_ROLES for valid system roles.
  loop at lt_parameter[] assigning <fs_parameter> where element(25) = 'ZLIAC_SYSTEM_ROLE_EXISTS_'.

*Crear result because this is a new run.
    clear lv_result.

*This is the first run. Therefore we have to get some information once.
    if lv_system_role is initial.

*Get Change Document
      CALL METHOD ci_container->get_value
        EXPORTING
          element_name = 'BUSINESSOBJECT'
        IMPORTING
          data         = ls_object.

* Extract GUID
      lv_guid = ls_object-instid.

*Exit if it is no valid context.
      if lv_guid is initial.
        return.
      endif.

*Get assigned tasklist
      CALL METHOD cl_hf_helper=>get_bo_tasklist_of_chng_doc
        EXPORTING
          im_change_document_id = lv_guid
        RECEIVING
          return                = lv_doc_flow_id.

      lv_tasklist = lv_doc_flow_id.

*Exit if it is no valid context.
      if lv_tasklist is initial.
        return.
      endif.

*get systems from tasklist
*If we need more information, we have to use /TMWFLOW/PROJECT_GET or /TMWFLOW/PROJECT_READ to get project id and /TMWFLOW/TRANSPORT_TRACK_GET to get extended system information.
      CALL FUNCTION '/TMWFLOW/TASKLIST_SYSTEMS_GET'
        EXPORTING
          id_tasklist       = lv_tasklist
          id_current_track  = 'X'
        TABLES
          et_project_system = lt_system[]
        EXCEPTIONS
          project_not_found = 1
          OTHERS            = 2.

*Exit if it is no valid context.
      if sy-subrc <> 0.
        return.
      endif.

*get transport requests of change document
      CALL METHOD /tmwflow/cl_transport=>get_chng_doc_transp_req
        EXPORTING
          iv_header_guid = lv_guid
        IMPORTING
          et_transp_req  = lt_transport[].

*We are only interested in transport tracks.
*It is OK if we have no transports yet.
      SORT lt_transport[] by transport_track.
      DELETE ADJACENT DUPLICATES FROM lt_transport[] COMPARING transport_track.

    endif.

*Extract system role to be checked now.
    lv_system_role = <fs_parameter>-element+25(1).

*Check every used transport track.
    LOOP AT lt_transport[] assigning <fs_transport>.

*Is system role used?
      READ TABLE lt_system[]
           WITH KEY transport_track = <fs_transport>-transport_track
                    system_role     = lv_system_role
           TRANSPORTING NO FIELDS.

      check sy-subrc = 0.

*Yes system role is in use!!!
      lv_result = abap_true.
      exit.

    ENDLOOP.

*if there are no transport requests, check all project tracks.
    IF sy-subrc NE 0.

      do 1 times.

*Is system role used?
        READ TABLE lt_system[]
             WITH KEY "transport_track = <fs_transport>-transport_track
                      system_role     = lv_system_role
             TRANSPORTING NO FIELDS.

        check sy-subrc = 0.

*Yes system role could be used!!!
        lv_result = abap_true.
        exit.

      enddo.

    endif.

*set output parameter
    CALL METHOD ci_parameter->set_value
      EXPORTING
        element_name = <fs_parameter>-element
        data         = lv_result.
*            RECEIVING
*              retcode      = lv_subrc.

  endloop.

endmethod.

Change Request Management Critical Objects Check and Approval

How to activate and configure the “Critical Objects Check and Approval” feature?

COA is a powerful ChaRM feature to prevent the release of transport requests containing critical objects. It can easily be activated. We need only a little bit UI Configuration (field Critical Objects), Customizing (Actions “Process Critical Object” and Partner Function “Change Manager”), Authority Assignment (Approval Authority) and Master Data Maintenance (Activation + Definition of Critical Objects).
This short guide explains all steps which need to be done. Additional it explains how to mark all changes as critical or how to mark all configuration changes of a certain customizing table as critical independent from the way of maintenance (table, view, view cluster, IMG, SE16, …).

Change Request Management Critical Objects Check and Approval.pdf (808.2 KiB)