Interne Tabelle als xls Datei per E-Mail verschicken

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

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

Interne Tabelle als xls Datei per E-Mail verschicken

Beitrag von Niko_BC (ForumUser / 8 / 2 / 0 ) »
Guten Tag,
ich bin noch neu in der ABAP Programmierung und stehe vor einem Problem.
Ich soll eine Interne Tabelle, welche ich als ALV ausgebe, per Mail verschicken.
Was wäre die beste Methode dazu ?

Vielen Lieben Dank

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


Re: Interne Tabelle als xls Datei per E-Mail verschicken

Beitrag von ralf.wenzel (Top Expert / 3776 / 176 / 262 ) »
Das wurde hier schon x-mal durchgekaut, einfach mal die SuFu benutzen. Oder gleich Google.

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

Re: Interne Tabelle als xls Datei per E-Mail verschicken

Beitrag von Legxis (Specialist / 160 / 90 / 28 ) »
Am einfachsten ist es, wenn du keine xls, sondern eine csv verschickst.
Aber ich habe das schon mal so gemacht.

EDIT: Falsch verstanden, dachte, du wolltest einen Excel Download. Für Mailversendung würde ich die interne Tabelle mit einer Transformation in HTML umwandeln, das habe ich hier einmal beschrieben: https://www.abapforum.com/forum/viewtop ... 206#p86206

Code: Alles auswählen.

REPORT  y_alv_excel.

TABLES: vbak.

*------------------------------*
* Definitionen + Deklarationen *
*------------------------------*

INCLUDE y_alv_excel_top.

*------------------*
* Selektion-Screen *
*------------------*

SELECTION-SCREEN: BEGIN OF BLOCK param WITH FRAME TITLE text-001.
  SELECT-OPTIONS: s_erdat FOR vbak-erdat.
SELECTION-SCREEN: END OF BLOCK param.

SELECTION-SCREEN: BEGIN OF BLOCK limit WITH FRAME TITLE text-002.
PARAMETERS: p_limit TYPE p_dbacc DEFAULT 2500.
SELECTION-SCREEN: END OF BLOCK limit.

SELECTION-SCREEN: BEGIN OF BLOCK form WITH FRAME TITLE text-003.
PARAMETERS: rb_excel RADIOBUTTON GROUP typ,
            rb_list  RADIOBUTTON GROUP typ DEFAULT 'X'.
SELECTION-SCREEN: END OF BLOCK form.

*----------------*
* Datenselektion *
*----------------*

CLEAR gt_vbelege.

SELECT vbeln erdat
INTO CORRESPONDING FIELDS OF TABLE gt_vbelege
FROM vbak
UP TO p_limit ROWS
WHERE erdat IN s_erdat
ORDER BY erdat vbeln.

IF sy-subrc = 0.

* Wahl des Ausgabemediums
  CASE 'X'.
    WHEN rb_excel.
      PERFORM excel_download.
    WHEN rb_list.
      PERFORM display_alv.
  ENDCASE.

ENDIF.
Top-Include

Code: Alles auswählen.

*-------*
* TYPES *
*-------*

TYPES: BEGIN OF ty_vbelege,
  vbeln TYPE vbeln_va,
  erdat	TYPE erdat,
END OF ty_vbelege.

TYPES: BEGIN OF ty_vbelege_excel,
  vbeln TYPE vbeln,
  erdat TYPE string,
END OF ty_vbelege_excel.

*---------*
* Klassen *
*---------*

* Eventhandler definieren
CLASS lcl_handle_events DEFINITION.
  PUBLIC SECTION.
  METHODS:

  on_link_click
  FOR EVENT link_click OF cl_salv_events_table
  IMPORTING row column.

ENDCLASS.                    "lcl_handle_events DEFINITION

*------*
* DATA *
*------*

* Datentabellen
DATA: gt_vbelege TYPE STANDARD TABLE OF ty_vbelege,
      gt_vbelege_excel TYPE STANDARD TABLE OF ty_vbelege_excel.

* Workareas
DATA: wa_vbelege TYPE ty_vbelege,
      wa_vbelege_excel TYPE ty_vbelege_excel.

* Hilfsvariablen
DATA: h_datum     TYPE  string.            " zum formattieren der Datümer

* Excel Download
DATA: h_offset   TYPE I,
      h_path     TYPE string,
      h_fullpath TYPE string,
      h_filename TYPE string,
      h_file     TYPE rlgrap-filename,
      h_filepath TYPE rlgrap-filename.

DATA: BEGIN OF t_fieldnames OCCURS 0,
  fnames(195),
END OF t_fieldnames.

DEFINE append_fname.
  CLEAR t_fieldnames.
  t_fieldnames = &1.
  APPEND t_fieldnames.
  CLEAR t_fieldnames.
END-OF-DEFINITION.

* alv Listausgabe
DATA: go_alv              TYPE REF TO  cl_salv_table,
      go_column           TYPE REF TO  cl_salv_column_table,
      go_columns          TYPE REF TO  cl_salv_columns_table,
      go_functions        TYPE REF TO  cl_salv_functions_list,      " toolbar
      go_display          TYPE REF TO  cl_salv_display_settings,
      go_layout           TYPE REF TO  cl_salv_layout,
      go_selections       TYPE REF TO  cl_salv_selections,          " multiselect
      go_sort             TYPE REF TO  cl_salv_sorts,               " von Anfang an sortiert ausgeben
      go_events           TYPE REF TO  cl_salv_events_table,        " Events
      go_event_handler    TYPE REF TO  lcl_handle_events,
      gx_salv_msg         TYPE REF TO  cx_salv_msg,                 " exceptions
      gx_salv_not_found   TYPE REF TO  cx_salv_not_found,
      gx_salv_existing    TYPE REF TO  cx_salv_existing,
      gx_salv_data_error  TYPE REF TO  cx_salv_data_error,
      gs_layoutkey        TYPE         salv_s_layout_key.
