F4 in ALV Grid Zelle

Die Objektorientierung mit ABAP®: Vererbung, Dynamische Programmierung, GUI Controls (u.a. ALV im OO).
16 Beiträge • Seite 1 von 2 (current) Nächste
16 Beiträge Seite 1 von 2 (current) Nächste

F4 in ALV Grid Zelle

Beitrag von the-FoX (ForumUser / 87 / 0 / 0 ) »
Hallo,

ich möchte gerne in einer Zelle dem Benutzer bei der Dateneingabe ein wenig helfen, indem ich eine art F4 Popup aufgeen lasse, wo er dann den Wert selektieren kann, genau wie bei Sonstigen Eingabefeldern in Dynpros, wenn ich eine SUchhilfe definiere.

Wenn es geht, möchte ich dafür die bereits vorhandenen Suchhilfen verwenden und nicht eigene Dynpros usw. anlegen müssen. Ist das möglich und wenn ja wie ?

the-FoX

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


F4 in ALV Grid Zelle

Beitrag von mabri (ForumUser / 34 / 0 / 0 ) »
Halo the-FoX

In dem du beim TYPE des Feldes in der OUTTAB Bezug auf das Dictonaryfeld nimmst, an dem die Suchhilfe angebunden ist.

MABRI

Beitrag von the-FoX (ForumUser / 87 / 0 / 0 ) »
Danke, das hat mir schon wietergeholfen. Jetzt ist mir ein weiteres Problem aufgefallen:

Wenn ich im Frontend eine Zeile hinzufüge oder editiere, wird sie nicht autiomatsich in die interne Tabelle übertragen, wenn PBO aufgerufen wird, zumindest nicht immer. Was ist da zu tun ? :(

Beitrag von mabri (ForumUser / 34 / 0 / 0 ) »
Da die Editierfunktion im ALV nicht von der SAP freigegeben ist, habe ich bisher immer nach anderen Möglichkeiten gesucht Datensätze zu verändern.

Mich macht deine Aussage "nicht immer" etwas stutzig. Deshalb einige Fragen hierzu:
Wird ein REFRESH gemacht?
Wird der Datensatz in einem PBO/MODULE in die ITAB übertragen?
Ist PAI vieleicht günstiger?
Gibt es Bedingungen zu welchem Zeitpunkt das passiert?

Ohne deine Anforderungen zu kennen, würde ich möglicherweise einen Button einfügen der einen OKCODE produziert, mit dem der Benutzer explizit das speichern veranlasst.

Wenn du schon Erfahrungen mit der Stabilität der Editierfunktion hast würde ich mich über ein Feedback freuen.

MABRI

Beitrag von the-FoX (ForumUser / 87 / 0 / 0 ) »
Also, ich ahbe mir ein ALV Grid gebastelt mit einer eigenen Toolbar. Die Toolbar beinhaltet einen Button: AddNewRow und DeleteSelectedRows, die die entsprechenden Funktionen aufweisen.
AddNewRow fügt in der internen Tabelle eine neue Zeile hinzu, die dann auch im ALV dargestellt wird. Soweit so gut. Editier ich diese Reihe und klicke auf die Drucktaste SAVE, woltle ich die interne Tabelle speichern, aber dort ist die Zeile ncoh leer, wie nach dem Aufruf der Funktion AddNewRow, nach Betätigen des Buttons.

Wenn ich aber eine Zeile hinzufüge, dann diese neue leere Zeile editiere udn eine weitere Zeile hinzufüge udn dann erst auf Save klicke, so sind die geänderten Daten alle in der internen Tabelle, bis auf die zuletzt hinzugefügte neue Zeile.

Ich bin noch recht neu, was ABAP usw. betrifft, vieleicht mache ich auch zu wirre Dinge :) und sollte doch ein Table-Control dafür nehmen ? Aber das hat leider keien integrierte Toolbar und Title usw.

Beitrag von the-FoX (ForumUser / 87 / 0 / 0 ) »
Ich hab mal testweise einen refreshbutton eingebaut in die Toolbar, der nix tut und wenn ich den vorher aufrufe, dann klappt es auch mit dem anschließendem Speichern.
Aber ich kann den Benutzer ja nicht zwingen immer erst den einen Knopf zu drücken bevor er auf den SAVE Button geht :)

Beitrag von mabri (ForumUser / 34 / 0 / 0 ) »
Das Problem kann darin bestehen, das die aus der Toolbar aufgerufenen Ereignisse im CFW (ControlFrameWork)gepuffert werden und nicht direkt über PBO laufen (Debugger).

Vorschlag 1: In der Methodenbehandlung, eine eigene ITAB pflegen und diese zum Zeitpunkt SAVE im PAI/PBO abarbeiten.

Vorschlag 2: CALL METHODE cl_gui_cfw=>flush.

MABRI

Beitrag von the-FoX (ForumUser / 87 / 0 / 0 ) »
>Vorschlag 1: In der Methodenbehandlung, eine eigene ITAB pflegen und diese zum Zeitpunkt SAVE im PAI/PBO abarbeiten.

Versteh ich irgednwie nciht so ganz. Ich hab doch eine interne Tabelle, die quasi durch das Grid angezeigt wird. Ich brauch ja jetzt die Daten, die der User eingegeben hat, um sie in die inetrne einzupflegen oder einpflegen zu lassen. :roll:

