TRANSFER von mehrere Struktur

Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

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

TRANSFER von mehrere Struktur

Beitrag von autohandel7 (Specialist / 186 / 67 / 0 ) »
Hi Experten,

ich brauche Hilfe, und zwar
ich habe eine interne Tabelle: lit_lieferung , ungefer 1400 Sätze.

Dann habe ich vier Struktur für Schnitschtelle:

lwa_z6mo000hs
lwa_z6do013as1
lwa_z6do013as2
lwa_z6do013as5
die soll ich einfüllen von meine Interen Tabelle und dan ein datei: v_fname generieren und auf serever einlegen,
wenn ich dass mache, schreibt mir nur ein satz(letze von 1400) in mein Datei, aber soll ein datei mit ca1400 sätze sein.
Wo liegd die fehler? Vielen Dank im Voraus.

*----------------------------------------------------------------------*
* *
*----------------------------------------------------------------------*
* Füllen des File_Z6DO013AS1 für Lieferungen --> WMS
************************************************************************
LOOP AT lit_lieferung ASSIGNING <lwa_lieferung>.
FIELD-SYMBOLS <lwa_z6do013as1> TYPE z6do013as1.

MOVE: c_vorgang_201 to lwa_z6do013as1-wms_vorgang,
c_wms_mandant_0052 to lwa_z6do013as1-wms_mandant,
<lwa_lieferung>-VBELN to lwa_z6do013as1-lrnr,
<lwa_lieferung>-PSTYv to lwa_z6do013as1-sap_lfart.

append lwa_z6do013as1 to lit_z6do013as1.


*----------------------------------------------------------------------*
* *
*----------------------------------------------------------------------*
* Füllen des File_Z6DO013AS2 für Lieferungen --> WMS
************************************************************************
FIELD-SYMBOLS <lwa_z6do013as2> TYPE z6do013as2.

MOVE: c_vorgang_201 to lwa_z6do013as2-wms_vorgang,
c_wms_mandant_0052 to lwa_z6do013as2-wms_mandant,
<lwa_lieferung>-VBELN to lwa_z6do013as2-lrnr,
<lwa_lieferung>-PSTYv to lwa_z6do013as2-sap_auart,
<lwa_lieferung>-VGBEL to lwa_z6do013as2-sapaufnr,
<lwa_lieferung>-BSTDK_E to lwa_z6do013as2-opco_best_dat.
append lwa_z6do013as2 to lit_z6do013as2.
*----------------------------------------------------------------------*
* *
*----------------------------------------------------------------------*
* Füllen des File_Z6DO013AS2 für Lieferungen --> WMS
************************************************************************
FIELD-SYMBOLS <lwa_z6do013as5> TYPE z6do013as5.

MOVE: c_vorgang_201 to lwa_z6do013as5-wms_vorgang,
c_wms_mandant_0052 to lwa_z6do013as5-wms_mandant,
<lwa_lieferung>-VBELN to lwa_z6do013as5-lrnr,
<lwa_lieferung>-POSNR to lwa_z6do013as5-lrnrp,
<lwa_lieferung>-VGBEL to lwa_z6do013as5-sapaufnr,
<lwa_lieferung>-VGBEL to lwa_z6do013as5-opco_aufnr,
<lwa_lieferung>-VGPOS to lwa_z6do013as5-sapaufpos,
<lwa_lieferung>-MATNR to lwa_z6do013as5-article_number,
<lwa_lieferung>-LFIMG to lwa_z6do013as5-menged,
<lwa_lieferung>-VGPOS to lwa_z6do013as5-opco_auftr_pos_nr.


append lwa_z6do013as5 to lit_z6do013as5.

*----------------------------------------------------------------------*
* *
*----------------------------------------------------------------------*
* Füllen des File_Headers für Lieferungen --> WMS
************************************************************************
FIELD-SYMBOLS <lwa_z6mo000hs> TYPE z6mo000hs.
MOVE: c_satzart TO lwa_z6mo000hs-satzart,
c_intf_name TO lwa_z6mo000hs-intf_name.

CONCATENATE sy-datum sy-uzeit INTO lwa_z6mo000hs-intf_datum_zeit.
*----------------------------------------------------------------------*



endloop.




sysid = sy-sysid.
TRANSLATE sysid TO LOWER CASE.

CONCATENATE '/' sysid '/sapif/common/tmp/' 'test' '.wrk' INTO v_fname. "sy-cprog
OPEN DATASET v_fname FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.



