Line Alignment in sending mail
Hi All,
I am craeting program for sending mail, its working fine but i want some line alignment in the body part. my output is:
Cost center | Company Code | Cost element | Description
159040 | 040 | 0000600100 | SALARIES
159040 | 040 | 6475FC | Contract
361001 | 001 | 0000600100 | SALARIES
i want output like below: when same cost center are there
Cost center | Company Code ption
159040 | 040
Cost element | Description
0000600100 | SALARIES
6475FC | Contract
Cost center | Company Code | Cost element | Description
361001 | 001 | 0000600100 | SALARIES
Can you please guide me
Thanks
Jigar
Cost center | Company Code ption
159040 | 040
Cost element | Description
0000600100 | SALARIES
6475FC | Contract
Cost center | Company Code | Cost element | Description
361001 | 001 | 0000600100 | SALARIES
instead of the above you can go for generalized like below ..
Cost center | Company Code ption
159040 | 040
Cost element | Description
0000600100 | SALARIES
6475FC | Contract
Cost center | Company Code
361001 | 001 |
Cost element | Description
0000600100 | SALARIES
data: wa_tab like line of it_tab.
sort it_tab by costcenter companycode.
loop at it_tab.
wa_tab = it_tab.
at new companycode.
write:/ ' Cost center | Company Code '.
write:/ wa_tab-costcenter,
wa_tab-companycode.
skip 2 lines.
write:/ ' Cost element | Description'.
endat.
write:/ wa_tab-costelement,
wa_tab-description.
endloop.
Similar Messages
-
Hi,
im working on sending report output as mail attachment in pdf format..
but im not getting the required output,,,i.e., even after entering email addresses in the selection screen....im not getting any mail to the respective mail-ids..
im pasting the code..pls fix the problem..
pls let me know wat we have to do in SCOT transaction after executing the program....pls respond ..pls ..
TABLES : t001, "COMPANY CODE
knb1, "CUSTOMER MASTER(COMPANY CODE)
cdhdr, "CHANGE DOCUMENT HEADER
knkk, "CUSTOMER MASTER CREDIT MANAGEMENT: CONTROL AREA DATA
kna1, "GENERAL DATA IN CUSTOMER MASTER
adrc, "ADDRESSES (BUSINESS ADDRESS SERVICES)
t001s, "ACCOUNTING CLERKS
adrt, "COMMUNICATION DATA TEXT (BUSINESS ADDRESS SERVICES)
adr6. "E-MAIL ADDRESSES (BUSINESS ADDRESS SERVICES)
TABLES: itcpo, "SAPscript output interface
itcpp. "SAPscript output parameters
TYPES: BEGIN OF y_t001,
bukrs TYPE bukrs,
kkber TYPE kkber,
adrnr TYPE adrnr,
END OF y_t001.
TYPES: BEGIN OF y_cust,
p_objectid TYPE cdobjectv,
END OF y_cust.
TYPES: BEGIN OF y_knkk,
kunnr TYPE kunnr,
kkber TYPE kkber,
dtrev TYPE dtrev_cm,
nxtrv TYPE nxtrv_cm,
klimk TYPE klimk,
dbwae TYPE dbwae_cm,
END OF y_knkk.
TYPES: BEGIN OF y_customer,
kunnr TYPE kunnr,
adrnr TYPE adrnr,
END OF y_customer.
TYPES: BEGIN OF y_custo ,
kunnr TYPE kunnr,
name TYPE name1_gp,
kkber TYPE kkber,
END OF y_custo.
TYPES: BEGIN OF y_knkk1,
kunnr LIKE knkk-kunnr,
dtrev LIKE knkk-dtrev,
nxtrv LIKE knkk-nxtrv,
klimk LIKE knkk-klimk,
END OF y_knkk1.
TYPES: BEGIN OF y_report_display,
kunnr TYPE kunnr,
name TYPE name1_gp,
dtrev TYPE dtrev_cm,
nxtrv TYPE nxtrv_cm,
klimk TYPE klimk,
dbwae TYPE dbwae_cm,
END OF y_report_display.
TYPES: BEGIN OF y_adrt,
addrnumber TYPE adrnr,
comm_type TYPE ad_comm,
remark TYPE ad_remark2,
persnumber TYPE ad_persnum,
date_from TYPE ad_date_fr,
consnumber TYPE ad_consnum,
smtp_addr TYPE ad_smtpadr,
END OF y_adrt.
*TYPES : BEGIN OF y_adr6,
addrnumber TYPE ad_addrnum,
persnumber TYPE ad_persnum,
date_from TYPE ad_date_fr,
consnumber TYPE ad_consnum,
smtp_addr TYPE ad_smtpadr,
END OF y_adr6.
*TYPES: BEGIN OF y_addr,
addrnumber TYPE adrnr,
name1 TYPE ad_name1,
postcode TYPE ad_pstcd1,
city1 TYPE ad_city1,
street TYPE ad_street,
housenum TYPE ad_hsnm1,
telnum TYPE ad_tlnmbr1,
faxnum TYPE ad_fxnmbr1,
END OF y_addr.
TYPES: BEGIN OF y_custnam,
adrnr TYPE adrnr,
name2 TYPE ad_name1,
END OF y_custnam.
TYPES: BEGIN OF y_kna1,
kunnr TYPE kunnr,
adrnr TYPE adrnr,
name1 TYPE name1,
END OF y_kna1.
TYPES: BEGIN OF y_knb1,
kunnr TYPE kunnr,
bukrs TYPE bukrs,
busab TYPE busab,
END OF y_knb1.
TYPES: BEGIN OF y_clv,
dtrev TYPE dtrev_cm,
nxtrv TYPE nxtrv_cm,
klimk TYPE klimk,
END OF y_clv.
TYPES: BEGIN OF y_ccname,
sname TYPE t001s-sname,
END OF y_ccname.
*TYPES DECLARATION FOR DESIGING SCRIPT
TYPES : BEGIN OF y_adrc,
addrnumber LIKE adrc-addrnumber,
name1 LIKE adrc-name1,
post_code1 LIKE adrc-post_code1,
city1 LIKE adrc-city1,
street LIKE adrc-street,
house_num1 LIKE adrc-house_num1,
tel_number LIKE adrc-tel_number,
nation LIKE adrc-nation ,
fax_number LIKE adrc-fax_number,
country LIKE adrc-country,
END OF y_adrc.
*TO GET C1 (CUSTOMER NAME IN RUSSIAN
TYPES : BEGIN OF y_adrc1,
addrnumber LIKE adrc-addrnumber,
name1 LIKE adrc-name1,
nation LIKE adrc-nation,
END OF y_adrc1.
*TO GET C7
TYPES :BEGIN OF y_t001s,
bukrs LIKE t001s-bukrs, "Company Code
busab LIKE t001s-busab,
sname LIKE t001s-sname,
END OF y_t001s.
CONSTANTS:
c_printer LIKE itcpp-tddevice VALUE 'PRINTER',
c_true(1) TYPE c VALUE 'X',
c_1(1) TYPE n VALUE '1',
c_pdf_format(3) TYPE c VALUE 'PDF',
c_u LIKE soos1-recesc VALUE 'U',
c_recipient_name LIKE soos1-recnam VALUE 'U-',
c_english LIKE sy-langu VALUE 'E',
c_f LIKE sood1-objsns VALUE 'F',
c_int(3) TYPE c VALUE 'INT',
c_main(4) TYPE c VALUE 'ITEM',
c_main_window(4) TYPE c VALUE 'MAIN',
c_header(6) TYPE c VALUE 'HEADER',
c_minus_sign(1) TYPE c VALUE '-',
c_document_type LIKE sood-objtp VALUE 'EXT',
c_space(1) TYPE c VALUE ' '.
DATA t_result LIKE itcpp.
DATA :w_t001 TYPE t001,
w_custo TYPE y_custo,
w_knkk TYPE y_knkk,
w_cust TYPE y_cust,
w_customer TYPE y_customer,
w_report_display TYPE y_report_display,
w_addr TYPE y_addr,
w_custnam TYPE y_custnam,
w_adrt TYPE y_adrt,
w_adr6 TYPE y_adr6,
w_kna1 TYPE y_kna1,
w_knb1 TYPE y_knb1,
w_clv TYPE y_clv,
w_ccname TYPE y_ccname.
DATA: w_error_found(1) TYPE c,
w_key_date_text(30) TYPE c,
w_total(10) TYPE p DECIMALS 2,
w_htddevice LIKE itcpp-tddevice.
DATA: E_PROFILE LIKE SOPRD.
DATA: t_t001 TYPE STANDARD TABLE OF y_t001,
t_custo TYPE STANDARD TABLE OF y_custo,
t_knkk TYPE STANDARD TABLE OF y_knkk,
t_cust TYPE STANDARD TABLE OF y_cust,
t_customer TYPE STANDARD TABLE OF y_customer,
t_report_display TYPE STANDARD TABLE OF y_report_display,
t_addr TYPE STANDARD TABLE OF y_addr,
t_custnam TYPE STANDARD TABLE OF y_custnam,
t_adrt TYPE STANDARD TABLE OF y_adrt,
t_adr6 TYPE STANDARD TABLE OF y_adr6,
t_kna1 TYPE STANDARD TABLE OF y_kna1,
t_knb1 TYPE STANDARD TABLE OF y_knb1,
t_clv TYPE STANDARD TABLE OF y_clv,
t_ccname TYPE STANDARD TABLE OF y_ccname.
DATA : number LIKE spell,
amount(1000) TYPE c.
For storing error log
DATA: BEGIN OF t_error OCCURS 0,
kunnr LIKE kna1-kunnr,
comm(30) TYPE c,
END OF t_error.
For storing customer's email address
DATA: BEGIN OF t_email OCCURS 0,
smtp_addr LIKE adr6-smtp_addr,
END OF t_email.
To be used in the function to send a layout via email
DATA: t_otfdata LIKE itcoo OCCURS 0 WITH HEADER LINE,
t_htline LIKE tline OCCURS 0 WITH HEADER LINE.
DATA DECLARATIONS FOR DESIGING SCRIPT
DATA : it_t001 TYPE STANDARD TABLE OF y_t001,
wa_t001 TYPE y_t001.
DATA : it_adrc TYPE STANDARD TABLE OF y_adrc,
wa_adrc type y_adrc.
DATA : it_adrc1 TYPE STANDARD TABLE OF y_adrc1,
wa_adrc1 TYPE y_adrc1.
DATA : it_knb1 TYPE STANDARD TABLE OF y_knb1,
wa_knb1 TYPE y_knb1.
DATA : it_kna1 TYPE STANDARD TABLE OF y_kna1,
wa_kna1 TYPE y_kna1.
DATA : it_knkk TYPE STANDARD TABLE OF y_knkk,
wa_knkk TYPE y_knkk.
DATA : it_knkk1 TYPE STANDARD TABLE OF y_knkk1,
wa_knkk1 TYPE y_knkk1.
DATA : it_t001s TYPE STANDARD TABLE OF y_t001s,
wa_t001s TYPE y_t001s.
*DATA STATEMENTS FOR EMAIL ADDRESSES
DATA : it_adrt TYPE TABLE OF y_adrt,
wa_adrt TYPE y_adrt,
wa_email LIKE t_email.
*DATA : it_adr6 TYPE TABLE OF y_adr6,
wa_adr6 TYPE y_adr6,
DATA : counter TYPE i,
counter1 TYPE i,
c5 LIKE spell.
SELECTION-SCREEN BEGIN OF BLOCK clcn WITH FRAME TITLE text-200.
SELECTION-SCREEN SKIP.
PARAMETERS: p_bukrs LIKE t001-bukrs OBLIGATORY, "COMPANY CODE
p_kkber LIKE t001-kkber OBLIGATORY. "CREDIT CONTROL AREA
SELECT-OPTIONS: s_kunnr FOR knb1-kunnr OBLIGATORY, "CUSTOMER NUMBER
s_datum FOR sy-datum OBLIGATORY DEFAULT sy-datum. "DATE OF CREDIT LIMIT UPDATE
SELECTION-SCREEN SKIP.
PARAMETERS : p_simul AS CHECKBOX DEFAULT 'X'. "RUN IN SIMULATION MODE
SELECTION-SCREEN SKIP.
PARAMETERS : p_lemail LIKE adr6-smtp_addr. " EMAIL
SELECTION-SCREEN END OF BLOCK clcn.
AT SELECTION-SCREEN.
PERFORM f0100_validate_bukrs. "* For Company Code.
PERFORM f0200_validate_kkber. "* For Credit Control Area.
PERFORM f0300_validate_kunnr. "* For Customer Number
PERFORM f0400_validate_datum. "* For Date of Credit Limit Update
PERFORM f0500_validate_simul. "* For simulation mode and e-mail address
*======================================================================
START-OF-SELECTION.
PERFORM f1000_get_customer. "** COLLECT INFO FOR REPORT DISPLAY
IF p_simul is initial AND NOT P_lemail IS INITIAL.
PERFORM F1000_CHECK_GATEWAY_CONNECTION.
ENDIF.
IF p_simul IS INITIAL AND NOT p_lemail IS INITIAL.
PERFORM f3000_process_data_script USING t_report_display.
ENDIF.
END-OF-SELECTION.
IF NOT p_simul IS INITIAL.
PERFORM f2000_display_customer USING t_report_display.
ENDIF.
FORM f0100_validate_bukrs.
DATA : w_bukrs TYPE bukrs.
VALIDATION OF P_BUKRS
SELECT SINGLE bukrs
FROM t001
INTO w_bukrs
WHERE bukrs EQ p_bukrs.
IF sy-subrc NE 0.
MESSAGE e999(zf) WITH 'Invalid Company Code' p_bukrs. "(E01).
*AUTHORIZATION CHECK
AUTHORITY-CHECK OBJECT 'F_BKPF_BUK'
ID 'BUKRS' FIELD p_bukrs
ID 'ACTVT' FIELD '03'.
IF sy-subrc NE 0.
MESSAGE e999(zf) WITH 'No Authorization for company code' p_bukrs."(e06).
ENDIF.
ENDIF.
ENDFORM. " F0100_VALIDATE_BUKRS
*Eject
*& Form F0200_VALIDATE_KKBER
*-> CREDIT CONTROL AREA AUTHORITY CHECK
FOR CREDIT CONTROL AREA.
FORM f0200_validate_kkber.
DATA : w_kkber LIKE t001-kkber.
SELECT SINGLE kkber
FROM t001
INTO w_kkber
WHERE bukrs EQ p_bukrs
AND kkber EQ p_kkber.
IF sy-subrc NE 0.
MESSAGE e999(zf) WITH
'Credit Control Area' p_kkber 'not defined for Company Code' p_bukrs."(e02).
MESSAGE e999 WITH text-e02 p_kkber .
ENDIF.
ENDFORM. "F0200_VALIDATE_KKBER
*& Form F0300_VALIDATE_KUNNR
*-> CUSTOMER NUMBER AUTHORITY CHECK
FORM f0300_validate_kunnr.
VALIDATION OF S_KUNNR
DATA : w_kunnr TYPE kunnr,
w_bukrs TYPE bukrs.
IF s_kunnr IS INITIAL .
MESSAGE e999 WITH 'Enter Customer Number'(e04).
SUBMIT (sy-cprog) VIA SELECTION-SCREEN.
ENDIF.
LOOP AT s_kunnr.
CLEAR : w_kunnr,
w_bukrs.
IF NOT s_kunnr-low IS INITIAL.
SELECT SINGLE kunnr bukrs
FROM knb1 INTO (w_kunnr ,w_bukrs)
WHERE kunnr EQ s_kunnr-low
AND bukrs EQ p_bukrs.
IF sy-subrc NE 0.
MESSAGE e999(zf) WITH 'Customer S_KUNNR-LOW not defined in company code' p_bukrs."(e03).
ENDIF.
ENDIF. "if not s_kunnr-low is initial.
IF NOT s_kunnr-high IS INITIAL.
CLEAR : w_kunnr,
w_bukrs.
SELECT SINGLE kunnr bukrs
FROM knb1 INTO (w_kunnr , w_bukrs)
WHERE kunnr EQ s_kunnr-high
AND bukrs EQ p_bukrs.
IF sy-subrc NE 0.
MESSAGE e999(zf) WITH 'Customer S_KUNNR-HIGH not defined in company code' p_bukrs."(e03).
ENDIF.
ENDIF. "if not s_kunnr-high is initial.
ENDLOOP. " loop at s_kunnr
ENDFORM. " F0200_VALIDATE_KUNNR
*& Form F0400_VALIDATE_DATUM
*-> DATE OF CREDIT LIMIT UPDATE
FORM f0400_validate_datum.
IF s_kunnr IS INITIAL AND s_datum IS INITIAL.
MESSAGE e999 WITH 'Enter either Date of CL update or Customer number.'(e04).
ENDIF.
ENDFORM. "F0400_VALIDATE_DATUM
*& Form F1000_GET_CUSTOMER
text
--> p1 text
<-- p2 text
FORM f1000_get_customer .
DATA : w_kunnr LIKE knkk-kunnr,
w_kkber LIKE knkk-kkber.
IF s_datum IS NOT INITIAL.
SELECT objectid
FROM cdhdr
INTO TABLE t_cust
WHERE objectclas IN ('KLIM','DTREV','NXTRV')
AND change_ind IN ('U','I')
AND udate IN s_datum.
WHERE ( objectclas EQ 'KLIM' OR objectclas EQ 'DTREV' OR objectclas EQ 'NXTRV')
AND ( change_ind EQ 'U' OR change_ind EQ 'I')
AND udate IN s_datum .
ENDIF.
IF sy-subrc NE 0.
MESSAGE s999 WITH 'There is no data for selected period'(e07).
ELSE.
MOVE t_cust TO t_customer.
ENDIF.
SORT t_customer BY kunnr.
IF NOT t_customer[] IS INITIAL.
SELECT kunnr
kkber
dtrev
nxtrv
klimk
dbwae
FROM knkk
INTO TABLE t_knkk
FOR ALL ENTRIES IN t_customer
WHERE kunnr = t_customer-kunnr
AND kkber = p_kkber.
ELSE.
MESSAGE e999 WITH text-e07.
ENDIF.
IF sy-subrc NE 0.
ENDIF.
SORT t_knkk BY kunnr kkber.
IF NOT t_knkk[] IS INITIAL.
SELECT kunnr
name1
FROM kna1
INTO TABLE t_custo
FOR ALL ENTRIES IN t_knkk
WHERE kunnr = t_knkk-kunnr.
ENDIF.
IF sy-subrc = 0.
ENDIF.
SORT t_custo BY kunnr kkber.
LOOP AT t_custo INTO w_custo.
CLEAR w_knkk.
READ TABLE t_knkk INTO w_knkk WITH KEY kunnr = w_custo-kunnr
BINARY SEARCH.
IF sy-subrc = 0.
w_report_display-kunnr = w_custo-kunnr.
w_report_display-name = w_custo-name.
w_report_display-dtrev = w_knkk-dtrev.
w_report_display-nxtrv = w_knkk-nxtrv.
w_report_display-klimk = w_knkk-klimk.
w_report_display-dbwae = w_knkk-dbwae.
APPEND w_report_display TO t_report_display .
ENDIF.
ENDLOOP.
ENDFORM. " F1000_GET_CUSTOMER
*& Form F2000_DISPLAY_CUSTOMER
text
-->P_T_REPORT_DISPLAY text
FORM f2000_display_customer USING p_t_report_display.
DATA: no TYPE n VALUE 1.
DATA: t_data TYPE STANDARD TABLE OF y_report_display.
t_data = p_t_report_display.
DATA : w_data LIKE LINE OF t_data .
ULINE (118).
WRITE:/ sy-vline,
8 'CREDIT LIMIT CHANGE NOTIFICATION REPORT ON',
sy-datum , 118 sy-vline.
ULINE (118).
WRITE:/ sy-vline,'NO'(008) ,
10 sy-vline, 11 'CUSTOMER NUMBER',
28 sy-vline, 29 'CUSTOMER NAME', 43 sy-vline,
44 'CREDIT LIMIT VALID', 63 sy-vline ,
64 'CREDIT LIMIT AMOUNT', 85 sy-vline, 86 'CURRENCY',
95 sy-vline , 96 'Notification Status',118 sy-vline.
ULINE (118).
WRITE:/ sy-vline,43 sy-vline, 44 'FROM', 53 sy-vline,
56 'TILL', 63 sy-vline, 118 sy-vline .
ULINE (118).
LOOP AT t_data INTO w_data.
WRITE:/ sy-vline, no,
10 sy-vline, 11 w_data-kunnr ,
28 sy-vline, 29 w_data-name, 43 sy-vline, 44 w_data-dtrev,
53 sy-vline, 56 w_data-nxtrv ,63 sy-vline ,64 w_data-klimk,
85 sy-vline, 86 w_data-dbwae,
95 sy-vline , 118 sy-vline.
no = no + 1.
ULINE (118).
ENDLOOP.
ENDFORM. " F2000_DISPLAY_CUSTOMER
*& Form F3000_PROCESS_DATA_SCRIPT
text
-->P_T_REPORT_DISPLAY text
FORM f3000_process_data_script USING p_t_report_display.
DATA: t_data TYPE STANDARD TABLE OF y_report_display.
t_data = p_t_report_display.
DATA : w_data LIKE LINE OF t_data .
DATA: temp_is_negative(1) TYPE c,
temp_text(20) TYPE c,
temp_sname LIKE t001s-sname,
temp_email LIKE adr6-smtp_addr.
DATA : number LIKE spell,
amount(255) TYPE c.
PERFORM f3100_initialize_settings.
LOOP AT t_data INTO w_data.
AT NEW kunnr.
CLEAR w_error_found.
IF p_simul IS INITIAL AND NOT p_lemail IS INITIAL.
PERFORM f3300_open_form.
data: wa_t001 like line of t001
DATA : begin of wa_t001,
adrnr like t001-adrnr,
end of wa_t001.
SELECT SINGLE
adrnr FROM t001 INTO wa_t001
WHERE bukrs = p_bukrs.
DATA: BEGIN OF wa_adrc,
addrnumber LIKE adrc-addrnumber,
name1 LIKE adrc-name1,
post_code1 LIKE adrc-post_code1,
city1 LIKE adrc-city1,
street LIKE adrc-street,
house_num1 LIKE adrc-house_num1,
tel_number LIKE adrc-tel_number,
nation LIKE adrc-nation ,
fax_number LIKE adrc-fax_number,
country LIKE adrc-country,
END OF wa_adrc.
SELECT SINGLE
addrnumber
name1
post_code1
city1
street
house_num1
tel_number
nation
fax_number
country
FROM adrc
INTO corresponding fields of wa_adrc
WHERE addrnumber EQ wa_t001-adrnr AND
nation EQ ' '.
PERFORM f3700_write_form.
DATA: wa_kna1 LIKE LINE OF t_kna1,
wa_adrcc LIKE LINE OF it_adrc.
SELECT SINGLE
kunnr
adrnr FROM kna1
INTO wa_kna1
WHERE kunnr = w_data-kunnr.
IF sy-subrc EQ 0.
SELECT SINGLE
addrnumber
name1
FROM adrc
INTO wa_adrcc
WHERE addrnumber = wa_kna1-adrnr
AND nation = ' '.
ENDIF.
PERFORM f3701_write_form.
DATA : wa_knkk LIKE LINE OF t_knkk.
DATA : counter TYPE i,
counter1 TYPE i.
IF sy-subrc EQ 0.
SELECT SINGLE KUNNR
DTREV
NXTRV
KLIMK FROM KNKK INTO WA_KNKK WHERE
KUNNR EQ W_DATA-KUNNR.
ENDIF.
CALL FUNCTION 'SPELL_AMOUNT'
EXPORTING
amount = w_knkk-klimk
CURRENCY = ' '
FILLER = ' '
language = sy-langu
IMPORTING
in_words = number.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
amount = number-word.
PERFORM f3702_write_form.
DATA: wa_knb1 LIKE LINE OF t_knb1.
IF sy-subrc EQ 0.
SELECT SINGLE
busab
FROM knb1
INTO wa_knb1
WHERE kunnr = w_data-kunnr
AND bukrs = p_bukrs.
ENDIF.
DATA : wa_t001s LIKE LINE OF it_t001s.
IF sy-subrc EQ 0.
SELECT SINGLE bukrs
busab
sname
FROM t001s
INTO wa_t001s
WHERE bukrs = wa_knb1-bukrs
AND busab = wa_knb1-busab.
ENDIF.
PERFORM f3703_write_form.
PERFORM f3704_write_form.
IF counter1 < counter.
PERFORM f3705_write_form.
ENDIF.
PERFORM f3706_close_form.
ENDIF.
ENDAT.
IF w_error_found EQ c_true.
ENDIF.
AT END OF kunnr.
PERFORM F3400_WRITE_FORM USING C_TOTAL C_MAIN_WINDOW.
PERFORM F3500_CLOSE_FORM.
IF p_simul IS INITIAL AND NOT p_lemail IS INITIAL. "Email setting
PERFORM f3200_get_email_addr USING w_data-kunnr.
PERFORM f3600_send_data_via_email USING w_data-kunnr.
ENDIF.
ENDAT.
ENDLOOP.
WRITE:/ ' E-Mail is sent to the customer'.
ENDFORM. " F3000_PROCESS_DATA_SCRIPT
*& Form F3100_INITIALIZE_SETTINGS
text
--> p1 text
<-- p2 text
FORM f3100_initialize_settings .
SELECT SINGLE spld
INTO itcpo-tddest
FROM usr01
WHERE bname EQ sy-uname.
IF sy-subrc NE 0.
itcpo-tddest = 'LOCAL'.
ENDIF.
w_htddevice = c_printer.
itcpo-tddest = ''.
itcpo-tdrdidev = ''.
itcpo-tdsenddate = sy-datum.
itcpo-tdsendtime = sy-uzeit.
itcpo-tdschedule = 'IMM'.
itcpo-tdimmed = ' '.
itcpo-tdnewid = c_true. "PRINT: New spool request
itcpo-tdlifetime = c_1. "PRINT: Spool retention period
itcpo-tdgetotf = c_true.
IF p_simul IS INITIAL AND NOT p_lemail IS INITIAL. "Email setting
itcpo-tdgetotf = c_true.
ENDIF.
ENDFORM. " F3100_INITIALIZE_SETTINGS
*& Form f0500_validate_simul
text
--> p1 text
<-- p2 text
FORM f0500_validate_simul .
IF p_simul IS INITIAL AND p_lemail IS INITIAL. "Email setting
MESSAGE e999(zf) WITH 'Enter Email address'. "(e05).
ENDIF.
ENDFORM. " f0500_validate_simul
*& Form F3600_SEND_DATA_VIA_EMAIL
text
-->P_W_DATA_KUNNR text
FORM f3600_send_data_via_email USING p_w_data_kunnr.
DATA: fle1(2) TYPE p,
fle2(2) TYPE p,
off1 TYPE p,
hltlines TYPE i,
temp_filesize TYPE i,
hfeld(500) TYPE c,
header(50) TYPE c,
htabix LIKE sy-tabix,
x_sent_to_all LIKE sonv-flag.
DATA: BEGIN OF x_objcont OCCURS 0.
INCLUDE STRUCTURE soli.
INCLUDE STRUCTURE SOLISTI1.
DATA: END OF x_objcont.
DATA: BEGIN OF x_object_hd_change.
INCLUDE STRUCTURE sood1.
DATA: END OF x_object_hd_change.
DATA: BEGIN OF x_receivers OCCURS 0.
INCLUDE STRUCTURE soos1.
INCLUDE STRUCTURE SOMLRECI1.
DATA: END OF x_receivers.
DATA: BEGIN OF x_objhead OCCURS 1.
INCLUDE STRUCTURE soli.
DATA: END OF x_objhead.
**Data: begin of objpack occurs 0.
include structure SOPCKLSTI1.
**Data: end of objpack.
**Data: begin of email_data occurs 0.
include structure SODOCCHGI1.
**Data: end of email_data.
Converts the layout set to PDF format
CALL FUNCTION 'CONVERT_OTF'
EXPORTING
format = c_pdf_format
IMPORTING
bin_filesize = temp_filesize
TABLES
otf = t_otfdata
lines = t_htline
EXCEPTIONS
err_max_linewidth = 1
err_format = 2
err_conv_not_possible = 3
OTHERS = 4.
IF sy-subrc NE 0.
w_error_found = c_true.
t_error-kunnr = p_w_data_kunnr.
t_error-comm = 'Error in conversion to PDF format.'(e08).
APPEND t_error.
CLEAR t_error.
EXIT.
ENDIF.
Convert the PDF file into an internal table which to be used in the
function that will send a PDF file to a email address
DESCRIBE TABLE t_htline LINES hltlines.
DESCRIBE FIELD T_HTLINE LENGTH FLE1 IN BYTE MODE.
DESCRIBE FIELD t_htline LENGTH fle1
IN CHARACTER MODE.
DESCRIBE FIELD X_OBJCONT LENGTH FLE2 IN BYTE MODE.
DESCRIBE FIELD x_objcont LENGTH fle2
IN CHARACTER MODE.
CLEAR x_objcont.
REFRESH x_objcont.
LOOP AT t_htline.
htabix = sy-tabix.
MOVE t_htline TO hfeld+off1.
IF htabix = hltlines.
fle1 = STRLEN( t_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.
LOOP AT t_email.
x_receivers-receiver = t_email-smtp_addr.
x_receivers-rec_type = c_u.
APPEND x_receivers.
ENDLOOP.
x_receivers-receiver = p_lemail.
x_receivers-rec_type = c_u.
APPEND x_receivers.
DESCRIBE TABLE x_objcont LINES sy-tfill.
READ TABLE x_objcont INDEX sy-tfill.
email_data-doc_size = ( sy-tfill - 1 ) * 255 + STRLEN( x_objcont ).
CLEAR objpack-transf_bin.
objpack-head_start = 1.
objpack-head_num = 0.
objpack-body_start = 1.
objpack-body_num = sy-tfill.
objpack-doc_type = 'RAW'.
APPEND objpack.
email_data-obj_descr = 'Notification'.
APPEND email_data.
IF x_receivers[] IS NOT INITIAL.
CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
EXPORTING
document_data = email_data
put_in_outbox = 'X'
commit_work = 'X' "used from rel. 6.10
TABLES
packing_list = objpack
object_header = email_fname
contents_bin = email_text
contents_txt = x_objcont
receivers = x_receivers.
endif.
CLEAR x_objhead.
REFRESH x_objhead.
CLEAR x_object_hd_change.
x_object_hd_change-objnam = 'EMAIL'(t04).
header = 'Procter & Gamble'(t05).
x_object_hd_change-objdes = header. "Title
x_object_hd_change-objla = c_english. "Language
x_object_hd_change-objsns = c_f.
x_object_hd_change-objlen = temp_filesize.
x_object_hd_change-file_ext = c_pdf_format.
Transfer the email address to an internal table which will be used
in the function that will send a PDF file to a email address
CLEAR x_receivers.
REFRESH x_receivers.
LOOP AT t_email.
x_receivers-sndex = c_true.
x_receivers-sndpri = c_1.
x_receivers-recesc = c_u.
x_receivers-recnam = c_recipient_name.
Populate the email address of the customer
x_receivers-recextnam = t_email-smtp_addr.
x_receivers-recesc = c_english.
x_receivers-sndart = c_int.
APPEND x_receivers.
ENDLOOP.
x_receivers-sndex = c_true.
x_receivers-sndpri = c_1.
x_receivers-recesc = c_u.
x_receivers-recnam = c_recipient_name.
Populate the Local mail address
x_receivers-recextnam = p_lemail.
x_receivers-recesc = c_english.
x_receivers-sndart = c_int.
APPEND x_receivers.
Calling a SAP function to send out email with attachment of PDF file
CALL FUNCTION 'SO_OBJECT_SEND'
EXPORTING
object_hd_change = x_object_hd_change
object_type = c_document_type
outbox_flag = c_true
IMPORTING
sent_to_all = x_sent_to_all
TABLES
objcont = x_objcont
objhead = x_objhead
receivers = x_receivers
EXCEPTIONS
active_user_not_exist = 1
communication_failure = 2
component_not_available = 3
folder_not_exist = 4
folder_no_authorization = 5
forwarder_not_exist = 6
note_not_exist = 7
object_not_exist = 8
object_not_sent = 9
object_no_authorization = 10
object_type_not_exist = 11
operation_no_authorization = 12
owner_not_exist = 13
parameter_error = 14
substitute_not_active = 15
substitute_not_defined = 16
system_failure = 17
too_much_receivers = 18
user_not_exist = 19
x_error = 20
OTHERS = 21.
IF sy-subrc NE 0.
w_error_found = c_true.
t_error-kunnr = p_w_data_kunnr.
t_error-comm = 'Error in sending email.'(e09).
APPEND t_error.
CLEAR t_error.
ELSEIF sy-subrc EQ 0.
COMMIT WORK.
*Transmit Mail
SUBMIT rsconn01 WITH mode = c_int
WITH output = c_space
AND RETURN.
ENDIF.
ENDFORM. " F3600_SEND_DATA_VIA_EMAIL
*& Form F3200_GET_EMAIL_ADDR
text
-->P_T_REPORT_DISPLAY text
FORM f3200_get_email_addr USING p_w_data_kunnr.
REFRESH t_customer.
REFRESH t_adrt.
REFRESH t_email.
DATA: t_data TYPE STANDARD TABLE OF y_report_display.
t_data = p_t_report_display.
DATA : w_data LIKE LINE OF t_data .Sending mail with attachment
This program will allowed you to send email with attachment.
First, specify the attachment file from your local hardisk and execute.
Next, specify the sender email address and click the send button.
report y_cr17_mail.
data method1 like sy-ucomm.
data g_user like soudnamei1.
data g_user_data like soudatai1.
data g_owner like soud-usrnam.
data g_receipients like soos1 occurs 0 with header line.
data g_document like sood4 .
data g_header like sood2.
data g_folmam like sofm2.
data g_objcnt like soli occurs 0 with header line.
data g_objhead like soli occurs 0 with header line.
data g_objpara like selc occurs 0 with header line.
data g_objparb like soop1 occurs 0 with header line.
data g_attachments like sood5 occurs 0 with header line.
data g_references like soxrl occurs 0 with header line.
data g_authority like sofa-usracc.
data g_ref_document like sood4.
data g_new_parent like soodk.
data: begin of g_files occurs 10 ,
text(4096) type c,
end of g_files.
data : fold_number(12) type c,
fold_yr(2) type c,
fold_type(3) type c.
parameters ws_file(4096) type c default 'c:\debugger.txt'.
Can me any file fromyour pc ....either xls or word or ppt etc ...
g_user-sapname = sy-uname.
call function 'SO_USER_READ_API1'
exporting
user = g_user
PREPARE_FOR_FOLDER_ACCESS = ' '
importing
user_data = g_user_data
EXCEPTIONS
USER_NOT_EXIST = 1
PARAMETER_ERROR = 2
X_ERROR = 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.
fold_type = g_user_data-outboxfol+0(3).
fold_yr = g_user_data-outboxfol+3(2).
fold_number = g_user_data-outboxfol+5(12).
clear g_files.
refresh : g_objcnt,
g_objhead,
g_objpara,
g_objparb,
g_receipients,
g_attachments,
g_references,
g_files.
method1 = 'SAVE'.
g_document-foltp = fold_type.
g_document-folyr = fold_yr.
g_document-folno = fold_number.
g_document-objtp = g_user_data-object_typ.
*g_document-OBJYR = '27'.
*g_document-OBJNO = '000000002365'.
*g_document-OBJNAM = 'MESSAGE'.
g_document-objdes = 'sap-img.com testing by program'.
g_document-folrg = 'O'.
*g_document-okcode = 'CHNG'.
g_document-objlen = '0'.
g_document-file_ext = 'TXT'.
g_header-objdes = 'sap-img.com testing by program'.
g_header-file_ext = 'TXT'.
call function 'SO_DOCUMENT_REPOSITORY_MANAGER'
exporting
method = method1
office_user = sy-uname
ref_document = g_ref_document
new_parent = g_new_parent
importing
authority = g_authority
tables
objcont = g_objcnt
objhead = g_objhead
objpara = g_objpara
objparb = g_objparb
recipients = g_receipients
attachments = g_attachments
references = g_references
files = g_files
changing
document = g_document
header_data = g_header
FOLMEM_DATA =
RECEIVE_DATA =
File from the pc to send...
method1 = 'ATTCREATEFROMPC'.
g_files-text = ws_file.
append g_files.
call function 'SO_DOCUMENT_REPOSITORY_MANAGER'
exporting
method = method1
office_user = g_owner
ref_document = g_ref_document
new_parent = g_new_parent
importing
authority = g_authority
tables
objcont = g_objcnt
objhead = g_objhead
objpara = g_objpara
objparb = g_objparb
recipients = g_receipients
attachments = g_attachments
references = g_references
files = g_files
changing
document = g_document
header_data = g_header
method1 = 'SEND'.
g_receipients-recnam = 'MK085'.
g_receipients-recesc = 'B'.
g_receipients-sndex = 'X'.
append g_receipients.
call function 'SO_DOCUMENT_REPOSITORY_MANAGER'
exporting
method = method1
office_user = g_owner
ref_document = g_ref_document
new_parent = g_new_parent
importing
authority = g_authority
tables
objcont = g_objcnt
objhead = g_objhead
objpara = g_objpara
objparb = g_objparb
recipients = g_receipients
attachments = g_attachments
references = g_references
files = g_files
changing
document = g_document
header_data = g_header.
*-- End of Program
also try this one for background scheduling the same
Sending mail with attachment report in Background
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. doesnt 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. doesnt 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,
srinivas
<b>*reward for useful answers*</b> -
Problem in sending mail with PDF attachment
Hi all,
Kindly check this code..
I neeed to send the smartform as a PDF attachment..
PDF generated form of smartform is generated successfully..
<b>but PDF going as attachment is showing errors in opening</b> .
Please help me to solve this issue as soon as possible
DESCRIBE TABLE objtxt LINES tab_lines.
READ TABLE objtxt INDEX tab_lines.
doc_chng-doc_size = ( tab_lines - 1 ) * 255 + STRLEN( objtxt ).
doc_chng-doc_size = tab_lines * 255.
Creation of the entry for the compressed document
CLEAR objpack-transf_bin.
objpack-head_start = 1.
objpack-head_num = 0.
objpack-body_start = 1.
objpack-body_num = tab_lines.
objpack-doc_type = 'RAW'.
APPEND objpack.
Creation of the document attachment
DESCRIBE TABLE objbin LINES tab_lines.
Creation of the entry for the compressed document
CLEAR objpack-transf_bin.
objpack-transf_bin = 'X'.
objpack-head_start = 1.
objpack-head_num = 0.
objpack-body_start = 1.
READ TABLE objbin INDEX tab_lines.
objpack-doc_size = tab_lines * 255 .
objpack-body_num = tab_lines.
objpack-doc_type = 'PDF'.
objpack-obj_name = 'SMART'.
objpack-obj_descr = 'test'.
APPEND objpack.
Completing the recipient list
target recipent
CLEAR reclist.
reclist-receiver = '[email protected]'.
reclist-express = 'X'.
reclist-rec_type = 'U'.
APPEND reclist.
Sending the document
CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
EXPORTING
document_data = doc_chng
put_in_outbox = 'X'
TABLES
packing_list = objpack
object_header = objhead
contents_bin = objbin
contents_txt = objtxt
receivers = 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 = 99.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
Regards,
ajithHello Ajith,
Use this Code.
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 = 'ZZZ_TEST1'
importing
fm_name = v_form_name
exceptions
no_form = 1
no_function_module = 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.
w_ctrlop-getotf = 'X'.
w_ctrlop-no_dialog = 'X'.
w_compop-tdnoprev = 'X'.
CALL FUNCTION v_form_name
EXPORTING
control_parameters = w_ctrlop
output_options = w_compop
user_settings = 'X'
IMPORTING
job_output_info = w_return
EXCEPTIONS
formatting_error = 1
internal_error = 2
send_error = 3
user_canceled = 4
OTHERS = 5.
IF sy-subrc <> 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.
Fehlerhandling
if sy-subrc <> 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
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.
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 = '[email protected]'.
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'
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 helped reward points
Vasanth -
Smartforms to pdf and send mail
PROGRAM :
*& Report ZDB_PDFMAIL
REPORT zdb_pdfmail.
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,
*i_record LIKE SOLIX OCCURS 0 WITH HEADER LINE,
i_objbin LIKE solisti1 OCCURS 0 WITH HEADER LINE,
Work Area declarations
w_objhead TYPE soli_tab,
w_ctrlop TYPE ssfctrlop,
w_compop TYPE ssfcompop,
w_return TYPE ssfcrescl,
w_doc_chng TYPE sodocchgi1,
w_data TYPE sodocchgi1,
w_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.
DATA doc LIKE docs OCCURS 0 WITH HEADER LINE.
DATA bin_fsize TYPE i.
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
formname = 'ZZZ_TEST2'
IMPORTING
fm_name = v_form_name
EXCEPTIONS
no_form = 1
no_function_module = 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.
w_ctrlop-getotf = 'X'.
w_ctrlop-no_dialog = 'X'.
w_compop-tdnoprev = 'X'.
CALL FUNCTION v_form_name
EXPORTING
control_parameters = w_ctrlop
output_options = w_compop
user_settings = 'X'
IMPORTING
job_output_info = w_return
EXCEPTIONS
formatting_error = 1
internal_error = 2
send_error = 3
user_canceled = 4
OTHERS = 5.
IF sy-subrc <> 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_2_PDF'
EXPORTING
USE_OTF_MC_CMD = 'X'
ARCHIVE_INDEX =
IMPORTING
BIN_FILESIZE =
TABLES
otf =
doctab_archive =
lines =
EXCEPTIONS
ERR_CONV_NOT_POSSIBLE = 1
ERR_OTF_MC_NOENDMARKER = 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.
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 <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
Convert PDF from 132 to 255.
LOOP AT i_tline.
Replacing space by ~
TRANSLATE i_tline USING ' ~'.
CONCATENATE w_buffer i_tline INTO w_buffer.
ENDLOOP.
Replacing ~ by space
TRANSLATE w_buffer USING '~ '.
DO.
i_record = w_buffer.
Appending 255 characters as a record
APPEND i_record.
SHIFT w_buffer LEFT BY 255 PLACES.
IF w_buffer IS INITIAL.
EXIT.
ENDIF.
ENDDO.
*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 <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
*ENDIF.
Convert PDF from 132 to 255.
*LOOP AT i_tline.
Replacing space by ~
TRANSLATE i_tline USING ' ~'.
CONCATENATE w_buffer i_tline INTO w_buffer.
*ENDLOOP.
Replacing ~ by space
*TRANSLATE w_buffer USING '~ '.
*DO.
i_record = w_buffer.
Appending 255 characters as a record
APPEND i_record.
SHIFT w_buffer LEFT BY 255 PLACES.
IF w_buffer IS INITIAL.
EXIT.
ENDIF.
*ENDDO.
REFRESH: i_reclist,
i_objtxt,
i_objbin,
i_objpack.
CLEAR w_objhead.
Object with PDF.
i_objbin[] = i_record[].
DESCRIBE TABLE i_objbin LINES v_lines_bin.
Object with main text of the mail.
i_objtxt = 'Find attached the output of the smart form.'.
APPEND i_objtxt.
i_objtxt = 'Regards,'.
APPEND i_objtxt.
i_objtxt = 'J.Jayanthi'.
APPEND i_objtxt.
DESCRIBE TABLE i_objtxt LINES v_lines_txt.
Document information.
w_doc_chng-obj_name = 'Smartform'.
w_doc_chng-expiry_dat = sy-datum + 10.
w_doc_chng-obj_descr = 'Smart form output'.
w_doc_chng-sensitivty = 'F'. "Functional object
w_doc_chng-doc_size = v_lines_txt * 255.
Pack to main body as RAW.
Obj. to be transported not in binary form
CLEAR i_objpack-transf_bin.
Start line of object header in transport packet
i_objpack-head_start = 1.
Number of lines of an object header in object packet
i_objpack-head_num = 0.
Start line of object contents in an object packet
i_objpack-body_start = 1.
Number of lines of the object contents in an object packet
i_objpack-body_num = v_lines_txt.
Code for document class
i_objpack-doc_type = 'RAW'.
APPEND i_objpack.
Packing as PDF.
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 'Smartform_output' '.pdf'
INTO i_objpack-obj_descr.
i_objpack-doc_size = v_lines_bin * 255.
APPEND i_objpack.
Document information.
CLEAR i_reclist.
e-mail receivers.
i_reclist-receiver = '[email protected]'.
i_reclist-express = 'X'.
i_reclist-rec_type = 'U'. "Internet address
APPEND i_reclist.
Sending mail.
CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
EXPORTING
document_data = w_doc_chng
put_in_outbox = 'X'
TABLES
packing_list = i_objpack
object_header = w_objhead
contents_hex = 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 <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ERROR:
An exception occurred that is explained in detail below.
The exception, which is assigned to class 'CX_SY_DYN_CALL_ILLEGAL_TYPE', was
not caught and
therefore caused a runtime error.
The reason for the exception is:
In the function "SO_NEW_DOCUMENT_ATT_SEND_API1", the STRUCTURE parameter
"CONTENTS_HEX" is typed in such a way
that only actual parameters are allowed, which are compatible in Unicode
with respect to the fragment view. However, the specified actual
parameter "I_OBJBIN" has an incompatible fragment view.
PLS. TELL ME HOW TO UPDATE . 3KS
WAITING FOR YOUR HELPI HAVE CHECK WHAT YOU SAID.
CONCATENATE f_repid0(9) f_uname0(3) INTO lc_rq2name.
SELECT * FROM tsp01 WHERE rq2name = lc_rq2name
ORDER BY rqcretime DESCENDING.
IN THE TABLE OF TSP01,HAVE NO MY RECORD.
MAYBE MY PRINT REQUEST DOES NOT PUT INTO THE TABLE .
WHY ? HOW TO SETTING ?
OTHER ABAPER USER THE SAME PROGRAM ,HE CAN RUN SUCCESS.
BUT SOMEONE NOT .
Regards -
Convertion of Smart form to pdf and sending mail to vendor for PO
Hello all,
I have modified a standard PO Smartform and running it through ME23N.
In this i have to convert it to a pdf file and then send it through mail to the vendor.
I have found out FMs'CONVERT_OTF'and
'SO_NEW_DOCUMENT_ATT_SEND_API1'
to convert it and send mail. But can u tell me how to go about using it.
As i am using a standard program do i have to copy this prog to zprog and then call the fm out there. I am not sure.
Thanks
SalilHi,
Here is the sample code.If you find this as useful,kindly reward points by clicking the star on the left of reply.
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
w_objhead TYPE soli_tab,
w_ctrlop TYPE ssfctrlop,
w_compop TYPE ssfcompop,
w_return TYPE ssfcrescl,
w_doc_chng typE sodocchgi1,
w_data TYPE sodocchgi1,
w_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 = 'ZZZ_TEST2'
importing
fm_name = v_form_name
exceptions
no_form = 1
no_function_module = 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.
w_ctrlop-getotf = 'X'.
w_ctrlop-no_dialog = 'X'.
w_compop-tdnoprev = 'X'.
CALL FUNCTION v_form_name
EXPORTING
control_parameters = w_ctrlop
output_options = w_compop
user_settings = 'X'
IMPORTING
job_output_info = w_return
EXCEPTIONS
formatting_error = 1
internal_error = 2
send_error = 3
user_canceled = 4
OTHERS = 5.
IF sy-subrc <> 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 <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
Convert PDF from 132 to 255.
LOOP AT i_tline.
Replacing space by ~
TRANSLATE i_tline USING ' ~'.
CONCATENATE w_buffer i_tline INTO w_buffer.
ENDLOOP.
Replacing ~ by space
TRANSLATE w_buffer USING '~ '.
DO.
i_record = w_buffer.
Appending 255 characters as a record
APPEND i_record.
SHIFT w_buffer LEFT BY 255 PLACES.
IF w_buffer IS INITIAL.
EXIT.
ENDIF.
ENDDO.
Refresh: i_reclist,
i_objtxt,
i_objbin,
i_objpack.
clear w_objhead.
Object with PDF.
i_objbin[] = i_record[].
DESCRIBE TABLE i_objbin LINES v_lines_bin.
Object with main text of the mail.
i_objtxt = 'Find attached the output of the smart form.'.
APPEND i_objtxt.
i_objtxt = 'Regards,'.
APPEND i_objtxt.
i_objtxt = 'J.Jayanthi'.
APPEND i_objtxt.
DESCRIBE TABLE i_objtxt LINES v_lines_txt.
Document information.
w_doc_chng-obj_name = 'Smartform'.
w_doc_chng-expiry_dat = sy-datum + 10.
w_doc_chng-obj_descr = 'Smart form output'.
w_doc_chng-sensitivty = 'F'. "Functional object
w_doc_chng-doc_size = v_lines_txt * 255.
Pack to main body as RAW.
Obj. to be transported not in binary form
CLEAR i_objpack-transf_bin.
Start line of object header in transport packet
i_objpack-head_start = 1.
Number of lines of an object header in object packet
i_objpack-head_num = 0.
Start line of object contents in an object packet
i_objpack-body_start = 1.
Number of lines of the object contents in an object packet
i_objpack-body_num = v_lines_txt.
Code for document class
i_objpack-doc_type = 'RAW'.
APPEND i_objpack.
Packing as PDF.
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 'Smartform_output' '.pdf'
INTO i_objpack-obj_descr.
i_objpack-doc_size = v_lines_bin * 255.
APPEND i_objpack.
Document information.
CLEAR i_reclist.
e-mail receivers.
i_reclist-receiver = '[email protected]'.
i_reclist-express = 'X'.
i_reclist-rec_type = 'U'. "Internet address
APPEND i_reclist.
Sending mail.
CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
EXPORTING
document_data = w_doc_chng
put_in_outbox = 'X'
TABLES
packing_list = i_objpack
object_header = w_objhead
contents_hex = 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 <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF. -
Convertion of Smart form to pdf and sending mail to vendor for Invoice
Hi All...
now I am getting the output form of Invoice by the T-code VF02
here Im using Zreport & Zform...
my requirment is to convert smartform output to PDF and send as an e-mail attachment on my Existing report
where I use the FM - CONVERT_OTF_2_PDF ..
here my code
REPORT yinvoice_is.
TABLES: vbrk,vbrp, vbak, vbap, vbkd .
DATA : it_vbap TYPE STANDARD TABLE OF vbap WITH HEADER LINE ,
it_vbrk LIKE STANDARD TABLE OF vbrk with header line,
it_vbkd TYPE STANDARD TABLE OF vbkd WITH HEADER LINE ,
it_vbrp TYPE STANDARD TABLE OF vbrp WITH HEADER LINE ,
it_vbrp1 TYPE STANDARD TABLE OF vbrp WITH HEADER LINE ,
it_vbfa TYPE STANDARD TABLE OF vbfa WITH HEADER LINE ,
it_adrc1 TYPE STANDARD TABLE OF adrc WITH HEADER LINE,
it_adrc2 TYPE STANDARD TABLE OF adrc WITH HEADER LINE.
DATA: sum TYPE vbrp-kzwi5.
DATA: v_vkbur TYPE vkbur,
v_adrnr1 TYPE adrnr,
v_adrnr2 TYPE adrnr,
v_vbelv TYPE vbelv,
v_delch TYPE vbeln,
v_bstkd TYPE bstkd,
v_kdmat TYPE kdmat,
v_kwert TYPE kwert.
DATA : fm_name TYPE rs38l_fnam.
PARAMETER p_inv_no LIKE vbrk-vbeln OBLIGATORY .
Selecting Data
SELECT VBELN
ERDAT
VKORG
KUNRG
STCEG
NETWR
MWSBK
KNUMV
KUNAG
REGIO
FROM vbrk
INTO CORRESPONDING FIELDS OF TABLE it_vbrk
WHERE vbeln = p_inv_no .
SELECT matnr
kzwi1
kzwi2
kzwi3
kzwi4
kzwi5
netwr
mwsbp
meins
fklmg
arktx
FROM vbrp
INTO CORRESPONDING FIELDS OF TABLE it_vbrp
WHERE vbeln = p_inv_no .
Selecting Sales Order No.
SELECT SINGLE vbelv
FROM vbfa
INTO v_vbelv
WHERE vbeln = p_inv_no
AND vbtyp_v = 'C'.
IF sy-subrc = 0.
Selecting Delivery Challan...
SELECT SINGLE vbeln
FROM vbfa
INTO v_delch
WHERE vbelv = v_vbelv
AND vbtyp_n = 'J'.
SELECT SINGLE bstkd
FROM vbkd
INTO v_bstkd
WHERE vbeln = v_vbelv .
SELECT matnr kdmat
FROM vbap
INTO CORRESPONDING FIELDS OF TABLE it_vbap
WHERE vbeln = v_vbelv.
ENDIF.
READ TABLE it_vbrk INDEX 1.
IF sy-subrc = 0.
SELECT SINGLE kwert
FROM konv
INTO v_kwert
WHERE knumv = iT_vbrk-knumv
AND kschl = 'HD00'.
ENDIF.
Selecting From Address
SELECT SINGLE vkbur
FROM vbak
INTO v_vkbur
WHERE vbeln = v_vbelv.
IF sy-subrc = 0.
SELECT SINGLE adrnr
FROM tvbur
INTO v_adrnr1
WHERE vkbur = v_vkbur.
IF sy-subrc = 0.
SELECT SINGLE *
FROM adrc
INTO CORRESPONDING FIELDS OF it_adrc1
WHERE addrnumber = v_adrnr1.
APPEND it_adrc1.
ENDIF.
ENDIF.
APPEND it_adrc.
Selecting TO Address
SELECT SINGLE adrnr
FROM vbpa
INTO v_adrnr2
WHERE vbeln = p_inv_no
AND parvw = 'RE'.
IF sy-subrc = 0.
SELECT SINGLE *
FROM adrc
INTO CORRESPONDING FIELDS OF it_adrc2
WHERE addrnumber = v_adrnr2.
APPEND it_adrc2.
ENDIF.
Calling Function Module
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
formname = 'YINVOICE_IS'
VARIANT = ' '
DIRECT_CALL = ' '
IMPORTING
fm_name = fm_name
EXCEPTIONS
NO_FORM = 1
NO_FUNCTION_MODULE = 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.
Calling Function Module
CALL FUNCTION fm_name
*'/1BCDWB/SF00000496'
EXPORTING
ARCHIVE_INDEX =
ARCHIVE_INDEX_TAB =
ARCHIVE_PARAMETERS =
CONTROL_PARAMETERS =
MAIL_APPL_OBJ =
MAIL_RECIPIENT =
MAIL_SENDER =
OUTPUT_OPTIONS =
USER_SETTINGS = 'X'
i_vbelv = v_vbelv
i_bstkd = v_bstkd
i_kdmat = v_kdmat
i_kwert = v_kwert
i_delch = v_delch
IMPORTING
DOCUMENT_OUTPUT_INFO =
JOB_OUTPUT_INFO =
JOB_OUTPUT_OPTIONS =
TABLES
it_vbrk = it_vbrk
it_vbrp = it_vbrp
it_vbap = it_vbap
it_adrc1 = it_adrc1
it_adrc2 = it_adrc2
EXCEPTIONS
FORMATTING_ERROR = 1
INTERNAL_ERROR = 2
SEND_ERROR = 3
USER_CANCELED = 4
OTHERS = 5
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. "ENTRYhi,
use this code..
DATA: i_otf TYPE itcoo OCCURS 0 WITH HEADER LINE,
i_tline TYPE TABLE OF tline 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,
Variables declarations
v_len_in LIKE sood-objlen, "#EC NEEDED
v_lines_txt TYPE i,
v_lines_bin TYPE i,
Work Area declarations
w_ctrlop TYPE ssfctrlop,
w_return TYPE ssfcrescl,
w_compop TYPE ssfcompop,
wa_objhead TYPE soli_tab,
wa_doc_chng TYPE sodocchgi1,
wa_buffer TYPE string. "To convert from 132 to 255
Put a IF ELSE condition whether u want form output or E-mail output..
if it is a E-mail.. then call a small Sub-routine within your program..
FORM f_email .
w_ctrlop-getotf = 'X'.
w_ctrlop-no_dialog = 'X'.
w_compop-tdnoprev = 'X'.
CALL FUNCTION fnam
EXPORTING
control_parameters = w_ctrlop
output_options = w_compop
nast = nast
v_tcode = v_tcode
IMPORTING
job_output_info = w_return
TABLES
it_vbdkr = it_tvbdkr[]
it_vbdpr = tvbdpr[]
it_zglentitycode = it_zglentitycode[]
it_vttk = it_vttk[]
it_kna1 = it_kna1[]
it_t005 = it_t005[]
it_adrc = it_adrc[]
it_ekpo = it_ekpo[]
it_ekko = it_ekko[]
it_vbrp = it_vbrp[]
it_mara = it_mara[]
it_vbrk = it_vbrk[]
it_likp = it_likp[]
it_vttp = it_vttp[]
it_t001 = it_t001[]
it_zlogdely = it_zlogdely[]
it_prod = it_prod[]
it_lineitems = it_lineitems[]
it_tvzbt = it_tvzbt[]
it_t173t = it_t173t[]
it_t005t = it_t005t[]
it_zplant = it_zplant[]
it_stxbitmaps = it_stxbitmaps[]
it_prod_desc = it_prod_desc[].
IF sy-subrc <> 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[].
*Converting the OFT format data to PDf format
CALL FUNCTION 'CONVERT_OTF'
EXPORTING
format = 'PDF'
max_linewidth = 132
IMPORTING
bin_filesize = v_len_in
TABLES
otf = i_otf
lines = i_tline.
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 = 'COMMERCIAL INVOICE'.
APPEND i_objtxt.
DESCRIBE TABLE i_objtxt LINES v_lines_txt.
READ TABLE i_objtxt INDEX v_lines_txt.
wa_doc_chng-obj_name = 'COMMERCIAL INVOICE'.
wa_doc_chng-expiry_dat = sy-datum + 10.
wa_doc_chng-obj_descr = 'COMMERCIAL INVOICE'.
wa_doc_chng-sensitivty = 'F'.
wa_doc_chng-doc_size = v_lines_txt * 255.
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.
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 = 'COMMERCIAL INVOICE'.
i_objpack-obj_descr = 'COMMERCIAL INVOICE'.
APPEND i_objpack.
IF it_adr6[] IS NOT INITIAL.
LOOP AT it_adr6 INTO wa_adr6.
CLEAR i_reclist.
i_reclist-receiver = wa_adr6-smtp_addr.
i_reclist-rec_type = 'U'.
i_reclist-com_type = 'INT'.
APPEND i_reclist.
ENDLOOP.
CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
EXPORTING
document_data = wa_doc_chng
put_in_outbox = 'X'
TABLES
packing_list = i_objpack
object_header = wa_objhead
contents_bin = i_objbin
contents_txt = i_objtxt
receivers = i_reclist.
ENDIF.
ENDFORM. " f_email
regards
vijay -
Can i make report to send mail .
hi
i want to send an automatic mail to respective person before two days of the issue date as a warning message or any thing. I want to make it through a SAP program is it possible? if yes then give me one example or suggest me .
please .
thanks in advanced.Try using the following code.
*& Report ZEMAIL1_G
REPORT ZEMAIL1_G.
DATA: form_name TYPE RS38L_FNAM.
DATA: wa_ctrlop TYPE ssfctrlop,
wa_outopt TYPE ssfcompop.
DATA: t_otfdata TYPE ssfcrescl,
t_pdf_tab LIKE tline OCCURS 0 WITH HEADER LINE.
DATA: t_otf TYPE itcoo OCCURS 0 WITH HEADER LINE.
DATA: w_filesize TYPE i.
DATA: w_bin_filesize TYPE i.
DATA: fname1 TYPE string.
**********internal tables for email details ******88
DATA:
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
w_objhead TYPE soli_tab,
w_doc_chng typE sodocchgi1,
w_data TYPE sodocchgi1,
w_buffer TYPE string,"To convert from 132 to 255
Variables declarations
v_len_out LIKE sood-objlen,
v_len_in LIKE sood-objlen,
v_len_outn TYPE i,
v_lines_txt TYPE i,
v_lines_bin TYPE i.
SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME.
PARAMETERS :p_name type RS38L_FNAM default 'zpdf_g', "form name
p_email type somlreci1-receiver. "email address
SELECTION-SCREEN: END OF BLOCK b1.
PARAMETER: p_date LIKE sy-datum.
PARAMETER: p_rea TYPE char255.
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
formname = p_name
IMPORTING
fm_name = form_name
EXCEPTIONS
no_form = 1
no_function_module = 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.
wa_ctrlop-getotf = 'X'.
wa_ctrlop-no_dialog = 'X'.
wa_outopt-tdnoprev = 'X'.
CALL FUNCTION form_name
EXPORTING
CONTROL_PARAMETERS = wa_ctrlop
OUTPUT_OPTIONS = wa_outopt
USER_SETTINGS = 'X'
MYDATE = p_date
REASON = p_rea
IMPORTING
JOB_OUTPUT_INFO = t_otfdata
EXCEPTIONS
FORMATTING_ERROR = 1
INTERNAL_ERROR = 2
SEND_ERROR = 3
USER_CANCELED = 4
OTHERS = 5
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
ARCHIVE_INDEX = ' '
IMPORTING
bin_filesize = v_len_in
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.
Convert PDF from 132 to 255.
LOOP AT t_pdf_tab.
Replacing space by ~
TRANSLATE t_pdf_tab USING ' ~'.
CONCATENATE w_buffer t_pdf_tab INTO w_buffer.
ENDLOOP.
Replacing ~ by space
TRANSLATE w_buffer USING '~ '.
DO.
i_record = w_buffer.
Appending 255 characters as a record
APPEND i_record.
SHIFT w_buffer LEFT BY 255 PLACES.
IF w_buffer IS INITIAL.
EXIT.
ENDIF.
ENDDO.
Refresh: i_reclist,
i_objtxt,
i_objbin,
i_objpack.
clear w_objhead.
Object with PDF.
i_objbin[] = i_record[].
DESCRIBE TABLE i_objbin LINES v_lines_bin.
Object with main text of the mail.
i_objtxt = 'Find attached the output of the smart form.'.
APPEND i_objtxt.
*i_objtxt = 'Regards,'.
*APPEND i_objtxt.
*i_objtxt = 'Geeta'.
*APPEND i_objtxt.
DESCRIBE TABLE i_objtxt LINES v_lines_txt.
read table i_objtxt index v_lines_txt.
Document information.
w_doc_chng-obj_name = 'Smartform'.
w_doc_chng-expiry_dat = sy-datum + 10.
w_doc_chng-obj_descr = 'Smart form output'.
w_doc_chng-sensitivty = 'F'. "Functional object
w_doc_chng-doc_size = v_lines_txt * 255.
Pack to main body as RAW.
Obj. to be transported not in binary form
CLEAR i_objpack-transf_bin.
Start line of object header in transport packet
i_objpack-head_start = 1.
Number of lines of an object header in object packet
i_objpack-head_num = 0.
Start line of object contents in an object packet
i_objpack-body_start = 1.
Number of lines of the object contents in an object packet
i_objpack-body_num = v_lines_txt.
Code for document class
i_objpack-doc_type = 'RAW'.
APPEND i_objpack.
Packing as PDF.
i_objpack-transf_bin = 'X'.
i_objpack-head_start = 1.
i_objpack-head_num = 0.
i_objpack-body_start = 1.
*CONCATENATE 'Smartform_output' '.pdf'
*INTO i_objpack-obj_descr.
*APPEND i_objpack.
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 = 'Smartform'.
i_objpack-obj_descr = 'test'.
append i_objpack.
Document information.
CLEAR i_reclist.
e-mail receivers.
i_reclist-receiver = p_email.
*i_reclist-express = 'X'.
i_reclist-rec_type = 'U'. "Internet address
APPEND i_reclist.
Sending mail.
CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
EXPORTING
document_data = w_doc_chng
put_in_outbox = 'X'
TABLES
packing_list = i_objpack
object_header = w_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.
CASE SY-SUBRC.
WHEN 0.
WRITE: / 'Result of the send process:'.
LOOP AT i_reclist.
WRITE: / i_reclist-RECEIVER(48), ':'.
IF i_reclist-RETRN_CODE = 0.
WRITE 'sent successfully'.
ELSE.
WRITE 'not sent'.
ENDIF.
ENDLOOP.
WHEN 1.
WRITE: / 'no authorization to send to the specified number of recipients!'.
WHEN 2.
WRITE: / 'document could not be sent to any of the recipients!'.
WHEN 4.
WRITE: / 'no authorization to send !'.
WHEN OTHERS.
WRITE: / 'error occurred during sending !'.
endcase. -
Sending mails from sap to outlook with pdf attachment
Hi All
I am using the function module 'SO_NEW_DOCUMENT_ATT_SEND_API1' to send
mail with the pdf attachment to a SMTP mail id(outlook). I have done all the configuration settings in SCOT transaction. But still i am not able to get the mail in my outlook mailbox. Following are the details of the steps i have followed.
step1.
Get the OTF data output from the SMARTFORMS function module.
step2,
convert the OTF output data to PDF format.
step3.
populate all the required table to pass data to the function
module 'SO_NEW_DOCUMENT_ATT_SEND_API1' -
packing_list
contents_bin
contents_txt
receivers
and call the function module.
After doing the above steps still i am not able to get the mail in my outlook mailbox. Please Help.
Thanks
Jitendra Kumar Tripathy.hi,
kindly chk the code i wrote for my program.
it will solve ur issue.
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 = 'ZZZ_TEST1'
importing
fm_name = v_form_name
exceptions
no_form = 1
no_function_module = 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.
w_ctrlop-getotf = 'X'.
w_ctrlop-no_dialog = 'X'.
w_compop-tdnoprev = 'X'.
CALL FUNCTION v_form_name
EXPORTING
control_parameters = w_ctrlop
output_options = w_compop
user_settings = 'X'
IMPORTING
job_output_info = w_return
EXCEPTIONS
formatting_error = 1
internal_error = 2
send_error = 3
user_canceled = 4
OTHERS = 5.
IF sy-subrc <> 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.
Fehlerhandling
if sy-subrc <> 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
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.
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 = '[email protected]'.
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'
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 helped rwrd points
anver -
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...... -
I don't want to show the e-mail address in the "from" line when I send out e-mails. Is there a way to hide that?
Thank you!No.
-
Passing value of multi line container element to send mail step?
Hi ,
I am using send mail step type to send mail . in this mail i want to send data of multi line container element but it is writing only one line item even though my container element is holding tow line items. so how to process all line items of multi container element in a mail. please suggest me......
do i need to use loop until step ?
Thanks,
RahulHi Chindanand ,
i tried with the same now but in the mail it is not showing me any value instead it si giving me <po_items > not found.
po_items is the name of my multiline container element and i am simply using these po_item in mail.
please tell me what to do......as its urgent.....
Thanks,
Rahul -
Break line in sending mail program
Hi All,
I am creating sending mail program, its working fine but for that i have problem in break line.
my code is below:
doc_chng-obj_descr = 'SAP test mail'.
Mail Contents
loop at itab..
CONCATENATE 'sap test mail UPDATED:' ''
INTO it_objtxt SEPARATED BY space.
APPEND it_objtxt.
CONCATENATE 'test1:' SPACE itab-KOKRS
INTO it_objtxt SEPARATED BY space.
APPEND it_objtxt.
CONCATENATE 'test2:' SPACE itab-KSTAR
INTO it_objtxt SEPARATED BY space.
APPEND it_objtxt.
if int = 16.
CONCATENATE 'test3:' space itab-objnr
INTO it_objtxt SEPARATED BY space.
APPEND it_objtxt.
endif.
endloop.
output is:
sap test mail
test1:5000
test2:0000600100
test3:371040
sap test mail
test1:5000
test2:0000600100
test3:362040
but i want blank line after 1 entry like below
sap test mail
test1:5000
test2:0000600100
test3:371040
sap test mail
test1:5000
test2:0000600100
test3:362040
so please guide me.... i used skip and new-line statement but its not working...
Thanks in advance
zeniAdd a blank line at the end of the loop.
loop at itab..
CONCATENATE 'sap test mail UPDATED:' ''
INTO it_objtxt SEPARATED BY space.
APPEND it_objtxt.
CONCATENATE 'test1:' SPACE itab-KOKRS
INTO it_objtxt SEPARATED BY space.
APPEND it_objtxt.
CONCATENATE 'test2:' SPACE itab-KSTAR
INTO it_objtxt SEPARATED BY space.
APPEND it_objtxt.
if int = 16.
CONCATENATE 'test3:' space itab-objnr
INTO it_objtxt SEPARATED BY space.
APPEND it_objtxt.
endif.
* Add a blank line
clear lt_objtxt.
append it_objtxt.
endloop.
Regards,
Rich Heilman -
TS3276 cannot receive or send mail, server off line "ssl off" how do I turn ssl on?
Cannot receive or send mail. Server off line "ssl off " . how do I turn on ssl?
Hello there, gillaf.
To turn adjust your SSL settings the following Knowledge Base article will be of assistance:
Mac OS X Mail: About Secure Email Communications (SSL)
http://support.apple.com/kb/TA25586
Setting up Mail for SSL
Important: These steps require Mac OS X 10.1.3 or later.
1. Open the Mail application.
2. Choose Preferences from the Mail application menu.
3. Click Accounts.
4. Select an account name, and click Edit.
5. Click the Account Options tab.
6. Click the Use SSL checkbox to enable this option.
Selecting the checkbox will auto-populate the default port numbers. If there is a non-default port number already present, it will not change. You can manually enter a number if your ISP gave you a different port number. Be sure you enter the correct port for your mail server here when selecting SSL, even if it auto-populates a default number.
Note: If SSL is accidentally set up when it should not be, or is configured using the incorrect port for your mail server, an alert box with a message similar to this may appear:
"Fetch Error: Couldn't connect to a POP host name mail.apple.com."
Thanks for reaching out to Apple Support Communities.
Cheers,
Pedro. -
Send mail through dynamic action, but the subject line and content is blank
Hi all,
I'm facing one problem on sending mail throught dynamic action.
Whenever a new employee is hired, the system will trigger a mail to the administrator.
The mail can successfully reach the email address. But the title and the content of the mail are missing. I can receive an email with a PDF attchment. But when I open this PDF file, it's blank inside.
In t-code "SO10", I created a new mail text with name of Z_MAIL, for my mail, insteading of using the SAP standard one.
When I using the SAP standard mail text, it works and I can see the content. But even I copy and paste the exact the content of the standard one to my own new mail text, it will not work.
And I have to use my own customized mail text. So, is there any one knows about this issue? Any more setting I should do? Or is there some tricks?Hi,
I feel that something will be misiing in the coding.Even i faced the same problem earlier.for me it was text file as an attachment ,file was receiving but no data...the problem was i forget to add one option in objpack-head.
R u using the FM - SO_NEW_DOCUMENT_ATT_SEND_API1??
If so pls C the below codes for text file as an attachment.
DATA: objpack LIKE sopcklsti1 OCCURS 2 WITH HEADER LINE.
DATA: objhead LIKE solisti1 OCCURS 1 WITH HEADER LINE.
DATA: objbin LIKE solisti1 OCCURS 10 WITH HEADER LINE.
DATA: objtxt LIKE solisti1 OCCURS 10 WITH HEADER LINE.
DATA: reclist LIKE somlreci1 OCCURS 5 WITH HEADER LINE.
DATA: doc_chng LIKE sodocchgi1.
DATA: tab_lines LIKE sy-tabix.
Creating the document to be sent
doc_chng-obj_name = 'MESSAGE'.
doc_chng-obj_descr = 'ZHRI_GARN_EPC_COMM'.
objtxt = 'Program ZHRI_GARN_EPC_COMM has been executed successfully'.
APPEND objtxt.
objtxt = 'Error records passed to BDC session XPHRGARN01'.
APPEND objtxt.
DESCRIBE TABLE objtxt LINES tab_lines.
READ TABLE objtxt INDEX tab_lines.
doc_chng-doc_size = ( tab_lines - 1 ) * 255 + STRLEN( objtxt ).
Creating the entry for the compressed document
CLEAR objpack-transf_bin.
objpack-head_start = 1.
objpack-head_num = 0.
objpack-body_start = 1.
objpack-body_num = tab_lines.
objpack-doc_type = 'RAW'.
APPEND objpack.
Entering names in the distribution list
LOOP AT se_tech.
reclist-receiver = se_tech-low.
reclist-rec_type = 'U'.
APPEND reclist.
ENDLOOP.
Sending the document
CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
EXPORTING
document_data = doc_chng
put_in_outbox = 'X'
commit_work = 'X'
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.
Hope this will help u.
Regards,
Manoj. -
I am using iplanet messaging 5.2. I want to send mail using command line. Anyone knows exact command line syntax.
Thanks
-Vasu#telnet 0 25
mail from: user1 #email source
rcpt to: [email protected] #email destination
data #begin email content
Subject: Hi, This is a test mail #optional subject
Hi, Please don't pay attention to this email, just a test
. #end email content
quit #Quit SMTP
#
Maybe you are looking for
-
My phone wont let me send a text
okay so i have been texting someone this weekend and i wanted to tell them goodnight right, so i sent the message and it said message not sent review and try again. i tried to sent it again and again and i tried about 20 times to resend it. where i h
-
I want to upgrade iOS from 5 to 6, but when I go to synch everything in preparation, it tells me I will lose all my stuff on the iPhone and iPad which is/are unique. How can I backup or do a "real synch" (both sides have same data at end of process
-
Retreiving attachments from PDF
As you know, attachments can be added to PDF forms. I would like to know how can I retrieve these attachments and use them in Workbench ? Thanks Aditya
-
Issues with Arabic in Mac OS X with Flash 10 / Flex Gumbo
I've been looking at converting an existing Flex 3 project to have an Arabic language version, so I have been looking at the TLF to help do that. Originally I intended to just use the components for using TLF in 3.2, but it looks like I may need to u
-
How to create and configure a historical database?
Hello everyone! I apologize if my question is duplicated, or outside the context of the forum and ask if it is that redirects me to the right page! I have a SQL Server Express 2008 R2 Database installed on a Microsoft Windows Server Standard 2008 R2