• Startseite
  • Produkte
  • Jetzt
  • Buchnotizen
  • Lebenslauf
  • Unternehmensberatung
  • Spiele
  • Click to open the search input field Click to open the search input field Suche
  • Menü Menü
Denis Reis
  • Link zu X
  • Link zu Facebook
  • Link zu Xing
  • Link zu LinkedIn
  • Link zu Rss dieser Seite
  • Link zu Mail
Know-How SAP

IF und CASE Verzweigungen in ABAP

Dieser Beitrag ist Teil des Kurses ABAP Grundlagen.

Eine Verzweigung kann ungangsprachlich als eine entweder-oder Bedingung formuliert werden. Dabei sollen bestimmte Aktionen bzw. Anweisungen nur dann ausgeführt werden, wenn die Bedingung erfüllt ist. Im ABAP werden dazu Felder und Feldinhalte verglichen oder mit logischen Ausdrücken verknüpft. In diesem Beitrag werden IF und CASE Anweisungen behandelt.

Durch einen Erfahrungsaustausch lässt sich viel voneinander lernen. Tauschen Sie sich deshalb jetzt mit Experten auf Ihrem Gebiet aus und erweitern Sie Ihr Netzwerk! Treten Sie jetzt der exklusiven Gruppe von SAP Experten bei.


IF
Ein Beispiel für eine solche Verzweigung stellt die IF-Struktur dar. Diese Kontrollstruktur beginnt in ABAP mit der Anweisung IF, danach folgt eine Bedingung. Die Struktur endet mit der Anweisung ENDIF. Dazwischen stehen Befehle, die ausgeführt werden, falls die Bedingung erfüllt ist.
Angenommen, Sie wollen in einer Tabelle, die Smartphones enthält, nur die roten Smartphones zählen. Dazu verarbeiten Sie alle Sätze der Tabelle ganz normal, wenn jedoch ein Satz eine besondere Bedingung erfüllt, wird der Counter um 1 erhöht.

SELECT * FROM  zsmartphones into ls_zsmartphones.
IF ls_zsmartphones-tfarbe = 'ROT'.
  lv_counter_rot = lv_counter_rot + 1.
ENDIF.
ENDSELECT.

Wenn das Feld für die Farbe den Inhalt „ROT“ hat (achten Sie bitte auf Groß- und Kleinschreibung!), ist die Bedignung erfüllt und der Anweisungsblock wird ausgeführt.

Sie können Ihre Verzweigung auch nach dem entweder-oder Prinzip aufbauen. Verwenden Sie dazu den Befehl ELSE. Falls die Bedingung der IF-Anweisung erfüllt ist, wird der erste Anweisungsblock ausgeführt, ansonsten der zweite Block nach der ELSE-Anweisung. So erweitern wir unser Coding, um auch die restlichen Smartphones zu zählen.

SELECT * FROM  zsmartphones into ls_zsmartphones.
  IF ls_zsmartphones-tfarbe = 'ROT'.
    lv_counter_rot = lv_counter_rot + 1.
  ELSE.
    lv_counter_sonst = lv_counter_sonst + 1.
  ENDIF.
ENDSELECT.

Sie können mit ELSEIF auch mehrere Bedingungen prüfen. Wird die erste Bedingung nicht erfüllt, wird die zweite Bedingung geprüft. Falls auch diese nicht erfüllt ist, wird eine dritte Bedingung geprüft. Das Spiel lässt sich unendlich fortsetzen und kann für die restlichen Fälle auch noch mit ELSE abgeschlossen werden.

SELECT * FROM  zsmartphones INTO ls_zsmartphones.
  IF ls_zsmartphones-tfarbe = 'ROT'.
    lv_counter_rot = lv_counter_rot + 1.
  ELSEIF ls_zsmartphones-tfarbe = 'BLAU'.
    lv_counter_blau = lv_counter_blau + 1.
  ELSEIF ls_zsmartphones-tfarbe = 'GELB'.
    lv_counter_gelb = lv_counter_gelb + 1.
  ELSE.
    lv_counter_sonst = lv_counter_sonst + 1.
  ENDIF.
