Included Reports
Insertables are used to add the same functionality to multiple forms or reports in an easy and efficient way. They are physically inserted into the objects when the application is compiled.
Insertable forms/ reports are pieces of the layout that are displayed in forms or reports. Within such an insertable, a layout is defined that can be called from any form or report to which that insertable is added. Within the forms or reports, the insertable appears for instance as the header or footer for that object. For the end user, the form and inserted form appear just as one form.
Insertable global routines are used to add functionality to forms that is not related to the layout. Because they are
physically a part of the object, they can also use local variables.
Creating and adjusting an insertable
An insertable is created and adjusted pretty much the same way as other objects. However, within an insertable form there are no routines. If an insertable form or report is updated, all the forms or reports that inherit functionality from the insertable will also be updated automatically. In contradiction with normal forms and global routines, these objects contain no routines if they are defined as insertables. It is important to choose names that are not used inside the layout of the forms or reports to which the insertable will be included, otherwise you would get validation errors.
Choose one of the following links for more information:
Inserting a layout to your form or report
Insertable forms or reports can be added to a form or report as follows:
- Open the form or report to which you want to add an insertable.
- In the left pane of your screen, right click on "Included forms/reports" and choose "insert".
- In the listbox that appears, specify the insertable that you want to add to the form or report.
The inserted object will be added to the folder "included forms" or "included reports":

For an insertable report a routine call to the insertable report will be added at the start
of the Main routine (e.g. ins_report () ). When generating the report this call to the
insertable report will be handled in exactly the same way as an Insertable Global
Routine. I.e. the inline code of the insertable report will first be added to the report
at the place of the routine call and then generation will take place. When the inline code needs to be executed at another place then the start of the Main routine, you have to move the routine call to that place. And exactly as with Instertable Global Routines multiple calls to the insertable report are allowed. |
For an insertable form a routine call to the insertable form will be added at the start of
the Display_Main routine (e.g. ins_form () ). When generating the report this call to
the insertable form will be handled in exactly the same way as an Insertable Global
Routine. I.e. the inline code of the insertable form will first be added to the form at
the place of the routine call and then generation will take place. When the inline code needs to be executed at another place then the start of the Display_Main routine (e.g. somewhere in Process_Main), you have to move the routine call to that place. And exactly as with Instertable Global Routines multiple calls to the insertable form are allowed in both Display_main and Process_Main. |
You can remove an insertable from the folder "Included forms" or "Included reports" by right-clicking on the
insertable and choosing "Delete".
When removing you also have to remove the insertable from the code,
because otherwise upon syntaxchecking (F7) it will place the insertable back.
Inserting a routine in your form or report
If you specify an insertable global routine in a routine of a form or report, the specified routine is called from that object and performed when the specification is encountered during the program execution. An inserted global routine is called the same way as other routines that were created in the form or report itself.
e.g. in a routine the global insertable "GLI-NXT-PRE" is specified as follows:
When calling an insertable global routine from a single routine (in a form or report) more than once, the calling
routine may not contain any label that is defined inside the insertable. This is not permitted because the
insertable will be physically part of the called object and because of that the labels would occur in that
object more than once. So, an "external call" in such a case would lead to indistinct behavior.
Example:
Below, the code for an insertable global routine called "TEST":
goto (einde)
endif
if gn-6 = 12
gn-6 := 4
endif
:einde
Below, the code for an exemplary form ("DEMO") that calls the insertable:
begin_routine // GOTO (EINDE) is not allowed as TEST is used twice
gn-6 := 12
test ()
gn-6 := 14
test ()
end_routine
routine process_main
begin_routine
goto (einde) // is allowed as TEST is used only once
gn-6 := 12
test ()
end_routine