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

Excel formating from ABAP

Former Member
0 Kudos
196

Hi,

I am using SO_DOCUMENT_SEND_API1 function module to send excel attachment in mail. Now i want to add few feature in the excel,

1) When user opens the excel the value in the cell should be displayed as 446000018680308 now it is showing as 4.46E+14

2) Quantity column should have field seperator with comma and decimals.

3)LOGO should appear in the top.

How is it possible to add all these feature.Some sample code will help.

Regards,

Karthik.k

2 REPLIES 2

Former Member
0 Kudos
82

Hi,

You need to use the OLE concept for this one, look at the below sample code, just copy and paste the program, then you will understand it

&----


*& Report ZETA_EXCEL_DOWNLOAD_CLIPBOARD *

*& *

&----


*& *

*& *

&----


report zeta_excel_download_clipboard .

include ole2incl.

.

data: w_cell1 type ole2_object,

w_cell2 type ole2_object.

*--- Ole data Declarations

data: h_excel type ole2_object, " Excel object

h_mapl type ole2_object, " list of workbooks

h_map type ole2_object, " workbook

h_zl type ole2_object, " cell

h_f type ole2_object, " font

gs_interior type ole2_object, " Pattern

worksheet type ole2_object,

h_cell type ole2_object,

h_cell1 type ole2_object,

range type ole2_object,

h_sheet2 type ole2_object,

h_sheet3 type ole2_object,

gs_font type ole2_object,

flg_stop(1) type c.

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

    • Internal table Declaration

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

data: begin of t_excel occurs 0,

vkorg(20) type c, "Sales Org

vbtyp(20) type c, "Document Category

auart(20) type c, "Document Type

ernam(20) type c, "Created By

vbeln(20) type c, "Document Number

posnr(20) type c, "Item Number

erdat(20) type c, "Created Date

vdatu(20) type c, "Header Requested Delivery Date

reqdat(20) type c, "Request date

condat(20) type c, "Confirm date

lifsk(20) type c, "Header Block

txt30(30) type c, "Order User Status Description

lifsp(20) type c, "Line Block

dispo(20) type c, "MRP Controller

dsnam(20) type c, "MRP Controller Description

vmsta(20) type c, "Material Sales Status

kunnr(20) type c, "Sold To

cname(35) type c, "Sold To Name

regio(20) type c, "State

cufd(10) type c, "CUD

bstnk(20) type c, "PO#

bsark(20) type c, "Ordering Method

matnr(20) type c, "Material

maktx(35) type c, "Material Description

t200(20) type c, "T200

vtext(20) type c, "T200 Description

matkl(20) type c, "Material Group

zzbomind(7) type c, "BOM Indicator

ostat(20) type c, "Order Status

cmgst(20) type c, "CRD

inco1(20) type c, "Incoterms

oqty(20) type c, "Order Quantity

pqty(20) type c, "Open Quantity

unit(20) type c, "UOM

onet(20) type c, "Order Value

pnet(20) type c, "Open Value

curr(20) type c, "Currency key

so_bezei like tvkbt-bezei,"Sales Office

sg_bezei like tvgrt-bezei,"Sales Group

bname(20) type c, "Ordering Party

contact(20) type c, "Contact Name

telf1(20) type c, "Contact telf1

reqqty(20) type c, "Item Request qty

reqval(20) type c, "Item Request value

conqty(20) type c, "Item Confirm qty

conval(20) type c, "Item Confirm value

zzrev(02) type c, "Revenue recognition acceptance

bezei(20) type c, "Revenue recognition text

vgbel(20) type c, "Reference Order for RETURNS

0008text(255) type c, "Internal Order Comment Text

end of t_excel.

data: t_excel_bckord like t_excel occurs 0 with header line,

t_excel_bcklog like t_excel occurs 0 with header line,

t_excel_blkord like t_excel occurs 0 with header line.

types: data1(1500) type c,

ty type table of data1.

data: it type ty with header line,