ENDSELECT.

Die erste Bedingung wird erfüllt, wenn im Feld „Farbe“ der Wert „ROT“ enthalten ist. Dann wird der Counter für rote Smartphones um eins erhöht. Anschließend prüft das System keine weiteren Bedingungen mehr. Das System springt sofort zu ENDIF und setzt das Programm fort. In unserem Fall geht es wieder in die Schleife, bis alle Datensätze verarbeitet sind.
Ist die erste Bedingung nicht erfüllt, prüft das System ob die zweite Bedingung erfüllt ist. Also, ob die Farbe „BLAU“ lautet. Ist das der Fall, wird der zweite Anweisungsblock ausgeführt und die blauen Smartphones gezählt. Ist die zweite Bedingung ebenfalls nicht erfüllt, wird die dritte Bedingung „GELB“ geprüft. Trifft diese zu, werden die gelben Smartphones hochgezählt.
Falls auch die dritte Bedingung nicht erfüllt ist, trifft der ELSE-Fall ein. Dann werden die sonstigen Smartphones gezählt. Danach springt das System zu ENDIF und geht anschließend zum nächsten Kommando nach ENDIF.

Anbei der komplette Code:

REPORT  z_smartphones.

DATA: ls_zsmartphones TYPE zsmartphones,
      lv_counter_rot TYPE i,
      lv_counter_blau TYPE i,
      lv_counter_gelb TYPE i,
      lv_counter_sonst TYPE i.

SELECT * FROM  zsmartphones INTO ls_zsmartphones.
  IF ls_zsmartphones-tfarbe = 'ROT'.
    lv_counter_rot = lv_counter_rot + 1.
  ELSEIF ls_zsmartphones-tfarbe = 'BLAU'.
    lv_counter_blau = lv_counter_blau + 1.
  ELSEIF ls_zsmartphones-tfarbe = 'GELB'.
    lv_counter_gelb = lv_counter_gelb + 1.
  ELSE.
    lv_counter_sonst = lv_counter_sonst + 1.
  ENDIF.
ENDSELECT.

WRITE: / lv_counter_rot, 'rote Smartphones',
       / lv_counter_blau, 'blaue Smartphones',
       / lv_counter_gelb, 'gelbe Smartphones',
       /  lv_counter_sonst, 'sonstige Smartphones'.

Das Ergebnis sieht wie folgt aus:

Ausgabe des Programms

Ergebnis

Sie können IF-Strukturen schachteln oder verknüpfen.
Geschachtelte Strukturen würden wie folgt aussehen:

IF bedingung1.
  IF bedingung2.
    anweisung.
  ENDIF.
ENDIF.

Wenn Bedingung 1 zturifft, prüfe Bedingung 2. Wenn Bedingung 2 zutrifft, führe die Anweisung aus.
Sie können die Ausdrücke aber auch verknüpfen:

IF bedingung1 AND bedingung2.
  anweisung.
ENDIF.

Dabei sind die beiden Beispiele inhaltlich identisch. Die Anweisung wird nur ausgeführt, wenn beide Bedingungen erfüllt sind.

CASE
Im Gegensatz zu der IF-Struktur, die komplexe logische Bedingungen prüfen kann, prüft CASE nur den Inhalt eines einzigen Feldes. Wenn die Bedingung und Feldinhalt übereinstimmen, wird der zugehörige Anweisungsblock ausgeführt, sonst nicht. Umgangssprachlich ausgedrückt: Während bei der IF-Struktur es den Fall geben kann, dass es regnet und die Sonne scheint, kann in CASE entweder die Sonne scheinen oder es regnet. Daher ist der CASE Befehl ein wenig schneller als IF.
Genau wie in einer IF-Struktur wird in CASE immer nur ein Anweisungsblock verarbeitet. Nach diesem verzweigt das System zu ENDCASE, ohne weitere Feldinhalte zu prüfen, und setzt die Verarbeitung mit dem ersten Befehl nach der CASE-Struktur fort.
Die CASE-Struktur kommt zur Anwendung, wenn es gelingt, eine Bedingung eindeutig mit einem Feldinhalt abzustimmen.
In unserem Beispiel könnten wir gut mit CASE arbeiten. Wir prüfen den Inhalt des Tabellenfeldes tfarbe, je nach Feldinhalt wird in den entsprechenden Anweisungsblock verzweigt. Dabei übernimmt die Anweisung WHEN OTHERS die gleiche Funktion wie ELSE bei der IF-Struktur.

