Demo zu Desktop Office Integration

Ähnliche Dokumente
Die in diesem Fall als Template verwendete Excel-Datei muss mithilfe der Transaktion OAER in das Business Objects Repository geladen werden!

ajanzen.com Verwendung des Custom Controls

ajanzen.com Beispiel zur Verwendung des EASY SPLITTERS

Der ausgewählte Text wird markiert und ausgegraut, so dass er nicht erneut ausgewählt werden kann.

In diesem Beispiel wird ein ALV-Grid aufgerufen, das jede Sekunde einen anderen Eintrag aus einer Tabelle anzeigt.

ajanzen.com Vorgehen zur Verwendung des GUI Docking-Containers

Download von Programmen

Generischer Excel-Upload

Includes/ Programme generieren

Standardtext ins PDF-Format konvertieren

Erzeugung eines Dokuments

ajanzen.com Vorgehen zum Erstellen eines Dynpro- Splitters

Doppelklick auf eine Klasse verzweigt in den Class Builder (Transaktion SE24).

Unterprogramme auslagern

ajanzen.com Aufruf eines Pop-Up-Containers

ajanzen.com Schnell programmierte ALV-GRID-Anzeige mit geänderten Spaltenüberschriften

Exporting ALV to Memory2

ajanzen.com Beispiel zur Verwendung des GUI Splitters

Generic Object Services

Bankleitzahlen einlesen

Wählt man einen Wert aus, so wird dieser in das Selektionsbild übernommen und der Docking- Container wird wieder verkleinert.

ajanzen.com ALV-Grid-Anzeige mit eingabebereiten Zellen

SAP und bunte Bilder geht das?

Datenbankablage für ArchiveLink einrichten

ajanzen.com ALV-Anzeige mit eigenen Spaltenüberschriften und aktiven Standardfunktionen

ALV-Grid und Excel. * * * * * Erweiterung der Toolbar um einen Button Export -> Excel * * * *

Dokumentation anzeigen (2)

ajanzen.com CSV-Upload

B Synopsis der Programmiersprachen ABAP, VB und Java

ajanzen.com Excel-Upload

ajanzen.com ALV-Anzeige im Selection-Mode mit angepassten Zellenfarben

Kurzbeschreibung. Quelltext

Praxisworkshop SAP-Controls und SAP List Viewer

Magic Filter. Magic Filter. Code

A.4 Beispiel zum -Versand über Smart Forms

Welche Redefinitionen gibt es?

ajanzen.com Umgang mit zur Laufzeit erstellen Selektions-, Sortier- und IF-Bedingungen

Programmieren für Fortgeschrittene Einführung in die Programmiersprache ABAP

Die Datenmanipulationssprache SQL

10.6 Programmier-Exits für Workitems

Installation MySQL Replikationsserver

SAP Container HELP.BCCIDOCK. Release 4.6C

Autosumme in ALV-Grid Version 1

Übung PL/SQL Trigger Lösungen

REPORT Z_NEBP_RAHMEN.

6 OLE2 und MS Office Integration

Der Beginn einer wunderbaren Freundschaft von Stefan Schnell

SAP-Daten per HTML anzeigen

Checkliste. Verantwortlich: Benedikt Pawletta K-SIPE-2 Status:

Übungsblatt 8- Lösungsvorschlag

ajanzen.com Um eigene Toolbar-Funktionen erweiterte ALV-Grid-Anzeige

5.8 Bibliotheken für PostgreSQL

Erzeugung und Veränderung von Tabellen

VGM. VGM information. HAMBURG SÜD VGM WEB PORTAL - USER GUIDE June 2016

Order Ansicht Inhalt

Funktionen. Überblick über Stored Functions. Syntax zum Schreiben einer Funktion. Schreiben einer Funktion

Teil I Das R/3-System - Struktur, Komponenten und Bedienung 1

Üben von DDL und DML. Ergebnis:

FEBE Die Frontend-Backend-Lösung für Excel

Beck EDV-Berater VBA. Visual Basic for Applications Programmieren unter Office XP. 2., neu bearbeitete Auflage

