SmartForm基础知识目录概述Form(表格)SmartStyles(样式)TextModule(文本模块)在程序中调用SmartForms检查与测试Form2概述SmartForm是在SAPScript的基础之上产生的一种新的FORM制作方式,它完全兼容SAPScript。在做SMARTFORM的过程中基本上不需要多少编程知识,它有一个图形界面来帮助我们完成工作。下面是一个简单SmartForm输出结果:3Form(表格)使用事务码:Smartforms进入SAP智能表初始画面,如右图所示:4Form(表格)输入名称Z001,点击“创建”按钮,进入下面的FormBuilder界面:5Form(表格)上面的屏幕分为三个部分:树形导航工具(左边):主要用来显示SmartForm的层次结构。当你在层次结构中选择了一个节点后,在上面截屏的中间部分会显示这个节点的维护屏幕。维护屏幕(中间):根据当前树状结构中选择的不同节点类型,会出现各种标签,对应相关的选项卡,在这些选项卡中可以进行该节点相关属性的设计。窗口绘制器(右边):主要用来设计SmartForm输出页面的格式,可以在页面上包含窗口和图形,还可以指定它们在页面上的位置以及它们的大小等。在图片左上角的工具栏有一个按钮可以用来显示和隐藏这个窗口。6Form(表格)定义Smartform的全局设置表格属性:设置表格的样式,页面的格式(即页面大小),输出格式等。表格接口:它用来描述这个SmartForm的接口属性,比如IMPORT、EXPORT、TABLES、EXCEPTION。如果从ABAP程序中调用这个FORM的话,就会用到这些接口来传递参数。全局定义:主要用来定义一些全局数据,还有FIELDSYMBOLS,初始化等。7Form(表格)定义Smartform的全局设置8Form(表格)设定全局设置——表格接口用于设置通过CallFunction调用SmartForm时的参数。导入——对应CallFunctionExporting参数,用户也可以增加参数。导出——对应CallFunctionImporting参数,用户也可以增加参数。表——对应CallFunctionTable参数,用户也可以增加参数,参考打印必须是已存在的数据库表或结构。例外——对应CallFunctionExceptions参数,即出错捕捉参数。9Form(表格)设定全局设置——全局定义全局数据:可以定义在Smartform内部使用的全局变量,参考打印内容既可是系统提供的I、C等类型,也可以是已存在的数据库表、结构,还可以是Smartform中定义的类型。注:此处Typeassignment的值必须选择Type或Typerefto(对象分配),用LIKE有时会报错。类型:定义内部使用的类型。此处均使用TYPES语句定义。字段符号:定义Smartform内部使用的FIELD-SYMBOL变量。此处定义的变量必须以“”开始,以“”结束,如:“field-symbols:dbtabletypeany.”。初始化:定义初始化处理内容,相当于定义一个Subroutine,输入参数即Using参数,输出参数即Changing参数。货币/数量字段:定义货币/数量类型的全局变量的参考字段。10Form(表格)设置页和窗口什么是页?Smartform的组成元素。页类似于Dialog中的Screen。Smartform是由页组成,包含至少一页或多页。每一页包含多个节点,节点可以是窗口、地址、图形等。什么是窗口?页的组成元素。窗口分为主窗口、次窗口、拷贝窗口、最终窗口。11Form(表格)设置页和窗口窗口类型——主窗口主窗口一般用于数据的列表显示,用于LOOP循环显示;当然也可显示非列表内容。一个Form中只能包含一个主窗口。主窗口可分页输出,即连续输出到几页。无论输出几页,主窗口的宽度必须一致,高度和位置可以任意指定。窗口类型——次窗口次窗口主要用于非列表显示内容的输出。每一页中能包含多个次窗口。次窗口不可分页输出。12Form(表格)设置页和窗口窗口节点图形节点、地址节点、文本节点、表节点、模板节点、流逻辑、循环节点、程序行、命令节点、文件夹13Form(表格)窗口节点——文本节点建立文本节点输出文本内容,是最后一级节点。可以使用文本编辑器,编辑文本内容,可以直接输出文本,也可动态输出文本。14Form(表格)窗口节点——表列表内容显示,可按一定条件循环显示InternalTable中内容。可自定义表的显示格式、列宽、列数量。可以进行汇总统计。表包含表头、主要区域、脚标三部分。表头,即显示列标题。主要区域,即Loop循环显示区。脚标,即Footer区。15Form(表格)窗口节点——表16Form(表格)窗口节点——表表的属性设置:表选项:可以设置表的宽度,列数,每列列宽。数据选项:设置数据来源,SmartForm内部定义的InternalTable,以及循环的条件。计算选项:用于做汇总统计,可按总计、平均值及数量来统计。输出选项:选择输出样式。条件选项:设置表的执行条件。表头、主要区域、脚标根据表定义的列数,自动添加CELL,每个CELL下又可添加文本节点输出要显示内容。17Form(表格)窗口节点——表点击细节按钮,设置行类型、每列宽度等内容18Form(表格)窗口节点——模板模板用于按一定格式输出一组文本。可自定义模板的显示格式、列宽、列数量。模板通常在次窗口中输出文本。可设置模板的执行条件。可根据模板的列数,增加相同数量的文本节点。19Form(表格)窗口节点——模板20Form(表格)窗口节点——流逻辑可选节点、循环节点、程序行、命令行窗口节点——流逻辑—循环节点此节点用于输出InternalTable内容。循环节点的下级节点一般设置为模板节点。循环节点定义要输出InternalTable的内容,下级的模板节点则定义循环输出的每行格式。21Form(表格)窗口节点——流逻辑—循环节点循环节点的属性设置:数据选项:设置数据来源,SmartForm内部定义的InternalTable,以及循环的条件。计算选项:用于做汇总统计,可按总计、平均值及数量来统计。事件选项:可设置是否输出表头或脚标。输出选项:选择输出样式。条件选项:设置表的执行条件。22Form(表格)窗口节点——流逻辑—循环节点23Form(表格)窗口节点——流逻辑—程序行可在程序行中增加逻辑程序处理。程序行相当于程序中subroutine,需要设置输入和输出参数。24SmartStyles(样式)运行事务代码SmartForms,选择样式(或者直接输入事务代码SmartStyles),输入名称Z001,点击创建,如右图所示:25SmartStyles(样式)Smartform样式——表头数据表头数据定义该样式的默认设置。表头数据中的标准段落必须指定。26SmartStyles(样式)Smartform样式—段落格式创建段落格式,一般有RH(ReportHeader),PD(PageHeader),PB(PageBottom),LD(LineHeaderandDetails),字体:CNSONG,9pt。定义不同段落的格式缩进和空格:设置对齐方式、行间距、段落缩进。字体:设置字体格式。标签:用于设置一个段落中多个标签的位置,并设定对齐方式。即在文本中使用段落时,一个文本可以输出多种不同对齐方式。标签的位置是从0开始计算。在文本中使用,,来分隔标签。编号与框架:按提纲方式设置段落。27SmartStyles(样式)Smartform样式——段落格式28SmartStyles(样式)Smartform样式——字符格式29TextModule(文本模块)Smartform文本模块文本模块用于定义文本模板,以便在Smartform报表中使用。文本模块中只需定义文本内容即可使用。在文本节点中使用文本模块时,文本节点一般属性要选择[文本模块],此时在[名称]处选项定义的文本模块即可。30在程序中调用SmartForm指定Smartform(一)调用smart名字。DATA:sm_funcTYPErs38l_fnam.例:CALLFUNCTION'SSF_FUNCTION_MODULE_NAME'EXPORTINGFORMNAME='Z001'smartforms名字IMPORTINGFM_NAME=sm_funcEXCEPTIONSNO_FORM=1NO_FUNCTION_MODULE=2OTHERS=3.31在程序中调用SmartForm指定Smartform(二)打印控制设置SSFCOMPOP、SSFCTRLOP类型参数,配置打印控制。直接打印——不显示Dialog;显示Dialog——手工打印。DATA:CONTROL_PARAMETERSTYPESSFCTRLOP,ERRTABTYPETSFERROR.DATA:JOB_OUTPUT_INFOTYPESSFCRESCL.control_parameters-preview=‘X’.”打印预览control_parameters-no_open='X'.没有新的假脱机请求control_parameters-no_close='X'.不关闭假脱机请求32在程序中调用SmartForm指定Smartform(三)调用SSF_OPEN函数设置打印机,打开输出请求,使用用户打印设置必须调用SSF_OPEN。CALLFUNCTION'SSF_OPEN'EXPORTINGOUTPUT_OPTIONS=SSFCOMPOP类型变量CONTROL_PARAMETERS=SSFCTRLOP类型变量USER_SETTINGS='X'EXCEPTIONSFORMATTING_ERROR=1INTERNAL_ERROR=2SEND_ERROR=3USER_CANCELED=4OTHERS=5.33在程序中调用SmartForm指定Smartform(四)调用Smartforms的FunctionModule打印——smart表及变量传递CALLFUNCTIONL_FM_NAMEEXPORTINGCONTROL_PARAMETERS=SSFCTRLOP类型变量OUTPUT_OPTIONS=SSFCOMPOP类型变量USER_SETTINGS='X'Smartform中定义参数…=自定义变量TABLESSmartform中定义Table=自定义Internaltable.34在程序中调用SmartForm指定Smartform(五)关闭打印机设置CALLFUNCTION'SSF_CLOSE'EXCEPTIONSFORMATTING_ERROR=1INTERNAL_ERROR=2SEND_ERROR=3OTHERS=4.35在程序中调用SmartForm示例——ZMMF013DATA:BEGINOFITAB13OCCURS0.INCLUDESTRUCTUREZMMF013.DATA:ENDOFITAB13.DATA:SM_FUNCTYPERS38L_FNAM.DATA:LISTLIKEITAB13OCCURS0WITHHEADERLINE.DATA:GT_DETALIKEITAB13OCCURS0WITHHEADERLINE.DATA:I_NAMELASTLIKEUSER_ADDR-NAME_LAST.DATA:CONTROL_PARAMETERSTYPESSFCTRLOP,ERRTABTYPETSFERROR.DATA:JOB_OUTPUT_INFOTYPESSFCRESCL.36在程序中调用SmartForm示例——ZMMF013FORMDISPLAY.CALLFUN