SELECT * FROM  zsmartphones INTO ls_zsmartphones.
  CASE ls_zsmartphones-tfarbe.
    WHEN 'ROT'.
      lv_counter_rot = lv_counter_rot + 1.
    WHEN 'BLAU'.
      lv_counter_blau = lv_counter_blau + 1.
    WHEN 'GELB'.
      lv_counter_gelb = lv_counter_gelb + 1.
    WHEN OTHERS.
      lv_counter_sonst = lv_counter_sonst + 1.
  ENDCASE.
ENDSELECT.

In der Regel wird CASE bei der Auswertung von Returncodes angewendet. So hat, je nach Erfolg oder Misserfolg eines Befehls, SY-SUBRC einen eindeutigen Inhalt. Diesen können wir über die CASE-Struktur abfragen. So kann ein Programm trotz eines Fehlers zu Ende ausgeführt werden bzw. alternative Prozesse eingeleitet werden.
Wenn Sie zum Beispiel mithilfe von SELECT in einer Tabelle suchen, liefert der Befehl den Reutrncode 0, falls mindestens ein Satz in der Tabelle gelesen werden konnte. Falls kein passender Satz gelesen werden konnte, wird der Returncode 4 ausgegeben.

SELECT * FROM  zsmartphones INTO ls_zsmartphones
  WHERE tfarbe = 'ROT'.
  lv_counter_rot = lv_counter_rot + 1.
ENDSELECT.

CASE sy-subrc.
  WHEN 0.
    WRITE: / lv_counter_rot, 'rote Smartphones gefunden'.
  WHEN 4.
    WRITE: / 'Keine rote Smartphones gefunden'.
ENDCASE.

Ist der Returncode 0, ist die Welt in Ordnung.

Ausgabe SY-SUBRC 0

Ergebnis SY-SUBRC 0

Falls der Returncode 4 geliefert wird (z.B. wenn wir nur weiße oder schwarze Smartphones liefern), wird die Routine für Fehlerbehandlung durchlaufen.

Ergebnis sy-subrc 4

Ausgabe SY-SUBRC 4

CASE-Strukturen können genauso wie IF-Strukturen geschachtelt werden. Außerdem ist auch eine Kombination von IF und CASE möglich.

Diese ABAP Tricks machen Ihr Leben leichter!

  • In meinem Newsletter gebe ich eine Menge Tipps und Kniffe rund um ABAP.
  • Die Mini-Tutorials unterstützen Sie dabei, Software in ABAP effizienter zu entwickeln.
  • Praktische Anleitungen ermöglichen Ihnen schnelle Erfolge bei der Optimierung Ihrer Arbeit.
  • Bei der Anmeldung zu meinem Newsletter erhalten Sie das Buch „ABAP Tipps und Tricks“ als Willkommensgeschenk.
ABAP Tipps und Tricks

Jetzt anfordern!

* Pflichtfeld
 
Kein SPAM. Ich hasse Spam genau so wie du.

Quellen:
Karl-Heinz Kühnhauser, Thorsten Franz (2011): Discover ABAP, 3. Auflage, Bonn
SAP Hilfe – ABAP-Systemfelder

Falls Ihnen dieser Beitrag weitergeholfen hat, wäre es eine sehr nette Anerkennung meiner Arbeit wenn Sie z.B. Ihre Bücher über Amazon bestellen würden. Wenn Sie ein Produkt kaufen, erhalte ich dafür eine Provision. Für Sie ändert sich am Preis des Produktes gar nichts. Ich möchte mich an dieser Stelle jetzt schon für Ihre Unterstützung bedanken.

