SAP中SmartForms报表工具的使用,一个简单的报表Demo

本文介绍了一个简单的SAP SmartForms实例。先说明了所需环境,包括SAP客户端760版本和OFFICE 2013版本。接着详细阐述设计报表的步骤,如创建报表、设置格式、定义形参等,最后编写可执行程序调用报表,完成了一个简单示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

进度是缓慢的,续更SAP相关内容。

今天的内容是一个简单的SmartForms的实例。因为我之前是用环思ERP系统,所以接触到SAP的这个报表,第一感觉就是天呐,一个报表怎么可以这么麻烦,My God。不过随着更深入的了解,后续可能会改变这种看法,最终拜倒在SAP的石榴裙下。哈哈

废话不多说,好宝宝们,上课。

环境

SAP客户端是760版本的。

OFFICE版本是2013版本。(版本不对可能会导致SAP在集成富文本编辑器时出错,建议卸载掉WPS。电脑上有WPS时,可能也会影响SAP集成富文本编辑器。)

下面是一张流程图,可能比较粗糙,大家务必仔细看,因为我们首先要靠流程图将SmartForms这个概念装在脑袋瓜子里面,这样做报表的时候思路才比较清晰。

(一):设计报表

(1)在事务栏中输入SmartForms进入创建报表的界面。

切记报表的名称一定要以字母Z打头,要不然会报错的。

(2)然后点击创建。

这里最好改一下描述,这样时隔数月后,我们再来看的话,就可以给我们自己一个很好的提示。

(3)此时我们Ctrl+S进行保存的话,就会弹出一个这样的框,因为我们是测试环境的例子而已,所以直接点击本地对象进行保存就可以啦。(开发环境的话就要考虑实际情况喽)

(4)我们先点击表格属性,选择报表的格式和样式。

格式和样式都可以自己写,这里我们先用系统中自带的。格式我选的是A4纸的格式,样式就随便选一个啦。

(5)调好报表的格式后,我们来给他定义一个形参,用来接收数据。

如果你有仔细看流程图的话,就会发现其实就是流程图中的变量:ZLT_1

导入,导出和例外这三个栏目中的内容我们暂时不要动,它里面有自动生成的一些东西,因为我们现在做的只是一个简单的Demo,所以暂时不需要研究这里。

(6)到这一步,乱七八糟的东西就已经调好啦,下面就是主要的设计报表的环节。

我们要设计的报表就张这个样子,剖析一个这个报表,我们可以看到它是由四行组成,第一行是航班信息这个标题,它由一列组成,第二行是日期,它由两列组成,第三行是数据的标题,它由五列组成,第四行就是我们的数据,我们把数据统称为一行,它肯定也是由五列构成的喽。

下面,我们搞它。

(7)首先,我们右击MAIN主窗体,创建一个表

并设计表的数据。

(8)然后我们来为这个表设计四行。

(9)然后我们给表头创建表行。

通过上面我们的报表可以看出来,我们的报表是有三行表头的。所以我们依次为它增加三行表头。

(10)我们增加第二行的时候,一定要右击第一行进行添加,以此类推。因为逻辑上来看,第二行确实是在第一行后面的。

对了,插一句,在实用程序中可以打开字段列表。这样我们就可以清晰地看到SFLIGHT这张表中有哪些字段啦。

(11)到这里,我们就添加完所有行啦

 

(12)下面我们为每一行中的每一列增加文本。

要注意一下,日期是需要根据本地时间来的,不可以写死。其他表头信息都是直接写死就可以啦。

我们依然是给这个时间列创建文本。

然后点击常规属性一栏,输入获取时间的代码,给它动态获取时间。

其他几列的话,这样写死就可以。

(13)到这里我们的表头就已经做好啦。总共是三行表头。

(14)下面我们为主要区域(即我们的数据行部分)增加一行,并为行中的每一列都增加文本。方法同表头添加行的方法相同,不进行赘述。

只是赋值的时候要注意,因为这里的数据都是动态从外部传过来的,所以肯定不能写死,要和刚才的时间列一样进行动态赋值。赋值方法如下图。格式是:&形参名-字段名&

(15)到这里我们的报表就做完了。下面我们来运行一下看一下效果。

 

 

 

这样,就终于可以看到我们丑丑的Demo报表啦。这里是不会展示数据的,因为前面我们已经说过了,这报表只是一个模板,它定义了形参,我们要在可执行程序中调用报表并传入实参,这样才可以显示数据。

二:编写可执行程序来调用这个报表。

(1)首先,我们把刚才报表生成的模块名称记下来,因为在代码中要通过这个名字来调用报表。

(2)在事务栏中输入SE38进入写程序代码的界面。

 

因为是测试环境随便写个测试代码,所以直接选择本地对象就可以啦。(开发环境要看具体环境)

(3)上代码,下面我们一点一点慢慢分析。

*&---------------------------------------------------------------------*
*& Report Z_TEST3
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT Z_TEST3 NO STANDARD PAGE HEADING LINE-SIZE 150
                         MESSAGE-ID ZBSUN.

DATA:
  ZD_FLIGHT LIKE STANDARD TABLE OF SFLIGHT.

DATA:
  FM_NAME TYPE RS38L_FNAM.


START-OF-SELECTION.
  SELECT *
    INTO TABLE ZD_FLIGHT
    FROM SFLIGHT.

 IF SY-SUBRC <> 0.
    MESSAGE E001 WITH 'NO DATA'.
  ENDIF.
END-OF-SELECTION.

 fm_name = '/1BCDWB/SF00000061'.
  CALL FUNCTION fm_name

  TABLES
    ZLT_1 = ZD_FLIGHT
  EXCEPTIONS
    FORMATTING_ERROR = 1
    INTERNAL_ERROR = 2
    SEND_ERROR = 3
    USER_CANCELED = 4
    OTHERS = 5 .
IF SY-SUBRC <> 0.

ENDIF.

(4)剖析代码

(5)大工告成,下面我们执行以下这段代码。康康效果

(6)效果图就是这个样子啦。虽然它很丑,但是我们不要嫌弃它哦。

 

(三)到这里一个简单的SmartForms示例就算是完成啦。大家有什么没看懂的或者我说的有什么错误的地方,可以评论在下方哦。欢迎前来交流。

都看完啦,点个赞呗。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hero♞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值