sap abap报表显示的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sap abap报表显示的问题相关的知识,希望对你有一定的参考价值。

一般的报表,都是把得到的数据存到一个内表里,再用ALV显示。
但是我希望点执行(F8)的时候,显示的是一个excel,换言之,就是在sap系统里有弹出一个excel文件,内表里的内容通过excel保存,这个怎么实现,谢谢各位大神

我正好刚刚整理了这个材料
给你贴过来吧 ,非常简单的,都是固定的格式,实在不会就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
参考技术A 推荐使用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模板;

SAP ABAP 编辑器不显示关键字是啥原因?

参考技术A 实用程序--设置---ABAP编辑器----基于源代码的编辑器

以上是关于sap abap报表显示的问题的主要内容,如果未能解决你的问题,请参考以下文章

sap alv显示问题

abap开发中,在屏幕上怎样显示alv

sap 怎么看abap程序逻辑取值

ABAP高手请进

abap语言的alv程序中,如何控制单元格的零显示空

SAP ABAP ALV报表练习 如图 将上两张图中的数据用ALV表示 要求如图 大神快来吧!!!写详细点有加分!