Dump im verschachtelten FuBa abfangen Thema ist als GELÖST markiert

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

Dump im verschachtelten FuBa abfangen

Beitrag von Patrick1982 (ForumUser / 8 / 1 / 0 ) » 18.02.2020 12:40
Moin,

ich habe folgende Frage:
Und zwar rufe ich in meinem Programm den FuBa UPF_INPUT_CONVERT auf.
Die Übergabeparameter ergeben sich aus einer Eingabe, die der Anwender zuvor getätigt hat, das heißt, sie können falsch sein, sodass auf jeden Fall eine Fehlerbehandlung nötig ist.
Mein Problem ist jedoch: Wenn hier falsche Parameter übergeben werden, wird der FuBa trotzdem aufgerufen, erzeugt also keine Exception. In diesem FuBa wird dann der FuBa CONVERSION_EXIT_ALPHA_INPUT aufgerufen, der nun aber wegen der falschen weitergereichten Werte mit Fehler „Ausgabefeld zu kurz für konvertierten Wert.“ dumpt.

Habt ihr eine Idee, wie ich diesen Dump abfangen kann?
Dankeschön!
Patrick


Re: Dump im verschachtelten FuBa abfangen

Beitrag von a-dead-trousers (Top Expert / 3391 / 102 / 867 ) » 18.02.2020 12:46
Vor dem Aufruf die Daten prüfen ;)

Alternativ:
Wird ein Dump in der ST22 geschrieben? Was steht dort als Laufzeitfehler bzw. Ausnahme drinnnen?
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

Re: Dump im verschachtelten FuBa abfangen

Beitrag von jocoder (Specialist / 163 / 2 / 39 ) » 18.02.2020 13:02
Der Baustein UPF_INPUT_CONVERT hat für den Fall i_area = space bereits eine Eingabeprüfung.

Code: Alles auswählen.

    IF strlen( i_input_value ) > i_outputlen.
* Die Eingabe ist zu lang
      MESSAGE e018(upc) RAISING conversion_failure.
    ENDIF.
Diese sollte den Dump bereits abfangen.

Re: Dump im verschachtelten FuBa abfangen

Beitrag von Patrick1982 (ForumUser / 8 / 1 / 0 ) » 18.02.2020 13:45
jocoder hat geschrieben:
18.02.2020 13:02
Der Baustein UPF_INPUT_CONVERT hat für den Fall i_area = space bereits eine Eingabeprüfung.

Code: Alles auswählen.

    IF strlen( i_input_value ) > i_outputlen.
* Die Eingabe ist zu lang
      MESSAGE e018(upc) RAISING conversion_failure.
    ENDIF.
Diese sollte den Dump bereits abfangen.
Moin,

ja, das stimmt, aber diese Prüfung reicht leider nicht.
In meinem Fall hat der Wert I_INPUT_VALUE = 9 Zeichen, die I_OUTPUTLEN ist aber 10, also bricht er hier nicht ab.

Später ruft er dann den FuBa l_funcname mit Übergabeparameter <inpval>, der die o.g. 9 Zeichen beinhaltet. Dort wird dann der FuBa CONVERSION_EXIT_ALPHA_INPUT gerufen, wo der INPUT-Parameter wieder 9-stellig ist.
Also bislang wurde das nie geprüft, trotzdem dumpt es mir weg.
Ist das also vielleicht ein Fehler im SAP-Code oder übersehe ich hier noch etwas?

Re: Dump im verschachtelten FuBa abfangen

Beitrag von Patrick1982 (ForumUser / 8 / 1 / 0 ) » 18.02.2020 13:46
a-dead-trousers hat geschrieben:
18.02.2020 12:46
Wird ein Dump in der ST22 geschrieben? Was steht dort als Laufzeitfehler bzw. Ausnahme drinnnen?
Ja.
Laufzeitfehler: CONV_EXIT_FIELD_TOO_SHORT
Ausnahme ist nicht gefüllt

Re: Dump im verschachtelten FuBa abfangen

Beitrag von ewx (Top Expert / 4167 / 185 / 429 ) » 18.02.2020 14:09
wahrscheinlich benutzt du dann einen String als Input-und Output-Value?
Poste mal Code mit Datendefinitionen!

Re: Dump im verschachtelten FuBa abfangen

Beitrag von DeathAndPain (Top Expert / 1329 / 144 / 313 ) » 19.02.2020 08:00
Und im übrigen, wie schon gesagt, einfach vor dem Aufruf des Funktionsbausteins die Länge des Parameterwertes, den Du zu übergeben gedenkst, überprüfen. Das ist doch nicht schwer.

Code: Alles auswählen.

IF STRLEN( mein_parameter ) > 9.
  MESSAGE 'zu langer Wert' TYPE 'A'.
ELSE.
  CALL FUNCTION 'UPF_INPUT_CONVERT' EXPORTING bla.
ENDIF.

Seite 1 von 1