Alle Deklarationen in FORM Routinen ermitteln Thema ist als GELÖST markiert

Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV
34 Beiträge Vorherige Seite 3 von 3 (current)
34 Beiträge Vorherige Seite 3 von 3 (current)

Re: Alle Deklarationen in FORM Routinen ermitteln

Beitrag von DeathAndPain (Top Expert / 1135 / 128 / 242 ) » 9. Okt 2019 13:16

Mach mal ein "clear PB0001" und du weißt, warum der vor Verschattung warnt.
Da passiert überhaupt nichts, außer dass meine Variable erwartungsgemäß initialisiert wird.

Was hast Du erwartet, dass er die gleichnamige Datenbanktabelle leert?!? CLEAR kann überhaupt nur interne Felder leeren, und da gibt es nur eins, nämlich das, das ich per DATA definiert habe.


Re: Alle Deklarationen in FORM Routinen ermitteln

Beitrag von ralf.wenzel (Top Expert / 3465 / 155 / 223 ) » 9. Okt 2019 14:23

Nur um deinen Fall zu verstehen: Du hast KEINE lokal deklarierte Tabelle gleichen Namens? Du selektierst also nur einen Satz?


Ralf

Re: Alle Deklarationen in FORM Routinen ermitteln

Beitrag von Legxis (Specialist / 144 / 63 / 24 ) » 9. Okt 2019 15:09

ralf.wenzel hat geschrieben:
9. Okt 2019 14:23
DeathAndPain hat geschrieben:
9. Okt 2019 12:38
"Der Arbeitsbereich "PB0001" wird durch ein gleichnamiges lokales Datenobjekt (Parameter,Variable) verschattet."

PB0001 ist eine Tabelle, von der ich eine Zeile lese. Der Einfachheit halber mache ich das mit klassicher Syntax ohne INTO, also mit namensgleicher Variable (aber per DATA, nicht per TABLES deklariert). Daraufhin bekomme ich obenstehende nervige Warnung, die noch nicht mal inhaltlich stimmt, denn es gibt zu der Tabelle keinen TABLES-Befehl und keine globale Variable dieses Namens, sondern lediglich diese lokale Variable, die halt den Namen der Datenbanktabelle trägt (was in ABAP nicht verboten ist), so dass hier überhaupt nichts verschattet wird. Ein Pragma, um das zumindest auszublenden, gibt es auch nicht.
Nur um deinen Fall zu verstehen: Du hast KEINE lokal deklarierte Tabelle gleichen Namens? Du selektierst also nur einen Satz?
Er meint das sicherlich so, die Warnung wird angezeigt, obwohl es nur eine lokale Variable gibt.

Code: Alles auswählen.

PERFORM test.

******************************

FORM test.

  DATA pb0001 TYPE pb0001.

  SELECT SINGLE * FROM pb0001.

ENDFORM.
( SAP ECC 6.0, NetWeaver 7.0, ohne unicode, ohne support/enhancement packages )

Re: Alle Deklarationen in FORM Routinen ermitteln

Beitrag von DeathAndPain (Top Expert / 1135 / 128 / 242 ) » 9. Okt 2019 17:35

Ganz genau. Eine interne Tabelle, die genauso heißt wie die Datenbanktabelle, habe ich nicht angelegt. Das wäre sehr irreführend und verwirrend. Ich habe einfach nur wie in Lexgis' Codebeispiel zu sehen per DATA eine Workarea-Variable für den SELECT angelegt, die genauso heißt wie die Tabelle, so dass ich mir beim SELECT den INTO sparen kann.

Wahrscheinlich könnte ich die Meldung wegkriegen, indem ich TABLES anstelle von DATA verwende, aber der TABLES-Befehl beinhaltet noch mehr, was ich hier explizit nicht brauche, und die Warnung ist sachlich falsch.

Vorherige Seite 3 von 3 (current)

Aktuelle Forenbeiträge

Web Service Restful API
vor 11 Stunden von Tron 2 / 32
Entwurfsmuster in ABAP / OO
vor 2 Tagen von Maximus 16 / 2132
VA01, Kundenauftragserfassung Preisdatum
vor 2 Tagen von SAP_ENTWICKLER 1 / 53
Rabax Fehlermeldung
vor 2 Tagen von zzcpak 2 / 84
Aufgabe Programm/- Tabellenerstellung
vor 2 Tagen von SaskuAc 3 / 84

Unbeantwortete Forenbeiträge

VA01, Kundenauftragserfassung Preisdatum
vor 2 Tagen von SAP_ENTWICKLER 1 / 53
HANA Audit Trail
vor einer Woche von JohnLocklay 1 / 97
Halber Tag Urlaub
vor einer Woche von SO4SAP 1 / 61
Funktionsbausteine BAPI_INCOMINGINVOICE*****
vor einer Woche von Rabea1103 1 / 70
S4/HANA in der Cloud / 14 Tage Trial
vor 3 Wochen von Tron 1 / 102