TRANSFER lwa_z6mo000hs TO v_fname LENGTH 138.
TRANSFER lwa_z6do013as2 TO v_fname LENGTH 138.
TRANSFER lwa_z6do013as5 TO v_fname LENGTH 138.
TRANSFER lwa_z6do013as1 TO v_fname LENGTH 138.
CLOSE DATASET v_fname.

Data text(200) type c.

OPEN DATASET v_fname FOR INPUT IN TEXT MODE.

READ DATASET v_fname INTO text.
WRITE / text.
READ DATASET v_fname INTO text.
WRITE text.
READ DATASET v_fname INTO text.
WRITE text.
READ DATASET v_fname INTO text.
WRITE text.

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


Re: TRANSFER von mehrere Struktur

Beitrag von Thomas17 (Specialist / 157 / 17 / 14 ) »
Moin,
Du machst den Transfer nur von einer Zeile in die Datei.
lwa* ist eine Struktur.
autohandel7 hat geschrieben: CONCATENATE '/' sysid '/sapif/common/tmp/' 'test' '.wrk' INTO v_fname. "sy-cprog
OPEN DATASET v_fname FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.
TRANSFER lwa_z6mo000hs TO v_fname LENGTH 138.
TRANSFER lwa_z6do013as2 TO v_fname LENGTH 138.
TRANSFER lwa_z6do013as5 TO v_fname LENGTH 138.
TRANSFER lwa_z6do013as1 TO v_fname LENGTH 138.
CLOSE DATASET v_fname.

WRITE text.
Das sollte ungefähr so aussehen:
open
loop
transfer
endloop
close

Re: TRANSFER von mehrere Struktur

Beitrag von autohandel7 (Specialist / 186 / 67 / 0 ) »
Danke, abe ich soll satz für satz in datei schreiben gleich von 4 Struktur. ungefer so sein:

000LIEFERUNG 20140818133134
201005200834239RLN 45006129
20100520083423900004500612900004500612980000 000000000051317477 10.000
201005200834239RLN

000LIEFERUNG 20140818133134
201005200834239RLN 45006130
20100520083423900004500612900004500612980000 000000000051317477 11.000
201005200834239RLN

000LIEFERUNG 20140818133134
201005200834239RLN 45006131
20100520083423900004500612900004500612980000 000000000051317477 15.000
201005200834239RLN

Re: TRANSFER von mehrere Struktur

Beitrag von JHM (Top Expert / 1211 / 2 / 202 ) »
autohandel7 hat geschrieben:Danke, abe ich soll satz für satz in datei schreiben gleich von 4 Struktur. ungefer so sein:
Deine Programmlogik passt da aber nicht!

Du baust dir vier ITABs auf, jede mit einem Segment. Diese brauchst du aber so nicht, da diese nur sehr umständlich in der richtigen Reihenfolge in die Datei zu übertragen sind.

Einfacher ist es mit der gegebenen Programmlogik:

Code: Alles auswählen.

OPEN FILE.

LOOP AT quelldaten.
  Füllen lwa_z6do013as1
  TRANSFER lwa_z6do013as1.

  Füllen  lwa_z6do013as2.
  Transfer lwa_z6do013as2.

  ..."für jede benötigte Zeile ein Füllen/Transfer
ENDLOOP.

CLOSE FILE.
Gruß Hendrik

Re: TRANSFER von mehrere Struktur

Beitrag von Thomas17 (Specialist / 157 / 17 / 14 ) »
autohandel7 hat geschrieben:Danke, abe ich soll satz für satz in datei schreiben gleich von 4 Struktur. ungefer so sein:
...
Na dann halt:
open
loop
transfer
transfer
transfer
transfer
endloop
close

;)

Re: TRANSFER von mehrere Struktur

Beitrag von autohandel7 (Specialist / 186 / 67 / 0 ) »
Danke für Hilfe, leider bekomme ich jetz andere Fehler:

Kategorie ABAP Programmierfehler
Laufzeitfehler DATASET_CANT_OPEN
Ausnahme CX_SY_FILE_OPEN
ABAP Programm ZMM_WMS_LIEFERUNGEN
Anwendungskomponente Nicht zugeordnet
Datum und Zeit 19.08.2014 14:42:23



Kurztext
Datei "/VT1/sapif/common/tmp/test.wrk" kann nicht geöffnet werden.
Die Datei ist nie geofnet, und frue link funktioniert.
sy-subrc =8
Fehker Passirt Hier Satz 598:

596 TRANSLATE sysid TO LOWER CASE.
597
>>>> TRANSFER <lwa_z6mo000hs> TO v_fname LENGTH 138.
599
600
601 FIELD-SYMBOLS <lwa_z6do013as1> TYPE z6do013as1.
602 *LOOP at lit_z6do013as1 ASSIGNING <lwa_z6do013as1>.
603
604
605 MOVE: c_vorgang_201 to lwa_z6do013as1-wms_vorgan
606 c_wms_mandant_0052 to lwa_z6do013as1-wms_mandant,
607 <lwa_lieferung>-VBELN to lwa_z6do013as1-lrnr,
608 <lwa_lieferung>-PSTYv to lwa_z6do013as1-sap_lfart.


Ich habe so gemacht:

sysid = sy-sysid.
CONCATENATE '/' sysid '/sapif/common/tmp/' 'test' '.wrk' INTO v_fname. "sy-cprog
OPEN DATASET v_fname FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.


*----------------------------------------------------------------------*
* *
*----------------------------------------------------------------------*
* Füllen des File_Z6DO013AS1 für Lieferungen --> WMS
************************************************************************
LOOP AT lit_lieferung into lwa_lieferung.

*----------------------------------------------------------------------*
* *
*----------------------------------------------------------------------*
* Füllen des File_Headers für Lieferungen --> WMS
************************************************************************
FIELD-SYMBOLS <lwa_z6mo000hs> TYPE z6mo000hs.
MOVE: c_satzart TO lwa_z6mo000hs-satzart,
c_intf_name TO lwa_z6mo000hs-intf_name.

CONCATENATE sy-datum sy-uzeit INTO lwa_z6mo000hs-intf_datum_zeit.
*----------------------------------------------------------------------*

TRANSLATE sysid TO LOWER CASE.

TRANSFER <lwa_z6mo000hs> TO v_fname LENGTH 138.


FIELD-SYMBOLS <lwa_z6do013as1> TYPE z6do013as1.
*LOOP at lit_z6do013as1 ASSIGNING <lwa_z6do013as1>.


MOVE: c_vorgang_201 to lwa_z6do013as1-wms_vorgang,
c_wms_mandant_0052 to lwa_z6do013as1-wms_mandant,
<lwa_lieferung>-VBELN to lwa_z6do013as1-lrnr,
<lwa_lieferung>-PSTYv to lwa_z6do013as1-sap_lfart.

append lwa_z6do013as1 to lit_z6do013as1.

TRANSFER lwa_z6do013as1 TO v_fname LENGTH 138.

*----------------------------------------------------------------------*
* *
*----------------------------------------------------------------------*
* Füllen des File_Z6DO013AS2 für Lieferungen --> WMS
************************************************************************
FIELD-SYMBOLS <lwa_z6do013as2> TYPE z6do013as2.

MOVE: c_vorgang_202 to lwa_z6do013as2-wms_vorgang,
c_wms_mandant_0052 to lwa_z6do013as2-wms_mandant,
<lwa_lieferung>-VBELN to lwa_z6do013as2-lrnr,
<lwa_lieferung>-PSTYv to lwa_z6do013as2-sap_auart,
<lwa_lieferung>-VGBEL to lwa_z6do013as2-sapaufnr,
<lwa_lieferung>-BSTDK_E to lwa_z6do013as2-opco_best_dat.
append lwa_z6do013as2 to lit_z6do013as2.


TRANSFER lwa_z6do013as2 TO v_fname LENGTH 138.
*----------------------------------------------------------------------*
* *
*----------------------------------------------------------------------*
* Füllen des File_Z6DO013AS2 für Lieferungen --> WMS
************************************************************************
FIELD-SYMBOLS <lwa_z6do013as5> TYPE z6do013as5.

MOVE: c_vorgang_205 to lwa_z6do013as5-wms_vorgang,
c_wms_mandant_0052 to lwa_z6do013as5-wms_mandant,
<lwa_lieferung>-VBELN to lwa_z6do013as5-lrnr,
<lwa_lieferung>-POSNR to lwa_z6do013as5-lrnrp,
<lwa_lieferung>-VGBEL to lwa_z6do013as5-sapaufnr,
<lwa_lieferung>-VGBEL to lwa_z6do013as5-opco_aufnr,
<lwa_lieferung>-VGPOS to lwa_z6do013as5-sapaufpos,
<lwa_lieferung>-MATNR to lwa_z6do013as5-article_number,
<lwa_lieferung>-LFIMG to lwa_z6do013as5-menged,
<lwa_lieferung>-VGPOS to lwa_z6do013as5-opco_auftr_pos_nr.