22. Februar 2013/0 Kommentare/von Denis
Eintrag teilen
  • Teilen auf Facebook
  • Teilen auf X
  • Teilen auf WhatsApp
  • Teilen auf Pinterest
  • Teilen auf LinkedIn
  • Teilen auf Tumblr
  • Teilen auf Vk
  • Teilen auf Reddit
  • Per E-Mail teilen
https://www.denisreis.com/wp-content/uploads/2016/09/logo.png 0 0 Denis https://www.denisreis.com/wp-content/uploads/2016/09/logo.png Denis2013-02-22 21:49:562018-10-16 02:53:13IF und CASE Verzweigungen in ABAP
Das könnte Dich auch interessieren
Wie du eine CSV Datei mit ABAP erstellst Wie du eine CSV Datei mit ABAP erstellst
ABAP Funktionsbausteine bauen ABAP Funktionsbausteine
Wie Sie eigene Farben für ABAP Elemente bestimmen Wie Sie eigene Farben für ABAP Elemente bestimmen
Kontenmodell zu Kennzahlenmodell zu Kontenmodell umwandeln Kontenmodell zu Kennzahlenmodell zu Kontenmodell umwandeln
Tabellenviews und Joins in ABAP SELECT, DO, WHILE Schleifen und Abbruchanweisungen in ABAP
Tabellenviews und Joins in ABAP Tabellenviews und Joins in ABAP
0 Kommentare

Hinterlasse einen Kommentar

An der Diskussion beteiligen?
Hinterlasse uns deinen Kommentar!

Schreibe einen Kommentar Antwort abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre, wie deine Kommentardaten verarbeitet werden.

Stay connected

  • RSS abonnieren
  • XING
  • LinkedIn
  • Twitter
  • Facebook
  • Newsletter

Ich lese gerade

12 Rules for Life: An Antidote to Chaos

SAP BI Buchempfehlung

SAP Analysis for Microsoft Office: Reporting leicht gemacht: BI-Werkzeug für MS Excel

Kategorien

  • Allgemein
  • BPC
  • Buchnotizen
  • CSS
  • Excel
  • How-To Tutorials SAP BI BA
  • Know-How SAP
  • Projektmanagement und Führung
  • VBA

Hörfutter

Hol dir ein kostenloses Hörbuch!

Anzeige

ABAP Buchempfehlung

Lernen Sie ABAP schnell und effizient! Einstieg in ABAP: Die Neuauflage von Discover ABAP
Beliebt
  • Bestimmte Zeilen in eine andere Tabelle kopieren
    Excel VBA – Bestimmte Zeilen in eine andere Tabelle...9. März 2014 - 22:14
  • Excel VBA - Wie Sie den Blattschutz ohne Kennwort aufheben
    Excel VBA – Wie Sie den Blattschutz ohne Kennwort...24. Oktober 2017 - 12:58
  • Excel VBA - Zeichen ersetzen mit Replace
    Excel VBA – Zeichen ersetzen mit Replace12. Oktober 2014 - 20:15
  • Wie sie das aktuelle Datum in einer Liste finden
    Excel VBA – Wie Sie das aktuelle Datum in einer Liste...30. Januar 2018 - 12:57
Kürzlich
  • SAP BDC Connect für Databricks
    SAP BDC Connect für Databricks leicht gemacht10. September 2026 - 08:28
  • Datasphere CLI einrichten
    Wie Sie Datasphere CLI einrichten20. Juni 2026 - 10:57
  • Linux Spickzettel
    Linux Spickzettel24. April 2026 - 20:38
  • SAP Datasphere als Remote Quelle für SAP HANA nutzen
    SAP Datasphere als Remote Quelle für SAP HANA nutzen23. März 2026 - 09:27
Kommentare
  • PaulSuper Artikel, leider gibt es diesen FuBa bei BW/4HANA 2023...3. März 2026 - 13:34 von Paul
  • MichaelHallo, ich habe diesen Beitrag gefunden, gerade der Tipp...1. August 2023 - 14:52 von Michael
  • CarportDanke für die tolle Arbeit die hier geleistet wurde, hier...14. Februar 2023 - 12:15 von Carport
  • Tobias IsenbergHi, kann nur davon abraten/warnen, das Sprachpaket zu...19. Oktober 2022 - 14:31 von Tobias Isenberg

