Klasse CL GUI FRONTEND SERVICES, Methode CLIPBOARD EXPORT
Mit der Methode CLIPBOARD_EXPORT der Klasse CL_GUI_FRONTEND_SERVICES kann man eine interne Tabelle in die Windows Zwischenablage schreiben. Diese Methode unterstützt das Kopieren von ANSI- und UNICODE-Strings in die Zwischenablage.
Exporting / Importing Parameter mit interner Tabelle
- Aus Sicht der Methode CLIPBOARD_EXPORT müsste der Parameter DATA eigentlich ein Importparameter sein, da der Methode die Daten übergeben werden, die die Methode dann in die Zwischenablage schreibt. Aber ist ein Exportparameter. Das ist eigentlich ein Fehler von SAP. Aber es funktioniert trotzdem, da bei der Übergabe von einer internen Tabelle SAP fehlerrobust ist, wenn die Angabe Importparameter und Exportparameter vertauscht ist. SAP sagt dazu in der Hilfe "Dieser Parameter ist als Exportparameter definiert, sollte jedoch als Importparameter definiert werden. Dies funktioniert nur, da es für Tabellen keine Rolle spielt, ob der Parameter als Import- oder Exportparameter angegeben wird."
- Daher ist es im Moment etwas verwirrend, wenn aus Sicht vom Aufrufer der Methode die interne Tabelle nicht mit einem Exportparameter übergeben werden, sondern mit einem Importparameter.
Coding
Data: lt_symbols type STANDARD TABLE OF ITCSY1, ls_symbols type ITCSY1, lv_rc type i. ls_symbols-name = '&' && 'Test' && '&'. append ls_symbols to lt_symbols. CALL METHOD cl_gui_frontend_services=>clipboard_export EXPORTING no_auth_check = 'X' IMPORTING data = lt_symbols CHANGING rc = lv_rc EXCEPTIONS cntl_error = 1 error_no_gui = 2 not_supported_by_gui = 3 no_authority = 4 others = 5. IF sy-subrc <> 0. break eberstein. endif.
Anwendung Liste Select-Options in Zwischablage
- Eine schöne Anwendung für die Zwischenablage in SAP ist die Liste von einem Select-Options in die Zwischablage zu kopieren.
- Es bietet sich an eine generische Methode programmieren, um alle Select-Options (maximale Feldlänge 45 Zeichen) nutzen zu können.
Einführung
Im Selektionsscreen gibt es einen Select-Options mit dem Namen "S_SFNAME", wo in diesem Fall viele Smart Forms-Textbausteine enthalten sind.
Es soll nun über eine Drucktastensschaltfläche "Copy Liste" die Liste der Einträge im Select-Options (LOW) in die Zwischenablage kopiert werden.
Im Coding des Reports wird ein generischer Range definiert vom Typ RSELOPTION, dem der Tabellenrumpf vom Select-Options übergeben wird.
Dieser Range wird einer Methode der Klasse Z_CL_SCHN übergeben.
Data: lt_sel_opt type RSELOPTION. "Definition generischer Select-Option lt_sel_opt = s_sfname[]. "Zuweisung spezifischer Select-Option zum generischen Select-Option z_cl_schn=>clipboard_fill_select_option( it_sel_opt = lt_sel_opt[] ). "Aufruf Methode und Übergabe generischer Select-Options
Die Schnittstelle der Methode hat nur einen Importparameter mit dem generischen Select-Option.
Die interne Tabelle LT_SYMBOLS wird gefüllt und die Zwischenablage gefüllt mit der Methode CLIPBOARD_EXPORT.
Anwendungscoding
METHOD clipboard_fill_select_option. DATA: ls_sel_opt LIKE LINE OF it_sel_opt. DATA: lt_symbols TYPE STANDARD TABLE OF itcsy1, ls_symbols TYPE itcsy1, lv_rc TYPE i. * Füge alle Werte vom Select-Options zur Zwischenablage hinzu LOOP AT it_sel_opt INTO ls_sel_opt. ls_symbols-name = ls_sel_opt-low. APPEND ls_symbols TO lt_symbols. ENDLOOP. CALL METHOD cl_gui_frontend_services=>clipboard_export EXPORTING no_auth_check = 'X' IMPORTING data = lt_symbols CHANGING rc = lv_rc EXCEPTIONS cntl_error = 1 error_no_gui = 2 not_supported_by_gui = 3 no_authority = 4 OTHERS = 5. IF sy-subrc <> 0. break eberstein. ENDIF. ENDMETHOD.
Hinterher hat man mit einem Klick auf die Schaltfläche COPY_LISTE alle Einträge vom Select-Options in der Zwischenablage und kann diese Liste z. B. in Excel oder über die Transaktion SE16/SE16N bequem einfügen.