One of the main advantages of using normal ABL transactions on PAS for OpenEdge is their small scope, requiring no communication with the client for the transaction to complete. In general, to implement a normal ABL transaction in a server procedure, you follow the same programming practices as when writing a small-scoped transaction for an ABL client.
In particular, avoid including code that can block the server session or otherwise delay execution, such as:
Writing to or reading from external files
Invoking any other operating system calls (for example, the OS-COMMAND statement)
For more information on implementing transactions in an ABL procedure, see OpenEdge Getting Started: ABL Essentials.