系列文章目录
前言
一、SMF表单介绍
1、概念:Smart Forms是在SAPScript的基础上产生的一种新的表单制作方式,完全兼容SAPScript,但Smart Forms更独立,并且使用起来更方便,可以在创建FORM的同时,生成该表单对应的功能块,从而为Form和ABAP程序提供参数接口。
更通俗的来讲,表单就是我们想打印出来的单子。
2、表单里包含的内容:页面Page、窗体Window、图形Graphic、地址Address、模板Template、表Table、是非判断Alternative、程序代码Program Lines、循环Loop、文本Text、命令Command、文件夹Folder
二、SMF表单开发步骤
1、创建FORM
2、创建STYLE样式
3、创建二维码
4、创建图片组件
5、文本的格式控制
6、程序调用SMARTFORMS
三、SMF表单开发实战
TCODE:SE11 在数据类型里既可以定义一个结构体,也可以定义一个表类型
1、创建结构体ZYT36_S_KQ_SF1_36130,存表头信息
TCODE:SE11
选择结构
填入各组件信息
然后点击激活
2、创建表类型ZYT36_T_KQ_SF1_36130,根据结构体创建表类型
TCODE:SE11
选择表类型
输入短文本,行项目填刚创建的结构体,点击激活
这里选“本地对象”或选择一个包然后保存
3、SMARTFORMS打开并创建一个表单 ZYT36_SF_KQ1_36130
TCODE:SMARTFORMS
输入要创建的表单的名字ZYT36_SF_KQ1_36130,点击创建
页格式:要打印出来的格式,DINA4就是A4;
样式:定义了一组格式
表格接口:和外界进行交互的渠道
4、添加表单的结构:一个结构体、一个表
在表格接口中的“导入”中定义一个参数IM_W_KQ(W代表work area)
在“表”中定义一个表,参数名为IT_KQ,类型分配为TYPE,关联类型为上面创建的表ZYT36_T_KQ_SF1_36130
然后点击激活,并保存
5、创建表单样式:根据用户提供的样本,把所有字体都创建出来
退回到smartforms初始界面,点击样式,输入样式名称,点击创建
填写描述信息
右键点击段落格式-》创建节点
样式根据用户需求来确定大致需要几类,需要哪些字体,之后做FORM的时候,就可以按样式选对应的段落格式P1、P2、P3…
根据需要的样式填写描述信息和对齐方式,这里我需要黑体18居中,并且对齐方式为CENTER定中心(居中)
在“字体”视图中,字体族选“CNHEI”,字体大小选“18”,字体样式选“粗体”
然后点击激活,保存
同样的,创建P2:黑体14居左,P3:黑体14居右,P4:黑体14居中
点击保存
6、修改表单里面使用到的标准样式
退出样式,选择表单,再点更改
点击表格属性,选择"输出选项",将样式栏改为自己创建的样式ZYT36_ST_KQ1_36130
然后点击“激活”
7、创建窗口(默认有一个窗口),定义窗口的位置和大小,需要注意单位
页和窗口包含了要显示的东西,一个PAGE有多个窗口,有表单中要显示的有几块内容就可以有几个窗口,但对于一个PAGE只有一个主窗口,主窗口决定是否要换页;
该实战要求中,把我们要显示的表单分为三块,则看作有三个窗口,主窗口中规定第一个窗口的位置和大小,如下:
8、创建一个模板,选择详细信息
MAIN主窗口右键-》创建-》模板,这个模板规定当前这个窗口里写的文本以什么样的形式存在,如下:
给模板命名T11,填写描述信息,选择样式ZYT36_ST_KQ1_36130
点击"模板",点击”详细信息“
9、定义每一行,每一行有几列,每一列宽度和高度
详细信息中规定有几行,每一行高度是多少,每一行又有几列;
填写每行信息,如下:
%C1,第1行,高度为12mm,宽度为180mm
%C2,第2到5行,每一行的高度为12mm,每一列的宽度为60mm
%C3,第6行,高度为12mm,宽度为180mm
然后点击”激活“
再点击“表绘制器”,就可以看到我们在详细信息里通过填数绘制出来的具体的表单宽高,如下:
10、在模板下,创建文本,定义文本的输出结构,第几行第几列
右键T11表头-》创建-》文本
进来后,填写“文本”和“描述”,例如:文本:T11(表示第一行第一列)
点击“输出选项”视图,填写要输出结构的行和列,表示输出的信息在第几行第几列
11、编辑文本,执行测试
再点“常规属性”视图,点击文本编辑器,如下:
进来后,点击转到-》修改编辑器
点击格式的搜索帮助,选择一个我们创建的格式,这里我们选P1黑体18居中
选择格式,输入行文本,然后点返回,返回后再点保存
点激活-》直接处理
再点执行
点执行
选打印预览
就可以看到如下表单
12、在模板里面,可以用表格绘制器修改边框
但不完整缺少我们想要的边框,可以返回去再加边框,一直返回到如下界面,点击小笔,再点击C1行选中(变黑),最后再点击“外部框架”
然后保存激活,一路执行到如下界面,可以看到我们添加的边框
若想调整这个框的位置,可以去SMARTFORMS-》样式-》段落格式-》P1-》间距中调整,再返回执行表单看效果
同样的,再创建其他需要的文本—咸鱼机构,文本、描述,输出选项-》输出机构,常规属性-》文本编辑器-》转到-》修改编辑器-》输入格式和行文本-》返回-》激活保存-》执行
同样的,若想为“咸鱼机构”添加边框,可以在模板中为该行该列添加模板
13、上传图片
TCODE:SE78
先下载或保存好要显示的图片【注意:图片必须为BMP格式,且图片的位深度为16或24位,可以用Windows自带画图软件改变图片的位深度】
点击“导入”-》选择图片路径并上传-》填写名称和描述-》选择彩色位图图像-》点击执行
上传图片后,回到SMARTFORMS,创建图形
填写描述信息,常规属性视图中:填写名称、选择对象和ID,选择彩色位图图像,输出选项视图中:填写输出结构:行和列
然后保存激活执行,就可以看到上传的图片
同理,创建其他文本,并在样式中修改文本显示样式
14、打印二维码
TCODE:SE73
创建系统条形码
回到SMARTFORMS表单,双击样式
填写描述信息以及二维码名称,激活保存
再在表头创建文本
&IM_W_KQ_ID&,< BC>代表要用BC这个字符格式来显示&IM_W_KQ_ID&这串数据,BC在样式里定义成在SE73里创建的二维码显示,&IM_W_KQ_ID&是学生的ID,因为之前我们已经在表格接口中定义了传入的参数IM_W_KQ_ID(把学生的信息传到了结构体里)
为二维码创建一个新的段落格式,首先双击样式
年龄:
执行,功能模块中有定义的传入参数和表,点击圆圈,给定学号、姓名、年龄
编辑完后,点击返回,这时候就可以看到已经保存了刚输入的学生信息
再执行,就可以看到表单中显示的年龄
15、再创建新窗口,显示表格,并维护新表格的边距、宽度、高度
16、新窗口右键创建表
%LTYPE1,每一行有几列,如下图,让表格每一行有3列
全局定义一个变量GW_KQ,处理每一行的数据,定义一个全局的structure,关联的类型是之前定义的结构体
右键表头-》创建-》表行
修改每一列的描述信息
再对每一列创建文本,
同样的,为该行加边框
在“主要区域“填充表格信息
为每个数据创建文本使其能填充信息
可以在TCODE :SU01中看缺省值,以此来填日期
选中第一行,点击复制行,就有了多条数据,然后再根据自己的需要一条条改变数据
最后再创建一个窗口,同上面创建第二个窗口方法一样
在窗口右键创建模板
点击下一页,可到第二页
完整的,补充了姓名、性别、出生日期,显示如下
总结
- 全局设置—定义表单接口
- 传入参数–准备工作:定义结构体
- 表–准备工作:SE11定义了一个表类型
- 页和窗口–定义表单样式
- 一个页有多个窗口,但是只有一个主窗口
- 定义普通窗口
- 定义窗口大小、位置(左边距、上边距)
- 给窗口增加模板:在详细信息中操作规定一共有几行,每一行有多少列
- 给模板添加文本:指定文本显示的行和列,指定文本的内容(字符串、根据传入参数进行显示&IM_W_KQ-NAME&)
- 上传图片 TCODE:SE78
- 定二维码 TCODE:SE73
- 定义窗口显示表
- 定义窗口大小
- 给窗口增加表:表–在详细信息里定义每一行有几列;数据–把接口中的表,loop赋值到一个全局变量中
- 表头–增加一个表行:选择行类型;给每一列增加文本元素
- 主要区域–增加一个表行:选择行类型;给每一列增加文本元素–&GW_KQ-DATE…&
- SMARTFORM中的系统变量
- SFSY-FORMPAGES
- SFSY-PAGE
- SFSY-DATE
- SFSY-TIME
- 测试-执行-执行FUNCTION-给接口赋值-打印预览