Werbung

Schlagwörter

ABAP AI Analysis Aufwandsschätzung BAdI BDC berechtigungen BPC BTP Controlling CSS Datasphere Delegation Design Studio EPM EvDRE Excel HTML JavaScript Meeting PM Prozessketten Python SAC SAP Script Logic Scrum SQL SQLScript Tabellen Transformationsroutinen Tutorial VBA Workshop

Archiv

  • September 2026
  • Juni 2026
  • April 2026
  • März 2026
  • Februar 2026
  • Januar 2026
  • Dezember 2025
  • November 2025
  • Oktober 2025
  • September 2025
  • August 2025
  • Juli 2025
  • Juni 2025
  • Mai 2025
  • April 2025
  • März 2025
  • Februar 2025
  • Januar 2025
  • Dezember 2024
  • November 2024
  • Oktober 2024
  • September 2024
  • August 2024
  • Juli 2024
  • Juni 2024
  • Mai 2024
  • April 2024
  • März 2024
  • Februar 2024
  • Januar 2024
  • Dezember 2023
  • November 2023
  • Oktober 2023
  • September 2023
  • August 2023
  • Juli 2023
  • Juni 2023
  • Mai 2023
  • April 2023
  • März 2023
  • Februar 2023
  • Januar 2023
  • Dezember 2022
  • November 2022
  • Oktober 2022
  • September 2022
  • August 2022
  • Juli 2022
  • Juni 2022
  • Mai 2022
  • April 2022
  • März 2022
  • Februar 2022
  • Januar 2022
  • Dezember 2021
  • November 2021
  • Oktober 2021
  • September 2021
  • August 2021
  • Juli 2021
  • Juni 2021
  • Mai 2021
  • April 2021
  • März 2021
  • Februar 2021
  • Januar 2021
  • Dezember 2020
  • November 2020
  • Oktober 2020
  • September 2020
  • August 2020
  • Juli 2020
  • Juni 2020
  • Mai 2020
  • April 2020
  • März 2020
  • Februar 2020
  • Januar 2020
  • Dezember 2019
  • November 2019
  • Oktober 2019
  • September 2019
  • August 2019
  • Juli 2019
  • Juni 2019
  • Mai 2019
  • April 2019
  • März 2019
  • Februar 2019
  • Januar 2019
  • Dezember 2018
  • November 2018
  • Oktober 2018
  • Juli 2018
  • Juni 2018
  • Mai 2018
  • April 2018
  • März 2018
  • Februar 2018
  • Januar 2018
  • Dezember 2017
  • November 2017
  • Oktober 2017
  • September 2017
  • August 2017
  • Juli 2017
  • Juni 2017
  • Mai 2017
  • April 2017
  • März 2017
  • Februar 2017
  • Januar 2017
  • Dezember 2016
  • November 2016
  • Oktober 2016
  • September 2016
  • August 2016
  • Juli 2016
  • Juni 2016
  • Mai 2016
  • April 2016
  • März 2016
  • Februar 2016
  • Januar 2016
  • Dezember 2015
  • November 2015
  • Oktober 2015
  • September 2015
  • August 2015
  • Juli 2015
  • Juni 2015
  • Mai 2015
  • April 2015
  • März 2015
  • Februar 2015
  • Januar 2015
  • Dezember 2014
  • November 2014
  • Oktober 2014
  • September 2014
  • August 2014
  • Juli 2014
  • Juni 2014
  • Mai 2014
  • April 2014
  • März 2014
  • Februar 2014
  • Januar 2014
  • Dezember 2013
  • November 2013
  • Oktober 2013
  • September 2013
  • August 2013
  • Juli 2013
  • Juni 2013
  • Mai 2013
  • April 2013
  • März 2013
  • Februar 2013
  • Januar 2013
  • Dezember 2012
  • November 2012
  • Oktober 2012
  • September 2012
  • August 2012
  • Juli 2012
  • Juni 2012
  • Mai 2012
  • April 2012
  • März 2012
  • Februar 2012
  • Januar 2012
