interne Tabelle als CSV-Datei auf Festplatte speichern.

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

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

interne Tabelle als CSV-Datei auf Festplatte speichern.

Beitrag von Bright4.5 (Specialist / 274 / 21 / 1 ) »
Hallo,

ich möchte eine interne Tabelle als CSV-Datei auf meiner Festplatte speichern. Ich habe einen Funktionsbaustein, bei dem mir leider allerdings die technische Spezifikation (Char 60) nicht ausreicht. Kennt jemand einen Funktionsbaustein bei dem ich eine interne Tabelle mit angegebenen Verzeichnisnamen auf meiner Festplatte speichern kann und der ausreichend ist (Char 256 oder String) für den Verzeichnisnamen wohin es gespeichert werden soll?

vielen Dank :)

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


Re: interne Tabelle als CSV-Datei auf Festplatte speichern.

Beitrag von DeathAndPain (Top Expert / 1941 / 257 / 412 ) »
Hier ein Codeausschnitt, mit dem Du Dein Problem lösen können solltest:

Code: Alles auswählen.

    DATA: LV_FILE     TYPE STRING,
          LT_CONVERTED_DATA TYPE TRUXS_T_TEXT_DATA.
*   Daten konvertieren
    CALL FUNCTION 'SAP_CONVERT_TO_CSV_FORMAT'
      EXPORTING
        I_LINE_HEADER        = 'X'
        I_FILENAME           = IV_FILE
      TABLES
        I_TAB_SAP_DATA       = AUSZUGEBENDE_TABELLE
      CHANGING
        I_TAB_CONVERTED_DATA = LT_CONVERTED_DATA
      EXCEPTIONS
        CONVERSION_FAILED    = 1
        OTHERS               = 2.

    IF SY-SUBRC <> 0.
      IF SY-BATCH IS INITIAL.
        MESSAGE E004(Z01) WITH IV_FILE.
      ELSE.
        FORMAT COLOR COL_NEGATIVE.
        WRITE: / 'Fehler beim Konvertieren der Daten für Datei', IV_FILE.
        FORMAT COLOR COL_NORMAL INTENSIFIED ON.
      ENDIF.
    ENDIF.

    LV_FILE = 'Dateiname.csv'.

    CHECK SY-BATCH IS INITIAL. " keine Frontend-Ausgabe bei Hintergrundbetrieb des Jobs
    CALL METHOD CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD
      EXPORTING
        FILENAME                = LV_FILE
      CHANGING
        DATA_TAB                = LT_CONVERTED_DATA
      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.
      IF SY-BATCH IS INITIAL.
        MESSAGE I003(Z01) WITH LV_FILE SY-SUBRC.
      ELSE.
        WRITE: / 'Fehler beim Schreiben der Datei', LV_FILE NO-GAP,':', SY-SUBRC.
      ENDIF.
    ENDIF.

Re: interne Tabelle als CSV-Datei auf Festplatte speichern.

Beitrag von Bright4.5 (Specialist / 274 / 21 / 1 ) »
vielen Dank schon mal!

mit dem Funktionsbaustein versucht er mir nur, die Datei immer in dem Verzeichnis H:\Documents\SAP\SAP GUI\ anzulegen. Wie kann ich mein eigenes Verzeichnis hier angeben?

Re: interne Tabelle als CSV-Datei auf Festplatte speichern.

Beitrag von Bright4.5 (Specialist / 274 / 21 / 1 ) »
Leider ist hier der Filename mit char 128 hinterlegt, was mir leider auch nicht reicht. Kennt jemand einen mit mehr ? Vielleicht 200 oder so ?

Re: interne Tabelle als CSV-Datei auf Festplatte speichern.

Beitrag von Bright4.5 (Specialist / 274 / 21 / 1 ) »
Einen Funktionsbaustein wie "'SAP_CONVERT_TO_CSV_FORMAT' " mit den gleichen Funktionen, bloß Filename mit mehr als 128 hinterlegt?

Re: interne Tabelle als CSV-Datei auf Festplatte speichern.

Beitrag von edwin (Specialist / 302 / 10 / 68 ) »
Hi,
der Dateiname bei 'SAP_CONVERT_TO_CSV_FORMAT' kannst du vergessen, dieser ist nur ein Dummy, wie DAP schon geschrieben hast benutze die Methode der "CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD" für den Download auf deinen PC, der Dateiname ist da als String definiert, für die Auswahl des Ausgabepfades kannst Du "CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG" benutzen.
/Edwin

Re: interne Tabelle als CSV-Datei auf Festplatte speichern.

Beitrag von Bright4.5 (Specialist / 274 / 21 / 1 ) »
Irgendwie bin ich zu blöd :p

ich habe zwei Parameter angelegt mit jeweils eine für den Dateinamen (p_datei) und eine für das Verzeichnis (p_verz) und möchte die interne Tabelle gt_ausgabe als csv Datei speichern.

CONCATENATE p_verz '\' p_datei '.CSV' INTO filepath.

