转 Defining Custom Rules for use in SAP Workflow

Defining Custom Rules for use in SAP Workflow

By Raghava Vakada, Mouri Tech Solutions, from link.


“I would like to explain about creating custom rules in SAP Workflow. The rules can be created or changed using the standard SAP transaction PFAC. Once the rules are created you can call these rules in any workflow via the rule container”.

In this article I am creating a rule, which will find the users based on Position id. I have created a custom function module ZWF_FIND_USERS which will return me back a position under Asset Analyst (
HRP1001-SOBID). The custom function created should have the same interface as that of the SAP standard function module RH_GET_ACTORS. The following table parameters have to exist in the custom function module.

“ACTOR_TAB STRUCTURE SWHACTOR”

“AC_CONTAINER STRUCTURE SWCONT”  

Following is the function module code:  

FUNCTION ZWF_FIND_USERS.
*"-----------------------------------------------------------
*"*"Local Interface:
*"  TABLES
*"      ACTOR_TAB STRUCTURE  SWHACTOR
*"      AC_CONTAINER STRUCTURE  SWCONT
*"  EXCEPTIONS
*"      NOAGENT_FOUND
*"-----------------------------------------------------------
  INCLUDE <CNTN01>.
  DATA : POSITION_ID LIKE ZBUSAREA-OBJID,
         LT_HOLDERS TYPE STANDARD TABLE OF SWHACTOR,
         LWA_HOLDERS TYPE SWHACTOR,
         LWA_USERS TYPE STANDARD TABLE OF HRP1001,
         WA_USERS TYPE  HRP1001,
         NUM_LINES TYPE I.
*Read values assigned to the rule criteria
  SWC_GET_ELEMENT AC_CONTAINER 'POSITION_ID' POSITION_ID.
  SELECT * FROM HRP1001 INTO table LWA_USERS
  WHERE OBJID = POSITION_ID.
  IF NOT LWA_USERS IS INITIAL.
    REFRESH LT_HOLDERS[].
    loop at LWA_USERS into WA_USERS.
      Condense WA_USERS-SOBID.
      LWA_HOLDERS-OTYPE = 'US'.
      LWA_HOLDERS-OBJID = WA_USERS-SOBID.
      APPEND LWA_HOLDERS TO LT_HOLDERS.
      APPEND LINES OF LT_HOLDERS TO ACTOR_TAB.
    endloop.
  ENDIF.
  DESCRIBE TABLE ACTOR_TAB LINES NUM_LINES.
  IF NUM_LINES IS INITIAL.
    RAISE NOAGENT_FOUND.
  ENDIF.
ENDFUNCTION.

Creating a rule using the PFAC Transaction

Assign the function module
ZWF_FIND_USERS in the "Rule Definition Tab" 

Go to the "Container Tab" and create a container element for the “Position id” which will be passed to the function module 

 Our rule is created now. You can test the rule within the PFAC transaction by clicking the "Simulation" button on the application toolbar. Now this rule is ready to be used in any workflow according to your requirement via the rule container of the workflow. 

 Enter the Position Id, which is created in (PPOCW) 

 It displays Asset Analysts (users) in the “Rule resolution result”

 Now you can use this rule in any of your workflow definitions.

猜你喜欢

转载自sapabap.iteye.com/blog/1859413