ABAP Regel #5 - Umgang mit globalen Variabeln

Globale Variablen sind öfter Mal eine Fehlerquelle. Die einmalige Deklaration verleitet gerne zu einem sorglosen Programmierstil der ungewollte Schreibzugriffe auf die Variable zulässt.
Ein kleines Beispiel:

SELECT matnr INTO gv_matnr FROM mara WHERE matnr IN s_matnr.
* GV_MATNR dient eigentlich als Parameter für diesen
* Aufruf:
perform stueckliste_ausgeben. " GV_MATNR ändert sich...
perform ausgeben_auf_liste. " ... schlecht nachvollziehbar!
endselect.

form ausgabe_auf_liste.
write 'Stückliste für Material'.
write gv_matnr.
* Jetzt wird die Materialnummer der Komponente ausgegeben!
endform.

form stueckliste_ausgeben.
(...)
SELECT idnrk INTO gv_matnr FROM stpo ...
endform.

Beschreibung: Gegeben ist die globale Variable GV_MATNR, die durch unseren ersten SELECT aus der Tabelle mara gefüllt wird. Die Ausgabe erfolgt in dem Perform ausgeben_auf_liste. Erst dort sehen wir das Resultat. Jedoch wurde in dem Perform stuekliste_ausgeben erneut schreibend zugegriffen - der Wert wurde geändert, wir bekommen nicht das Ergebnis aus der mara.
Es gehört also zu einem guten Programmierstil erst einmal lokale Variablen in der Formroutine verwenden und diese über Parameter mittels USING, CHANGING (bzw. EXPORTING & IMPORTING) usw. an andere Routinen zu übergeben. Das Programm wird lesbar und einfacher nachvollziehbar, weil bei jedem Aufruf einer weiteren Routine über die Parameterliste ersichtlich ist, auf welche Variable diese Routine in welcher Art zugreift.
Faustregel: in einem Unterprogramm müssen alle Definitionen der dort verwendeten Variablen ersichtlich sein (entweder über USING/CHANGING oder DATA). Man spricht dann auch von modularem Programmierstil.
Globale Variablen sind trotzdem unumgänglich. Beispiele sind hierfür sind:
- Dynprofelder
- Tabellen, die mit ALV ausgegeben werden
- Selektionsparameter
- Als Counter für die Anzahl von Instanzen einer Klasse
Der Dank geht an unser Community Mitglied Cosmo für die Anregung und Erarbeitung dieses Themas. Wir freuen uns auf eure Kommentare.
Feedback ist ebenfalls Willkommen: www.abapforum.com/contact

Deine Bewertung: Keines Durchschnitt: 3.9 (8 Stimmen)

Frage die Experten der ABAPforum.com Community

Definiere ein Themengebiet für deine Frage:

Seite durchsuchen

Benutzeranmeldung

Unternehmen - wir stellen vor:

ABAPforum.com Statistik

Startseite Beiträge insgesamt: 68534
Themen insgesamt: 16494
Mitglieder Mitglieder insgesamt: 14148
Unser neuestes Mitglied: rhondaperssenmkbim