In filepath habe ich Verzeichnis und Namen gepackt.

Irgendwie funktioniert es nicht...

Re: interne Tabelle als CSV-Datei auf Festplatte speichern.

Beitrag von edwin (Specialist / 302 / 10 / 68 ) »
Hi,
also bei mir funktioniert es so

Code: Alles auswählen.


* so 
  CALL METHOD cl_gui_frontend_services=>gui_download
    EXPORTING
      filename                  = 'c:\temp\test.csv' 
      filetype                  = 'ASC'
      trunc_trailing_blanks_eol = 'X'
    CHANGING
      data_tab                  = data_table
    EXCEPTIONS
      file_write_error          = 1
      no_batch                  = 2
...

*oder auch so
data ooutfile type string.

outfile = 'c:\temp\test.csv'.

  CALL METHOD cl_gui_frontend_services=>gui_download
    EXPORTING
      filename                  = outfile
      filetype                  = 'ASC'
      trunc_trailing_blanks_eol = 'X'
    CHANGING
      data_tab                  = data_table
    EXCEPTIONS
      file_write_error          = 1
      no_batch                  = 2
Der Pfad muss komplett und vorhanden sein !

/Edwin.

Re: interne Tabelle als CSV-Datei auf Festplatte speichern.

Beitrag von Bright4.5 (Specialist / 274 / 21 / 1 ) »
okay, ich bekomm ne Dump. Es zeigt an Invalid Type.


IF SY-SUBRC <> 0.
case sy-subrc.
when 1.
RAISE FILE_WRITE_ERROR.
when 2.
RAISE NO_BATCH.
when 3.
RAISE GUI_REFUSE_FILETRANSFER.
when 4.
---->> RAISE INVALID_TYPE .
when 5.
RAISE NO_AUTHORITY.
when 6.
RAISE UNKNOWN_ERROR.
when 7.
RAISE HEADER_NOT_ALLOWED.
when 8.
RAISE SEPARATOR_NOT_ALLOWED.
when 9.
RAISE FILESIZE_NOT_ALLOWED.
when 10.
RAISE HEADER_TOO_LONG.
when 11.
RAISE DP_ERROR_CREATE.
when 12.
RAISE DP_ERROR_SEND.
when 13.
RAISE DP_ERROR_WRITE.
when 14.
RAISE UNKNOWN_DP_ERROR.
when 15.
RAISE ACCESS_DENIED.
when 16.
RAISE DP_OUT_OF_MEMORY.
when 17.
RAISE DISK_FULL.
when 18.
RAISE DP_TIMEOUT.
when 19.
RAISE FILE_NOT_FOUND.
when 20.
RAISE DATAPROVIDER_EXCEPTION.
when 21.
RAISE CONTROL_FLUSH_ERROR.
when OTHERS.
RAISE UNKNOWN_ERROR.
endcase.
ENDIF.

endmethod.

Re: interne Tabelle als CSV-Datei auf Festplatte speichern.

Beitrag von Bright4.5 (Specialist / 274 / 21 / 1 ) »
okay ich möchte meine interne Tabelle gt_ausgabe ausgeben. Den Pfad habe ich in die Variable filepath gepackt. Kann mir jemand mit den Beispielen am besten weiterhelfen? Ich bin hier gerade ziemlich am verzeweifeln. :/

Re: interne Tabelle als CSV-Datei auf Festplatte speichern.

Beitrag von edwin (Specialist / 302 / 10 / 68 ) »
z.b das

Code: Alles auswählen.

  DATA data_table           TYPE TABLE OF t100.
  DATA i_tab_converted_data TYPE  truxs_t_text_data.
  DATA outfile              TYPE string.

  SELECT * FROM t100 UP TO 100 ROWS
           INTO CORRESPONDING FIELDS OF TABLE @data_table.

  CALL FUNCTION 'SAP_CONVERT_TO_CSV_FORMAT'
    EXPORTING
      i_field_seperator    = ';'
    TABLES
      i_tab_sap_data       = data_table
    CHANGING
      i_tab_converted_data = i_tab_converted_data
    EXCEPTIONS
      conversion_failed    = 1.

  outfile = 'c:\temp\test.csv'.

  cl_gui_frontend_services=>gui_download(
    EXPORTING
      filename                  = outfile
    CHANGING
      data_tab                  = i_tab_converted_data
    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.
*   Implement suitable error handling here
  ENDIF.
/Edwin

Re: interne Tabelle als CSV-Datei auf Festplatte speichern.

Beitrag von Bright4.5 (Specialist / 274 / 21 / 1 ) »
Jetzt hat es endlich funktioniert. Super. Vielen Dank :)

Re: interne Tabelle als CSV-Datei auf Festplatte speichern.

Beitrag von Bright4.5 (Specialist / 274 / 21 / 1 ) »
Wie könnte ich den die interne Tabelle als CSV-Datei noch als E-Mail versenden?

Hat da jemand ne Idee?

Re: interne Tabelle als CSV-Datei auf Festplatte speichern.

