Das Senden einer SAP-Express-Mail kann z.B. bei einer automatischen Verbuchung von Warenbestellungen nützlich sein, damit der Disponent auch etwas von der Bestellung (die z.B. elektronisch hereinkommt) 'bemerkt' oder um umfangreichere Fehlermeldungen ausgeben zu können:
*&---------------------------------------------------------------------* *& Report ZETSFEHL * * erstellt 16.04.2002
* * Coded by Thorsten Neubüser - www.4ap.de * *&---------------------------------------------------------------------* * Senden von SAP-Express-Meldungen * Dieser Report ist nur für die automatische Verarbeitung vorgesehen * Online-Betrieb nur für Testzwecke *&---------------------------------------------------------------------*
REPORT ZETSFEHL.
DATA: FUBAU(30) TYPE C. " Kurz-Name des Fubaus
PARAMETERS: P_FUBAU LIKE FUBAU, P_KUNNR LIKE VBAK-KUNNR, " Kundennummer P_VKORG LIKE ZETSLIEFER-VKORG. " Verkaufsorganisation
DATA: BEGIN OF FEHLER_TAB OCCURS 0, " Tabelle für Fehlermeldungen LINE LIKE LINE, END OF FEHLER_TAB.
* für online / Testbetrieb INITIALIZATION. P_FUBAU = 'ZETSFEHL online Test'. P_KUNNR = '123456'. P_VKORG = '0001'. FEHLER_TAB-LINE = 'Test im Online ZETSFEHL'. APPEND FEHLER_TAB.
START-OF-SELECTION.
PERFORM FEHLER_BEHANDLUNG TABLES FEHLER_TAB USING P_FUBAU P_KUNNR P_VKORG.
END-OF-SELECTION. WRITE: / 'Online:'. LOOP AT FEHLER_TAB. WRITE: / FEHLER_TAB-LINE. ENDLOOP.
*&---------------------------------------------------------------------* *& Form FEHLER_BEHANDLUNG *&---------------------------------------------------------------------* * -->fehler_tab Tabelle mit zeilenweise hinterlegtem Inhalt * -->P_FUBAU Aufrufer der Fehlermeldung * -->p_kunnr Kundennummer, steuert die Empfängerauswahl * -->P_VKORG dito *----------------------------------------------------------------------* FORM FEHLER_BEHANDLUNG TABLES FEHLER_TAB LIKE FEHLER_TAB[] USING P_FUBAU P_KUNNR P_VKORG.
* fehler_tab ausgeben über Fubau SO_NEW_DOCUMENT_SEND_API1
DATA: OBJCONT LIKE SOLISTI1 OCCURS 5 WITH HEADER LINE. DATA: RECLIST LIKE SOMLRECI1 OCCURS 5 WITH HEADER LINE. DATA: DOC_CHNG LIKE SODOCCHGI1. DATA: ENTRIES LIKE SY-TABIX.
* Fill the document DOC_CHNG-OBJ_NAME = 'URGENT'. " Dokumentname CONCATENATE 'Fehlermeldung: '(001) P_FUBAU " Titel der Meldung INTO DOC_CHNG-OBJ_DESCR SEPARATED BY ' : '. " max. 50 Char DOC_CHNG-SENSITIVTY = 'O'. " Sensitivität * Meldungsinhalte schreiben OBJCONT-LINE = 'Meldungsliste:'(002). APPEND OBJCONT. LOOP AT FEHLER_TAB. MOVE FEHLER_TAB-LINE TO OBJCONT-LINE. APPEND OBJCONT. ENDLOOP. " at fehler_tab APPEND INITIAL LINE TO OBJCONT. * Dokumentenlänge ermitteln DESCRIBE TABLE OBJCONT LINES ENTRIES. READ TABLE OBJCONT INDEX ENTRIES. DOC_CHNG-DOC_SIZE = ( ENTRIES - 1 ) * 255 + STRLEN( OBJCONT ).
* Fill the receiver list TABLES: ZETS0009. " hinterlegte Empfänger SELECT * FROM ZETS0009 WHERE KUNNR EQ P_KUNNR AND VKORG EQ P_VKORG AND MEDIUM EQ 'TEST'. CHECK ZETS0009-GESPERRT IS INITIAL. * Empfänger in Tabelle RECEIVERS schreiben RECLIST-REC_TYPE = ZETS0009-REC_TYPE. " Typ SAP-Benutzername RECLIST-RECEIVER = ZETS0009-UNAME. " Username RECLIST-EXPRESS = ZETS0009-EXPRESS. " Send express SAPmail APPEND RECLIST. ENDSELECT. " from zets0009 * Falls keine Einträge vorhanden sind IF RECLIST[] IS INITIAL. RECLIST-REC_TYPE = 'B'. " Typ SAP-Benutzername RECLIST-RECEIVER = 'SAPADMIN'. " Administrator als default RECLIST-EXPRESS = 'X'. " Send express SAPmail APPEND RECLIST. ENDIF.
* Send the document CALL FUNCTION 'SO_NEW_DOCUMENT_SEND_API1' EXPORTING DOCUMENT_DATA = DOC_CHNG DOCUMENT_TYPE = 'RAW' PUT_IN_OUTBOX = 'X' * IMPORTING * SENT_TO_ALL = * NEW_OBJECT_ID = TABLES * OBJECT_HEADER = OBJECT_CONTENT = OBJCONT * OBJECT_PARA = * OBJECT_PARB = RECEIVERS = RECLIST EXCEPTIONS TOO_MANY_RECEIVERS = 1 DOCUMENT_NOT_SENT = 2 DOCUMENT_TYPE_NOT_EXIST = 3 OPERATION_NO_AUTHORIZATION = 4 PARAMETER_ERROR = 5 X_ERROR = 6 ENQUEUE_ERROR = 7 OTHERS = 8.
CASE SY-SUBRC. WHEN 0. LOOP AT RECLIST. IF RECLIST-RETRN_CODE = 0. WRITE: / RECLIST-RECEIVER, ': Senden erfolgreich'. ELSE. WRITE: / RECLIST-RECEIVER, ': Senden nicht erfolgreich'. ENDIF. ENDLOOP. WHEN 1. WRITE: / 'Es wurden zu viele Empfänger angegeben !'. WHEN 2. WRITE: / 'Das Dokument wurde von keinem Empfänger erhalten !'. WHEN 4. WRITE: / 'Keine Berechtigung zum Senden !'. WHEN OTHERS. WRITE: / 'Unerwarteter Fehler aufgetreten !'. ENDCASE. " sy-subrc
ENDFORM. " FEHLER_BEHANDLUNG
|