Skip to end of metadata
Go to start of metadata

Purpose

The purpose of this wiki is to introduce the settings of release procedure. You can find how to setup the procedure and the hints for debugging.

Overview

  1. CHARACTERISTICS
    1.1 Initial screen
    1.2 Basic Data screen
    1.3 Description screen
    1.4 Allowed Values screen
    1.5 Additional Data screen
    1.6 Restriction To Class Types screen
  2. CLASS
    2.1 Initial screen
    2.2 Basic data screen
    2.3 Keywords screen
    2.4 Characteristics screen
  3. TABLES USED FOR RELEASE PROCEDURES
  4. RELEASE PROCEDURE SETUP
    4.1 Setting for some documents
    4.2 Setting the procedure
    4.3 Settings on the 'Release Strategies' Detail Screen
  5. TIPS TO REMEMBER
  6. CHECK RELEASE RELEASE STRATEGY RELEVANT FOR PURCHASING DOCUMENT
  7. DEBUGGING
  8. Related SAP Notes/KBAs.

Characteristics

Path: Logistics > Central Functions > Classification > Characteristic (old transaction: CT01, please use CT04 for maintenance of characteristics)

Initial screen:

  • Characteristic name

Basic Data screen:

An example for the characteristic CEBAN-KOSTL (requisition cost center)

  • Description
  • Characteristics Group
    • optional, can be used to group together characteristics
    • setup is done in configuration (transaction O042)
  • Status
    • mandatory , specifies if the characteristic can be used
    • set up is done in configuration (transaction O042)
  • Data type
    • mandatory
    • a pop-up will display after a value for the format of the data type was entered
  • Heading
    • will be defaulted from description
    • editable
  • Value assignment
    • single values
    • multiple values
    • restricted
    • object dependencies can be maintained on an extra screen (separate button)
  • Control entry
    • Entry required (can force a value to be entered)
    • Intervals allowed (cannot be used for data type char)

Description screen:

  • Enter descriptions and column heading in different languages

