WS_UPLOAD mit Kopfzerbrechen

Getting started ... Alles für einen gelungenen Start.
8 Beiträge • Seite 1 von 1
8 Beiträge Seite 1 von 1

WS_UPLOAD mit Kopfzerbrechen

Beitrag von Günther (ForumUser / 4 / 0 / 0 ) »
Hallo ABAP-Gemeinde,

bin noch ein ziemliches ABAP- Greenhorn :oops:
Ich möchte gerne Daten aus einer Exceltabelle
in eine SAP-Tabelle übernehmen, anscheinend übernehme ich dabei aber mich...
Folgender Versuch schlägt fehl:

REPORT Z_TAB_UPLOAD_ABL.
TABLES: T9LDF.

DATA: DATA_TAB(1024).
DATA: MyFILENAME like RLGRAP-FILENAME
VALUE 'C:\Eigene Dateien\9LDF0707.txt'.

DATA: MyFILETYPE LIKE RLGRAP-FILETYPE VALUE 'DAT'.

* Interne Tabelle für die Datenübernahme
DATA: Begin of WA_T9LDF occurs 10,
MANDT LIKE T9LDF-MANDT,
DFDOM like T9LDF-DFDOM,
DFTXT like T9LDF-DFTXT,
DFTXT_F LIKE T9LDF-DFTXT_F,
KAPLAF LIKE T9LDF-KAPLAF.
DATA: END OF WA_T9LDF.

* Erst einmal alle vorhandenen Einträge
* der T9LDF löschen
LOOP AT T9LDF.
DELETE T9LDF.
ENDLOOP.

START-OF-SELECTION.

CALL FUNCTION 'WS_UPLOAD' IN BACKGROUND TASK
EXPORTING
* CODEPAGE = ' '
FILENAME = MyFILENAME
FILETYPE = MyFILETYPE
* HEADLEN = ' '
* LINE_EXIT = ' '
* TRUNCLEN = ' '
* USER_FORM = ' '
* USER_PROG = ' '
* DAT_D_FORMAT = ' '
* IMPORTING
* FILELENGTH =
TABLES
DATA_TAB = WA_T9LDF.
* EXCEPTIONS
* CONVERSION_ERROR = 1
* FILE_OPEN_ERROR = 2
* FILE_READ_ERROR = 3
* INVALID_TYPE = 4
* NO_BATCH = 5
* UNKNOWN_ERROR = 6
* INVALID_TABLE_WIDTH = 7
* GUI_REFUSE_FILETRANSFER = 8
* CUSTOMER_ERROR = 9
* OTHERS = 10

* Fehlerroutine
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

Loop at wa_t9ldf.
* Interne Tabellenwerte auf dem Screen ausgeben.
Write: / wa_t9ldf-MANDT,
wa_t9ldf-DFDOM,
wa_t9ldf-DFTXT,
wa_t9ldf-DFTXT_F,
wa_t9ldf-KAPLAF.

* Zuweisung und Update
move wa_t9ldf to t9ldf.
insert t9ldf.
endloop.

END-OF-Selection.
___________________________________________

Vielleicht hat ja jemand ein funktionierendes Beispiel oder
einen heissen Tipp für mich armen Mensch.

Viele Grüsse und ein schönes Wochenende

Günther
Zuletzt geändert von Günther am 14.07.2003 15:40, insgesamt 1-mal geändert.

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Beitrag von Gast ( / / 0 / 3 ) »
Hi,

ich würde den FB WS_UPLOAD zunächst über die Transaction SE37 testen ob überhaupt die Daten aus Deiner Datei gelegen werden können.
Ich glaube es liegt daran dass Du den FB WS_UPLOAD in Deinem Programm mit "BACKGROUND TASK" aufrufst, bin aber nicht sicher. Ich würde ohne dies probieren.

Gruss, tomas


P.S. Löschen einer internen Table kann man auch so schreiben:
refresh T9LDF[].

Beitrag von Quentin ( / / 0 / 3 ) »
jo WS_UPLOAD läuft nur im Dialog, nicht im Batch. Des weiteren dran denken, daß der Tabellenparameter DATA_TAB unstrukturiert ist. Bevor ich die Daten wegschreibe, würde ich mir erst mal das Ergebnis anzeigen lassen.

Bei großen Datenmengen nicht mit WS_UPLOAD arbeiten, sondern mit den Befehlen OPEN DATASET etc. Die kann man auch im Batch benutzen.

Dankeschön

Beitrag von Günther (ForumUser / 4 / 0 / 0 ) »
Hallo tomas und Quentin,

es funktioniert jetzt (phew...),
neben anderen Kleinigkeiten lag's wohl hauptsächlich am
'Backkground Task'. Vielen Dank für eure nette Unterstützung.

___________________________________________________________
Zu tomas Bemerkung:
P.S. Löschen einer internen Table kann man auch so schreiben:
refresh T9LDF[].

