Drag’n’Drop mit Datei
In diesem Beispiel zeigen wir, wie Sie eine Datei aus dem Windows-Explorer auf ein SAP-Control ziehen können und den Dateipfad sowie Dateinamen angezeigt bekommen. So lässt sich z.B. eine Anwendung programmieren, die Dateien per Drag’n’Drop entgegen nimmt und auf den Application server hoch lädt.
SAP-Controls und Drag’n’Drop
SAP-Controls können normalerweise nur DragDropObjekte aufnehmen, die auch von einem SAP-Control erzeugt wurden.
Ausnahmen sind der ABAP-Editor und das TextEditControl: Sie können eine Textdatei auf das Control ziehen und der Inhalt wird im Control dargestellt.
Leider feuert kein Control ein Event “DropComplete”, auf das man reagieren könnte, geschweige denn, dass man schon bei “onDrop” entscheiden könnte, ob man dieses Objekt haben möchte oder nicht.
Eine Ausnahme bildet das HTML-Control, das ja den Internet Explorer verwendet um HTML- oder PDF-Dateien anzuzeigen.
Das Control CL_GUI_HTML_VIEWER erzeugt das Ereignis “NAVIGATE_COMPLETE”, sobald die “Navigation” abgeschlossen wurde. Eine Datei, die per Drag and Drop auf dieses Control gezogen wird, löst ebenfalls dieses Ereignis aus.
Beschreibung
Dieses Programm dockt das HTML-Control an das Selektionsbild an und zeigt die URL einer ge-drop-ten Datei an.
Code
REPORT z_dock_drop.
*** Selection screen
PARAMETERS: p_url TYPE string.
INITIALIZATION.
PERFORM create_objects.
*----------------------------------------------------------------------*
* CLASS lcl_event_receiver DEFINITION
*----------------------------------------------------------------------*
CLASS lcl_event_receiver DEFINITION.
PUBLIC SECTION.
CLASS-METHODS:
handle_navigate_complete
FOR EVENT navigate_complete
OF cl_gui_html_viewer
IMPORTING url sender.
ENDCLASS. "lcl_event_receiver DEFINITION
*----------------------------------------------------------------------*
* CLASS lcl_event_receiver IMPLEMENTATION
*----------------------------------------------------------------------*
CLASS lcl_event_receiver IMPLEMENTATION.
METHOD handle_navigate_complete.
p_url = url.
* sender->go_back( ). "If object should not be displayed
ENDMETHOD. "handle_sapevent
ENDCLASS. "lcl_event_receiver IMPLEMENTATION
*&---------------------------------------------------------------------*
*& Form CREATE_OBJECTS
*&---------------------------------------------------------------------*
FORM create_objects.
*** Data
DATA cl_docker TYPE REF TO cl_gui_docking_container.
DATA t_events TYPE cntl_simple_events.
DATA wa_event LIKE LINE OF t_events.
DATA event_receiver TYPE REF TO lcl_event_receiver.
DATA t_html TYPE STANDARD TABLE OF text8192
WITH NON-UNIQUE DEFAULT KEY.
DATA html LIKE LINE OF t_html.
DATA url TYPE text1000.
DATA cl_html TYPE REF TO cl_gui_html_viewer.
*** create docker
CREATE OBJECT cl_docker
EXPORTING
extension = 300
side = cl_gui_docking_container=>dock_at_bottom
no_autodef_progid_dynnr = 'X'.
*** create HTML
CREATE OBJECT cl_html
EXPORTING
parent = cl_docker.
*** Register NAVIGATE_COMPLETE
CALL METHOD cl_html->get_registered_events
IMPORTING
events = t_events.
wa_event-eventid = cl_gui_html_viewer=>m_id_navigate_complete.
wa_event-appl_event = 'X'.
READ TABLE t_events TRANSPORTING NO FIELDS
WITH KEY eventid = wa_event-eventid.
IF sy-subrc <> 0.
APPEND wa_event TO t_events.
ENDIF.
CALL METHOD cl_html->set_registered_events
EXPORTING
events = t_events.
SET HANDLER lcl_event_receiver=>handle_navigate_complete FOR cl_html.
*** Build HTML-Code
CONCATENATE '<html>'
'<head><title>Dropzone</title>'
'</head>'
'<body bgcolor="#22FF22">'
'<p><font size= 30>hierher mit den Bildern!!</font></p>'
'</body>'
'</html>'
INTO html.
APPEND html TO t_html.
*** load HTML
CALL METHOD cl_html->load_data
IMPORTING
assigned_url = url
CHANGING
data_table = t_html.
*** Show HTML page
CALL METHOD cl_html->show_url
EXPORTING
url = url.
ENDFORM. " CREATE_OBJECTS
- Automatisches Eingabefeld [SAPGUI] - 9. Oktober 2025
- So verhinderst du Jobstarts zur falschen Zeit - 15. September 2025
- [apple] iCloud-Photos herunterladen - 21. Juli 2025