Allowed Values screen:

  • Several options available (please refer to the F1 help fort he ‚characteristics value' field):
    • single value
    • multiple values
    • restricted (e.g., to validity intervals)
    • Values maybe set as default,
    • Value hierarchies are possible.
  • Default values check
  • Dependencies exist check
  • Subordinate values check

Additional Data screen:

The table name the characteristic is referring to:
- CEBAN for requisitions
- CEKKO for purchasing documents
- CESSR for service entry sheets

  • Field names of the referring tables

Restriction To Class Types screen:

  • the processed characteristic can be restricted to specific class types, e.g., 032 ('release strategies')

Class

Path: Logistics > Central Functions > Classification > Class (transaction CL01/CL02/CL03)

Initial screen:

  • Class
  • Class type
    • E.g., type 032 is used for release strategy

Basic data screen:

An example for the class FRG_EBAN which is used for the release of purchase requisitions:

  • Description
  • Status
    o mandatory, specifies if the class can be used already
  • Class group
    o optional, can be used to group related classes
    o set up in configuration (transaction O043)
  • Organization area
    o optional
  • Valid from / valid to
  • Same classification radio button
    • no check: system does not check for duplicate classifications
    • warning message: the system issues a warning if duplicate classifications are stored in the system already
    • error message: an error occurs if duplicate classifications are found
  • Authorizations
    • determines whether a user is allowed to maintain this class

Keywords screen:

  • User may enter keywords which may help him to find the referring class via search tools

Characteristics screen:

  • Enter the characteristics associated with this class
    • data from this screen maybe changed manually
    • if such data is changed, any further modifications of the characteristic itself using transaction CT02 will NOT be reflected in this class.

Tables used for Release Procedures

To get an overview regarding the definition and field content of the following tables, please use transaction SE11.

  • T16FG - Release Groups
  • T16FC - Release Codes
  • T16FB - Release Indicator: Purchasing documents
  • T161S - Release Indicator, Purchase Requisition
  • T16FE - Description of Release Indicators: Purchasing Documents
  • T16FS - Release Strategies
  • T16FV - Release Prerequisites
  • T16FK - Release Statuses

Using transaction SE16, it is sometimes possible to detect a problem by checking the data in tables T16FS, T16FV and T16FK, and comparing what is displayed in the corresponding tables of the release configuration.

Release Procedure Setup

Setting for some documents:

For purchase requisitions:
Path: IMG > Material Management > Purchasing > Purchase Requisition > Release Procedure > Set up procedure with classification

For service entry sheets:
Path: IMG > Material Management > External Services Management > Define release procedure for service entry sheet

Please note that purchase orders, contracts , scheduling agreements, and RFQs/Quotations all use the same release strategy.

Purchase orders:
Path: IMG > Material Management > Purchasing > Purchase Order Processing > Define release procedure

Contracts:
Path: IMG > Material Management > Purchasing > Contract > Set up release procedure

Scheduling agreements:
Path: IMG > Material Management > Purchasing > Schedule Agreement > Set up release procedure

RFQs/Quotations:
Path: IMG > Material Management > Purchasing > RFQ/Quotation > Define release procedure

Normally, purchase requisitions are released on ITEM level. From release 4.0, the document can also be released on HEADER level. For this, the referring flag must be set under

IMG > Materials Management > Purchasing > Purchase Requisition> Release Procedure > Procedure with Classification > Set Up Procedure with Classification > Release Groups > Flag 'Overall Release of Purchase Requisition'

All other purchasing documents are always released on header level.

Setting the procedure:

To properly set up a consistent release procedure, the following sub-items have to be processed in appropriate order:

  • Release Group:
    • Release group: 2 digit code which combined with a 2 digit strategy code makes up the final release strategy
    • Release object:
      1. - used for purchase requisitions
      2. - used for purchase orders & other purchasing documents
      3. - used for the acceptance of service entry sheets
    • Class:
      Only one release class can be used for a certain release object.

E.g., requisitions can use class FRG_EBAN, other purchasing documents class FRG_EKKO, while the release of service entry sheets may refer to class FRG_ESSR.
As mentioned, with release 4.0, there was a change with respect to the release of purchase requisitions. Now, overall release on header level and item-wise release are both possible.
To use BOTH kinds of release strategy in a system, two different classes must be created. One class will use the field CEBAN-GFWRT as characteristic for the overall release. The other class to be used for the item-based release will use the field CEBAN-GSWRT instead. Note that you can only use ONE type of release for each specific document type. To assign this correctly during the configuration of a system, the document type to be used for overall releases must have the overall release flag set (as depicted above).
After having set this flag, this document type will only look at the overall release strategy, otherwise, the item-based release strategy will be used.
Secondly, in the release strategy configuration the two different classes to be used have to be set up as well: one for overall releases, the other will again be used for the item-based strategies.

  • Release code:
    • The release code is a two-character ID allowing a certain user to release (or approve) a requisition item or an external purchasing document.
    • Release codes are always assigned to a release group
    • Workflows can also be assigned to a release group / a release code
  • Release indicator:
    • For purchase requisitions:
      Provides information whether the referring document / item may be changed by , e.g., purchasing or material planning runs and control after the start of the release procedure, whether an RFQ or a PO may be created with reference to the PR item, whether a new strategy is determined, or whether already existing releases have to be revoked when certain changes are performed to the document.
    • For other purchasing documents:
      Provides information whether the document maybe changed by purchasing functionalities after the start of the release procedure, or whether a new strategy is determined, or whether existing releases have to be cancelled in the event of changes.
  • Release strategy:
    • The complete strategy is the combination of the release group and the release code itself, each of them consisting of a 2 digit code. Example: XX YY, here XX denotes the release group while YY indicates the release code.
    • On the details screen, the release code(s) assigned to this strategy can be entered. In addition, the release prerequisites must be set as well as the release statuses and the values for the characteristics of the assigned release class.
  • Workflow:
    • Using this option, roles maybe assigned to any of the release group/code combinations.

Settings on the 'Release Strategies' Detail Screen

  • Release prerequisites:

An example for a two-step release procedure is given below in the attached screenshot. Release codes are 01 and 02 with 01 as prerequisites for the setting of code 02.

The release prerequisites indicate the sequence in which a purchase requisition (item) or purchasing document must be approved via different release codes.

Another example is the following three-step release procedure which makes use of release codes 10, 20, and 30:

       10   20   30
       10
       20    x
       30    x     x

In this example, release code 10 must be applied before release codes 20 and 30, and the release with code 20 must be executed before finally applying code 30.
Release statuses:

The release status of a document is further specified by the release indicator. This indicator may specify whether a document is, e.g., blocked, fixed against MRP runs, or whether follow-on documents maybe created. This is illustrated by another example for the three-step release procedure:

      10     20     30     Release Indicator
                                 S - Blocked
      x                         S - Blocked
      x        x               Q - Released for Quote
      x        x       x      R - Released for ordering

  • Classification:



    Based on the characteristics which have been assigned to a certain release class, the user may enter the specific field values which he wants to be considered when a certain release strategy shall be found for a purchasing document.

    Example:
    Class:                   FRG_EBAN
    Characteristics:    Value
    CEBAN-GSWRT    100.00 USD - 500.00 USD
    CEBAN-EKGRP      001

  • Release simulation:
    The screenshot given below illustrates the simulation of a two-step release strategy which was performed successfully.


    Every release strategy can be tested by simulating the approval of each of the defined release codes.

Tips to remember

  • A release strategy cannot be used WITHOUT classification and WITH classification at the same time. If there is any entry present in Release Group table (T16FG-FRGOT), only releases WITH classification can be used.
  • Do not use hyphens for class names, instead, it is better to use an underscore.
  • When setting up the release indicators on the 'status' screen, the sequence should start with a BLOCKED status and end with 'RELEASED for ORDER'. If there is no 'RELEASED for ORDER' as last status, the user will be prompted the warning message ME167: 'Please check release statuses'.
  • Cost centers (CEBAN-KOSTL) and vendors (CEBAN-LIFNR) in a release strategy should be entered with leading zeroes, even though they are defined as CHAR fields. This holds for structures CEKKO & CESSR as well. (see note 52225 which - despite its limited validity - is still fully relevant for higher releases, too)
  • In the case of contracts, the target value is used for the release strategy determination instead of the contract net value. With note 116685, this logic has been enhanced considerably: If you maintain a target value in the contract header, this value is set in field CEKKO-GNETW to determine a possible release strategy. If no target value exists on header level, an aggregation of the target values of the items is carried out instead.
  • Since most purchasing documents (except for requisitions) are evaluated on header level, the release strategy is not assigned until the document is saved. There is a check function which can be used to determine the strategy before the document is saved.
  • Once a release strategy has been determined for purchasing documents (other than requisitions) without any approval yet, any output conditions assigned to the document will not be displayed on the message screen until the release is approved. This is due to the fact that these documents are blocked for printing intentionally.
  • If the error message ME179 is prompted by the system ('error in classification class XXXXX class type 032'), the strategy is already assigned to another class. The user therefore has to remove this strategy from the old class before it can be assigned to another class.
  • For purchasing documents other than requisitions, item level fields such as plant and material group which are used for strategy determination, will be aggregated to the header level. E.g., for a certain release scenario, the user wants to use the plant as one of the characteristics. If all items do NOT belong to the same plant, one has to have a blank value as one of the allowed values for a strategy to be selected. In addition, if all items belong to the SAME plant, then this plant will aggregate to the header, if they are not identical, a blank value will be passed to the header (please cf. note 47089 for further information).
  • If the customer exits EXIT_SAPLEBND_001 or EXIT_SAPLEBND_004 are used, at least the following statement must be included in the code: E_CEBAN = I_CEBAN. Similarly, for customer exit EXIT_SAPLEBND_002, the statement E_CEKKO = I_CEKKO has to be added.
  • If interval values shall be used for a certain characteristics, the 'multiple value' flag must be set accordingly.
  • Regarding releases, there are differences between transaction ME54N & ME55: ME54N is meant to be used for the interactive release OR change of a requisition within the same one-screen-transaction environment as for ME51N/ME52N/ME53N, while ME55 is meant for release purposes only. If you only want to see requisitions which are subject to a particular release, please use ME55.

Check release strategy relevant for purchasing document

Please first check transaction CL30N

Enter characteristics values

Select find initial in initial class

The result should only return one unique releases strategy. Overlapping release strategies are not allowed.

Debugging

Purchase requisitions:

Program LEBNDU04 Function: ME_REL_STRATEGY_REQUISITION
Determines whether an item-based release or an overall release is used.

IF NOT I_EBAN_NEW-BSART IS INITIAL.
    IF T161-BSART NE I_EBAN_NEW-BSART.
*... Nur einmal pro Banf lesen .......................................*
      SELECT SINGLE * FROM T161 WHERE BSTYP EQ 'B' AND           "128075
                                      BSART EQ I_EBAN_NEW-BSART. "128075
    ENDIF.
    IF T161-GSFRG IS INITIAL.
*... Positionsweise Strategieermittlung ..............................*
      CHECK I_EVENT NE REL_GEN.
      CALL FUNCTION 'ME_REL_STRATEGIE_EBAN'
           EXPORTING
                I_EBAN_NEW  = I_EBAN_NEW
                I_EBAN_OLD  = I_EBAN_OLD
                I_EBKN_NEW  = I_EBKN_NEW
                I_EBKN_OLD  = I_EBKN_OLD
                I_XCLASS    = I_XCLASS
                I_CHANGE_OK = I_CHANGE_OK
           IMPORTING
                E_EBAN      = E_EBAN
                E_RESET     = E_RESET
           EXCEPTIONS
                OTHERS      = 0.
    ELSE.
      IF I_EVENT EQ REL_POS.
        E_EBAN = I_EBAN_NEW.           "??????????
      ELSE.
        IF NOT I_EBAN_NEW IS INITIAL AND T_GEBAN_NEW[] IS INITIAL.
*... I_EBAN_NEW wird bei automatischen Banfen, z.B. aus der Dispo, ...*
*... nicht gefüllt, da nur eine Position übergeben wird ..............*
          T_GEBAN_NEW = I_EBAN_NEW.
          APPEND T_GEBAN_NEW.
          IF NOT I_EBKN_NEW IS INITIAL AND                     "128075
             T_GEBKN_NEW[] IS INITIAL.                         "128075
            T_GEBKN_NEW = I_EBKN_NEW.                          "128075
            APPEND T_GEBKN_NEW.                                "128075
          ENDIF.                                               "128075
        ENDIF.
*... Strategieermittlung für Gesamtwerte der Banf - Gesamtfreigabe ...*
        CALL FUNCTION 'ME_REL_GENERAL_STRATEGY_EBAN'
             EXPORTING
                  I_CHANGE_OK = I_CHANGE_OK
                  I_XCLASS    = I_XCLASS
             IMPORTING
                  E_RESET     = E_RESET
                  E_EBAN      = E_EBAN
             TABLES
                  T_GEBAN_NEW = T_GEBAN_NEW
                  T_GEBAN_OLD = T_GEBAN_OLD
                  T_GEBKN_NEW = T_GEBKN_NEW
                  T_GEBKN_OLD = T_GEBKN_OLD
             EXCEPTIONS
                  OTHERS      = 0.

 

Program: LEBNDU01 - ME_REL_STRATEGIE_EBAN (for item-based releases)

*- Verfahren bestimmen -------------------------------------------------
  CLEAR xclass.
  IF i_xclass NE space.
    SELECT * FROM t16fg WHERE frgot EQ '1'
                          AND frgfg EQ space.
      xclass = 'X'.
      EXIT.
    ENDSELECT.
  ENDIF.
    IF xclass EQ space.
*
*... Prüfen, ob sich an der Banf überhaupt was ge?ndert hat ..........*
    CHECK e_eban NE i_eban_old OR                           "H101541
          i_ebkn_new NE i_ebkn_old.                         "H101541
*
    CLEAR *ceban.
    IF xchange NE space.
      f1 = i_eban_old-menge * i_eban_old-preis
            / i_eban_old-peinh / 1000.
       *ceban-gswrt = f1.
    ENDIF.
    PERFORM strategie_alt USING i_eban_new e_eban-frggr e_eban-frgst.
  ELSE.
    PERFORM ceban_aufbauen USING i_eban_new i_eban_old        <----- Fills CEBAN table
                                 i_ebkn_new i_ebkn_old.
    IF ceban EQ *ceban.
      IF i_eban_new-waers EQ i_eban_old-waers.              "H
        EXIT.
      ENDIF.                                                "H
    ENDIF.
*- Userexit zur Ver?nderung der Kommunikationsstruktur -----------------
    CALL CUSTOMER-FUNCTION '001'
         EXPORTING
              i_ceban = ceban
         IMPORTING
              e_ceban = ceban.                   <----- Put a breakpoint here to
                                                       determine if the userexit is
                                                       active and also to find the
                                                       values in CEBAN table.
    comm = 'CEBAN'.
    PERFORM strategie_neu USING e_eban-frggr e_eban-frgst.

 

Program: LEBNDU06 - ME_REL_GENERAL_STRATEGY_EBAN (for overall releases.i.e., releases on header level)

*... Klasse bestimmen ................................................*
  SELECT * FROM t16fg WHERE frgot EQ '1'
                        AND frgfg NE space.
    EXIT.
  ENDSELECT.
  PERFORM ceban_aufbauen_gesamtfrg TABLES t_geban_new t_geban_old   <--- (Fills Ceban
                                                                         Table)
                                   t_gebkn_new t_gebkn_old.
*- Userexit zur Ver?nderung der Kommunikationsstruktur -----------------
  CALL CUSTOMER-FUNCTION '004'
       EXPORTING
            i_ceban = ceban
       IMPORTING
            e_ceban = ceban
       TABLES
            c_eban = t_geban_new
            c_ebkn = t_gebkn_new.         <----- breakpoint again to check if userexit
                                                is active and contents of CEBAN)
  IF ceban EQ *ceban.
    EXIT.
  ENDIF.
  comm = 'CEBAN'.
  PERFORM strategie_neu USING e_eban-frggr e_eban-frgst.

