Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

Query in Email !!!!

Former Member
0 Likes
835

Hi all,

Can anyone please tell me the error in the code below. The code is to send a Smart form as an attachment in email.

I get an error in the Function Module 'SO_NEW_DOCUMENT_ATT_SEND_API1'(The

value of sy-subrc is 2 after executing this Function Module).

Please clarify this query of mine:

Kindly reply immediately as this is bit urgent.

===========================================

*Internal Table declarations

DATA: I_OTF TYPE ITCOO OCCURS 0 WITH HEADER LINE,

I_TLINE TYPE TABLE OF TLINE WITH HEADER LINE,

I_RECEIVERS TYPE TABLE OF SOMLRECI1 WITH HEADER LINE,

I_RECORD LIKE SOLISTI1 OCCURS 0 WITH HEADER LINE,

*Objects to send mail.

I_OBJPACK LIKE SOPCKLSTI1 OCCURS 0 WITH HEADER LINE,

I_OBJTXT LIKE SOLISTI1 OCCURS 0 WITH HEADER LINE,

I_OBJBIN LIKE SOLISTI1 OCCURS 0 WITH HEADER LINE,

I_RECLIST LIKE SOMLRECI1 OCCURS 0 WITH HEADER LINE,

*Work Area declarations

WA_OBJHEAD TYPE SOLI_TAB,

W_CTRLOP TYPE SSFCTRLOP,

W_COMPOP TYPE SSFCOMPOP,

W_RETURN TYPE SSFCRESCL,

WA_DOC_CHNG TYPE SODOCCHGI1,

W_DATA TYPE SODOCCHGI1,

WA_BUFFER TYPE STRING, "To convert from 132 to 255

*Variables declarations

V_FORM_NAME TYPE RS38L_FNAM,

V_LEN_IN LIKE SOOD-OBJLEN,

V_LEN_OUT LIKE SOOD-OBJLEN,

V_LEN_OUTN TYPE I,

V_LINES_TXT TYPE I,

V_LINES_BIN TYPE I.

CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'

EXPORTING

FORMNAME = 'Z_TEST'

IMPORTING

FM_NAME = V_FORM_NAME

EXCEPTIONS

NO_FORM = 1

NO_FUNCTION_MODULE = 2

OTHERS = 3.

IF SY-SUBRC NE 0.

MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

W_CTRLOP-GETOTF = 'X'.

W_CTRLOP-NO_DIALOG = 'X'.

W_COMPOP-TDNOPREV = 'X'.

DATA : LV_ANSWER TYPE CRM_SVY_DB_STRING.

DATA : devtype type rspoptype.

DATA : output_options type ssfcompop,

control_parameters type ssfctrlop,

output_data type ssfcrescl.

LV_ANSWER = 'TEST'.

*CALL FUNCTION V_FORM_NAME

*EXPORTING

*CONTROL_PARAMETERS = W_CTRLOP

*OUTPUT_OPTIONS = W_COMPOP

**USER_SETTINGS = 'X'

*ANSWER = lv_answer

*IMPORTING

*JOB_OUTPUT_INFO = W_RETURN

*EXCEPTIONS

*FORMATTING_ERROR = 1

*INTERNAL_ERROR = 2

*SEND_ERROR = 3

*USER_CANCELED = 4

*OTHERS = 5.

call function 'SSF_GET_DEVICE_TYPE'

EXPORTING

i_language = sy-langu

IMPORTING

e_devtype =

devtype

EXCEPTIONS

no_language = 1

language_not_installed = 2

no_devtype_found = 3

system_error = 4

others = 5.

  • set device type in output options

output_options-tdprinter = devtype.

control_parameters-langu = sy-langu.

control_parameters-no_dialog = 'X'.

control_parameters-getotf = 'X'.

CALL FUNCTION V_FORM_name

EXPORTING

  • ARCHIVE_INDEX =

  • ARCHIVE_INDEX_TAB =

  • ARCHIVE_PARAMETERS =

  • CONTROL_PARAMETERS =

  • MAIL_APPL_OBJ =

  • MAIL_RECIPIENT =

  • MAIL_SENDER =

  • OUTPUT_OPTIONS =

  • USER_SETTINGS = 'X'

CONTROL_PARAMETERS = CONTROL_PARAMETERS

OUTPUT_OPTIONS = OUTPUT_OPTIONS

ANSWER = lv_answer

  • IMPORTING

  • DOCUMENT_OUTPUT_INFO =

  • JOB_OUTPUT_INFO =

  • JOB_OUTPUT_OPTIONS =

