String in txt Datei schreiben.

Die Objektorientierung mit ABAP®: Vererbung, Dynamische Programmierung, GUI Controls (u.a. ALV im OO).
12 Beiträge • Seite 1 von 1
12 Beiträge Seite 1 von 1

String in txt Datei schreiben.

Beitrag von behnm (ForumUser / 5 / 0 / 0 ) »
Hallo alle zusammen,

ich habe folgendes Anliegen.
Ich habe ein Programm geschrieben, dass mir im Abap Interface einen String zurück gibt.
Nun möchte ich diesen String in eine txt Datei schreiben.
Und zwar dass die txt datei in diesem zuge auch gleich erstellt wird.

z.B. genfile_aktuellesdatum.txt

ja und in dieser txt soll dann eben der String stehen.

Ich hab mir schon viele Sachen in Richtung Dateischnittstelle ABAP angeschaut, bin aber leider noch aus keinem so richtig schlau geworden.
Kann mir da wer weiterhelfen ?

Schon mal vielen Dank im Vorraus

mbehn
Zuletzt geändert von behnm am 07.05.2008 09:10, insgesamt 1-mal geändert.

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


Beitrag von Thomas R. (Expert / 754 / 74 / 34 ) »
Hallo mbehn,
die entscheidenden Befehle (Datei auf dem Applikationsserver/Backend) sind
OPEN DATASET
TRANSFER
CLOSE DATASET

Wenn Du dazu die F1-Hilfe liest wirst Du weiterkommen.

Für den Präsentationsserver (Client, nur Online) hilft Dir die Klasse
CL_GUI_FRONTENDSERVICES weiter, insbesondere die Methode GUI_DOWNLOAD

MfG
Thomas R.

Beitrag von behnm (ForumUser / 5 / 0 / 0 ) »
Hier mein Quelltext. So sollte es ja eigentlich funktionieren:
DATA:
str_line TYPE string VALUE 'TEST',
s_filename TYPE string VALUE 'C:\Documents and Settings\p873164\Desktop\test\bsp.txt'.

OPEN DATASET s_filename
FOR OUTPUT IN TEXT MODE ENCODING DEFAULT WITH SMART LINEFEED.


TRANSFER str_line TO s_filename.

CLOSE DATASET s_filename.

"OPEN DATASET macht die Datei auf
"TRANSFER den einen String in die Datei schreiben
"CLOSE DATASET Datei wirder schliessen

Aber es funktioniert nicht.. Die Datei wird nicht erstellt, hab dann mal zum Testen eine Datei mit dem Namen einfach manuell erstellt.
Jedoch hat das auch nicht weiter geholfen.
Syntaxfehler sind nicht vorhanden und lässt sich auch ausführen.

Beitrag von uh (Specialist / 158 / 0 / 1 ) »
Hallo behnm,

hast du die Antwort von Thomas mal komplett gelesen? So wie du das machst, versuchst du auf das Verzeichnis des Applikationsservers zu schreiben. Wenn du Glück hast, gibt es das Verzeichnis auf dem Server und dann steht die Datei auch auf dem Server. Wenn du lokal speichern willst, musst du schon GUI_DOWNLOAD bemühen (oder bei Open Dataset eine Freigabe auf das lokale Verzeichnis machen und dann über den Freigabenamen arbeiten).

Grüße

Udo

Re: String in txt Datei schreiben.

Beitrag von ralf.wenzel (Top Expert / 3776 / 176 / 262 ) »
behnm hat geschrieben:Ich hab mir schon viele Sachen in Richtung Dateischnittstelle ABAP angeschaut, bin aber leider noch aus keinem so richtig schlau geworden.
Kann mir da wer weiterhelfen ?
Funktionsbaustein GUI_UPLOAD oder gleichnamige Methode der globalen Klasse CL_GUI_FRONTEND_SERVICES.



Ralf
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Beitrag von behnm (ForumUser / 5 / 0 / 0 ) »
Ja wollt gerade ne Antwort schreiben hab schon gemerkt, dass es so nicht funktionieren kann.

Nur in der F1 Hilfe sind die Befehle GUI_DOWNLOAD usw nicht verzeichnet.

Gibt es da irgendwo online etwas dazu ?

Danke

Beitrag von ralf.wenzel (Top Expert / 3776 / 176 / 262 ) »
behnm hat geschrieben:Nur in der F1 Hilfe sind die Befehle GUI_DOWNLOAD usw nicht verzeichnet.
Das glaube ich nicht ;)


Ralf
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: String in txt Datei schreiben.