it_2 type ty with header line,

it_3 type ty with header line,

rec type sy-tfill,

deli(1) type c,

l_amt(18) type c.

data: begin of hex,

tab type x,

end of hex.

field-symbols: <fs> .

constants cns_09(2) type n value 09.

assign deli to <fs> type 'X'.

hex-tab = cns_09.

<fs> = hex-tab.

data gv_sheet_name(20) type c .

----


  • M A C R O Declaration

----


define ole_check_error.

if &1 ne 0.

message e001(zz) with &1.

exit.

endif.

end-of-definition.

t_excel_bckord-vkorg = 'ABC'.

t_excel_bckord-vbtyp = 'DEF'.

t_excel_bckord-auart = 'GHI'.

t_excel_bckord-ernam = 'JKL'.

t_excel_bckord-vbeln = 'MNO'.

t_excel_bckord-0008text = 'XYZ'.

append t_excel_bckord.

t_excel_bckord-vkorg = 'ABC1'.

t_excel_bckord-vbtyp = 'DEF1'.

t_excel_bckord-auart = 'GHI1'.

t_excel_bckord-ernam = 'JKL1'.

t_excel_bckord-vbeln = 'MNO1'.

t_excel_bckord-0008text = 'XYZ1'.

append t_excel_bckord.

t_excel_bckord-vkorg = 'ABC2'.

t_excel_bckord-vbtyp = 'DEF2'.

t_excel_bckord-auart = 'GHI2'.

t_excel_bckord-ernam = 'JKL2'.

t_excel_bckord-vbeln = 'MNO2'.

t_excel_bckord-0008text = 'XYZ2'.

append t_excel_bckord.

t_excel_bcklog-vkorg = 'ABC'.

t_excel_bcklog-vbtyp = 'DEF'.

t_excel_bcklog-auart = 'GHI'.

t_excel_bcklog-ernam = 'JKL'.

t_excel_bcklog-vbeln = 'MNO'.

t_excel_bcklog-0008text = 'XYZ'.

append t_excel_bcklog.

t_excel_bcklog-vkorg = 'ABC1'.

t_excel_bcklog-vbtyp = 'DEF1'.

t_excel_bcklog-auart = 'GHI1'.

t_excel_bcklog-ernam = 'JKL1'.

t_excel_bcklog-vbeln = 'MNO1'.

t_excel_bcklog-0008text = 'XYZ1'.

append t_excel_bcklog.

t_excel_bcklog-vkorg = 'ABC2'.

t_excel_bcklog-vbtyp = 'DEF2'.

t_excel_bcklog-auart = 'GHI2'.

t_excel_bcklog-ernam = 'JKL2'.

t_excel_bcklog-vbeln = 'MNO2'.

t_excel_bcklog-0008text = 'XYZ2'.

append t_excel_bcklog.

t_excel_bcklog-vkorg = 'ABC3'.

t_excel_bcklog-vbtyp = 'DEF3'..

t_excel_bcklog-auart = 'GHI3'.

t_excel_bcklog-ernam = 'JKL3'.

t_excel_bcklog-vbeln = 'MNO3'.

t_excel_bcklog-0008text = 'XYZ3'.

append t_excel_bcklog.

t_excel_blkord-vkorg = 'ABC'.

t_excel_blkord-vbtyp = 'DEF'.

t_excel_blkord-auart = 'GHI'.

t_excel_blkord-ernam = 'JKL'.

t_excel_blkord-vbeln = 'MNO'.

t_excel_blkord-0008text = 'XYZ'.

append t_excel_blkord.

t_excel_blkord-vkorg = 'ABC1'.

t_excel_blkord-vbtyp = 'DEF1'.

t_excel_blkord-auart = 'GHI1'.

t_excel_blkord-ernam = 'JKL1'.

t_excel_blkord-vbeln = 'MNO1'.

t_excel_blkord-0008text = 'XYZ1'.

append t_excel_blkord.

