Smartform是 SAP用来打印单据的一种可视化技术,可以在程序中调用,Smartform中除了可以设计格式之外还可以添加代码。
Smart forms 是 SAP Script form的基础上产生的新的表单制作工具,但是smart forms 使用更加方便,会直接生成功能块( function module),ABAP程序中调用更加方便。
注意:中文环境下创建的 form 一般只能在中文环境下打开,英文环境下的节点可能打不开。
事务:smartforms。
组成:form通常是由 页面( pages ),窗口( windows ),地址栏( Address),图形( graphics,logo等 ),数据(data),文本内容等( text )
文本模块 ( Text Module )
一段固定的文本信息,表头、或者附加条款说明,可以在form中直接引用。
Smartform Style:设置字体、段落、抬头。(包括定义条形码)
1、 字体 Charactor Formats
设置字体大小、字体族、字体样式( 粗体、斜体、下划线、颜色 )、输出位置、条形码
style中的长度单位:
TW ( twip ) 、PT( point)磅、IN( inch )、MM( millimeter )、CM( centimeter )、LN( line )、CH( character)。
转换关系: 1IN = 2.54 cm = 25.4mm = 72 PT = 1440TW
sap 的字体不是从当前系统获取字体库,除了默认字体,其他的需要在SAP中额外安装,然后通过SE73实现对字段属性的基本维护。
注:条形码的创建可以参考:条形码管理 SE73 Bar code开发_SAP小白kenny的博客-CSDN博客
2、段落格式 paragraph formats
设置段落格式:左对齐、右对齐、居中对齐,缩进、行间距、字体格式等、
注意:可以通过改变行间距控制 smart forms 的table控件的行高。
3、抬头数据 Header Data
设置style的默认类型。
Form 表格:
由 页面( pages ),窗口( windows ),地址栏( Address),图形( graphics,logo等 ),数据(data),文本内容等( text )。
全局设定 global settings:
表格属性 forms attributes :
form 纸张大小、使用的Smart Style
注:如果需要自定义纸张类型,可以参考:SAP 定义打印机纸张类型_SAP小白kenny的博客-CSDN博客_sap打印机纸张设置
如果系统自带纸张类型不满足需要,还可以自定义纸张类型。
表格接口 forms interface :
Smart forms 生成的function module的参数。
全局定义 global definitions
如果需要在smart forms内部添加逻辑,则需要在这里定义全局变量,如果有数字、金额栏位,还需要在这里定义。
核心部分在页和窗口:
节点元素:
form 中元素的输出顺序在page的先后顺序决定,系统会自动创建一个初始页。节点类型决定节点的处理过程:打印节点内容( 文本、图片、地址 ),执行节点的语句,另外所有节点的可以增加条件属性,当满足条件子节点才会处理。
Page 节点:
每个form至少有一个page,当page的内容超过一页,会自动输出到page节点指定的next 所指定的 next page,一般下一页都是自己,除非要有单独的一页封面和封底。
下一页除了可以通过next page来设置,还可以通过 command 命令控件指定。
窗口元素:
页面中包含主窗口 main windows 和 子窗口 secondary windows,主窗口可以连续打印,既可以分页显示,每个页面( page )只可以有一个主窗口, 但可以有多个子窗口。分页情况下子窗口每页都会显示,相当于页眉页脚。
窗口中模版的宽高度不能超过窗口的宽高度,同样表的宽高度也不能超过,否则显示不出。
文本节点:
文本节点一般是在已经定义的窗口中添加各种类型的文本元素,同样地址类型的文本元素可以直接通过Address节点添加,
smart forms包含以下文本类型:
文本元素:form中直接创建的编辑文本,
文本模块:独立于smart forms,可直接添加的文本,
包含文本:可直接插入的script 标准文本,可通过SE75,
动态文本:可绑定全局变量的文本
主窗口 main windows:可在多页连续输出。
子窗口 secondary windows:文本确定在制定页。
表格节点 table :用于显示表格的内容。
模板节点 template :把文本定义在静态表格的单元格中,
标题 header 和 脚注 footer:用于显示表格的总计数据。
事件 event 用于显示表格的小计数据。
table和template等节点可以控制边框,边框的默认宽度是15TW,但是实际工作建议20TW,用来适应针式、激光、喷墨打应机。15TW在某些时候可能打不出来。
table和template的区别:
1、table是动态表格,template是静态表格,template + loop 可以达到动态格式
2、template可控制行高,table不能直接控制行高,需要在smart style的段落中设置行间距,同时将无换页属性打上
3、template是固定长度,超过会截断,table会自动换行。注:table中如果自动换行行数超过一定程度会报错。
TABLE节点的循环问题:
table节点分为表头 header,主要区域 main area,脚标 footer,其中循环只是存在于主要区域,所以表头、脚标是每页会执行一次。
图片节点 graphic :
图片节点经常会用来展现一些Logo,但是必须在SE78中预先上传,可以参考:SE78、SMW0 上传图片_SAP小白kenny的博客-CSDN博客_se78上传图片
地址节点 Address:没用到过。