ABAP实战Smart Forms设计

Smart Forms是ABAP设计单据打印的工具,设计过程由两部分组成:

(1)在Smart Forms设计单据的样式、输入输出数据接口;

(2)编程调用设计单据、输出数据,实现打印输出。

本博文先以一个简单的例子,将Form与程序联调,快速了解整个设计过程,再详细介绍Smart forms相关设计及较复杂的例子。

1、一个简单的例子

本例完成有图标(公司LOGO)、表头(公司名称)、文字说明(表身)、含当前时间的表尾的单据。打印预览界面如图

1.1、Form的制作

输入TCODE:SMARTFORMS,输入要建立的Form名称后单击“创建”按钮,如图

输入描述,单击“表格绘制器(Form Painter)”按钮,如图

右屏显示设计图形界面,如图

左屏显示Form所有对象树,当双击对象时,中间屏幕显示对象的属性,右屏显示Form图形设计界面。系统默认建立一个页面,一个主窗口,一个Form可以有多个页面,一个页面可以有多个窗口,但主窗口只能有一个,右屏显示该页及MAIN主窗口。

1.1.1、加入公司的LOGO

选中主窗口,单击右键菜单中的“Create”-->“Graphics”菜单,如图

右屏显示一个图片图标,双击它,中屏显示属性,单击选择图片按钮,如图

选择包含彩色选项,如图

选择图片,如图

选择图片后,右屏图形对象显示出选择图片,调整好图片的位置,如图

1.1.2、加入公司名称

选择页面,单击右键菜单中的“Create”-->“Window”菜单,如图

将新建的WINDOWS调整到合适的位置,请注意,该窗口的对象是黄色的,表示不是主窗口,选中该窗口,单击右键菜单中的“Create”-->“Text”菜单添加文本,如图

在生成的文本属性输入公司名称,如图

1.1.3、加入主表内容

和建立表头一样,在主窗口建立一个Text对象,并输入相关内容,如图

1.1.4、加入表尾

添加新的窗口和文本,再添加一个系统日期文本,单击上图中的工具条的字段列表按钮,屏幕左下角会显示系统字段,在右下屏字段中,选中System fields的“DATE”节点,并把它拖到文本“当前时间:”后面,完成后保存,如图

1.1.5、生成和预览

保存后,单击主菜单中的“Form”-->“Check”菜单,检查Form是否正确。然后单击工具栏上的激活按钮激活Form,再单击工具栏上的测试按钮,输出如图

“/1BCDWB/SF00000125”是系统生成程序。单击测试按钮,输出如图

单击执行按钮,输入或选择打印机,单击“Print preview”按钮预览,如图

预览界面如图

2、设计程序调用Form

程序代码如下:

REPORT  Z_SMARTFORMSTEST_20160701001.
DATA: fm_name TYPE rs38l_fnam.
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
  EXPORTING
    formname = 'ZTEST20160701001'
    variant = ''
    direct_call = ''
  IMPORTING
    fm_name = fm_name
  EXCEPTIONS
    no_form = 1
    no_function_module = 2
    OTHERS = 3.
IF sy-subrc <> 0.
ENDIF.
CALL FUNCTION fm_name
  EXCEPTIONS
    formatting_error = 1
    internal_error = 2
    send_error = 3
    user_canceled = 4
    OTHERS = 5.
IF sy-subrc <> 0.
ENDIF.

3、Smart Forms相关技术

3.1、Style样式制作

Style定义文字类型、大小样式等属性,可在Text对象内使用不同的样式。

输入TCODE:SmartForms,选择“Style”选项,输入Style名称,单击创建按钮,如图

进入设计界面,如图

Header data:表头数据,定义默认段落属性等参数。

Paragraph formats:段落格式,字体类型等,在设定对象时可以选择需要的段落。

Character formats:字符格式,定义是否粗体、倾斜、大小等,在一段文字内设置不同的字体、颜色等。

选择Paragraph formats,右键选择“Create node”菜单,如图

输入字体、大小等信息,如图

选择Character formats,右键选择“Create node”菜单,如图

如图所示,设定三种不同颜色的段落,两种不同大小的字符格式。

在定义完成后,需要将表头数据选择一种段落作为该样式的默认段落,如图

在Form设计时,选择样式界面如图

单击主菜单“Form”-->“Check”检查是否正确,没有问题则激活它。

通过样式设定,可以达到以下效果,如图

运行效果如图

3.2、Text Moudle文本制作

ABAP编程中很多对象、文本、消息、提示内容都可以预先设定。

Form中Text对象数据来源有以下几种:

变量,通过程序产生;

Include text,它是Sapscript text,可以通过TCODE:SE75查阅;

Include element,直接输入文本;

Text Module,是下面将要介绍的。