Prakt. Datenbankprogrammierung. Sommersemester 2005

Analysis Add-On Data Lineage

Informatik - Übungsstunde

Funktionen in Python

1 def Anweisung. 2 Argumentübergabe. 3 Lokale Variablen. 4 Default Argumente. 5 Aufruf mit Schlüsselwort. 6 Variable Argumente. Funktionen in Python

Funktionen in Python

ajanzen.com ALV-Grid-Anzeige mit eingabebereiten Spalten

Oracle 12c: Neuerungen in PL/SQL. Roman Pyro DOAG 2014 Konferenz

Word-CRM-Upload-Button. User manual

DB2 SQL, der Systemkatalog & Aktive Datenbanken

Übung 4 ABAP. Übung Business Process Management" (MW31.2) Lisa Wenige SS2016

Can I use an older device with a new GSD file? It is always the best to use the latest GSD file since this is downward compatible to older versions.

Martin Bracher Technische Background Info und Trivadis Scripts

Data exchange with Prosonic Flow 93T

Der SAS DataStep und die Prozedur SQL Cellent Finance Solutions GmbH Seite: 1

Excel-ähnliche Spreadsheets in Apex Innovation aus einer IT-Abteilung

1. General information Login Home Current applications... 3

THEMA: GUT VORBEREITET IST HALB ZERTIFIZIERT ANTWORTEN ZUR SAS VISUAL ANALYTICS-ZERTIFIZIERUNG" THOMAS WENDE

ISU 1. Ue_08/02_Datenbanken/SQL. 08 Datenbanken. Übung. SQL Einführung. Eckbert Jankowski.

Stream EDitor SED und Reguläre Ausdrücke

ICS Font/Symbol Utilities (INTERLIS Tools / GeoShop)

Erste Schritte mit SigmaPlot

Explizite Cursor. Cursor. Steuerung des expliziten Cursors. Explizite Cursor Funktionen

Schreiben von Microsoft Office Datein mit Java

VGM. VGM information. HAMBURG SÜD VGM WEB PORTAL USER GUIDE June 2016

Datenmanagement I SoSe 2006 Aufgabenblatt 4

Umstellung eines Outlook Kontos von ActiveSync zu IMAP. Changing an Outlook account from ActiveSync to IMAP

Exercise (Part XI) Anastasia Mochalova, Lehrstuhl für ABWL und Wirtschaftsinformatik, Kath. Universität Eichstätt-Ingolstadt 1

ajanzen.com ALV-Anzeige mit einem Inline-Button

Guidance Notes for the eservice 'Marketing Authorisation & Lifecycle Management of Medicines' Contents

Anwendungsentwicklung Datenbanken SQL. Stefan Goebel

Transkript:

Demo zu Desktop Office Integration Demoprogramme zur Desktop Office Integration. Entwicklungsklasse: SOFFICEINTEGRATION SAPRDEMO_PIVOTINTERFACE SAPRDEMO_SPREADSHEET_INTERFACE SAPRDEMO_TABLES_IN_EXCEL SAPRDEMOEXCELINTEGRATION2 DOI-Demo von Black_Adept Screenshot Excel (inplace) mit Daten füllen Coding * Darstellung Inplace auf Dynpro 9000 in einem Containercontrol namens * CONTAINER_9000 * Minimale Fehlerbehandlung REPORT zzdoidemo. TYPE-POOLS: soi. CONSTANTS: c_containername TYPE text20 VALUE CONTAINER_9000. * Definition der benötigten Controls DATA: cl_container TYPE REF TO cl_gui_custom_container, Container cl_control TYPE REF TO i_oi_container_control, OIContainerCtrl cl_document TYPE REF TO i_oi_document_proxy, Office Dokument cl_spreadsheet TYPE REF TO i_oi_spreadsheet. Spreadsheet