IMPORTING

JOB_OUTPUT_INFO = W_RETURN

  • TABLES

  • it_bookings = bookings

  • it_schedules = connections

EXCEPTIONS

formatting_error = 1

internal_error = 2

send_error = 3

user_canceled = 4

OTHERS = 5

.

IF SY-SUBRC NE 0.

MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

I_OTF[] = W_RETURN-OTFDATA[].

CALL FUNCTION 'CONVERT_OTF'

EXPORTING

FORMAT = 'PDF'

MAX_LINEWIDTH = 132

IMPORTING

BIN_FILESIZE = V_LEN_IN

TABLES

OTF = I_OTF

LINES = I_TLINE

EXCEPTIONS

ERR_MAX_LINEWIDTH = 1

ERR_FORMAT = 2

ERR_CONV_NOT_POSSIBLE = 3

OTHERS = 4.

IF SY-SUBRC NE 0.

ENDIF.

LOOP AT I_TLINE.

TRANSLATE I_TLINE USING '~'.

CONCATENATE WA_BUFFER I_TLINE INTO WA_BUFFER.

ENDLOOP.

TRANSLATE WA_BUFFER USING '~'.

DO.

I_RECORD = WA_BUFFER.

APPEND I_RECORD.

SHIFT WA_BUFFER LEFT BY 255 PLACES.

IF WA_BUFFER IS INITIAL.

EXIT.

ENDIF.

ENDDO.

*Attachment

REFRESH: I_RECLIST,

I_OBJTXT,

I_OBJBIN,

I_OBJPACK.

CLEAR WA_OBJHEAD.

I_OBJBIN[] = I_RECORD[].

*Create Message Body Title and Description I_OBJTXT = 'test with pdf-Attachment!'.

APPEND I_OBJTXT.

DESCRIBE TABLE I_OBJTXT LINES V_LINES_TXT.

READ TABLE I_OBJTXT INDEX V_LINES_TXT.

WA_DOC_CHNG-OBJ_NAME = 'smartform'.

WA_DOC_CHNG-EXPIRY_DAT = SY-DATUM + 10.

WA_DOC_CHNG-OBJ_DESCR = 'smartform'.

WA_DOC_CHNG-SENSITIVTY = 'F'.

WA_DOC_CHNG-DOC_SIZE = V_LINES_TXT * 255.

*Main Text

CLEAR I_OBJPACK-TRANSF_BIN.

I_OBJPACK-HEAD_START = 1.

I_OBJPACK-HEAD_NUM = 0.

I_OBJPACK-BODY_START = 1.

I_OBJPACK-BODY_NUM = V_LINES_TXT.

I_OBJPACK-DOC_TYPE = 'PDF'.

APPEND I_OBJPACK.

*Attachment (pdf-Attachment)

I_OBJPACK-TRANSF_BIN = 'X'.

I_OBJPACK-HEAD_START = 1.

I_OBJPACK-HEAD_NUM = 0.

I_OBJPACK-BODY_START = 1.

DESCRIBE TABLE I_OBJBIN LINES V_LINES_BIN.

READ TABLE I_OBJBIN INDEX V_LINES_BIN.

I_OBJPACK-DOC_SIZE = V_LINES_BIN * 255 .

I_OBJPACK-BODY_NUM = V_LINES_BIN.

I_OBJPACK-DOC_TYPE = 'PDF'.

I_OBJPACK-OBJ_NAME = 'smart'.

I_OBJPACK-OBJ_DESCR = 'test'.

APPEND I_OBJPACK.

CLEAR I_RECLIST.

I_RECLIST-RECEIVER = 'smtp mail id'.

I_RECLIST-REC_TYPE = 'U'.

APPEND I_RECLIST.

CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'

EXPORTING

DOCUMENT_DATA = WA_DOC_CHNG

*PUT_IN_OUTBOX = 'X'

*COMMIT_WORK = 'X'

TABLES

PACKING_LIST = I_OBJPACK

OBJECT_HEADER = WA_OBJHEAD

CONTENTS_BIN = I_OBJBIN

CONTENTS_TXT = I_OBJTXT

RECEIVERS = I_RECLIST

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.

IF SY-SUBRC NE 0.

WRITE:/ 'Error When Sending the File', SY-SUBRC.

ELSE.

WRITE:/ 'Mail sent'.

Hi all,

Can anyone please tell me the error in the code below. The code is to send a Smart form as an attachment in email.

I get an error in the Function Module 'SO_NEW_DOCUMENT_ATT_SEND_API1'(The

value of sy-subrc is 2 after executing this Function Module).

