Code: Alles auswählen.
*&---------------------------------------------------------------------*
*& Report ZMAILVERSAND
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT ZMAILVERSAND.
TABLES: ZSPEDT.
TYPES: BEGIN OF ANHANGLISTE,
WARGRBEZ(255) TYPE C,
END OF ANHANGLISTE.
*SELECT * FROM ZSPEDT
* WHERE STATUS <> '__X%'.
DATA: MAIL_RECEIVER LIKE SOMLRECI1 OCCURS 1 WITH HEADER LINE,
MAIL_BETREFF LIKE SODOCCHGI1,
MAIL_TEXT LIKE SOLI OCCURS 10 WITH HEADER LINE.
PERFORM LIEFERPRIO_PRUEFEN.
* IF SY-SUBRC = 0.
ZSPEDT-STATUS+2(1) = 'X'.
UPDATE ZSPEDT.
PERFORM E-MAIL_AUFBAUEN.
PERFORM ANHANG.
PERFORM EMPFAENGER.
PERFORM SENDEN.
DATA: LT_OBJPACK TYPE TABLE OF SOPCKLSTI1,
LS_OBJPACK TYPE SOPCKLSTI1,
LT_OBJHEAD TYPE TABLE OF SOLISTI1,
LS_OBJHEAD TYPE SOLISTI1,
ANHANGLISTE1 TYPE TABLE OF Anhangliste,
ANHANGLISTE2 TYPE TABLE OF Anhangliste,
LV_TAB_LINES TYPE SY-TABIX,
LS_DOCUMENT_DATA TYPE SODOCCHGI1,
LS_OBJTXT TYPE SOLISTI1.
* ENDIF.
*ENDSELECT.
*&---------------------------------------------------------------------*
*& Form LIFERPRIO_PRUEFEN
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM LIEFERPRIO_PRUEFEN.
DATA TEM_LIEFERPRIO LIKE ZSPEDT-LIEFNR.
CLEAR: TEM_LIEFERPRIO.
SELECT SINGLE LPRIO FROM LIKP INTO TEM_LIEFERPRIO
WHERE VBELN = ZSPEDT-LIEFNR.
ENDFORM. "LIFERPRIO_PRUEFEN
*&---------------------------------------------------------------------*
*& Form E-MAIL_AUFBAUEN
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM E-MAIL_AUFBAUEN.
MAIL_BETREFF-OBJ_DESCR = 'Betreff'.
APPEND MAIL_TEXT.
MAIL_TEXT-LINE = 'Sehr geehrter Kunde,'.
APPEND MAIL_TEXT.
MAIL_TEXT-LINE = ''.
APPEND MAIL_TEXT.
MAIL_TEXT-LINE = 'Ihre Bestellung hat unser Lager heute verlassen.'.
APPEND MAIL_TEXT.
MAIL_TEXT-LINE = ''.
APPEND MAIL_TEXT.
MAIL_TEXT-LINE = 'Mit freundlichen Grüßen'.
APPEND MAIL_TEXT.
MAIL_TEXT-LINE = 'TEST TEST'.
APPEND MAIL_TEXT.
DESCRIBE TABLE MAIL_TEXT LINES LV_TAB_LINES.
READ TABLE MAIL_TEXT INTO LS_OBJTXT INDEX LV_TAB_LINES.
MAIL_BETREFF-DOC_SIZE = 10000000.
CLEAR LS_OBJPACK.
LS_OBJPACK-TRANSF_BIN = ''.
LS_OBJPACK-HEAD_START = 1.
LS_OBJPACK-HEAD_NUM = 0.
LS_OBJPACK-BODY_START = 1.
LS_OBJPACK-BODY_NUM = LV_TAB_LINES.
LS_OBJPACK-DOC_TYPE = 'RAW'.
APPEND LS_OBJPACK TO LT_OBJPACK.
ENDFORM. "E-MAIL_AUFBAUEN
*&---------------------------------------------------------------------*
*& Form ANHANG
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM ANHANG.
DATA: DATASET(1000) TYPE C.
DATA: OBJEKTZEILE TYPE SOLISTI1.
DATASET = '\\stherp01.sth.local\SAP_DATENTRANSFER\Test\TEST.PDF'.
OPEN DATASET DATASET FOR INPUT IN BINARY MODE.
DO.
READ DATASET DATASET INTO OBJEKTZEILE.
IF SY-SUBRC <> 0.
EXIT.
ENDIF.
APPEND OBJEKTZEILE TO ANHANGLISTE1.
ENDDO.
CALL FUNCTION 'QCE1_CONVERT'
TABLES
T_SOURCE_TAB = ANHANGLISTE1
T_TARGET_TAB = ANHANGLISTE2.
* Erstellen der Anlage für das Dokument
DESCRIBE TABLE ANHANGLISTE2 LINES LV_TAB_LINES.
LS_OBJHEAD = 'Rechnung.pdf'(T05). APPEND LS_OBJHEAD TO LT_OBJHEAD.
* Erstellen des Eintrags zur komprimierten Anlage
CLEAR: LS_OBJPACK.
LS_OBJPACK-TRANSF_BIN = 'X'.
LS_OBJPACK-HEAD_START = 1.
LS_OBJPACK-HEAD_NUM = 1.
LS_OBJPACK-BODY_START = 1.
LS_OBJPACK-BODY_NUM = LV_TAB_LINES.
LS_OBJPACK-DOC_TYPE = 'PDF'.
LS_OBJPACK-OBJ_NAME = 'ANLAGE'(T06).
LS_OBJPACK-OBJ_DESCR = 'Abbildung Objekt 138'(T07).
LS_OBJPACK-DOC_SIZE = LV_TAB_LINES * 255.
APPEND LS_OBJPACK TO LT_OBJPACK.
ENDFORM. "ANHANG
*&---------------------------------------------------------------------*
*& Form EMPFAENGER
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM EMPFAENGER.
REFRESH MAIL_RECEIVER.
CLEAR MAIL_RECEIVER.
MOVE: 'TEST@test.com' TO MAIL_RECEIVER-RECEIVER,
'X' TO MAIL_RECEIVER-EXPRESS,
'U' TO MAIL_RECEIVER-REC_TYPE.
APPEND MAIL_RECEIVER.
ENDFORM. "EMPFAENGER
*&---------------------------------------------------------------------*
*& Form SENDEN
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM SENDEN.
* CALL FUNCTION 'SO_NEW_DOCUMENT_SEND_API1'
* EXPORTING
* DOCUMENT_DATA = MAIL_BETREFF
* COMMIT_WORK = 'X'
* TABLES
* OBJECT_CONTENT = MAIL_TEXT
* RECEIVERS = MAIL_RECEIVER
* 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.
CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
EXPORTING
DOCUMENT_DATA = MAIL_BETREFF
PUT_IN_OUTBOX = 'X'
COMMIT_WORK = 'X'
TABLES
PACKING_LIST = LT_OBJPACK
OBJECT_HEADER = LT_OBJHEAD
CONTENTS_BIN = ANHANGLISTE2
CONTENTS_TXT = MAIL_TEXT
RECEIVERS = MAIL_RECEIVER
EXCEPTIONS
TOO_MANY_RECEIVERS = 1
DOCUMENT_NOT_SENT = 2
OPERATION_NO_AUTHORIZATION = 4
OTHERS.
ENDFORM. "SENDEN