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
Code: Alles auswählen.
ls_events-appl_event = abap_true.
Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag:
ewx
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.