How to ‘Close PO’ programmatically using 4GL Script

By | December 29, 2020

In Sage X3, User have option to close Purchase order manually by using “close order” button on Purchase order screen. But one of our client has requested to automate this process on certain event so that user doesn’t have to take of this manually. To achieve this we have come up with some customization on PO screen where we did the 4GL code. Using the standard subprogram from standard script, we able to do it successfully. Lets look at the subprogram code.

New stuff: Restriction on Purchase Invoice Creation



Here is the meaning of each parameter value,

WPOHNUM: Purchase order number
WMSGFLG: It is Integer value which indicates error message
0: No error Message
1: error on screen (Call ERROR)
3: Message in trace
WRET: (Return Code) It Contains an integer value.

By calling above subprogram we can close the Purchase order.

Through above syntax we can close the purchase order by calling TRTPOHCLE subprogram from standard script with proper parameters.


Here we have created one Purchase order as shown in below screenshot which is showing closed order status “No” means PO is not closed yet.

Purchase Order screen- Closed Status
Purchase Order screen- Closed Status “No”

Now, call the Subprogram with appropriate parameter as mentioned in below script screenshot to close PO.


After execution of script, Purchase order got closed as shown in below screenshot.

Purchase Order screen- Closed Status
Purchase Order screen- Closed Status “Yes”

In this way, any programmer who knows the 4GL scripting can do this customization easily.