Interne Tabelle als Excel-Datei speichern

Getting started ... Alles für einen gelungenen Start.
32 Beiträge • Seite 1 von 3 (current) Nächste
32 Beiträge Seite 1 von 3 (current) Nächste

Interne Tabelle als Excel-Datei speichern

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

ich habe mal wieder ein Problem und zwar möchte ich eine interne Tabelle als Excel-Datei speichern. Ich habe so mal versucht:

Call FUNCTION 'GUI_DOWNLOAD'
EXPORTING
filename = 'h:\EigeneDaten.csv'
filetype = 'ASC'
write_field_separator = 'X'
dat_mode = 'X'
TABLES
data_tab = gt_dfkkop.

Die Datei wird dann auch gespeichert, allerdings sind dann alle Felder zusammengefasst und das ganze sieht sehr unschön aus. Es werden auch keine Feldnamen angezeigt.

Weiß vielleicht jemand wie man so eine interne Tabelle als Excel-Datei speichert und das dann am Schluß ähnlich wie bei AlV-Grid aussieht? also mit den jeweiligen Feldernamen etc.?

Vielen Dank im Voraus.

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


Re: Interne Tabelle als Excel-Datei speichern

Beitrag von ewx (Top Expert / 4854 / 313 / 644 ) »
Feldnamen werden auch nicht ausgegeben. Das musst du selber programmieren.
Ich glaube, DAT_MODE muss SPACE sein.

Re: Interne Tabelle als Excel-Datei speichern

Beitrag von Bright4.5 (Specialist / 280 / 21 / 1 ) »
hmm also ich habe es auch mal mit ALV-Grid ausgegeben. Also:

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
it_fieldcat = it_fieldcat
TABLES
t_outtab = gt_dfkkop
EXCEPTIONS
program_error = 1
OTHERS = 2.

Also ich möchte das es automatisch so in eine Excel-Datei mit Feldnamen gespeichert wird. Weiß das jemand?

Re: Interne Tabelle als Excel-Datei speichern

Beitrag von 4byte (Specialist / 124 / 37 / 35 ) »
Hallo Bright 4.5,

hilft dir folgender Link?
https://www.berater-wiki.de/Funktionsau ... CSV_FORMAT
Es gibt 10 Menschen die binär verstehen :)

Re: Interne Tabelle als Excel-Datei speichern

Beitrag von Bright4.5 (Specialist / 280 / 21 / 1 ) »
hmm leider nicht ganz..

vielleicht kann mir hier ja jemand ein Beispiel geben?

Ich bin leider noch ziemlicher Anfänger.

Re: Interne Tabelle als Excel-Datei speichern

Beitrag von Bright4.5 (Specialist / 280 / 21 / 1 ) »
okay, ich hab es nun hinbekommen mit einer Funktion. Allerdings fehlen mir noch die Spaltenbezeichnungen. Weiß jemand wie das funktioniert?

Re: Interne Tabelle als Excel-Datei speichern

Beitrag von Dele (Specialist / 307 / 4 / 47 ) »
Wir haben uns dafür einen eigenen Funktionsbaustein geschrieben, der den Download wie aus einer ALV-Anzeige realisiert - inklusive POPUP.

Hier das Coding:

Code: Alles auswählen.

FUNCTION Z_BC_DOWNLOAD_ITAB_ALV .
*"----------------------------------------------------------------------
*"*"Global Interface:
*"  IMPORTING
*"     REFERENCE(I_ITFILTER) TYPE  SLIS_T_FILTER_ALV OPTIONAL
*"     REFERENCE(I_ITFDCAT) TYPE  SLIS_T_FIELDCAT_ALV
*"     REFERENCE(I_LAYOUT) TYPE  SLIS_LAYOUT_ALV
*"  CHANGING
*"     REFERENCE(C_ITDATA) TYPE  TABLE
*"----------------------------------------------------------------------

         " local data
data:    l_itfdcat    type kkblo_t_fieldcat.
data:    l_layout     type kkblo_layout.
data:    l_filename   type rlgrap-filename.

    " transform ALV-Data to KKB-Data
    CALL FUNCTION 'REUSE_ALV_TRANSFER_DATA'
      EXPORTING
        IT_FIELDCAT             = i_itfdcat
        IS_LAYOUT               = i_layout
