Doppelklick funktioniert nur einmal... :(

Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

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

Doppelklick funktioniert nur einmal... :(

Beitrag von ewx (Top Expert / 4784 / 294 / 628 ) »
Hallo zusammen!
Ich habe grad ein Problem...
Folgendes übersichtliche Programm erzeugt einen Docking Container mit einem Tree und zwei Knoten.
Per Doppelklick soll der Text des gewählten Knotens in das Feld P_NKEY übernommen werden.

beim ersten mal funktioniert das.
Ab dann nicht mehr...

Setzt man das Feld auf "nicht eingabebereit", dann funktioniert es auch mit der Wertübernahme.

Ich raff es nicht. Was mache ich falsch??

Hilfe.

Gruß Enno

Code: Alles auswählen.

REPORT z.

DATA gr_dock TYPE REF TO cl_gui_docking_container.
DATA gr_tree TYPE REF TO cl_list_tree_model.

PARAMETERS p_disp AS CHECKBOX USER-COMMAND x.
PARAMETERS p_nkey TYPE tv_nodekey MODIF ID x.


*----------------------------------------------------------------------*
*       CLASS lcl_appl DEFINITION
*----------------------------------------------------------------------*
CLASS lcl_appl DEFINITION.
  PUBLIC SECTION.
    CLASS-METHODS double_click FOR EVENT item_double_click OF cl_item_tree_model IMPORTING node_key.
ENDCLASS.                    "lcl_appl DEFINITION

*----------------------------------------------------------------------*
*       CLASS lcl_appl IMPLEMENTATION
*----------------------------------------------------------------------*
CLASS lcl_appl IMPLEMENTATION.
  METHOD double_click.
    p_nkey = node_key.
    MESSAGE s000(oo) WITH 'Wert gewählt:' node_key.
    cl_gui_cfw=>set_new_ok_code( 'X' ).
  ENDMETHOD.                    "double_click
ENDCLASS.                    "lcl_appl IMPLEMENTATION


INITIALIZATION.
  PERFORM init.

AT SELECTION-SCREEN OUTPUT.
  IF p_disp IS NOT INITIAL.
    LOOP AT SCREEN.
      IF screen-group1 = 'X'.
        screen-input = '0'.
        MODIFY SCREEN.
      ENDIF.
    ENDLOOP.
  ENDIF.

*&---------------------------------------------------------------------*
*&      Form  init
*&---------------------------------------------------------------------*
FORM init.

  IF gr_dock IS INITIAL.
    CREATE OBJECT gr_dock
      EXPORTING
        side      = gr_dock->dock_at_left
        extension = 250.
  ENDIF.

  IF gr_tree IS INITIAL.

    DATA lt_events   TYPE cntl_simple_events.
    DATA ls_events   LIKE LINE OF lt_events.
    DATA ls_item     TYPE treemlitem.
    DATA lt_items    TYPE STANDARD TABLE OF treemlitem.

    CREATE OBJECT gr_tree
      EXPORTING
        node_selection_mode = cl_list_tree_model=>node_sel_mode_single
        item_selection      = 'X' "braucht man für item double click
        with_headers        = ' '.

    CALL METHOD gr_tree->create_tree_control
      EXPORTING
        parent = gr_dock.

    ls_item-item_name = '1'.
    ls_item-class     = gr_tree->item_class_text.
    ls_item-alignment = gr_tree->align_auto.
    ls_item-font      = gr_tree->item_font_prop.
    ls_item-text      = 'Eins'.
    APPEND ls_item TO lt_items.


    CALL METHOD gr_tree->add_node
      EXPORTING
        node_key          = 'EINS'
        relative_node_key = space
        relationship      = gr_tree->relat_last_child
        isfolder          = space
        item_table        = lt_items.
    CLEAR lt_items.

    ls_item-item_name = '1'.
    ls_item-class     = gr_tree->item_class_text.
    ls_item-alignment = gr_tree->align_auto.
    ls_item-font      = gr_tree->item_font_prop.
    ls_item-text      = 'Zwei'.
    APPEND ls_item TO lt_items.

    CALL METHOD gr_tree->add_node
      EXPORTING
        node_key          = 'ZWEI'
        relative_node_key = space
        relationship      = gr_tree->relat_last_child
        isfolder          = space
        item_table        = lt_items.

    ls_events-eventid = gr_tree->eventid_item_double_click.
    APPEND ls_events TO lt_events.

    CALL METHOD gr_tree->set_registered_events
      EXPORTING
        events = lt_events.

    SET HANDLER lcl_appl=>double_click FOR gr_tree.

  ENDIF.

ENDFORM.                    "init

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


Re: Doppelklick funktioniert nur einmal... :(

Beitrag von a-dead-trousers (Top Expert / 4285 / 214 / 1141 ) »
hi!

Es fehlt PAI/PBO:

Code: Alles auswählen.

ls_events-appl_event = abap_true.
Das CFW löst bei Events die normale Dynpro-Aktualisierung nämlich (wegen Performancegründen?) nicht automatisch aus.

lg ADT

Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag:
ewx

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.

ECC: 6.18
Basis: 7.50

Re: Doppelklick funktioniert nur einmal... :(

Beitrag von ewx (Top Expert / 4784 / 294 / 628 ) »
Danke!! Aber: Dafür habe ich doch den SET_NEW_OK_CODE aufgerufen, doch im Grunde das gleiche macht?!
Und warum funktioniert es beim ersten Mal?

Re: Doppelklick funktioniert nur einmal... :(

Beitrag von black_adept (Top Expert / 3946 / 105 / 886 ) »
Siehe Doku:
http://help.sap.com/abapdocu_702/de/abendynp_field_data_transport.htm hat geschrieben: Datentransport zum Zeitpunkt PAI

Wenn die Anweisung FIELD im Ereignisblock zu PAI verwendet wird, steuert sie den Datentransport für das angegebene Dynpro-Feld. Standardmäßig werden alle Dynpro-Felder direkt beim Ereignis PAI und vor der Verarbeitung des zugehörigen Ereignisblocks an das ABAP-Programm transportiert. Bei Verwendung einer oder mehrerer FIELD-Anweisungen werden nur solche Dynpro-Felder, die nicht hinter einer FIELD-Anweisung aufgeführt sind, direkt beim Ereignis PAI transportiert.

Der Transport des Inhalts eines hinter FIELD angegebenen Dynpro-Felds dynp_field in das gleichnamige globale ABAP-Datenobjekt findet bei Ausführung der entsprechenden FIELD-Anweisung statt. Wenn ein Dynpro-Feld in mehr als einer FIELD-Anweisung aufgeführt wird, wird sein Wert bei Ausführung der ersten entsprechenden FIELD-Anweisung übergeben. Es gelten folgende Ausnahmen:

Die Anweisung FIELD hat für das OK-Feld keine Wirkung. Das OK-Feld wird immer direkt beim Ereignis PAI transportiert.

Ein Feld, dessen Inhalt zu PBO initial ist und vom Benutzer nicht geändert wird, wird von der FIELD-Anweisung nicht transportiert. Wenn dieses Feld in einem PAI-Modul vor Ausführung der FIELD-Anweisung mit einem Wert gefüllt wird, wird dieser von der FIELD-Anweisung also nicht mit dem Initialwert überschrieben.

Hinweise

Die Wirkung der Anweisung FIELD auf den Datentransport zum Ereignis PAI ist unabhängig von der Verknüpfung mit einer MODULE-Anweisung.

Ein Dynpro-Feld sollte in einem PAI-Modul nicht benutzt werden, bevor es vom Dynpro übergeben wurde. Ansonsten enthält das ABAP-Feld den gleichen Wert wie am Ende des vorhergehenden Dialogschritts.

Wenn Dynpro-Felder mit Bezug auf flache Strukturen im ABAP Dictionary definiert sind, müssen die gleichnamigen globalen Datenobjekte des ABAP-Programms mit der Anweisung TABLES als Schnittstellen-Arbeitsbereich deklariert worden sein. Ansonsten findet kein Datentransport statt, weder mit noch ohne FIELD.

Wenn ein Dynpro-Feld mit Bezug auf ein Datenelement im ABAP Dictionary definiert ist, dem in einem Kundensystem noch ein obsoleter Feld-Exit zugeordnet ist, kann während des Transports der Funktionsbaustein des Feld-Exits ausgeführt werden, wodurch in der Regel der Wert des Dynpro-Felds geändert wird.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Seite 1 von 1

Vergleichbare Themen

1
Antw.
2165
Views
Table View Spalten einmal editierbar einmal nicht
von Aggressor » 08.06.2006 08:39 • Verfasst in Web-Dynpro, BSP + BHTML
10
Antw.
6206
Views
Loop einmal?!?
von Uschi » 27.09.2005 13:57 • Verfasst in ABAP® für Anfänger
4
Antw.
2250
Views
Singleton einmal anders
von ralf.wenzel » 31.12.2018 10:23 • Verfasst in ABAP Objects®
2
Antw.
4542
Views
Rabattkondition nur einmal pro Auftrag
von casa » 23.11.2005 12:30 • Verfasst in Sales and Distribution
0
Antw.
749
Views
Noch einmal Balkendiagramm
von Kerstin » 17.03.2006 14:15 • Verfasst in ABAP® Core

Über diesen Beitrag


Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

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

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.