SAP - ALD versenden des PDF automatisch via Mail.

Per Email, Webservices oder ähnliches...
Antworten
BuBaHH
Beiträge: 4
Registriert: 10.11.2010, 11:55

SAP - ALD versenden des PDF automatisch via Mail.

Beitrag von BuBaHH » 25.01.2011, 07:08

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

BuBaHH
Beiträge: 4
Registriert: 10.11.2010, 11:55

SAP - ALD versenden des PDF automatisch via Mail.

Beitrag von BuBaHH » 27.01.2011, 12:18

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.

Antworten