输入TCODE:SMARTFORMS,选择“Text Module”选项,输入Text Module名称,单击“创建”按钮,如图

输入完成后,直接保存,如图

然后在设计Form时选择Text属性为Text Module时就可以选择定义的文本,如图

4、图片的上传

之前我们用过SWM0上传图片,该命令也可以上传其他一些二进制文件(如上传一些Excel模块,供用户下载到PC端,再通过OLE来操作此文档)。

这里我们用SE78命令上传图片,那是为Smart/Script Form设计使用的。

在基础例子中,使用了一个图片,是系统内部的,在制作公司内部的各类单据时需要公司的LOGO,这就需要上传图片。

输入TCODE:SE78,系统显示如图

选择“Stored on Document Server”-->“GRAPHICS General Graphics”-->“BMAP Bitmap Images”,单击工具栏标出的按钮导入图片,选择屏幕界面如图

注意:上传的图片一定要是BMP或DIB格式的单色位图或16位色图

确定后,图片被导入,如图

在设计Form就可以选择上传图片,如图

执行效果如图

5、变量加载

设计文本可以包含动态变量,在程序中再加载实际数据。如在全局设定的接口输入参数中定义一个字符串型的变量,如图

单击按钮显示所有已定义的字段,将它拖入文本描述内,如图

将Form保存后激活。调整程序,加入输入参数。

REPORT  Z_SMARTFORMSTEST_20160714001.
DATA: fm_name TYPE rs38l_fnam.
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
  formname = 'ZTEST20160701001'
  variant = ''
  direct_call = ''
IMPORTING
  fm_name = fm_name
EXCEPTIONS
  no_form = 1
  no_function_module = 2
  OTHERS = 3.
IF sy-subrc <> 0.
ENDIF.
CALL FUNCTION fm_name
exporting
  ytestv = '东方天空'
EXCEPTIONS
  formatting_error = 1
  internal_error = 2
  send_error = 3
  user_canceled = 4
  OTHERS = 5.
IF sy-subrc <> 0.
ENDIF.

运行后,效果如图

6、通过Table对象打印表格

表格的打印是一张单据必不可少的,比如一张送货单,商品明细就是表格的内容。设计过程:选择一个窗口,选右键菜单中的“Create”-->“Table”,如图

先点击如下“细节”按钮,如图

行格式是Table编出时每行的格式,定义表头和表身两种格式,表头与表身略有不同,表宽一定要等于定义列宽之和

定义完后单击“表绘制器”按钮预览定义的行列格式,如图

单击“选择模式”按钮定义表格的线条样式,如图

选择Table下面的Header,创建Table line,如图

在Line Type选择中选择之前定义的LINE_CON,如图

依次在CELL下面建立Text对象,如图

以同样的方法,在Table对象下面的Main中创建Table line对象和Text对象如图

这样整个Table设定完成,接着定义数据和导入参数。

回到Form接口,在“Table”页中定义I_SFLIGHT,如图

选择表格,再选择数据页,如图

输入内部表格I_SFLIGHT,然后将Table内的各个字段赋值操作如下:

打开字段列表,在Table内双击Text字段,在左下角的“Table interfance”-->“I_SFLIGHT”节点中将CARRID、CONNID、FLDATE、PRICE字段拖到相关的文本对象内的描述信息中,如图

保存后激活,单击测试按钮,如图

到此,Form的制作已完成。

调用程序:

REPORT  Z_SMARTFORMSTEST_20160714002.
DATA: fm_name TYPE rs38l_fnam.
DATA: wa_sflight LIKE sflight OCCURS 0 WITH HEADER LINE.
*将数据放入内表
SELECT * INTO TABLE wa_sflight FROM sflight.

CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
  formname = 'ZTEST20160701001'
  variant = ''
  direct_call = ''
IMPORTING
  fm_name = fm_name
EXCEPTIONS
  no_form = 1
  no_function_module = 2
  OTHERS = 3.
IF sy-subrc <> 0.
ENDIF.
CALL FUNCTION fm_name
EXPORTING
  ytestv = '东方天空'
TABLES
  i_sflight = wa_sflight
EXCEPTIONS
  formatting_error = 1
  internal_error = 2
  send_error = 3
  user_canceled = 4
  OTHERS = 5.
IF sy-subrc <> 0.
ENDIF.

运行后输出如图

时间: 2024-08-04 00:30:56

ABAP实战Smart Forms设计的相关文章

ABAP实战屏幕SCREEN设计(二)