> Vorschlag 2: CALL METHOD cl_gui_cfw=>flush.
Doofe Farge: Einfach so die Methode aufrufen ? Das Objekt cl_gui_cfw hab ic doch nicht angelegt, existiert es trotzdem ? :? Funktioniert jedenfalls so irgendwie nicht

Beitrag von the-FoX (ForumUser / 87 / 0 / 0 ) »
ich habe jetzt mal folgendes probiert:
http://members3.boardhost.com/luisgarcia/msg/25913.html

wenn cih daten geändert habe, springt er jedoch merkwürdigerweise nicht in das event :-/
Folgendes COmmando ist doch korrekt, um den EventReciever "anzumelden":

SET HANDLER o_event_receiver->on_data_changed
FOR cont_grid.

Beitrag von the-FoX (ForumUser / 87 / 0 / 0 ) »
So, nun hab ich es glaube ich ;-)
Also:
Ein eigenen Eventandler geschrieben wie in dem Link davor.
Zudem nach dem Erzeugen des ALV_GRIDS:
call method grid->register_edit_event
exporting
i_event_id = cl_gui_alv_grid=>mc_evt_modified.
aufgerufen. Jedoch hab ich das in keienr Dokumentation gefunden. Jedenfalls kann ich mein GRID jetzt für die Dateneingabe nutzen.

Beitrag von mabri (ForumUser / 34 / 0 / 0 ) »
Wenn o_event_receiver deine lokal definierte Methode zur Behandlung des Events ist, dann Ja. Hier ein Beispiel wie ich die Events abfange.

Code: Alles auswählen.

* Datendefinition
CLASS lcl_event DEFINITION.
  PUBLIC SECTION.
  CLASS-METHODS:
   on_data_changed FOR EVENT data_changed
                    OF cl_gui_alv_grid
             IMPORTING er_data_changed.
ENDCLASS.

* Letzte Anweisung im Definitionsteil
CLASS lcl_event IMPLEMENTATION.
  METHOD on_data_changed.
    BREAK-POINT.
  ENDMETHOD.
ENDCLASS.
*
* Nach dem Erzeugen der Instanz 
SET HANDLER lcl_event=>on_double_click FOR cont_grid.

Beitrag von the-FoX (ForumUser / 87 / 0 / 0 ) »
jepp, genau so sieht es bei mir aus. Danke für Deine groe Hilfe!

Eins hab ich jedoch noch:
Wenn man eine Zelle verändert und dann nicht in die nächste Zelle springt per Mausklick,Tab oder Enter, sondern in ein normales Dynprofeld mit der Maus klickt,verliert der ALV seinen Focus, jedoch wird das Event data_chanegd nicht ausgelöst.

Gibt es ein Event: lost_focus oder onBlur ? So dass ich , wenn der Focus von der Tabelle weg geht, trotzdem die geänderten Daten speichern kann ?

Beitrag von mabri (ForumUser / 34 / 0 / 0 ) »
Stimmt, das gleiche habe ich auch festgestellt, aber wie willst du feststellen, ob in dieser Zelle eine Änderungen erfolgte, wenn genau das durch Enter, Tab usw.. registriert wird.

Noch ein Hinweis, ich habe in meinem Test-Report die Behandlung des EVENTs data_changed komplett weggelassen und es funkt immer noch. Scheint so, dass der Methodenaufruf register_edit_event vollkommen ausreicht.

Mann lernt gerne dazu :D

MABRI

Beitrag von the-FoX (ForumUser / 87 / 0 / 0 ) »
Das ist gut ;)
was mich nur ncoh stört ist die Tatsache, dass, sobald ich das Feld geändert habe, springt der Cursor an den Anfang der Tabelle, anstatt an dem eingegebenem Feld oder dem nächsten stehen zu bleiben.

Beitrag von mabri (ForumUser / 34 / 0 / 0 ) »
Das habe ich nicht.

MABRI

Vergleichbare Themen

4
Antw.
3423
Views
ZELLE IM ALV GRID
von XGER » 17.05.2005 08:32 • Verfasst in ABAP® Core
10
Antw.
5499
Views
ALV GRID Klick in Zelle
von Thomas17 » 26.06.2013 09:08 • Verfasst in ABAP® Core
2
Antw.
15949
Views
ALV GRID - einzelne Zelle färben
von sp89 » 14.12.2010 13:07 • Verfasst in ABAP® für Anfänger
5
Antw.
2863
Views
ALV-Grid: Einzelne Zelle farbig (Feldsymbol)
von Annnelies » 21.08.2008 14:34 • Verfasst in ABAP® Core
1
Antw.
2136
Views
ALV-Grid: Ändern Datentyp/Ausgabelänge einzelner Zelle
von TomSd » 16.10.2007 10:13 • Verfasst in ABAP Objects®

Über diesen Beitrag


Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Aktuelle Forenbeiträge

Regex in where
vor 4 Stunden von edwin 7 / 163
Daten an Tabelle binden
vor 17 Stunden von Bright4.5 3 / 1486

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.

Aktuelle Forenbeiträge

Regex in where
vor 4 Stunden von edwin 7 / 163
Daten an Tabelle binden
vor 17 Stunden von Bright4.5 3 / 1486

Unbeantwortete Forenbeiträge

aRFC im OO-Kontext
vor 5 Wochen von ralf.wenzel 1 / 3261
Hilfe bei SWEC/SWE2
September 2024 von retsch 1 / 9821