SAP 发送邮件例子(外部)详解编程语言

*…………………………………………………………….*


*: Report ZSAPTALK                                                   :*


*: Author SAPdev.co.uk                                               :*


*:……………………………………………………………*


*: Description :                                                      :*


*:………….:                                                      :*


*: Send mail message to SAP mail inbox.                               :*


*:                                                                    :*


*:                     Please visit www.sapdev.co.uk for further info :*


*:…………………………………………………………..:*


REPORT ZSAPMAIL NO STANDARD PAGE HEADING.




TABLES: DRAD,


        QINF,


        DRAW,


        SOUC,


        SOFD,


        DRAP.




DATA: P_RETURN_CODE LIKE SY-SUBRC.




data: d_username LIKE DRAP-PRNAM.




* mail declarations


DATA : BEGIN OF NEW_OBJECT_ID.         ” the newly created email object


        INCLUDE STRUCTURE SOODK.


DATA : END OF NEW_OBJECT_ID.




DATA : BEGIN OF FOLDER_ID.             ” the folder id of the outbox


        INCLUDE STRUCTURE SOODK.


DATA : END OF FOLDER_ID.




DATA : BEGIN OF REC_TAB OCCURS 5.     ” the table which will contain the


        INCLUDE STRUCTURE SOOS1.       ” information on the destination


DATA : END OF REC_TAB.




DATA : BEGIN OF OBJECT_HD_CHANGE.      ” the table which contains the


        INCLUDE STRUCTURE SOOD1.       ” info for the object we will be


DATA : END OF OBJECT_HD_CHANGE.        ” creating




DATA : OBJECT_TYPE LIKE SOOD-OBJTP.    ” the type of object




DATA : BEGIN OF OBJHEAD OCCURS 5.      ” the header of the object


        INCLUDE STRUCTURE SOLI.


DATA : END OF OBJHEAD.




DATA : BEGIN OF OBJCONT OCCURS 0.      ” the contents of the object


        INCLUDE STRUCTURE SOLI.        ” i.e. the text etc


DATA : END OF OBJCONT.




DATA : BEGIN OF OBJPARA OCCURS 5.      ” formatting options


        INCLUDE STRUCTURE SELC.


DATA : END OF OBJPARA.




DATA : BEGIN OF OBJPARB OCCURS 5.      ” formatting options


        INCLUDE STRUCTURE SOOP1.


DATA : END OF OBJPARB.




DATA : BEGIN OF T_MAIL_TEXT OCCURS 0, “Message table for messages to


        STRING(255),                   “user via mailbox


       END OF T_MAIL_TEXT.




Parameter: p_uname like sy-uname.






************************************************************************


**START-OF-SELECTION


START-OF-SELECTION.


    d_username = p_uname.


    PERFORM POPULATE_EMAIL_TEXT.




    PERFORM SETUP_TRX_AND_RTX_MAILBOXES USING P_RETURN_CODE.


    PERFORM CREATE_AND_SEND_MAIL_OBJECT.






*———————————————————————*


*       FORM POPULATE_EMAIL_TEXT                                      *


*———————————————————————*


*       Inserts text for email message                                *


*———————————————————————*


FORM POPULATE_EMAIL_TEXT.


CLEAR T_MAIL_TEXT-STRING.            “puts a blank line in


APPEND T_MAIL_TEXT.


APPEND T_MAIL_TEXT.




* adds failed list on to end of success list.


T_MAIL_TEXT-STRING = ‘Test email message line 1’.


APPEND T_MAIL_TEXT.


T_MAIL_TEXT-STRING = ‘Test email message line 1’.


APPEND T_MAIL_TEXT.


CLEAR T_MAIL_TEXT-STRING.            “puts a blank line in


APPEND T_MAIL_TEXT.


T_MAIL_TEXT-STRING = ‘Header1    Header2    Header3’.


APPEND T_MAIL_TEXT.


T_MAIL_TEXT-STRING = ‘————    ————    ————‘.


APPEND T_MAIL_TEXT.


ENDFORM.






*&———————————————————————*


*&      Form SETUP_TRX_&_RTX_MAILBOXES


*&———————————————————————*


*   Ensure that the mailboxes of the sender (INTMGR) are set up OK


*———————————————————————-*