Please clarify this query of mine:

Kindly reply immediately as this is bit urgent.

===========================================

*Internal Table declarations

DATA: I_OTF TYPE ITCOO OCCURS 0 WITH HEADER LINE,

I_TLINE TYPE TABLE OF TLINE WITH HEADER LINE,

I_RECEIVERS TYPE TABLE OF SOMLRECI1 WITH HEADER LINE,

I_RECORD LIKE SOLISTI1 OCCURS 0 WITH HEADER LINE,

*Objects to send mail.

I_OBJPACK LIKE SOPCKLSTI1 OCCURS 0 WITH HEADER LINE,

I_OBJTXT LIKE SOLISTI1 OCCURS 0 WITH HEADER LINE,

I_OBJBIN LIKE SOLISTI1 OCCURS 0 WITH HEADER LINE,

I_RECLIST LIKE SOMLRECI1 OCCURS 0 WITH HEADER LINE,

*Work Area declarations

WA_OBJHEAD TYPE SOLI_TAB,

W_CTRLOP TYPE SSFCTRLOP,

W_COMPOP TYPE SSFCOMPOP,

W_RETURN TYPE SSFCRESCL,

WA_DOC_CHNG TYPE SODOCCHGI1,

W_DATA TYPE SODOCCHGI1,

WA_BUFFER TYPE STRING, "To convert from 132 to 255

*Variables declarations

V_FORM_NAME TYPE RS38L_FNAM,

V_LEN_IN LIKE SOOD-OBJLEN,

V_LEN_OUT LIKE SOOD-OBJLEN,

V_LEN_OUTN TYPE I,

V_LINES_TXT TYPE I,

V_LINES_BIN TYPE I.

CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'

EXPORTING

FORMNAME = 'Z_TEST'

IMPORTING

FM_NAME = V_FORM_NAME

EXCEPTIONS

NO_FORM = 1

NO_FUNCTION_MODULE = 2

OTHERS = 3.

IF SY-SUBRC NE 0.

MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

W_CTRLOP-GETOTF = 'X'.

W_CTRLOP-NO_DIALOG = 'X'.

W_COMPOP-TDNOPREV = 'X'.

DATA : LV_ANSWER TYPE CRM_SVY_DB_STRING.

DATA : devtype type rspoptype.

DATA : output_options type ssfcompop,

control_parameters type ssfctrlop,

output_data type ssfcrescl.

LV_ANSWER = 'TEST'.

*CALL FUNCTION V_FORM_NAME

*EXPORTING

*CONTROL_PARAMETERS = W_CTRLOP

*OUTPUT_OPTIONS = W_COMPOP

**USER_SETTINGS = 'X'

*ANSWER = lv_answer

*IMPORTING

*JOB_OUTPUT_INFO = W_RETURN

*EXCEPTIONS

*FORMATTING_ERROR = 1

*INTERNAL_ERROR = 2

*SEND_ERROR = 3

*USER_CANCELED = 4

*OTHERS = 5.

call function 'SSF_GET_DEVICE_TYPE'

EXPORTING

i_language = sy-langu

IMPORTING

e_devtype =

devtype

EXCEPTIONS

no_language = 1

language_not_installed = 2

no_devtype_found = 3

system_error = 4

others = 5.

  • set device type in output options

output_options-tdprinter = devtype.

control_parameters-langu = sy-langu.

control_parameters-no_dialog = 'X'.

control_parameters-getotf = 'X'.

CALL FUNCTION V_FORM_name

EXPORTING

  • ARCHIVE_INDEX =

  • ARCHIVE_INDEX_TAB =

  • ARCHIVE_PARAMETERS =

  • CONTROL_PARAMETERS =

  • MAIL_APPL_OBJ =

  • MAIL_RECIPIENT =

  • MAIL_SENDER =

  • OUTPUT_OPTIONS =

  • USER_SETTINGS = 'X'

CONTROL_PARAMETERS = CONTROL_PARAMETERS

OUTPUT_OPTIONS = OUTPUT_OPTIONS

ANSWER = lv_answer

  • IMPORTING

  • DOCUMENT_OUTPUT_INFO =

  • JOB_OUTPUT_INFO =

  • JOB_OUTPUT_OPTIONS =

IMPORTING

JOB_OUTPUT_INFO = W_RETURN

  • TABLES

  • it_bookings = bookings

  • it_schedules = connections

EXCEPTIONS

formatting_error = 1

internal_error = 2

send_error = 3

user_canceled = 4

OTHERS = 5

.

