Skip to Content
0
Former Member
May 16, 2008 at 04:35 AM

Dynamic Actions-Manoj Kumar

48 Views

Hi Manoj

My Program is

REPORT z250_send_mail.

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 default 'kaav07'.

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

**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

this program is working fine and i have written the dynamic actions as CREATE_AND_SEND_MAIL_OBJECT(Z250_SEND_MAIL) in the variable function part. But i didnt get any mail in my inbox.CAn you please explain me how to execute and check the mail.my remainder date in the infotype 0019 is 15.05.2008.

Thanks and Regards,

Ashu