Klasse CL GUI FRONTEND SERVICES, Methode CLIPBOARD EXPORT

Aus SAP-Wiki
Zur Navigation springenZur Suche springen

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.

ZwischenablageInsert1.jpg


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.

ZwischenablageInsert2.jpg

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.

Web-Links