IF SY-SUBRC NE 0.

MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

I_OTF[] = W_RETURN-OTFDATA[].

CALL FUNCTION 'CONVERT_OTF'

EXPORTING

FORMAT = 'PDF'

MAX_LINEWIDTH = 132

IMPORTING

BIN_FILESIZE = V_LEN_IN

TABLES

OTF = I_OTF

LINES = I_TLINE

EXCEPTIONS

ERR_MAX_LINEWIDTH = 1

ERR_FORMAT = 2

ERR_CONV_NOT_POSSIBLE = 3

OTHERS = 4.

IF SY-SUBRC NE 0.

ENDIF.

LOOP AT I_TLINE.

TRANSLATE I_TLINE USING '~'.

CONCATENATE WA_BUFFER I_TLINE INTO WA_BUFFER.

ENDLOOP.

TRANSLATE WA_BUFFER USING '~'.

DO.

I_RECORD = WA_BUFFER.

APPEND I_RECORD.

SHIFT WA_BUFFER LEFT BY 255 PLACES.

IF WA_BUFFER IS INITIAL.

EXIT.

ENDIF.

ENDDO.

*Attachment

REFRESH: I_RECLIST,

I_OBJTXT,

I_OBJBIN,

I_OBJPACK.

CLEAR WA_OBJHEAD.

I_OBJBIN[] = I_RECORD[].

*Create Message Body Title and Description I_OBJTXT = 'test with pdf-Attachment!'.

APPEND I_OBJTXT.

DESCRIBE TABLE I_OBJTXT LINES V_LINES_TXT.

READ TABLE I_OBJTXT INDEX V_LINES_TXT.

WA_DOC_CHNG-OBJ_NAME = 'smartform'.

WA_DOC_CHNG-EXPIRY_DAT = SY-DATUM + 10.

WA_DOC_CHNG-OBJ_DESCR = 'smartform'.

WA_DOC_CHNG-SENSITIVTY = 'F'.

WA_DOC_CHNG-DOC_SIZE = V_LINES_TXT * 255.

*Main Text

CLEAR I_OBJPACK-TRANSF_BIN.

I_OBJPACK-HEAD_START = 1.

I_OBJPACK-HEAD_NUM = 0.

I_OBJPACK-BODY_START = 1.

I_OBJPACK-BODY_NUM = V_LINES_TXT.

I_OBJPACK-DOC_TYPE = 'PDF'.

APPEND I_OBJPACK.

*Attachment (pdf-Attachment)

I_OBJPACK-TRANSF_BIN = 'X'.

I_OBJPACK-HEAD_START = 1.

I_OBJPACK-HEAD_NUM = 0.

I_OBJPACK-BODY_START = 1.

DESCRIBE TABLE I_OBJBIN LINES V_LINES_BIN.

READ TABLE I_OBJBIN INDEX V_LINES_BIN.

I_OBJPACK-DOC_SIZE = V_LINES_BIN * 255 .

I_OBJPACK-BODY_NUM = V_LINES_BIN.

I_OBJPACK-DOC_TYPE = 'PDF'.

I_OBJPACK-OBJ_NAME = 'smart'.

I_OBJPACK-OBJ_DESCR = 'test'.

APPEND I_OBJPACK.

CLEAR I_RECLIST.

I_RECLIST-RECEIVER = 'smtp mail id'.

I_RECLIST-REC_TYPE = 'U'.

APPEND I_RECLIST.

CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'

EXPORTING

DOCUMENT_DATA = WA_DOC_CHNG

*PUT_IN_OUTBOX = 'X'

*COMMIT_WORK = 'X'

TABLES

PACKING_LIST = I_OBJPACK

OBJECT_HEADER = WA_OBJHEAD

CONTENTS_BIN = I_OBJBIN

CONTENTS_TXT = I_OBJTXT

RECEIVERS = I_RECLIST

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.

IF SY-SUBRC NE 0.

WRITE:/ 'Error When Sending the File', SY-SUBRC.

ELSE.

WRITE:/ 'Mail sent'.

5 REPLIES 5
Read only

Former Member
0 Likes
792

Hi Bala,

Better you use this FM 'SO_NEW_DOCUMENT_SEND_API1'

I have worked on it.

It works fine.

Thanks.

Note:Reward Points if you find useful.

Read only

0 Likes
792

Hi Swaminathan,

Thanks for your reply.

Can you please send me your code please.

Kindly reply immediately as this is bit urgent.

Regards,

Vijay

Read only

0 Likes
792

Hi Bala,