FORM SETUP_TRX_AND_RTX_MAILBOXES USING P_RETURN_CODE.




* get the user no of the sender in order to add the mail to the


* user name’s outbox for future reference


SELECT SINGLE * FROM SOUC


           WHERE SAPNAM = SY-UNAME.    “SAP name of a SAPoffice user


IF SY-SUBRC NE 0.


    “Error finding the SAPoffice user info for the user


    MESSAGE E064(ZR53) WITH SY-UNAME.


    P_RETURN_CODE = 1.


    EXIT.


ENDIF.


*Get the outbox No for the sender from the user No where the folder


                                       ” type is an outbox


SELECT * FROM SOFD WHERE OWNTP = SOUC-USRTP   “Owner type from ID


                       AND OWNYR = SOUC-USRYR   “Owner year from the ID


                       AND OWNNO = SOUC-USRNO   “Owner number from the I


                       AND FOLRG = ‘O’.”Output box


ENDSELECT.




IF SY-SUBRC NE 0.


    ” Error getting folder information for the user


    MESSAGE E065(ZR53) WITH SY-UNAME.


    P_RETURN_CODE = 1.


    EXIT.


ENDIF.


ENDFORM.                               ” SETUP_TRX_&_RTX_MAILBOXES






*&———————————————————————*


*&      Form CREATE_AND_SEND_MAIL_OBJECT


*&———————————————————————*


FORM CREATE_AND_SEND_MAIL_OBJECT.




FOLDER_ID-OBJTP = SOFD-FOLTP.        ” the folder type ( usually FOL )


FOLDER_ID-OBJYR = SOFD-FOLYR.        ” the folder year ( usually 22 )


FOLDER_ID-OBJNO = SOFD-FOLNO.        ” the folder no.


OBJECT_TYPE     = ‘RAW’.             ” the type of object being added




* build up the object information for creating the object


OBJECT_HD_CHANGE-OBJLA = SY-LANGU. ” the language of the email


OBJECT_HD_CHANGE-OBJNAM = ‘PS to DM Interface’. ” the object name




* mail subject ‘Mass Linking of QA, pass/fail’


MOVE TEXT-002 TO OBJECT_HD_CHANGE-OBJDES.




OBJECT_HD_CHANGE-DLDAT = SY-DATUM.   ” the date of the email


OBJECT_HD_CHANGE-DLTIM = SY-UZEIT.   ” the time of the email


OBJECT_HD_CHANGE-OBJPRI = ‘1’.       ” the priority ( highest )


OBJECT_HD_CHANGE-OBJSNS = ‘F’.       ” the object sensitivity


* F is functional, C – company sensitive




* object_hd_change-skips = ‘ ‘.       ” Skip first screen


* object_hd_change-acnam = ‘SM35’.    ” Batch imput transaction




* object_hd_change-vmtyp = ‘T’.       ” Transaction type




* add the text lines into the contents of the email


CLEAR OBJCONT.


REFRESH OBJCONT.


* free objcont.      ” added this to delete the mail contents records


LOOP AT T_MAIL_TEXT.


    OBJCONT-LINE = T_MAIL_TEXT-STRING.


    APPEND OBJCONT.


ENDLOOP.


CLEAR OBJCONT.




* build up the table of receivers for the email


REC_TAB-RCDAT = SY-DATUM.            ” the date to send the email


REC_TAB-RCTIM = SY-UZEIT.            ” the time to send the email


* the SAP username of the person who will receive the email


REC_TAB-RECNAM = D_USERNAME.


* the user type of the person who will send the email ( USR )


REC_TAB-SNDTP = SOUC-USRTP.


* the user year of the person who will send the email ( 22 )


REC_TAB-SNDYR = SOUC-USRYR.


* the user number of the person who will send the email


REC_TAB-SNDNO = SOUC-USRNO.


* the sap username of the person who will send the email


REC_TAB-SNDNAM = SY-UNAME.




* get the user info for the receiver of the document


SELECT SINGLE * FROM SOUC WHERE SAPNAM = D_USERNAME.


IF SY-SUBRC NE 0.


    WRITE : / TEXT-001, D_USERNAME.    “usnam.


    EXIT.


ENDIF.




* the user number of the person who will receive the email ( USR )


