ich habe eine funktionierende Webdynpro-Anwendung, welche u.a. einen ALV darstellt, dessen Felder der Datenstruktur auf der Datenbank entsprechen, d.h. das ALV setzt auf die DDIC-Definition.
Jetzt habe ich die Anforderung, dass die Editierbarkeit, die bisher spaltenweise gesetzt wird, in einer Spalte auf Zellebene gesetzt werden soll ... und zwar in Abhängigkeit einer anderen Spalte. Hierbei tue ich mich aber sehr schwer ... und habe noch keinen vernünftigen Ansatz.
Als Alternative (Notlösung) hatte ich überlegt, dass bei Änderungen in der fraglichen Spalte immer geprüft wird, ob ich da nun etwas ändern darf. Ist das nicht der Fall, sollte einfach der Inhalt wieder gelöscht werden. Aber auch hier mache ich was falsch, denn der ALV zeigt den Inhalt weiterhin an.
Hat jemand eine Idee wie ich mein Problem lösen kann?
um dazu eine gezieltere Antwort geben zu können, wäre es gut zu wissen wie dein ALV realisiert ist. Da gibt es ja zwei Möglichkeiten, für ein über SALV_WD_TABLE realisiertes ALV meine ich mich zu erinnern, dass dies nicht, oder nur sehr schwer zu realisieren ist, aber wenn es per Table Control realisiert ist, gibt es da definitiv die Möglichkeit jede Zelle einzeln auf Editierbarkeit zu steuern.
In einer WebDynpro hatte ich auch mal diese Anforderung und bin wegen der einzelnen Steuerbarkeit zum Table Control gewechselt, da sämtliche Recherchen ergaben, dass es über die SALV-Methode nicht ging.
Sofern du also nun ein TC hast, kann ich dir ein paar Tipps geben
ohje, da hast du wohl eine nahezu unlösbare Aufgabe.
Hast du die Möglichkeit das umzubauen? Der Aufwand ist ja jetzt nicht so riesig und du kannst deinem Auftraggeber das ganze mit einer vollständigen Editierbarkeit der Zellen und der Möglichkeit jede Zelle einzeln zu prüfen schmackhaft machen.
Wenn du jedoch unbedingt beim SALV_WD bleiben musst, wäre eine Idee, das Editieren einzelner Zellen in einem kleinen Popup zu realisieren, so dass die gesamte Tabelle grundlegend nicht eingabebereit ist. Dann kannst du hinterlegen, dass sich das Popup nur öffnet, wenn die Voraussetzung und ggf. die Berechtigung zum Ändern der Zelle vorhanden ist.
Zum Löschen des Inhalts wollte ich eigentlich im letzten Post schon was gesagt haben aber hab es irgendwie verdrängt. Transportierst du denn die Änderungen in den Spalten auch zum Context? Auch beim Löschen?
die Änderungen schlagen sich direkt im Context nieder ... die Anpassung der kompletten Tabelle wird nicht möglich sein, da niemand den Aufwand zahlen würde.
Ich habe mit jetzt einen Workaround ausgedacht, den ich aber noch nicht mit den Kunden besprochen habe:
Spalte 1 enthält die Information 'a' oder 'b'.
Wenn in der Spalte 2 bei Information 'a' nun etwas eingeben wird, lösche ich dieses beim übernehmen wieder raus.
Nur bei Information 'b' bleiben auch die Eingaben in der Spalte 2 vorhanden.
bisschen durchs Knie in die Brust geschossen, aber sicher ein gangbarer Weg. Einige unserer Kunden würden sich dabei sicher beschweren, warum denn überhaupt eine Eingabe möglich sein soll, wenn diese gar nicht erst erlaubt ist. Schlag deinem Kunden ruhig mal die Alternative mit dem TC vor. Hat ja dann doch einige Vorteile für den Endanwender, wenn einzelne Zellen steuerbar sind, statt nur die Spalten. Viel Erfolg!