t_excel_blkord-vkorg = 'ABC2'.

t_excel_blkord-vbtyp = 'DEF2'.

t_excel_blkord-auart = 'GHI2'.

t_excel_blkord-ernam = 'JKL2'.

t_excel_blkord-vbeln = 'MNO2'.

t_excel_blkord-0008text = 'XYZ2'.

append t_excel_blkord.

t_excel_blkord-vkorg = 'ABC3'.

t_excel_blkord-vbtyp = 'DEF3'..

t_excel_blkord-auart = 'GHI3'.

t_excel_blkord-ernam = 'JKL3'.

t_excel_blkord-vbeln = 'MNO3'.

t_excel_blkord-0008text = 'XYZ3'.

append t_excel_blkord.

t_excel_blkord-vkorg = 'ABC4'.

t_excel_blkord-vbtyp = 'DEF4'..

t_excel_blkord-auart = 'GHI4'.

t_excel_blkord-ernam = 'JKL4'.

t_excel_blkord-vbeln = 'MNO4'.

t_excel_blkord-0008text = 'XYZ4'.

append t_excel_blkord.

loop at t_excel_bckord.

concatenate

t_excel_bckord-vkorg

t_excel_bckord-vbtyp

t_excel_bckord-auart

t_excel_bckord-ernam

t_excel_bckord-vbeln

t_excel_bckord-posnr

t_excel_bckord-erdat

t_excel_bckord-vdatu

t_excel_bckord-reqdat

t_excel_bckord-condat

t_excel_bckord-lifsk

t_excel_bckord-txt30

t_excel_bckord-lifsp

t_excel_bckord-dispo

t_excel_bckord-dsnam

t_excel_bckord-vmsta

t_excel_bckord-kunnr

t_excel_bckord-cname

t_excel_bckord-regio

t_excel_bckord-cufd

t_excel_bckord-bstnk

t_excel_bckord-bsark

t_excel_bckord-matnr

t_excel_bckord-maktx

t_excel_bckord-t200

t_excel_bckord-vtext

t_excel_bckord-matkl

t_excel_bckord-zzbomind

t_excel_bckord-ostat

t_excel_bckord-cmgst

t_excel_bckord-inco1

t_excel_bckord-oqty

t_excel_bckord-pqty

t_excel_bckord-unit

t_excel_bckord-onet

t_excel_bckord-pnet

t_excel_bckord-curr

t_excel_bckord-so_bezei

t_excel_bckord-sg_bezei

t_excel_bckord-bname

t_excel_bckord-contact

t_excel_bckord-telf1

t_excel_bckord-reqqty

t_excel_bckord-reqval

t_excel_bckord-conqty

t_excel_bckord-conval

t_excel_bckord-zzrev

t_excel_bckord-bezei

t_excel_bckord-vgbel

t_excel_bckord-0008text

into it

separated by deli.

append it.

clear it.

endloop.

loop at t_excel_bcklog.

concatenate

t_excel_bcklog-vkorg

t_excel_bcklog-vbtyp

t_excel_bcklog-auart

t_excel_bcklog-ernam

t_excel_bcklog-vbeln

t_excel_bcklog-posnr

t_excel_bcklog-erdat

t_excel_bcklog-vdatu

t_excel_bcklog-reqdat

t_excel_bcklog-condat

t_excel_bcklog-lifsk

t_excel_bcklog-txt30

t_excel_bcklog-lifsp

t_excel_bcklog-dispo

t_excel_bcklog-dsnam

t_excel_bcklog-vmsta

t_excel_bcklog-kunnr

t_excel_bcklog-cname

t_excel_bcklog-regio

t_excel_bcklog-cufd

t_excel_bcklog-bstnk

t_excel_bcklog-bsark

t_excel_bcklog-matnr

t_excel_bcklog-maktx

t_excel_bcklog-t200

t_excel_bcklog-vtext

t_excel_bcklog-matkl

t_excel_bcklog-zzbomind

