Wie setzt man das Pragma ##NO_HANDLER ein? Thema ist als GELÖST markiert

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

Wie setzt man das Pragma ##NO_HANDLER ein?

Beitrag von DeathAndPain (Top Expert / 1579 / 182 / 345 ) »
Hallo zusammen,

Die erweiterte Programmprüfung meckert:
Fehlende Ausnahmebehandlung nach der CATCH-Anweisung.
Durch das Pragma ##NO_HANDLER deaktivierbar. Meldungscode: UNR 0247
O.g. Pragma will ich nutzen, damit die Meckerei ein Ende hat.

Also versuche ich:

Code: Alles auswählen.

TRY.
  IF LINE_EXISTS( BUFFER_PEOPLE_HEAD_USERS[ TABLE_LINE = BUFFER_UNAME[ PERNR = LV_PERNR ]-USRID ] ).
    PEOPLE_LEAD = ABAP_TRUE.
    RETURN.
  ENDIF.
  CATCH CX_SY_ITAB_LINE_NOT_FOUND. ##NO_HANDLER
ENDTRY.
(Flame Disclaimer: Trotz des LINE_EXISTS ist der TRY-Block notwendig, da hier zwei 7.40-Tabellenzugriffe ineinander geschachtelt sind und der innere trotzdem eine Exception auslösen könnte, wenn es in der Tabelle BUFFER_UNAME keine passende Zeile gibt.)

Aber die erweiterte Programmprüfung meckert trotzdem unverändert, und in der Zeile mit dem Pragma kommt (in Eclipse) links ein kleines gelbes Dreieck, dessen Mouseover lautet: "Das Pragma "NO_HANDLER" darf an dieser Stelle nicht stehen."
Wenn ich das ##NO_HANDLER einfach in eine eigene Zeile unter das CATCH setze, dann verschwindet das gelbe Dreieck. Aber die erweiterte Programmprüfung meckert auch dann weiter.

Also wo muss das Pragma hin, damit der Kram funktioniert?


Re: Wie setzt man das Pragma ##NO_HANDLER ein?

Beitrag von edwin (Specialist / 296 / 9 / 63 ) »
vor und nicht nach dem Punkt :

Code: Alles auswählen.

  CATCH CX_SY_ITAB_LINE_NOT_FOUND ##NO_HANDLER.

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


Re: Wie setzt man das Pragma ##NO_HANDLER ein?

Beitrag von tm987456 (ForumUser / 70 / 40 / 13 ) »
Mit value #( ... optional ) braucht es kein try-catch, so lange ein leerer Rückgabewert das Ergebnis beim äusseren Tabellenausdruck nicht verfälscht.

Code: Alles auswählen.

IF LINE_EXISTS( BUFFER_PEOPLE_HEAD_USERS[ TABLE_LINE = VALUE #( BUFFER_UNAME[ PERNR = LV_PERNR ]-USRID OPTIONAL ) ] ).
  PEOPLE_LEAD = ABAP_TRUE.
  RETURN.
ENDIF.

Folgende Benutzer bedankten sich beim Autor tm987456 für den Beitrag:
black_adept


Re: Wie setzt man das Pragma ##NO_HANDLER ein?

Beitrag von DeathAndPain (Top Expert / 1579 / 182 / 345 ) »
Ich weiß, OPTIONAL nutze ich auch sehr gerne, aber hier kann ich nicht zweifelsfrei garantieren, dass es in der äußeren Tabelle keinen Fund für den Initialwert geben würde.

Aber edwins Antwort war die Lösung, vielen Dank!

Seite 1 von 1

Über diesen Beitrag


ABAP & SAP eBook Flatrate von Espresso Tutorials Sponsorlink
Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Vergleichbare Themen

DB-Update setzt kein Subrc
von RIG » 29.07.2021 12:10
refresh_table_display setzt aktuelle zelle um :(
von SwordMaster » 13.10.2005 14:55
Event Handler mit OLE
von snoodels » 10.12.2005 11:27
Handler- und ALV-Problem
von newbie007 » 10.12.2011 10:54
Filter-Handler in ALV-Grid?
von abapnewbie » 30.07.2020 11:34