Guten Morgen liebe Gemeinde,
habe folgende Aufgabenstellung und suche nach einer netten Lösung.
Wir wollen aus SAP heraus bei einer Änderung der Kundenstammdaten diese Kunden per Mail über die Änderungen informieren. Die Änderungen sollen in einem PDF - Dokument als Anhang verschickt werden.
Mir fehlt ein wenig der Ansatz dieses voll automatisch zu starten. Der Sachbearbeiter sollte möglichst keine Eingriffsmöglichkeit mehr haben.
Hat jemand Erfahrung und/oder eine Idee?
Einen schönen Arbeitstag und Grüsse aus Hamburg
BuBaHH
SAP - ALD versenden des PDF automatisch via Mail.
SAP - ALD versenden des PDF automatisch via Mail.
habe die Lösung gefunden ...
SPAN { font-family: "Courier New"; font-size: 10pt; color: #000000; background: #FFFFFF; } .L4S31 { font-style: italic; color: #808080; } .L4S32 { color: #3399FF; } .L4S33 { color: #4DA619; } .L4S52 { color: #0000FF; } * Setzen der Ausgabeparameter und Öffnen des Spool-Jobs
CALL FUNCTION 'FP_JOB_OPEN'
CHANGING
IE_OUTPUTPARAMS = FP_OUTPUTPARAMS
EXCEPTIONS
CANCEL = 1
USAGE_ERROR = 2
SYSTEM_ERROR = 3
INTERNAL_ERROR = 4
OTHERS = 5.
* Name des generierten Funktionsbausteines ermitteln
CALL FUNCTION 'FP_FUNCTION_MODULE_NAME'
EXPORTING
I_NAME = 'ZBM_PDF_SAVE'
IMPORTING
E_FUNCNAME = FM_NAME.
CALL FUNCTION FM_NAME
EXPORTING
/1BCDWB/DOCPARAMS = FP_DOCPARAMS
IMPORTING
/1BCDWB/FORMOUTPUT = FPFORMOUTPUT
EXCEPTIONS
USAGE_ERROR = 1
SYSTEM_ERROR = 2
INTERNAL_ERROR = 3
OTHERS = 4.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
* Spool-Job schließen
CALL FUNCTION 'FP_JOB_CLOSE'
EXCEPTIONS
USAGE_ERROR = 1
SYSTEM_ERROR = 2
INTERNAL_ERROR = 3
OTHERS = 4.
***************************************************************************************+
* PDF Speichern.
DATA: L_LEN TYPE I,
L_TAB TYPE TSFIXML,
L_FILENAME TYPE STRING VALUE 'C:\TEMP\ASDF1.pdf'.
DATA : P_DATA TYPE XSTRING.
DATA : P_FILE TYPE LOCALFILE.
P_DATA = FPFORMOUTPUT-PDF.
CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'
EXPORTING
BUFFER = P_DATA
IMPORTING
OUTPUT_LENGTH = L_LEN
TABLES
BINARY_TAB = L_TAB.
CALL METHOD CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD
EXPORTING
BIN_FILESIZE = L_LEN
FILENAME = L_FILENAME
FILETYPE = 'BIN'
CHANGING
DATA_TAB = L_TAB
EXCEPTIONS
OTHERS = 1.
***************************************************************************
* BCS data
DATA SEND_REQUEST TYPE REF TO CL_BCS.
DATA TEXT TYPE BCSY_TEXT.
DATA DOCUMENT TYPE REF TO CL_DOCUMENT_BCS.
DATA RECIPIENT TYPE REF TO IF_RECIPIENT_BCS.
DATA: BCS_EXCEPTION TYPE REF TO CX_BCS.
DATA SENT_TO_ALL TYPE OS_BOOLEAN.
DATA PDF_CONTENT TYPE SOLIX_TAB.
DATA LP_PDF_SIZE TYPE SO_OBJ_LEN.
DATA : P_EMAIL TYPE AD_SMTPADR VALUE 'Juergen.Witt@Bundesbank.de'.
TRY.
* --------- create persistent send request ---------------------
SEND_REQUEST = CL_BCS=>CREATE_PERSISTENT( ).
* --------- add document ---------------------------------------
* get PDF xstring and convert it to BCS format
LP_PDF_SIZE = XSTRLEN( FPFORMOUTPUT-PDF ).
PDF_CONTENT = CL_DOCUMENT_BCS=>XSTRING_TO_SOLIX(
IP_XSTRING = FPFORMOUTPUT-PDF ).
DOCUMENT = CL_DOCUMENT_BCS=>CREATE_DOCUMENT(
I_TYPE = 'PDF'
I_HEX = PDF_CONTENT
I_LENGTH = LP_PDF_SIZE
I_SUBJECT = 'WWI = WAS WEISS ICH ...' ). "#EC NOTEXT
* add document to send request
SEND_REQUEST->SET_DOCUMENT( DOCUMENT ).
* --------- add recipient (e-mail address) ---------------------
RECIPIENT = CL_CAM_ADDRESS_BCS=>CREATE_INTERNET_ADDRESS(
I_ADDRESS_STRING = P_EMAIL ).
* add recipient to send request
SEND_REQUEST->ADD_RECIPIENT( I_RECIPIENT = RECIPIENT ).
* --------- send document --------------------------------------
SENT_TO_ALL = SEND_REQUEST->SEND(
I_WITH_ERROR_SCREEN = 'X' ).
IF SENT_TO_ALL = 'X'.
MESSAGE I022(SO).
ENDIF.
* --------- explicit 'commit work' is mandatory! ---------------
COMMIT WORK.
SPAN { font-family: "Courier New"; font-size: 10pt; color: #000000; background: #FFFFFF; } .L4S31 { font-style: italic; color: #808080; } .L4S32 { color: #3399FF; } .L4S33 { color: #4DA619; } .L4S52 { color: #0000FF; } * Setzen der Ausgabeparameter und Öffnen des Spool-Jobs
CALL FUNCTION 'FP_JOB_OPEN'
CHANGING
IE_OUTPUTPARAMS = FP_OUTPUTPARAMS
EXCEPTIONS
CANCEL = 1
USAGE_ERROR = 2
SYSTEM_ERROR = 3
INTERNAL_ERROR = 4
OTHERS = 5.
* Name des generierten Funktionsbausteines ermitteln
CALL FUNCTION 'FP_FUNCTION_MODULE_NAME'
EXPORTING
I_NAME = 'ZBM_PDF_SAVE'
IMPORTING
E_FUNCNAME = FM_NAME.
CALL FUNCTION FM_NAME
EXPORTING
/1BCDWB/DOCPARAMS = FP_DOCPARAMS
IMPORTING
/1BCDWB/FORMOUTPUT = FPFORMOUTPUT
EXCEPTIONS
USAGE_ERROR = 1
SYSTEM_ERROR = 2
INTERNAL_ERROR = 3
OTHERS = 4.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
* Spool-Job schließen
CALL FUNCTION 'FP_JOB_CLOSE'
EXCEPTIONS
USAGE_ERROR = 1
SYSTEM_ERROR = 2
INTERNAL_ERROR = 3
OTHERS = 4.
***************************************************************************************+
* PDF Speichern.
DATA: L_LEN TYPE I,
L_TAB TYPE TSFIXML,
L_FILENAME TYPE STRING VALUE 'C:\TEMP\ASDF1.pdf'.
DATA : P_DATA TYPE XSTRING.
DATA : P_FILE TYPE LOCALFILE.
P_DATA = FPFORMOUTPUT-PDF.
CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'
EXPORTING
BUFFER = P_DATA
IMPORTING
OUTPUT_LENGTH = L_LEN
TABLES
BINARY_TAB = L_TAB.
CALL METHOD CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD
EXPORTING
BIN_FILESIZE = L_LEN
FILENAME = L_FILENAME
FILETYPE = 'BIN'
CHANGING
DATA_TAB = L_TAB
EXCEPTIONS
OTHERS = 1.
***************************************************************************
* BCS data
DATA SEND_REQUEST TYPE REF TO CL_BCS.
DATA TEXT TYPE BCSY_TEXT.
DATA DOCUMENT TYPE REF TO CL_DOCUMENT_BCS.
DATA RECIPIENT TYPE REF TO IF_RECIPIENT_BCS.
DATA: BCS_EXCEPTION TYPE REF TO CX_BCS.
DATA SENT_TO_ALL TYPE OS_BOOLEAN.
DATA PDF_CONTENT TYPE SOLIX_TAB.
DATA LP_PDF_SIZE TYPE SO_OBJ_LEN.
DATA : P_EMAIL TYPE AD_SMTPADR VALUE 'Juergen.Witt@Bundesbank.de'.
TRY.
* --------- create persistent send request ---------------------
SEND_REQUEST = CL_BCS=>CREATE_PERSISTENT( ).
* --------- add document ---------------------------------------
* get PDF xstring and convert it to BCS format
LP_PDF_SIZE = XSTRLEN( FPFORMOUTPUT-PDF ).
PDF_CONTENT = CL_DOCUMENT_BCS=>XSTRING_TO_SOLIX(
IP_XSTRING = FPFORMOUTPUT-PDF ).
DOCUMENT = CL_DOCUMENT_BCS=>CREATE_DOCUMENT(
I_TYPE = 'PDF'
I_HEX = PDF_CONTENT
I_LENGTH = LP_PDF_SIZE
I_SUBJECT = 'WWI = WAS WEISS ICH ...' ). "#EC NOTEXT
* add document to send request
SEND_REQUEST->SET_DOCUMENT( DOCUMENT ).
* --------- add recipient (e-mail address) ---------------------
RECIPIENT = CL_CAM_ADDRESS_BCS=>CREATE_INTERNET_ADDRESS(
I_ADDRESS_STRING = P_EMAIL ).
* add recipient to send request
SEND_REQUEST->ADD_RECIPIENT( I_RECIPIENT = RECIPIENT ).
* --------- send document --------------------------------------
SENT_TO_ALL = SEND_REQUEST->SEND(
I_WITH_ERROR_SCREEN = 'X' ).
IF SENT_TO_ALL = 'X'.
MESSAGE I022(SO).
ENDIF.
* --------- explicit 'commit work' is mandatory! ---------------
COMMIT WORK.