gelöst Interne Tabelle als Mail versenden


Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV

Moderatoren: Jan, Steff

gelöst Interne Tabelle als Mail versenden

Beitragvon SaskuAc » 12.03.2018, 14:38

Hallo,

ich möchte gerne meine interne Tabelle mit drei Spalten per Mail versenden.
Zum versenden der Mail nehme ich die Klasse CL_BCS_MESSAGE her.

Nun war meine Idee, dass ich per HTML einfach für jeden Eintrag in der Tabelle eine weitere Zeile in der "Table" Komponente des HTML Textes hinzufüge ( also ich erzeuge per html eine tabelle und jeder eintrag in der internen Tabelle = eine zeile in der HTML tabelle - lässt sich ja mit einem loop relativ einfach lösen .. )

Allerdings dachte ich mir, dass es doch wahrscheinlich schönere methoden gibt ( einen FuBa oder eine Klasse ) die mir das umwandelt .. Heißt die mir die interne Tabelle zu einem String oder XString umwandelt, sodass ich sie ordentlich per Mail versenden kann. falls es sowas nicht gibt, werde ich wohl die 1. Variante hernehmen .. aber ich wollte lieber nochmal nachfragen.

am beste wäre natürlich ein FuBa ( oder Klasse ) die mir die interne Tabelle als HTML wieder gibt, welchen ich dann einfach in den Rest einfügen muss.

Danke euch schon mal.

Beste Grüße
SaskuAc
Specialist
 
Beiträge: 153
Registriert: 01.06.2015, 10:16
Dank erhalten: 15 mal
Ich bin: Entwickler/in

Sponsor

Alte ABAP-Entwicklerweisheit: Weißt du weder aus noch ein, baust du einen BADI ein

Re: Interne Tabelle als Mail versenden

Beitragvon lausek » 12.03.2018, 14:53

Also wenn du das als Excel-Sheet versenden willst, empfiehlt sich https://github.com/ivanfemia/abap2xlsx.

Wenn es allerdings nur eine HTML-Mail sein soll, hätte ich das einfach runterimplementiert. Die Zeit, die ich damit verschwende in nutzloser SAP-Doku zu blättern, wäre mir doch etwas zu schade und HTML Tables sind nichts komplexes.
lausek
ForumUser
 
Beiträge: 47
Registriert: 23.03.2017, 07:54
Dank erhalten: 14 mal
Ich bin: Student/in

Re: Interne Tabelle als Mail versenden

Beitragvon ralf.wenzel » 12.03.2018, 15:33

So hab ich es mal gemacht..... Gefunden hab ich auch nichts, was einem diese Arbeit abnimmt.


Ralf
ralf.wenzel
Top Expert
 
Beiträge: 2996
Registriert: 18.09.2004, 13:03
Wohnort: Hamburg
Dank erhalten: 162 mal
Ich bin: Freiberufler/in

Re: Interne Tabelle als Mail versenden

Beitragvon zzcpak » 13.03.2018, 07:57

Es gibt noch die Bausteine:

WWW_ITAB_TO_HTML
WWW_ITAB_TO_HTML_HEADERS
WWW_ITAB_TO_HTML_LAYOUT

Will man jedoch noch die Formatierung einer HTML-Tabelle selbst etwas anpassen, ist es m.A. fast einfacher, die Generierung der Tabelle selbst zu schreiben.
Ein weiteres Beispiel dazu gibt es hier: http://codezentrale.bplaced.net/dcz/?p=6932
zzcpak
Expert
 
Beiträge: 569
Registriert: 29.07.2003, 15:10
Dank erhalten: 38 mal

Re: Interne Tabelle als Mail versenden

Beitragvon black_adept » 13.03.2018, 08:41

Die Klasse cl_gui_alv_grid bietet doch auch einen (eigentlich ganz hübsch anzusehenden) HTML-Export an und verwendet dafür den FuBa LVC_ALV_CONVERT_TO_HTML
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de
black_adept
Top Expert
 
Beiträge: 2949
Registriert: 08.01.2003, 13:33
Wohnort: Lehrte ( bei Hannover )
Dank erhalten: 488 mal
Ich bin: Freiberufler/in

Re: Interne Tabelle als Mail versenden

Beitragvon Legxis » 22.03.2018, 16:30

Also wenn ich Mails mit Tabellen verschicke, dann benutze ich eine Transformation. In etwa so:

Deklaration der internen Tabellen und Workareas:
Code: Alles auswählen
TYPES: BEGIN OF ty_apqi,
  groupid       TYPE      apqi-groupid,
  qstate        TYPE      apqi-qstate,
  creator       TYPE      apqi-creator,
  credate       TYPE      apqi-credate,
END OF ty_apqi.

TYPES: BEGIN OF ty_apqi_aus,      
  groupid       TYPE      apqi-groupid,
  qstate        TYPE      apqi-qstate,
  creator       TYPE      apqi-creator,
  datum         TYPE      c LENGTH 10,
END OF ty_apqi_aus.

DATA: gt_apqi TYPE TABLE OF ty_apqi,
      wa_apqi TYPE ty_apqi.

DATA: gt_apqi_aus TYPE STANDARD TABLE OF ty_apqi_aus,
      wa_apqi_aus TYPE ty_apqi_aus.