Beitrag von GastX (Specialist / 277 / 4 / 18 ) »
Wie Ralf schon schrieb...
ralf.wenzel hat geschrieben: Funktionsbaustein GUI_UPLOAD oder gleichnamige Methode der globalen Klasse CL_GUI_FRONTEND_SERVICES.

Ralf
D.h., es sind keine Abap-Befehle zu denen es eine F1-Hilfe gibt, sondern es ist ein Funktionsbaustein bzw. eine Methode, also

Code: Alles auswählen.

  CALL FUNCTION 'GUI_DOWNLOAD' ...
bzw.

Code: Alles auswählen.

    CALL METHOD cl_gui_frontend_services=>gui_download ...
Am besten über den Button Muster einfügen...

Re: String in txt Datei schreiben.

Beitrag von ralf.wenzel (Top Expert / 3776 / 176 / 262 ) »
GastX hat geschrieben:D.h., es sind keine Abap-Befehle zu denen es eine F1-Hilfe gibt, sondern es ist ein Funktionsbaustein bzw. eine Methode, also
Ich habe aber in der Hilfe diese Programme gefunden. Mit der Suche in der Hilfe hätte man sie finden können. ;)


Ralf
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Beitrag von behnm (ForumUser / 5 / 0 / 0 ) »
hmm also irgend wie komm ich da immer noch nicht so recht weiter.
Die ganzen Beispiele und Erklärung beziehen sich immer auf Tabellen usw.

Hat jemand vllt kurz zeit mir einen Code Schnippsel hinzuschreiben wie ich am besten den string in eine durch das programm erstellte txt datei schreiben kann ? Ich glaub ein kurzer Anstoss reicht mir schon.

Vielen Dank für die schnellen Antworten.

Grüße

Beitrag von ralf.wenzel (Top Expert / 3776 / 176 / 262 ) »
behnm hat geschrieben:Die ganzen Beispiele und Erklärung beziehen sich immer auf Tabellen usw.
Richtig. Dein Dateiinhalt, also der String, ist in in einer (internen) Tabelle mit einer Zeile oder muss eine werden. Mit der Überlegung kannst du dein Problem lösen.


Ralf
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Beitrag von JHM (Top Expert / 1189 / 1 / 196 ) »
behnm hat geschrieben:Hat jemand vllt kurz zeit mir einen Code Schnippsel hinzuschreiben wie ich am besten den string in eine durch das programm erstellte txt datei schreiben kann ? Ich glaub ein kurzer Anstoss reicht mir schon.
anbei ein kurzer Beispielreport für die Dateiablage wahlweise auf Applikation- oder Präsentationserver oder als Listausgabe.

Code: Alles auswählen.

REPORT  ztest_file.


************************************************************************
*                     DATA-DEFINITION                                  *
************************************************************************
DATA: gw_file TYPE          string,
      gt_file TYPE TABLE OF string,

*    helfer
     g_index TYPE string, 
*    file operations
      gt_file_tab TYPE filetable,
      g_rc        TYPE i,
      g_file      TYPE string,
      g_filename  TYPE string,
      g_path      TYPE string,
      g_fullpath  TYPE string.


************************************************************************
*                     SELECTION SCREEN                                 *
************************************************************************
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
PARAMETERS: rb_list RADIOBUTTON GROUP rb2 USER-COMMAND push.
PARAMETERS: rb_filea RADIOBUTTON GROUP rb2.
PARAMETERS: p_filea TYPE c LENGTH 1024 MODIF ID fa LOWER CASE.
PARAMETERS: rb_filep RADIOBUTTON GROUP rb2.
PARAMETERS: p_filep TYPE c LENGTH 1024 MODIF ID fp.
SELECTION-SCREEN END OF BLOCK b1.
************************************************************************
*                    AT SELECTION-SCREEN                               *
************************************************************************
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_filep.
  CALL METHOD cl_gui_frontend_services=>file_save_dialog
    EXPORTING
      window_title      = 'Bitte Speicherort auswählen'
      default_extension = 'TXT'
    CHANGING
      filename          = g_filename
      path              = g_path
      fullpath          = g_fullpath.


  p_filep = g_fullpath.


AT SELECTION-SCREEN OUTPUT.
  LOOP AT SCREEN.
    CHECK screen-group3 = 'PAR' OR
          screen-group3 = 'LOW' OR
          screen-group3 = 'HGH'.

    CASE screen-group1.
      WHEN 'FA'.
        IF rb_filea = 'X'.
          screen-input = '1'.
        ELSE.
          screen-input = '0'.
        ENDIF.
      WHEN 'FP'.
        IF rb_filep = 'X'.
          screen-input = '1'.
        ELSE.
          screen-input = '0'.
        ENDIF.
    ENDCASE.

    MODIFY SCREEN.
  ENDLOOP.

