Skip to Content

Intro:

There’s always an issue that SAP users by mistake post production consumption to cost centers through MIGO or manually although production consumption accounts should only be posted to production orders.

The best way to prevent this mistake is to use Validation Rules (Trx GGB0) and specify the GL accounts that are not allowed on a cost center so the user gets an error whenever SAP is posting these GLs to a Cost Center.

Since validation rules are part of system config, it’s a lot of headache to change the GLs in the rule later in case a new GL is created or an exception is needed.

To be able to edit the rule’s GLs without doing any configuration, we can maintain an Account Set in the validation rule instead of specific GL accounts, in this case the Set can be edited freely in Production environment (by authorized users).

This will involve creating a user exit and editing a copy of a standard SAP program

Steps:

1) Trx GS01 > Create the Account set

2) Trx SE38 > Copy program RGGBR000 to ZRGGBR000 and add the below code at the end of the standard code


exits-name = ‘ZCC’.

exits-param = c_exit_param_none.
exits-title = text-103.
APPEND exits.

FORM ZCC USING b_result.
RANGESGLS FOR BSEGHKONT.
Select VALSIGN AS SIGN VALOPTION AS OPTION
VALFROM AS LOW VALTO AS HIGH
FROM SETLEAF INTO CORRESPONDING FIELDS OF TABLE GLS
WHERE SETNAME GL_CC_BLOCK.
if SYSUBRC 0.
IF BSEGHKONT IN GLS.
b_result b_true.
else.
b_result b_false.
ENDIF.
endif.
ENDFORM.

————————————————

GL_CC_BLOCK is the name of the Account Set
3) Trx  GCX2  >> Assign program ZRGGBR000 to Validation Rule Exits

4)Trx  GGB0  >> Create Validation

5) Trx OB28  >> Activate Validation on the company code level

Now test the validation using any transaction, try FB50

Thank you for reading.

Best regards,
Abdullah Galal
SAP FICO

To report this post you need to login first.

5 Comments

You must be Logged on to comment or reply to a post.

  1. Paulo Vitoriano

    I just do not get why we need an exit named ZCC, it is a standard boolean statement to check if account is making part of the set.  Operator IN.  This can be done without any ABAP. 

    (1) 

Leave a Reply