E-Mail versenden
Beispielcoding: E-Mai versenden: (kopieren erlaubt aber auf eigene Gefahr :-))
Es wird der Funktionsbaustein SO_NEW_DOCUMENT_SEND_API1 verwendet.
*
* Coded by Thorsten Neubüser - www.4ap.de
*1 ***** Implementation of object type ZIDOCORDER *****
2 INCLUDE <object>.
3 BEGIN_DATA OBJECT. " Do not change.. DATA is generated
4 * only private members may be inserted into structure private
5 DATA:
6 " begin of private,
7 " to declare private attributes remove comments and
8 " insert private attributes here ...
9 " end of private,
10 BEGIN OF KEY,
11 IDOCNUMBER LIKE EDIDC-DOCNUM,
12 END OF KEY.
13 END_DATA OBJECT. " Do not change.. DATA is generated
14
15 begin_method zmailbeibestellung changing container.
16
17 DATA: idocnum TYPE edi_docnum,
18 idocdate type EDI_CCRDAT,
19 idoctime type EDI_CCRTIM.
20 MOVE: object-key-idocnumber TO idocnum.
21 swc_get_property self 'CreateDate' idocdate.
22 swc_get_property self 'TimeCreated' idoctime.
23
24 * wer ist denn der Auslöser?
25 * inputErrorOccurred ODER inputFinished
26 * Status 51 = Anwendungsbeleg nicht gebucht
27 * Status 53 = Anwendungsbeleg gebucht
28 * SWC_GET_PROPERTY SELF <Attribut> <Attributwert>.
29 DATA: edidc_status LIKE edidc-status,
30 text_status(50).
31 swc_get_property self 'Status' edidc_status.
32 CASE edidc_status. " text_status max 18 Char !!!!
33 WHEN '51'. text_status = 'nicht verarbeitet.'.
34 WHEN '53'. text_status = 'erfolgreich.'.
35 WHEN OTHERS. text_status = 'Status unbekannt.'.
36 ENDCASE.
37
38 * Kurztext und Absender39 DATA: shortmessage(128).
40 swc_get_property self 'Shortmessage' shortmessage.
41 DATA: senderpartnerno TYPE edi_sndprn,
42 senderpartnertype TYPE edi_sndprt.
43 swc_get_property self 'SENDERPARTNERNO' senderpartnerno.
44 swc_get_property self 'SENDERPARTNERTYPE' senderpartnertype.
45
46 * an wen sollen die Mails gesendet werden?
47 * Sachbearbeiter, Stellvertreter und Admin
48 * Partner = IDOC - Kunde
49 * Partnervereinarung lesen / WE20
50 * erlaubte Bearbeiter / EDPP1-USRKEY
51 * ADR6 = eMail-Adresse
52
53 * und Mail versenden
54 DATA: document_data LIKE sodocchgi1,
55 document_data_vertreter LIKE sodocchgi1,
56 document_data_admin LIKE sodocchgi1,
57 object_content LIKE solisti1 OCCURS 5 WITH HEADER LINE,
58 receivers LIKE somlreci1 OCCURS 5 WITH HEADER LINE,
59 entries LIKE sy-tabix,
60 name(15).
61
62 * Headerinformationen, Betreff, Verfallsdatum etc.
63 document_data-obj_name = 'IDOC-Order'. " Char12
64 * Betreff
65 CASE edidc_status.
66 WHEN '53'. " erfolgreich
67 move shortmessage TO document_data-obj_descr.
68 WHEN OTHERS. " nicht verarbeitet oder unbekannt
69 CONCATENATE 'EDIOrder' text_status 'IDOC' idocnum " idocnum = 16
70 INTO document_data-obj_descr SEPARATED BY ' '. " MAX!!! Char50
71 endcase. " edidc_status.
72 document_data-obj_langu = sy-langu.
73 document_data-obj_sort = 'EDI-Order'. " Sortierfeld Char10
74 * document_data-OBJ_EXPDAT = sy-datum + 60. " Verfallsdatum
75 *document_data-sensitivty = 'P'. " p = vertraul. für Vertreter unsichtb76 * document_data-OBJ_PRIO = '1'. " 1-9, 1 = höchste Priorität
77 * document_data-PRIORITY = '1'. " 1-9, 1 = höchste Priorität
78 document_data-OBJ_EXPDAT = sy-datum + 60. " Verfallsdatum
79 document_data-expiry_dat = sy-datum + 60. " Verfallsdatum
80 * Vertreter bekommt anderen Betreff
81 document_data_vertreter = document_data.
82 document_data_vertreter-OBJ_NAME = 'EDI_copy'.
83 shift document_data_vertreter-OBJ_DESCR right by 3 Places.
84 document_data_vertreter-OBJ_DESCR(2) = 'CC'. " eigentl. Betreff
85 document_data_vertreter-OBJ_SORT = 'EDI_copy'.
86 * Admin bekommt auch eigenen Betreff
87 document_data_admin = document_data.
88 document_data_vertreter-OBJ_NAME = 'EDI_admin'.
89 shift document_data_admin-OBJ_DESCR right by 3 Places.
90 document_data_admin-OBJ_DESCR(2) = 'AD'. " eigentl. Betreff
91 document_data_admin-OBJ_SORT = 'EDI_admin'.
92
93 * I N H A L T / also im Body der Mail
94 object_content = 'EDI-Bestellung'.
95 APPEND object_content.
96 append initial line to object_content.
97
98 CONCATENATE 'IDOC' ' :' idocnum
99 INTO object_content SEPARATED BY ' '.
100 APPEND object_content.
101
102 CONCATENATE 'Erzeugung' ' :' idocdate idoctime
103 INTO object_content SEPARATED BY ' '.
104 APPEND object_content.
105
106 CONCATENATE 'Verarbeitung' ':' sy-datum sy-uzeit
107 INTO object_content SEPARATED BY ' '.
108 APPEND object_content.
109
110 CONCATENATE 'Status' ' :' text_status
111 INTO object_content SEPARATED BY ' '.
112 APPEND object_content.113
114 CONCATENATE 'Statustext' ' :' shortmessage
115 INTO object_content SEPARATED BY ' '.
116 APPEND object_content.
117
118 CONCATENATE 'Sender' ' :' senderpartnertype senderpartnerno
119 INTO object_content SEPARATED BY ' '.
120 APPEND object_content.
121
122 * die Dokumentgröße ist zu ermitteln
123 DESCRIBE TABLE object_content LINES entries.
124 READ TABLE object_content INDEX entries.
125 document_data-doc_size = ( entries - 1 ) * 255
126 + STRLEN( object_content ).
127
128 * Empfängerliste füllen
129 * Partnervereinbarung auslesen, erlaubter Bearbeiter EDP21-USRKey
130 DATA: help_usrtyp_erl LIKE edp21-usrtyp,
131 help_usrkey_erl LIKE edp21-usrkey.
132 SELECT SINGLE usrtyp usrkey FROM edp21 CLIENT SPECIFIED
133 INTO (help_usrtyp_erl, help_usrkey_erl)
134 WHERE mandt = sy-mandt
135 AND sndprn = senderpartnerno
136 AND sndprt = senderpartnertype
137 AND sndpfc = 'AG'
138 AND mestyp = 'ORDERS'
139 AND mescod = ''
140 AND mesfct = ''
141 AND test = ''.
142 IF help_usrtyp_erl = 'US'.
143 CLEAR receivers. REFRESH receivers.
144 receivers-rec_type = 'B'.
145 receivers-receiver = help_usrkey_erl.
146 APPEND receivers.
147 PERFORM send_mail TABLES object_content receivers
148 USING document_data idocnum edidc_status.
149 ELSEIF help_usrtyp_erl = 'O'.150 * Zugeordnete Stellen ermitteln
151 DATA: stru_tab TYPE TABLE OF qcat_stru,
152 wa_stru_tab TYPE qcat_stru,
153 otype TYPE otype,
154 objid TYPE hrobjid.
155 MOVE: help_usrtyp_erl TO otype,
156 help_usrkey_erl TO objid.
157 CALL FUNCTION 'RHPH_STRUCTURE_READ'
158 EXPORTING
159 plvar = '01'
160 otype = otype
161 objid = objid
162 wegid = 'ORG_PPEM'
163 begda = sy-datum
164 endda = sy-datum
165 pup_info = 'X'
166 with_stext = 'X'
167 tdepth = 3
168 TABLES
169 stru_tab = stru_tab
170 EXCEPTIONS
171 catalogue_problem = 1
172 root_not_found = 2
173 wegid_not_found = 3
174 OTHERS = 4.
175
176 IF sy-subrc <> 0.
177 * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
178 * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
179 ENDIF.
180 DATA: persnumber TYPE ad_persnum,
181 addrnumber TYPE ad_addrnum,
182 smtp_addr TYPE ad_smtpadr.
183
184 LOOP AT stru_tab INTO wa_stru_tab WHERE otype = 'US'.
185 SELECT SINGLE persnumber addrnumber FROM usr21
186 INTO (persnumber, addrnumber)
187 WHERE bname = wa_stru_tab-realo.
188 SELECT SINGLE smtp_addr FROM adr6
189 INTO smtp_addr
190 WHERE addrnumber = addrnumber
191 AND persnumber = persnumber
192 AND date_from LE sy-datum
193 and smtp_addr ne ''. .
194 * AND consnumber = '1'. " erste GILT!!!
195
196 CASE wa_stru_tab-pup_stext.
197 WHEN 'Sachbearbeiter'.
198 CLEAR receivers. REFRESH receivers.
199 receivers-rec_type = 'U'. " Empfängertyp 'U' : Internetad
200 receivers-receiver = smtp_addr.
201 APPEND receivers.
202 PERFORM send_mail TABLES object_content receivers
203 USING document_data idocnum edidc_status.
204 WHEN 'Stellvertreter'.
205 CLEAR receivers. REFRESH receivers.
206 receivers-rec_type = 'U'. " Empfängertyp 'U' : Internetad
207 receivers-receiver = smtp_addr.
208 APPEND receivers.
209 PERFORM send_mail TABLES object_content receivers
210 USING document_data_vertreter idocnum
211 edidc_status.
212 WHEN 'EDI-Admin'.
213 CLEAR receivers. REFRESH receivers.
214 receivers-rec_type = 'U'. " Empfängertyp 'U' : Internetad
215 receivers-receiver = smtp_addr.
216 APPEND receivers.
217 PERFORM send_mail TABLES object_content receivers
218 USING document_data_admin idocnum
219 edidc_status.
220 ENDCASE. " PUP_STEXT
221 ENDLOOP.
222 ENDIF. " help_usrtyp_zus = 'US'