This FM i have used inside the BADI.

  • DESCRIPTION

  • -----------

  • Before approval of Avulso Po the name of the Bank employee who signed in the invoice is entered.

*This name is validated against a separate approver table.After approval the employee who signed the invoice receives an email

*using a BADI at transaction ME21N/ ME22N / ME23N

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

*Internal Table

DATA :

lt_object_content TYPE STANDARD TABLE OF solisti1,

lt_receiver TYPE STANDARD TABLE OF somlreci1,

*Work Area

lw_mepoheader TYPE mepoheader,

lw_document_data TYPE sodocchgi1,

lw_object_content TYPE solisti1,

lw_receiver TYPE somlreci1.

*ariables

DATA:

lv_entries LIKE sy-tabix,

lv_mail_send TYPE actflag,

lv_subject_2 TYPE xblnr1,

lv_subject TYPE so_obj_des,

lv_email TYPE zzemail,

lv_text_3 TYPE JBSBRUTNET_T,

lv_amount_3 TYPE TELF0,

lv_text_5 TYPE netdt,

lv_text_7 TYPE ebeln,

lv_text TYPE so_text255,

lv_date_5 TYPE ELIFN,

lv_field TYPE everk.

  • Constants

CONSTANTS:

lc_purchasegroup_b28 TYPE ekorg VALUE 'B28',

lc_purchasegroup_b10 TYPE ekorg VALUE 'B10',

lc_flag TYPE actflag VALUE 'X',

lc_subject_1 TYPE so_obj_des VALUE 'A Nota Fiscal',

lc_subject_3 TYPE so_obj_des VALUE 'foi dada entrada no SAP',

lc_text_2 TYPE so_obj_des VALUE 'de valor',

lc_text_4 TYPE so_obj_des VALUE 'e data de vencimento',

lc_text_6 TYPE so_text255 VALUE 'foi dada entrada no sistema SAP através do Pedido Avulso nr.',

lc_dot TYPE ebstyp VALUE '.',

lc_space TYPE ebstyp VALUE ' ' ,

lc_object_name TYPE abdum VALUE 'PO',

lc_sensitivity TYPE weakt VALUE 'O',

lc_priority TYPE weakt VALUE '1',

lc_rec_type TYPE weakt VALUE 'U',

lc_doc_type TYPE inco1 VALUE 'RAW',

lc_index TYPE bubkz VALUE '1',

lc_one TYPE bubkz VALUE '1',

lc_unit TYPE ABDUM VALUE 'R$',

lc_255 TYPE kblpos VALUE '255',

lc_memoid_mailsend TYPE inco1 VALUE 'ZMS',

lc_memoid_emailid TYPE inco1 VALUE 'ZEM'.

DATA : lv_ebeln TYPE char30 VALUE '(SAPLMEPO)EKKO'.

FIELD-SYMBOLS : .

*Send Email to the Mail ID selected.

  • Fill the document

IMPORT lv_mail TO lv_mail_send FROM MEMORY ID lc_memoid_mailsend.

IF sy-subrc is initial.

IF lv_mail_send EQ lc_flag.

lw_mepoheader = im_header->get_data( ).

IMPORT lv_email_send TO lv_email FROM MEMORY ID lc_memoid_emailid.

IF sy-subrc is initial.

lw_document_data-obj_name = lc_object_name.

lv_subject_2 = lw_mepoheader-zzxblnr.

CONCATENATE lc_subject_1 lv_subject_2 lc_subject_3 INTO lv_subject SEPARATED BY space.

  • Assign Subject Text of Email

lw_document_data-obj_descr = lv_subject.

lw_document_data-sensitivty = lc_sensitivity.

lw_document_data-priority = lc_priority.

lw_document_data-obj_langu = sy-langu.

MOVE lw_mepoheader-zzwrbtr TO lv_text_3.

CALL FUNCTION 'ZCATS_NUMERIC_INPUT_CHECK'

EXPORTING

input = lv_text_3

INTERNAL = 'X'

IMPORTING

OUTPUT = lv_text_3

  • EXCEPTIONS

  • NO_NUMERIC = 1

  • OTHERS = 2

.

IF sy-subrc <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

SHIFT lv_text_3 LEFT DELETING LEADING space.

concatenate lc_unit lv_text_3 into lv_amount_3.

lv_text_5 = lw_mepoheader-zznetdt.

concatenate lv_text_56(2) lv_text_54(2) lv_text_5+0(4) into lv_date_5

separated by '.' .

IF lw_mepoheader-ebeln IS INITIAL.

