Code: Alles auswählen.
column->set_color( VALUE lvc_s_colo( col = 5 int = 1 inv = 0 ) ).
Code: Alles auswählen.
data: color TYPE LVC_S_COLO.
color-col = '7'.
color-int = '0'.
color-inv = '0'.
Code: Alles auswählen.
DATA(color) = VALUE LVC_S_COLO( col = '7'
int = '0'
inv = '0' ).
Hast recht. Diesen kleinen Makel habe ich unkritisch vom Fragesteller abgeschrieben. Deine Variante ist die beste.
Code: Alles auswählen.
LEAVE TO SCREEN 0.
Folgende Benutzer bedankten sich beim Autor DeathAndPain für den Beitrag:
fr-g
Guter Hinweis! Das habe ich noch nie beachtet.DeathAndPain hat geschrieben: ↑08.12.2020 14:08obgleich Dynpronummern immer NUMCs sind und daher (zur Vermeidung einer überflüssigen Konvertierung) in Anführungszeichen geschrieben werden sollten.Code: Alles auswählen.
LEAVE TO SCREEN 0.
Erstens: Dynpronummern sind nicht immer vom Typ NUMC sondern manchmal auch vom Typ CHAR ( SY-DYNNR ).DeathAndPain hat geschrieben: ↑08.12.2020 14:08obgleich Dynpronummern immer NUMCs sind und daher (zur Vermeidung einer überflüssigen Konvertierung) in Anführungszeichen geschrieben werden sollten.
Du hast recht. Sorry für diese Ungenauigkeit auf meiner Seite.Dynpronummern sind nicht immer vom Typ NUMC sondern manchmal auch vom Typ CHAR ( SY-DYNNR ).
Ein NUMC-Feld ist (wie das C in "NUMC" schon sagt), technisch gesehen ein Characterfeld. Dasselbe gilt übrigens auch für Datumsfelder, nur dass ABAP bei Zuweisungen bei NUMC-Feldern prüft, ob man da nur Zahlen reinschreibt, wohingegen man in ein Feld vom Typ D (bzw. DATS) jeden Character-Unsinn reinschreiben kann.Zweitens: Könntest du bitte mal einen Link zu deiner Behauptung posten der erklärt welche Konvertierungen bei der Zuweisung einer Zahl zu einem NUMC-Feld passieren die bei einer Zuweisung eines Char-Felds zu einem NUMC-Feld nicht passieren und dass das tatsächlich ( von mir aus auch nur marginal ) schneller ist.
Kann man machen - aber ehrlich gesagt sehe ich das schon lange sehr locker zumal man manchmal mehr oder weniger gezwungen ist das anders zu machen.DeathAndPain hat geschrieben: ↑08.12.2020 19:15Literale sollten meiner Meinung nach immer in dem Datentyp abgefasst werden, dem sie zugeordnet werden.
NUMC! Ein CALL SCREEN '9X4' führt dich auf den Screen 94 falls vorhanden und ich hoffe mal, dass sich CALL SCREEN und LEAVE TO SCREEN da nicht unterscheiden.DeathAndPain hat geschrieben: ↑08.12.2020 19:15Wobei die Frage spannend ist, ob die Dynpronummer bei LEAVE TO SCREEN x (oder CALL SCREEN x) technisch als NUMC oder als CHAR implementiert ist.
Ja hätte ich auch gern so gemacht, leider lässt das unser Release Stand nicht zu :/. Aber den Hinweis mit dem falschen Feldnamen nehme ich gerne mit, danke.DeathAndPain hat geschrieben: ↑08.12.2020 12:56Nur ist Dein Beispielcode oldschool und sollte besser so aussehen😉:
Kürzer und viel schöner (erfordert mind. Release 7.40).Code: Alles auswählen.
DATA(color) = VALUE LVC_S_COLO( col = '7' int = '0' inv = '0' ).
Und dann vielleicht noch über einen anderen Namen für das Feld nachdenken, da COLOR ein ABAP-Schlüsselwort ist. ABAP erlaubt sowas zwar, aber Schlüsselwörter als Feldnamen zu verwenden, kann tückisch sein. Oder Du verzichtest gleich ganz auf das Feld und übergibst den VALUE direkt als Parameter an die ALV-Methode. Das lokale COLOR-Feld brauchst Du ja nur dafür; anschließend stiftet es ja keinen Nutzen mehr.