Skip to Content
author's profile photo Former Member
Former Member

for this program i could send the smart form thru mail but in the inbox ..

*&----


*

*& Report ZSFOO

*&

*&----


*

*&

*&

*&----


*

REPORT ZSFOO.

*&----


*

*& Report ZSFINV

*&

*&----


*

*&

*&

*&----


*

TABLES : KNA1, " General Data In Customer Master

KNB1, " Customer Master(Company Code)

BSID, " Accounting: Secondary Index for Customers

ZSMARTFORM, " Custom table for Storing Bank Details

zsf_exp_inv, " Structure that stores required fields from all tables used

KNVK. " Customer Master Contact Partner

data : Begin of it_struct occurs 0.

include structure zsf_exp_inv01.

data : End of it_struct.

types : begin of ty_bsid,

kunnr like bsid-kunnr,

WAERS like bsid-WAERS,

XBLNR LIKE BSID-XBLNR,

BUDAT LIKE BSID-BUDAT,

WRBTR LIKE BSID-WRBTR,

BUKRS LIKE BSID-BUKRS,

end of ty_bsid.

types : begin of ty_kna1,

kunnr like kna1-kunnr,

NAME1 LIKE KNA1-NAME1,

STRAS LIKE KNA1-STRAS,

MCOD3 LIKE KNA1-MCOD3,

LAND1 LIKE KNA1-LAND1,

SORTL LIKE KNA1-SORTL,

end of ty_kna1.

types : begin of ty_knb1,

kunnr like knb1-kunnr,

ZTERM LIKE KNB1-ZTERM,

end of ty_knb1.

types : begin of ty_knVK,

kunnr like kNVK-kunnr,

NAME1 LIKE KNVK-NAME1,

end of ty_knVK.

types : begin of ty_ZSMARTFORM,

SNO LIKE ZSMARTFORM-SNO,

CURRENCY LIKE zsmartform-currency,

BANKNAME LIKE zsmartform-bankname,

ADDRESS1 LIKE ZSMARTFORM-ADDRESS1,

ADDRESS2 LIKE ZSMARTFORM-ADDRESS2,

ADDRESS3 LIKE ZSMARTFORM-ADDRESS3,

ADDRESS4 LIKE ZSMARTFORM-ADDRESS4,

ADDRESS5 LIKE ZSMARTFORM-ADDRESS5,

ADDRESS6 LIKE ZSMARTFORM-ADDRESS6,

VALIDFROM LIKE ZSMARTFORM-VALIDFROM,

VALIDTO LIKE ZSMARTFORM-VALIDTO,

end of ty_ZSMARTFORM.

data : it_bsid type table of ty_bsid,

it_kna1 type table of ty_kna1,

it_knb1 type table of ty_knb1,

it_zsmartform type table of ty_zsmartform,

it_knVK type table of ty_kNVK.

data : wa_bsid like line of it_bsid,

wa_kna1 like line of it_kna1,

wa_knb1 like line of it_knb1,

wa_zsmartform like line of it_zsmartform,

wa_knVK like line of it_knVK.

*****************Selection Screen**********************************

SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-000.

SELECT-OPTIONS : S_KUNNR FOR KNA1-KUNNR,

S_belnr FOR BSID-belnr,

S_BUKRS FOR BSID-BUKRS,

S_CURR FOR ZSMARTFORM-CURRENCY.

SELECTION-SCREEN END OF BLOCK B1.

DATA : BEGIN OF IT_PARAM OCCURS 0.

INCLUDE STRUCTURE ZPARAMETERS.

DATA : END OF IT_PARAM.

SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME TITLE TEXT-001.

SKIP 1.

Parameters : OPTION1 AS CHECKBOX,

P_POINF(300) type c,

OPTION2 AS CHECKBOX,

P_DESC(300) TYPE C,

OPTION3 AS CHECKBOX,

P_MONTH(200) TYPE C,

OPTION4 AS CHECKBOX,

P_RATE(100) TYPE C.

SELECTION-SCREEN END OF BLOCK B2.

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

**********************PARAMETERS***********************************

data : l type i,

Y(300) type c,

j type i,

k type i value 1,

