Generischer Excel-Upload

Ähnliche Dokumente
Standardtext ins PDF-Format konvertieren

Includes/ Programme generieren

Erzeugung eines Dokuments

Demo zu Desktop Office Integration

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

ajanzen.com ALV-Grid-Anzeige mit eingabebereiten Zellen

Der Beginn einer wunderbaren Freundschaft von Stefan Schnell

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

1. Schritt: Anlegen des Musters

A.4 Beispiel zum -Versand über Smart Forms

ajanzen.com Excel-Upload

6 OLE2 und MS Office Integration

Kurzbeschreibung. Quelltext

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

ajanzen.com CSV-Upload

REPORT Z_NEBP_RAHMEN.

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

Datenbankablage für ArchiveLink einrichten

ajanzen.com Aufruf eines Pop-Up-Containers

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

10.6 Programmier-Exits für Workitems

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

Data exchange with Prosonic Flow 93T

PeakTech Zeitprogramm erstellen über Excel - Beispiel / Timed programs with Excel Example

Dynamisches SQL. Folien zum Datenbankpraktikum Wintersemester 2009/10 LMU München

Kapitel 4 Dynamisches SQL

Kapitel 4 Dynamisches SQL

ajanzen.com Beispiele für den Umgang mit Feldsymbolen

Access 2010 Programmierung Import und Export nach Excel

Java Tools JDK. IDEs. Downloads. Eclipse. IntelliJ. NetBeans. Java SE 8 Java SE 8 Documentation

Whitepaper. Produkt: combit Relationship Manager. Datensatzhistorie mit dem SQL Server 2000 und combit GmbH Untere Laube Konstanz

Anwendungsentwicklung Datenbanken SQL. Stefan Goebel

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

4 Schleifen und Dateien

Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin

Übersicht der wichtigsten MySQL-Befehle

MySQL Queries on "Nmap Results"

Dateneingabe und Transformation Übersicht

Einführung in QtiPlot

desk.modul : WaWi- Export

Übungsblatt 8- Lösungsvorschlag

Zeilen in SAS-Datensatz einfügen

ajanzen.com Vorgehen zum Erstellen eines Dynpro- Splitters

Abfragen (Queries, Subqueries)

Variable. Interaktive Skripte

Metadaten oder Metainformationen sind Daten, die Informationen über Merkmale anderer Daten enthalten, aber nicht diese Daten selbst (Wikipedia)

ajanzen.com ALV-Anzeige mit einem Inline-Button

Erstellen einer DVD Movie-Datenbank Version 1.02

Access und die andern (Office) Programme. Armin Hess

Arbeit mit zusammengesetzten Datentypen

X83-Konverter Instructions

Strings. Daten aus Dateien einlesen und in Dateien speichern.

Erzeugung und Veränderung von Tabellen

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

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

MySQL-Befehle. In diesem Tutorial möchte ich eine kurze Übersicht der wichtigsten Befehle von MySQL geben.

FLEXIMPORT. Vollständig: Name ItemNr EAN Fedas HG UG Farbe Größe Brand EK VK Menge

Interoperabilität mit Office-Anwendungen (1)

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

Fakultät für Informatik & Wirtschaftsinformatik DB & IS II - SS Metadaten

SAP-Daten per HTML anzeigen

Word-CRM-Upload-Button. User manual

Funktionen in Python

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

Aufbau eines dynamischen ETL Frameworks auf Basis eines PL/SQL Codegenerators

Stream EDitor SED und Reguläre Ausdrücke

Skripte schreiben. Überblick SQL*Plus. Einloggen in SQL*Plus. Tabellenstrukturen anzeigen

Funktionsübersicht. Beschreibung der zentralen Funktionen von PLOX

A&O ExPra Datenauswertung

Die Datenmanipulationssprache SQL

Ein- und Ausgabe mit Dateien

Seminar 2. SQL - DML(Data Manipulation Language) und. DDL(Data Definition Language) Befehle.

Datenbankadministration

How-To-Do. OPC-Server with MPI and ISO over TCP/IP Communication. Content. How-To-Do OPC-Server with MPI- und ISO over TCP/IP Communication