*       IT_SORT                 =
*       IT_FILTER               =
*       IT_EXCLUDING            =
*       IT_SPECIAL_GROUPS       =
*       IS_KEYINFO              =
*       IT_EVENT_EXIT           =
*       IS_LIST_SCROLL          =
*       IS_PRINT                =
*       IS_LINEINFO             =
      IMPORTING
        ET_FIELDCAT             = l_itfdcat
        ES_LAYOUT               = l_layout
*       ET_SORT                 =
*       ET_FILTER               =
*       ET_EXCLUDING            =
*       ET_SPECIAL_GROUPS       =
*       ES_KEYINFO              =
*       ET_EVENT_EXIT           =
*       ES_LIST_SCROLL          =
*       ES_LINEINFO             =
              .

    "select filetype
     data: ls_xml_choice type if_salv_bs_xml=>s_type_xml_choice.
     data: lt_xml_choice type if_salv_bs_xml=>t_type_xml_choice.

     call method cl_salv_export_xml_dialog=>execute
*       exporting
*         gui_type     = 1
*         display_mode = display_mode
       receiving
         value        = lt_xml_choice.

     read table lt_xml_choice into ls_xml_choice index 1.
     if sy-subrc ne 0.
       return.
     endif.

    "filetype xxl
    if ls_xml_choice-xml_type eq if_salv_bs_xml=>c_type_xxl.
        call function 'K_KKB_SUBTOTALS_CHECK'
          exporting
            it_fieldcat             = l_itfdcat
            is_layout               = l_layout
*           I_LISTTYPE              =
*           I_INCL_INVISIBLE_FIELDS =
          exceptions
            no_subtotals_by_layout  = 1
            no_subchoice_by_layout  = 2
            no_do_sum_by_fieldcat   = 3
            others                  = 4.
        if sy-subrc eq 0.
          message i064(0k).
        endif.
        call function 'ALV_XXL_CALL'
          exporting
            i_tabname              = 'ITDATA'
            is_layout              = l_layout
            it_fieldcat            = l_itfdcat
*           i_callback_top_of_page =
            i_title                = sy-title
          tables
            it_outtab              = c_itdata
          exceptions
            others                 = 1.
        if sy-subrc ne 0.
          message id sy-msgid type sy-msgty number sy-msgno
                  with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
        endif.
       return.
    endif.

    "not xxl
data: lr_controller type ref to cl_salv_export_c8r.
data: lr_table      type ref to cl_salv_table.
data: lr_columns    type ref to cl_salv_columns_table.
data: l_column      type lvc_fname.
data: ls_hype       type if_salv_export=>s_type_hlink.
data: xml           type xstring.
data: r_result_data type ref to cl_salv_ex_result_data_table.
data: ls_param_lvc  type if_salv_export=>s_type_param_lvc.
data: lr_data       type ref to data.
data: l_flavour     type string.
data: l_version     type string.

    ls_hype-hlink_colname = space.

    create object lr_controller
      exporting
        t_choice = lt_xml_choice.

    call function 'LVC_TRANSFER_FROM_KKBLO'
      exporting
*       I_TECH_COMPLETE   =
*       I_STRUCTURE_NAME  =
        it_fieldcat_kkblo = l_itfdcat
*       it_sort_kkblo     = gt_stack-it_sort
*       it_filter_kkblo   = l_itfilter
        is_layout_kkblo   = l_layout
      importing
        et_fieldcat_lvc   = ls_param_lvc-t_fcat
        et_sort_lvc       = ls_param_lvc-t_sort
*       et_filter_lvc     = ls_param_lvc-t_filt
        es_layout_lvc     = ls_param_lvc-s_layo
      tables
        it_data           = c_itdata
      exceptions
        it_data_missing   = 0
        others            = 0.

      get reference of c_itdata[] into lr_data.

      if      cl_salv_bs_a_xml_base=>get_version( )
           eq if_salv_bs_xml=>version_25
       or     cl_salv_bs_a_xml_base=>get_version( )
           eq if_salv_bs_xml=>version_26.
          call method cl_salv_ex_util=>factory_result_data_table
            exporting
