Expertenrätsel: Bekloppte Fehlermeldung

Die Objektorientierung mit ABAP®: Vererbung, Dynamische Programmierung, GUI Controls (u.a. ALV im OO).
8 Beiträge • Seite 1 von 1
8 Beiträge Seite 1 von 1

Expertenrätsel: Bekloppte Fehlermeldung

Beitrag von ralf.wenzel (Top Expert / 3946 / 201 / 281 ) »
Moin,

ich bin gerade auf folgendes Problem gestoßen, das ich mit einem Beispielprogramm demonstrieren will:

Code: Alles auswählen.

REPORT zzrwtest.

CLASS lcl_alpha DEFINITION FINAL.

  PUBLIC SECTION.
    METHODS main.
    METHODS set_matnr
      IMPORTING matnr TYPE matnr
      RETURNING VALUE(ergebnis) type abap_bool.

ENDCLASS.

CLASS lcl_beta DEFINITION CREATE PRIVATE FINAL.

  PUBLIC SECTION.
    CLASS-METHODS get_instance
      RETURNING VALUE(result) TYPE REF TO lcl_beta.

    METHODS get_data
      IMPORTING
                bla           TYPE char01
                peng          TYPE char01
      RETURNING VALUE(result) TYPE mara.

    METHODS get_matnr
      RETURNING VALUE(result) TYPE matnr.

ENDCLASS.

CLASS lcl_alpha IMPLEMENTATION.

  METHOD main.

    DATA(ergebnis) = me->set_matnr( SWITCH #( lcl_beta=>get_instance( )->get_matnr( )
                                         WHEN lcl_beta=>get_instance( )->get_data( bla = 'A' peng = 'B' )-matnr )
                                         THEN lcl_beta=>get_instance( )->get_data( bla = 'A' peng = 'B' )-matnr )
                                         ELSE SPACE ).

  ENDMETHOD.

ENDCLASS.

CLASS lcl_beta IMPLEMENTATION.

  METHOD get_data.

  ENDMETHOD.

ENDCLASS.
Zwei Rätsel für Experten:
  • Wie kommt es zu DIESER Fehlermeldung:
