How to allow or prevent status change based on phase of change cycle?

The phase control of change cycles is allowing or disallowing certain transport related activities dependent on the current phase. Sometimes the corresponding status change will be allowed or disallowed.

Some famous examples are:

  • Development without Release / Test / Go Live Preparation:
    • Normal Changes cannot be switched from „In Development“ to „To Be Tested“
  • GoLive:
    • Normal Changes cannot be switched from „In Development“ to „To Be Tested“
    • Urgent Changes cannot be switched from „In Development“ to „To Be Tested“

You might want to have some more status change control dependent on the phase of the change cycle. In other words: You want to allow or prevent a switch to a certain status in Normal Change or Urgent Change if the change cycle is or isn’t currently in a specific phase.

Good news:

This is just configuration. In other words: We are able to allow or restrict status changes dependent on change cycle phases. With the following steps I will guide you thru the configuration of an example:

  1. Define Task List action Z_IN_GO_LIVE_ONLY and Z_NOT_IN_GO_LIVE in view /TMWFLOW/TPCACTS.
  2. Allow Task List action Z_IN_GO_LIVE_ONLY in phase GO_LIFE only. Allow Task List action Z_NOT_IN_GO_LIVE in all phases except GO_LIFE. View cluster /TMWFLOW/VC_PHMD is to be used here.
  3. Map Task List action to ChaRM action ZIGLO_SMMJ and ZNIGL_SMMJ in view cluster /TMWFLOW/VC_CPVR (for path CRMW -> SMMN or SMDV).
  4. Define ChaRM action ZIGLO and ZNIGL in view TSOCM_ACTIONS and TSOCM_ACT_DEF. Assign class CL_CHM1_INSTANCE here. The message class and number can be empty but the ChaRM integration flag needs to be set to flag it as tasklist resp. transport related action.
  5. Implement a dummy BADI implementation for these actions. These implementations just need to exist and to be active. They don’t need to do anything (method body can/should be empty).
  6. Assign ChaRM action ZIGLO_SMMJ or ZNIGL_SMMJ to the target status of your Change Transaction in view cluster AIC_SETTINGS corresponding to your requirements. It does not matter whether this action is defined as early or late action since it does nothing.
  7. Assign ChaRM check condition CHECK_ACTION_PHASE to the target status of your Change Transaction and configure it as cancel action (the status change will be cancelled, if the check fails). This setup is also part of view cluster AIC_SETTINGS which can be accessed via SM34 of SPRO.
  8. Repeat or adjust these steps for other phases, actions or transaction types.

Result: Whenever the end-user is performing a status change to the target status, the check condition CHECK_ACTION_PHASE will be triggered and therefore check whether there is an ChaRM action assigned to the target status which is not allowed in the current change cycle phase. This check will find action ZIGLO or ZNIGL. This action will be translated to action Z_IN_GO_LIVE_ONLY or Z_NOT_IN_GO_LIVE and checked against the current change cycle phase using the Task List action assignment configured in step 2. The action itself is doing nothing.

In case you configured ChaRM action ZIGLO: The status change is only possible if the change cycle is in phase „Go Live“.

In case you configured ChaRM action ZNIGL: The status change is only possible if the change cycle is NOT in phase „Go Live“.

If you want to check more than one change cycle phases (e.g. Test or Go Live), you can combine several ChaRM actions. However, this make sense for ZNIGL and similar action only. If you combine ZIGLO and similar actions at least one check will always fail and therefore preventing the status change. If you want to configure a generic solution, you have to configure actions for every change cycle phase: NOT_IN_DEV_W/O_REL, NOT_IN_DEV_W_REL, NOT_IN_TEST, …