One of the main advantages of using normal ABL transactions on the AppServer is their small scope, requiring no communication with the client for the AppServer transaction to complete. In general, to implement a normal ABL transaction in an AppServer 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 AppServer agent 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.