屏幕(SCREEN)是ABAP设计最重要的工作之一,SAP的单据.主数据维护等业务功能都使用屏幕,一个程序可以包含多个屏幕. 上一篇博文"ABAP实战屏幕SCREEN设计(一)"主要介绍了以下内容: (1)第一个"HELLO WORLD" Screen程序 (2)工具条和菜单设计 (3)屏幕对象 (4)数据字典关联字段 (5)逻辑流 (6)下拉框设计 本篇博文将继续介绍剩下内容,主要包含 (1)修改屏幕状态 (2)子窗口(Subscreen) (3)表条目控制 (4

ABAP实战屏幕SCREEN设计(一)

屏幕(SCREEN)是ABAP设计最重要的工作之一,SAP的单据.主数据维护等业务功能都使用屏幕,一个程序可以包含多个屏幕. 本文主要介绍: (1)第一个"HELLO WORLD" Screen程序 (2)工具条和菜单设计 (3)屏幕对象 (4)数据字典关联字段 (5)逻辑流 (6)下拉框设计 (7)修改屏幕 (8)子窗口(Subscreen) (9)表条目控制 (10)定制控制,上载图片和在屏幕上显示图片实例 (11)文本编辑器 (12)列表和屏幕相互调用 1.第一个"HE

Smart Forms&amp;ScriptFrom

声明:原创作品,转载时请注明文章来自SAP师太技术博客:www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将追究法律责任!原文链接:http://www.cnblogs.com/jiangzhengjun/p/4292174.html Smart Forms. 1 文本模块... 2 节点元素... 3 Page节点... 3 窗口元素... 4 文本节点... 4 图形节点SE78. 5 模板节点... 6 地址节点... 7 样式... 7 小技

Demo on bar code printing using SAP Scripts/Smart forms

This document will explain the printing of bar code using SAP Scripts/Smart forms Target Readers: SAP-ABAP consultants with knowledge of layout designing. Definition:  Bar codes are often printed on labels to allow machine to read the data. SAP has p

【虚拟化实战】存储设计之六latency

在[虚拟化实战]存储设计之五IOPS中我们讲了评估存储性能的三个关键指标.也就是Throughput,IOPs和latency.以及三者之间的关系.本文深入介绍Latency过高的原因和一些建议. Latency过高直接导致在该存储上运行虚拟机以及其应用的性能降低.最终用户可能抱怨程序打不开,运行慢,响应时间长等等. 一   如何衡量Latency? Latency或者respondingtime,指完成一个IO请求所需要的时间.往往以milliseconds来衡量. 应用端发出的一个IO请求,

BI之SSAS完整实战教程6 -- 设计维度、细化维度上:创建维度定义特性关系

前面我们使用过数据源向导.数据源视图向导.Cube向导来创建相应的对象. 本篇我们将学习使用维度向导来创建维度. 通过前面几个向导的学习,我们归纳一下共同点,主要分成两步 1. 使用某种对象类型的向导创建对象,完成主要结构搭建 2. 使用相应的设计器完成最终对象的修改和细化 有点像送快递,先通过大的物流(创建对象向导)把货物送到相应的城市,再通过快递员(设计器进行细化)送到具体顾客手中. 同样的,我们使用维度向导以一种通用的方式来创建维度,然后根据自己的业务需求,使用维度设计器将创建的维度放置到

实战使用Axure设计App,使用WebStorm开发(5) – 实现页面功能

系列文章 实战使用Axure设计App,使用WebStorm开发(1) – 用Axure描述需求  实战使用Axure设计App,使用WebStorm开发(2) – 创建 Ionic 项目   实战使用Axure设计App,使用WebStorm开发(3) – 构建页面架构  实战使用Axure设计App,使用WebStorm开发(4) – 实现页面UI 实战使用Axure设计App,使用WebStorm开发(5) – 实现页面功能 接上一篇系列文章,在本文中,将进一步的去实现页面功能.去实现输入

BI之SSAS完整实战教程7 -- 设计维度、细化维度中 :浏览维度,细化维度

上篇文章我们已经将Dim Geography维度设计好. 若要查看维度的成员, AS需要接收该维度的详细信息(包括已创建的特性.成员属性以及多级层次结构), 通过XMLA与AS的实例进行通信. 今天我们将维度部署到AS上进行查看. 文章提纲 补充背景知识 浏览维度,细化维度 总结 补充背景知识 XMLA是一种基于简单对象访问协议(SOAP)的XML应用程序编程接口的行业标准, 设计用于OLAP和数据挖掘. XMLA规范定义了两个函数,即Execute和Discover, 这两个函数用于向主机实例

实战使用Axure设计App,使用WebStorm开发(6) – 迈向后端

系列文章 实战使用Axure设计App,使用WebStorm开发(1) – 用Axure描述需求  实战使用Axure设计App,使用WebStorm开发(2) – 创建 Ionic 项目   实战使用Axure设计App,使用WebStorm开发(3) – 构建页面架构  实战使用Axure设计App,使用WebStorm开发(4) – 实现页面UI 实战使用Axure设计App,使用WebStorm开发(5) – 实现页面功能 实战使用Axure设计App,使用WebStorm开发(6) –