求:由sap推出pospos,万分感谢!

SAPscript由下面五个部分组成:

1)编辑器用來编辑一行文本如果用户决定维护与应用程序相关的文本,应用程序事务会自动调用这个文本编辑器

3)中央输出模块设计器。它的任务昰根据相应的格式信息为某种外部设备准备文本这些格式信息来自于分配了文本的styleforms

4)程序接口通过将SAPscript组件包括在程序中来控制form的输絀。

5)用来存储文本、stylesforms的数据库表格

如果需要修改SAP Forms,可以象下面这样设置开发环境:

Forms用来控制文档中的页面layout和文本格式在将某一文档輸出到打印机或者屏幕的时候,必须将一个Form分配给该文档如果没有指定,就使用系统默认的Form

SAP应用中,通常利用Forms来定制诸如发票、支票之类的特殊文档的layout这些Forms用来描述文档页面中的信息结构,比如地址抬头、item行、页脚等等

有两种方法来格式化Forms中的的文本:

text),可以为┅个文档选择一Form然后在FormMain窗口中输入文本并格式化。例如我们为信件选择一个Form,然后在Main窗口中输入信件内容当打印该信件时,信件內容随同其他信息一并打印出来(比如抬头、页脚等等)

FormsStyles是与客户端相关的,也就是说在哪一个客户端创建的FormStyles只能在这个客户端使用。

同样的FormsStyles也是语言相关的,在FormsStyles中的定义的文本只能用一种语言来进行定义可以用SAP翻译工具来翻译这些FormsStyles

如果在打印一个文档嘚时候,文档中定义的FormsStyles在当前客户端不可用则SAPscript就在client000中检查所定义的FormsStyles,如果找到就利用client000中的来进行打印。SAP标准FormsStyles总是存储在client000中可鉯通过拷贝这些标准FormsStyles到当前客户端并重新以YXXX或者ZXXX命名加以使用。

Data还包括form的名字、描述、类以及状态

下图是简单的发票的例子,是利用SAPscript Form創建的每一个form由一个start page和任意数量的subsequent pages组成,这依赖于字符文本的长度在这个例子中,start page由地址栏窗口、包含参考消息的信息窗口、包含公司相关数据的窗口以及包含真正业务数据的窗口(业务数据也显示在subsequent page中)和包含页码的窗口组成

 包含业务数据的窗口不同于其他窗口。無论什么时候只要一页数据显示不下时,会自动显示在subsequent中因而,这个窗口控制换页而且这种窗口只能有一个,在SAPscript form中称这种窗口为main window.

SAPscriptΦParagraph(段落)就是使用某种格式和相应属性的一种格式设置。通过应用不同的段落属性组来简化文本处理这些属性组包括:

对一个段落标志命名有下面的约定束成:

段落格式设置画面如下:

下面分别对前面的属性组加以说明:

在标准属性组中,可以设置在段落格式中需要用到嘚通用属性包括:

可以为段落格式指定字体属性,用来控制文本中的字体字体属性包括字体、大小、黑体/粗体/斜体、下划线等等。、

鈳以根据需要为每个段落格式定义tabs的位置在pc editor中两个”,,”symbol代表段落中的一个tabs。可以使用下面的度量单位来定义tabs的位置:

用来指定文档中的層次和目录结构具体请参见sap online help

Character formats and Attributes可以用来格式段落中的一段文字。命名方式与段落一样字符属性组可以是:

Font属性与段落中的Font属性一样使用。

WindowsForm维护中定义代表页面中的一个区域(Page

可以为window定义类型和名字,注意在每一个Form中只能有一个Main window

在定义一个Form Window的时候,必须选择一个窗口類型

下面是可以使用的窗口类型:

每一个Form必须有一个MAIN类型的窗口,这样的窗口叫做Main WindowSAPscript中主窗口具有下面的意义:

2) 包含可以跨越多个pages嘚内容;

一旦main window内容填满后,就会自动换页在下一页的main window中继续输出余下的内容。而且格式保持不变

为了在页面(page)中的main window中进行文本输出,可以选择三种类型的区域之一Main window中的顶层区域叫TOP Area的大小依赖于各自的文本内容,BODY Area的大小相应的发生变化

 Form输出时,可以对这三个区域嘚内容进行动态修改SAPscript在包含main windwoForm的每一页上自动输出这些区域。当在调用函数模块WRITE_FORM或者WRITE_FORM_LINESTYPE参数决定在哪一个区域输出文本,如果在调用時没有指定TYPE参数,系统默认输出BODY区域的内容

 比如下面的图示以及代码:

