Function Module for Rule Resolution

The following excerpts from a fictitious function module for an agent determination rule, which determines the responsible agent on the basis of a release code and object to be released, can be used as an example.

The ReleaseCode and ReleaseObject elements are defined in the rule container as rule parameters.

FUNCTION GET_REL_RESPONSIBLE.

*"----------------------------------------------------------
*"*"Lokale Schnittstelle:
*" TABLES
*" ACTOR_TAB STRUCTURE SWHACTOR
*" AC_CONTAINER STRUCTURE SWCONT
*" EXCEPTIONS
*" NOBODY_FOUND
*"----------------------------------------------------------

INCLUDE <CNTN01>.

* define variables stored in container
DATA: RELEASE_OBJECT TYPE SWC_OBJECT.
DATA: RELEASE_CODE LIKE RM06B-FRGAB.

* local data
DATA: BEGIN OF RELOBJECTKEY,
NUMBER LIKE EBAN-BANFN,
POSITION LIKE EBAN-BNFPO,
END OF RELOBJECTKEY.

REFRESH ACTOR_TAB.
CLEAR ACTOR_TAB.

* convert persistent container to runtime container
SWC_CONTAINER_TO_RUNTIME AC_CONTAINER.

* read elements out of container
SWC_GET_ELEMENT AC_CONTAINER 'ReleaseCode' RELEASE_CODE.
SWC_GET_ELEMENT AC_CONTAINER 'ReleaseObject' RELEASE_OBJECT.

* separate object key
SWC_GET_OBJECT_KEY RELEASE_OBJECT RELOBJECTKEY.

* loop and select table <TABLE> with
* RELEASE_CODE
* RELOBJECTKEY-NUMBER and RELOBJECTKEY-POSITION

* end of selection

* exception and parameter handling
  IF SY-SUBRC NE 0.
    RAISE NOBODY_FOUND.
  ELSE.
    ACTOR_TAB-OTYPE = <TABLE>-ACTOR_TYPE.
    ACTOR_TAB-OBJID = <TABLE>-ACTOR_OBJID.
    APPEND ACTOR_TAB.
  ENDIF.

ENDFUNCTION.