*             t_selected_rows        = t_selected_rows
*             t_selected_columns     = t_selected_columns
*             t_selected_cells       = t_selected_cells
              r_data                 = lr_data
              s_layout               = ls_param_lvc-s_layo
              t_fieldcatalog         = ls_param_lvc-t_fcat
              t_sort                 = ls_param_lvc-t_sort
              t_filter               = ls_param_lvc-t_filt
*             t_hyperlinks           = t_hyperlinks
*             s_current_cell         = s_current_cell
*             hyperlink_entry_column = hyperlink_entry_column
*             dropdown_entry_column  = dropdown_entry_column
*             t_dropdown_values      = t_dropdown_values
*             r_top_of_list          = r_top_of_list
*             r_end_of_list          = r_end_of_list
            receiving
              r_result_data_table    = r_result_data.
          case cl_salv_bs_a_xml_base=>get_version( ).
            when if_salv_bs_xml=>version_25.
              l_version = if_salv_bs_xml=>version_25.
            when if_salv_bs_xml=>version_26.
              l_version = if_salv_bs_xml=>version_26.
          endcase.
          l_flavour = if_salv_bs_c_tt=>c_tt_xml_flavour_export.
          call method cl_salv_bs_tt_util=>if_salv_bs_tt_util~transform
              exporting
                xml_type      = ls_xml_choice-xml_type
                xml_version   = l_version
                r_result_data = r_result_data
                xml_flavour   = l_flavour
                gui_type      = if_salv_bs_xml=>c_gui_type_gui
              importing
                xml           = xml.
    else.
      call method lr_controller->execute
        exporting
          t_fcat     = ls_param_lvc-t_fcat
          t_sort     = ls_param_lvc-t_sort
          t_filt     = ls_param_lvc-t_filt
          s_layo     = ls_param_lvc-s_layo
*         s_hype     = s_hype
*         r_form_tol = r_form_tol
*         r_form_eol = r_form_eol
         importing
           e_xml      = xml
*          e_mimetype = e_mimetype
*          e_filename = e_filename
        changing
          r_data     = lr_data.
    endif.

    "file download
    call method cl_salv_export_xml_dialog=>download
      exporting
        s_xml_choice = ls_xml_choice
        xml          = xml.

ENDFUNCTION. 

Folgende Benutzer bedankten sich beim Autor Dele für den Beitrag:
Bright4.5


Re: Interne Tabelle als Excel-Datei speichern

Beitrag von Bright4.5 (Specialist / 280 / 21 / 1 ) »
Hi,

vielen Dank schon mal.

Ich habe es nun hinbekommen, allerdings musste ich mir zuvor einen Feldkatalog selbst aufbauen für das ALV-Grid da ich die Summe und Zwischensumme automatisch ausgeben möchte (ich weiß leider nicht, wie das mit CL_salv_table geht) und hab leider nur hinbekommen, meine interne Tabelle nun als Excel-Datei zu speichern, allerdings nicht wie ich das ganze mit dem ALV-Grid verknüpfen kann.

Call function 'Z_SAP_COnver_into_excel'
exporting
* i_filename = 'H:\EigeneDaten.csv'
* i_servertyp = 'PRS'
* i_fileformat = 'CSV'
* tables
* i_tab_sender = gt_dfkkop
open_failed = 1
* close_failed = 2
* authorization_failed = 3
* write_failed = 4
* conversion_failed = 5
* others = 6.

Re: Interne Tabelle als Excel-Datei speichern

Beitrag von GastX (Specialist / 277 / 4 / 18 ) »
Je nach Releasestand kannst du aus einer internen Tabelle (unten als lt_tabelle zu finden) über die SALV-Klassen Daten im XLSX-Format erhalten. Das folgende ist nur ein einfaches Beispiel, ohne jegliche Fehlerbehandlung etc.