DATA: t_ranges t_contents TYPE soi_range_list, TYPE soi_generic_table. DATA: t_daten TYPE STANDARD TABLE OF d010sinf Demodaten WITH NON-UNIQUE DEFAULT KEY INITIAL SIZE 100, ok_code TYPE syucomm. Für Dynpro 9000 START-OF-SELECTION. *** Demodaten selektieren SELECT * UP TO 100 ROWS INTO TABLE t_daten FROM d010sinf WHERE prog LIKE Z%. END-OF-SELECTION. * 1. Aufbau des Spreadsheet-Interfaces * Version: * Leeres Blatt alternativ kann man auch einen bestehenden * File vom Frontend oder aus dem BOR öffnen. * Kommentar an der relevanten Stelle in der folgenden Routine PERFORM build_spreadsheet_interface. * Die Tabellenkalkulationsschnittstelle arbeitet mit benannten Bereichen * Zur Demo werde ich einen n Zeilen, 5 Spalten großen Bereich * definieren, in den ich nachher dann Daten einfülle PERFORM build_named_areas. * Daten zur Verfügung stellen PERFORM set_data_into_sheet. CALL SCREEN 9000. * Freigabe der Objekte FREE cl_spreadsheet. CLEAR: cl_spreadsheet. IF NOT cl_document IS INITIAL. CALL METHOD cl_document->release_document. FREE: cl_document, cl_control, cl_container. CLEAR: cl_document, cl_control, cl_container.

*& Form build_spreadsheet_interface FORM build_spreadsheet_interface. TYPES: tyt_errors TYPE STANDARD TABLE OF REF TO i_oi_error WITH NON-UNIQUE DEFAULT KEY. DATA: error t_errors TYPE REF TO i_oi_error, TYPE tyt_errors, repid TYPE syrepid, dynnr TYPE sydynnr. * Container erzeugen repid = sy-repid. dynnr = 9000. CREATE OBJECT cl_container container_name = c_containername repid = repid dynnr = dynnr EXCEPTIONS cntl_error = 1 cntl_system_error = 2 create_error = 3 lifetime_error = 4 lifetime_dynpro_dynpro_link = 5 others = 6. IF sy-subrc <> 0. BREAK-POINT.STOP. ************************************************************************ ** Hier geht die DOI-Erzeugung los ************************************************************************ * Instanz des OI-controls erzeugen CALL METHOD c_oi_container_control_creator=>get_container_control control = cl_control * control aufbauen CALL METHOD cl_control->init_control inplace_enabled = X * INPLACE_SHOW_TOOLBARS = r3_application_name = Demo Document Container parent = cl_container

error = error EXCEPTIONS * javabeannotsupported = 1 ex. nicht im Minisap OTHERS = 2. IF sy-subrc <> 0. BREAK-POINT. STOP. * Documentproxy holen CALL METHOD cl_control->get_document_proxy document_type = Excel.Sheet EXCEL * document_type = Word.Document WORD document_proxy = cl_document * Leeres Dokument erzeugen, CALL METHOD cl_document->create_document document_title = Demo für Enno sichtbar wenn nicht inplace open_inplace = X * OPEN_READONLY = * Alternativ: vorhandenes Dokument öffnen: * Mit der Methode cl_document->open_document kann man ein schon * vorhandenes Dokument ( etwa eine Vorlage öffnen ). * Falls du eine lokale Datei öffnen willst: URL muss mit file://' * beginnen dahinter dann gleich der Filename. Beliebt ist auch * eine URL aus dem BOR * Und Spreadsheetinterface drüberlegen CALL METHOD cl_document->get_spreadsheet_interface no_flush = error = error sheet_interface = cl_spreadsheet. sy-subrc = 0. LOOP AT t_errors INTO error. CALL METHOD error->raise_message type = E

