Schlüsselbefehle Open Dataset, Transfer Dataset und Close Dataset

Aus SAP-Wiki
(Weitergeleitet von Schlüsselbefehl Open Dataset)
Zur Navigation springenZur Suche springen

Siehe Schlüsselbefehle Open Dataset, Read Dataset und Close Dataset.

Mit der Kombination der 3 Schlüsselbefehle "Open Dataset", "Transfer Dataset" und "Close Dataset" können Daten (meist als Text-Datei) auf den Applikationsserver geschrieben werden.

  • Open Dataset = öffnet eine Datei auf dem Applikationsserver
  • Transfer Dataset = schreibt Daten in die Datei
  • Close Dataset = schließt die Datei wieder.

Coding (Beispiel CSV-Datei)

TYPES: BEGIN OF ty_csv,
         line TYPE c LENGTH 1000.
TYPES: END OF ty_csv.

TYPES: tty_csv TYPE STANDARD TABLE OF ty_csv.

*&---------------------------------------------------------------------*
*&      Form  DOWNLOAD
*&---------------------------------------------------------------------*
*       Download konvertiertes CSV-File auf Applikations-Server
*----------------------------------------------------------------------*
FORM download_file_appserver
   USING  iv_file TYPE rlgrap-filename
          it_csv  TYPE tty_csv.

  DATA: lv_filename TYPE string.

  lv_filename = iv_file.

* Öffne Text-Datei
  OPEN DATASET lv_filename FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.

  IF sy-subrc <> 0.
    MESSAGE i011(/aif/mes) WITH iv_file.  "Datei &1 konnte nicht in Datenbank gesichert werden

  ELSE.
*   Speichere jede Zeile in Textdatei auf Applikations-Server
    LOOP AT it_csv ASSIGNING FIELD-SYMBOL(<fs_csv>).

      TRANSFER <fs_csv> TO  lv_filename.
    ENDLOOP.

*   Schließe Text-Datei
    CLOSE DATASET lv_filename.

    IF sy-subrc <> 0.
      MESSAGE ID sy-msgid   "Nachrichtenklasse
            TYPE sy-msgty   "Typ (E = Error, S = Success, I = Info, A = Abbruch)
          NUMBER sy-msgno   "Nachrichtennummer
            WITH sy-msgv1   "Platzhaltervariable1
                 sy-msgv2   "Platzhaltervariable2
                 sy-msgv3   "Platzhaltervariable3
                 sy-msgv4.  "Platzhaltervariable4
      MESSAGE i800(29) WITH iv_file.  "Die sequentielle Datei & konnte nicht geöffnet werden
      MESSAGE i821(29).               "Verarbeitung wurde abgebrochen
      LEAVE PROGRAM.

    ELSE.
      MESSAGE i071(dmee) WITH iv_file. "Die Datei & wurde erfolgreich gespeichert
    ENDIF.
  ENDIF.

ENDFORM.                    " download_file_appserver

Coding (Beispiel PDF-Datei)

  data: lv_returncode type inri-returncode,
        lv_myfile     type string,
        lv_bintab     like line of pit_merge_bintab,
        lv_mess       type string.

  lv_myfile = 'TEST.PDF'. 
 
* Speichern PDF-Datei auf Applikationsserver
  open dataset lv_myfile for output in binary mode message lv_mess.  "Datei wird geöffnet

  if sy-subrc <> 0.
    message e531(0u) with lv_mess.                   "Datei konnte vom Betriebssystem nicht geöffnet werden
  endif.

  loop at pit_bintab into lv_merge_bintab.
    transfer lv_bintab to lv_myfile.                 "Inhalt wird in Datei geschrieben
  endloop.

  close dataset lv_myfile.                           "Datei wird geschlossen

  message i532(0u) with 'Datei wurde auf Applikationsserver gespeichert'.

Methode PDF auf Applikationsserver speichern

Trennzeichen in Datei

  • Als Trennzeichen in der Datei wird meist ein "|" oder ein ";" verwendet.
  • Diese Zeichen dürfen dann in den Feldern nicht auftauchen, sonst werden die Felder nicht mehr sinnvoll getrennt.

Web-Links