© Copyright - Denis Reis - Lumen accipe et imperti - Impressum - Datenschutz
  • Link zu X
  • Link zu Facebook
  • Link zu Xing
  • Link zu LinkedIn
  • Link zu Rss dieser Seite
  • Link zu Mail
Link to: Aufbau der Präsentation Link to: Aufbau der Präsentation Aufbau der PräsentationAufbau der Präsentation Link to: BW Zeitmerkmale Link to: BW Zeitmerkmale BW ZeitmerkmaleBW Zeitmerkmale
Nach oben scrollen Nach oben scrollen Nach oben scrollen

Diese Website benutzt Cookies. Wenn du die Website weiter nutzt, erteilst du eine Einverständniserklärung zur Erhebung personenbezogener Daten nach der DSGVO. Weitere Informationen zu Cookies und insbesondere dazu, wie Sie deren Verwendung widersprechen können, finden Sie in unseren Datenschutzhinweisen.

Akzeptieren


Wie wir Cookies verwenden

Wir können Cookies anfordern, die auf Ihrem Gerät eingestellt werden. Wir verwenden Cookies, um uns mitzuteilen, wenn Sie unsere Websites besuchen, wie Sie mit uns interagieren, Ihre Nutzererfahrung verbessern und Ihre Beziehung zu unserer Website anpassen.

Klicken Sie auf die verschiedenen Kategorienüberschriften, um mehr zu erfahren. Sie können auch einige Ihrer Einstellungen ändern. Beachten Sie, dass das Blockieren einiger Arten von Cookies Auswirkungen auf Ihre Erfahrung auf unseren Websites und auf die Dienste haben kann, die wir anbieten können.

Notwendige Website Cookies

Diese Cookies sind unbedingt erforderlich, um Ihnen die auf unserer Webseite verfügbaren Dienste und Funktionen zur Verfügung zu stellen.

Da diese Cookies für die auf unserer Webseite verfügbaren Dienste und Funktionen unbedingt erforderlich sind, hat die Ablehnung Auswirkungen auf die Funktionsweise unserer Webseite. Sie können Cookies jederzeit blockieren oder löschen, indem Sie Ihre Browsereinstellungen ändern und das Blockieren aller Cookies auf dieser Webseite erzwingen. Sie werden jedoch immer aufgefordert, Cookies zu akzeptieren / abzulehnen, wenn Sie unsere Website erneut besuchen.

Wir respektieren es voll und ganz, wenn Sie Cookies ablehnen möchten. Um zu vermeiden, dass Sie immer wieder nach Cookies gefragt werden, erlauben Sie uns bitte, einen Cookie für Ihre Einstellungen zu speichern. Sie können sich jederzeit abmelden oder andere Cookies zulassen, um unsere Dienste vollumfänglich nutzen zu können. Wenn Sie Cookies ablehnen, werden alle gesetzten Cookies auf unserer Domain entfernt.

Wir stellen Ihnen eine Liste der von Ihrem Computer auf unserer Domain gespeicherten Cookies zur Verfügung. Aus Sicherheitsgründen können wie Ihnen keine Cookies anzeigen, die von anderen Domains gespeichert werden. Diese können Sie in den Sicherheitseinstellungen Ihres Browsers einsehen.

Andere externe Dienste

Wir nutzen auch verschiedene externe Dienste wie Google Webfonts, Google Maps und externe Videoanbieter. Da diese Anbieter möglicherweise personenbezogene Daten von Ihnen speichern, können Sie diese hier deaktivieren. Bitte beachten Sie, dass eine Deaktivierung dieser Cookies die Funktionalität und das Aussehen unserer Webseite erheblich beeinträchtigen kann. Die Änderungen werden nach einem Neuladen der Seite wirksam.

Google Webfont Einstellungen:

Google Maps Einstellungen:

Google reCaptcha Einstellungen:

Vimeo und YouTube Einstellungen:

Datenschutzrichtlinie

Sie können unsere Cookies und Datenschutzeinstellungen im Detail in unseren Datenschutzrichtlinie nachlesen.

Datenschutz
Einstellungen akzeptieren