FIVE1 GmbH & Co. KG SAP Partner Port Altrottstraße Walldorf T: FIVE1 GmbH & Co. KG Essence of quality

Tube Analyzer LogViewer 2.3

Zugriff auf Firebird-Datenbanken mit PHP. Daniel de West DB-Campus-Treffen 15. Januar 2004

Datenbank und Tabelle mit SQL erstellen

Import von Text-Dateien. Einzelne Wörter einlesen.

Excel + VBA. Ergänzungen. Kapitel 1 Einführung in VBA Sequentielle Textdateien HARALD NAHRSTEDT. Erstellt am

QMF Tabelle Q.OBJECT_DATA in DB2

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

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

Hochschule Darmstadt Informatik-Praktikum (INF 1) WS 2014/2015 Wirtschaftsingenieur Bachelor 4. Aufgabe Datenstruktur, Dateieingabe und -ausgabe

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

Übung Statistik I Statistik mit Stata SS Wiederholung und Probeklausur

Übung PL/SQL Trigger Lösungen

Tipps & Tricks. Eine Standardfunktionalität ist das Erstellen von Grafischen Basisobjekten auf dem Patran Viewport.

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

Use of the LPM (Load Program Memory)

rechtsbündige Leerzeichen mit einlesen im Datastep

Getting started with MillPlus IT V530 Winshape

DB2 SQL, der Systemkatalog & Aktive Datenbanken

Nachdem Sie die Datei (z.b. t330usbflashupdate.exe) heruntergeladen haben, führen Sie bitte einen Doppelklick mit der linken Maustaste darauf aus:

Transkript:

Generischer Excel-Upload Mit diesem Programm können Sie relativ einfach Daten, die in Excel-Tabellen gespeichert sind, in eine Tabelle geladen werden. Es wird dafür ein Excel-Objekt erzeugt und die Exceltabelle im Hintergrund ausgelesen. Anhand der Eigenschaften der R/3-Tabelle wird ein Subroutinenpool erstellt, der das Einlesen und Speichern vornimmt. Info Bei Programmstart muss die Excel-Tabelle angegeben werden sowie die Zeile und Spalte, bei denen angefangen werden soll, die Daten einzulesen. Zudem muss natürlich auch die Dictionary-Tabelle angegeben werden, in die die Daten gespeichert werden sollen. Die Daten werden Zeilenweise von links nach rechts eingelesen. Sobald eine leere Zeile kommt, wird das Einlesen abgebrochen. Technische Informationen Quellcode Es wird eine rudimentäre Anpassung der Daten in der Routine GET_VALUE vorgenommen. Dabei wird die Formatierung in der Excel-Tabelle berücksichtigt. Diese Routine sollten Sie an Ihre eigenen Bedürfnisse anpassen. Es wird dynamisch ein Subroutinen-Pool erzeugt. Dieser beinhaltet die Routine UPLOAD_TABLE. Sollte die Generierung fehlschlagen, wird der Fehler ausgegeben. Es wird das Makro _ASCL benutzt (Add SourceCodeLine), um Quelltext an die interne Tabelle GT_QUELLTEXT zu hängen. Das Makro macht das Erzeugen sehr übersichtlich und bequem. Zudem können Variablen, wie Programmname oder Dictionarytabelle gleich ersetzt werden. Das Programm erhebt keinen Anspruch auf generelle Fehlerfreiheit! Es beinhaltet alle notwendigen Funktionen, die eine Anpassung an eigene/ spezielle Bedürfnisse einfach machen. REPORT ZGUPL. *********************************************************************** * Generischer Upload von Excel-Tabellen in R/3-Tabellen *********************************************************************** INCLUDE OLE2INCL. DATA: GV_SPALTE TYPE I, GV_ZEILE TYPE I, GV_FORMAT(30) TYPE C, GV_TYPE TYPE C, GV_VALUE(1000) TYPE C, GV_LINE(1000) TYPE C, GV_LEN TYPE I,