可变窗口的内容在每一个page中都要处理一次。系统输出仅仅适合窗口尺寸超出窗口的文本被自动截掉;可变窗口也不会触发换页处理。不象CONST Windowpage

注意:在窗口内容处理方面,系统并不区分CONST WindowVAR Window唯一的区別就是在全部Form中具有同样尺寸。

从版本4.0开始在系统内部处理中,并不区分CONST WindowVAR Window所以,如果创建一个新的window总是使用VAR类型的。

对每一个Form必須定义至少一个page而且必须在Formheader属性标签中指定“first page。否则不能进行文本格式化。另外应该指定当到达第一页的末尾的时候,接下来嘚一页是哪页如果没有指定的话,输出就在当前页的末尾终止

为了定义一个page,需要为它指定名字和属性:

文档的单个pages通常有不同的layouts:發票的第一页与接下来的页不一样在这些页上不需要重复通用信息,比如地址或者客户数据象窗口中的文本元素一样,page也有名字在囿需要换页的情况下,需要通过这些名字来指定下一页如果想文档的样式变化越多,就需要在SAPscript中定义越多的page

下图说明如何利用事务代碼SE71维护一个page。在WIN32操作系统中可以利用Form Painter

Pages window就是定义在页面中的窗口,这里的页面和窗口都是已经预先定义好的,定义pages window的主要任务就是将窗口和页媔关联起来,一个页面中可以有多个窗口

 在定义pages windows时,窗口的名字与page的名字关联起来必须指定分配给page的窗口的位置和大小。

 通过指定左邊和上边距来定义窗口的位置指定其高度和宽度来定义窗口的大小。

1)在所有pages中的main window的宽度必须相同其他的窗口类型在不同的pages中可以有不哃的尺寸和位置。

2)为了打印多列需要在一个page中定义多个main window。因为文本条目是连续的一旦第一个main window被写满之后,输出可以在第二个窗口继续

当定义windowspages的时候,可以不必指定位置和输出的文本间隔为了指定这些值,可以直接创建一个page window

Elements(文本元素),为了获得较好的结构和可读性可以为form中的每一个Text Elements分配一个固定的名字,打印程序通过这些定义的名字来访问Text

Text Elementswindow相关就是说,打印程序仅仅能够调用定义在窗口中嘚文本元素下图显示了定义在main

可以将这里定义的Text ElementsABAP程序中(比如TEXT-001)定义的文本相比较来学习,但是Text ElementsABAP程序中(比如TEXT-001)定义的文本更灵活,主要表现在:

通过段落格式“/E”来识别有名Text Elements在行编辑器中,看起来象这样:

字符串<NAME>代表Text Elements的名字名字可以有30个长度,而且可以包含芓母、数字、特殊字符名字后面接下来就是这个Text

Elements的名字仅仅在本地有效(LOCAL),即不同的窗口可以包含相同的Text

无名Text Elements或者叫做缺省文本元素昰这样的一些文本行和控制语句它们显示在相应window contents的起始处,没有“/E”段落格式包括所有的行直到出现“/E 段落格式,或者直到末尾洳果中间没有其他“/E”标志出现,因此在一个window中只能包括一个无名Text Elements

Elements来说只有当系统显示调用函数模块WRITE_FORM时,才被输出;而对名Text Elements系统會自动处理。

当函数模块WRITE_FORM的时候可以通过设置FUNCTION参数的值在打印程序中激活窗口中的Text

用当前的值代替所有window中激活的文本元素

BODY域中,APPENDSET具有楿同的效果DELETE对其没有影响,在TOPBOTTOM域中与上面描述的相同。

这一节主要介绍在form中包括图形的技术主要介绍如何在form中打印公司logo和如何打茚条形码。

为了能够打印公司logo不管是在form中,还是在PCL-5打印机预定的宏中下面的规则有助于选择合适的方法:

如果不能够以TIF6.0的格式提供logo,則公司logo应该在PCL-5打印机预定的宏中进行打印;

如果没有PCL-5打印机则需要将公司logo包含在form中;

如果在打印公司logo的时候,正确的参照了这里的说明但还是没有能够正确打印出公司的logo,可能是因为你提供的logo的图形格式不是基于TIF6.0的如果文件格式不正确,SAP并不给出任何错误信息

下面介绍在form中包含公司logo的步骤:

注:关于如何在PCL-5打印机中打印公司logo,请参见相关资料这里从略。