EXCEPTIONS message_raised = 1 flush_failed = 2. ENDLOOP. ENDFORM. build_spreadsheet_interface *& Form build_named_areas FORM build_named_areas. DATA: error TYPE REF TO i_oi_error, rows TYPE i, columns TYPE i. columns = 5. DESCRIBE TABLE t_daten LINES rows. * Datenbereich benennen CALL METHOD cl_spreadsheet->insert_range_dim Reicht bei nächstem Aufruf name = ALL left = 2 top = 8 rows = rows columns = columns * Faul sein und Rangestabelle zurückgeben lassen CALL METHOD cl_spreadsheet->get_ranges_names error = error ranges = t_ranges. ENDFORM. build_named_areas *& Form set_data_into_sheet FORM set_data_into_sheet. DATA: error TYPE REF TO i_oi_error, wa_range LIKE LINE OF t_ranges, wa_daten LIKE LINE OF t_daten, wa_content LIKE LINE OF t_contents. * ACHTUNG es müssen ALLE einträge in der Rangelist versorg werden * und dort müssen auch ALLE Zellen ( auch wenn sie leer sind ) einmal * auftauchen DELETE t_ranges WHERE NOT name = ALL. CLEAR t_contents.

LOOP AT t_ranges INTO wa_range. CASE wa_range-name. WHEN ALL. LOOP AT t_daten INTO wa_daten. CLEAR wa_content. * Row und Column beziehen sich auf die linke obere Ecke des Bereichs wa_content-row = sy-tabix. wa_content-column = 1. wa_content-value = wa_daten-prog. wa_content-value = wa_daten-cnam. WRITE wa_daten-cdat TO wa_content-value. WRITE wa_daten-udat TO wa_content-value. WRITE wa_daten-utime TO wa_content-value. ENDLOOP. WHEN OTHERS. BREAK-POINT.STOP. sollte nicht vorkommen, wenn korrekt ENDCASE. ENDLOOP. * ACHTUNG! Formatierung VOR dem Setzen der Daten. Sonst kommt es bei * z.b. Datumsfeldern zu seltsamen Effekten. Zum Testen die * Formatierungsroutine mal HINTER die Datensetzenroutine setzen * und staunen. DATA t_cells TYPE soi_cell_table. DATA wa_cell LIKE LINE OF t_cells. wa_cell-top = 10. wa_cell-left = 3. wa_cell-rows = 5. wa_cell-columns = 2. wa_cell-front = 5. Blau siehe Doku in SAP-Bibliothek wa_cell-back = 27. wa_cell-bold = 1. wa_cell-number = 0. wa_cell-font = Courier New. wa_cell-size = -1. Default APPEND wa_cell TO t_cells. * Und ein paar Zellen formatieren Bereiche lassen sich mit einer * anderen Methode schnell komplett formatieren. CALL METHOD cl_spreadsheet->cell_format

cells = t_cells * Und jetzt die Daten in Spreadsheet schießen CALL METHOD cl_spreadsheet->set_ranges_data ranges = t_ranges contents = t_contents updating = -1 * Spaltenbreiten Optimieren CALL METHOD cl_spreadsheet->fit_widest no_flush = name = ALL ENDFORM. set_data_into_sheet *& Form free_objects FORM free_objects. *** Freigabe der Objekte IF NOT cl_document IS INITIAL. CALL METHOD cl_document->release_document. CALL METHOD cl_document->close_document. FREE cl_document. IF NOT cl_control IS INITIAL. CALL METHOD cl_control->destroy_control. FREE cl_control. FREE: cl_spreadsheet. CLEAR: cl_spreadsheet. FREE: cl_container. CLEAR: cl_container. ENDFORM. *& Module STATUS_9000 OUTPUT MODULE status_9000 OUTPUT.

SET PF-STATUS 9000. SET TITLEBAR 9000. ENDMODULE. STATUS_9000 OUTPUT *& Module USER_COMMAND_9000 INPUT MODULE user_command_9000 INPUT. CASE ok_code. WHEN BACK. PERFORM free_objects. SET SCREEN 0. LEAVE SCREEN. ENDCASE. ENDMODULE. USER_COMMAND_9000 INPUT Ablauflogik Dynpro 9000 PROCESS BEFORE OUTPUT. MODULE STATUS_9000. * PROCESS AFTER INPUT. MODULE USER_COMMAND_9000. Status 9000 Der PF-Status vom Dynpro 9000