Program: LEBNDF01 - this program is used for requisitions

CALL FUNCTION 'CLSC_SELECT_OBJECTS'
       EXPORTING
            imp_klah         = xklah
            imp_language     = l_langu
            i_no_auth_check  = 'X'
       TABLES
            exp_objects      = xclobj
            exp_values       = xausp
            imp_features     = merkmale
            imp_seltab       = xcomw
       EXCEPTIONS
            no_objects_found = 01
            one_object_found = 02.
  IF sy-subrc EQ 01.                               <--- Breakpoint to determine if and
                                                       how many release strategies
                                                       are found.
    EXIT.
  ENDIF.

 

Purchase Orders:
Program MM06EF0S_STRATEGIE_CEKKO: (if note 329898 is applied)

if sy-subrc eq 0 and not l_active is initial.
    call function 'EXIT_SAPLEBND_002'
      exporting
         i_cekko        = cekko
         it_bekpo       = pot[]
         it_beket       = ett[]
         it_ekknu       = knt[]
       importing
         e_cekko        = cekko.      <--- Breakpoint here to determine if userexit
                                          is active and values in CEKKO.
  endif.

Program LEBNDU02 - if note 329898 has not been applied.

*- Userexit zur Ver?nderung der Kommunikationsstruktur -----------------
   IF NOT *cekko IS INITIAL.
   CALL CUSTOMER-FUNCTION '002'
        EXPORTING
             i_cekko = *cekko
        IMPORTING
             e_cekko = *cekko.
 ENDIF. CALL CUSTOMER-FUNCTION '002'
         EXPORTING
              i_cekko = cekko
        IMPORTING
              e_cekko = cekko.