GV_TYPE_P(8) TYPE P DECIMALS 4, GV_TYPE_N(100) TYPE N, GV_TYPE_C(100) TYPE N, *** Subroutinenpool: GV_SUBROUTINEPOOL(30), GV_ERR_MESSAGE(200), GV_ERR_LINE TYPE I, GT_QUELLTEXT TYPE STANDARD TABLE OF LINE72, GV_QUELLTEXT TYPE LINE72, GT_DD03L LIKE DD03L OCCURS 0 WITH HEADER LINE, *** Excel h_excel TYPE ole2_object, Excel object h_book TYPE ole2_object, list of workbooks h_active_window TYPE ole2_object, cell_out TYPE ole2_object, cell cell_in TYPE ole2_object. cell *** Makro DEFINE _ASCL. *** Add Source-Code-Line *** GV_LINE = &1. *** Tabellenname ersetzen REPLACE %TAB% WITH P_R3TAB INTO GV_LINE. CONDENSE GV_LINE. *** Programmname für externen Perform-Aufruf ersetzen REPLACE %REPID% WITH SY-REPID INTO GV_LINE. CONDENSE GV_LINE. *** ~Tilde durch Leerzeichen ersetzen TRANSLATE GV_LINE USING ~. *** Doppelte Anführungszeichen durch einfache ersetzen TRANSLATE GV_LINE USING. *** Quellcode anhängen APPEND GV_LINE TO GT_QUELLTEXT. END-OF-DEFINITION. *** Selektionsbild PARAMETERS: P_XLSDAT TYPE LOCALFILE DEFAULT C:temptest.xls, Excel-Datei P_XLSCOL TYPE N DEFAULT 1, Start bei Spalte P_XLSROW TYPE N DEFAULT 2, Start bei Zeile P_R3TAB TYPE TABELLE DEFAULT ZTEST. R3-Tabelle *** F4-Hilfe für Dateiname AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_XLSDAT. CALL FUNCTION F4_FILENAME EXPORTING PROGRAM_NAME = SYST-CPROG DYNPRO_NUMBER = SYST-DYNNR

FIELD_NAME = P_XLSDAT IMPORTING FILE_NAME = P_XLSDAT. *** Programmstart START-OF-SELECTION. SELECT * FROM DD03L INTO TABLE GT_DD03L WHERE TABNAME = P_R3TAB. IF SY-SUBRC > 0. MESSAGE S000(VZ) WITH Tabelle P_R3TAB existiert nicht!. SORT GT_DD03L BY POSITION. PERFORM SUBROUTINEPOOL_BUILD. PERFORM SUBROUTINEPOOL_START. * FORM START_EXCEL * FORM START_EXCEL. * start Excel CREATE OBJECT h_excel EXCEL.APPLICATION. * Excel nicht sichtbar ausführen SET PROPERTY OF H_EXCEL Visible = 0. * Arbeitsblatt auswählen CALL METHOD OF h_excel Workbooks = h_book. * bestehendes File öffnen CALL METHOD OF h_book OPEN EXPORTING #1 = P_XLSDAT. * FORM GET_VALUE * FORM GET_VALUE USING F_ROW F_COL CHANGING F_VALUE. DESCRIBE FIELD F_VALUE TYPE GV_TYPE LENGTH GV_LEN. * * Zelle, aus der Ergebnis gelesen wird (C1) CALL METHOD OF h_excel Cells = cell_in EXPORTING #1 = F_ROW Zeile #2 = F_COL. Spalte * Zellinhalt lesen