s type i,

m(300) type c,

p type i,

z type i.

data : l1 type i,

Y1(300) type c,

j1 type i,

k1 type i value 1,

s1 type i,

m1(300) type c,

p1 type i,

z1 type i.

data : l2 type i,

Y2(300) type c,

j2 type i,

k2 type i value 1,

s2 type i,

m2(300) type c,

p2 type i,

z2 type i.

data : l3 type i,

Y3(300) type c,

j3 type i,

k3 type i value 1,

s3 type i,

m3(300) type c,

p3 type i,

z3 type i.

IF OPTION1 = 'X'.

concatenate P_POINF ',' into P_POINF.

l = strlen( P_POINF ).

do l times.

Y = P_POINF+j(k).

case Y.

when ','.

m = P_POINF+s(z).

s = j + 1.

z = -1.

p = p + 1.

if p = 1.

IT_PARAM-LINE1 = m.

endif.

if p = 2.

IT_PARAM-LINE2 = m.

endif.

if p = 3.

IT_PARAM-LINE3 = m.

endif.

  • when '.'.

if p = 4.

IT_PARAM-LINE4 = m.

endif.

endcase.

j = j + 1.

z = z + 1.

enddo.

ENDIF.

IF OPTION2 = 'X'.

concatenate P_DESC ',' into P_DESC.

l1 = strlen( P_DESC ).

do l1 times.

Y1 = P_DESC+j1(k1).

case Y1.

when ','.

m1 = P_DESC+s1(z1).

s1 = j1 + 1.

z1 = -1.

p1 = p1 + 1.

if p1 = 1.

IT_PARAM-LINE5 = m1.

endif.

if p1 = 2.

IT_PARAM-LINE6 = m1.

endif.

if p1 = 3.

IT_PARAM-LINE7 = m1.

endif.

  • when '.'.

if p1 = 4.

IT_PARAM-LINE8 = m1.

endif.

endcase.

j1 = j1 + 1.

z1 = z1 + 1.

enddo.

ENDIF.

IF OPTION3 = 'X'.

concatenate P_MONTH ',' into P_MONTH.

l2 = strlen( P_MONTH ).

do l2 times.

Y2 = P_MONTH+j2(k2).

case Y2.

when ','.

m2 = P_MONTH+s2(z2).

s2 = j2 + 1.

z2 = -1.

p2 = p2 + 1.

if p2 = 1.

IT_PARAM-LINE9 = m2.

endif.

if p2 = 2.

IT_PARAM-LINE10 = m2.

endif.

if p2 = 3.

IT_PARAM-LINE11 = m2.

endif.

  • when '.'.

if p2 = 4.

IT_PARAM-LINe12 = m2.

endif.

endcase.

j2 = j2 + 1.

z2 = z2 + 1.

enddo.

ENDIF.

IF OPTION4 = 'X'.

concatenate P_RATE ',' into P_RATE.

l3 = strlen( P_RATE ).

do l3 times.

Y3 = P_RATE+j3(k3).

case Y3.

when ','.

m3 = P_RATE+s3(z3).

s3 = j3 + 1.

z3 = -1.

p3 = p3 + 1.

if p3 = 1.

IT_PARAM-LINE13 = m3.

endif.

if p3 = 2.

IT_PARAM-LINE14 = m3.

endif.

if p3 = 3.

IT_PARAM-LINE15 = m3.

endif.

if p3 = 4.

IT_PARAM-LINe16 = m3.

endif.

endcase.

j3 = j3 + 1.

z3 = z3 + 1.

enddo.

ENDIF.

APPEND IT_PARAM.

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

select * from kna1 into corresponding fields of table it_kna1 where kunnr in s_kunnr.

select * from knb1 into corresponding fields of table it_knb1 for all entries in it_kna1 where kunnr = it_kna1-kunnr.

select * from bsid into corresponding fields of table it_bsid for all entries in it_kna1 where kunnr = it_kna1-kunnr and belnr in s_belnr and bukrs in s_bukrs..

SELECT * FROM KNVK INTO CORRESPONDING FIELDS OF TABLE IT_KNVK FOR ALL ENTRIES IN IT_KNA1 WHERE KUNNR = IT_KNA1-KUNNR.