AT SELECTION-SCREEN ON p_filep.
  IF sy-ucomm = 'ONLI' OR sy-ucomm = 'PRIN'.
    IF rb_filep = 'X'.
      IF p_filep IS INITIAL.
        MESSAGE 'Bitte geben Sie einen Pfad ein!' TYPE 'E'.
      ENDIF.
    ENDIF.
  ENDIF.

************************************************************************
*                     START-OF-SELECTION                               *
************************************************************************

START-OF-SELECTION.
*** Daten aufbauen
  DO 20 TIMES.
    g_index = sy-index.
    CONCATENATE 'Das ist die'
                g_index
                'Zeile meines Textes'
                INTO gw_file
                SEPARATED BY space.
    APPEND gw_file TO gt_file.
  ENDDO.

************************************************************************
*                     END-OF-SELECTION                                 *
************************************************************************
END-OF-SELECTION.

*** Ausgabe
  CASE 'X'.
    WHEN rb_filea.
*     Daten in File auf Applicationserver schreiben
      OPEN DATASET p_filea FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.
      IF sy-subrc <> 0.
        MESSAGE s398(00) DISPLAY LIKE 'E'
                         WITH 'Beim öffnen der Datei ist Fehler: '
                              sy-subrc
                              ' aufgetreten!'.
        EXIT.
      ENDIF.

      LOOP AT gt_file INTO gw_file.
*       Zeile ausgeben
        TRANSFER gw_file TO p_filea.
        IF sy-subrc <> 0.
          MESSAGE s398(00) DISPLAY LIKE 'E'
                           WITH 'Beim schreiben in die Datei ist Fehler: '
                                sy-subrc
                                ' aufgetreten!'.
          EXIT.
        ENDIF.


      ENDLOOP.

      CLOSE DATASET p_filea.

      IF sy-subrc = 0.
        MESSAGE s398(00) WITH 'Datei: '
                              p_filea
                              'erfolgreiche erzeugt.'.
      ENDIF.

    WHEN rb_filep.
*     Daten in File auf Präsentationserver schreiben
      g_file = p_filep.
      CALL METHOD cl_gui_frontend_services=>gui_download
        EXPORTING
          filename                = g_file
        CHANGING
          data_tab                = gt_file
        EXCEPTIONS
          file_write_error        = 1
          no_batch                = 2
          gui_refuse_filetransfer = 3
          invalid_type            = 4
          no_authority            = 5
          unknown_error           = 6
          header_not_allowed      = 7
          separator_not_allowed   = 8
          filesize_not_allowed    = 9
          header_too_long         = 10
          dp_error_create         = 11
          dp_error_send           = 12
          dp_error_write          = 13
          unknown_dp_error        = 14
          access_denied           = 15
          dp_out_of_memory        = 16
          disk_full               = 17
          dp_timeout              = 18
          file_not_found          = 19
          dataprovider_exception  = 20
          control_flush_error     = 21
          not_supported_by_gui    = 22
          error_no_gui            = 23
          OTHERS                  = 24.

      IF sy-subrc <> 0.
        MESSAGE s398(00) DISPLAY LIKE 'E'
                         WITH 'Beim Datei-Speichern ist Fehler: '
                              sy-subrc
                              ' aufgetreten!'.
        EXIT.
      ENDIF.
    WHEN rb_list.
* Daten als Liste ausgeben.
      LOOP AT gt_file INTO gw_file.
        WRITE / gw_file.
      ENDLOOP.
  ENDCASE.
Gruß Hendrik

Seite 1 von 1

Vergleichbare Themen

2
Antw.
689
Views
Feldnamen in String schreiben
von teaman » 17.03.2021 16:07 • Verfasst in ABAP® für Anfänger
2
Antw.
1255
Views
Langen String in Struktur schreiben (UniCode-verträglich)
von Nordlicht » 12.04.2019 09:41 • Verfasst in ABAP® für Anfänger
9
Antw.
4604
Views
Schreiben in eine Datei
von BW » 07.02.2007 14:12 • Verfasst in ABAP® Core
1
Antw.
1435
Views
Hexadezimal in Datei schreiben
von MQ6 » 28.03.2007 07:43 • Verfasst in ABAP® Core
6
Antw.
4770
Views
Datei auf Applikationsserver schreiben
von cali » 19.12.2005 10:21 • Verfasst in ABAP® Core

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.