Code: Alles auswählen.
FORM usercommand USING r_ucomm
ls_selfield TYPE slis_selfield. "#EC CALLED
*&---Looking for Double click on ALV
IF r_ucomm = '&IC1'.
READ TABLE it_mseg_mat ASSIGNING <mseg> INDEX ls_selfield-tabindex.
IF sy-subrc = 0.
SET PARAMETER ID 'BLN' FIELD <mseg>-mblnr.
SET PARAMETER ID 'BUK' FIELD <mseg>-bukrs.
SET PARAMETER ID 'GJR' FIELD <mseg>-mjahr.
CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN.
ENDIF.
ENDIF.
ENDFORM.
Hi black_adept,black_adept hat geschrieben: ↑14.10.2021 15:03Ich weiß ja nicht, ob in deiner Fa. Namenskonventionen herrschen. Aber ich schätze, dass der Name gv_matnr diesen nicht entspricht. Wenn doch, solltest du vorschlagen, die Namenskonventionen mal zu überarbeiten[/list]
Folgende Benutzer bedankten sich beim Autor black_adept für den Beitrag (Insgesamt 2):
Murdock • DeathAndPain
Ach so, alles klar. ich dachte Du störst dich generell an der ungarischen Notation oder hier an dem Suffix "matnr".black_adept hat geschrieben: ↑27.10.2021 17:05
Der Screenshot mit dem Codeauszug, welcher die Variable gv_matnr enthält ist der für die Methode "interface~FILL_ADD_COLUMNS".
Alle dort definierten Variablen haben einen Vorsatz lv_ oder gv_ was auf die ungarische Notation hindeutet.
gv_matnr ist eine dieser innerhalb dieser Methode definieren Variablen und somit eine lokale Variable wohingegen der Vorsatz "gv_" auf eine globale Variable hindeutet.
Ich bin nicht Ralf 😊
Folgende Benutzer bedankten sich beim Autor black_adept für den Beitrag:
Murdock
Das ist ja gerade das Verlogene an der objektorientierten Programmierung: "globale Klassenattribute" sind bei Licht betrachtet nichts anderes als globale Variablen der Klasse. Mit dem Verweis auf die Tugendhaftigkeit von OO als Ausrede wird von sauberer Parametrisierung der Unterprogramme abgewichen und wieder wie in grauer Programmiersteinzeit als "Attribute" verbrämte globale Variablen verwendet, mit all den damit verbundenen Nachteilen, dass man nämlich, wenn man ein Stück Code anschaut, rätselraten darf, wo deren Wert herkommt und wo er nachher hingeht. Ich habe schon bei mehr als einem Programmierer Programme gesehen, deren Hauptprogramm nicht mehr als eine Kette parameterloser (!) Methodenaufrufe war und man dann anfangen durfte zu forschen, auf welche Weise diese Methoden zusammenhängen bzw. welche Daten von wo nach wo laufen (oder anders ausgedrückt: wie das Programm überhaupt arbeitet). Das macht es unendlich viel schwerer, einen Fehler zu finden oder den Code zu erweitern. Was man da an Zeit verbrennt, ist locker das Tausendfache der Zeit, die es den ursprünglichen Programmierer gekostet hätte, seine Methoden diszipliniert zu parametrisieren.black_adept hat geschrieben: ↑27.10.2021 17:05...ist es Usus, lokale Variablen mit "l" und globale Variablen mit "g" ( oder globale Klassenattribute mit "m" (= member)) beginnen zu lassen.
Mit dem 1. Teil "Attribute = globale Klassenattribute" gebe ich dir völlig recht. Aber in Reports mit lokalen Klassen gibt es innerhalbe einer Methode halt 3 Sichtbarkeiten: Lokal, global innerhalb der Klasse, global innerhalb des Reports.DeathAndPain hat geschrieben: ↑28.10.2021 12:59Das ist ja gerade das Verlogene an der objektorientierten Programmierung: "globale Klassenattribute" sind bei Licht betrachtet nichts anderes als globale Variablen der Klasse. Mit dem Verweis auf die Tugendhaftigkeit von OO als Ausrede wird von sauberer Parametrisierung der Unterprogramme abgewichen und wieder wie in grauer Programmiersteinzeit als "Attribute" verbrämte globale Variablen verwendet, mit all den damit verbundenen Nachteilen, dass man nämlich, wenn man ein Stück Code anschaut, rätselraten darf, wo deren Wert herkommt und wo er nachher hingeht.
Du machst den Fehler, rational zu denken. 😜 Das tun die Leute aber nicht, sondern folgen Prinzipien, die ihnen eingehämmert worden sind. Bei klassisch-prozeduraler Programmierung bestehen diese Prinzipien aus: "Globale Variablen sind böse und sollten nicht benutzt werden. Verwende stattdessen Parameter!" Also machen die Leute das.Mit dem 2. Teil kann ich nur sagen: Wer so was schreibt, wird in Reports genau so einen Mist verzapfen.