SAP自学笔记系列Page1of16SAP新建打印格式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-SpoolAdministration”),假脱机管理。也就是管理跟打印相关的基础设置。界面如下:为了设置打印格式,我们需要点击“完全管理”按钮。Page2of16SAP自学笔记系列设置列表的打印格式可以看到,“完全管理”比“简单管理”多出了三个选项卡,分别是“设备类型”、“字符集”和“管理员”。顺便说一句,“扩展管理”仅比“简单管理”多一个“管理员”选项卡,而比“完全管理”少了“设备类型”和“字符集”。对于每个选项卡中的功能,这里就不一一说明了,因为我还没全部研究过。接下来点击“设备类型”选项卡,出现如下界面:32在“设备类型”选项卡种,有“设备类型”、“打印控制”、“格式类型”、“页格式”、“封面文本”等几个按钮,分别进行相应类别信息的管理。它们的管理顺序基本上是越下面越接近物理层,越上面越接近逻辑层。具体来说:“页格式”SAP自学笔记系列设置列表的打印格式Page3of16对应于最基本的纸张大小和方向,如A4、B5、信封、连续纸等等;“格式类型”对应纸张中显示多少行多少列文本或用于哪种形式的打印(是列表、SAPscript或其他);“打印控制”用于定义控制打印的基本命令,如每英寸多少行多少列、换行换页等等命令;“设备类型”用于定义SAP系统中所能控制的打印机,以及对每个具体打印机所使用的格式类型、打印控制命令等。“封面文本”我没有用到过,不知道具体在什么情况下使用。顺便说一下应用工具栏的“显示”和“更改”按钮,它是一个双态互相转换的按钮。当屏幕显示“更改”按钮时,系统处于显示状态,这时选择任何功能都会进出它的查看状态,不显示相关的修改按钮;而屏幕显示“显示”按钮时,系统处于更改状态,这时选择功能就会进入其更改状态。下面我们根据需要依次定义格式类型和设备类型。二、格式类型管理点击“格式类型”按钮,进入格式类型清单(也可以在它后面的文本框里输入某个格式类型,直接进入该格式类型的管理界面),列出所有的格式类型,如下图:SAP自学笔记系列设置列表的打印格式Page4of16这里我们可以选择某行双击(或者单击选中行,再点上面的“选择”按钮),进入该格式类型的明细界面。如果要创建新的格式类型或修改现有格式,需要先点击“更改”按钮,这时工具栏会扩充成下面的样子。可以看到,这时比最初多了三个按钮,分别是“删除”、“创建”和“使用模版创建”。删除和创建就不用说了,“使用模版创建”这个功能实际就相当于复制,首先要选中某个格式类型行,然后按“使用模版创建”按钮,就会把该格式类型的信息都带到创建页,只是需要用户输入一个新的名字。我们还是从头开始创建,点“创建”按钮,出现如下屏幕:首先需要输入格式类型的名称,我现在要创建一个72行100列的格式,所以命名为“Z_72_100”,然后选择格式类型,默认是“SAPscript的格式类型”,我们为List创建格式,不能选它,要选择“ABAP列表的格式类型”,如下图:SAP自学笔记系列设置列表的打印格式Page5of16选中“ABAP列表的格式类型”后,会自动在下面出现行数和列数的输入框,而纸张的方向则隐藏了起来,因为对于ABAP列表的格式类型,纸张方向是自动选择的。选择后的屏幕如下:页格式这里就选择“ANY”,不需要指定页格式(其实是有一个假定的,只能打印到A4纸上,这个在后面输出设备的设置里会说明)。行数填“72”,列数填“100”(这里的100是英文字符数,如果显示中文字符的话,只能显示50个,这点要尤其注意),根据SAP联机帮助的说明,如果使用下列几种打印机类型的话(HPLJ4000,KYOFS170,andPOST2),就选中“列出驱动器”,否则就不选,不过我看SAP自带的格式中也都选中了这个选项,我们这里也选择它。最后填写注释,也就是对这个格式类型的详细说明。SAP自学笔记系列设置列表的打印格式Page6of16如果在前面选中了“列出驱动器”并且回车或保存,菜单栏按钮中就会出现“列出驱动程序属性”按钮,选择这个按钮,就打开下面的对话框:其中的“方向”就是纸张方向,“形式”是翻译不合理,实际就是纵向,另一个选项是“横放”。而“列表边距模式”是让你可以选择打印范围,如果选择默认的“MAXIMUM:使用最大可打印面”的话,就使用打印机能够打印的最大幅面,如果选择“CUSTOM:注释列表边距”则会出现四边边距的输入框,可以在里面输入页边距。按下面的“定义页边距”按钮,也可以在上述两种边距模式间切换。选择完成后,按“继续”按钮返回上一屏幕。然后按标准工具栏的“保存”按钮就可以保存这个格式类型了,创建新的格式类型时需要指定开发类,如果需要传输给其他系统,还要指定传输请求。这样,一个新的格式类型就创建好了,下面我们需要把这个格式类型指定给打印设备,并做一些相关设置。三、设备类型管理点击“设备类型”按钮,进入设备类型清单(也可以在它后面的文本框里输入某个设备类型,直接进入该设备类型的管理界面),列出所有的设备类型,如下图:SAP自学笔记系列设置列表的打印格式Page7of16大多数情况下,我们都会使用“CNSAPWIN”这种设备类型,它是SAP专为汉字打印所定义的一种打印设备类型,通过SAPgui提供的SAPLPD(SAPPrintDaemon)打印代理软件把内容打印到本地打印机上。用它可以最大程度的保证显示格式的一致性,无论用户本地使用何种打印机,打印出来的效果都一样。双击“CNSAPWIN”行(或选中改行后按“选择”按钮),就进入该打印类型的详细维护界面,如下图:SAP自学笔记系列设置列表的打印格式Page8of16这个屏幕的基本设置都是SAP预设好的,不需要改变。我们接下来点“格式”按钮,来查看这个设备类型中包含的格式类型。接下来,按“创建”按钮,系统要求输入新的格式类型名称:输入我们刚才创建的格式类型“Z_72_100”,然后按“执行”按钮,进入维护格式代码窗口,如下图:SAP自学笔记系列设置列表的打印格式Page9of16可以看到系统列出了各种操作,前面的状态是灰色的“”,表示该操作中没有控制代码,而如果状态变成绿色的“”,就说明该操作中已经编写了控制代码。所谓控制代码,就是SAP系统在调用这个打印格式类型时需要执行的一些控制打印行为的代码,后面我们还会详细分析。编写控制代码有两种方式,一种是双击某个操作,进入它的编写界面,手工输入代码,很明显,这种方法需要对控制代码非常熟悉才行;第二种就简单了,SAP提供了复制的功能,可以直接把另一个格式类型中现有的代码复制过来。我们先采用第二种方法。在应用工具栏上有两个按钮“拷贝格式”和“拷贝动作”,按下后都会出现下图的屏幕。区别是,拷贝格式是把另一个格式类型的所有信息(除了名称)都复制过来;而拷贝动作(动作和操作在这里是一样的,只是对Actions这个单词的翻译不同)则需要先选择某个操作,系统只把源格式类型的那个操作SAP自学笔记系列设置列表的打印格式Page10of16中的代码复制过来,而其他信息都不变。我们在这里从简,只用“拷贝格式”就行了。在这个复制窗口中,还有两个按钮,分别是“复制参考”和“创建内容”,它们用在复制操作上。复制参考是直接把源格式类型的操作代码原样复制到当前格式类型的操作代码中,而创建内容则是在当前格式类型的操作代码中包含对源格式类型的操作代码的引用(例如:\iCNSAPWIN:X_90_120:LEAVE,\i表示引用,...表示引用的源,CNSAPWIN是指源设备类型,X_90_120是指源格式类型,LEAVE是指源操作)。使用引用就会在源操作和目标操作之间建立一个关联关系,所有对源操作做的代码修改都会应用到目标操作中,当你确定几个格式类型必须保持操作完全一致时,就用这种方式。而如果需要两个格式类型互相独立的话,则应该用复制参考的形式创建代码。下面说明一些常用的控制代码的意义,注意,控制命令区分大小写。1、在打印初始化中(操作名称SETUP)#CNSAPWINX_72_100##是注释的开始,这个是页头说明#SAPWINindicatiormakesitpossibletosendviaberkeleyprotocol#这个也不知道具体意义,从英文说明上来看,\e是控制字符,%SAPWIN%是一个特定标识。\e%SAPWIN%#changeWinCharSetto134#修改字符集为GB2312,没有找到在哪里设置,W表示设置字符集\eW134;#setfontname(SimSun)#设置字体名称,这个简单,SimSun就是宋体,大概SimHei就是黑体了,不过我没找到去哪里设置,F表示设置字体\eFSimSun;SAP自学笔记系列设置列表的打印格式Page11of16#setorientation(PORTRAIT)#设置打印方向(P是纵向,L是横向),P表示设置打印方向\ePP#setfontsize(10.0points)#设置字体大小,我感觉数字就是字号乘以20的值,比如10pt的字就写200,12pt的字就写240。S表示设置字体大小\eS200X#setverticalspacing(7.3LPI)#设置纵向行距,单位是行每英寸。L表示设置纵向行距\el7.3;#sethorizontalspacing(15.0CPI)#设置横向字距,单位是字每英寸。C表示设置横向字距\ec15.0;#settop/leftmargin(1.0cm/1.5cm)#设置上、左页边距,M表示设置边距,T表示上端、L表示左端,不知道有没有R表示右端、B表示下端。\eMT567;\eML850;2、在退出以后重置(操作名称LEAVE)#CNSAPWINX_90_120#Nocontrolcodes!#这里没有写代码3、页结束(操作名称ENDPAGE)#\f表示换新页(Formfeed)\f4、行的结束(操作名称ENDLINE)#\n表示换行(Linefeed)#\r表示回车(Carriagereturn)#\s表示空格(Spacecharacter(whenrequiredattheendofaline))\n由于没有找到相关说明文档,也不知道\e这个标记之后能够有多少控制命令,不过上面列出的那些都是最常用的,多数情况下也够用了。在上面的控制语句中,\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纸的大小。通过上面的计SAP自学笔记系列设置列表的打印格式Page12of16算,大家应该明白前面第5页倒数第6行我提到过的那个假定了,其实系统为列表打印提供的标准格式类型也都遵循这个假定。除了以“\”开头的常规控制语句外,代码编辑器里面还可以直接输入文本信息,引用一些程序中的变量(疑似,参见SAP标准的格式类型“X_SPOOLERR”中“封面”操作代码的文本,用$(TITLE)等显示一些估计是从程序里带出来的数据,但是我在自己创建的格式类型里这样写,没有成功)。上面提到的操作名称如SETUP、LEAVE、EN