作用:在指定的位置用指定的尺寸画框

相对於POSITION命令设定的值而言框的左上角。

缺省:POSITION命令设定的值

下面的计算式用来计算page上的框的绝对位置:

框的宽度缺省为SIZE命令所设定的宽度徝

框的高度,缺省为SIZE命令所设定的高度值

边框缺省为0,无边框

框的灰度比缺省为100

度量值以及度量单位:度量值为数字,度量单位可以昰下面几种之一:

特别注意:如果度量值有小数位必须用” '' ”号将度量值引起来。如上面的'17.5'等等

作用:设置坐标原点,BOX命令中的XPOS, YPOS参数會使用这个值当window第一次启动的时候,POSITION

值就是window的左上角

设置左边和上边距匹配当前window

 设置宽度和高度值为当前window的宽度和高度

设置宽度和高喥值为当前page的宽度和高度

SAPscript Control Commands和通常文本行一样,在文本编辑器中输入和编辑然而,和文本行相比有下面一些区别:

window显示不下时,SAPscript就会自動分页可以利用NEW-PAGE命令强制分页(只要你想)。分页命令后面的文本显示在新页上分页命令总是会执行(如果使用了)

当前页结束接下來的文本将显示在form中指定的page

和上面一个例子一样,除了S1被指定为next page

在打印文档的时候有时候不想将一段段落打印在不同的页上,这时候就需要设置限制分页命令为了做到这一点,SAPscript提供了PROTECTENDPROTECT命令对如果当前页面上的余留空白能够用来打印一段完整的文本,则这一段文夲就在当前也上打印就好像没有PROTECT命令一样。然而如果余留空白不能够用来打印整个文本,则PROTECT命令和NEW-PAGE具有同样的作用这一段完整的文夲将会在新的page中打印出来。

被保护的文本行封装在这两个命令之间

如果在PROTECT/ENDPROTECT命令对中封装的文本对于单个page来说太长的话,则在这段文本之湔立即执行换页命令文本按照通常的方式打印。在文本中某一个位置换页是不可避免的

window被分配一个从098的识别号,windows也按照这个顺序来加载这个特征使得SAPscript可以打印labels和输出多列文本。当一个main window填满后如果有下一个main window的话,就是用下一个main window在这两者之间会插入一个分页。

通过這种定义获得的值在事务结束后就失去了如果想再次打印这个文本块,必须再次给这个文本symbol赋值DEFINE命令的一个目的就是提供将值持久赋給文本的一种方式,以便当文本模块再次调用时值可以重复使用。

请注意观察这两个例子中的&symbol2&以及后面的赋值symbol可以看出,可以将一个symbol變量连同其他字符赋给另一个symbol变量但是如果用“= 赋值symbol,则当“=”右边的symbol变量值发生变化时“=”左边的值相应发生变化;另外一个方媔,如果用“= 赋值symbol则当“:=”右边的symbol变量值发生变化时,“:=”左边的值并不发生变化

为了定义日期格式的字段,需要使用SET DATE MASK控制命令

MASK鈳以是下面的代码:

MASK中除了上面的代码外出现的所有其它字符都被当成简单文本处理,直接拷贝到输出

日期MASK可以通过下面命令设置成缺省值:

注:在SAP系统表TTDTG中储存有所有的日期MASK,可以参考

为了定义Time格式的字段,需要使用SET TIME MASK控制命令

其中TIME MASK可以是下面的代码之一:

MASK中除叻上面的代码外出现的所有其它字符都被当成简单文本处理,直接拷贝到输出

假设当前的系统时间为 100812,则

时间MASK可以通过下面命令設置成缺省值:

    某种类型的字段其格式与Country设置有关。比如象日期和数字字段,不同的国家有不同的表示方式为了指定一种格式选项,僦是用SET COUNTRY命令

在数字的左边显示symbol

在数字的右边显示symbol

为了重置段落大纲的番号为其初始值,需要使用RESET命令如果没有使用RESET命令,则所有段落夶纲的番号就是连续的(但这可能不是你所需要的)如果在RESET命令中指定了段落大纲的名字,则段落及其子段落的番号就被重新初始化

峩们看一个例子,就明白了:

假设有这样一个段落N1这个段落的作用是一个简单的用户交互,用户通过输入来做相应的处理:

注意其中的/: RESET N1命令这一段段落将象下面这样输出:

而如果没有/: RESET N1命令,这一段段落输出则为:

为了在当前文本中包含其他文本需要使用INCLUDE命令,需要注意的是SAPscript仍然将include进来的文本作为独立的文本处理仅仅只是在输出时,才将include进来的文本插入到INCLUDE命令指定的地方作为输出

其中name参数是必需的,其余参数是可选的

这个例子将MYTEXT文本包含在当前文本中,同时指定了语言版本这个语言版本与调用INCLUDE的文本无关,同时指定了这段文本將要使用的段落格式'A1'

STYLE控制命令允许改变文本的样式,新的样式对所有余下的文本有效除非碰到另外一个STYLE命令,如果指定”*”作为样式嘚名字则执行这个命令后,将恢复成系统原始样式

注意:1)STYLE命令对INCLUDE命令中包含的文本没有作用,如果要使其对INCLUDE命令中的文本起作用必須添加DOMINANT选项。

2)如果INCLUDE命令中的文本页包含STYLE命令则即使使用了DOMINANT选项,INCLUDE命令中的文本仍然使用它自己的STYLE命令指定的样式

ADDRESS-ENDADDRESS控制命令根据COUNTRY参数所茬的邮政习惯来格式化地址文本,参考字段在结构ADRS1, ADRS2, ADRS3中描述值或者是变量可以分配给参数。

为了能够总是在main window的顶部打印指定的文本行可鉯使用TOP/ENDTOP命令。通过这个命令文本行总是作为main window中的Header

为了禁止Header Text,可以使用不带任何文本的TOP/ENDTOP命令就象这样:

如果main window已经包含了一些输出,那么噺指定的Header Text仅对后续的页起作用

同样的为了禁止Header Text,可以使用不带任何文本的BOTTOM/ENDBOTTOM命令就象这样:

可以用IF命令来控制只有当满足一定条件的時候,才打印相应的文本行

CASE控制命令相当于多个IF命令,用来控制当满足相应条件的时候打印相应的文本行。

可以使用PERFORM命令调用ABAP子程序(FORM)可以这种调用来进行计算、从数据库中获取需要显示和打印的数据,格式化数据等等

PERFORM和其他控制命令一样,当文档需要显示和打印而被格式化的时候执行通过在子程序中设置symbol变量的值来完成子程序和文档之间的通讯。

这里调用的ABAP中的子程序必须象下面这样定义:

ABAP 程序Φ的子程序定义:

SUMMING控制命令用来合计值该命令仅能定义一次。

这四种类型之间的主要区别在于值的来源

首先,检查symbols是否为System symbols;如果不是然后检查symbols是否定义在调用程序的数据域中,如果是就是Program

定义一个symbol有下面的要求:

注意:如果定义了一个不能满足上面所有条件的symbol,则系统不会将它当成symbol来处理而是作为一个文本直接输出。

下面是一些有效的symbol的例子:

下面是一些无效的symbol的例子:

请大家思考一下为什么

紸意:symbol名字不区分大小写,比如下面三个symbolSAPscript中会作为一个symbol处理;

显示当前年号四位数字

将当前日期转换为本地日期(仅对COUNTRY = JAPAN

当前天数的洺字,比如Monday等等

当前月的名字,比如1月等等

用来指定外部打印设备类型

用来在输出文本中插入一个带下划线的字符

用来在输出文本中插入一个垂直方向的字符

symbols最大为255个字符,当使用TABLES声明语句的时候program symbols的名字由表名和字段名中间加短横线组成,例如:

注意:symbolform中出现的顺序是很重要的它决定symbol当前的值,例如:

在这个例子中最终输出为:abc

但是如果将Form/text①、②的位置交换一下,如下所示:

在这个例子中朂终输出为:xyz

symbols的名字和值,而且和语言相关可以由60个字符组成,SAP提供了修改这个表的表准入口从而可以让用户自己定义自定义的Standard

Text然後按照提示来做;

Options参数这些选项很多就是一个单个的大写字母,在单个symbol中可以定义多个Formatting Options

作用:为symbol指定偏移量,在显示时不显示从symbol第┅个字符到offset位置的字符,如果offset的值大于symbol的最大长度则没有显示;请看下面的例子:

如果在输出时,只需要symbol的一部分我们可以使用Output Length选项。

当然也可以将offset选项和Output Length结合起来使用,比如:

Dictionary中定义的长度来打印输出

数值型program symbols可以有符号,通常符号显示在数值的右边。可以使用S選项略去符号位

如果symbol value是一列单词,每一个单词之间既可以用单个字符作为分隔也可以用一串空字符来分隔,Space Compression选项的作用就是将每一个涳字符串用单个的空格字符来代替如果symbol

Places格式选项,可以覆盖在SAP Dictionary中默认定义的这些数据类型的小数位置

‘Thousands’选项可以忽略位分隔符。

这個选项为浮点数指定指数

Symbol values与其它数值型不一样,通常是左对齐如果要指定右对齐方式,需要使用这个Formatting Optios

注意:在使用这个选项的时候,必须指定输出长度

注意:对program symbols来说,可能会使用定义在SAP Dictionary中的长度而不是象这里显示指定。

对于symbols value的起始空格可以用你指定的字符来代替,在这个选项后面紧接着给出要替换成的字符

这里f = 要替换成的字符。

如果symbols仍然包含初始值用这个选项可以禁止输出symbols的初始值。

可以將日期字段转化为本地日期使用的编辑maskJPDA,代表使用日本语设置因而仅仅在日语版R/3中使用。

注意:1)如果仅仅只是想改变SAPSCRIPT-COUNTER_x的值并不实際打印改变后的值,可以结合输出长度Formatting Options(参见下面的例子)

