SAP 自学笔记系列SAP 新建打印格式SAP 默认为列表打印提供了X_65_132、X_65_255、X_58_170、X_65_80、X_90_120 等多种打印格式,其中前三种是A4 纸横向打印,而后两种是纵向打印。
我们一般使用纵向打印比较多,但是我们也发现X_65_80 用的是四号字(12pt),有时候觉得有点大,而X_90_120 用的是六号字(大约是8pt),又太小了,怎么没有一个折中的字体格式呢?SAP 不提供,我们只好自己来建了。
一、SPAD,假脱机管理首先,输入事务码SPAD(ECC5 的菜单路径是“工具-CCMS-Print-Spool Administration”),假脱机管理。
也就是管理跟打印相关的基础设置。
界面如下:为了设置打印格式,我们需要点击“完全管理”按钮。
可以看到,“完全管理”比“简单管理”多出了三个选项卡,分别是“设备类型”、“字符集”和“管理员”。
顺便说一句,“扩展管理”仅比“简单管理”多一个“管理员”选项卡,而比“完全管理”少了“设备类型”和“字符集”。
对于每个选项卡中的功能,这里就不一一说明了,因为我还没全部研究过。
接下来点击“设备类型”选项卡,出现如下界面:32在“设备类型”选项卡种,有“设备类型”、“打印控制”、“格式类型”、“页格式”、“封面文本”等几个按钮,分别进行相应类别信息的管理。
它们的管理顺序基本上是越下面越接近物理层,越上面越接近逻辑层。
具体来说:“页格式”对应于最基本的纸张大小和方向,如A4、B5、信封、连续纸等等;“格式类型”对应纸张中显示多少行多少列文本或用于哪种形式的打印(是列表、SAPscript 或其他);“打印控制”用于定义控制打印的基本命令,如每英寸多少行多少列、换行换页等等命令;“设备类型”用于定义SAP 系统中所能控制的打印机,以及对每个具体打印机所使用的格式类型、打印控制命令等。
“封面文本”我没有用到过,不知道具体在什么情况下使用。
顺便说一下应用工具栏的“显示”和“更改”按钮,它是一个双态互相转换的按钮。
当屏幕显示“更改”按钮时,系统处于显示状态,这时选择任何功能都会进出它的查看状态,不显示相关的修改按钮;而屏幕显示“显示”按钮时,系统处于更改状态,这时选择功能就会进入其更改状态。
下面我们根据需要依次定义格式类型和设备类型。
二、格式类型管理点击“格式类型”按钮,进入格式类型清单(也可以在它后面的文本框里输入某个格式类型,直接进入该格式类型的管理界面),列出所有的格式类型,如下图:这里我们可以选择某行双击(或者单击选中行,再点上面的“选择”按钮),进入该格式类型的明细界面。
如果要创建新的格式类型或修改现有格式,需要先点击“更改”按钮,这时工具栏会扩充成下面的样子。
可以看到,这时比最初多了三个按钮,分别是“删除”、“创建”和“使用模版创建”。
删除和创建就不用说了,“使用模版创建”这个功能实际就相当于复制,首先要选中某个格式类型行,然后按“使用模版创建”按钮,就会把该格式类型的信息都带到创建页,只是需要用户输入一个新的名字。
我们还是从头开始创建,点“创建”按钮,出现如下屏幕:Array首先需要输入格式类型的名称,我现在要创建一个72 行100 列的格式,所以命名为“Z_72_100”,然后选择格式类型,默认是“SAPscript 的格式类型”,我们为List 创建格式,不能选它,要选择“ABAP 列表的格式类型”,如下图:选中“ABAP 列表的格式类型”后,会自动在下面出现行数和列数的输入框,而纸张的方向则隐藏了起来,因为对于ABAP 列表的格式类型,纸张方向是自动选择的。
选择后的屏幕如下:页格式这里就选择“ANY”,不需要指定页格式(其实是有一个假定的,只能打印到A4 纸上,这个在后面输出设备的设置里会说明)。
行数填“72”,列数填“100”(这里的100 是英文字符数,如果显示中文字符的话,只能显示50 个,这点要尤其注意),根据SAP 联机帮助的说明,如果使用下列几种打印机类型的话(HPLJ4000, KYOFS170, and POST2),就选中“列出驱动器”,否则就不选,不过我看SAP 自带的格式中也都选中了这个选项,我们这里也选择它。
最后填写注释,也就是对这个格式类型的详细说明。
如果在前面选中了“列出驱动器”并且回车或保存,菜单栏按钮中就会出现“列出驱动程序属性”按钮,选择这个按钮,就打开下面的对话框:其中的“方向”就是纸张方向,“形式”是翻译不合理,实际就是纵向,另一个选项是“横放”。
而“列表边距模式”是让你可以选择打印范围,如果选择默认的“MAXIMUM:使用最大可打印面”的话,就使用打印机能够打印的最大幅面,如果选择“CUSTOM:注释列表边距”则会出现四边边距的输入框,可以在里面输入页边距。
按下面的“定义页边距”按钮,也可以在上述两种边距模式间切换。
选择完成后,按“继续”按钮返回上一屏幕。
然后按标准工具栏的“保存”按钮就可以保存这个格式类型了,创建新的格式类型时需要指定开发类,如果需要传输给其他系统,还要指定传输请求。
这样,一个新的格式类型就创建好了,下面我们需要把这个格式类型指定给打印设备,并做一些相关设置。
三、设备类型管理点击“设备类型”按钮,进入设备类型清单(也可以在它后面的文本框里输入某个设备类型,直接进入该设备类型的管理界面),列出所有的设备类型,如下图:大多数情况下,我们都会使用“CNSAPWIN”这种设备类型,它是SAP 专为汉字打印所定义的一种打印设备类型,通过SAPgui 提供的SAPLPD(SAP Print Daemon)打印代理软件把内容打印到本地打印机上。
用它可以最大程度的保证显示格式的一致性,无论用户本地使用何种打印机,打印出来的效果都一样。
双击“CNSAPWIN”行(或选中改行后按“选择”按钮),就进入该打印类型的详细维护界面,如下图:这个屏幕的基本设置都是SAP 预设好的,不需要改变。
我们接下来点“格式”按钮,来查看这个设备类型中包含的格式类型。
接下来,按“创建”按钮,系统要求输入新的格式类型名称:输入我们刚才创建的格式类型“Z_72_100”,然后按“执行”按钮,进入维护格式代码窗口,如下图:可以看到系统列出了各种操作,前面的状态是灰色的“”,表示该操作中没有控制代码,而如果状态变成绿色的“”,就说明该操作中已经编写了控制代码。
所谓控制代码,就是SAP 系统在调用这个打印格式类型时需要执行的一些控制打印行为的代码,后面我们还会详细分析。
编写控制代码有两种方式,一种是双击某个操作,进入它的编写界面,手工输入代码,很明显,这种方法需要对控制代码非常熟悉才行;第二种就简单了,SAP 提供了复制的功能,可以直接把另一个格式类型中现有的代码复制过来。
我们先采用第二种方法。
后都会出现下图的屏幕。
区别是,拷贝格式是把另一个格式类型的所有信息(除了名称)都复制过来;而拷贝动作(动作和操作在这里是一样的,只是对Actions这个单词的翻译不同)则需要先选择某个操作,系统只把源格式类型的那个操作中的代码复制过来,而其他信息都不变。
我们在这里从简,只用“拷贝格式”就行了。
在这个复制窗口中,还有两个按钮,分别是“复制参考”和“创建内容”,它们用在复制操作上。
复制参考是直接把源格式类型的操作代码原样复制到当前格式类型的操作代码中,而创建内容则是在当前格式类型的操作代码中包含对源格式类型的操作代码的引用(例如:\i<CNSAPWIN:X_90_120:LEAVE>,\i 表示引用,<...>表示引用的源,CNSAPWIN 是指源设备类型,X_90_120 是指源格式类型,LEAVE 是指源操作)。
使用引用就会在源操作和目标操作之间建立一个关联关系,所有对源操作做的代码修改都会应用到目标操作中,当你确定几个格式类型必须保持操作完全一致时,就用这种方式。
而如果需要两个格式类型互相独立的话,则应该用复制参考的形式创建代码。
下面说明一些常用的控制代码的意义,注意,控制命令区分大小写。
1、在打印初始化中(操作名称SETUP)令,不过上面列出的那些都是最常用的,多数情况下也够用了。
在上面的控制语句中,\el 和\ec 是比较重要而且最难设置的两个,由它们配合行列数就决定了实际能够打印的最大宽度,比如上面的\el 设置值为7.3LPI,而我们这个格式的行数是72,72/7.3=9.863 英寸,约合25 厘米;上面的\ec 设置值为15CPI,而我们的格式的字符数是100,100/15=6.667 英寸,约合16.93 厘米。
我们知道一张A4 纸的大小是长29.7 厘米、宽21 厘米,去除页边距和打印机无法打印到的一些边距,上面的设置正好符合A4 纸的大小。
通过上面的计算,大家应该明白前面第5 页倒数第6 行我提到过的那个假定了,其实系统为列表打印提供的标准格式类型也都遵循这个假定。
除了以“\”开头的常规控制语句外,代码编辑器里面还可以直接输入文本信息,引用一些程序中的变量(疑似,参见SAP 标准的格式类型“X_SPOOLERR”中“封面”操作代码的文本,用$(TITLE)等显示一些估计是从程序里带出来的数据,但是我在自己创建的格式类型里这样写,没有成功)。
上面提到的操作名称如SETUP、LEA VE、ENDPAGE、ENDLINE 等可以在选中某个操作行后,按应用工具栏的“说明”按钮来查看,如下图:在编写了格式类型的控制代码并全部保存之后,我们的格式类型就算全部设计完成,接下来就可以在报表程序里面调用它进行打印了。
四、打印格式的使用首先需要说明的是,如果要使用上面的格式类型,在报表程序里就应该明确定义出列表的行数和列数,而且最好跟所要使用的格式类型完全一致,这样便于系统在打印时自动选择合适的打印格式。
下面说说打印设置,在一个列表界面,按系统工具栏上的打印按钮,就会打开标准打印屏幕,如下图:如果输出设备为空或者不是 localPrint 的话,就应该改成 localPrint ,一般来 说,都会把 localPrint 配置成使用 CNSAPWIN 这种设备类型,如果不是的话, 请在第一部分提到的 SPAD 事务码中,选择“设备/服务器”选项卡的“输出设 备”按钮来调整设置,设置方法比较简单,这里就不再多说了。
然后点击“属性”按钮,打开打印机属性设置屏幕,如下图:从这里可以看出当前所有的打印设置,其中的格式化就是系统自动匹配获得的格式类型。
如果格式化栏不是我们前面创建的 Z_72_100 这种格式,就要修改 它,双击格式化行,该屏幕下方变成如下的样子:然后利用格式化栏的F4 搜索帮助,打开下面的可用打印格式类型窗口。
其中标注绿色状态灯的,是能够完全打印当前列表的格式;而标注黄色状态灯的,则无法完全打印当前列表,也就是说打印出来可能会丢失行或列。