MOVE -ebeln TO lw_mepoheader-ebeln.

ENDIF.

lv_text_7 = lw_mepoheader-ebeln.

  • CLEAR <LW_EKKO>.

CONCATENATE lc_subject_1 lv_subject_2 lc_text_2 lv_amount_3 lc_text_4 lv_date_5 lc_text_6 lv_text_7 INTO lv_text SEPARATED BY space.

CONCATENATE lv_text lc_dot INTO lv_text.

  • Assign Text of email

lw_object_content-line = lv_text.

APPEND lw_object_content TO lt_object_content.

CLEAR:lw_object_content.

READ TABLE lt_object_content INDEX lc_index INTO lw_object_content.

IF sy-subrc IS INITIAL.

lw_document_data-doc_size = STRLEN( lw_object_content ).

ENDIF.

  • Fill the receiver list

CLEAR lt_receiver.

MOVE lv_email TO lw_receiver-receiver.

lw_receiver-rec_type = lc_rec_type.

lw_receiver-express = lc_flag.

APPEND lw_receiver TO lt_receiver.

CLEAR lw_receiver.

CALL FUNCTION 'SO_NEW_DOCUMENT_SEND_API1'

EXPORTING

document_data = lw_document_data

document_type = lc_doc_type

put_in_outbox = lc_space

TABLES

object_content = lt_object_content

receivers = lt_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.

IF NOT sy-subrc IS INITIAL.

MESSAGE e024(zmbrmm_av) INTO lv_field.

  • Message for email sent or not.

IF lv_field IS NOT INITIAL.

CALL FUNCTION 'POPUP_TO_DISPLAY_TEXT'

EXPORTING

textline1 = lv_field.

ENDIF.

ENDIF.

ENDIF. "sy-subrc

ENDIF. "EMAIL send flag

ENDIF. "sy-subrc

Thanks.

Note:Reward Points if you find useful.

Read only

Former Member
0 Likes
792

Hello,


Compare your part of code with the below given code.

&---------------------------------------------------------------------
*& Report YSSN_SIMPLE_SMARTFORM *
*& *
&---------------------------------------------------------------------
*& *
*& *
&---------------------------------------------------------------------

report zhr_bhaskar_pdf_to_email message-id zmsg.

parameters: p_vbeln type vbak-vbeln default '35'.

data: it_items type table of vbap,

v_fm_name type rs38l_fnam,
v_tot_lines type i,
v_sy_tabix type i,
output_data type ssfcrescl. " To hold Output information

constants:
c_sep type c value '-', " Value -
c_x type c value 'X', " Value X
c_space type c value ' '. " Space
*****MAIL START
include <cntn01>.

data: g_mail_rec_obj type swotobjid,
g_mail_sen_obj type swotobjid,
g_mail_app_obj type swotobjid,
g_cont_par type ssfctrlop,
folder type swc_object,
begin of sofmfol_key,
foldertype like sofm-foltp,
folderyear like sofm-folyr,
foldernumber like sofm-folno,
type like sofm-doctp,
year like sofm-docyr,
number like sofm-docno,
forwarder like soub-usrnam,
end of sofmfol_key,
bor_key like swotobjid-objkey,


g_mail TYPE ppfdmailad VALUE '[email protected]', 
g_mail type so_name value '[email protected]',

g_mail TYPE ppfdmailad VALUE '[email protected]' , 
g_mail TYPE ppfdmailad VALUE '[email protected]' , 
g_rectype type so_escape value 'U'. " 'B'.

data: job_output_info type ssfcrescl,
hotfdata like itcoo occurs 1 with header line,
htline like tline occurs 1 with header line,
x_objcont like soli occurs 1 with header line,
ld_packing_list like soxpl occurs 1 with header line,
x_object_hd_change like sood1 occurs 1 with header line,
x_objhead like soli occurs 1 with header line,
x_receivers like soos1 occurs 1 with header line,
format_pdf(10) value 'PDF',
doc_size(12) type c,
hltlines type i,
htabix like sy-tabix,
fle1(2) type p,
fle2(2) type p,
off1 type p,
hfeld(500) type c.

tables: soud.

*****MAIL END

select *
into table it_items
from vbap
where vbeln = p_vbeln.

if it_items[] is initial.
exit.
endif.

perform call_smartform.

&---------------------------------------------------------------------
*& Form call_smartform
&---------------------------------------------------------------------


text 
----------------------------------------------------------------------

--> p1 text 
<-- p2 text 
----------------------------------------------------------------------
form call_smartform .
*DATA: lx_control_parameters TYPE SSFCTRLOP,