select * from zsmartform into corresponding fields of table it_zsmartform .

DATA : AMT LIKE SPELL.

loop at it_bsid into wa_bsid.

read table it_kna1 into wa_kna1 with key kunnr = wa_bsid-kunnr.

read table it_knb1 into wa_knb1 with key kunnr = wa_bsid-kunnr.

read table it_zsmartform into wa_zsmartform with key CURRENCY = wa_bsid-WAERS.

READ TABLE IT_KNVK INTO WA_KNVK WITH KEY KUNNR = WA_BSID-KUNNR.

it_struct-name1 = wa_kna1-name1.

it_struct-stras = wa_kna1-stras.

it_struct-mcod3 = wa_kna1-mcod3.

it_struct-land1 = wa_kna1-land1.

it_struct-sortl = wa_kna1-sortl.

it_struct-zterm = wa_knb1-zterm.

it_struct-xblnr = wa_bsid-xblnr.

  • it_struct-currency = wa_zsmartform-currency.

it_struct-currency = wa_bsid-waers.

it_struct-budat = wa_bsid-budat.

it_struct-BANKNAME = wa_zsmartform-BANKNAME.

it_struct-ADDRESS1 = wa_zsmartform-ADDRESS1.

it_struct-ADDRESS2 = wa_zsmartform-ADDRESS2.

it_struct-ADDRESS3 = wa_zsmartform-ADDRESS3.

it_struct-ADDRESS4 = wa_zsmartform-ADDRESS4.

it_struct-ADDRESS5 = wa_zsmartform-ADDRESS5.

it_struct-ADDRESS6 = wa_zsmartform-ADDRESS6.

it_struct-CURR = WA_BSID-WRBTR.

IT_STRUCT-NAME = WA_KNVK-NAME1.

  • IT_STRUCT-AMOUNT = IT_SPELL-AMT.

append it_struct.

endloop.

data : x type i,

x1 type i,

a type string.

loop at it_struct.

x = strlen( it_struct-curr ).

x1 = x - 3.

a = it_struct-curr+0(x1).

CALL FUNCTION 'SPELL_AMOUNT'

EXPORTING

AMOUNT = a

  • CURRENCY = ' '

  • FILLER = ' '

  • LANGUAGE = SY-LANGU

IMPORTING