Die Klasse LCL_BETA=>GET_INSTANCE( darf nicht mit "FOR TESTING" angelegt werden, da sie schon von Nicht-Testcoding referiert wird.
  • Wer findet den WAHREN Fehler, ohne den Code zu zerlegen (also einfach mit Lesen)?
  • Zusatzfrage: Wo kann man den Fehler melden, wenn man nicht über das OSS gehen will (oder kann)?
Ich habe den Fehler einen halben Tag lang gesucht und ihn erst gefunden, als ich den Code zerlegt habe.


Ralf
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

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


Re: Expertenrätsel: Bekloppte Fehlermeldung

Beitrag von black_adept (Top Expert / 4103 / 128 / 945 ) »
Da fallen mehrere Sachen auf, aber keine erklärt die Fehlermeldung
  • lcl_beta=>get_instance hat keine Implementierung
  • Im Gegensatz zu CASE arbeitet SWITCH mit Konstanten
Schade - das wäre eine coole Meldung für meine Adventsknobelei gewesen...
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Expertenrätsel: Bekloppte Fehlermeldung

Beitrag von ralf.wenzel (Top Expert / 3946 / 201 / 281 ) »
Richtig. Die fehlende Implementierung ist irrelevant, in meinem Originalprogramm gibt es sie und die Fehlermeldung habe ich trotzdem. Und auch richtig: Es sind die Konstanten, die fehlen. Verwendet man COND, geht's.

Zur Adventsknobelei: Ich schiebe nix auf -- keiner von uns weiß, was Advent sein wird. Vor wenigen Wochen haben wir alle über Corona gesprochen, in diesen Tagen sprechen alle über den russischen Angriffskrieg gegen die Ukraine. Noch vor einer Woche war das für die meisten von uns unvorstellbar.


Ralf

PS: Ich habe heute 1.000 EUR in die Hand genommen und für die leidenden Menschen in der Ukraine gespendet. Ich rufe alle dazu auf, sich anzuschließen (es müssen ja nicht gleich 1.000 EUR sein). Dazu muss man sich nichtmal von seinem gemütlichen warmen Sessel erheben. Hier geht's zum Spendenlink.
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: Expertenrätsel: Bekloppte Fehlermeldung

Beitrag von wfischer65 (ForumUser / 3 / 1 / 0 ) »
Also ich habe die gleiche Fehlermeldung - kann aber nicht sehen wo ich COND einbauen / verwenden könnte. Der Fehler kommt nur in Zeile 33 - ich bau aber extra die Klasse ein damit ich die Variable sparen und das Ergebnis direkt an die Form übergeben kann. Warum kommt die Fehlermeldung und wo habe ich das "FOR TESTING" geschrieben ohne es zu sehen?

Code: Alles auswählen.

REPORT z_wof_test_class.

data
  :gv_s TYPE string
  .

CLASS lcl DEFINITION.
  PUBLIC SECTION.
    CLASS-METHODS conv
      IMPORTING
                iv_text        TYPE string
      RETURNING VALUE(rv_text) TYPE string.
ENDCLASS.
CLASS lcl IMPLEMENTATION.
  METHOD conv.
    rv_text = iv_text.
  ENDMETHOD.
ENDCLASS.

START-OF-SELECTION.
  PERFORM doit.

END-OF-SELECTION.

FORM doit.
  DATA
    :lv_s1  TYPE string
    ,lv_s2  TYPE string
    .
  lv_s1 = 'ABC'.
  lv_s2 = lcl=>conv( EXPORTING iv_text = lv_s1 ).
  perform subroutine using lv_s2.
  perform subroutine USING lcl=>conv( EXPORTING iv_text = lv_s1 ).

ENDFORM.
form subroutine using pv_string TYPE string.
  gv_s  = pv_string.
endform.

Re: Expertenrätsel: Bekloppte Fehlermeldung

Beitrag von ralf.wenzel (Top Expert / 3946 / 201 / 281 ) »
Das Problem ist, dass du bei PERFORM in USING keine explizite Variable übergeben willst, sondern einen RETURNING-Parameter. Das geht nicht.

Diese Fehlermeldung kommt oft, wenn sie augenscheinlich nicht angebracht ist. Warum, entzieht sich meiner Kenntnis.

Ich hab mal eine Mail an Horst Keller (aka "Gott" 😉 ) geschrieben, aber ich weiß nicht, ob der mir antwortet. Letztes Mal als ich eine Frage hatte, hat es geklappt 😉 Jedenfalls ist er aktuell nicht im Büro erreichbar, soviel weiß ich schon.



Ralf

P.S.: Ich hab hier leider keine Möglichkeit der englischsprachigen Anmeldung. Wenn du mir den englischen Text der Fehlermeldung schickst, frage ich in der SAP Community.
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: Expertenrätsel: Bekloppte Fehlermeldung

Beitrag von gtoXX (Specialist / 213 / 44 / 36 ) »
wfischer65 hat geschrieben:
04.10.2024 17:10
Also ich habe die gleiche Fehlermeldung - kann aber nicht sehen wo ich COND einbauen / verwenden könnte. Der Fehler kommt nur in Zeile 33 - ich bau aber extra die Klasse ein damit ich die Variable sparen und das Ergebnis direkt an die Form übergeben kann. Warum kommt die Fehlermeldung und wo habe ich das "FOR TESTING" geschrieben ohne es zu sehen?

Code: Alles auswählen.

REPORT z_wof_test_class.

data
  :gv_s TYPE string
  .

CLASS lcl DEFINITION.
  PUBLIC SECTION.
    CLASS-METHODS conv
      IMPORTING
                iv_text        TYPE string
      RETURNING VALUE(rv_text) TYPE string.
ENDCLASS.
CLASS lcl IMPLEMENTATION.
  METHOD conv.
    rv_text = iv_text.
  ENDMETHOD.
ENDCLASS.

START-OF-SELECTION.
  PERFORM doit.

END-OF-SELECTION.

FORM doit.
  DATA
    :lv_s1  TYPE string
    ,lv_s2  TYPE string
    .
  lv_s1 = 'ABC'.
  lv_s2 = lcl=>conv( EXPORTING iv_text = lv_s1 ).
  perform subroutine using lv_s2.
  perform subroutine USING lcl=>conv( EXPORTING iv_text = lv_s1 ).

ENDFORM.
form subroutine using pv_string TYPE string.
  gv_s  = pv_string.
endform.
Wozu verwendest du überhaupt noch eine Form ? Da kannst du doch gleich eine Klasse mit der nötigen Logik schreiben. Viel sinnvoller.
"Code lügt nicht ^^"

Re: Expertenrätsel: Bekloppte Fehlermeldung

Beitrag von gtoXX (Specialist / 213 / 44 / 36 ) »
ralf.wenzel hat geschrieben:
04.10.2024 17:32
Das Problem ist, dass du bei PERFORM in USING keine explizite Variable übergeben willst, sondern einen RETURNING-Parameter. Das geht nicht.

Diese Fehlermeldung kommt oft, wenn sie augenscheinlich nicht angebracht ist. Warum, entzieht sich meiner Kenntnis.

Ich hab mal eine Mail an Horst Keller (aka "Gott" 😉 ) geschrieben, aber ich weiß nicht, ob der mir antwortet. Letztes Mal als ich eine Frage hatte, hat es geklappt 😉 Jedenfalls ist er aktuell nicht im Büro erreichbar, soviel weiß ich schon.



Ralf

P.S.: Ich hab hier leider keine Möglichkeit der englischsprachigen Anmeldung. Wenn du mir den englischen Text der Fehlermeldung schickst, frage ich in der SAP Community.
Da bin ich gespannt. Diese Fehlermeldung erscheint öfter in unterschiedlichen Kontexten.
"Code lügt nicht ^^"

Re: Expertenrätsel: Bekloppte Fehlermeldung

Beitrag von ralf.wenzel (Top Expert / 3946 / 201 / 281 ) »
Mein SAP-Kontakt hat sich gemeldet, die SAP Language Group hat sich das angesehen und einen Hinweis dazu veröffentlicht. Welchen, weiß ich leider nicht. Wenn das einer nachsehen kann, darf er den gern mal hier veröffentlichen (also zumindest die Nummer).


Ralf
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Seite 1 von 1

Vergleichbare Themen

0
Antw.
1690
Views
Fehlermeldung
von Janni » 25.01.2006 18:23 • Verfasst in Material Management & Produktionsplanung
7
Antw.
3380
Views
Fehlermeldung
von 1337 » 06.12.2013 09:01 • Verfasst in ABAP® für Anfänger
2
Antw.
2131
Views
Fehlermeldung
von phil1982 » 24.09.2007 09:26 • Verfasst in ABAP® für Anfänger
3
Antw.
4708
Views
Fehlermeldung
von MelanieR » 26.10.2005 14:22 • Verfasst in Web-Dynpro, BSP + BHTML
1
Antw.
1879
Views
Job Fehlermeldung
von moppel251 » 26.06.2009 12:39 • Verfasst in ABAP® für Anfänger

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.

Unbeantwortete Forenbeiträge

SD_PRINT_TERMS_OF_PAYMENT
vor einer Woche von Manfred K. 1 / 1698
BUSOBJEKT zu CMIS PHIO ermitteln
vor 4 Wochen von snooga87 1 / 3522