lx_OUTPUT_OPTIONS type SSFCOMPOP. 
lx_OUTPUT_OPTIONS-TDIMMED = ' '. 
lx_OUTPUT_OPTIONS-TDfinal = 'X'. 
lx_OUTPUT_OPTIONS-TDDELETE = 'X'. 
lx_CONTROL_PARAMETERS-NO_CLOSE = 'X'. 
lx_CONTROL_PARAMETERS-NO_OPEN = ' '. 
data: x_ssfcompop type ssfcompop,
x_ssfctrlop like ssfctrlop,
x_ssfcrescl type ssfcrescl.

**MAIL
g_cont_par-langu = sy-langu.
g_cont_par-no_dialog = 'X'.
g_cont_par-getotf = 'X'.
g_cont_par-device = 'MAIL'.

Get BOR-Objects for Recipient, Sender und Applikation 
perform mail_recipient_object changing g_mail_rec_obj.
perform mail_sender_object changing g_mail_sen_obj.
perform mail_appl_object changing g_mail_app_obj.
**MAIL

*--Internal table is having more than 1 record
if v_tot_lines gt 1.
if v_sy_tabix = 1.
*--For first record of table
x_ssfctrlop-no_open = c_space.
x_ssfctrlop-no_close = c_x.
elseif v_sy_tabix = v_tot_lines.
*--For last record of table
x_ssfctrlop-no_open = c_x.
x_ssfctrlop-no_close = c_space.
else.
x_ssfctrlop-no_open = c_x.
x_ssfctrlop-no_close = c_x.
endif.
endif.

IF r_previ = c_x. 
x_ssfctrlop-preview = c_x.
x_ssfctrlop-getotf = c_x.

ENDIF. 
call function 'SSF_FUNCTION_MODULE_NAME'
exporting
formname = 'YSSN_SMARTFORM'


VARIANT = ' ' 
DIRECT_CALL = ' ' 
importing
fm_name = v_fm_name

EXCEPTIONS 
NO_FORM = 1 
NO_FUNCTION_MODULE = 2 
OTHERS = 3 
.
if sy-subrc 0.
message i000 with 'Smart form module name failure'.
exit.
endif.




CALL FUNCTION '/1BCDWB/SF00000199' 
call function v_fm_name
exporting

ARCHIVE_INDEX = 
ARCHIVE_INDEX_TAB = 
ARCHIVE_PARAMETERS = 
control_parameters = g_cont_par
mail_appl_obj = g_mail_app_obj
mail_recipient = g_mail_rec_obj
mail_sender = g_mail_sen_obj

OUTPUT_OPTIONS = lx_OUTPUT_OPTIONS 
USER_SETTINGS = 'X' 
t_vbap = it_items

IMPORTING 
DOCUMENT_OUTPUT_INFO = 
job_output_info = job_output_info

JOB_OUTPUT_OPTIONS = 
EXCEPTIONS 
FORMATTING_ERROR = 1 
INTERNAL_ERROR = 2 
SEND_ERROR = 3 
USER_CANCELED = 4 
OTHERS = 5 
.

perform send_pdf_mail.

endform. " call_smartform
&---------------------------------------------------------------------
*& Form send_pdf_mail
&---------------------------------------------------------------------


text 
----------------------------------------------------------------------

--> p1 text 
<-- p2 text 
----------------------------------------------------------------------
form send_pdf_mail .
data ld_binfile type xstring.

pdf_table type rcl_bag_tline, 
data: ld_originator like soos1-recextnam.


convert form 
loop at job_output_info-otfdata into hotfdata.
append hotfdata.
endloop.

call function 'CONVERT_OTF'
exporting
format = format_pdf
max_linewidth = 132
importing
bin_filesize = doc_size
bin_file = ld_binfile
tables
otf = output_data-otfdata
lines = htline
exceptions
err_max_linewidth = 1
err_format = 2
err_conv_not_possible = 3
others = 4.

*-Itab 134 Zeichen nach 255 Zeichen überführen
describe table htline lines hltlines.
describe field htline length fle1 in character mode.
describe field x_objcont length fle2 in character mode.
loop at htline.
htabix = sy-tabix.
move htline to hfeld+off1.
if htabix = hltlines.
fle1 = strlen( htline ).
endif.
off1 = off1 + fle1.
if off1 ge fle2.
clear x_objcont.
x_objcont = hfeld(fle2).
append x_objcont.
shift hfeld by fle2 places.
off1 = off1 - fle2.
endif.
if htabix = hltlines.
if off1 gt 0.
clear x_objcont.
x_objcont = hfeld(off1).
append x_objcont.
endif.
endif.
endloop.