IN_WORDS = AMT.

  • EXCEPTIONS

  • NOT_FOUND = 1

  • TOO_LARGE = 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.

    endloop.

    DATA: ws_ucomm LIKE sy-ucomm.

    DATA: form_name TYPE rs38l_fnam.

    DATA: wa_ctrlop TYPE ssfctrlop,

    wa_outopt TYPE ssfcompop.

    data : i_receivers TYPE TABLE OF somlreci1 WITH HEADER LINE,

    i_record LIKE solisti1 OCCURS 0 WITH HEADER LINE.

    DATA: t_otfdata TYPE ssfcrescl,

    t_pdf_tab LIKE tline OCCURS 0 WITH HEADER LINE,

    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.

    data : wa_objhead TYPE soli_tab,

    wa_doc_chng typE sodocchgi1,

    w_data TYPE sodocchgi1,

    wa_buffer TYPE string,

    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.

    DATA: t_otf TYPE itcoo OCCURS 0 WITH HEADER LINE.

    DATA: w_filesize TYPE string.

    DATA: w_bin_filesize TYPE i.

    wa_ctrlop-getotf = 'X'.

    CALL FUNCTION '/1BCDWB/SF00000001'

    EXPORTING

    control_parameters = wa_ctrlop

    output_options = wa_outopt

    user_settings = 'X'

    IN_WORDS = amt

    importing

    job_output_info = t_otfdata

    TABLES

    I_ZSF_EXP_INV = it_struct

    I_ZPARAMETERS = it_param.

    IF SY-SUBRC <> 0.

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

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

    ENDIF.

    t_otf[] = t_otfdata-otfdata[].

    CALL FUNCTION 'CONVERT_OTF'

    EXPORTING

    format = 'PDF'

    max_linewidth = 132

    IMPORTING

    bin_filesize = w_bin_filesize

    TABLES

    otf = t_otf

    lines = t_pdf_tab

    EXCEPTIONS

    err_max_linewidth = 1

    err_format = 2

    err_conv_not_possible = 3

    OTHERS = 4

    .

    IF sy-subrc <> 0.

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

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

    ENDIF.

    CALL FUNCTION 'WS_DOWNLOAD'

    EXPORTING

    bin_filesize = w_bin_filesize

    • CODEPAGE = ' '

    filename = 'c: est59.PDF'

    filetype = 'BIN'

    IMPORTING

    filelength = w_filesize

    TABLES

    data_tab = t_pdf_tab

    EXCEPTIONS

    file_open_error = 1

    file_write_error = 2

    invalid_filesize = 3

    invalid_type = 4

    no_batch = 5

    unknown_error = 6

    invalid_table_width = 7

    gui_refuse_filetransfer = 8

    customer_error = 9

    OTHERS = 10

    .

    IF sy-subrc <> 0.

    *You should include message-id in the report heading

    WRITE : sy-subrc.

    ELSE.

    WRITE : 'File Test.pdf downloaded succesfully'.

    ENDIF.

    loop at t_pdf_tab.

    translate t_pdf_tab using '~'.

    concatenate wa_buffer t_pdf_tab 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 = 'O'.

    wa_doc_chng-doc_size = v_lines_txt * 255.

    • Main Text

  • wa_doc_chng-doc_size = ( v_lines_txt - 1 ) * 255 + strlen( i_objtxt )

  • *.

    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 = 'RAW'.

    append i_objpack.

    i_objpack-transf_bin = 'X'.

    i_objpack-head_start = 1.

    i_objpack-head_num = 1.

    i_objpack-body_start = 1.

    i_objpack-body_num = v_lines_bin.

    i_objpack-doc_type = 'PDF'.

    i_objpack-obj_name = 'Smartform'.

    • CONCATENATE 'Hazard report-' p_load '.pdf' INTO i_objpack-obj_descr.

    • 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-obj_descr = 'test'.

    i_objpack-doc_size = v_lines_bin * 255.

    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.

    • Länge des Attachment ermitteln

  • 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 = 'jayakrishna.boyapalli@cambridge-asia.com'.

    i_reclist-express = 'X'.

    i_reclist-rec_type = 'U'.

    append i_reclist.

    call function 'SO_NEW_DOCUMENT_ATT_SEND_API1'

    EXPORTING

    document_data = wa_doc_chng

    COMMIT_WORK = 'X'

    put_in_outbox = '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.

    for this program i could send the smart form thru mail but in the inbox i could not

    download it it says needed to be decoded properly.file not starting with pdf....

    IF sy-subrc <> 0.

    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

    WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

    ELSE.

    CALL FUNCTION 'POPUP_TO_INFORM'

    EXPORTING

    titel = 'Mail sent'(003)

    txt1 = 'The report is sent via e-mail.'(004)

    txt2 = ' '.

    LEAVE PROGRAM.

    ENDIF.

    Add a comment
    10|10000 characters needed characters exceeded

    Related questions

    1 Answer

    • Best Answer
      author's profile photo Former Member
      Former Member
      Posted on Jan 10, 2007 at 08:42 AM

      HI,

      i ur case the pdf file is not ceated properly. to confirm the same use gui_download and see the file .it will solve the problem

      Add a comment
      10|10000 characters needed characters exceeded

      • Former Member Former Member

        hi krishna,

        u r right. there is no error in sending the mail and the file but the problem is that file created and converted to pdf is not done properly.jst verify whether the file is created properly or not .thats the only problem that can occurs else ur program is absolutely right.

    Before answering

    You should only submit an answer when you are proposing a solution to the poster's problem. If you want the poster to clarify the question or provide more information, please leave a comment instead, requesting additional details. When answering, please include specifics, such as step-by-step instructions, context for the solution, and links to useful resources. Also, please make sure that you answer complies with our Rules of Engagement.
    You must be Logged in to submit an answer.

    Up to 10 attachments (including images) can be used with a maximum of 1.0 MB each and 10.5 MB total.