Currency conversion
Purchasing documents: Header currency converted to company code currency.
Company currency converted to characteristic currency.

LEBNDF01:
      Rel_strategie_werte
*- Wahrungsabhangiges Merkmal -----------------------------------------*
    IF merkmale-atfor EQ 'CURR'.
      cwaers = xcabn-msehi.            "ob das so bleibt ?
      MOVE <f1> TO refefw.
      IF fwaers NE space AND hwaers NE space.
*- Bestellanforderungen, die nicht der Gesamtfreigabe unterliegen -----*
*       IF fwaers NE hwaers.                                  "120688
*- Fremdw?hrung -> Hausw?hrung ----------------------------------------*
        IF fwaers NE hwaers.
          CALL FUNCTION 'CONVERT_TO_LOCAL_CURRENCY'
               EXPORTING
*                     date             = bbedat
                    date             = sy-datum
                    foreign_amount   = refefw
                    foreign_currency = fwaers
                    local_currency   = hwaers
                    rate             = bwkurs
               IMPORTING
                    local_amount     = refew.
          refefw = refew.
        ENDIF.
        IF hwaers NE cwaers.
*------- Hauswahrung -> Merkmalswahrung ------------------------------*
          CALL FUNCTION 'CONVERT_TO_FOREIGN_CURRENCY'
               EXPORTING
                    date             = sy-datum
                    foreign_currency = cwaers
                    local_amount     = refefw
                    local_currency   = hwaers
               IMPORTING
                    foreign_amount   = refew.
          refefw = refew.
        ENDIF.
      ENDIF.