x_object_hd_change-objnam = 'EMAIL'.
x_object_hd_change-objdes = 'Smart Form'.
x_object_hd_change-objla = sy-langu.
x_object_hd_change-objsns = 'O'.
x_object_hd_change-objlen = doc_size.
x_object_hd_change-file_ext = 'TXT'.
ld_packing_list-transf_bin = 'X'.
ld_packing_list-head_start = 1.
ld_packing_list-head_num = 0.
ld_packing_list-body_start = 1.
describe table x_objcont lines ld_packing_list-body_num.
ld_packing_list-objtp = 'EXT'.
ld_packing_list-objdes = 'Smart Form'.
ld_packing_list-objla = sy-langu.
ld_packing_list-objlen = doc_size.
ld_packing_list-file_ext = 'PDF'.
append ld_packing_list.

x_receivers-recextnam = g_mail.
x_receivers-recesc = 'E'.
x_receivers-sndart = 'INT'.
append x_receivers.

ld_originator = '[email protected]'.



ld_originator = FSABE-USRNAM. 
call function 'SO_OBJECT_SEND'
exporting
object_hd_change = x_object_hd_change
object_type = 'RAW'
originator_type = 'B' "Einfügen
originator = ld_originator "Einfügen
tables


objcont = ld_text 
receivers = x_receivers
packing_list = ld_packing_list
att_cont = x_objcont
att_head = x_objhead
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.

endform. " send_pdf_mail


&---------------------------------------------------------------------
*& Form mail_sender_object
&---------------------------------------------------------------------


text 
----------------------------------------------------------------------

<--P_G_MAIL_SEN_OBJ text 
----------------------------------------------------------------------
form mail_sender_object changing p_mail_sen_obj.

call function 'CREATE_SENDER_OBJECT_PPF'
exporting
ip_sender = sy-uname
importing
ep_sender_id = p_mail_sen_obj
exceptions
invalid_sender = 1
others = 2.
if sy-subrc 0.
message id sy-msgid type sy-msgty number sy-msgno
with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
endif.

endform. " mail_sender_object
&---------------------------------------------------------------------
*& Form mail_appl_object
&---------------------------------------------------------------------

text 
----------------------------------------------------------------------

<--P_G_MAIL_APP_OBJ text 
----------------------------------------------------------------------
form mail_appl_object changing p_mail_app_obj.


SELECT * FROM soud WHERE sapnam LIKE sy-uname AND deleted = ' '. 
ENDSELECT. 
IF sy-subrc NE 0. 

call function 'SO_USER_AUTOMATIC_INSERT'
exporting
sapname = sy-uname
exceptions
no_insert = 1
sap_name_exist = 2
x_error = 3
others = 4.
if sy-subrc ne 0.
clear soud.
else.
select * from soud where sapnam like sy-uname and deleted = ' '.
endselect.
endif.

ENDIF. 

clear sofmfol_key.
sofmfol_key-type = 'FOL'.
sofmfol_key-year = soud-inbyr.
sofmfol_key-number = soud-inbno.
bor_key = sofmfol_key.
if not bor_key is initial.
swc_create_object folder 'SOFMFOL' bor_key.
if sy-subrc = 0.

swc_object_to_persistent folder p_mail_app_obj.
if sy-subrc ne 0.
clear p_mail_app_obj.
endif.
endif.
else.
clear p_mail_app_obj.
endif.

endform. " mail_appl_object

&---------------------------------------------------------------------
*& Form mail_recipient_object
&---------------------------------------------------------------------

text 
----------------------------------------------------------------------

<--P_G_MAIL_REC_OBJ text 
----------------------------------------------------------------------
form mail_recipient_object changing p_mail_rec_obj.

call function 'CREATE_RECIPIENT_OBJ_PPF'
exporting

IP_COUNTRY = 
IP_FAXNO = 
ip_mailaddr = g_mail
ip_type_id = g_rectype " 'U'
importing
ep_recipient_id = p_mail_rec_obj

EP_ADDRESS = 
ET_RECIPIENT = 
exceptions
invalid_recipient = 1
others = 2.
if sy-subrc 0.
message id sy-msgid type sy-msgty number sy-msgno
with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
endif.

endform. " mail_recipient_object

I hope this code should definitely work and helps you a lot.

Do reward me if it helps you.

Cheers,

Vasanth

Read only

0 Likes
792

Hi,

Thanks for all your replies.

Regards,

Vijay