Beitrag von Legxis (Specialist / 160 / 90 / 28 ) »
Das könntest du z.B. mit dem Fuba SO_NEW_DOCUMENT_ATT_SEND_API1 oder der Klasse BCS machen. Meiner Meinung nach ist BCS übersichtlicher. Sieht dann so oder so ähnlich aus:

Code: Alles auswählen.

DATA: gc_subject       TYPE so_obj_des  VALUE 'E-Mail Versand mit der Klasse CL_BCS',
      gc_raw           TYPE char03      VALUE 'RAW',
      gv_sent_to_all   TYPE os_boolean,
      gv_email         TYPE adr6-smtp_addr,
      gv_text          TYPE bcsy_text,
      binary_content   TYPE solix_tab,
      size             TYPE so_obj_len,
      gr_send_request  TYPE REF TO cl_bcs,
      gr_bcs_exception TYPE REF TO cx_bcs,
      gr_recipient     TYPE REF TO if_recipient_bcs,
      gr_sender        TYPE REF TO cl_sapuser_bcs,
      gr_document      TYPE REF TO cl_document_bcs.

DATA: i_tab_converted_data TYPE c length 255,
      gv_string TYPE string.

* CSV in String umformen
i_tab_converted_data = 'Irgendein;Text;steht;hier;in;CSV'.
gv_string = i_tab_converted_data.

TRY.

*   Send Request erstellen
    gr_send_request = cl_bcs=>create_persistent( ).

*   Sender:
    gr_sender = cl_sapuser_bcs=>create( sy-uname ).
    
*   Sender zum Request hinzufügen
    CALL METHOD gr_send_request->set_sender
      EXPORTING
        i_sender = gr_sender.

*   Empfänger
    gv_email = 'test@test.de'.
    gr_recipient = cl_cam_address_bcs=>create_internet_address( gv_email ).
    
*   Empfänger zum Request hinzufügen
    CALL METHOD gr_send_request->add_recipient
      EXPORTING
        i_recipient = gr_recipient
        i_express   = 'X'.

*   E-Mail Body
    APPEND 'Mailversand-Beispiel' TO gv_text.
    gr_document = cl_document_bcs=>create_document(
    i_type    = gc_raw
    i_text    = gv_text
    i_length  = '12'
    i_subject = gc_subject ).

*   Body anhängen
    CALL METHOD gr_send_request->set_document( gr_document ).

*   String (CSV Inhalt) umformen, um es als Anhang zu versenden
    cl_bcs_convert=>string_to_solix(
          EXPORTING
            iv_string   = gv_string
            iv_codepage = '4103'
            iv_add_bom  = 'X'
          IMPORTING
            et_solix  = binary_content
            ev_size   = size ).

*   E-Mail Anhang
    CALL METHOD gr_document->add_attachment
      EXPORTING
        i_attachment_type    = 'CSV'
        i_attachment_subject = 'TEST.CSV'
        i_attachment_size    = size
        i_att_content_hex    = binary_content.

*   E-Mail senden
    CALL METHOD gr_send_request->send(
    EXPORTING
      i_with_error_screen = 'X'
      RECEIVING
      result              = gv_sent_to_all ).

    IF gv_sent_to_all = 'X'.
      WRITE 'E-Mail erfolgreich versendet!'.
    ENDIF.

*   wird benötigt, um Mail zu versenden
    COMMIT WORK.

* Ausnahmebehandlung
  CATCH cx_bcs INTO gr_bcs_exception.
    WRITE:
    'Error vom Typ: ',
    gr_bcs_exception->error_type.

ENDTRY.
Dazu findet man auch Guides online, wie z.B. hier: http://www.cadaxo.com/high-class-develo ... -aus-abap/
( SAP ECC 6.0, NetWeaver 7.0, ohne unicode, ohne support/enhancement packages )

Seite 1 von 1

Vergleichbare Themen

0
Antw.
2391
Views
Interne Tabelle in Datei speichern
von Schludi » 08.06.2006 10:52 • Verfasst in Java & SAP®
31
Antw.
20517
Views
Interne Tabelle als Excel-Datei speichern
von Bright4.5 » 22.08.2018 13:50 • Verfasst in ABAP® für Anfänger
10
Antw.
2691
Views
Interne Tabelle als Excel Datei im Hintergrund speichern
von lisa » 23.03.2022 14:12 • Verfasst in ABAP® für Anfänger
2
Antw.
1433
Views
Interne Tabelle als xml Datei auf einem Applikationsserver speichern
von lisa » 03.02.2021 09:46 • Verfasst in ABAP® für Anfänger
8
Antw.
4422
Views
Excel Datei Lesen und in sap Tabelle speichern
von amjahid » 13.11.2007 09:44 • 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.

Unbeantwortete Forenbeiträge

Daten an Tabelle binden
vor 2 Tagen von Bright4.5 1 / 767
aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 2389
Hilfe bei SWEC/SWE2
letzen Monat von retsch 1 / 8974