Zunächst, ich bin noch absoluter Anfänger in Abap und dies ist auch mein erster Beitrag in diesem Forum.
Ich stehe vor folgendem Problem:
Ich lese aus unterschiedlichen Datenbanktabellen die Datensätze, die ich benötige und schreibe diese in meine dafür angelegte interne Tabelle (Array-Fetch). Danach wird der Selektionsbildschirm aufgerufen. Dort kann ich in meinem Fall eine Lagernummer eingeben, und dann wird mir nach dem Ausführen eine Liste (gelesen aus meiner IT) angezeigt. Nun hab ich zwei GUI-Statuse angelegt mit denen ich das Feld "Lagerplatz" sperren (Drucktaste: geschlossenes Schloss) und entsperren (Drucktaste: geöffnetes Schloss) kann. Die Funktionalität habe ich schon eingebaut. Also es wird das Ereignis AT USER COMMAND gestartet und entsprechend von sy-ucomm = BLOCK bzw sy-ucomm = UNBLOCK der Lagerplatz gesperrt bzw. entsperrt. Das eigentliche Problem: Ich habe in der Liste die Ausgegeben wird, als erstes Feld ein ICON, das den Status darstellt, also eine grüne Lampe (Platz ist nicht blockiert) und rote Lampe (Platz ist blockiert). Jetzt will ich, dass dieses Icon jedes mal nach einem Klick auf die Drucktaste sofort aktualisiert wird. Aktuell ist es so, dass ich das Programm neu ausführen muss, um das aktualisierte Icon zu sehen. Meine Aufgabe ist es aber, dass der Selektionsbildschirm gleich nach dem Klick das Icon anzeigen soll. Die Hinweise die ich momentan habe, sind: MODIFY (ich kenne diese Anweisung aber nur im Zusammenhang mit einer Tabelle, und finde diese auch in der ABAP-Schlüsselwortdokumentation nur in diesem Zusammenhang), und eine System-Variable, die ich eben modifizieren sollte.
Wenn mir jemand da weiter helfen könnte und einen weiteren Hinweis geben könnte, wäre ich sehr dankbar.
Wichtig:
WIE gibts du deine Tabelle aus?
Mittels ALV-Grid, SALV, REUSE-Funktionsbaustein oder direktem WRITE-Befehl?
lg ADT
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.
Beim direkten Write bin ich mir jetzt nicht sicher, aber ich glaub man kann die Daten überschreiben:
SKIP TO LINE und dann WRITE AT
Definitiv leichter gehts mit ALV oder SALV.
Einfach die Daten in der internen Tabelle ändern (daher das MODIFY) und dann REFRESH aufrufen.
Sind aber beides Klassen und da muss man sich erst ein wenig einarbeiten (Eventhandling, Dynpro-Custom-Container usw.)
Die REUSE-Bausteine machen auch nichts anderes als WRITE, ich weiß aber nicht ob da eine Möglichkeit für REFRESH auch dabei ist.
lg ADT
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.
Ich werde da mal weiter recherchieren und und mit deinen Hinweisen versuchen etwas hinzubekommen. Wie gesagt, mit dem AVL soll ich erst nach dieser Teilaufgabe arbeiten, und dann auch einen Refresh-Button hinzufügen, der zu einer Neuselektion der Daten und zum Wiederaufbau der Liste führt. Zuvor, so meine explizite Aufgabenstellung, muss ich es wie beschrieben lösen.
Jedenfalls, danke nochmal, ich werde mich da weiter versuchen. Und ggf. hier nochmal melden