ABAP编程进阶Smartforms大纲•RFC•Smartforms•编程提示RFC•RFC简介•RFC应用返回RFC简介•SAPR/3(及以后的ERP和其他系统)做为企业业务操作的基础平台,不可避免的要跟其他系统(如数据分析、办公自动化等)进行数据交互。同时随着企业应用SAP范围的增加,会出现很多不同版本或不同功能的SAP系统。如何让这些系统之间能够实现信息共享和业务互操作,就成为SAP扩展应用的重要课题。•SAP提供了RFC(RemoteFunctionCalls)来解决这些问题。RFC是一个概念,它包含了软件技术发展和SAP开发过程中的很多具体技术,如OLE、DCOM等公共技术以及IDoc、BAPI等SAP专有技术。RFC应用•第三方系统从SAPR/3获取数据:要求本函数能读取R/3数据,并以相应的结构形式输出至对应接口。•第三方系统将自有数据写SAPR/3:要求本函数从对应接口获取数据,再根据业务需求写入R/3系统或作其它处理。•函数接口:结合双方系统需要定义适合的接口形式,便于数据正确地传入和传出。Smartforms•简介•设计SAPSmartForms•文本和图片•表单中的数据•表格和模板•流程控制•集成到应用程序•Smartstyles返回简介•SAPSmartForms是替换SAPScript的下一代表单开发技术。相比SAPScript来说,它的设计器更加直观,层级关系更加明显,也应该更便于开发使用。•SAPSmartForms还提供了表格布局的功能,与传统的固定行高布局相比,更为灵活。返回设计SAPSmartForms–使用SAP表单制作器和它的相关工具来创建和调整表单(事务码:SMARTFORMS)。在这里可以定义布局(例如文本或图片的位置和大小),表单元素的处理顺序,应用数据输出到表单的接口。–一旦做出了任何必要调整,必须激活表单。在这个过程中,系统首先检查是否表单包含错误,然后自动保存表单。主要的步骤是生成一个函数模块。一个函数模块是一个ABAP代码的封装片段,它可以理解为子程序。函数模块的接口跟从表单制作器为表单定义的接口完全移植。由于函数模块自动生成,就不需要ABAP知识。返回SAP表单制作器的区域–使用图形化的SAP表单制作器来编辑表单。•SAP表单制作器分成三个区域:•左手边:导航树。这个树显示了SAPSmartForm的层级。独立的表单元素(例如页或图片)被表示成节点。可以在导航树下方附加显示变量和字段列表。关于更多信息,看第五单元——表单中的数据。•中间:维护屏幕。这个屏幕有几个选项卡,可以设置和修改当前选中节点的属性。还可以用编辑器输入文本或用表格绘制器来确定表格的布局。•右手边:表单绘制器。表单绘制器用来定义页布局,列入窗口和图片的位置和尺寸。如果想要隐藏表单绘制器的话,可以选择菜单“实用程序-表单绘制器开/关”–可以在导航树或者表单绘制器双击节点来编辑它们。SAP表单制作器的区域导航树–表单的所有元素都在导航树中表现为特定节点。–子节点“继承”了高级节点的属性,例如样式。如果某个节点不被处理,则其子节点也不被处理。一个节点的后继节点则无关。它会在前驱节点被处理后处理。–如果一个节点有子节点,可以双击节点图标前的三角符号来展开这个结构。可以双击节点来编辑它。系统就会在维护屏幕和表单绘制器(如果打开)中显示这个节点。返回SAP表单制作器的区域导航树(续)–在顶级节点下,可以发现下面两个节点:•全局设置,它包括了:–表单属性:这些是管理信息和基本格式设置。–表单接口:这里必须定义用应用程序填写的字段或者要返回给应用程序的字段(看第五单元——表单中的数据)。–全局定义:这里可以定义表单中用到的附加字段(看第五单元——表单中的数据)。SAP表单制作器的区域表单属性:一般属性–表单属性不但包括表单的名字和描述,还有它的当前状态:激活还是非激活。一个表单可以是这两个版本的任意一个。应用程序则只使用激活版本。这意味着你可以暂时保存修改而不直接影响正在处理的应用。要激活一个表单,选择“表单-激活”。注意当复制或重命名一个表单时,副本的状态总是非激活的。返回SAP表单制作器的区域表单属性:输出选项–页格式可以选择在假脱机管理中提供的页格式。可以为每个页分别指定方向(纵向或横向)。–可以为新表单指定缺省页格式。从事务SMARTFORMS的初始屏幕选择“实用程序-设置-通用”来设置。–必须为每个表单设置样式。样式是不同字符和段落格式的集合,可以用在表单中。然而,可以为多数子节点指定独立的样式,覆盖表单的缺省设置。看第九单元-SmartStyles。SAP表单制作器的区域表单属性:输出选项(续)–字符每英寸(CPI)。这个字段允许你确定CH单位的长度,用它可以在表单里指定横向宽度(例如窗口宽度)。如果输入了缺省值10,也就是一个字符占十分之一英寸,差不多2.5毫米。–类似的是行每英寸(LPI)。这个字段允许你确定LN单位的长度,在表单里指定纵向长度(窗口高度)。–除了把表单传输给假脱机管理,还可以在系统之间通过XML数据流来交换数据。为这个意图提供了一个被保证的接口,称为SAPSmartFormsXML接口(XSF)。要使用这个接口,选中“XSF输出激活”复选框(应用程序不会考虑这个设置)。SAP表单制作器的区域–页–每个表单至少有一个页。•页在导航树上表示为一个节点。跟其他节点类型(例如文本或者表)一样,在某个页上单击鼠标右键会打开一个上下文菜单,有相关选项:•创建或删除(只有在修改模式下出现)。当创建一个新节点时,系统建议一个唯一的技术名称,如果需要,你也可以修改。注意,在删除一个节点的时候,在指定页上的所有子节点都会被删除。•复制到剪贴板、剪切并插入剪贴板、从剪贴板粘贴。所有子节点都会受到影响。•展开或收缩树中的页。返回SAP表单制作器的区域页属性可以在下列选项卡中做出设置:–一般属性:»下一页:缺省值是当前页本身。»自动页编号类型:可以选择罗马数字或阿拉伯数字,还可以选择大写或小写。此外,还能决定页计数器的表现。注意:即使你设置了页编号也并不意味着你的页被编号了。为了让页显示编号,必须在某个文本窗口中输出变量SFSY-PAGE变量。–可以在下列选项卡中做出设置:输出选项:–由于指定的页格式会应用到整个表单,只能在页级别上设置方向(纵向或横向)。SAP表单制作器的区域–主窗口和二级窗口–有两种类型的窗口:主窗口和二级窗口。•在主窗口的子节点,可以输入诸如客户预定的跨越多页的文本和数据(称为主体文本)。当主窗口完全被文本和数据填充时,文本会在下一页的主窗口继续显示。页就会自动换页(可以使用跟缺省设置不同的下一页,参见流程控制)。–你只能在表单中定义一个主窗口。–主窗口在每一页都必须具有相同的宽度,但是可以选择不同的高度和位置。–不带主窗口的页不能把它自己做为下一页,因为这会造成一个无限循环。这是,系统会在处理了三页之后终止处理。返回SAP表单制作器的区域主窗口和二级窗口(续)–在二级窗口子节点,可以在预定义的输出区域输出文本和数据。这意味着文本不会象主体文本一样换页输出。•超出二级窗口范围的文本和数据会被丢弃而不输出。•二级窗口的高度、宽度和位置在每页上都可以不同。–图片会自动设置到正确的大小。如果涉及到地址,当输出区域过小时,只有最重要的信息会被显示。SAP表单制作器的区域窗口属性–你可以在几个级别执行检查,从最底层节点到整个表单。要确保所有窗口都没有错误,它们必须适合于相应页,并且主窗口必须在所有页上具有相同宽度。所有错误信息都会显示在维护屏幕的底端。点击节点名字可以直接转到改节点。–使用输出选项设置窗口的位置和表现(看下一页)。SAP表单制作器的区域窗口:输出选项–可以指定上左边距来确定窗口的位置,输入高度和宽度来指定大小。如果在表单绘制器中画窗口,设置的值会自动复制到维护屏幕,反之亦然。–跟所有允许文本输出的其他节点一样,可以为窗口定义边框和阴影。–使用字段“纵向空白”和“横向空白”来定义文本与边框之间的距离。这里需要设置合适的值,通常,如果为边框使用细线,框线有可能会部分覆盖掉文字。SAP表单制作器的区域窗口:输出选项(续)–如果选择了“总是回执边框和阴影”复选框,窗口即使没有设置相关内容也会以这种格式输出。–可以使用下列测量单位:CM、MM、IN(英寸,大约2.54厘米)、PT(点,1/72英寸)、TW(缇,1/20点)。对于指定的纵向长度,还可以使用LN,对于横向宽度,可以使用CH。在表单属性中定义这些单位。SAP表单制作器的区域窗口属性(续)–对于多数节点类型,你可以用窗口使用条件来确定它们被处理的时机。一方面,你可以从一些处理事件中选择(例如“不在第一页”或“只在第一页”);另一方面,你可以使用特殊值来控制流程。例如,你可能希望文本A只为特定客户打印,而文本B为所有客户打印。关于更多细节,请参考第七单元-流程控制。如果为某个窗口设置的条件不满足,窗口和所有子节点都不会被处理(同理,如果条件满足就都处理)。–如果在不同页使用相同窗口节点,每个节点都可以有它自己的“输出选项”和“条件”选项卡。文本–使用文本节点在表单中输出所有文本(地址节点是个例外)。文本节点应该是窗口的子节点,或者是表格或者模板等子节点的子节点。–可以为现存的文本节点使用上下文菜单(鼠标右键)。上下文菜单允许你,例如,直接在一个文本节点之后直接创建另一个文本节点。还可以使用上级节点的上下文菜单来创建文本节点。这时,新的文本节点会做为那个节点的第一个子节点。–通过菜单“编辑-节点”也可以有相同的功能。–文本节点本身不能有子节点。–注意:不适合子窗口内部的文本会被丢弃。只有在主窗口中,剩余的文本才会在下页继续处理。返回图片––不仅可以把嵌入图片做为背景图片,还能做为独立的图片窗口(就是页的直接子节点)或做为窗口的子节点。这需要图片已经存在于系统中。–可以使用导航树的上下文菜单或者菜单的“编辑-节点-创建”来象创建其他节点一样创建图片节点。图片特性–可以使用导航树的上下文菜单或者菜单的“编辑-节点-创建”来象创建其他节点一样创建图片节点。–如果把图片做为现存节点的子节点创建(例如,窗口或模板),就不会显示在表单绘制器中。不能使用拖放放置图片。图片的输出依赖于上级节点。表单中的数据–在表单中经常需要字段(可变数据),比如输入今天的日期、把数据库表的值放进表单或者为节点处理顺序定义条件。–在SAPSmartForms中有下列类型的数据:1、称为参数的接口数据。它们通过应用程序传入表单或传出。2、表单的所有节点都能获得的全局数据。3、象页号或者当前时间这样的系统字段。(看第四单元-文本、地址和图片的“系统字段”页)4、使用ABAP语句在当前节点的程序行中创建的本地数据。(这种数据类型不会在本课程中处理,因为它需要与表单无关的ABAP知识。)返回表格和模板–本单元会介绍两个其他的节点类型:表格和模板。表格和模板有一些相同之处,例如,它们都用表格绘制器来设计,并且都使用不同的行类型。–它们的布局中最重要的不同之处在于:•表格的确切布局和长度只能在运行时确定,根据应用程序从数据库读取的记录数量和类型。•模板布局则完全在表单绘制器中定义。这意味着它们的单元格的类型和数量不能被应用程序在运行时修改。主要在预打印表单中使用模板,例如支票或税单,就是国内习惯说的套打。返回流程控制SAPSmartForms提供的其他流程控制选项:•节点的输出条件•二选一:二选一是控制两个节点的条件。如果条件满足就处理其中一个节点,不满足就处理另一个。•程序行允许把ABAP语句集成到表单中,而不需要调整应用程序。•命令节点的一个例子是动态换行。•循环的子节点会执行多次。•文件夹可以把节点分组。返回集成到应用程序•从数据库获取数据•调用函数模块SSF_FUNCTION_MODULE_NAME获取表单对应函数名。•以获取的函数名进行调用,输出表单。返回Smartstyles•样式制作器。•创建段落和字符格式。•在文本中使用格式:字符格式有两个选项卡:“