t_excel_bcklog-ostat

t_excel_bcklog-cmgst

t_excel_bcklog-inco1

t_excel_bcklog-oqty

t_excel_bcklog-pqty

t_excel_bcklog-unit

t_excel_bcklog-onet

t_excel_bcklog-pnet

t_excel_bcklog-curr

t_excel_bcklog-so_bezei

t_excel_bcklog-sg_bezei

t_excel_bcklog-bname

t_excel_bcklog-contact

t_excel_bcklog-telf1

t_excel_bcklog-reqqty

t_excel_bcklog-reqval

t_excel_bcklog-conqty

t_excel_bcklog-conval

t_excel_bcklog-zzrev

t_excel_bcklog-bezei

t_excel_bcklog-vgbel

t_excel_bcklog-0008text

into it_2

separated by deli.

append it_2.

clear it_2.

endloop.

loop at t_excel_blkord.

concatenate

t_excel_blkord-vkorg

t_excel_blkord-vbtyp

t_excel_blkord-auart

t_excel_blkord-ernam

t_excel_blkord-vbeln

t_excel_blkord-posnr

t_excel_blkord-erdat

t_excel_blkord-vdatu

t_excel_blkord-reqdat

t_excel_blkord-condat

t_excel_blkord-lifsk

t_excel_blkord-txt30

t_excel_blkord-lifsp

t_excel_blkord-dispo

t_excel_blkord-dsnam

t_excel_blkord-vmsta

t_excel_blkord-kunnr

t_excel_blkord-cname

t_excel_blkord-regio

t_excel_blkord-cufd

t_excel_blkord-bstnk

t_excel_blkord-bsark

t_excel_blkord-matnr

t_excel_blkord-maktx

t_excel_blkord-t200

t_excel_blkord-vtext

t_excel_blkord-matkl

t_excel_blkord-zzbomind

t_excel_blkord-ostat

t_excel_blkord-cmgst

t_excel_blkord-inco1

t_excel_blkord-oqty

t_excel_blkord-pqty

t_excel_blkord-unit

t_excel_blkord-onet

t_excel_blkord-pnet

t_excel_blkord-curr

t_excel_blkord-so_bezei

t_excel_blkord-sg_bezei

t_excel_blkord-bname

t_excel_blkord-contact

t_excel_blkord-telf1

t_excel_blkord-reqqty

t_excel_blkord-reqval

t_excel_blkord-conqty

t_excel_blkord-conval

t_excel_blkord-zzrev

t_excel_blkord-bezei

t_excel_blkord-vgbel

t_excel_blkord-0008text

into it_3

separated by deli.

append it_3.

clear it_3.

endloop.

if h_excel-header = space or h_excel-handle = -1.

  • start Excel

create object h_excel 'EXCEL.APPLICATION'.

endif.

  • PERFORM err_hdl.

*--- get list of workbooks, initially empty

call method of h_excel 'Workbooks' = h_mapl.

  • PERFORM err_hdl.

set property of h_excel 'Visible' = 1.

  • add a new workbook

call method of h_mapl 'Add' = h_map.

  • PERFORM err_hdl.

*GV_SHEET_NAME = '1st SHEET'.

gv_sheet_name = 'Back Orders'.

get property of h_excel 'ACTIVESHEET' = worksheet.

set property of worksheet 'Name' = gv_sheet_name .

*--Formatting the area of additional data 1 and doing the BOLD

call method of h_excel 'Cells' = w_cell1

exporting

#1 = 1

#2 = 1.

call method of h_excel 'Cells' = w_cell2

exporting

#1 = 1

#2 = 50.

call method of h_excel 'Range' = h_cell

exporting

#1 = w_cell1

#2 = w_cell2.

*CALL METHOD OF gs_cells 'Select' .

get property of h_cell 'Font' = gs_font .

set property of gs_font 'Bold' = 1 .

data l_rc type i.

call method cl_gui_frontend_services=>clipboard_export