Interne Tabelle füllen:
Code: Alles auswählen
SELECT * INTO CORRESPONDING FIELDS OF TABLE gt_apqi FROM apqi
  WHERE  credate = yesterday
  AND    qstate  = 'E'.

IF sy-subrc = 0.

  LOOP AT gt_apqi INTO wa_apqi.                      
      wa_apqi_aus-groupid = wa_apqi-groupid.
      wa_apqi_aus-qstate = wa_apqi-qstate.
      wa_apqi_aus-creator = wa_apqi-creator.
      CONCATENATE wa_apqi-credate+6(2) '.' wa_apqi-credate+4(2) '.' wa_apqi-credate(4) INTO gv_datum.       "Datum formatieren
      wa_apqi_aus-datum = gv_datum.
      APPEND wa_apqi_aus TO gt_apqi_aus.
    ENDLOOP.

  PERFORM mailapqi.

ELSE.
  WRITE : / 'Keine Daten gefunden.'.
ENDIF.

CLEAR gv_datum.


Als Mail senden:
Code: Alles auswählen
FORM MAILAPQI.

DATA: lv_html TYPE string,                  
         lt_soli TYPE soli_tab.

  CALL TRANSFORMATION z_sap_rout_apqi
  SOURCE apqi = gt_apqi_aus
  RESULT XML lv_html.

  CALL FUNCTION 'SCMS_STRING_TO_FTEXT'
  EXPORTING
    TEXT      = lv_html
  TABLES
    ftext_tab = lt_soli.

***Mailversendungs-FuBa eures Vertrauens***

COMMIT WORK.

ENDFORM.
 


Und eine dazugehörige XSLT-Transformation:
Code: Alles auswählen
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl" version="1.0">
  <xsl:output encoding="iso-8859-1" indent="yes" method="html" version="4.0"/>
  <xsl:strip-space elements="*"/>

  <xsl:template match="/">

    <xsl:element name="html">

      <xsl:element name="head">

        <xsl:element name="style">
          <xsl:text>body{font-family: Arial, sans-serif;} table{border-collapse: collapse; font-size: small;} th, td {border: 1px solid black; padding: 5px} th{background-color:#A0A0A0;} td{background-color:#D7E6f5;}</xsl:text>
        </xsl:element>

      </xsl:element>

      <xsl:element name="body">

        <xsl:element name="table">

          <xsl:element name="tr">
            <xsl:element name="th">
              <xsl:text>Group Name</xsl:text>
            </xsl:element>
            <xsl:element name="th">
              <xsl:text>Status</xsl:text>
            </xsl:element>
            <xsl:element name="th">
              <xsl:text>UserID</xsl:text>
            </xsl:element>
            <xsl:element name="th">
              <xsl:text>Erstellung</xsl:text>
            </xsl:element>
          </xsl:element>

          <xsl:for-each select="//APQI/item">

            <xsl:element name="tr">
              <xsl:element name="td">
                <xsl:value-of select="GROUPID"/>
              </xsl:element>
              <xsl:element name="td">
                <xsl:value-of select="QSTATE"/>
              </xsl:element>
              <xsl:element name="td">
                <xsl:value-of select="CREATOR"/>
              </xsl:element>
              <xsl:element name="td">
                <xsl:value-of select="DATUM"/>
              </xsl:element>
            </xsl:element>

          </xsl:for-each>

        </xsl:element>

      </xsl:element>

    </xsl:element>

  </xsl:template>
 


Wie die die Tabellen deklarierst und füllst ist ja wurscht.
Das Ergebnis in der Mail sieht dann so aus (andere Spalten, ist aber ja egal):
Bild
Ich bin Neuling und für jede Hilfe, Kritik, diverse Programmverbesserungen/-optimierung und schöne Codebeispiele dankbar^^
( SAP ECC 6.0, NetWeaver 7.0, ohne unicode, ohne support packages )

Für diese Nachricht hat Legxis 5 Dankeschön bekommen :
4byte, a-dead-trousers, black_adept, ralf.wenzel, SaskuAc
Legxis
ForumUser
 
Beiträge: 47
Registriert: 12.01.2018, 08:59
Wohnort: Köln
Dank erhalten: 10 mal
Ich bin: Student/in


Zurück zu ABAP® Core

  Aktuelle Beiträge   
Aufbau und Größe einer SAP Farm
vor 47 Minuten von Paul 0 Antw.
CALL TRANSACTION bei DB-Abfrage und Doppelklick eines Wertes
vor einer Minute von Paul 2 Antw.
Partnerrolen im SD Beleg
vor 9 Minuten von black_adept 1 Antw.
READ_TEXT - MARA
vor 7 Minuten von Django90 7 Antw.
Konditionsart für ein Material auslesen
vor 16 Stunden von wreichelt 1 Antw.

  Ähnliche Beiträge beta
gelöst ALV Tabelle als Excel in Mail versenden
16.01.2017, 17:41 von Dyrdek 6 Antw.
Interne Tabelle als Excel versenden
02.04.2004, 16:20 von Patricia 5 Antw.
Mail aus SAP versenden
08.09.2003, 15:16 von CaptainTom 3 Antw.
4.7 Mail versenden
06.03.2006, 15:44 von Baltasa 2 Antw.
gelöst Spoolaufträge per Mail versenden
22.06.2005, 11:58 von Asaph 2 Antw.

 

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder