[50873] in SAPr3-news

home help back first fref pref prev next nref lref last post

Mailversand - html Anhang

daemon@ATHENA.MIT.EDU (J?rgen Spranz)
Wed Jul 28 12:46:50 2004

To: sapr3-news@mit.edu
Date: 28 Jul 2004 09:46:45 -0700
From: jspranz@gmx.de (J?rgen Spranz)
Message-ID: <c558c9b.0407280846.4c42b439@posting.google.com>

Habe untenstehenden Funktionsbaustein geschrieben. 

Das Programm liefert mir meinen Anhang entsprechend. 

Leider ist der Dateiname des Anhangs dann xxxxxx.RAW. 

Deshalb kann man das Mail dann im Mail Client (Outlock) nicht einfach öffnen. 

Was kann man tun, damit der anhang als xxxxxx.htm oder xxxxx.html kommt? 

Auch für weitere Verbesserungsvorschläge bin ich offen. 

Vielleicht gibt es auch noch was z.B. in der Transaction SCOT einzustellen???

FUNCTION z_mail_itab_as_html_append.
*"----------------------------------------------------------------------
*"*"Lokale Schnittstelle:
*"  IMPORTING
*"     REFERENCE(I_BETREFF) TYPE  STRING
*"     REFERENCE(I_ANHANGSBEZEICHNUNG) TYPE  STRING OPTIONAL
*"     REFERENCE(IT_FIELDCAT) TYPE  SLIS_T_FIELDCAT_ALV OPTIONAL
*"     REFERENCE(I_SUPPRESS_MESSAGES) TYPE  XFELD OPTIONAL
*"  TABLES
*"      T_MAILTEXT
*"      T_APPENDTXT
*"      T_RECEIVER
*"  EXCEPTIONS
*"      MAILSENDERROR
*"----------------------------------------------------------------------
  DATA: ls_fieldcat TYPE slis_fieldcat_alv.
  DATA: packing_list LIKE sopcklsti1 OCCURS 2 WITH HEADER LINE.
  DATA: object_header LIKE solisti1 OCCURS 1 WITH HEADER LINE.
  DATA: contents_txt LIKE solisti1 OCCURS 10 WITH HEADER LINE.
  DATA: reclist LIKE somlreci1 OCCURS 5 WITH HEADER LINE.
  DATA: reclist_copy LIKE somlreci1 OCCURS 5 WITH HEADER LINE.
  DATA: document_data LIKE sodocchgi1.
  DATA: mailtext_lines LIKE sy-tabix.
  DATA: gesamt_lines LIKE sy-tabix.
  DATA: mailappend_lines LIKE sy-tabix.
*  DATA: user_address LIKE sousradri1 OCCURS 0 WITH HEADER LINE.
  DATA: sent_to_all LIKE sonv-flag.
  DATA: i_doctype TYPE  so_obj_tp.
  DATA: act_rec(15) TYPE n.
* Dokumententyp
  i_doctype = 'RAW'.


* Erstellen des zu versendenden Dokuments
  document_data-obj_name = 'Email'.
* Betreff setzen
  document_data-obj_descr = i_betreff.

* Text der Mail hinzufügen
  contents_txt[] = t_mailtext[].
  DESCRIBE TABLE contents_txt LINES mailtext_lines.
***  READ TABLE contents_txt INDEX tab_lines.
***  document_data-doc_size = tab_lines * 255.

* Anlage einlesen
  contents_txt = '<html> <body bgcolor=#ffffc0>'.
  append contents_txt.

  contents_txt = '<table border=5>'.  "Rand um Tabelle
  APPEND contents_txt.


  contents_txt = '<tr bgcolor=#ffff80>'.      "T a b e l l e n k o p f
  APPEND contents_txt.

  LOOP AT it_fieldcat INTO ls_fieldcat.
    IF ls_fieldcat-inttype = 'C'.
      contents_txt = '<th align=left>'.
    ELSE.
      contents_txt = '<th align=right>'.
    ENDIF.
    APPEND contents_txt.
    contents_txt = ls_fieldcat-seltext_l.
    APPEND contents_txt.
    contents_txt = '</th>'.
    APPEND contents_txt.
  ENDLOOP.
  contents_txt = '</tr>'.
  APPEND contents_txt.

  break spranz.

*                                       " T a b e l l e n k ö r p e r
  FIELD-SYMBOLS: <fs_line> TYPE ANY.
  FIELD-SYMBOLS: <fs_value> TYPE ANY.
  LOOP AT t_appendtxt ASSIGNING <fs_line>.
    contents_txt = '<tr bgcolor=white>'.
    APPEND contents_txt.
    LOOP AT it_fieldcat INTO ls_fieldcat.
      ASSIGN COMPONENT sy-tabix OF STRUCTURE <fs_line> TO <fs_value>.
      IF sy-subrc = 0.
          if ls_fieldcat-inttype = 'C'.
            contents_txt = '<td align=left>'.
          ELSE.
            contents_txt = '<td align=right>'.
        endif.
        APPEND contents_txt.
        write <fs_value> to contents_txt.
        APPEND contents_txt.
        contents_txt = '</td>'.
        APPEND contents_txt.
      ELSE.
        contents_txt = '<td>'.
        APPEND contents_txt.
        contents_txt = '</td>'.
        APPEND contents_txt.
      ENDIF.
    ENDLOOP.
  ENDLOOP.
*
  contents_txt = '</table>'.                  "Abschluß der Tabelle
  APPEND contents_txt.
  contents_txt = '</html> </body>'.
  append contents_txt.

  DESCRIBE TABLE contents_txt LINES gesamt_lines.
  mailappend_lines = gesamt_lines - mailtext_lines.


* erstellen des eintrags zum komprimierten dokument
  CLEAR packing_list-transf_bin.
  packing_list-head_start = 1.
  packing_list-head_num = 0.
  packing_list-body_start = 1.
*  packing_list-body_num = tab_lines.
  packing_list-body_num = mailtext_lines.
  packing_list-doc_type = i_doctype. "'RAW'.
  APPEND packing_list.


* Erstellen des Eintrags zur komprimierten Anlage
*  packing_list-transf_bin = 'X'.
  packing_list-head_start = 1.
  packing_list-head_num = 0.                                "war mal 1
*  packing_list-body_start = 1.
  packing_list-body_start = mailtext_lines + 1.
*  packing_list-body_num = tab_lines.
  packing_list-body_num = mailappend_lines.
  packing_list-doc_type = i_doctype.
*  packing_list-doc_type = 'HTM'.
*  packing_list-doc_type = 'URL'.

  packing_list-obj_name = 'Anhang'.
  packing_list-obj_descr = i_anhangsbezeichnung.
*  packing_list-doc_size = tab_lines * 255.
  packing_list-doc_size = mailappend_lines * 255.

  APPEND packing_list.

* Füllen der Empfängerliste
  LOOP AT t_receiver.
    reclist-receiver = t_receiver.
    reclist-rec_type = 'U'.
    APPEND reclist.
  ENDLOOP.

* Kopie der Empfängerliste erstellen
  reclist_copy[] = reclist[].

* Versenden des Dokuments
  CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
       EXPORTING
            document_data              = document_data
            put_in_outbox              = 'X'
            commit_work                = 'X'
       IMPORTING
            sent_to_all                = sent_to_all
       TABLES
            packing_list               = packing_list
            object_header              = object_header
            contents_txt               = contents_txt
            receivers                  = reclist
       EXCEPTIONS
            too_many_receivers         = 1
            document_not_sent          = 2
            document_type_not_exist    = 3
            operation_no_authorization = 4
            OTHERS                     = 99.

* Meldungen ausgeben wenn gefordert
  CASE sy-subrc.
    WHEN 0.
      CHECK i_suppress_messages IS INITIAL.
      LOOP AT reclist.
        READ TABLE reclist_copy INDEX sy-tabix.
        IF reclist-retrn_code = 0.
          WRITE: / 'E-Mail', i_betreff, 'wurde an' ,
                   reclist_copy-receiver(48), 'gesendet'.
        ELSE.
          WRITE: / 'E-Mail', i_betreff, 'an',
                   reclist_copy-receiver(48),
                   'konnte nicht gesendet werden.'.
        ENDIF.
      ENDLOOP.
    WHEN 1.
      WRITE: 'Fehler: zu viele Empfänger'.
      RAISE mailsenderror..
    WHEN 2.
      WRITE: 'Fehler: Document nicht gesendet'.
      RAISE mailsenderror.
    WHEN 3.
      WRITE: 'Fehler: Documententyp existiert nicht'.
      RAISE mailsenderror.
    WHEN 4.
      WRITE: 'Fehler: Operation nicht berechtigt'.
      RAISE mailsenderror.
    WHEN OTHERS.
      WRITE: 'Fehler: andere Fehler'.
      RAISE mailsenderror.
  ENDCASE.

  break spranz.

ENDFUNCTION.

home help back first fref pref prev next nref lref last post