Download aus TemSe mittels OPEN DATASET (oder Alternative?)

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

Download aus TemSe mittels OPEN DATASET (oder Alternative?)

Beitrag von h3ld (ForumUser / 4 / 0 / 0 ) »
Hallo Community,

ich will Daten aus der TemSe herunterladen.
Mit der Methode cl_gui_frontend_services=>gui_download funtkioniert dies auch wie gewünscht. Jedoch soll der Download im Batch passieren.

Dafür verwende ich OPEN DATASET.
Dies funktioniert zwar auch, allerdings eingeschränkt.
Die Datei ist falsch codiert. Statt dem Wert 341 wird in der Datei vor jede Zahl eine 3 gehängt, sodass das Ergebnis 333431 ist.
Wie kann ich dieses Problem lösen?
Gibt es weitere Möglichkeiten für einen Download, bei dem ich die Codepage mitgeben kann?

Grüße
Peter

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


Beitrag von Kleenmex (Specialist / 126 / 0 / 0 ) »
Hi kannst du mal dein Coding posten damit ich dir helfen kann
Gruss

Kleenmex

Beitrag von h3ld (ForumUser / 4 / 0 / 0 ) »

Code: Alles auswählen.

IF p_file IS NOT INITIAL.

    CALL METHOD cl_gui_frontend_services=>gui_download
      EXPORTING
        bin_filesize         = filesize
        filename             = filename_string
        filetype             = 'BIN'
        no_auth_check        = 'X'
      IMPORTING
        filelength           = after_download_length
      CHANGING
        data_tab             = tab_x
      EXCEPTIONS
        file_not_found       = 91
        file_write_error     = 92
        filesize_not_allowed = 93
        invalid_type         = 95
        no_batch             = 96
        OTHERS               = 97.

    IF sy-subrc NE 0.                              "download error
      result = sy-subrc.
    ELSEIF after_download_length EQ 0.             "nothing written
      result = 97.
    ENDIF.

  ELSE.

    IF wa_regut-codepage = '4102' OR wa_regut-codepage = '4103'.    " Unicode
      OPEN DATASET filename_string IN BINARY MODE FOR OUTPUT.
    ELSEIF wa_regut-codepage = '4110'.                              " UTF-8
      OPEN DATASET filename_string IN TEXT MODE FOR OUTPUT ENCODING DEFAULT.
    ELSEIF wa_regut-codepage IS NOT INITIAL.
      OPEN DATASET filename_string FOR OUTPUT IN LEGACY BINARY MODE CODE PAGE out_codepage.
    ELSE.
      OPEN DATASET filename_string FOR OUTPUT IN LEGACY BINARY MODE.
    ENDIF.

    LOOP AT tab_x INTO str_line.
      TRANSFER str_line TO wa_regut-dwnam.
    ENDLOOP.
    CLOSE DATASET wa_regut-dwnam.

  ENDIF.

Beitrag von Kleenmex (Specialist / 126 / 0 / 0 ) »
Also ich mache das immer so für alle Sprachen aber du willste es jetzt runterladen oder hochladen ?

Weil runterladen musst du es mit INPUT ?!

Code: Alles auswählen.


DATA: w_outfilename(255) TYPE c,
           lang               TYPE i,
           anzahl           TYPE i.

DATA: ftp LIKE vbak OCCURS  0 WITH HEADER LINE.

*-Pfadname
  CONCATENATE w_outfilename  ''.txt'  INTO w_outfilename.

  CLOSE DATASET w_outfilename.

* File öffnen
  OPEN DATASET w_outfilename FOR INPUT IN TEXT MODE ENCODING DEFAULT.

 check  sy-subrc = 0.

  DO.
    CLEAR ftp.
    READ DATASET w_outfilename INTO ftp LENGTH lang.
    IF sy-subrc <> 0.
      EXIT.
    ENDIF.
    ADD 1 TO anzahl.
    APPEND ftp.
  ENDDO.

    CLOSE DATASET w_outfilename.


Hier das Coding uralt aber funktioniert einwandfrei

oder dann halt gleich mit den FTP oder RFC FUBAS

Hoffe es hilft Dir
Gruss

Kleenmex

Beitrag von h3ld (ForumUser / 4 / 0 / 0 ) »
Runterladen.

FOR INPUT = Lesen
FOR OUTPUT = Schreiben

Danke erstmal für deine Bemühungen!

Welche FTP-FuBas meinst du?
Und was machst du mit der itab FTP?


PS: Dein Coding ist zum Lesen gedacht, nicht zum Schreiben.

Beitrag von Kleenmex (Specialist / 126 / 0 / 0 ) »
*-der ist zum hochschreiben

Code: Alles auswählen.

  CONCATENATE 'STAT' sy-uname sy-datum sy-uzeit '.txt' into docid.

  call function 'FTP_CONNECT'
    EXPORTING
      user            = ''
      password        = ''
      host            = 'XX.XXX.XX.X'  " IP
      rfc_destination = 'SAPFTPA'
    IMPORTING
      handle          = hdl.

  APPEND 'cd sap' TO commandlist.

  CALL FUNCTION 'FTP_COMMAND_LIST'
    EXPORTING
      handle        = hdl
    IMPORTING
      command_index = cmdindex
    TABLES
      data          = result
      commands      = commandlist
    EXCEPTIONS
      command_error = 1
      tcpip_error   = 2
      data_error    = 3.

* Character mode
  call function 'FTP_COMMAND'
    EXPORTING
      handle        = hdl
      command       = 'ascii'
    TABLES
      data          = result
    EXCEPTIONS
      tcpip_error   = 1
      command_error = 2
      data_error    = 3.

  call function 'FTP_R3_TO_SERVER'
    EXPORTING
      handle         = hdl
      fname          = docid
      character_mode = 'X'
    TABLES
      text           = iftp.

* Disconnect
  call function 'FTP_DISCONNECT'
    EXPORTING
      handle = hdl.

* SAPFTP = Online , SAPFTPA = BATCH
  call function 'RFC_CONNECTION_CLOSE'
    EXPORTING
      destination = 'SAPFTPA'
    EXCEPTIONS
      others      = 1.
*-der zum runterladen

FTP_SERVER_TO_R3
Gruss

Kleenmex

Beitrag von h3ld (ForumUser / 4 / 0 / 0 ) »
Es geht jetzt.

tab_x war vom Typ x , str_line aber vom Typ string. Es ist notwendig, dass in den Typ xstring geloopt wird und dann eine Konvertierung in den Typ string geschieht. Anschließend klappt auch der TRANSFER korrekt.

Danke für's Unterstützen!

Seite 1 von 1

Vergleichbare Themen

9
Antw.
9799
Views
Download mit OPEN DATASET -> XLSX Datei korrupt
von Romaniac » 28.09.2017 14:00 • Verfasst in ABAP® Core
1
Antw.
2367
Views
Open Dataset, Transfer, Close Dataset.Transfer unvollständig
von mari » 25.09.2007 09:28 • Verfasst in ABAP® Core
0
Antw.
1658
Views
open dataset
von joachim » 18.08.2008 11:05 • Verfasst in ABAP® Core
5
Antw.
4465
Views
Zeilenlänge bei OPEN DATASET
von RiffRaff » 15.05.2006 16:16 • Verfasst in ABAP® Core
15
Antw.
2061
Views
CSV Datei mit open dataset
von lisa » 18.05.2021 10:19 • Verfasst in ABAP® für Anfänger

Über diesen Beitrag


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

Aktuelle Forenbeiträge

Regex in where
vor 6 Stunden von edwin 7 / 163
Daten an Tabelle binden
vor 19 Stunden von Bright4.5 3 / 1487

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.

Aktuelle Forenbeiträge

Regex in where
vor 6 Stunden von edwin 7 / 163
Daten an Tabelle binden
vor 19 Stunden von Bright4.5 3 / 1487

Unbeantwortete Forenbeiträge

aRFC im OO-Kontext
vor 5 Wochen von ralf.wenzel 1 / 3261
Hilfe bei SWEC/SWE2
September 2024 von retsch 1 / 9822