Unterprogramm + sy-subrc setzen

Getting started ... Alles für einen gelungenen Start.
2 Beiträge • Seite 1 von 1
2 Beiträge Seite 1 von 1

Unterprogramm + sy-subrc setzen

Beitrag von fabis (ForumUser / 2 / 0 / 0 ) »
Hi,

ich bin relativ neu bei ABAP und habe vorher vorwiegend mit C, C++, Java und Tcl gearbeitet. Nun wollte ich wissen, wie und ob ich in einem Unterprogramm den sy-subrc setzen kann. Momentan mache ich es immer so, das ich im changing -Teil der Funktion eine Variable übergebe und sie je nach ergebnis auf 1 oder -1 setze.
Das ganze sieht ungefähr so aus:

Code: Alles auswählen.

form test_it
using
wert_in type i
changing
ret type i.

if wert_in > 0.
ret = 1.
else.
ret = -1.
endif.

endform.
Ich würde es aber gerne so machen, dass wenn wert_in > 0 ist der sy-subrc auf 0 gesetzt wird und anderenfalls auf 1 oder so. Der Funktionsaufruf sähe dann folgendermaßen aus:

Code: Alles auswählen.

data: val type i value 4711.

* Aufruf der Funktion
perform test_it
using val.

if sy-subrc = 0.
write: 'Größer Null'.
else.
write: 'Kleiner Null'.
endif.
Ist es möglich, dass so zu machen?

Vielen Dank für eure Hilfe.

Grüße,
Fabi

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Re: Unterprogramm + sy-subrc setzen

Beitrag von a-dead-trousers (Top Expert / 4450 / 227 / 1196 ) »
hi!

Performs verändern den sy-subrc nicht, also kannst du es schon so verwenden, aber es ist nicht empfehlenswert sich auf die SY Variablen zu verlassen.
Deine erste Variante ist definitiv besser. Überleg, wenn irgendwer mal später dein Programm ändert und nicht weiß, dass du dich auf die SY Varaible verlässt, dann kanns zu Problemen kommen. Bestes Beispiel ist die berühmt-berüchtigte SY-TABIX:

Code: Alles auswählen.

LOOP AT lt_table1 INTO la_line1.
  PERFORM verify USING la_line1
  IF sy-subrc EQ 0.
    DELETE lt_table1 INDEX sy-tabix.
  ENDIF.
ENDLOOP.

FORM verify USING ua_line
  READ TABLE lt_table2 TRANSPORTING NO FIELDS
    WITH KEY field = la_line1-field
ENDFORM.
Rat mal welcher Eintrag von LT_TABLE1 gelöscht wird :evil:

lg ADT
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Seite 1 von 1

Vergleichbare Themen

2
Antw.
4032
Views
sy-subrc oder syst-subrc?
von genua » 31.10.2007 11:55 • Verfasst in ABAP® für Anfänger
2
Antw.
4029
Views
Übersicht zu sy-subrc
von KleinerEisbaer » 22.07.2008 16:48 • Verfasst in ABAP® für Anfänger
8
Antw.
7299
Views
MB_CREATE_GOODS_MOVEMENT mit SUBRC 5
von Adrian » 20.04.2015 14:34 • Verfasst in ABAP® für Anfänger
10
Antw.
5614
Views
Loop Exit Sy-Subrc
von SaskuAc » 29.01.2018 15:23 • Verfasst in ABAP® für Anfänger
17
Antw.
8112
Views
Exception statt sy-subrc
von msfox » 29.10.2024 11:55 • Verfasst in ABAP Objects®

Über diesen Beitrag


Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Aktuelle Forenbeiträge

Web Feature Services (WFS) im SAP
vor 6 Stunden von msfox 1 / 43
FOR mit CORRESPONDING
vor 8 Stunden von rob_abc 4 / 162

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.

Aktuelle Forenbeiträge

Web Feature Services (WFS) im SAP
vor 6 Stunden von msfox 1 / 43
FOR mit CORRESPONDING
vor 8 Stunden von rob_abc 4 / 162

Unbeantwortete Forenbeiträge

Web Feature Services (WFS) im SAP
vor 6 Stunden von msfox 1 / 43
Erweiterung in ME51N/ME52N:
vor 3 Wochen von ABAPlerv 1 / 1990
Erweiterung in ME51N/ME52N:
vor 3 Wochen von ABAPlerv 1 / 1830