Hallo zusammen,
ich bin gerade dabei einen ALV Grid zu programmieren. Jetzt möchte ich einzelne Zeilen, in Abhängigkeit von einem Status, auf Read-Only (als nicht auswählbar) schalten und die anderen sollen auswählbar sein.
Jetzt gibt es ja 2 Möglichkeiten eine Checkbox für die Auswahl einer Zeile zu realisieren:
1.) Layout, SELMODE auf 'A' setzen
2.) FCat, ein Feld (z.B. BOX) hinzufügen und Attribut EDIT='X' und CHECKOX='X' setzen, sowie in der Layoutstruktur in das Feld BOX_FNAME den Feldnamen aus dem FCat schreiben.
Ist es möglich im Fall 1.) einzelne Zeilen auf read-only zu setzen, inklusive der Auswahlbox? - Im FCat habe ich kein entsprechendes Feld.
Im Fall 2.) habe ich das Problem, dass ich das Feld BOX nicht an die erste Stelle positioniert bekomme, da ist bei immer die Spalte mit dem Trafficlight (Feld: LIGHT).
Die vorhandenen Beispielprogrammen BCALV_GRID_... haben mich nicht weitergebracht.
du arbeitest mit den alten REUSE...LIST Bausteinen,oder? Denn die neuen Versionen REUSE....GRID bzw. REUSE...GRID....LVC bieten ja statt der Listausgaben den neuen Grid mit der Markierspalte statt Checkboxen.
Falls ja könntest du folgendes versuchen: Es gib den ( recht unbekannten ) Callback AFTER_LINE_OUTPUT ( der entgegen der Doku nun gar nicht so schlimm von der Performance ist ) wo du versuchen könntest die gerade ausgegebene Listzeile die eine mit einem Hotspot versehene Checkbox beinhaltet , mittels den uralten und schon fast in der Vergessenheit versunkenen Befehle READ LINE , MODIFY LINE etc zu modifizieren und den Hotspot von der Checkbox zu nehmen bzw. die Checkbox ganz aus der Zeile zu entfernen, so dass sie auch nicht mehr gedrückt werden kann. Aber das ist unangenehm, wenn der User die Datenzeile im Layout über mehrere Ausgabezeilen verteilt hat, weil du dann wahrscheinlich auch noch BEFORE_LINE_OUTPUT benötigst um mittels RESERVE im AFTER_LINE_OUT via BACK zum Anfang zu springen.
Ehrlich gesagt würde ich dem Kunden erzählen, dass es - wenn überhaupt - nur mit nicht vertretbarem Aufwand zu realisieren wäre.
Alternative, die du auch noch testen könntest: Mittels Styles die gesamte Zeile deaktivieren. Ob das auch für die Checkbox nachher funktioniert müsstest du selber ausprobieren. Ich würde "ALV_STYLE_DISABLED" und "ALV_STYLE_SINGLE_CLK_EVENT_NO" als mögliche Kandidaten ansehen.
NIcht nur Drucktasten sind damit möglich, sondern auch z.B. CL_GUI_ALV_GRID=>MC_STYLE_DISABLED.
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.