sap abap报表显示的问题

一般的报表,都是把得到的数据存到一个内表里,再用ALV显示。但是我希望点执行(F8)的时候,显示的是一个excel,换言之,就是在sap系统里有弹出一个excel文件,内... 一般的报表,都是把得到的数据存到一个内表里,再用ALV显示。
但是我希望点执行(F8)的时候,显示的是一个excel,换言之,就是在sap系统里有弹出一个excel文件,内表里的内容通过excel保存,这个怎么实现,谢谢各位大神
展开
 我来答
初级高手0
2012-05-17 · TA获得超过148个赞
知道答主
回答量:91
采纳率:0%
帮助的人:46.6万
展开全部
我正好刚刚整理了这个材料
给你贴过来吧 ,非常简单的,都是固定的格式,实在不会就copy也可以解决问题。 你自己要建一个excel模板上传。也可以直接放到程序的目录下。

" EXCEL 输出

DATA: w_temp_file(65), "Temp file path for excel template file.
w_formkey LIKE wwwdatatab VALUE 'MIZCOR19',
w_ftemplate LIKE rlgrap-filename VALUE 'C:\TEMP\ZTRAIN02.XLT'.

DATA: x_row(6) TYPE N VALUE '4',
v_range TYPE string.

* CALL FUNCTION 'DOWNLOAD_WEB_OBJECT'
* EXPORTING
* key = w_formkey
* destination = w_ftemplate
* CHANGING
* temp = w_temp_file.

CREATE OBJECT w_excel 'EXCEL.APPLICATION'.
IF sy-subrc <> 0.
WRITE: / 'Commands were not successfully executed:'(010), sy-subrc .
STOP.
ENDIF.
SET PROPERTY OF w_excel 'Visible' = 0.

CALL METHOD OF w_excel 'WORKBOOKS' = w_mapl.
CALL METHOD OF w_mapl 'Open' = w_map
EXPORTING
#1 = w_ftemplate.
CALL METHOD OF w_map 'WORKSHEETS' = w_sheet
EXPORTING
#1 = 'Sheet1'.
CALL METHOD OF w_sheet 'ACTIVATE'.

LOOP AT X_MARA.
x_row = x_row + 1.

CONCATENATE 'A' x_row INTO v_range.
PERFORM fill_range USING v_range X_MARA-MATNR.
CONCATENATE 'B' x_row INTO v_range.
PERFORM fill_range USING v_range X_MARA-MATKL.
CONCATENATE 'C' x_row INTO v_range.
PERFORM fill_range USING v_range X_MARA-WERKS.
CONCATENATE 'D' x_row INTO v_range.
PERFORM fill_range USING v_range X_MARA-MAKTX.
CONCATENATE 'E' x_row INTO v_range.
PERFORM fill_range USING v_range X_MARA-GEWEI.

CLEAR X_MARA.
ENDLOOP.

SET PROPERTY OF w_excel 'VISIBLE' = 1 no flush.

FREE w_mapl.
FREE OBJECT w_excel.

ENDFORM. "frmXLSDisplay

*&---------------------------------------------------------------------*
*& Form fill_range
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->VALUE(F_RANGE) text
* -->VALUE(F_VALUE) text
*----------------------------------------------------------------------*
FORM fill_range USING value(f_range) value(f_value).
CALL METHOD OF w_sheet 'Range' = w_rangeobj
EXPORTING
#1 = f_range.
SET PROPERTY OF w_rangeobj 'Value' = f_value.
ENDFORM. "fill_range
adam422
2012-05-16
知道答主
回答量:1
采纳率:0%
帮助的人:1626
展开全部
推荐使用DOI来实现,当然也可以用OLE。
一、OLE&DOI两者之间的关系:
OLE是SAP早期与微软Office集成的工具,而DOI是它的替代技术。在实际项目中使用到OLE&DOI的场合多是EXCEL表格的读入或是填制。有些需要自动画表格及填数据,有的只是要求在原有的模版上填制数据。根据不同的场合可以选用不同的技术。(有些公司用EXCEL的打印来替代FORM)
二、OLE&DOI关于EXCEL的处理:
OLE实际上是类EXCEL中VBA的一种写法。有一种简单的方法,就是你可以在EXCEL中把要实现的动作录制成宏,然后根据宏的代码把它改成OLE。OLE同时也支持直接调用EXCEL宏程序(没有禁宏的前提下)。
DOI完全用类实现。特点是,你不用再去记那些繁琐的VBA语言了,DOI都给你包装成类的方法了。同时作为一个控件,已经集成在了SAP的GUI中了,你就可以在SAP的屏幕中写Office的东西了,不用再跳出一个窗口来了,减少一些误操作。当然DOI也是支持调用EXCEL宏程序的,前提是宏没有被禁。
三、DOI优点:
推荐用DOI方式导数据到Excel,而不要用OLE,DOI是调用SAP自带的类来操作的,可控性更高,并且可以把Excel窗口当作一个片屏幕控件放入屏幕的容器中。
四、将模板上传至服务器的方式:
常用的方式有三种:
1. FTP
把文件传到FTP上,然后在运行的时候,直接输入文件服务器的路径,把模版在本地打开填制。
2.T-code:SMW0
用于Web的一种文件存储,也可以借用来存储模版。建立之前要维护相应的MIME types(先把文件的类型要注册),方可上传此类型的文件。
3.T-code:OAOR
是将模版传输到BDS(Business Document Service),然后程序运行时在本地打开进行填制。
五、使用T-code:OAOR上传excel模板:
1. 进入OAOR;

2. Class name: HRFPM_EXCEL_STANDARD,一般在sap系统内存在;(自己定义时,使用事物码T-CODE:SBDSV1)
Class type : OT;
Object key : 可以定义成与程序名称一致,避免弄错;
3. 点击 ,进入导航页面;

双击Table template,选择上传的excel模板;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式