GET PROPERTY OF CELL_IN Value = GV_VALUE. IF GV_VALUE = SPACE. CLEAR F_VALUE. * Zahlenformat GET PROPERTY OF CELL_IN NumberFormat = GV_FORMAT. CASE GV_TYPE. WHEN C. CASE GV_FORMAT. WHEN 0. WRITE GV_TYPE_P TO GV_TYPE_C(GV_LEN) DECIMALS 0 RIGHT-JUSTIFIED. IF GV_TYPE_P > 0. SHIFT GV_TYPE_C BY 1 PLACES RIGHT. OVERLAY GV_TYPE_C WITH GV_TYPE_N. F_VALUE = GV_TYPE_C. WHEN 0.0. WRITE GV_TYPE_P TO GV_TYPE_C(GV_LEN) DECIMALS 1 RIGHT-JUSTIFIED. IF GV_TYPE_P > 0. SHIFT GV_TYPE_C BY 1 PLACES RIGHT. OVERLAY GV_TYPE_C WITH GV_TYPE_N. F_VALUE = GV_TYPE_C. WHEN 0.00. WRITE GV_TYPE_P TO GV_TYPE_C(GV_LEN) DECIMALS 2 RIGHT-JUSTIFIED. IF GV_TYPE_P > 0. SHIFT GV_TYPE_C BY 1 PLACES RIGHT. OVERLAY GV_TYPE_C WITH GV_TYPE_N. F_VALUE = GV_TYPE_C. WHEN General. WHEN @. Text IF GV_VALUE CO.0123456789. ** Falls eine Zahl als Text formatiert ist, steht in ** GV_VALUE: 1234.00000. Dies muss umgewandelt werden in 1234. WRITE GV_TYPE_P TO GV_VALUE DECIMALS 0 NO-GROUPING LEFT-JUSTIFIED. WHEN OTHERS. ENDCASE.

WHEN OTHERS. ENDCASE. Value <> space * FORM STOPP_EXCEL * FORM STOPP_EXCEL. * Excel beenden * * see http://support.microsoft.com/default.aspx?scid=kb;de;503541 * Close without saving * get active window CALL METHOD OF h_excel ACTIVEWINDOW = h_active_window. * set active_window visible SET PROPERTY OF h_active_window VISIBLE = 1. * * close active_window without saving CALL METHOD OF h_active_window CLOSE EXPORTING #1 = 0. * close Excel CALL METHOD OF h_excel QUIT. FREE OBJECT: h_excel, h_active_window. * FORM SUBROUTINEPOOL_BUILD * FORM SUBROUTINEPOOL_BUILD. _ASCL: REPORT zzz., FORM UPLOAD_TABLE USING value(f_zeile), value(f_spalte)., DATA gt_itab LIKE %TAB% OCCURS 0 WITH HEADER LINE., DATA lv_zeile TYPE i., DATA lv_spalte TYPE i., PERFORM start_excel IN PROGRAM %REPID%., LV_ZEILE = f_zeile., Do., LV_SPALTE = f_spalte., NEW-LINE., CLEAR GT_ITAB.. LOOP AT GT_DD03L.

CHECK GT_DD03L-DATATYPE <> CLNT. _ASCL: PERFORM GET_VALUE in Program %REPID%, USING lv_zeile lv_spalte CHANGING. CONCATENATE GT_ITAB- GT_DD03L-FIELDNAME. INTO GV_QUELLTEXT. _ASCL GV_QUELLTEXT. _ASCL WRITE. _ASCL GV_QUELLTEXT. _ASCL ADD 1 TO lv_spalte.. ENDLOOP. _ASCL: IF GT_ITAB IS INITIAL., WRITE Ende. COLOR col_positive., EXIT.,, INSERT INTO %TAB% VALUES GT_ITAB., WRITE sy-subrc COLOR = sy-subrc., Add 1 to lv_zeile., Enddo., PERFORM STOPP_EXCEL IN PROGRAM %REPID%.,. * FORM SUBROUTINEPOOL_START * FORM SUBROUTINEPOOL_START. *** Subroutinenpool mit Unterprogramm UPLOAD_TABLE generieren GENERATE SUBROUTINE POOL GT_QUELLTEXT NAME GV_SUBROUTINEPOOL MESSAGE GV_ERR_MESSAGE LINE GV_ERR_LINE. IF SY-SUBRC = 0. *** Unterprogramm aufrufen PERFORM UPLOAD_TABLE IN PROGRAM (GV_SUBROUTINEPOOL) USING P_XLSROW P_XLSCOL. *** fehler FORMAT COLOR COL_TOTAL. WRITE: / Fehler beim Generieren des Subroutinenpools:, / GV_ERR_MESSAGE, / Zeile, GV_ERR_LINE, / Returncode:, SY-SUBRC. ULINE. LOOP AT GT_QUELLTEXT INTO GV_QUELLTEXT. IF SY-TABIX = GV_ERR_LINE. FORMAT COLOR COL_NEGATIVE. FORMAT COLOR OFF.

WRITE / GV_QUELLTEXT. ENDLOOP.