The AppObject and any SubAppObjects defined for the application each encapsulate the same type of functionality, consisting of external procedures and ProcObjects. In ABL, an external procedure is any single file containing separately executable ABL code. A ProcObject directly maps to a persistent, single-run, or singleton procedure. So, all the functionality encapsulated by the AppObject and SubAppObjects consists entirely of one or more external procedures.
The minimum requirement is one AppObject that encapsulates all external procedures for the application. SubAppObjects allow you to compartmentalize these external procedures into collections you find useful for your particular application.