smartforms实例下载.docx
《smartforms实例下载.docx》由会员分享,可在线阅读,更多相关《smartforms实例下载.docx(18页珍藏版)》请在冰豆网上搜索。
![smartforms实例下载.docx](https://file1.bdocx.com/fileroot1/2022-12/7/5aa94d94-7d44-47a4-98e3-5d7edab10345/5aa94d94-7d44-47a4-98e3-5d7edab103451.gif)
smartforms实例下载
SMARTFORM知识
一、SMARTFORM的特征
SMARTFORM是在SAPScript的基础之上产生的一种新的FORM制作方式,它完全兼容SAPScript。
在做SMARTFORM的过程中基本上不需要多少编程知识,它有一个图形界面来帮助我们完成工作。
这个图形界面由三个部分组成,它们分别是:
FormPainter、PCEditer、TablePainter。
启动SMARTFORM设计的事务代码:
SMARTFORMS,进入的界面如下:
输入你要创建的SMARTFORM的名称,然后点击“创建”,进入下面的FormBuilder界面:
注:
上面另外两个选项Style、Textmodule分别是用来定义FORM的样式和文本模块的。
上面的屏幕分为三个部分:
FormPainter:
主要用来设计SMARTFORM输出页面的格式,可以在页面上包含窗口和图(最右边)形,还可以指定它们在页面上的位置以及它们的大小等。
在图片左上角的工
具栏有一个按钮
可以用来显示和隐藏这个窗口。
PCEditer:
主要用来初始化文本(TEXT)和域(FIELD),它包含的功能主要有以下几个方(中间)面,1)输入、删除、选择、
NavigatingintheSAPFormBuilder:
它主要用来显示一个SMARTFORM的层次结构。
(最左边)当你在层次结构中选择了一个NODE(结点)后,在上面截屏的中间部分会显示这个NODE的MAINTENANCE屏幕。
二、在做FORM前要了解的几个概念
1、FORM的结构:
一个FORM往往是由页面(PAGES)、输出区域(OUTPUTAREAS即WINDOWS)、地址栏(ADRESS)、图形(GRAPHICS,比如公司LOGO)、数据(DATA)、以及文本内容(TEXT)组成。
2、主窗体和子窗体:
(MAINWINDOWSANDSUBWINDOWS)这是页面上两个不同的输出区域,用来输出数据,文本等内容。
对于主窗体,你在一个FORM中只能定义一个窗体作为主窗体;不同PAGE上的主窗体必须宽度相同,但是高度可以不同;一个没有主窗体的PAGE指向的下一个页面不能为它自己。
对于子窗体,它也可以在多个页面上面显示,但是那些不匹配SUBWINDOWS的值,子窗体不会将它们显示出来。
三、一个小的SMARTFORM实例
首先给要创建的SMARTFORM取名为ZTEST_HXG_F3,点击“创建”按钮,进入下面的页面:
首先看一下这个截图的左上角:
FORMATTRIBUTES:
主要是这个窗体的一般属性和输出选择。
FORMINTERFACE:
这个属性很重要!
它主要用来描述这个SMARTFORM的接口属性,比如IMPORT、EXPORT、TABLES、EXCEPTION。
当我们做好了一个SMARTFORM以后,如果想从ABAP程序中调用这个FORM的话,就会用到这些接口来传递参数,这个将在下面详细说明。
GLOBALDEFINITIONS:
主要用来定义一些全局的数据,还有FIELDSYMBOLS、初始化等。
当我们创建了ZTEST_HXG_F3的时候,系统会默认的建立一个页面(也就是刚开始在PAGESANDWINDOWS下面的%PAGE,它下面是一个MAINWINDOWS)。
现在我将它的名字改为FIRST,描述改为“第一页“。
然后在MAINWINDOW上点击右键,如上图创建一个TABLE。
看上图:
这就是刚才我们定义的TABLE的MAINTENANCE屏幕。
我们在这个屏幕上可以定义很多的内容,看到
了吗?
它是SMARTFORM中一个很重要的组成部分哦,我们将要在FORM中显示的表格,都是在这里定义的。
我们可以定义的内容有:
TABLE的宽度,水平线对齐方式。
上面这个图用来定义TABLE的输出格式,比如现在我们定义了LINE1,我们定义了三个列,三个列的宽度分别都是4CM。
但是请注意,当你制定这些列的宽度的时候,它们三个的列的和不能大于表格的宽度
,否则系统会报错。
当然这里我只定义了一个LINETYPE,你还可以在下面定义很多的LINETYPE。
做完了这一步以后我们可以点击
进入这个屏幕看一下我们定义的表格的效果。
看到了吗?
我们定义的三列清楚的在上面显示出来了。
上图中的LINE1表示我们用的是LINE1的输出格式(主要是指输出列的宽度和长度)。
我们在屏幕上输出报表的时候,画表格,一般的表格都是由表头,还有内表的填充数据来组成,这里也不例外,比如我们就可以把我们定义的TABLE和内表联系起来,只需点击上面的“TABLE“边上的”DATA“选项卡,进去设置一下就可以了,取内表名为ITAB。
具体设置如下图所示:
首先我们来定义表头HEADER,也就是各个列的列名:
首先选中上面这些内容,这样在就会在TABLE下面多处一个HEADER事件,如图所示:
这样我们就可以在HEADER下面定义各个列的名称了。
这里我们以固定列(即三列)来演示!
在它下面首先要建立一个FOLER。
你必须得为每一列都定义一个FOLDER,这里有三列,我们就在HEADER下面创建三个FOLDER。
FOLDER结点的作用是用来合并一些相关结点的,并且它帮助我们很好的区分各个层次。
建立好FOLDER之后,在每个FOLDER下面再创建一个TEXT。
这样就形成了这样一个层次结构。
要想显示成下面这个样子:
我们还得设置一两个地方:
如图所示
选中第一个FOLDER,双击它,在右边的窗口中选中如图上面标记的内容,这样做的目的是,NEWLINE表示我们开始一个新的行,这个行是从FOLDER1开始的,LINETYPE选择LINE1的意思是说,我们这个行的输出格式是以LINE1为参照的!
那么接下来的两个FOLDER的要这样设置,如下图:
表示接下来的两个FOLDER中的内容是和第一个FOLDER同处一行,但是是不同的CELL。
接下来的事情就是设置每一列的列名了,注意这里的列名是静态的文本。
我以第一列为例子来介绍,其他两列类似,选中FOLDER1下的TEXT1,如下图:
在椭圆选中的地方输入你想要取的列名,比如我这里就是取为:
第一列。
其他两列的列名类似,这里就不再赘述了。
在前面我们已经把这个SMARTFORM和内表ITAB连接起来了。
接下来就看看通过SMARTFORM显示动态内容的情况!
首先我们在FORMINTERFACE中定义这个表的名字和其他参数,如下图:
然后点击左上角椭圆选中的那个按钮,这样在左下角就会出现这个SMARTFORM的FIELDLIST。
注意:
这里定义的ITAB只有三个字段,刚好跟我们定义的TABLE吻合,当然你也可以定义自己的内表。
做完了这以步后测试一下,如果没有问题,就进行下一步:
同在TABLE的HEADER中定义一样,我们还要定义三个FOLDER和三个TEXT,定义好了图如下:
这几个FOLDER的设置和上面HEADER一样,唯一不同的就是这里每个FOLDER下面的TEXT的内容不是我们自己在上面输入“第一列“、”第二列“、”第三列“。
而是如上图的箭头所示,从左边那个地方用鼠标按住以后拖到右边的箭头所指的那个地方。
这样我们这列对应的数据就会是”动态“的。
做好了这一切以后,测试,没有错误,那么基本上一个简单的SMARTFORM就完成了。
当一个SMARTFORM激活以后,系统就会自动给它分配一个FUNCTIONMODULE。
我们只需要点击“F8“直接运行这个SMARTFORM,就会进入这个界面:
上面这个FUNCTIONMODULE就是我们做完了的SMARTFORM所对应。
你可以在程序中调用这个SMARTFORM。
下面就介绍一下在程序中如何写代码:
reportz_hxg_007.
data:
itablikealsmex_tablineoccurs0withheaderline.
datafm_nametypers38l_fnam.
data:
num1typei,
num2typei,
num3typei.
callfunction'SSF_FUNCTION_MODULE_NAME'“这个FUNCTION主要是用来取你要调用的
exportingSMARTFORM对应的FUNCTIONMODULE的
formname='ZTEST_HXG_F3'名字然后赋值给FM_NAME,因为SMARTFORM
importing对应的FUNCTIONMODULE名字很长,并且
fm_name=fm_name难以记忆
exceptions
no_form=1
no_function_module=2
others=3.
num1=1.
num2=2.
num3=3.
do20times.
itab-row=num1.
itab-col=num2.
itab-value=num3.
appenditab.
clearitab.
num1=num1+1.
num2=num2+1.
num3=num3+1.
enddo.
callfunctionfm_name“调用SMARTFORM,很显然这里是以FUNCTION
*EXPORTINGMOUDULE的方式和SMARTFORM交互
*ARCHIVE_INDEX=
*ARCHIVE_PARAMETERS=
*CONTROL_PARAMETERS=
*MAIL_APPL_OBJ=
*MAIL_RECIPIENT=
*MAIL_SENDER=
*OUTPUT_OPTIONS=
*USER_SETTINGS='X'
*G_CARRID=
*G_CONNID=
*G_FLDATE=
*IMPORTING
*DOCUMENT_OUTPUT_INFO=
*JOB_OUTPUT_INFO=
*JOB_OUTPUT_OPTIONS=
tables
itab=itab“把ITAB内表的内容传递到SMARTFORM中去
exceptions
formatting_error=1
internal_error=2
send_error=3
user_canceled=4.
*others=5.
运行程序,到达这个屏幕:
系统会提示你输入一个“输出设备”,随便输入一个,然后点击下面的“PRINGPREVIEW”。
你就会看到最后的结果!
如下图
基本上就介绍这么多,其实SMARTFORM可以把FORM做的非常好看,我们还可以插入图形,ADRESS等等很多元素,因为自己还用的不是很熟,也就只能分享这点成果。
后续我会关注的问题就是复杂的SMARTFORM的建立,以及我们在打印的过程中如何控制SMARTFORM的换页等,希望有机会跟你探讨!
呵呵^_^