Excel-Download

Code: Alles auswählen.

FORM excel_download.

* Excel-Ausgabetabelle füllen


  LOOP AT gt_vbelege INTO wa_vbelege.

    wa_vbelege_excel-bukrs = wa_vbelege-bukrs.
    wa_vbelege_excel-ekorg = wa_vbelege-ekorg.

*   Datümer formattieren
    IF wa_vbelege-erdat IS NOT INITIAL.
      CONCATENATE wa_vbelege-erdat+6(2) '.' wa_vbelege-erdat+4(2) '.' wa_vbelege-erdat(4) INTO h_datum.
      wa_vbelege_excel-erdatr = h_datum.
      CLEAR h_datum.
    ENDIF.

    ENDIF.

    APPEND wa_vbelege_excel TO gt_vbelege_excel.

  ENDLOOP.

* Header hinzufügen
  append_fname 'Vertriebsbeleg'.
  append_fname 'Datum'.

  CALL METHOD cl_gui_frontend_services=>file_save_dialog
    EXPORTING
      window_title = 'Speichern'
      file_filter  = cl_gui_frontend_services=>filetype_excel
    CHANGING
      filename     = h_filename
      path         = h_path
      fullpath     = h_fullpath.

* Dateiendung abschneiden
  FIND ALL OCCURRENCES OF '.' IN h_fullpath MATCH OFFSET h_offset.
  h_filepath = h_fullpath+0(h_offset).
  CLEAR h_offset.
  FIND ALL OCCURRENCES OF '.' IN h_filename MATCH OFFSET h_offset.
  h_file = h_filename+0(h_offset).

  CALL FUNCTION 'MS_EXCEL_OLE_STANDARD_DAT'
    EXPORTING
      file_name                 = h_filepath
      data_sheet_name           = h_file
      password_option           = 0
    TABLES
      data_tab                  = gt_vbelege_excel
      fieldnames                = t_fieldnames
    EXCEPTIONS
      file_not_exist            = 1
      filename_expected         = 2
      communication_error       = 3
      ole_object_method_error   = 4
      ole_object_property_error = 5
      invalid_filename          = 6
      invalid_pivot_fields      = 7
      download_problem          = 8
      OTHERS                    = 9.

  CASE sy-subrc.
    WHEN 1.
      MESSAGE 'File does not exist' TYPE 'E'.
    WHEN 2.
      MESSAGE 'Filename expected' TYPE 'E'.
    WHEN 3.
      MESSAGE 'Communication error' TYPE 'E'.
    WHEN 4.
      MESSAGE 'OLE object method error' TYPE 'E'.
    WHEN 5.
      MESSAGE 'OLE object property error' TYPE 'E'.
    WHEN 6.
      MESSAGE 'Invalid filename' TYPE 'E'.
    WHEN 7.
      MESSAGE 'Invalid pivot fields' TYPE 'E'.
    WHEN 8.
      MESSAGE 'Download problem' TYPE 'E'.
    WHEN 9.
      MESSAGE 'Other problem' TYPE 'E'.
  ENDCASE.

ENDFORM.

Folgende Benutzer bedankten sich beim Autor Legxis für den Beitrag:
Niko_BC

( SAP ECC 6.0, NetWeaver 7.0, ohne unicode, ohne support/enhancement packages )

Re: Interne Tabelle als xls Datei per E-Mail verschicken

Beitrag von Niko_BC (ForumUser / 8 / 2 / 0 ) »
Vielen Dank Legxis,
jedoch versteh ich da vieles gar nicht :/ .
Ich habe eine andere Methode gefunden, wie ich eine Excel Datei per Mail verschicken kann.
Mit der Klasse CL_BCS.
Das klappt irgendwie auch ( keine Ahnung wie ich das hinbekommen habe)
Jedoch fehlt mir bei der Excel Tabelle die Kopfzeile.
Weißt du womöglich wie man das einfügen kann ?

Vielen Dank.

Re: Interne Tabelle als xls Datei per E-Mail verschicken

Beitrag von Legxis (Specialist / 160 / 90 / 28 ) »
Die interne Tabelle, die du da hast, hat wahrscheinlich gar keine Kopfzeile, das fügt der SALV immer automatisch ein. Du musst manuell eine Kopfzeile einfügen.
( SAP ECC 6.0, NetWeaver 7.0, ohne unicode, ohne support/enhancement packages )

Seite 1 von 1

Vergleichbare Themen

25
Antw.
17582
Views
Interne Tabelle als Excel-Anhang verschicken
von Sandra » 06.04.2005 17:23 • Verfasst in ABAP® für Anfänger
5
Antw.
5413
Views
Interne Tabelle als Mail versenden
von SaskuAc » 12.03.2018 14:38 • Verfasst in ABAP® Core
0
Antw.
1271
Views
2
Antw.
1431
Views
Werte Per Mail verschicken
von quindata » 02.08.2010 09:08 • Verfasst in ABAP® für Anfänger
1
Antw.
222
Views
Formular als Mail verschicken
von ZF_SAPler » 16.08.2023 18:26 • 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

Zwischensumme Adobe Forms
vor 4 Wochen von Lucyalison 1 / 134
Group Items auf einer Filterbar
vor 5 Wochen von Bright4.5 1 / 168