4AP.de ~ alles fuer ABAP-Programmierer - Infos zur SAP Programmiersprache


das Neueste

10 Jahre 4ap.de

10 Jahre 4ap.de - kleines und stilles Jubiläum

|

 

Buchrezensionen

Einige neue Buchrezensionen sind vorhanden.

|

 

neues Coding: braune Kekse

Lange schwebte mir die Idee vor, aber es fehlte schlicht die Zeit. Heute war es endlich soweit: ich nahm sie mir, die Zeit :-) Ergebnis unter: braune Kekse.

|

 

neues Kontaktformular

Wegen Formularspoofing wurde eine neue Kontaktmöglichkeit geschaffen.
|

 

Codings gesucht

Codings gesucht, die NICHT im SDN stehen.
|

 

Suche



 


Dieser Inhalt wurde zuletzt geändert am:
21.04.2009 von TN

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 Absender                                                  

 39  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 unsichtb

 76  *  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'