"Spaß" mit SAP.... PP zerstört Coding

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

"Spaß" mit SAP.... PP zerstört Coding

Beitrag von ralf.wenzel (Top Expert / 3772 / 176 / 262 ) »
Moin,

erstellt mal bitte einen Daddelreport mit folgendem Coding:

Code: Alles auswählen.

CLASS lcl_prettyprinter DEFINITION.
  PUBLIC SECTION.
    METHODS:
      destroy_coding.
ENDCLASS.

CLASS lcl_prettyprinter IMPLEMENTATION.
  METHOD destroy_coding.
    DATA:
      meth_name TYPE string.

    FIELD-SYMBOLS:
      <anyfield> TYPE any.

    TRY.
        CALL METHOD (meth_name)
          RECEIVING
            value(result) = <anyfield>.
      CATCH cx_sy_dyn_call_error ##no_handler.
    ENDTRY.
  ENDMETHOD.
ENDCLASS.
Report speichern, Syntaxprüfung durchführen, alles in Butter.
Jetzt führt bitte mal den Pretty Printer aus und staunt über zerstörtes Coding.

Das reicht nicht? Ihr wollt noch mehr staunen? Kein Problem:
Speichert obiges Coding nochmal, geht in den ANZEIGEmodus des Editors und wiederholt: Syntaxprüfung, Pretty Printer, Staunt nochmal über kaputtes Coding.

Ihr denkt, der Pretty Printer macht euer Coding im Anzeigemodus kaputt? Dann geht mal wieder in den Änderungsmodus und ihr seht euer Coding unversehrt....

Kein Spaß ohne Spaßbremse: lässt man das 'value" im Returning-Parameter weg, geht es. Returning-Paramter werden eh immer als Wert übergeben und nicht als Referenz.
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: "Spaß" mit SAP.... PP zerstört Coding

Beitrag von a-dead-trousers (Top Expert / 4267 / 213 / 1140 ) »
hi!

Ist die Angabe von VALUE( ) an dieser Stelle überhaupt erlaubt?
Ich weiß schon, dass der Syntax-Check hier keinen Fehler anmeckert.
Ist das bei z.B. EXPORTING/IMPORTING an dieser Stelle möglich?

Bei mir:
Im Editor sehe ich, dass "(" als rot hervorgehoben Fehler.
Pretty-Print zerstört nix.
Ohne dyn. Methodennamen schreit die Syntaxprüfung. Also hab ich damit meine vorige Frage schon beantwortet: VALUE( ) ist an dieser Stelle nicht erlaubt.

lg ADT
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.18
Basis: 7.50

Re: "Spaß" mit SAP.... PP zerstört Coding

Beitrag von ralf.wenzel (Top Expert / 3772 / 176 / 262 ) »
a-dead-trousers hat geschrieben:hi!

Ist die Angabe von VALUE( ) an dieser Stelle überhaupt erlaubt?
Ich weiß schon, dass der Syntax-Check hier keinen Fehler anmeckert.
Ist das bei z.B. EXPORTING/IMPORTING an dieser Stelle möglich?

Bei mir:
Im Editor sehe ich, dass "(" als rot hervorgehoben Fehler.
Pretty-Print zerstört nix.
Ohne dyn. Methodennamen schreit die Syntaxprüfung. Also hab ich damit meine vorige Frage schon beantwortet: VALUE( ) ist an dieser Stelle nicht erlaubt.

lg ADT
Ohne dynamischen Methodennamen macht das RECEIVING gar keinen Sinn, weil der funktionale Methodenaufruf das obsolet macht. Bei mir wird vom PP wird das "result" entfernt, die erste Klammer jedoch nicht, es steht also dort:

Code: Alles auswählen.

        CALL METHOD (meth_name)
          RECEIVING
            value(= <anyfield>.
was definitiv syntaktisch falsch ist. Zumal wird bei mir vor dem PP keine Fehlermeldung ausgegeben, danach aber sehr wohl. Lt. (meiner) Syntaxprüfung (ABAP 7.40) ist die Angabe von VALUE also nicht falsch.

Auf die Anzeige im Editor gebe ich schon lange nix mehr, etwa ein Drittel meines Codings sind rot, obwohl syntaktisch richtig. Ich könnte ein Dutzend Beispiele bringen von Befehlen, die in Teilen rot, aber syntaktisch korrekt sind (ich arbeite viel mit 7.40-Coding).

Zudem steht hier: Um Parameter als Wert zu übergeben, muß dies durch die VALUE-Kennung festgelegt werden. Der Rückgabewert (RETURNING-Parameter) muß immer explizit als Wert übergeben werden. Dabei muss dann auch VALUE diavorgeschrieben werden - es gibt (gerade durch das Fehlen einer speziellen Formulierung für RECEIVING) keinen Grund, warum das bei RECEIVING anders sein sollte.

Und warum das Coding im ANZEIGEmodus geändert wird, ist auch nicht nachzuvollziehen.
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: "Spaß" mit SAP.... PP zerstört Coding

Beitrag von a-dead-trousers (Top Expert / 4267 / 213 / 1140 ) »
ralf.wenzel hat geschrieben:Zudem steht hier: Um Parameter als Wert zu übergeben, muß dies durch die VALUE-Kennung festgelegt werden. Der Rückgabewert (RETURNING-Parameter) muß immer explizit als Wert übergeben werden.
Das steht aber unter dem Abschnitt "Methodendeklaration" und nicht beim Aufruf!
Also hat das VALUE an der Stelle schon mal gar nichts verloren.

Ich hab außerdem festgestellt, dass bei einem nicht-dynamischen Aufruf sehrwohl der Syntax-Check hier meckert. Also ist es diesem Spezial-Fall geschuldet, dass ABAP hier aufgrund seiner "dynamik" durcheinander kommt. Aber das hab ich schon an einigen anderen Stellen leidlich gemerkt, dass es bei solchen Kontrukten erst bei der Ausführung zu einem Fehler kommt.
z.B. Der dynamische Aufruf der SUPER-Methode in einer Ableitung (zwecks unterschiedlicher Parameter) geht schlicht und einfach nicht.
ralf.wenzel hat geschrieben:Und warum das Coding im ANZEIGEmodus geändert wird, ist auch nicht nachzuvollziehen.
Das hab ich auch schon bemerkt. Ist mitunter nervig, aber wenn man es weiß...
Das dürfte aber auch dem "Alter" des Pretty-Printers geschuldet sein:
Der Vorgang laut WB ist nämlich, aktuelle Daten vom Editor holen, Editor beenden, Objekt sperren, Pretty Print, Objekt entsperren, Editor wieder aufrufen. Vermutlich hat da wieder mal niemand daran gedacht den Editor zu fragen, ob er überhaupt im Änderungsmodus war. :evil:
Oder aber der PrettyPrinter wird von sich aus als "Editor" gehandelt und ist damit selbst für alles verantwortlich.

lg ADT
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.18
Basis: 7.50

Re: "Spaß" mit SAP.... PP zerstört Coding

Beitrag von ralf.wenzel (Top Expert / 3772 / 176 / 262 ) »
a-dead-trousers hat geschrieben:Das steht aber unter dem Abschnitt "Methodendeklaration" und nicht beim Aufruf!
Richtig.
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: "Spaß" mit SAP.... PP zerstört Coding

Beitrag von black_adept (Top Expert / 3942 / 105 / 885 ) »
Wenns wirklich stört mach nen OSS-Call auf - ist ein tatsächlicher Fehler im PP.
Vielleicht macht sich dann ja mal jemand die Mühe zusätzlich die neuen Features unter 7.4 zu unterstützen und nicht mehr dort gültige Formulierungen fälschlicherweise rot als Fehler zu markieren.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: "Spaß" mit SAP.... PP zerstört Coding

Beitrag von ralf.wenzel (Top Expert / 3772 / 176 / 262 ) »
Daran arbeiten sie gerade. Leider gibt es Dinge, die in der Prio höher liegen. Aber das kommt in Bälde, so sagte man mir. Das ist ja auch ein reiner SAPGUI-Fehler.
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: "Spaß" mit SAP.... PP zerstört Coding

Beitrag von black_adept (Top Expert / 3942 / 105 / 885 ) »
Gerade noch mal auf diesen Thread gestoßen.
Auf einem halbwegs aktuellen System (7.40, SP10+) macht der PP inzw. nichts mehr kaputt.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Seite 1 von 1

Vergleichbare Themen

2
Antw.
4765
Views
CL_SALV_TABLE: Refresh zerstört die Sortierung
von donny » 08.04.2008 08:53 • Verfasst in ABAP Objects®
0
Antw.
1477
Views
EWM - LVM und CL_GUI_LIST_TREE [Spiel, Spaß und Spannung]
von mlg » 07.05.2015 11:20 • Verfasst in ABAP Objects®
6
Antw.
2407
Views
Verständnisfrage zu Coding
von Mark33 » 23.02.2012 15:22 • Verfasst in ABAP® für Anfänger
5
Antw.
2464
Views
Frage zu Coding
von Mark33 » 15.03.2012 10:40 • Verfasst in ABAP® für Anfänger
13
Antw.
7631
Views
Coding Fehler
von commolus » 15.05.2012 16:53 • Verfasst in ABAP Objects®

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.