1、smartforms实例下载 SMARTFORM知识一、 SMARTFORM的特征SMARTFORM是在SAPScript的基础之上产生的一种新的FORM制作方式,它完全兼容SAPScript。在做SMARTFORM的过程中基本上不需要多少编程知识,它有一个图形界面来帮助我们完成工作。这个图形界面由三个部分组成,它们分别是:Form Painter、PC Editer、Table Painter。启动SMARTFORM设计的事务代码:SMARTFORMS,进入的界面如下:输入你要创建的SMARTFORM的名称,然后点击“创建”,进入下面的Form Builder界面:注:上面另外两个选项 St
2、yle、Text module分别是用来定义FORM的样式和文本模块的。上面的屏幕分为三个部分: Form Painter:主要用来设计SMARTFORM输出页面的格式,可以在页面上包含窗口和图(最右边) 形,还可以指定它们在页面上的位置以及它们的大小等。在图片左上角的工 具栏有一个按钮可以用来显示和隐藏这个窗口。PC Editer:主要用来初始化文本(TEXT)和域(FIELD),它包含的功能主要有以下几个方(中间) 面,1)输入、删除、选择、Navigating in the SAP Form Builder:它主要用来显示一个SMARTFORM的层次结构。(最左边) 当你在层次结构中选择
3、了一个NODE(结点)后,在上面截屏的中间部分会显示这个NODE的MAINTENANCE屏幕。二、 在做FORM前要了解的几个概念1、 FORM的结构:一个FORM往往是由页面(PAGES)、输出区域(OUTPUT AREAS即WINDOWS)、地址栏(ADRESS)、图形(GRAPHICS,比如公司LOGO)、数据(DATA)、以及文本内容(TEXT)组成。2、 主窗体和子窗体:(MAIN WINDOWSAND SUBWINDOWS)这是页面上两个不同的输出区域,用来输出数据,文本等内容。对于主窗体,你在一个FORM中只能定义一个窗体作为主窗体;不同PAGE上的主窗体必须宽度相同,但是高度可
4、以不同;一个没有主窗体的PAGE指向的下一个页面不能为它自己。对于子窗体,它也可以在多个页面上面显示,但是那些不匹配SUBWINDOWS的值,子窗体不会将它们显示出来。三、 一个小的SMARTFORM实例 首先给要创建的SMARTFORM取名为ZTEST_HXG_F3,点击“创建”按钮,进入下面的页面:首先看一下这个截图的左上角:FORM ATTRIBUTES:主要是这个窗体的一般属性和输出选择。FORM INTERFACE:这个属性很重要!它主要用来描述这个SMARTFORM的接口属性,比如IMPORT、EXPORT、TABLES、EXCEPTION。当我们做好了一个SMARTFORM以后,
5、如果想从ABAP程序中调用这个FORM的话,就会用到这些接口来传递参数,这个将在下面详细说明。GLOBAL DEFINITIONS:主要用来定义一些全局的数据,还有FIELD SYMBOLS、初始化等。 当我们创建了ZTEST_HXG_F3的时候,系统会默认的建立一个页面(也就是刚开始在PAGES AND WINDOWS下面的%PAGE,它下面是一个MAIN WINDOWS)。现在我将它的名字改为FIRST ,描述改为“第一页“。然后在MAIN WINDOW上点击右键,如上图创建一个TABLE。看上图:这就是刚才我们定义的TABLE的MAINTENANCE屏幕。我们在这个屏幕上可以定义很多的内
6、容,看到了吗?它是SMARTFORM中一个很重要的组成部分哦,我们将要在FORM中显示的表格,都是在这里定义的。我们可以定义的内容有:TABLE的宽度,水平线对齐方式。上面这个图用来定义TABLE的输出格式,比如现在我们定义了LINE1,我们定义了三个列,三个列的宽度分别都是4CM。但是请注意,当你制定这些列的宽度的时候,它们三个的列的和不能大于表格的宽度,否则系统会报错。当然这里我只定义了一个LINE TYPE,你还可以在下面定义很多的LINE TYPE。做完了这一步以后我们可以点击进入这个屏幕看一下我们定义的表格的效果。看到了吗?我们定义的三列清楚的在上面显示出来了。上图中的LINE1表示
7、我们用的是LINE1的输出格式(主要是指输出列的宽度和长度)。我们在屏幕上输出报表的时候,画表格,一般的表格都是由表头,还有内表的填充数据来组成,这里也不例外,比如我们就可以把我们定义的TABLE和内表联系起来,只需点击上面的“TABLE“边上的”DATA“选项卡,进去设置一下就可以了,取内表名为ITAB。具体设置如下图所示:首先我们来定义表头HEADER,也就是各个列的列名:首先选中上面这些内容,这样在就会在TABLE下面多处一个HEADER事件,如图所示:这样我们就可以在HEADER下面定义各个列的名称了。这里我们以固定列(即三列)来演示!在它下面首先要建立一个FOLER。你必须得为每一列
8、都定义一个FOLDER,这里有三列,我们就在HEADER下面创建三个FOLDER。FOLDER结点的作用是用来合并一些相关结点的,并且它帮助我们很好的区分各个层次。建立好FOLDER之后,在每个FOLDER下面再创建一个TEXT。这样就形成了这样一个层次结构。要想显示成下面这个样子:我们还得设置一两个地方:如图所示选中第一个FOLDER,双击它,在右边的窗口中选中如图上面标记的内容,这样做的目的是,NEW LINE表示我们开始一个新的行,这个行是从FOLDER1开始的,LINE TYPE选择LINE1的意思是说,我们这个行的输出格式是以LINE1为参照的!那么接下来的两个FOLDER的要这样设
9、置,如下图:表示接下来的两个FOLDER中的内容是和第一个FOLDER同处一行,但是是不同的CELL。接下来的事情就是设置每一列的列名了,注意这里的列名是静态的文本。我以第一列为例子来介绍,其他两列类似,选中FOLDER1下的TEXT1,如下图:在椭圆选中的地方输入你想要取的列名,比如我这里就是取为:第一列。其他两列的列名类似,这里就不再赘述了。 在前面我们已经把这个SMARTFORM和内表ITAB连接起来了。接下来就看看通过SMARTFORM显示动态内容的情况! 首先我们在FORM INTERFACE中定义这个表的名字和其他参数,如下图:然后点击左上角椭圆选中的那个按钮,这样在左下角就会出现
10、这个SMARTFORM的FIELD LIST。注意:这里定义的ITAB只有三个字段,刚好跟我们定义的TABLE吻合,当然你也可以定义自己的内表。做完了这以步后测试一下,如果没有问题,就进行下一步: 同在TABLE的HEADER中定义一样,我们还要定义三个FOLDER和三个TEXT,定义好了图如下:这几个FOLDER的设置和上面HEADER一样,唯一不同的就是这里每个FOLDER下面的TEXT的内容不是我们自己在上面输入“第一列“、”第二列“、”第三列“。而是如上图的箭头所示,从左边那个地方用鼠标按住以后拖到右边的箭头所指的那个地方。这样我们这列对应的数据就会是”动态“的。 做好了这一切以后,测
11、试,没有错误,那么基本上一个简单的SMARTFORM就完成了。当一个SMARTFORM激活以后,系统就会自动给它分配一个FUNCTION MODULE。我们只需要点击“F8“直接运行这个SMARTFORM,就会进入这个界面:上面这个FUNCTION MODULE就是我们做完了的SMARTFORM所对应。你可以在程序中调用这个SMARTFORM。下面就介绍一下在程序中如何写代码:report z_hxg_007 .data: itab like alsmex_tabline occurs 0 with header line.data fm_name type rs38l_fnam.data:
12、num1 type i, num2 type i, num3 type i.call function SSF_FUNCTION_MODULE_NAME “这个FUNCTION主要是用来取你要调用的 exporting SMARTFORM对应的FUNCTION MODULE的 formname = ZTEST_HXG_F3 名字然后赋值给FM_NAME,因为SMARTFORM importing 对应的FUNCTION MODULE名字很长,并且 fm_name = fm_name 难以记忆 exceptions no_form = 1 no_function_module = 2 other
13、s = 3.num1 = 1.num2 = 2.num3 = 3.do 20 times. itab-row = num1. itab-col = num2. itab-value = num3. append itab. clear itab. num1 = num1 + 1. num2 = num2 + 1. num3 = num3 + 1.enddo.call function fm_name “调用SMARTFORM,很显然这里是以FUNCTION * EXPORTING MOUDULE的方式和SMARTFORM交互* ARCHIVE_INDEX =* ARCHIVE_PARAMETE
14、RS =* 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.运行程序,到达这个屏幕:系统会提示你输入一个“输出设备”,随便输入一个,然后点击下面的“PRING PREVIEW”。你就会看到最后的结果!如下图 基本上就介绍这么多,其实SMARTFORM可以把FORM做的非常好看,我们还可以插入图形,ADRESS等等很多元素,因为自己还用的不是很熟,也就只能分享这点成果。后续我会关注的问题就是复杂的SMARTFORM的建立,以及我们在打印的过程中如何控制SMARTFORM的换页等,希望有机会跟你探讨!呵呵_
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1