本篇文本将以一个小实例来介绍如何创建SMARTFORM并在ABAP代码中调用SMARTFORM。
  首先还是先看下要实现的SMARTFORM报表的最终预览效果:
  
从图中我们可以看出这张报表包含一个表头TITLE,一张LOGO,日期页码及一张TABLE。
所以,先创建一个STYLE命名为ZS_FLIGHT。创建完后进入页面在左边的树形菜单找到“PARAGRAPH FORMATS”并右击选择“CREATE NODE”,输入节点名称“PT”,然后进行相关设置:

接着在“CHARACTER FORMAT”处右键,选择"CREATE NODE"创建一个节点“CT”,设置字体样式,

相关的设定就做的差不多了。你也可以多定义几种风格样式。这都是没有问题的。最后点击火柴棒激活样式。

  由于本报表程序是由外部程序将内表数据导入,再由FORM逻辑来生成报表。所以先创建一个结构(STRUCT:ZSFLIGHTIN)结构如下表格所示,

Component Component Type Data Type Length DECIMAL PLACES SHORT TEXT REFERENCE TABLE REFERENCE FIELD
CARRID S_CARR_ID CHAR 3 0 航线承运人ID    
CARRNAME S_CARRNAME CHAR 20 0 航班名称    
CARRCODE S_CURRCODE CUKY 5 0 航班的本地货币    
URL S_CARRURL CHAR 255 0      
PRICE S_PRICE CURR 15 2 航空运费 SFLIGHT CURRENCY
PLANETYPE S_PLANETYE CHAR   0 飞机类型    
SEATSMAX SEATSMAX INT4 10 0 最大容量    

       由于PRICE是CURR类型的,所以在创建STRUCT的时候要对其参考表及参考字段进行设置,具体找法如下:
  1.SE11打开SFLIGHT这个数据表
  2.找到PRICE字段,如下图:
  

  3.双击PRICE字段在弹出的窗口中可以找到其引用的表及字段并将其信息写入相应的引用栏内如下:
  

  最后,记得激活你创建的结构,这很重要。

    此时我们返回SMARTFORM创建一个名有“ZS_SFLIGHT”的报表程序,如下图,做相关设置。
  

由于报表数据是从ABAP内表中导入的,所以在"FORM INTERFACE"添加表类型参数引用上面创建的STRUCT,如下。

接着在左边树形菜单“PAGE”处右击,创建一个"WINDOW",如下所示:

并将其命名为“HEADER”,如下所示:

可以打开表格绘制器对窗体进行拖拉到合适的位置,就像.NET WINFORM拖拉控件那样简单。

接着在"PAGE"上右键,在联级菜单中选择CREATE GRAPHIC命令,新增一个图标对象,并在右边属性窗口是将其命名为LOGO及设置图片信息。打开图形编辑器将名为"LOGO"的图片拖动到右上角。

这样就做完了LOGO的设置了,接着在HEADER处右键选择CREATE-->TEMPLATE通过使用SMARTFORM提供的模板工具来设置表格。并将其命名为“HEADER_TEMPLATE”。


TEMPLATE的主要属性如下:
1.WIDTH(宽度):模板宽度,该宽度等于各字段宽度和,必须小于或等于WINDOW的宽度。
2.HORIZONTAL ALIGNMENT(水平对方):水平对齐方式,可设置偏移位置大小。
3.VERTIAL ALIGMENT(垂直对方):设置垂直位置对齐方式。
4.TABLE PAINTER(表绘制工具):通过图形界面绘制表格(在绘图界面可以用等也可以右键操作,右键可操作性强些)。
表格部分即为模板具体字段设置
1.NAME(名称):设置模板格式名,一个模板可以有多个格式,分布在对应表格的不同行。
2.FROM/TO(从/至):设置某模板格式具体行数,即输出表格行数。
3.REFERENCE(参考):参考一个模板格式名称建立新的模板格式。
4.HEIGHT(高度):某模板高度,即表格行高度。
5.1.2...:具体字段名及其宽度,一个模板可以有多栏,单击向“右箭头”图标可按需求增加字段,名字段宽度和必须等于模板宽度。
6.UNIT/UNIT OF MEASURE(单位):用于设置高度及宽度的单位。