前段时间做了一个关于EXCEL模板数据上传SAP,并将内表数据下载到EXCEL中的程序。由于网络原因,当数据量比较大的时候,使用OLE的逐条写数据的话,速度会比较慢,所以先将内表的数据复制到剪贴板上,然后再直接粘贴到EXCEL中,速度会比较快。下面说一下方法:
1.首先制作好EXCEL数据模板,用SMW0上传到服务器上。
EXCEL模板样式如下:
2.数据定义:
DATA: BEGIN OF header,
doc_date LIKE bapi_incinv_create_header-doc_date, "凭证日期
pstng_date LIKE bapi_incinv_create_header-pstng_date, "过账日期
gross_amount LIKE invfo-wrbtr,"bapi_incinv_create_header-gross_amount, "凭证货币的总发票金额
item_amount LIKE invfo-wmwst,"bapi_incinv_create_gl_account-item_amount,"税额
gl_account LIKE bapi_incinv_create_gl_account-gl_account, "税金科目
payee_payer LIKE bapi_incinv_create_header-payee_payer, "发票方
item_text LIKE bapi_incinv_create_header-item_text, "行项目文本
header_txt LIKE bapi_incinv_create_header-header_txt, "抬头文本
ref_doc_no LIKE bapi_incinv_create_header-ref_doc_no, "发票号
pmnttrms LIKE bapi_incinv_create_header-pmnttrms, "付款条件
currency LIKE bapi_incinv_create_header-currency, "货币码
del_costs_taxc LIKE bapi_incinv_create_header-del_costs_taxc, "税码
db_cr_ind LIKE bapi_incinv_create_gl_account-db_cr_ind, "税金借贷标识
blance TYPE rm08m-differenz, "余额
name12 TYPE zname12, "供应商描述
END OF header.
DATA: BEGIN OF itemOCCURS 0,
ebeln LIKE ekpo-ebeln,
ebelp LIKE ekpo-ebelp,
matnr LIKE ekpo-matnr,
maktx LIKE makt-maktx,
meins LIKE ekpo-meins,
menge LIKE ekbe-menge,
wrbtr LIKE ekbe-wrbtr, "金额
mwskz LIKE ekpo-mwskz, "税务代码
selct(1) TYPE c,
END OF item.
TYPE-POOLS: ole2.
DATA: gv_excel_obj TYPE ole2_object,
gv_workbook_obj TYPE ole2_object,
gv_sheet_obj TYPE ole2_object.
DATA: gv_fname LIKE rlgrap-filename,
gv_filename TYPE string,
gv_icount TYPE i,
gv_irow TYPE i.
DATA: gv_separator TYPE c.
FIELD-SYMBOLS:<fs_item> LIKE LINE OF item,
<fs_fld> TYPE ANY.
DATA: gt_excel(4096) OCCURS 0 WITH HEADER LINE.
TYPE-POOLS truxs.
DATA xltab TYPE truxs_t_text_data.