Hm, ich lösche doch gar keine ITAB - T9LDF ist meine (Ziel-) Datenbanktabelle.
___________________________________________________________
Zu Quentin's Bemerkung:
Des weiteren dran denken, daß der Tabellenparameter DATA_TAB unstrukturiert ist.

Wenn denn T9LDF eine DB-Tabelle ist, dann ist doch auch DATA_TAB
strukturiert (die Deklaration mit like DB-Feld macht das doch?),
habe ich da etwas falsch verstanden?
___________________________________________________________

Viele Grüsse und einen schönen Abend

Günther

Struktur

Beitrag von Volker (ForumUser / 16 / 0 / 0 ) »
Hallo Günther,

noch ein kleiner Hinweis bezgl Upload. Bei der Uploadstruktur beziehst Du dich auf eine DDIC-Struktur, das ist auch gut so. Dann musst Du nur daran denken das die hochzuladene Datei genau dasselbe Formnat aufweist wie die angegebene Strukutur. Ferner musst Du darauf achten das in der Uploaddatei als Feldtrennzeichen auch der Tabulator genutzt wird. Nur in diesem Fall werden beim Upload die Felder der Struktur direkt gefüllt.
Sollte die Uploaddatei z.b. das Semikolon als Feldtrennzeichen nutzen klappt das nicht mehr.

und noch zwei Hinweise. Aus Gründen der Lesbarkeit würde ich einen move-corresponding zur Übertragung einer ganzen Struktur vorziehen. Es ist für dritte direkt erkennbar das es sich um eine Struktur handeln muss und nicht ein einzelnes Feld.
Zum löschen einer internen Tabelle reicht auch einfach: refresh itab. Ich mache zusätzlich auch noch immer einen clear itab. Damit wird der Kopfbereich der Tabelle gelöscht.
Gruß

Beitrag von Günther (ForumUser / 4 / 0 / 0 ) »
:lol: Hallo Volker,

jawoll, so war's mit der Fummlerei und dem gewünschten Textformat.
Habe nämlich die Daten aus einer Exceldatei "hochgeschaufelt".
Das war mit .xls erfolglos, mit umbenennen derselben in .txt natürlich auch - aber mit "Speichern unter" und "Text(Tabs getrennt *.txt" war ich wohl auf dem richtigen Dampfer.
Dass die Tabelle auf der SAP-Seite strukturmässig passen muss,
ist mir schon klar (deshalb mein write zur Sichtkontrolle des Uploadergebnisses).

Sicherheitshalber, ist das so gemeint?

* Zuweisung und Update
move-corresponding wa_t9ldf to t9ldf.
insert t9ldf.
endloop.

:?: Frage zum Löschen einer internen Tabelle:
Da du der zweite bist, der mich darauf aufmerksam macht,
muss ich die denn überhaupt löschen (kommt doch in meinem Abap-Gehversuch gar nicht vor)?

Macht man das aus Stil- bzw. Vorsichtsgründen
(hier direkt vor dem upload)?

Gruss und schönen Tag noch

Günther

interne Tabellen

Beitrag von Volker (ForumUser / 16 / 0 / 0 ) »
Hallo Günther,

das mit dem löschen der internen Tabellen mache ich aus Sicherheitsgründen. Eigentlich sollte es so sein, dass Einträge aus Datenbanktabellen eigentlich immer erst in interne Tabellen geladen werden. Einfach aus Performance gründen. Um sicherzustellen das keine "alten" Werte in der internen Tabelle sind, lösche ich vor einem erneuten füllen der internen Tabelles diese zuerst mit clear und refresh.

In deinem Fall macht es natürlich keinen Sinn, bzw ist egal. Aber Du solltest Dich von vornherein dazu zwingen. Nachher geht das dann in "Fleisch und Blut" über.
Gruß

Dankeschön

Beitrag von Günther (ForumUser / 4 / 0 / 0 ) »
8) Hi Volker,

vielen Dank für die nette Unterstützung -
dann werde ich mir das sofort angewöhnen!

Gruss und einen schönen Tag

Günther

Seite 1 von 1

Vergleichbare Themen

3
Antw.
3713
Views
PDF Upload
von kaim77 » 26.06.2012 16:16 • Verfasst in ABAP Objects®
2
Antw.
1329
Views
Upload/Download
von alex1986 » 27.02.2012 14:53 • Verfasst in ABAP® für Anfänger
3
Antw.
1744
Views
Upload mit Feldnamenliste ?
von SkyHobbit » 03.05.2005 07:07 • Verfasst in ABAP® Core
2
Antw.
8293
Views
XML Download und Upload
von Alpha » 12.11.2008 13:53 • Verfasst in ABAP Objects®
10
Antw.
10426
Views
Upload aus Excel
von RiffRaff » 07.07.2005 08:57 • Verfasst in ABAP® für Anfänger

Über diesen Beitrag


Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.