*- Nachkommastellen der Währung berücksichtigen -----------------------*
      IF tcurx-currkey NE cwaers.
        SELECT SINGLE * FROM tcurx WHERE currkey EQ cwaers.
        IF sy-subrc NE 0.
          tcurx-currkey = cwaers.                           "106107
          tcurx-currdec = 2.
        ENDIF.
      ENDIF.
      MOVE refefw TO xcomw-atflv.
      MOVE refefw TO xcomw-slflv.
      DO tcurx-currdec TIMES.
        xcomw-atflv = xcomw-atflv / 10.
        xcomw-slflv = xcomw-slflv / 10.
      ENDDO.
      APPEND xcomw.
    ELSE.
*- Datum --------------------------------------------------------------*
      IF merkmale-atfor EQ 'DATE'.
        MOVE <f1> TO hdat-date.
        MOVE hdat TO xcomw-atflv.
        MOVE hdat TO xcomw-slflv.
        APPEND xcomw.
*- sonstiges numerisches Merkmal --------------------------------------*
      ELSE.
        MOVE <f1> TO xcomw-atflv.
        xcomw-atflv = xcomw-atflv.
        MOVE <f1> TO xcomw-slflv.
        xcomw-slflv = xcomw-slflv.
        APPEND xcomw.
      ENDIF.
    ENDIF.

Related Content

Related SAP Notes/KBAs  

SAP Note 52225  KOSTL field in Pur.Req. Release procedure with class
SAP Note 116685 Rel.strategy contracts:Determination of target value
SAP Note 47089 Release procedure for purchasing docs - Aggregation
SAP Note 86900   Transport of Release strategies (OMGQ,OMGS)
SAP Note 45951   Transporting class data: system / client
SAP Note 70009   Deletion of Release strategy in Customizing
SAP Note 117391 Rel. proced. PReq: Problems after upgrade to Rel 4.0
SAP Note 326380 Check release procedure class type authorization
SAP Note 329898  Customer exit revised for purchase order release process.
SAP Note 303426  Release strategy wrongly determined for purchasing documents.
SAP Note 186809  OMGQ/CL24: Inconsistency for release strategy class
SAP Note 200204  Release of purchasing documents: Problem with customer exit
SAP Note 209470  Purchasing documents: Release strategy for exchange rate chances
SAP Note 365604  FAQ note: release strategies in purchasing
SAP Note 493900  FAQ note: release strategy