Code: Alles auswählen.

    DATA lo_salv_table TYPE REF TO cl_salv_table.
    DATA lv_file   TYPE string.

    cl_salv_table=>factory( IMPORTING r_salv_table = lo_salv_table
                            CHANGING  t_table      = lt_tabelle ).

    data(lv_xstring) = lo_salv_table->to_xml( xml_type = if_salv_bs_xml=>c_type_xlsx ).

    CONCATENATE 'DATEI_' sy-datum '.xlsx' INTO lv_file.

    OPEN DATASET lv_file FOR OUTPUT IN BINARY MODE.
    TRANSFER lv_xstring TO lv_file.
    CLOSE DATASET lv_file.

Folgende Benutzer bedankten sich beim Autor GastX für den Beitrag (Insgesamt 4):
ewx4byteThomas R.Bright4.5


Re: Interne Tabelle als Excel-Datei speichern

Beitrag von Bright4.5 (Specialist / 280 / 21 / 1 ) »
hey, vielen Dank schonmal. Bei mir erscheint jetzt nun bloß immer hier:
DATA(lv_xstring) = lo_salv_table->to_xml.

Feld "TO_XML" unbekannt. Es ist weder in einer der angegebenen Tabellen enthalten noch durch eine "DATA"-Anweisung definiert.

was ist den mein Fehler?

Danke schon mal. :)

Re: Interne Tabelle als Excel-Datei speichern

Beitrag von Bright4.5 (Specialist / 280 / 21 / 1 ) »
ah okay es hat funktioniert, danke. Jetzt weiß ich bloß noch nicht genau, wie ich jetzt die Datei auf meiner Festplatte speichern kann.

Ich bin leider ziemlicher Anfänger :roll:

Re: Interne Tabelle als Excel-Datei speichern

Beitrag von ralf.wenzel (Top Expert / 3946 / 201 / 281 ) »
CL_GUI_FRONTEND_SERVICES

FILE_SAVE_DIALOG
GUI_DOWNLOAD


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

Re: Interne Tabelle als Excel-Datei speichern

Beitrag von Bright4.5 (Specialist / 280 / 21 / 1 ) »
hmm könntest du mir bitte ein Beispiel geben. Ich hab es gerade mit den Internetbeispielen noch nicht hinbekommen.

Danke !

Re: Interne Tabelle als Excel-Datei speichern

Beitrag von Bright4.5 (Specialist / 280 / 21 / 1 ) »

Code: Alles auswählen.

CALL FUNCTION 'GUI_DOWNLOAD'
  EXPORTING
    FILENAME                      = 'C:\DOWNLOADED.txt'
    FILETYPE                      = 'ASC'
*    APPEND                        = 'X'
    WRITE_FIELD_SEPARATOR         = 'X'
  IMPORTING
*   FILELENGTH                    = V_FILELEN
  TABLES
    DATA_TAB                      = ITAB
 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
   OTHERS                        = 22.

IF SY-SUBRC <> 0.
  MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
          WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ELSE.
  MESSAGE I000(Z00) WITH V_FILELEN 'Bytes transferred'.
ENDIF.




hier müsste ich ja z.B. die interne Tabelle übergeben, aber ich möchte doch lv_file downloaden, oder?

Re: Interne Tabelle als Excel-Datei speichern

Beitrag von ralf.wenzel (Top Expert / 3946 / 201 / 281 ) »
Die Frage verstehe ich nicht.

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

Vergleichbare Themen

10
Antw.
2900
Views
Interne Tabelle als Excel Datei im Hintergrund speichern
von lisa » 23.03.2022 14:12 • Verfasst in ABAP® für Anfänger
0
Antw.
2442
Views
Interne Tabelle in Datei speichern
von Schludi » 08.06.2006 10:52 • Verfasst in Java & SAP®
13
Antw.
9841
Views
interne Tabelle als CSV-Datei auf Festplatte speichern.
von Bright4.5 » 09.10.2018 09:23 • Verfasst in ABAP® für Anfänger
8
Antw.
4607
Views
Excel Datei Lesen und in sap Tabelle speichern
von amjahid » 13.11.2007 09:44 • Verfasst in ABAP® für Anfänger
2
Antw.
1538
Views
Interne Tabelle als xml Datei auf einem Applikationsserver speichern
von lisa » 03.02.2021 09:46 • Verfasst in ABAP® für Anfänger

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.