Die Elseif-Anweisung wird übersprungen

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

Die Elseif-Anweisung wird übersprungen

Beitrag von TurgutOz (ForumUser / 1 / 0 / 0 ) » 16.09.2020 17:50
Guten Abend, und zwar geht es darum, dass meine Elseif Bedingung übersprungen wird, obwohl sie erfüllt ist. Es geht um die Programmierung im Web Dynpro.

Die lokale Struktur Ls_search_pruefung beinhaltet die Eingabe einer Prüfungs-ID vom Benutzer. Wenn eine Eingabe zwischen 1 und 4 stattfindet, werden die dazugehörigen Prüfungen dazu ausgegeben. Bis hierhin funktioniert alles soweit.
Wenn die gesuchte Prüfungs_id nicht vorhanden ist, soll er eine Fehlermeldung in der elseif anweisung erzeugen, jedoch wird diese übersprungen und eine Internal server error 500 ausgegeben.



SELECT * FROM z432_pruefungt INTO TABLE lt_pruefung.

IF ls_pruefung ne ls_search_pruefung.
LOOP AT lt_pruefung INTO ls_pruefung FROM 1 TO ls_search_pruefung-p_id.
ENDLOOP.


ELSEif ls_search_pruefung-p_id > ls_pruefung-p_id.
ls_param-name = 'p_id' .
ls_param-value = ls_search_pruefung-p_id .
APPEND ls_param TO lt_params.

lo_api_controller ?= wd_this->wd_get_api( ).

CALL METHOD lo_api_controller->get_message_manager
RECEIVING
message_manager = lo_message_manager.

* report message
CALL METHOD lo_message_manager->report_element_error_message
EXPORTING
message_text = 'Keine Prüfung zu der Prüfungsnummer &p_id gefunden!'
element = lo_el_search_pruefung
* attributes =
params = lt_params
* msg_user_data =
* is_permanent = ABAP_FALSE
* scope_permanent_msg = CO_MSG_SCOPE_CTXT_ELEMENT
* msg_index =
* cancel_navigation =
* is_validation_independent = ABAP_FALSE
* enable_message_navigation =
* view =
* component =
* RECEIVING
* message_id =
.

ENDIF.


Re: Die Elseif-Anweisung wird übersprungen

Beitrag von Lukas Sanders (ForumUser / 11 / 3 / 5 ) » 17.09.2020 07:12
Hallo,

bei einem Internal Server Error wird in der Regel auch ein Dump geschrieben (Transaktion ST22), in dem die genaue Ausnahme und die Abbruchstelle zu finden sind.

Außerdem kann bei einer IF-Verzweigung (in ABAP) immer nur ein Zweig angesprochen werden und es gewinnt der erste Treffer. Ist eine Bedingung erfüllt, werden die anderen gar nicht erst durchlaufen.

Wenn die Bedingung im ELSEIF-Zweig zutrifft, trifft auch die IF-Bedingung zu (wenn ls_search_pruefung-p_id größer als ls_pruefung-p_id ist, dann ist auch ls_pruefung ungleich ls_search_pruefung).

Somit wird der ELSEIF-Zweig nie erreicht. Eventuell wäre hier eine andere Schachtelung mit zwei IF-Verzweigungen besser.

Folgende Benutzer bedankten sich beim Autor Lukas Sanders für den Beitrag:
DeathAndPain


Re: Die Elseif-Anweisung wird übersprungen

Beitrag von a-dead-trousers (Top Expert / 3503 / 113 / 907 ) » 17.09.2020 07:18
Wie genau sind "ls_search_pruefung-p_id" und "ls_pruefung-p_id" definiert?
CHAR, INT oder was ganz anderes?
Sind Konvertierungen ala ALPHA hinterlegt?
Wie wird "ls_pruefung" befüllt? Ich sehe nur ein SELECT auf eine Tabelle und nicht in die Struktur.

Ansonst stimmt natürlich auch Lukas's Einwand, dass die zweite IF-Bedingung durch die erste IF-Bedingung gar nicht angesprungen wird.
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.07
Basis: 7.40

Seite 1 von 1

Aktuelle Forenbeiträge

itab aus FuBa in Program
vor 2 Stunden von black_adept gelöst 6 / 48
GuiXT Standardtext erfassen bei SD Aufträgen
vor 13 Stunden von dagmard gelöst 3 / 77
Einlesen von XML im Batchmode
vor 14 Stunden von stony007_de gelöst 4 / 106

Vergleichbare Themen

IF ELSEIF
von dyv » 07.08.2014 14:37
"WRITE" wird übersprungen.
von Django90 » 28.09.2017 11:33
IF Anweisung
von Mathan » 06.09.2006 13:07
Tables-Anweisung
von Grado » 06.05.2005 13:40
Select-Anweisung
von ??? » 23.05.2005 10:22