Function SO_DOCUMENT_SEND_API1 (send mails) Substitutions-user-exit
Hello Forum,
I have to make a substitution (user-exit) for this perform.
PERFORM U999 (ZRGGBS000) IF FOUND.
As this code is standard, I gather that I can not touch it.
My development is in the FORM and I can't control the parameters
I leave the code here, you can try to find the solution that I need:
FORM u999.
*FORM u999 TABLES tab_contents_txt
* it_attach
* USING p_email
* p_mtitle
* p_format
* p_filename
* p_attdescription
* p_sender_address
* p_sender_addres_type
* CHANGING p_error
* p_reciever.
DATA: int_error TYPE sy-subrc,
int_receiver LIKE sy-subrc.
DATA: w_doc_data LIKE sodocchgi1,
chr_email LIKE somlreci1-receiver.
DATA:
tab_contents_txt LIKE solisti1 OCCURS 0 WITH HEADER LINE,
tab_packing_list LIKE sopcklsti1 OCCURS 0 WITH HEADER LINE,
tab_receivers LIKE somlreci1 OCCURS 0 WITH HEADER LINE.
CALL FUNCTION 'SO_DOCUMENT_SEND_API1'
EXPORTING
document_data = w_doc_data
put_in_outbox = 'X'
* SENDER_ADDRESS = SY-UNAME
* SENDER_ADDRESS_TYPE = 'B'
commit_work = 'X'
* IMPORTING
* SENT_TO_ALL =
* NEW_OBJECT_ID =
* SENDER_ID =
TABLES
packing_list = tab_packing_list
* OBJECT_HEADER =
* CONTENTS_BIN =
contents_txt = tab_contents_txt
* CONTENTS_HEX =
* OBJECT_PARA =
* OBJECT_PARB =
receivers = tab_receivers
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
Hi,
Try this..Call the FM in BACKGROUND TASK..
CALL FUNCTION 'SO_DOCUMENT_SEND_API1'
IN BACKGROUND TASK
Thanks,
Naren
Similar Messages
-
Function SO_DOCUMENT_SEND_API1 (substitution-user exit about mails )
Hello Forum,
I have to make a substitution (user-exit) for this perform.
Moderator message - Please respect the 2,500 character maximum when posting. Post only the relevant portions of code. And also use code tags.
Edited by: Rob Burbank on Jan 18, 2010 2:48 PMHello Forum,
I have to make a substitution (user-exit) for this perform.
Moderator message - Please respect the 2,500 character maximum when posting. Post only the relevant portions of code. And also use code tags.
Edited by: Rob Burbank on Jan 18, 2010 2:48 PM -
As01 transaction using substitution user exit populate classificaion
Hi all,
I have a requirement, where in using the substitution user exit rule U210, I need to populate fields ANLB-NDPER, ANLB-NDJAR and ALNA-VMGLI from the values maintained in Ztable.
I am able to overwrite the SAP standard values for the fields ANLB-NDPER and ANLB-NDJAR. But not able to populate the filed VMGLI(Classification key).
For some asset classes, the classification key is not mandatory and the user without giving the value in that field if save the transaction, then I need to populate the value of VMGLI with the ztable value.
The present rule U210 is not working for classification key.
Please suggest, is there any other user exit for the scenario where we can populate VBGLI field.
regards
Rajani YeluriIn the user exit documentation, it doesn't say anything about this exit being used for validation, therefore, it probably shouldn't be used as a validation routine, especially if its not being trigger at every PAI.
<i>FU EXIT_SAPLAISA_001
Short text
Assign Inventory Number
Functionality
Using this user exit, it is possible to assign an inventory number when you create a new asset master record.
Notes
In the user exit, it is absolutely forbidden to use a statement that leads to an update or removal of database changes. Examples of such statements are:
'Commit Work' , 'Rollback Work' or call of function module 'DB_COMMIT'.
Parameter
I_ANLA
E_INVNR
Exceptions
Function group
XAIS</i>
Regards,
Rich Heilman -
Looking for function that send mail
I AM LOOKING FOR A FUNCTION THAT SEND MAIL
<b><b>WITH ATTACMENT ONLY</b> ANYONE KNOW????
THANKS.REPORT ZMAILOUTPUT
MESSAGE-ID ZZ.
* CONSTANTS *
CONSTANTS : C_X(1) TYPE C VALUE 'X', " For constant value
C_OTF(3) TYPE C VALUE 'OTF', " For format
C_U(1) TYPE C VALUE 'U'. " Mail Option
* VARIABLES *
DATA : V_RQIDENT TYPE TSP01-RQIDENT, " For Spool Number
V_RQCLIENT TYPE TSP01-RQCLIENT, " For Client
V_RQO1NAME TYPE TSP01-RQO1NAME, " For Object name
V_SPOOL TYPE TSP01-RQIDENT, " For Spool Number
V_SPOOL1 TYPE TSP01-RQIDENT. " For Spool Number
* FLAGS *
DATA : F_SPOOL TYPE C.
* INTERNAL TABLES *
* Internal table for sending mails
DATA: IT_PDF LIKE TLINE OCCURS 10 WITH HEADER LINE,
IT_XI_PDF LIKE TLINE OCCURS 0 WITH HEADER LINE,
IT_HTML LIKE SOLISTI1 OCCURS 0 WITH HEADER LINE,
IT_XI_TEMP LIKE BAPIQCMIME OCCURS 0 WITH HEADER LINE,
IT_XI_MIME(255) TYPE C OCCURS 0 WITH HEADER LINE.
* For sending mail
DATA: IT_OBJPACK LIKE SOPCKLSTI1 OCCURS 2 WITH HEADER LINE.
* Internal table for Single List with Column Length 255
DATA : IT_OBJBIN LIKE SOLISTI1 OCCURS 10 WITH HEADER LINE.
* Internal table for Single List with Column Length 255
DATA : IT_OBJTXT LIKE SOLISTI1 OCCURS 10 WITH HEADER LINE.
* Internal table for Structure of the API Recipient List
DATA : IT_RECLIST LIKE SOMLRECI1 OCCURS 5 WITH HEADER LINE.
* Structure of the API Recipient List
DATA: X_DOC_CHNG LIKE SODOCCHGI1.
* Internal table for storing the variants
DATA : BEGIN OF IT_VARIANT1 OCCURS 0,
VARIANT LIKE VARID-VARIANT,
END OF IT_VARIANT1.
* Internal table to store variants for the programs
DATA: IT_VARIANT2 LIKE IT_VARIANT1 OCCURS 0 WITH HEADER LINE.
* Internal table for storing the selected values
DATA IT_RETURN TYPE DDSHRETVAL OCCURS 0 WITH HEADER LINE.
* Internal table for storing the mail-ids
DATA : BEGIN OF IT_MAILID OCCURS 0,
KOKRS LIKE CSKS-KOKRS,
KOSTL LIKE CSKS-KOSTL,
DATBI LIKE CSKS-DATBI,
TELX1 LIKE CSKS-TELX1,
END OF IT_MAILID.
* Internal table for storing the mail-ids
DATA : IT_MAILID1 LIKE IT_MAILID OCCURS 0 WITH HEADER LINE.
* SELECTION SCREEN *
DATA : V_CHAR TYPE CHAR50.
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS: S_EMAIL FOR V_CHAR NO INTERVALS
LOWER CASE
NO-DISPLAY.
SELECT-OPTIONS: S_EMAIL1 FOR V_CHAR NO INTERVALS
LOWER CASE
NO-DISPLAY.
SELECTION-SCREEN END OF BLOCK B1.
SELECTION-SCREEN BEGIN OF BLOCK A1 WITH FRAME TITLE TEXT-028.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS : P_C1 AS CHECKBOX.
SELECTION-SCREEN COMMENT 3(66) TEXT-026 FOR FIELD P_C1.
SELECTION-SCREEN END OF LINE.
PARAMETERS : P_SET LIKE TSP1D-PAPART MATCHCODE OBJECT ZH_TSP1D.
SELECTION-SCREEN SKIP 1.
PARAMETERS : P_VARA1 TYPE RS38M-SELSET.
SELECTION-SCREEN END OF BLOCK A1.
SELECTION-SCREEN BEGIN OF BLOCK A2 WITH FRAME TITLE TEXT-029.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS : P_C2 AS CHECKBOX.
SELECTION-SCREEN COMMENT 3(56) TEXT-027 FOR FIELD P_C1.
SELECTION-SCREEN END OF LINE.
PARAMETERS : P_SET1 LIKE TSP1D-PAPART MATCHCODE OBJECT ZH_TSP1D.
SELECTION-SCREEN SKIP 1.
PARAMETERS : P_VARA2 TYPE RS38M-SELSET.
SELECTION-SCREEN END OF BLOCK A2.
* AT SELECTION SCREEN ON VALUE REQUEST
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_VARA1.
* For fetching the variants available for the program
PERFORM FETCH_VARIANTS.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_VARA2.
* For fetching the variants available for the program
PERFORM FETCH_VARIANTS1.
* AT SELECTION SCREEN
AT SELECTION-SCREEN.
* For Validation
PERFORM VALIDATION.
* START OF SELECTION *
START-OF-SELECTION.
* To get the output data and mail
PERFORM FETCH_DATA.
* END OF SELECTION *
END-OF-SELECTION.
IF F_SPOOL = C_X.
MESSAGE E000 WITH 'Spool Not Generated'(060).
ENDIF.
*& Form fetch_data
* To get the output data and mail
FORM FETCH_DATA .
* To send the output to spool
PERFORM GENERATE_SPOOL.
ENDFORM. " fetch_data
*& Form generate_spool
* To send the output to spool
FORM GENERATE_SPOOL .
DATA: L_PARAMS LIKE PRI_PARAMS,
L_DAYS(1) TYPE N VALUE 2,
L_COUNT(3) TYPE N VALUE 1,
L_VALID TYPE C,
L_VALID1 TYPE C,
L_PARAMS1 LIKE PRI_PARAMS.
DATA: L_DEVICE TYPE USR01-SPLD.
*Get the printer name for the user
SELECT SINGLE SPLD INTO L_DEVICE FROM USR01 WHERE BNAME = SY-UNAME.
IF L_DEVICE IS INITIAL.
L_DEVICE = 'LOCL'.
ENDIF.
* For report-1
IF P_C1 = 'X'.
* Setting the print parameters
CALL FUNCTION 'GET_PRINT_PARAMETERS'
EXPORTING
DESTINATION = L_DEVICE
COPIES = L_COUNT
LIST_NAME = SY-UNAME
LIST_TEXT = 'SUBMIT ... TO SAP-SPOOL'(008)
RELEASE = C_X
NEW_LIST_ID = C_X
EXPIRATION = L_DAYS
* LINE_SIZE = 255
* LINE_COUNT = 65
LAYOUT = p_set
SAP_COVER_PAGE = SPACE
COVER_PAGE = SPACE
RECEIVER = 'SAP*'(010)
DEPARTMENT = 'System'(011)
NO_DIALOG = C_X
IMPORTING
OUT_PARAMETERS = L_PARAMS
VALID = L_VALID.
IF L_VALID <> SPACE.
CLEAR V_SPOOL.
* Fetch the spool number b4 submit
PERFORM FETCH_RECENT_SPOOL USING V_SPOOL.
* Submitting the program to spool
SUBMIT RKAEP000 TO SAP-SPOOL
USING SELECTION-SET P_VARA1
SPOOL PARAMETERS L_PARAMS
WITHOUT SPOOL DYNPRO
AND RETURN.
CLEAR V_SPOOL1.
* Fetch the spool number after submit
PERFORM FETCH_RECENT_SPOOL USING V_SPOOL1.
IF V_SPOOL = V_SPOOL1.
F_SPOOL = C_X.
IF P_C2 IS INITIAL.
STOP.
ENDIF.
ELSE.
* Checking the format ( ABAP/OTF)
PERFORM FORMAT_CHECK TABLES S_EMAIL.
ENDIF.
ELSE.
MESSAGE E000 WITH 'Problem in print settings'(003).
STOP.
ENDIF.
ENDIF.
* For Report-2
IF P_C2 = 'X'.
* Setting the print parameters
CALL FUNCTION 'GET_PRINT_PARAMETERS'
EXPORTING
DESTINATION = L_DEVICE
COPIES = L_COUNT
LIST_NAME = SY-UNAME
LIST_TEXT = 'SUBMIT ... TO SAP-SPOOL'(008)
RELEASE = C_X
NEW_LIST_ID = C_X
EXPIRATION = L_DAYS
* LINE_SIZE = 200
* LINE_COUNT = 65
LAYOUT = p_set1
SAP_COVER_PAGE = SPACE
COVER_PAGE = SPACE
RECEIVER = 'SAP*'(010)
DEPARTMENT = 'System'(011)
NO_DIALOG = C_X
IMPORTING
OUT_PARAMETERS = L_PARAMS1
VALID = L_VALID1.
IF L_VALID1 <> SPACE.
CLEAR V_SPOOL.
* Fetch the spool number b4 submit
PERFORM FETCH_RECENT_SPOOL USING V_SPOOL.
* Submitting the program to spool
SUBMIT GP3DIEHXY88SNFJ0391V7KF9EK7050 TO SAP-SPOOL
USING SELECTION-SET P_VARA2
SPOOL PARAMETERS L_PARAMS1
WITHOUT SPOOL DYNPRO
AND RETURN.
CLEAR V_SPOOL1.
* Fetch the spool number after submit
PERFORM FETCH_RECENT_SPOOL USING V_SPOOL1.
IF V_SPOOL = V_SPOOL1.
MESSAGE E000 WITH 'Spool Not Generated'(060).
STOP.
ENDIF.
* Checking the format ( ABAP/OTF)
PERFORM FORMAT_CHECK TABLES S_EMAIL1.
ELSE.
MESSAGE E000 WITH 'Problem in print settings'(003).
STOP.
ENDIF.
ENDIF.
ENDFORM. " generate_spool
*& Form fetch_recent_spool
* Fetch the recent spool number generated
FORM FETCH_RECENT_SPOOL USING P_V_SPOOL TYPE TSP01-RQIDENT .
DATA: L_USER LIKE TSP01-RQ2NAME.
CLEAR : V_RQIDENT,
V_RQCLIENT,
V_RQO1NAME.
L_USER = SY-UNAME.
* Get latest Spool No
SELECT SINGLE RQIDENT
RQCLIENT
RQO1NAME
INTO (V_RQIDENT , V_RQCLIENT , V_RQO1NAME)
FROM TSP01
WHERE RQCRETIME = ( SELECT MAX( RQCRETIME )
FROM TSP01
WHERE RQ2NAME EQ L_USER
AND RQFINAL EQ '.' ).
IF SY-SUBRC = 0 .
P_V_SPOOL = V_RQIDENT.
ENDIF.
ENDFORM. " fetch_recent_spool
*& Form format_check
* Checking the format ( ABAP/OTF)
FORM FORMAT_CHECK TABLES P_S_EMAIL STRUCTURE S_EMAIL.
DATA : L_OBJTYPE LIKE RSTSTYPE-TYPE.
CALL FUNCTION 'RSTS_GET_ATTRIBUTES'
EXPORTING
AUTHORITY = 'SP01'(019)
CLIENT = V_RQCLIENT
NAME = V_RQO1NAME
PART = 1
IMPORTING
OBJTYPE = L_OBJTYPE
EXCEPTIONS
FB_ERROR = 1
FB_RSTS_OTHER = 2
NO_OBJECT = 3
NO_PERMISSION = 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.
IF L_OBJTYPE(3) = C_OTF.
* Convert OTF Spool to PDF
PERFORM CONVERT_OTF2PDF TABLES P_S_EMAIL.
ELSE.
* Convert ABAP Spool to PDF
PERFORM CONVERT_ABAP2PDF TABLES P_S_EMAIL.
ENDIF.
ENDFORM. " format_check
*& Form convert_otf2pdf
* Convert OTF Spool to PDF
FORM CONVERT_OTF2PDF TABLES P_P_S_EMAIL STRUCTURE S_EMAIL .
CLEAR IT_PDF.
REFRESH IT_PDF.
DATA : L_BYTECOUNT TYPE I.
* Fn. to get the PDF format
CALL FUNCTION 'CONVERT_OTFSPOOLJOB_2_PDF'
EXPORTING
SRC_SPOOLID = V_RQIDENT
NO_DIALOG = 'X'
IMPORTING
PDF_BYTECOUNT = L_BYTECOUNT
TABLES
PDF = IT_PDF
EXCEPTIONS
ERR_NO_OTF_SPOOLJOB = 1
ERR_NO_SPOOLJOB = 2
ERR_NO_PERMISSION = 3
ERR_CONV_NOT_POSSIBLE = 4
ERR_BAD_DSTDEVICE = 5
USER_CANCELLED = 6
ERR_SPOOLERROR = 7
ERR_TEMSEERROR = 8
ERR_BTCJOB_OPEN_FAILED = 9
ERR_BTCJOB_SUBMIT_FAILED = 10
ERR_BTCJOB_CLOSE_FAILED = 11.
IF SY-SUBRC = 0.
* For page format
PERFORM PAGE_FORMAT TABLES P_P_S_EMAIL.
ELSE.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " convert_otf2pdf
*& Form convert_abap2pdf
* Convert ABAP Spool to PDF
FORM CONVERT_ABAP2PDF TABLES P_P_S_EMAIL STRUCTURE S_EMAIL.
CLEAR IT_PDF.
REFRESH IT_PDF.
DATA : L_BYTECOUNT TYPE I.
* Fn. to convert to PDF format
CALL FUNCTION 'CONVERT_ABAPSPOOLJOB_2_PDF'
EXPORTING
SRC_SPOOLID = V_RQIDENT
NO_DIALOG = 'X'
IMPORTING
PDF_BYTECOUNT = L_BYTECOUNT
TABLES
PDF = IT_PDF
EXCEPTIONS
ERR_NO_ABAP_SPOOLJOB = 1
ERR_NO_SPOOLJOB = 2
ERR_NO_PERMISSION = 3
ERR_CONV_NOT_POSSIBLE = 4
ERR_BAD_DESTDEVICE = 5
USER_CANCELLED = 6
ERR_SPOOLERROR = 7
ERR_TEMSEERROR = 8
ERR_BTCJOB_OPEN_FAILED = 9
ERR_BTCJOB_SUBMIT_FAILED = 10
ERR_BTCJOB_CLOSE_FAILED = 11.
IF SY-SUBRC = 0.
* For page formatting
PERFORM PAGE_FORMAT TABLES P_P_S_EMAIL.
ELSE.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " convert_abap2pdf
*& Form send_mail
* For sending mail
FORM SEND_MAIL TABLES MAIL STRUCTURE S_EMAIL .
* Structures and internal tables for the send data
DATA: OBJPACK LIKE SOPCKLSTI1 OCCURS 2 WITH HEADER LINE,
OBJHEAD LIKE SOLISTI1 OCCURS 1 WITH HEADER LINE,
OBJBIN LIKE SOLISTI1 OCCURS 0 WITH HEADER LINE,
OBJTXT LIKE SOLISTI1 OCCURS 10 WITH HEADER LINE,
RECLIST LIKE SOMLRECI1 OCCURS 5 WITH HEADER LINE.
DATA: DOC_CHNG LIKE SODOCCHGI1,
TAB_LINES LIKE SY-TABIX.
* Data for the status output after sending
DATA: SENT_TO_ALL LIKE SONV-FLAG.
CLEAR: IT_RECLIST, IT_RECLIST[],
IT_OBJTXT , IT_OBJTXT[],
IT_OBJPACK, IT_OBJPACK[],
IT_OBJBIN , IT_OBJBIN[],X_DOC_CHNG.
LOOP AT IT_HTML.
OBJBIN-LINE = IT_HTML-LINE.
APPEND OBJBIN.
CLEAR OBJBIN.
ENDLOOP.
* Create the document which is to be sent
DOC_CHNG-OBJ_NAME = 'List'(012).
DOC_CHNG-OBJ_DESCR = 'Mail'(013).
* Heading
OBJTXT-LINE = 'Mail with pdf attachment'(014).
APPEND OBJTXT.
CLEAR OBJTXT.
* Size
DESCRIBE TABLE OBJTXT LINES TAB_LINES.
READ TABLE OBJTXT INDEX TAB_LINES.
DOC_CHNG-DOC_SIZE = ( TAB_LINES - 1 ) * 255 + STRLEN( OBJTXT ).
* Fill the fields of the packing_list for the main document:
CLEAR OBJPACK-TRANSF_BIN.
* The document needs no header (head_num = 0)
OBJPACK-HEAD_START = 1.
OBJPACK-HEAD_NUM = 0.
* Body
OBJPACK-BODY_START = 1.
OBJPACK-BODY_NUM = TAB_LINES.
OBJPACK-DOC_TYPE = 'RAW'(015).
APPEND OBJPACK.
* Create the attachment (the list itself)
DESCRIBE TABLE OBJBIN LINES TAB_LINES.
* Fill the fields of the packing_list for the attachment:
OBJPACK-TRANSF_BIN = 'X'.
* Header
OBJPACK-HEAD_START = 1.
OBJPACK-HEAD_NUM = 0.
* Body
OBJPACK-BODY_START = 1.
OBJPACK-BODY_NUM = TAB_LINES.
OBJPACK-DOC_TYPE = 'PDF'(016).
OBJPACK-OBJ_NAME = 'Attachment'(017).
OBJPACK-OBJ_DESCR = 'Mail with pdf Attachment'(018).
OBJPACK-DOC_SIZE = TAB_LINES * 255.
APPEND OBJPACK.
*-Fill the mail recipient list
LOOP AT MAIL.
RECLIST-RECEIVER = MAIL-LOW.
RECLIST-REC_TYPE = C_U.
APPEND RECLIST.
CLEAR: RECLIST,
MAIL.
ENDLOOP.
*-Send the document by calling the SAPoffice API1 module for sending
*-documents with attachments
CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
EXPORTING
DOCUMENT_DATA = DOC_CHNG
PUT_IN_OUTBOX = C_X
COMMIT_WORK = C_X
IMPORTING
SENT_TO_ALL = SENT_TO_ALL
TABLES
PACKING_LIST = OBJPACK
OBJECT_HEADER = OBJHEAD
CONTENTS_BIN = OBJBIN
CONTENTS_TXT = OBJTXT
RECEIVERS = RECLIST
EXCEPTIONS
TOO_MANY_RECEIVERS = 1
DOCUMENT_NOT_SENT = 2
OPERATION_NO_AUTHORIZATION = 4
OTHERS = 99.
CASE SY-SUBRC .
WHEN 0.
MESSAGE I000 WITH 'Mail has been sent successfully'(006).
WHEN OTHERS.
MESSAGE E000 WITH 'Problem in sending the mail'(023).
ENDCASE.
ENDFORM. " send_mail
*& Form page_format
* For page foramtting
FORM PAGE_FORMAT TABLES EMAIL STRUCTURE S_EMAIL .
DATA : L_LINES TYPE I,
L_TEMP(500) TYPE C,
L_OFFSET TYPE P,
L_LINESLEN(2) TYPE P,
L_MIMELEN(2) TYPE P,
L_TABIX LIKE SY-TABIX.
CLEAR : IT_XI_PDF,
IT_XI_TEMP.
REFRESH : IT_XI_PDF,
IT_XI_TEMP.
IT_XI_PDF[] = IT_PDF[].
* Reformat the line to 255 characters wide (--code from SAP--)
CLEAR: L_TEMP, L_OFFSET, IT_XI_TEMP.
DESCRIBE TABLE IT_XI_PDF LINES L_LINES.
DESCRIBE FIELD IT_XI_PDF LENGTH L_LINESLEN IN CHARACTER MODE.
DESCRIBE FIELD IT_XI_TEMP LENGTH L_MIMELEN IN CHARACTER MODE.
LOOP AT IT_XI_PDF.
L_TABIX = SY-TABIX.
MOVE IT_XI_PDF TO L_TEMP+L_OFFSET.
IF L_TABIX = L_LINES.
L_LINESLEN = STRLEN( IT_XI_PDF ).
ENDIF.
L_OFFSET = L_OFFSET + L_LINESLEN.
IF L_OFFSET GE L_MIMELEN.
CLEAR IT_XI_TEMP.
IT_XI_TEMP = L_TEMP(L_MIMELEN).
APPEND IT_XI_TEMP.
SHIFT L_TEMP BY L_MIMELEN PLACES.
L_OFFSET = L_OFFSET - L_MIMELEN.
ENDIF.
IF L_TABIX = L_LINES.
IF L_OFFSET GT 0.
CLEAR IT_XI_TEMP.
IT_XI_TEMP = L_TEMP(L_OFFSET).
APPEND IT_XI_TEMP.
ENDIF.
ENDIF.
ENDLOOP.
CLEAR : IT_XI_MIME,
IT_XI_MIME[].
LOOP AT IT_XI_TEMP.
IT_XI_MIME(255) = IT_XI_TEMP-LINE.
APPEND IT_XI_MIME.
CLEAR IT_XI_MIME.
ENDLOOP.
* Final Data
CLEAR : IT_HTML,
IT_HTML[].
IT_HTML[] = IT_XI_MIME[].
* For sending mail
PERFORM SEND_MAIL TABLES EMAIL.
ENDFORM. " page_format
*& Form fetch_variants
* For fetching the variants available for the program
FORM FETCH_VARIANTS .
DATA : L_PROGRAM LIKE RS38M-PROGRAMM VALUE 'RKAEP000',
L_VARA1 TYPE DFIES-FIELDNAME VALUE 'P_VARA1'.
CLEAR : IT_VARIANT1,
IT_VARIANT1[].
* Get variants
PERFORM GET_VARIANTS TABLES IT_VARIANT1
USING L_PROGRAM.
* F4 Help
IF NOT IT_VARIANT1[] IS INITIAL.
PERFORM GET_F4_HELP TABLES IT_VARIANT1
USING L_VARA1
CHANGING P_VARA1.
ELSE.
MESSAGE E000 WITH 'No variants available for report1'(054).
ENDIF.
ENDFORM. " fetch_variants
*& Form validation
* For Validation
FORM VALIDATION .
DATA : L_PRO1 LIKE RS38M-PROGRAMM VALUE 'RKAEP000',
L_PRO2 LIKE RS38M-PROGRAMM VALUE 'GP3DIEHXY88SNFJ0391V7KF9EK7050',
L_C1,
L_C2.
* If both check-box are unchecked
IF P_C1 IS INITIAL
AND P_C2 IS INITIAL.
MESSAGE E000 WITH 'Check any one check-box'(049).
ENDIF.
* If checked without varaint
IF NOT P_C1 IS INITIAL AND P_VARA1 IS INITIAL.
MESSAGE E000 WITH 'Please give any one of the variant for report1'(055).
ENDIF.
* If checked without varaint
IF NOT P_C2 IS INITIAL AND P_VARA2 IS INITIAL.
MESSAGE E000 WITH 'Please give any one of the variant for report2'(061).
ENDIF.
* Reading the variant and fetching the mail-ids
IF P_C1 = C_X.
L_C1 = '1'.
CLEAR : S_EMAIL,
S_EMAIL[].
PERFORM READ_VARIANTS TABLES IT_MAILID
S_EMAIL
USING P_VARA1
L_PRO1
L_C1.
IF S_EMAIL[] IS INITIAL.
MESSAGE E000 WITH 'No Id available for given Cost report1'(066).
ELSE.
SORT S_EMAIL BY LOW.
DELETE ADJACENT DUPLICATES FROM S_EMAIL COMPARING LOW.
ENDIF.
ENDIF.
* Reading the variant and fetching the mail-ids
IF P_C2 = C_X.
CLEAR : S_EMAIL1,
S_EMAIL1[].
L_C2 = '2'.
PERFORM READ_VARIANTS TABLES IT_MAILID1
S_EMAIL1
USING P_VARA2
L_PRO2
L_C2.
IF S_EMAIL1[] IS INITIAL.
MESSAGE E000 WITH 'No Id available for given Cost report2'(067).
ELSE.
SORT S_EMAIL1 BY LOW.
DELETE ADJACENT DUPLICATES FROM S_EMAIL1 COMPARING LOW.
ENDIF.
ENDIF.
ENDFORM. " validation
*& Form GET_VARIANTS
* Fetching Variants
FORM GET_VARIANTS TABLES P_IT_VARIANT STRUCTURE IT_VARIANT1
USING P_V_PROGRAM TYPE RS38M-PROGRAMM.
SELECT VARIANT
FROM VARID
INTO TABLE P_IT_VARIANT
WHERE REPORT = P_V_PROGRAM.
ENDFORM. " GET_VARIANTS
*& Form GET_F4_HELP
* text
FORM GET_F4_HELP TABLES P_IT_VARIANT1 STRUCTURE IT_VARIANT1
USING P_L_VARA1 LIKE DFIES-FIELDNAME
CHANGING P_P_VARA LIKE P_VARA1.
* Fn. for Pop-Up
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
RETFIELD = P_L_VARA1
VALUE_ORG = 'S'
DISPLAY = ' '
TABLES
VALUE_TAB = P_IT_VARIANT1
RETURN_TAB = IT_RETURN
EXCEPTIONS
PARAMETER_ERROR = 1
NO_VALUES_FOUND = 2
OTHERS = 3.
IF SY-SUBRC = 0.
P_P_VARA = IT_RETURN-FIELDVAL.
ELSE.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " GET_F4_HELP
*& Form FETCH_VARIANTS1
* text
FORM FETCH_VARIANTS1 .
DATA : V_PROGRAM1 LIKE RS38M-PROGRAMM VALUE 'GP3DIEHXY88SNFJ0391V7KF9EK7050',
L_VARA2 TYPE DFIES-FIELDNAME VALUE 'P_VARA2'.
CLEAR : IT_VARIANT2,
IT_VARIANT2[].
* Get Variants
PERFORM GET_VARIANTS TABLES IT_VARIANT2
USING V_PROGRAM1.
* F4 Help
IF NOT IT_VARIANT2[] IS INITIAL.
PERFORM GET_F4_HELP TABLES IT_VARIANT2
USING L_VARA2
CHANGING P_VARA2.
ELSE.
MESSAGE E000 WITH 'No variants available for report2'(050).
ENDIF.
ENDFORM. " FETCH_VARIANTS1
*& Form read_variants
* Reading the variant and fetching the mail-ids
FORM READ_VARIANTS TABLES P_IT_MAILID STRUCTURE IT_MAILID
P_S_EMAIL STRUCTURE S_EMAIL
USING P_P_VARA1 LIKE P_VARA1
P_L_PRO1 LIKE RS38M-PROGRAMM
P_L_C1 TYPE C.
DATA : L_TEMP(44),
IT_VALUTAB LIKE RSPARAMS OCCURS 0 WITH HEADER LINE.
RANGES : R_COCEN FOR CSKS-KOSTL.
* Function Module to get the variant contents
CALL FUNCTION 'RS_VARIANT_CONTENTS'
EXPORTING
REPORT = P_L_PRO1
VARIANT = P_P_VARA1
TABLES
VALUTAB = IT_VALUTAB
EXCEPTIONS
VARIANT_NON_EXISTENT = 1
VARIANT_OBSOLETE = 2
OTHERS = 3.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CLEAR : R_COCEN,
R_COCEN[].
LOOP AT IT_VALUTAB WHERE SELNAME = 'KOSTL'
OR SELNAME = '_C-CCTR'.
* Getting the range of cost centers
IF IT_VALUTAB-OPTION = 'BT'.
R_COCEN-LOW = IT_VALUTAB-LOW.
* For Conversion Routine
PERFORM CONVERSION USING R_COCEN-LOW.
R_COCEN-HIGH = IT_VALUTAB-HIGH.
* For Conversion Routine
PERFORM CONVERSION USING R_COCEN-HIGH.
R_COCEN-OPTION = 'BT'.
R_COCEN-SIGN = 'I'.
APPEND R_COCEN.
CLEAR R_COCEN.
ENDIF.
* Getting the single cost centers
IF IT_VALUTAB-OPTION = 'EQ'.
R_COCEN-LOW = IT_VALUTAB-LOW.
* For Conversion Routine
PERFORM CONVERSION USING R_COCEN-LOW.
R_COCEN-OPTION = 'EQ'.
R_COCEN-SIGN = 'I'.
APPEND R_COCEN.
CLEAR R_COCEN.
ENDIF.
ENDLOOP.
* If no cost centers
IF NOT R_COCEN[] IS INITIAL.
SELECT KOKRS
KOSTL
DATBI
TELX1
FROM CSKS
INTO TABLE P_IT_MAILID
WHERE KOSTL IN R_COCEN.
IF P_IT_MAILID[] IS INITIAL.
IF P_L_C1 = '1'.
MESSAGE E000 WITH 'No IDs available for report1'(059).
ELSEIF P_L_C1 = '2'.
MESSAGE E000 WITH 'No IDs available for report2'(062).
ENDIF.
ENDIF.
* Deleting the blank entries
DELETE P_IT_MAILID WHERE TELX1 = SPACE.
CLEAR L_TEMP.
READ TABLE P_IT_MAILID INDEX 1.
L_TEMP = P_IT_MAILID-TELX1.
DATA : L_CHECK.
LOOP AT P_IT_MAILID WHERE TELX1 <> L_TEMP.
L_CHECK = C_X.
ENDLOOP.
* For checking the unique ids
IF L_CHECK = C_X.
IF P_L_C1 = '1'.
MESSAGE E000 WITH 'No unique mail-ids for report1'(058).
ELSEIF P_L_C1 = '2'.
MESSAGE E000 WITH 'No unique mail-ids for report2'(065).
ENDIF.
ENDIF.
* Populating the IDs for the cost centers
LOOP AT P_IT_MAILID.
SET LOCALE LANGUAGE SY-LANGU.
TRANSLATE P_IT_MAILID-TELX1 TO LOWER CASE.
SET LOCALE LANGUAGE SPACE .
CONCATENATE P_IT_MAILID-TELX1 '@allergan.com' INTO L_TEMP.
P_S_EMAIL-LOW = L_TEMP.
P_S_EMAIL-SIGN = 'I'.
P_S_EMAIL-OPTION = 'EQ'.
APPEND P_S_EMAIL.
CLEAR P_S_EMAIL.
ENDLOOP.
ELSE.
IF P_L_C1 = '1'.
MESSAGE E000 WITH 'No Cost Center Available for report1'(057).
ELSEIF P_L_C1 = '2'.
MESSAGE E000 WITH 'No Cost Center Available for report2'(063).
ENDIF.
ENDIF.
ENDFORM. " read_variants
*& Form CONVERSION
* For Conversion Routine
FORM CONVERSION USING P_IT_VALUTAB_LOW TYPE C.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = P_IT_VALUTAB_LOW
IMPORTING
OUTPUT = P_IT_VALUTAB_LOW.
ENDFORM. " CONVERSION
check this Program...... -
What is the field in the tabel "Send mail to users"
Hi Folks,
if the job(Z or Standard prog)is completed successfully then it sends mail to user. i want to know what is the field to capture this information.
Could you tell me what is the field in the table TBTCO.
Thanks,
LakshmiPlease check table SOST. MSGV1 field might hold this info.
-
Dear All,
I am using MSSQL SSRS 2008.
All the reports run properly when viewed via a web browser. However for subscription, I am having a strange
experience.
The subscription having intermitten failure. I need to execute multiple times to get it work.
Following is the exception I am getting:-
Failure sending mail: The user or group name 'xxxxx' is not recognized.Mail will not be resent.
Failure writing file DailyPolicyExportCDN_ST@timestamp : The user or group name 'xxxxx' is not recognized.
Following is the exception I retrieve from log files.
webserver!ReportServer_0-2!1b0c!07/31/2014-05:25:09:: e ERROR: Reporting Services error Microsoft.ReportingServices.Diagnostics.Utilities.ReportServerHttpRuntimeClientDisconnectionException: A client has disconnected from the Report Server Web service application
domain ReportServer_MSSQLSERVER_0-2-130512716074991980. No corrective action is required. An error code has been submitted to ASP.NET to release the connection. The error code is 800708CA. ---> System.Runtime.InteropServices.COMException: This network connection
does not exist. (Exception from HRESULT: 0x800708CA)
Any idea what went wrong?
Thanks in advanceHi NeoCK,
According to your description, you can access your report successfully, but it fail to send e-mail subscription. Right?
In this scenario, since you can access the report successfully, so this user has permission on report server. Please go to E-mail setting in your Reporting Services Configuration Manager, check if the current user has permission on that SMTP server.
If this is still not working, please recreate the subscription and try again.
Reference:
SUBSCRIPTION
ERRORs : Failure sending mail: The user or group name 'CB_OFFICE\XXXX' is not recognized.
The user or group name 'MYDOMAIN\myuser'
is not recognized
SSRS
2008: Failure writing file ... The user or group name 'domain\user' is not recognized
If you have any question, please feel free to ask.
Best Regards,
Simon Hou -
Auto Population of Email Definition fields while sending mails to user
Hi,
I have the requirement that after a resource object has been provisioned to an user, a mail should be sent to him for confirmation.
I am able to successfully send mails to users after the resource object has been provisioned to him by making the configuation settings in the OIM system.
I have made use of a Resource Object , Resource Form , IT resource of type mail server , Email definition etc.
The point is while provisioning the resource object I am populating the User Defined Fields. These fields are visible at the xlWebApp console through the resource form. I am populating these fields while requesting the resource through the xlWebAPp UI.
Now i need to send mails to the user with these fields populated with the values that i m providing while provisioning the resource. Currently my sent mails just consist of plain email definition with a subject line and a body text.
Please let me know how can i include the values in the populated fields in the body of the mail through settings in OIM.
Since i m a QA person i cannot go ahead and write code for creating an adpater for this task. Kindly let me know is there any way by which I can do the same through config settings in OIM.
Thanks in advance.
Pooja.Hello,
Actually i have a resource object as "Laptop" suppose, so for me the user defined fields are Laptop_type, RAM value, ROM Value and Emp ID.
These fields are made visible as UDF through Pre-pop adapters and all the other required settings.
While provisioning the same in the xlWebApp console I am populating them.
The resource form for me (Form Designer for the resource object) is made visible and i am filling in values while provisioning.
Now while sending the mails these values should reflected in the mail body for the fields.
Eg: Subject [hi] Mail body [ The following resource has been provisioned. Laptop_type : Dell, RAM value: 512, ROM value: 40, EMP ID: 123] where these values are filled in the resource form while provisioning the resource object.
Pleased let me know how can i send such mails through config settings in OIM. Right now my mail simply looks like
Eg: Subject [hi] Mail Body [The resource has been provisioned to you]
Thanks again.
Pooja. -
As01 transaction using substitution user exit populate classificaion key
Hi all,
I have a requirement, where in using the substitution user exit rule U210, I need to populate fields ANLB-NDPER, ANLB-NDJAR and ALNA-VMGLI from the values maintained in Ztable.
I am able to overwrite the SAP standard values for the fields ANLB-NDPER and ANLB-NDJAR. But not able to populate the filed VMGLI(Classification key).
For some asset classes, the classification key is not mandatory and the user without giving the value in that field if save the transaction, then I need to populate the value of VMGLI with the ztable value.
The present rule U210 is not working for classification key.
Please suggest, is there any other user exit for the scenario where we can populate VBGLI field.
regards
Rajani YeluriHi,
Did you find a solution. I'm just looking for the same thing.
best regards.. -
As01 using substitution user exit populate classificaion key(ANLA-VMGLI)
Hi all,
I have a requirement, where in using the substitution user exit rule U210, I need to populate fields ANLB-NDPER, ANLB-NDJAR and ALNA-VMGLI from the values maintained in Ztable.
I am able to overwrite the SAP standard values for the fields ANLB-NDPER and ANLB-NDJAR. But not able to populate the filed VMGLI(Classification key).
For some asset classes, the classification key is not mandatory and the user without giving the value in that field if save the transaction, then I need to populate the value of VMGLI with the ztable value.
The present rule U210 is not working for classification key.
Please suggest, is there any other user exit for the scenario where we can populate VBGLI field.
regards
Rajani YeluriHi Balaji,
We have the same problem.
Have you discovered how to make this exit works?
We will really apreciate your help.
Thanks a lot,
Ivan Spellmeier -
If PO is released I have to send a mail through User Exit
Hi,
Please let me know the relevant user exits for below requirements.
a. When the PO is released, the system will check for that PO Parked invoice exists or not, if yes I have to send a mail to creator of the Invoice through user exit.
b. PO Exist but NO GR (for goods only not services) , each time an invoice is parked for Goods PO. send mail to PO Creator and storekeeeper through user exit.
Please give me relevant/suitable user exits for above both requirements.
Regards,
GaneshHi Ganesh,
Please move this to [Enhancement and Modifications|ABAP Switching, Enhancing, and Adapting Standard Programs; forum
Cheers
Suresh -
Help needed in Substitution & User Exit.
Hi Experts,
I have a peculiar recuirement. In the <b>Vendor Invoide Creation</b> transaction (<b>FB60</b>), if you try to create a Invoice/Credit memo for a "<b>One Time Vend</b>or", a pop up window comes asking Bank and Address data.
The user need to enter the bank key and acc no and need to substitute the name, address fields in this pop up window screen, with some data fetched from custom DB tables according to the bank keys.
Since the pop up screen fields are from structure BSEC, I cant really do the substitution them from OBBH (Since it only allows BSEG & BKPF fields to be substituted !! ).
Also since the Only user exit (ZXCPDU01) avaliable in FB60 does not have any Export table, I can send the values back to the screen.
<b>Can any one of you by any luck have a feasible solution for this ?</b>hi Saurav.
there are 14 user exits in thsi transaction. these are as follows
F050S001 FIDCMT, FIDCC1, FIDCC2: Edit user-defined IDoc segment
F050S002 FIDCC1: Change IDoc/do not send
F050S003 FIDCC2: Change IDoc/do not send
F050S004 FIDCMT, FIDCC1, FIDCC2: Change outbound IDoc/do not send
F050S005 FIDCMT, FIDCC1, FIDCC2 Inbound IDoc: Change FI document
F050S006 FI Outgoing IDoc: Reset Clearing in FI Document
F050S007 FIDCCH Outbound: Influence on IDoc for Document Change
F180A001 Balance Sheet Adjustment
FARC0002 Additional Checks for Archiving MM Vendor Master Data
FEDI0001 Function Exits for EDI in FI
RFAVIS01 Customer Exit for Changing Payment Advice Segment Text
RFEPOS00 Line item display: Checking of selection conditions
RFKORIEX Automatic correspondence
SAPLF051 Workflow for FI (pre-capture, release for payment)
check if anyone of them meets ur requiremnt
regards
ravish
<b>plz dont forget to reward points if helpful</b> -
Convert internal table data to pdf format and send mail to Users
Hi all ,
I want to convert the data available in internal table to pdf format and then send it to mail .
Please tell me wht are the fn modules available to convert the data from internal table to pdf and then send it mail .
regards
santosh .Hi Santosh
Sending mail with attachment report in Background
Content Author: Fernando Faian
I have read the hint about "Sending mail with attachment report".
It's great, but how can I make this function work in background??
I had that needed last year too. See attachment a function group with two functions. The second one has that functionality to send email or fax (SAP office) with attachment objects in background job using SO_ATTACHMENT_INSERT function.
Pay attention because its working with output list from spool converted to pdf.
=================================================================================
z_send_email_fax_global
FUNCTION-POOL z_gfaian_mail_fax. "MESSAGE-ID ..
WORK TABLE AREAS
TABLES: tsp01.
INTERNAL TABLES
DATA: lt_rec_tab LIKE STANDARD TABLE OF soos1 WITH HEADER LINE,
lt_note_text LIKE STANDARD TABLE OF soli WITH HEADER LINE,
lt_attachments LIKE STANDARD TABLE OF sood5 WITH HEADER LINE.
DATA: lt_objcont LIKE STANDARD TABLE OF soli WITH HEADER LINE,
lt_objhead LIKE STANDARD TABLE OF soli WITH HEADER LINE.
DATA: pdf_format LIKE STANDARD TABLE OF tline WITH HEADER LINE.
TYPES: BEGIN OF y_files,
file(60) TYPE c,
END OF y_files.
DATA: lt_files TYPE STANDARD TABLE OF y_files WITH HEADER LINE.
DATA: l_objcont LIKE soli OCCURS 0 WITH HEADER LINE.
DATA: l_objhead LIKE soli OCCURS 0 WITH HEADER LINE.
STRUCTURES
DATA: folder_id LIKE soodk,
object_id LIKE soodk,
link_folder_id LIKE soodk,
g_document LIKE sood4,
g_header_data LIKE sood2,
g_folmem_data LIKE sofm2,
g_header_data LIKE sood2,
g_receive_data LIKE soos6,
g_ref_document LIKE sood4,
g_new_parent LIKE soodk,
l_folder_id LIKE sofdk,
v_email(50).
DATA: hd_dat like sood1.
VARIABLES
DATA: client LIKE tst01-dclient,
name LIKE tst01-dname,
objtype LIKE rststype-type,
type LIKE rststype-type.
DATA: numbytes TYPE i,
arc_idx LIKE toa_dara,
pdfspoolid LIKE tsp01-rqident,
jobname LIKE tbtcjob-jobname,
jobcount LIKE tbtcjob-jobcount,
is_otf.
DATA: outbox_flag LIKE sonv-flag VALUE 'X',
store_flag LIKE sonv-flag,
delete_flag LIKE sonv-flag,
owner LIKE soud-usrnam,
on LIKE sonv-flag VALUE 'X',
sent_to_all LIKE sonv-flag,
g_authority LIKE sofa-usracc,
w_objdes LIKE sood4-objdes.
DATA: c_file LIKE rlgrap-filename,
n_spool(6) TYPE n.
DATA: cancel.
DATA: desired_type LIKE sood-objtp,
real_type LIKE sood-objtp,
attach_type LIKE sood-objtp,
otf LIKE sood-objtp VALUE 'OTF', " SAPscript Ausgabeformat
ali LIKE sood-objtp VALUE 'ALI'. " ABAP lists
CONSTANTS
CONSTANTS: ou_fol LIKE sofh-folrg VALUE 'O',
c_objtp LIKE g_document-objtp VALUE 'RAW',
c_file_ext LIKE g_document-file_ext VALUE 'TXT'.
=================================================================================
z_send_email_fax2
FUNCTION z_faian_mail_fax2.
""Interface local:
*" IMPORTING
*" REFERENCE(SRC_SPOOLID) LIKE TSP01-RQIDENT
*" REFERENCE(FAX_MAIL_NUMBER) TYPE SO_NAME
*" REFERENCE(HEADER_MAIL) TYPE SO_OBJ_DES
*" REFERENCE(OBJECT_TYPE) TYPE SO_ESCAPE
*" TABLES
*" LT_BODY_EMAIL STRUCTURE SOLI
*" EXCEPTIONS
*" ERR_NO_ABAP_SPOOLJOB
Fist part: Verify if the spool really exists
SELECT SINGLE * FROM tsp01 WHERE rqident = src_spoolid.
IF sy-subrc NE 0.
RAISE err_no_abap_spooljob. "doesn't exist
ELSE.
client = tsp01-rqclient.
name = tsp01-rqo1name.
CALL FUNCTION 'RSTS_GET_ATTRIBUTES'
EXPORTING
authority = 'SP01'
client = client
name = name
part = 1
IMPORTING
type = type
objtype = objtype
EXCEPTIONS
fb_error = 1
fb_rsts_other = 2
no_object = 3
no_permission = 4
OTHERS = 5.
IF objtype(3) = 'OTF'.
desired_type = otf.
ELSE.
desired_type = ali.
ENDIF.
CALL FUNCTION 'RSPO_RETURN_SPOOLJOB'
EXPORTING
rqident = src_spoolid
desired_type = desired_type
IMPORTING
real_type = real_type
TABLES
buffer = l_objcont
EXCEPTIONS
no_such_job = 14
type_no_match = 94
job_contains_no_data = 54
no_permission = 21
can_not_access = 21
read_error = 54.
IF sy-subrc EQ 0.
attach_type = real_type.
ENDIF.
CALL FUNCTION 'SO_FOLDER_ROOT_ID_GET'
EXPORTING
owner = sy-uname
region = ou_fol
IMPORTING
folder_id = l_folder_id
EXCEPTIONS
OTHERS = 5.
fill out informations about the header of the email
CLEAR: g_document.
g_document-foltp = l_folder_id-foltp.
g_document-folyr = l_folder_id-folyr.
g_document-folno = l_folder_id-folno.
g_document-objtp = c_objtp.
g_document-objdes = header_mail.
g_document-file_ext = c_file_ext.
g_header_data-objdes = header_mail.
CALL FUNCTION 'SO_DOCUMENT_REPOSITORY_MANAGER'
EXPORTING
method = 'SAVE'
office_user = sy-uname
IMPORTING
authority = g_authority
TABLES
objcont = lt_body_email
attachments = lt_attachments
CHANGING
document = g_document
header_data = g_header_data
EXCEPTIONS
OTHERS = 1.
folder_id-objtp = l_folder_id-foltp.
folder_id-objyr = l_folder_id-folyr.
folder_id-objno = l_folder_id-folno.
object_id-objtp = c_objtp.
object_id-objyr = g_document-objyr.
object_id-objno = g_document-objno.
link_folder_id-objtp = l_folder_id-foltp.
link_folder_id-objyr = l_folder_id-folyr.
link_folder_id-objno = l_folder_id-folno.
REFRESH lt_rec_tab.
CLEAR lt_rec_tab.
lt_rec_tab-sel = 'X'.
lt_rec_tab-recesc = object_type. "This field for FAX/MAIL
lt_rec_tab-recnam = 'U-'.
lt_rec_tab-deliver = 'X'.
lt_rec_tab-not_deli = 'X'.
lt_rec_tab-read = 'X'.
lt_rec_tab-mailstatus = 'E'.
lt_rec_tab-adr_name = fax_mail_number.
lt_rec_tab-sortfield = fax_mail_number.
lt_rec_tab-recextnam = fax_mail_number.
lt_rec_tab-sortclass = '5'.
APPEND lt_rec_tab.
lt_rec_tab-recextnam = fax_mail_number.
lt_rec_tab-recesc = object_type.
lt_rec_tab-sndart = 'INT'.
lt_rec_tab-sndpri = 1.
APPEND lt_rec_tab.
lt_files-file = c_file.
APPEND lt_files.
begin of insertion by faianf01
hd_dat-objdes = header_mail.
CALL FUNCTION 'SO_ATTACHMENT_INSERT'
EXPORTING
object_id = object_id
attach_type = attach_type
object_hd_change = hd_dat
owner = sy-uname
TABLES
objcont = l_objcont
objhead = l_objhead
EXCEPTIONS
active_user_not_exist = 35
communication_failure = 71
object_type_not_exist = 17
operation_no_authorization = 21
owner_not_exist = 22
parameter_error = 23
substitute_not_active = 31
substitute_not_defined = 32
system_failure = 72
x_error = 1000.
IF sy-subrc > 0.
ENDIF.
end of insertion by faianf01
send email from SAPOFFICE
CALL FUNCTION 'SO_OBJECT_SEND'
EXPORTING
folder_id = folder_id
object_id = object_id
outbox_flag = outbox_flag
link_folder_id = link_folder_id
owner = sy-uname
check_send_authority = 'X'
TABLES
receivers = lt_rec_tab
note_text = lt_note_text
EXCEPTIONS
active_user_not_exist = 35
communication_failure = 71
component_not_available = 1
folder_no_authorization = 5
folder_not_exist = 6
forwarder_not_exist = 8
object_no_authorization = 13
object_not_exist = 14
object_not_sent = 15
operation_no_authorization = 21
owner_not_exist = 22
parameter_error = 23
substitute_not_active = 31
substitute_not_defined = 32
system_failure = 72
too_much_receivers = 73
user_not_exist = 35.
ENDIF.
ENDFUNCTION.
=================================================================================
z_send_email_fax
FUNCTION ZCBFS_SEND_MAIL.
""Interface local:
*" IMPORTING
*" REFERENCE(SRC_SPOOLID) LIKE TSP01-RQIDENT
*" REFERENCE(HEADER_MAIL) TYPE SO_OBJ_DES
*" TABLES
*" LIST_FAX_MAIL_NUMBER STRUCTURE SOLI
*" EXCEPTIONS
*" ERR_NO_ABAP_SPOOLJOB
DATA: vg_achou(1) TYPE n.
Fist part: Verify if the spool really exists
vg_achou = 1.
DO 60 TIMES.
SELECT SINGLE * FROM tsp01 WHERE rqident = src_spoolid.
IF sy-subrc IS INITIAL.
CLEAR vg_achou.
EXIT.
ELSE.
WAIT UP TO 1 SECONDS.
ENDIF.
ENDDO.
IF vg_achou = 1.
RAISE err_no_abap_spooljob. "doesn't exist
ENDIF.
client = tsp01-rqclient.
name = tsp01-rqo1name.
CALL FUNCTION 'RSTS_GET_ATTRIBUTES'
EXPORTING
authority = 'SP01'
client = client
name = name
part = 1
IMPORTING
type = type
objtype = objtype
EXCEPTIONS
fb_error = 1
fb_rsts_other = 2
no_object = 3
no_permission = 4
OTHERS = 5.
IF objtype(3) = 'OTF'.
desired_type = otf.
ELSE.
desired_type = ali.
ENDIF.
CALL FUNCTION 'RSPO_RETURN_SPOOLJOB'
EXPORTING
rqident = src_spoolid
desired_type = desired_type
IMPORTING
real_type = real_type
TABLES
buffer = l_objcont
EXCEPTIONS
no_such_job = 14
type_no_match = 94
job_contains_no_data = 54
no_permission = 21
can_not_access = 21
read_error = 54.
IF sy-subrc EQ 0.
attach_type = real_type.
ENDIF.
CALL FUNCTION 'SO_FOLDER_ROOT_ID_GET'
EXPORTING
owner = sy-uname
region = ou_fol
IMPORTING
folder_id = l_folder_id
EXCEPTIONS
OTHERS = 5.
fill out informations about the header of the email
CLEAR: g_document.
g_document-foltp = l_folder_id-foltp.
g_document-folyr = l_folder_id-folyr.
g_document-folno = l_folder_id-folno.
g_document-objtp = c_objtp.
g_document-objdes = header_mail.
g_document-file_ext = c_file_ext.
g_header_data-objdes = header_mail.
CALL FUNCTION 'SO_DOCUMENT_REPOSITORY_MANAGER'
EXPORTING
method = 'SAVE'
office_user = sy-uname
IMPORTING
authority = g_authority
TABLES
attachments = lt_attachments
CHANGING
document = g_document
header_data = g_header_data
EXCEPTIONS
OTHERS = 1.
folder_id-objtp = l_folder_id-foltp.
folder_id-objyr = l_folder_id-folyr.
folder_id-objno = l_folder_id-folno.
object_id-objtp = c_objtp.
object_id-objyr = g_document-objyr.
object_id-objno = g_document-objno.
link_folder_id-objtp = l_folder_id-foltp.
link_folder_id-objyr = l_folder_id-folyr.
link_folder_id-objno = l_folder_id-folno.
REFRESH lt_rec_tab.
LOOP AT LIST_FAX_MAIL_NUMBER.
lt_rec_tab-recextnam = LIST_FAX_MAIL_NUMBER-LINE.
lt_rec_tab-recesc = 'U'.
lt_rec_tab-sndart = 'INT'.
lt_rec_tab-sndpri = 1.
APPEND lt_rec_tab.
ENDLOOP.
lt_files-file = c_file.
APPEND lt_files.
hd_dat-objdes = header_mail.
CALL FUNCTION 'SO_ATTACHMENT_INSERT'
EXPORTING
object_id = object_id
attach_type = attach_type
object_hd_change = hd_dat
owner = sy-uname
TABLES
objcont = l_objcont
objhead = l_objhead
EXCEPTIONS
active_user_not_exist = 35
communication_failure = 71
object_type_not_exist = 17
operation_no_authorization = 21
owner_not_exist = 22
parameter_error = 23
substitute_not_active = 31
substitute_not_defined = 32
system_failure = 72
x_error = 1000.
IF sy-subrc > 0.
ENDIF.
send email from SAPOFFICE
CALL FUNCTION 'SO_OBJECT_SEND'
EXPORTING
folder_id = folder_id
object_id = object_id
outbox_flag = outbox_flag
link_folder_id = link_folder_id
owner = sy-uname
TABLES
receivers = lt_rec_tab
note_text = lt_note_text
EXCEPTIONS
active_user_not_exist = 35
communication_failure = 71
component_not_available = 1
folder_no_authorization = 5
folder_not_exist = 6
forwarder_not_exist = 8
object_no_authorization = 13
object_not_exist = 14
object_not_sent = 15
operation_no_authorization = 21
owner_not_exist = 22
parameter_error = 23
substitute_not_active = 31
substitute_not_defined = 32
system_failure = 72
too_much_receivers = 73
user_not_exist = 35.
ENDFUNCTION.
Regards,
Sree -
Hi friends,
can u help me out in solving my problem.
I want to send mail to particular email address with some contents in the body of the mail, which function to use?REPORT ZNNR_EMAIL.
PARAMETERS: psubject(40) type c default 'Hello',
p_email(40) type c..
data: it_packing_list like sopcklsti1 occurs 0 with header line,
it_contents like solisti1 occurs 0 with header line,
it_receivers like somlreci1 occurs 0 with header line,
it_attachment like solisti1 occurs 0 with header line,
gd_cnt type i,
gd_sent_all(1) type c,
gd_doc_data like sodocchgi1,
gd_error type sy-subrc.
data: it_message type standard table of SOLISTI1 initial size 0
with header line.
*START-OF-SELECTION.
START-OF-SELECTION.
Perform populate_message_table.
*Send email message, although is not sent from SAP until mail send
*program has been executed(rsconn01)
PERFORM send_email_message.
*Instructs mail send program for SAPCONNECT to send email(rsconn01)
perform initiate_mail_execute_program.
*& Form POPULATE_MESSAGE_TABLE
Adds text to email text table
form populate_message_table.
Append 'Email line 1' to it_message.
Append 'Email line 2' to it_message.
Append 'Email line 3' to it_message.
Append 'Email line 4' to it_message.
endform. " POPULATE_MESSAGE_TABLE
*& Form SEND_EMAIL_MESSAGE
Send email message
form send_email_message.
Fill the document data.
gd_doc_data-doc_size = 1.
Populate the subject/generic message attributes
gd_doc_data-obj_langu = sy-langu.
gd_doc_data-obj_name = 'SAPRPT'.
gd_doc_data-obj_descr = psubject.
gd_doc_data-sensitivty = 'F'.
Describe the body of the message
clear it_packing_list.
refresh it_packing_list.
it_packing_list-transf_bin = space.
it_packing_list-head_start = 1.
it_packing_list-head_num = 0.
it_packing_list-body_start = 1.
describe table it_message lines it_packing_list-body_num.
it_packing_list-doc_type = 'RAW'.
append it_packing_list.
Add the recipients email address
clear it_receivers.
refresh it_receivers.
it_receivers-receiver = p_email.
it_receivers-rec_type = 'U'.
it_receivers-com_type = 'INT'.
it_receivers-notif_del = 'X'.
it_receivers-notif_ndel = 'X'.
append it_receivers.
Call the FM to post the message to SAPMAIL
call function 'SO_NEW_DOCUMENT_ATT_SEND_API1'
exporting
document_data = gd_doc_data
put_in_outbox = 'X'
importing
sent_to_all = gd_sent_all
tables
packing_list = it_packing_list
contents_txt = it_message
receivers = it_receivers
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.
Store function module return code
gd_error = sy-subrc.
Get it_receivers return code
loop at it_receivers.
endloop.
endform. " SEND_EMAIL_MESSAGE
*& Form INITIATE_MAIL_EXECUTE_PROGRAM
Instructs mail send program for SAPCONNECT to send email.
form initiate_mail_execute_program.
wait up to 2 seconds.
if gd_error eq 0.
submit rsconn01 with mode = 'INT'
with output = 'X'
and return.
endif.
endform. " INITIATE_MAIL_EXECUTE_PROGRAM
You can use following FM's
call function to send email
CALL FUNCTION 'SO_NEW_DOCUMENT_SEND_API1'
EXPORTING
document_data = docdata
document_type = 'RAW'
commit_work = 'X'
TABLES
object_header = t_objhead
object_content = t_objtxt
receivers = t_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.
also if you want to attach any file with the mail u can use following FM
Sending the document
IF NOT l_t_reclist[] IS INITIAL.
CALL FUNCTION 'SO_DOCUMENT_SEND_API1'
EXPORTING
document_data = l_doc_chng
commit_work = 'X'
TABLES
packing_list = l_t_objpack
object_header = l_t_objhead
contents_bin = l_t_objbin
contents_txt = l_t_objtxt
receivers = l_t_reclist
EXCEPTIONS
too_many_receivers = 1
document_not_sent = 2
operation_no_authorization = 4
OTHERS = 99.
ENDIF. -
Hi!
We have following scenario.
The system must check weather the WBSE is Planning Element. If Not the system must mark it as Account Assignment element & Then in next step Lock the Account Assignment for that WBSE( system status= AALK).
APMK I am approaching this from two angles-
1) We may use substitution & then execute User Exit to set the system status as AALK.( I need some expert comments & guidance on this method)
2) I am also able to solve my problem, if somehow I can work out, an exit or Boolean logic to find out what is the level of lowest level WBSE in a project. Note that the lowest WBSe can vary from 2-5 in our scenario. ( some guidance on this will also help alot)
Thanks,
SeemantMake sure your code looks like this:
exits-name = 'U903'.
exits-param = c_exit_param_field.
exits-title = text-203. (Text id number)
APPEND exits.
Then, in the bottom section this should be there:
FORM U903.
Your code in btw. and
ENDFORM.
With this you should be able to see U903 in the exit drop down. If you have not maintained the text id, then you will just see the key and not the description.
Regards, -
Sending mail from user accounts
I have recently switched from dial-up to broadband communications. My eMac has three user areas - my ‘system manager’ area plus two others.
The problem is that the two sub-area users can no longer send e-mail messages. The error message is “mail.btinternet.com:<user name>@btinternet.com cannot be contacted on port 25” .
I can only send mail via mailout.btinternet.com from the main account.
All areas receive mail OK.
Dial-up ISP is macunlimited.net
Broadband ISP is btinternet.com
I have read the relevant Help section and believe I have set up the two mail accounts in each sub-account correctly.
Software on this Mac are OS: 10.4.3 and Mail 2.0.5Chris,
This is very helpful, but I would never have understood that different User Accounts were being used on your Mac from the previous terminology.
Let me approach when you are connected with btinternet acting as your ISP, first. It is normal, and not unusual, for the authentication of the SMTP to depend upon the primary email address they assign you -- this is probably your address, and with it you can probably change all the other addresses -- correct?
Thus because you are using different User Accounts, when you wife or son is attempting to send, they do not have the benefit of your Username authenticating the SMTP (as would be the case if all three addresses are in use within one User Account and Mail at the same time). The following suggestion being successful will depend upon the exact method and policies of authentication used btinternet, but have your wife and/or your son to authenticate the OUTGOING server using the same entry for Username as you enter in Mail Preferences for your account.
The same could be true for your dial-up ISP -- when you are unable to send with the SMTP for macunlimited.net, are you in fact connected via dial-up? If you are connected by dial-up and your account with macunlimited.net is the master or primary account, then I do not yet know why you cannot send.
I hope this makes sense, and is not overly complicated.
Ernie
Maybe you are looking for
-
I can only see one photo at a time
I use to be able to see a thumbnail of all my photos. Now for some reason I can only see one photo at at a time. I have to use the scroll bar to go up and down. It is so frustrating. Please help.
-
Hello All, I am trying to make an Editable ALV tree ..but cannot find the I have used fieldcat -edit = X but it only works for GRID ALV and not TREE ALV ... Please help me on this ..... Edited by: Karan Chopra on Aug 2, 2010 1:11 PM
-
Disc drive won't eject and then computer won't shut down
When the computer first boots the drive will eject fine but after using it for some time when I hit eject the eject symbol shows on screen but the disc never ejects. If I click the dvd icon to eject it that way then the dvd icon disappears. Then if I
-
Hi All, I have my choosefromlist from a user-defined table registered as a user-defined object. My problem is I would like to change the form title of that form instead of using this format: <List of (Name of the object in User-Defined Obje
-
Slow Load of my pages in dashboard
A few days ago I'm looking that my pages of dashboards loads slower. I think one reason is because I have create a page that has 80 sections. Anyway what I see is that once the page loaded, navigation in this page is fast (changing prompts) but when