importing

data = it[]

changing

rc = l_rc

exceptions

cntl_error = 1

error_no_gui = 2

not_supported_by_gui = 3

others = 4.

call method of h_excel 'Cells' = w_cell1

exporting

#1 = 1

#2 = 1.

call method of h_excel 'Cells' = w_cell2

exporting

#1 = 1

#2 = 1.

  • PERFORM err_hdl.

call method of h_excel 'Range' = range

exporting

#1 = w_cell1

#2 = w_cell2.

call method of range 'Select'.

  • PERFORM err_hdl.

call method of worksheet 'Paste'.

  • PERFORM err_hdl.

  • CALL METHOD OF h_excel 'QUIT'.

*GV_SHEET_NAME = '2ND SHEET'.

gv_sheet_name = 'Backlog'.

get property of h_excel 'Sheets' = h_sheet2 .

call method of h_sheet2 'Add' = h_map.

set property of h_map 'Name' = gv_sheet_name .

get property of h_excel 'ACTIVESHEET' = worksheet.

*--Formatting the area of additional data 1 and doing the BOLD

call method of h_excel 'Cells' = w_cell1

exporting

#1 = 1

#2 = 1.

call method of h_excel 'Cells' = w_cell2

exporting

#1 = 1

#2 = 50.

call method of h_excel 'Range' = h_cell

exporting

#1 = w_cell1

#2 = w_cell2.

get property of h_cell 'Font' = gs_font .

set property of gs_font 'Bold' = 1 .

call method cl_gui_frontend_services=>clipboard_export

importing

data = it_2[]

changing

rc = l_rc

exceptions

cntl_error = 1

error_no_gui = 2

not_supported_by_gui = 3

others = 4.

call method of h_excel 'Cells' = w_cell1

exporting

#1 = 1

#2 = 1.

call method of h_excel 'Cells' = w_cell2

exporting

#1 = 1

#2 = 1.

  • PERFORM err_hdl.

call method of h_excel 'Range' = range

exporting

#1 = w_cell1

#2 = w_cell2.

call method of range 'Select'.

  • PERFORM err_hdl.

call method of worksheet 'Paste'.

*GV_SHEET_NAME = '3rd SHEET'.

gv_sheet_name = 'Blocked Orders'.

get property of h_excel 'Sheets' = h_sheet3 .

call method of h_sheet3 'Add' = h_map.

set property of h_map 'Name' = gv_sheet_name .

get property of h_excel 'ACTIVESHEET' = worksheet.

*--Formatting the area of additional data 1 and doing the BOLD

call method of h_excel 'Cells' = w_cell1

exporting

#1 = 1

#2 = 1.

call method of h_excel 'Cells' = w_cell2

exporting

#1 = 1

#2 = 50.

call method of h_excel 'Range' = h_cell

exporting

#1 = w_cell1

#2 = w_cell2.

get property of h_cell 'Font' = gs_font .

set property of gs_font 'Bold' = 1 .

call method cl_gui_frontend_services=>clipboard_export

importing

data = it_3[]

changing

rc = l_rc

exceptions

cntl_error = 1

error_no_gui = 2

not_supported_by_gui = 3

others = 4.

call method of h_excel 'Cells' = w_cell1

exporting

#1 = 1

#2 = 1.

call method of h_excel 'Cells' = w_cell2

exporting

#1 = 1

#2 = 1.

  • PERFORM err_hdl.

call method of h_excel 'Range' = range

exporting

#1 = w_cell1

#2 = w_cell2.

call method of range 'Select'.

  • PERFORM err_hdl.

call method of worksheet 'Paste'.

*--- disconnect from Excel

free object h_zl.

free object h_mapl.

free object h_map.

free object h_excel.

Regards

Sudheer

Former Member
0 Kudos
82

Hi,

I need to send as attachemnt via mail. How will i bring this same functionality with function module SO_DOCUMENT_SEND_API1 .

Regards,

Karthik.k