append lwa_z6do013as5 to lit_z6do013as5.

TRANSFER lwa_z6do013as5 TO v_fname LENGTH 138.


endloop.
CLOSE DATASET v_fname.

Re: TRANSFER von mehrere Struktur

Beitrag von Thomas17 (Specialist / 157 / 17 / 14 ) »
autohandel7 hat geschrieben:Danke für Hilfe, leider bekomme ich jetz andere Fehler:
Laufzeitfehler DATASET_CANT_OPEN
Ausnahme CX_SY_FILE_OPEN
Hi,
der Fehler sagt, dass die Datei aber noch auf ist.
Am besten die Datei mal komplett vom Server löschen.
Und nochmal versuchen.
Grüße

Re: TRANSFER von mehrere Struktur

Beitrag von autohandel7 (Specialist / 186 / 67 / 0 ) »
Thomas17 hat geschrieben:
autohandel7 hat geschrieben:Danke für Hilfe, leider bekomme ich jetz andere Fehler:
Laufzeitfehler DATASET_CANT_OPEN
Ausnahme CX_SY_FILE_OPEN
Hi,
der Fehler sagt, dass die Datei aber noch auf ist.
Am besten die Datei mal komplett vom Server löschen.
Und nochmal versuchen.
Grüße

Danke, ich hab schon probiert die Name von Datei ändern, bekomme ich gleiche Fehler, die alle Rechte habe ich auch, weil wenn ich ohne loop mache , bekomme ich Datei mit letzte Eintrag. Aber ich brauche alle anträge aus Tabelle.

Re: TRANSFER von mehrere Struktur

Beitrag von JHM (Top Expert / 1211 / 2 / 202 ) »
autohandel7 hat geschrieben:Danke, ich hab schon probiert die Name von Datei ändern, bekomme ich gleiche Fehler, die alle Rechte habe ich auch, weil wenn ich ohne loop mache , bekomme ich Datei mit letzte Eintrag. Aber ich brauche alle anträge aus Tabelle.
EinSatzAusgabe:

Code: Alles auswählen.

sysid = sy-sysid.
TRANSLATE sysid TO LOWER CASE.

CONCATENATE '/' sysid '/sapif/common/tmp/' 'test' '.wrk' INTO v_fname. "sy-cprog
OPEN DATASET v_fname FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.
LoopAusgabe:

Code: Alles auswählen.

sysid = sy-sysid.
CONCATENATE '/' sysid '/sapif/common/tmp/' 'test' '.wrk' INTO v_fname. "sy-cprog
OPEN DATASET v_fname FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.
Such den Unterschied ;-) (manche Dateisysteme sind CaseSensitiv).


Dann schau dir mal den Zusatz MESSAGE msg beim OPEN DATASET in der F1-Hilfe an:

Code: Alles auswählen.

DATA mess TYPE string. 

OPEN DATASET `` FOR INPUT IN BINARY MODE MESSAGE mess. 

IF sy-subrc = 8. 
  MESSAGE mess TYPE 'I'. 
ENDIF. 
Der Zusatz macht dir die Fehleranlyse leichter.

Folgende Benutzer bedankten sich beim Autor JHM für den Beitrag:
autohandel7

Gruß Hendrik

Seite 1 von 1

Vergleichbare Themen

4
Antw.
4272
Views
struktur transfer
von kostonstyle » 22.05.2008 11:09 • Verfasst in ABAP® für Anfänger
1
Antw.
2486
Views
Open Dataset, Transfer, Close Dataset.Transfer unvollständig
von mari » 25.09.2007 09:28 • Verfasst in ABAP® Core
1
Antw.
1267
Views
Transfer
von Gast » 24.11.2005 10:42 • Verfasst in ABAP® Core
25
Antw.
4111
Views
Transfer von Tabelleninhalten
von debianfan » 31.01.2019 20:55 • Verfasst in ABAP® für Anfänger
2
Antw.
2442
Views
GUI_DOWNLOAD und TRANSFER
von Meg » 03.05.2012 16:20 • Verfasst in ABAP® für Anfänger

Über diesen Beitrag


Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

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.