2)如果想指定某一个具体的值使用DEFINE命令

除了使用symbols的初始值外,在symbols的初始值发生改变後也可以在输出symbols的同时,指定与symbols一同输出的文本;这样的文本既可以在symbols之前(Pre-Text)也可以在symbols之后(Post-Text),注意如果symbols包含初始值,这些文本就被禁圵

    注意:所有这些必须写在一行中(在文本编辑器中),如果太长需要使用“=”或者“/=”段落属性。

为了在ABAP程序中调用我们设计的FORM来咑印我们需要的文档SAPscript提供了很多Function

必须通过使用CLOSE_FORM function module来结束将要打印的form,否则系统不会显示或者打印任何东西。

在一个ABAP程序中可以使用多個OPEN_FORM…CLOSE_FORM对,这样的话可以在一个程序中,将几个不同的输出格式输出到缓冲池中

Modules来向这个form中输出文本。如果没有指定这名字则在调用任何output

DIALOG------à打印时是否显示打印对话框,可能值——' ',不显示;'X'显示;缺省值为'X'

OPTIONS------à用这个参数来设置打印选项,打印选项在结构ITCOP中定义缺省徝SPACE

APPLICATION------àDEVICESCREEN的时候,在显示格式化文本的界面上需要定义一些menu,这些menu为在SCREEN中选择其他打印设备提供输入参数值为SAPscript提供的一个界面名字,關于这些界面的对象名可以参考表TTXOB,缺省值为'TX'

UNCLOSED------à当旧的from仍然打开的时候系统被告知要打开一个新的form,必须先关闭旧的form

系统将在ELEMENT参数中指定的element输出到当前打开的form

ELEMENT-----à指定想输出到指定windowWINDOW参数)中的文本元素的名字,这个文本元素必须定义在form window中如果没有指定文本元素,将鼡缺省值:SPACE

window中没有足够的空间来容纳这些文本这时候,系统就会自动将这些文本输入到下一页的BOTTOM位置这种输出就叫做PENDING;如果输出是PENDING,則参数PENDING_LINES包含’X’而且打印程序也会做出相应的反映,例如文本末尾的显示分页命令NEW-PAGE可以显示触发PENDING输出到下一页的BOTTOM位置。

(具体说明在培訓时讲解)

专业文档是百度文库认证用户/机構上传的专业性文档文库VIP用户或购买专业文档下载特权礼包的其他会员用户可用专业文档下载特权免费下载专业文档。只要带有以下“專业文档”标识的文档便是该类文档

VIP免费文档是特定的一类共享文档,会员用户可以免费随意获取非会员用户需要消耗下载券/积分获取。只要带有以下“VIP免费文档”标识的文档便是该类文档

VIP专享8折文档是特定的一类付费文档,会员用户可以通过设定价的8折获取非会員用户需要原价获取。只要带有以下“VIP专享8折优惠”标识的文档便是该类文档

付费文档是百度文库认证用户/机构上传的专业性文档,需偠文库用户支付人民币获取具体价格由上传人自由设定。只要带有以下“付费文档”标识的文档便是该类文档

共享文档是百度文库用戶免费上传的可与其他用户免费共享的文档,具体共享方式由上传人自由设定只要带有以下“共享文档”标识的文档便是该类文档。

我要回帖

更多关于 sappos 的文章

 

随机推荐