REC_TAB-RECNO = SOUC-USRNO.


* the user type of the person who will receive the email ( USR )


REC_TAB-RECTP = SOUC-USRTP.


* the user year of the person who will receive the email ( USR )


REC_TAB-RECYR = SOUC-USRYR.


* the priority of the email ( highest )


REC_TAB-SNDPRI = ‘1’.


* check for delivery on the email


REC_TAB-DELIVER = ‘X’.


* send express so recipient knows there is a problem


REC_TAB-SNDEX = ‘X’.


* check for a return receipt


REC_TAB-READ = ‘X’.


* the sap username of the person receiving the email


REC_TAB-ADR_NAME = D_USERNAME.       “usnam.


* add this receiver to the internal table


APPEND REC_TAB.


CLEAR REC_TAB.




* call the function to create the object in the outbox of the sender


CALL FUNCTION ‘SO_OBJECT_INSERT’


       EXPORTING


            FOLDER_ID                  = FOLDER_ID


            OBJECT_HD_CHANGE           = OBJECT_HD_CHANGE


            OBJECT_TYPE                = OBJECT_TYPE


            OWNER                      = SY-UNAME


       IMPORTING


            OBJECT_ID                  = NEW_OBJECT_ID


       TABLES


            OBJCONT                    = OBJCONT


            OBJHEAD                    = OBJHEAD


            OBJPARA                    = OBJPARA


            OBJPARB                    = OBJPARB


       EXCEPTIONS


            ACTIVE_USER_NOT_EXIST      = 1


            COMMUNICATION_FAILURE      = 2


            COMPONENT_NOT_AVAILABLE    = 3


            DL_NAME_EXIST              = 4


            FOLDER_NOT_EXIST           = 5


            FOLDER_NO_AUTHORIZATION    = 6


            OBJECT_TYPE_NOT_EXIST      = 7


            OPERATION_NO_AUTHORIZATION = 8


            OWNER_NOT_EXIST            = 9


            PARAMETER_ERROR            = 10


            SUBSTITUTE_NOT_ACTIVE      = 11


            SUBSTITUTE_NOT_DEFINED     = 12


            SYSTEM_FAILURE             = 13


            X_ERROR                    = 14


            OTHERS                     = 15.


IF SY-SUBRC NE 0.


    MESSAGE A063(ZR53) WITH SY-SUBRC.


    EXIT.


ENDIF.




* call the function to send the already created email to the receivers


CALL FUNCTION ‘SO_OBJECT_SEND’


       EXPORTING


            FOLDER_ID                  = FOLDER_ID


            OBJECT_ID                  = NEW_OBJECT_ID


            OUTBOX_FLAG                = ‘X’


            OWNER                      = SY-UNAME


       TABLES


            RECEIVERS                  = REC_TAB


       EXCEPTIONS


            ACTIVE_USER_NOT_EXIST      = 1


            COMMUNICATION_FAILURE      = 2


            COMPONENT_NOT_AVAILABLE    = 3


            FOLDER_NOT_EXIST           = 4


            FOLDER_NO_AUTHORIZATION    = 5


            FORWARDER_NOT_EXIST        = 6


            NOTE_NOT_EXIST             = 7


            OBJECT_NOT_EXIST           = 8


            OBJECT_NOT_SENT            = 9


            OBJECT_NO_AUTHORIZATION    = 10


            OBJECT_TYPE_NOT_EXIST      = 11


            OPERATION_NO_AUTHORIZATION = 12


            OWNER_NOT_EXIST            = 13


            PARAMETER_ERROR            = 14


            SUBSTITUTE_NOT_ACTIVE      = 15


            SUBSTITUTE_NOT_DEFINED     = 16


            SYSTEM_FAILURE             = 17


            TOO_MUCH_RECEIVERS         = 18


            USER_NOT_EXIST             = 19


            X_ERROR                    = 20


            OTHERS                     = 21.


IF SY-SUBRC EQ 0.


    MESSAGE I035(ZR53) WITH NEW_OBJECT_ID D_USERNAME. “usnam.


ELSE.


    MESSAGE I036(ZR53) WITH D_USERNAME.”      sy-subrc.


ENDIF.


ENDFORM.                               ” CREATE_AND_SEND_MAIL_OBJECT

原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/20183.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论