Anfang des Inhaltsbereichs Ein neues Programm dynamisch anlegen Dokument im Navigationsbaum lokalisieren

Um ein neues dynamisches Programm zur Laufzeit eines ABAP-Programms anzulegen, müssen Sie eine interne Tabelle verwenden. Legen Sie zu diesem Zweck die interne Tabelle mit einer einzigen Spalte vom Typ Character und einer Zeilenbreite von 72 Zeichen an. Sie können ein beliebiges unter Interne Tabellen füllen beschriebene Verfahren verwenden, um das Coding Ihres neuen Programms in die interne Tabelle zu schreiben. Sie können vor allem interne Felder verwenden, deren Inhalte vom Ablauf des Programms abhängen, das Sie zum Anlegen des neuen Programms verwenden. Das folgende Beispiel zeigt, wie Sie im allgemeinen vorgehen können:

Beispiel

REPORT demo_special_tech_dyn_insert.
DATA: code TYPE TABLE OF rssource-line.
* type of an editor line: rssource-line

APPEND  'REPORT ZDYN1.'
         TO code.

APPEND  'WRITE / ''Hello, I am dynamically created!''.'
         TO code.

Zwei Zeilen eines einfachen Programms werden in die interne Tabelle CODE geschrieben.

Nun müssen Sie das neue Modul, in diesem Fall ein ausführbares Programm (Report), in die Programmbibliothek übertragen. Dazu können Sie folgende Anweisung verwenden:

Syntax

INSERT REPORT <prog> FROM <itab>.

Existiert noch kein Programm mit diesem Namen, wird es mit folgenden Attributen neu angelegt:

Das neue Programm <prog> wird persistent auf der Datenbank gespeichert aber keinem Paket zugeordnet. Es unterliegt deshalb nicht dem Transportwesen.

Achtung

Existiert bereits ein Programm mit dem Namen <prog>, wird sein Quelltext ohne vorherige Warnung durch einen neuen aus der internen Tabelle <itab> ersetzt, während alle andren Eigenschaften erhalten bleiben. Gehen Sie deshalb bei der Benennung von dynamisch generierten Programmen äußerst vorsichtig vor.

Sie können den Namen des Programms <prog> explizit in einfache Hochkommatas stellen oder den Namen eines Character-Feldes angeben, das den Namen enthält. Der Programmname muß nicht notwendigerweise dem im Coding entsprechen, dies ist aber sinnvoll. <itab> ist die interne Tabelle, die den Quelltext enthält. Für das Beispiel oben könnten Sie also schreiben:

Beispiel

INSERT REPORT 'ZDYN1' FROM code.

oder

DATA rep(8) TYPE c.

rep = 'ZDYN1'

INSERT REPORT rep FROM code.

Vom Einstiegsbild des ABAP-Editors können Sie alle Komponenten des neuen Programms aufrufen und ändern.

Beispiel

Sie können den ABAP Editor für obiges Beispiel aufrufen:

Diese Grafik wird im zugehörigen Text erklärt

 

Hinweis

Eine Alternative zu INSERT REPORT bietet die Anweisung GENERATE SUBROUTINE POOL, die temporäre externe Unterprogramme im Hautspeicher anlegt (siehe Temporäre Unterprogramme anlegen und starten).

Ende des Inhaltsbereichs