SAP报表开发指南_第1页
SAP报表开发指南_第2页
SAP报表开发指南_第3页
SAP报表开发指南_第4页
SAP报表开发指南_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 SAP报表开发指南目 录 TOC o 1-2 h z HYPERLINK l _Toc38914178 1选择屏幕 PAGEREF _Toc38914178 h 3 HYPERLINK l _Toc38914179 1.1屏幕输入命令 PAGEREF _Toc38914179 h 3 HYPERLINK l _Toc38914180 1.2创建元素块 PAGEREF _Toc38914180 h 12 HYPERLINK l _Toc38914181 1.3事件及其事件关键字 PAGEREF _Toc38914181 h 15 HYPERLINK l _Toc38914182 1.4分页 P

2、AGEREF _Toc38914182 h 19 HYPERLINK l _Toc38914183 1.5通过窗口滚动窗口 PAGEREF _Toc38914183 h 19 HYPERLINK l _Toc38914184 1.6按页滚动 PAGEREF _Toc38914184 h 20 HYPERLINK l _Toc38914185 1.7列表中的颜色 PAGEREF _Toc38914185 h 20 HYPERLINK l _Toc38914186 1.8交互式报表 PAGEREF _Toc38914186 h 24 HYPERLINK l _Toc38914187 1.9次列表的

3、页眉 PAGEREF _Toc38914187 h 26 HYPERLINK l _Toc38914188 1.10列表中的消息 PAGEREF _Toc38914188 h 26 HYPERLINK l _Toc38914189 1.11从程序中触发事件 PAGEREF _Toc38914189 h 28 HYPERLINK l _Toc38914190 1.12从列表中读取行 PAGEREF _Toc38914190 h 29 HYPERLINK l _Toc38914191 1.13在光标位置处读列表 PAGEREF _Toc38914191 h 30 HYPERLINK l _Toc3

4、8914192 1.14传递列表属性 PAGEREF _Toc38914192 h 30 HYPERLINK l _Toc38914193 1.15将光标设置到显示列表行的特定字段 PAGEREF _Toc38914193 h 31 HYPERLINK l _Toc38914194 1.16将光标设置到输出窗口中列表的特定行 PAGEREF _Toc38914194 h 31 HYPERLINK l _Toc38914195 2报表取数 PAGEREF _Toc38914195 h 31 HYPERLINK l _Toc38914196 3数据整理 PAGEREF _Toc38914196 h

5、 32 HYPERLINK l _Toc38914197 4WRITE输出 PAGEREF _Toc38914197 h 32 HYPERLINK l _Toc38914198 5报表编制的实例 PAGEREF _Toc38914198 h 32 HYPERLINK l _Toc38914199 6扩展 PAGEREF _Toc38914199 h 32 HYPERLINK l _Toc38914200 6.1屏幕控制 PAGEREF _Toc38914200 h 32 HYPERLINK l _Toc38914201 6.2设置下拉框 PAGEREF _Toc38914201 h 33 HY

6、PERLINK l _Toc38914202 6.3自制Search Help PAGEREF _Toc38914202 h 34选择屏幕屏幕输入命令在ABAP/4中要自屏幕输入变量数据的内容,使用的命令是 PARAMETERS 及 SELECTION-OPTIONSPARAMETER: 输入一个变量或字段内容SELECTION-OPTIONS: 使用条件筛选画面来输入数据PARAMETERS 语句基本格式可以按照用DATA语句声明字段的方式用PARAMETERS语句声明字段。用PARAMETERS 语句声明的字段称为参数。通常,输入字段的所有参数都将出现在选择屏幕上。 系统处理输入屏幕时,报

7、表用户在这些输入字段中键入的值将被分配给相应的参数。它为基本的输入命令,类似如BASIC的INPUT命令,但无法使用F格式(浮点数)。1、要声明参数及其数据类型语法:PARAMETERS () .该语句创建参数。附加项、和 与 DATA 语句相同。语法:PARAMETERS DEFAULT LOWER CASE OBLIGATORY AS CHECKBOX|RADIOBUTTON GROUP Example:PARAMETERS: NAME(8) TYPE C, AGE TYPE I, BIRTH TYPE D. 执行结果,如图1-1所示。图1-1在日期的输入格式上为 MM/DD/YY 、MM

8、/DD/YYYY、MMDDYY 或MMDDYYYY ,如输入 020165表示 1965年02月01日,与02/01/65的输入是一样的,日期输入范围为公元1950年至2049年。2、给参数分配缺省值(使用DEFAULT 选项)语法:PARAMETERS DEFAULT 可以是文字或字段名。如果指定字段名,则系统将按缺省值处理该字段的内容,报表用户可以在选择屏幕中更改缺省值,系统在时间事件INITIALIZATION之前将缺省值传输给参数。Example:PARAMETERS: COMPANY(20) DEFAULT HAND, BIRTH TYPE D DEFAULT 19890824.3、

9、禁止参数显示(使用NO-DISPLAY 选项)语法:PARAMETERS NO-DISPLAY 创建参数,并通过DEFAULT选项在时间事件INITIALIZATION中内部赋值,或者,如果报表是用SUBMIT启动的,则由调用程序进行外部赋值。如果想只在某种条件下才显示参数,例如,根据报表用户在选择屏幕的其它输入字段中输入的值决定是否显示参数,则请您不要使用NO-DISPLAY 选项。如果使用了这个选项,参数就不是选择屏幕的元素,而且您也不能用 MODIFY SCREEN语句使它可见 。要使参数成为选择屏幕的隐藏元素,不带 NO-DISPLAY 选项声明该参数,并通过使用 MODIFY SCR

10、EEN 语句禁止显示它。4、允许参数接受大小写( 使用LOWER CASE 选项)语法:PARAMETERS LOWER CASE 如果没有 LOWER CASE选项, ABAP/4预设是将字符串输入值自动转换为大写, 加上此参数会将输入的数据转成小写。5、必须输入字段的参数(使用OBLIGATORY 选项)语法: PARAMETERS OBLIGATORY 使用该选项时,强制要求输入,在参数 的输入字段上将出现一个符号()。用户如果不在选择屏幕的这个字段上输入值,程序就无法继续执行。使用者必须要输入值,程序才可继续执行,如图1-2所示。图1-26、在选择屏幕上创建复选框(使用AS CHECK

11、BOX 选项)语法: PARAMETERS AS CHECKBOX 参数 按长度为1的类型C创建。在这 种情况下,不允许使用附加选项 TYPE 和 LIKE。 的有效值是和X。这些值在 用户单击选择屏幕上的复选框时赋 给参数。Example:PARAMETERS: TAX AS CHECKBOX DEFAULT X, NTD AS CHECKBOX. 执行结果,如图1-3所示。图1-37、在选择屏幕上创建单选按钮组(使用RADIOBUTTON GROUP 选项)语法:PARAMETERS RADIOBUTTON GROUP 参数 按类型C,长度1创建,并分配到组。字符串 的最大长度是4。允许使

12、用附加的 LIKE 选项,但是必须参阅类型为C、长 度为1的字段。必须为每个 组分配至少两个参数。每个组中只有一个参数可以用DEFAULT选项分配的缺省值。该值必须是 X。当用户单击选择屏幕中的单选按钮时,相应的参数被激活(分配值X),同时同组的其它参数被设 为非活动的(赋值)。Example:PARAMETERS: BOY RADIOBUTTON GROUP SEX DEFAULT X, GIRL RADIOBUTTON GROUP SEX.执行结果,如图1-4所示。 图1-48、PARAMETERS语句的实例:程序代码,如图1-5所示。图1-5选择文本,如图1-6所示。图1-6运行结果,如

13、图1-7所示。图1-7SELECT-OPTIONS语句的基本格式条件筛选检查条件输入画面指令,输入条件后可配合SELECT指令自TABLE读取符合条件的数据,直接执行或放入 Internal Table中,条件有四个参数:SIGN: I表筛选条件符合的资料E表筛选条件不符合的资料 OPTION: 比较的条件符号 EQ(等于)、NE(不等于)、GT(大于)、GE(大于等于)、LE(小于等于)、LT(小于)、CP(包含)、NP(不包含)、BT(介于)、NB(不介于) LOW: 最小值 HIGH: 最大值1、要创建报表用户可以在选择屏幕中填充的选择标准,使用 SELECT-OPTIONS 语句。语法

14、: SELECT-OPTIONS FOR .该语句创建选择表,该表与数据库表的列 或内部字段 相连接。该数据库表必须在程序中用 TABLES 语句声明。 名称 最多可以包含8 个字符。选择表 由报表用户在选择屏幕中填充。在程序中,可以修改选择表的行或往里面添加更多的行。可以用在选择文本中描述的文字摘要来更改选择屏幕 上输入字段左面的文本字段。Example: TABLES BKPF SELECT-OPTIONS S_BUKRS FOR BKPF-BUKRS.将条件的输入值存放入S_BUKRS,筛选选择为BKPF中的BUKRS字段执行结果,如图1-8所示。图1-82、给选择标准分配缺省值(请使用

15、 SELECT-OPTIONS 语句的 DEFAULT 选项)语法:SELECT-OPTIONS FOR DEFAULT TO 和的缺省值可以是实际值(在单引号中)或是字段名,该字段的值将用做缺省值。系统在时间事件INITIALIZATION之前把缺省值传递给选择标准。因此,有那些在用户启动程序时已被填充的字段才可以用字段名而不用文字。 例如,这样的字段可以是系统字段。对于每个 SELECT-OPTIONS 语句,可以 指定 DEFAULT附加部分。这意味着只能用缺省值填充选择表 的第一行。选择表行的第一行的所有组件可以用DEFAULT选项预先设置:要只设置 LOW 字段(单值选择),请使用

16、DEFAULT .要设置 LOW 和 HIGH 字段(间隔 选择),请增加 TO,如:DEFAULT TO .Example:SELECT-OPTIONS AIRLINE FOR SPFLI-CONNID DEFAULT 2042 TO 4555.要设置OPTION字段(选择运算符),请增加OPTION ,如:DEFAULT to OPTION .对于单值选择, 可以是 EQ、NE、GE、GT、LE、LT、CP 或 NP。缺省值是EQ。对于期间选择, 可以是BT 或 NB。缺省值是BT 。要设置 SIGN 域(包括/排 除),请增 加 SIGN ,如下所示 :DEFAULT to OPTION

17、 SIGN .SIGN 可以是I(包括)和 E 排除)。缺省值是 I。注:要给SELECT-OPTIONS多行默认值,则可在事件INITIALIZATION后添加ABAP代码,SELECT-OPTIONS定义的数据都相当于一个RANGES类型,可以手动添加条目Example:SELECT-OPTIONS AIRLINE FOR SPFLI-CONNID. INITIALIZATION.AIRLINE-SIGN = I. AIRLINE-OPTION = EQ. AIRLINE-LOW = 2022. APPEND AIRLINE.AIRLINE-SIGN = I. AIRLINE-OPTION

18、 = EQ. AIRLINE-LOW = 2025. APPEND AIRLINE.“给AIRLINE两个初始值2022和20253、把选择表限制在一行(使用 SELECT-OPTIONS 语句的 NO-EXTENSION 选项)语法: SELECT-OPTIONS FOR NO-EXTENSION 如果指定该选项,则选择屏幕上不出现右箭头,并且用户不能访问“复杂选择”窗口。4、把选择表限制为单值选择(使用SELECT-OPTIONS 语句的 NO INTERVALS 选项)语法: SELECT-OPTIONS FOR NO INTERVALS 如果指定该选项,则“ 到”字段不出现在选择屏幕上

19、。选择屏幕上的输入将限制为单值选择 。但是,用户可以在“复杂选择”屏幕中输入间隔选择。5、强制要求输入(OBLIGATORY选项)与PARAMETER的此选项一致6、配合 SELECT 命令条件输入完后要将符合条件的数据筛选出来, 可配合使用 SELECT 指令使用WHERE Example: SELECT-OPTIONS AIRLINE FOR SPFLI-CONNID.SELECT * FROM SPFLI WHERE CONNID IN AIRLINE. WRITE: / CONNID,FROMCITY,TOCITY. ENDSELECT.使用CHECK参数Example: SELECT

20、-OPTIONS AIRLINE FOR SPFLI-CONNID. SELECT * FROM SPFLI. CHECK AIRLINE. WRITE: / CONNID,FROMCITY,TOCITY. ENDSELECT.使用 IF IN 叙述Example: SELECT-OPTIONS AIRLINE FOR SPFLI-CONNID. SELECT * FROM SPFLI. IF SPFLI-CONNID IN AIRLINE. WRITE: / CONNID,FROMCITY,TOCITY. ENDIF ENDSELECT.7、SELECT-OPTIONS 语句的实例:程序代码

21、,如图1-9所示。图1-9运行结果,如图1-10所示。图1-10多值选择,如图1-11所示。图1-11创建元素块1、要在选择屏幕上创建元素逻辑块,请用SELECTION-SCREEN语句的BEGIN OF BLOCK 选项选择块的开始,然后定义各个元素并用 END OF BLOCK 选项选择块的结束.语法: SELECTION-SCREEN BEGIN OF BLOCK WITH FRAME TITLE NO INTERVALS. .SELECTION-SCREEN END OF BLOCK .2、在选择屏幕上创建按钮(使用PUSHBUTTON 参数)语法:SELECTION-SCREEN P

22、USHBUTTON / USER-COMMAND MODIF ID .参数 /、和MODIF ID 选项与在注释中对COMMENT选项进行的描述相同, 在 中指定的文本是按钮文本。对于 , 必须指定最多为4 字符的代码。当用户在选择屏幕上单击按钮时,被输入词典字段 SCRFIELDS-UCOMM。3、产生空白列语法:SELECTION-SCREEN SKIP 4、产生底线语法: SELECTION-SCREEN ULINE / (length)5、印出备注说明语法: SELECTION-SCREEN COMMENT / (length) 6、同一列中输入数个数据项语法:SELECTION-SC

23、REEN BEGIN OF LINE. SELECTION-SCREEN END OF LINE.Example:SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN POSITION 20. PARAMETERS NAME(10). 在20格输入NAME内容 SELECTION-SCREEN POSITION 40. PARAMETERS BIRTH TYPE D. 40格输入 BIRTH的内容 SELECTION-SCREEN END OF LINE.7、绘出BLOCK PANEL语法:SELECTION-SCREEN BEGIN OF BLOC

24、K WITH FRAME TITLE . . SELECTION-SCREEN END OF BLOCK .Example:SELECTION-SCREEN BEGIN OF BLOCK RADIO WITH FRAME .PARAMETER R1 RADIOBUTTON GROUP GR1.PARAMETER R2 RADIOBUTTON GROUP GR1.PARAMETER R3 RADIOBUTTON GROUP GR1.SELECTION-SCREEN END OF BLOCK RADIO. 8、SELECTION-SCREEN语句的实例:程序代码,如图1-12所示。图1-12文本符

25、号,如图1-13所示。图1-13程序执行结果,如图1-14所示。图1-14事件及其事件关键字逻辑数据库是典型报表程序的外部流控制的中心点。如果将逻辑数据库链接到报表程序,将导致显示选择屏幕,并决定系统如何从数据库表中读取数据。这引起在下列表中说明的事件序列事件关键字事件INITIALIZATION 在显示选择屏幕之前的点AT SELECTION-SCREEN 选择屏幕仍然活动时,处理用户在选择屏幕上输入之后的点START-OF-SELECTION 处理选择屏幕之后的点 GET 点位于逻辑数据库提供数据库表 的行处。GET LATE 处理所有表之后的点, 在逻辑数据库的结构中,使这些表位于数据库

26、表 的下层。END-OF-SELECTION 处理完逻辑数据库提供的所有行之后的点。下列主题说明这些事件的过程块处理和显示报表程序输出列表时,出现其他没有连接到逻辑数据库的事件。可以用这些事件格式化输出列表,并使报表程序成为交互式的 处理报表程序输出列表时,出现下列事件:事件关键字事件TOP-OF启动新页时,列表处理中的点END-OF结束页时,列表处理中的点可以用这些关键字改善输出列表 的格式。下列事件出现在报表程序输出列表的显示中:事件关键字事件AT LINE-SELECTION用户在该点处选择行AT USER-COMMAND用户在该点处按下功能键或在命令字段中输入命令AT PF用户在该点处

27、按下有功能代码 PF 的功能键可以使用这些关键字编写交互式报告的程序1、AT USER-COMMAND 事件要允许程序对触发自定义功能代码的用户行为作出反应,请定义并编码 AT USER-COMMAND 事件的处理块语法:AT USER-COMMAND. .无论何时用户从自定义用户界面中选择自定义功能代码,都将发生 AT USER-COMMAND 事件。如果用户选择为系统功能预定义的功能代码,或者选择总是触发 AT LINE-SELECTION 事件的功能代码PICK, 则不发生该事件。使用 AT USER-COMMAND 事件处理块中的 SY-UCOMM 系统字段区别不同的功能代码2、内部表

28、第一行语法:AT FIRST. ENDAT.3、内部表最后一行语法:AT LAST. ENDAT.4、内表中某个字段及其前面的字段遇到新值语法:AT NEW . F及其左边字段新值的开始 ENDAT.5、内表中某个字段及其前面的字段同一值结束语法:AT END OF . F及其左边字段同一值的结束 ENDAT.注:在上述AT语句中,进入AT语句以后,循环中的表头里面的数据都将变成*,因此要先定义一个相同结构的数据将进入AT之前表头的数据备份出来,在AT语句块里面及其后使用6、处理控制级通过使用SORT语句给摘录数据集排序,可定义一个控制级结构。摘录数据集的控制级结构对应于HEADER 字段组中

29、的字段的顺序。排序后, 可在LOOP-ENDLOOP循环中使用AT语句编写语句块,使系统只在控制中断时(即,控制级更改时)才处理它语法:AT NEW | AT END OF . .ENDAT.如果字段 或当前摘录记录中的排序关键字的较高层字段中包含其它值,并且该值与摘录数据集前面的记录(对于 AT NEW)或后续记录( 对于 AT END)中的值不同, 将产生控制中断,并且系统将处理 AT-ENDAT 中的语句块 。字段 必须是 HEADER 字段组的一部分7、计算序号和合计在使用LOOP-ENDLOOP读取已排序的摘录数据集时,可以访问两个自动生成的字段 CNT() 和 SUM(),这些字段

30、提供了不同值的序号或数字字段的合计。系统将在控制级的最后以及读取 数据集的最后一个记录后填充这些字段CNT()如果 是 HEADER字段组的非数字字段, 并且系统是根据 给摘录数据集排序的, 则 CNT() 包含了在控制级中或在整个数据集中分别设定的不同值 的序号。SUM()如果 是摘录数据集的数字字段,SUM ()将包含控制级或整个数据集中 的值的合计 。可以在控制中断产生之前,在AT END OF的过程块中访问这些字段;或在读取整个数据集后,在AT LAST后的过程块中访问这些字段注:只能在给数据集排序后才能访问CNT() 和 SUM()字段。否则会产生运行时错误。Example: REP

31、ORT ZZTEST_3750.TYPES: BEGIN OF T_C,T1(4) TYPE C,T2 TYPE I,END OF T_C.DATA IT TYPE TABLE OF T_C WITH HEADER LINE.IT-T1 = AABB.IT-T2 = 1. APPEND IT.IT-T1=AABB. IT-T2 = 1. APPEND IT.IT-T1 =BBCC. IT-T2 = 2. APPEND IT.IT-T1 =AAAA. IT-T2 = 2. APPEND IT.IT-T1 =AABB. IT-T2 = 1. APPEND IT.IT-T1 =BBBB. IT-T2

32、 = 2. APPEND IT.IT-T1 =BBCC. IT-T2 = 2. APPEND IT.IT-T1 =AAAA. IT-T2 = 1. APPEND IT.IT-T1 =BBBB. IT-T2 = 1. APPEND IT.IT-T1 =AAAA. IT-T2 = 3. APPEND IT.IT-T1 =AABB. IT-T2 = 1. APPEND IT.SORT IT BY T1 T2.LOOP AT IT. AT FIRST. WRITE Start of LOOP. ULINE. ENDAT. AT NEW T1. WRITE / New T1:. ENDAT. AT NE

33、W T2. WRITE / New T2:. ENDAT. WRITE: /14 T1, T2. AT END OF T2. WRITE / End of T2. ENDAT. AT END OF T1. WRITE / End of T1. ENDAT. AT LAST. ULINE. ENDAT.ENDLOOP.运行结果:Start of LOOP New T1: New T2: AAAA 1End of T2 New T2: AAAA 2End of T2 New T2: AAAA 3End of T2End of T1 New T1: New T2: AABB 1 AABB 1 AAB

34、B 1 AABB 1End of T2End of T1 New T1: New T2: BBBB 1End of T2 New T2: BBBB 2End of T2End of T1 New T1: New T2: BBCC 2 BBCC 2End of T2End of T1 分页1、无条件分页要在页处理期间触发分页(触发END OF PAGE),请使用 NEW语句的基本格式语法:NEW.2、条件分页定义行块要在少于某一页剩余行数的条件下执行分页(触发END OF PAGE),请使用RESERVE 语句:语法: RESERVE LINES.如果当前列表页的最后输出和页脚之间剩余的自由行数

35、少于,则该语句触发分页。 可以是变量。在开始新页之前,系统处理END-OF事件。只有输出写入到后续页时,RESERVE 才生效。不创建空页。 通过窗口滚动窗口要以当前窗口大小垂直滚动列表并且与页长无关,请使用这条语句:语法:SCROLL LIST FORWARD | BACKWARD INDEX .不带INDEX 选项时,该语句以当前窗口大小向前或向后滚动当前列表 。使用 INDEX 选项时,系统以列表级 滚动列表。Example:REPORT ZZTEST_3750 NO STANDARD PAGE HEADING LINE-SIZE 40.TOP-OF.WRITE: Top of Page

36、, SY-PAGNO, SY-SROWS:, SY-SROWS.ULINE.START-OF-SELECTION.DO 100 TIMES.WRITE / SY-INDEX.ENDDO.DO 3 TIMES.SCROLL LIST FORWARD.ENDDO.该报表创建没有结尾页的列表。在DO循环之内,系统三次SCROLL语句。如果当前窗口为12 行(存储在 SY-SROWS 中),则程序输出,如图1-15所示。图1-15按页滚动要按页滚动列表,即按页长垂直滚动列表,SCROLL 语句提供下列选项:1、滚动到某页语法:SCROLL LIST TO FIRST PAGE | LAST PAGE

37、| PAGE INDEX LINE .不用 INDEX 选项,语句将当前列表滚动到首页 、尾页或 页。使用 INDEX 选项,则系统滚动列表 级 的列表。使用 LINE 选项时,系统显示从实际列表的 行开始滚动的页。不包括页眉行。2、按页数滚动语法:SCROLL LIST FORWARD | BACKWARD PAGES INDEX .不用 INDEX 选项时,语句向前或向后滚动 页。如上所 述,INDEX 选项参考某一列表级。3、水平滚到列表的左或 右页边缘语法:SCROLL LIST LEFT | RIGHT INDEX .4、将输出定位到其它输出之下可以将 WRITE 输出定位到上一 W

38、RITE 输出的列中 。语法:WRITE UNDER .系统从开始输出字段 的同一列中开始输出 。该语句不限于当前页,即 不必出现在相同页上。列表中的颜色FORMAT 语句的选项 COLOR、 INTENSIFIED 和 INVERSE 影响输出列表的颜色。1、在程序中设置颜色语法:FORMAT COLOR ON INTENSIFIED ON|OFF INVERSE ON|OFF.2、在运行时设置颜色语法:FORMAT COLOR = INTENSIFIED = INVERSE = .这些格式化选项不适用于由 ULINE 创建的水平行。其功能如下所示:(1)COLOR 设置行背景的颜色。而且,

39、如果设置 INVERSE ON ,则系统将更改前景颜色而不是背景颜色。对于 ,可以设置颜色号或者颜色规范。但是 ,要代替颜色号 0,必须使用 OFF。如果在运行时设置颜色号码,则小于 0 或大于 7 的所有 值都将导致未定义的结果。下表汇总各种不同的选项:颜色用于OFF或 COL_BACKGROUND0取决于GUI背景1或 COL_HEADING1灰蓝标题2或 COL_NORMAL2淡灰列表正文3或 COL_TOTAL3黄总计4或 COL_KEY4蓝绿关键字列5或 COL_POSITIVE5绿正门限值6或 COL_NEGATIVE6红负门限值7或 COL_GROUP7紫组级别缺省值为 COLO

40、R OFF。(2)INTENSIFIED 确定行背景的颜色调色板。上面指定的行背景的颜色调色板可以很浓或正常,有一个例外 (COLOR OFF)。 缺省设置为 INTENSIFIED ON。对于 COLOR OFF,系统将更改前景颜色而不是背景颜色 。而且,如果设置 INVERSE ON,则 INTENSIFIED OFF 无效(同样 ,COLOR OFF 例外)。(3)INVERSE 影响前景颜色。系统从背景颜色调色板获取指定 COLOR 并将其用作前景颜色, 有一个例外 (COLOR OFF)。 背景颜色保持不变。对 于 COLOR OFF,INVERSE 无效,因为这将前景和背景颜色设置

41、为相同颜色。例1:显示各种颜色格式化选项的不同组合情况 :REPORT ZZTEST_3750.DATA I TYPE I VALUE 0.DATA COL(15).WHILE I 8. CASE I.WHEN 0. COL = COL_BACKGROUND .WHEN 1. COL = COL_HEADING . WHEN 2. COL = COL_NORMAL . WHEN 3. COL = COL_TOTAL . WHEN 4. COL = COL_KEY . WHEN 5. COL = COL_POSITIVE . WHEN 6. COL = COL_NEGATIVE . WHEN 7

42、. COL = COL_GROUP . ENDCASE. FORMAT INTENSIFIED COLOR = I. WRITE: /(4) I, AT 7 SY-VLINE, COL, SY-VLINE, COL INTENSIFIED OFF, SY-VLINE, COL INVERSE. I = I + 1.ENDWHILE.在 FORMAT 语句中,在运行时设置续 WRITE 语句的COLOR选项。在程序中单独设置每条 WRTIE 语句的其他选项。输出显示,如图1-16所示。图1-16例2:显示如何在列表中使用颜色以强调输出。REPORT ZZTEST_3750 NO STANDARD

43、 PAGE HEADING LINE-SIZE 70.TABLES: SPFLI, SFLIGHT.DATA: SUM TYPE I, IT_SPFLI LIKE TABLE OF SPFLI, IT_SFLIGHT LIKE TABLE OF SFLIGHT.WRITE: List of Flights COLOR_HEADING.ULINE.SELECT * FROM SPFLI INTO TABLE IT_SPFLI.SELECT * FROM SFLIGHT INTO TABLE IT_SFLIGHT FOR ALL ENTRIES IN IT_SPFLI WHERE CARRID =

44、 IT_SPFLI-CARRID AND CONNID = IT_SPFLI-CONNID.FORMAT COLOR COL_HEADING.WRITE: CARRID, 10 CONNID, 20 FROM, 40 TO.FORMAT COLOR COL_KEY.LOOP AT IT_SPFLI INTO SPFLI. WRITE: / SPFLI-CARRID UNDER CARRID, SPFLI-CONNID UNDER CONNID, SPFLI-CITYFROM UNDER FROM, SPFLI-CITYTO UNDER TO. ULINE. FORMAT COLOR COL_H

45、EADING. WRITE: Date, 20 Seats Occupied, 50 Seats Available. ULINE. SUM = 0. LOOP AT IT_SFLIGHT INTO SFLIGHT WHERE CARRID = SPFLI-CARRID AND CONNID = SPFLI-CONNID. IF SFLIGHT-SEATSOCC LE 10. FORMAT COLOR COL_NEGATIVE. ELSE. FORMAT COLOR COL_NORMAL. ENDIF. IF SY-TABIX = 1. WRITE: / SFLIGHT-FLDATE UNDE

46、R Date. ELSE. WRITE: SFLIGHT-FLDATE UNDER Date. ENDIF. WRITE: SFLIGHT-SEATSOCC UNDER Seats Occupied, SFLIGHT-SEATSMAX UNDER Seats Available. SUM = SUM + SFLIGHT-SEATSOCC. ENDLOOP. ULINE. WRITE: Total Bookings: INTENSIFIED OFF, SUM UNDER SFILGHT-SEATSOCC COLOR COL_TOTAL. ULINE.ENDLOOP.该报表输出列表,如图1-17所

47、示。图1-17所有标题以背景颜色COL_HEADING显示。表格SPFLI 的关键字字段使用COL_KEY作为背景颜色。事件 GET SFLIGHT 的列表正文行背景颜色(COL_NORMAL)不同于列表背景 (COL_BACKGROUND) 。而且,预定数量在某一最小数量以下的航班,其背景为红色。每个航班的总预定数量背景黄色。请注意,对于每个新事件,系统都将格式化选项复位为缺省设置(COLOR OFF、 INTENSIFIED ON)。因此,在上面程序中,GET LATE事件时输出“总计预定”的行背景还是 COL_BACKGROUND。将 INTENSIFIED 设置为 OFF 以获取与其他

48、输出相同的前景颜色 。交互式报表1、什么是交互式报表?传统的、非交互式报表由创建单个列表的一个程序组成。这意味着启动报表之后,它创建的列表必须包含所有要求的数据,而不管用户想查看的细节的数目。该程可能导致扩展列表,用户必须从该列表中挑选相关的数据。对于后台处理,这是唯一可能的方法。启动后台作业之后,没有任何方法影响程序。必须预先做出所要求的选择,并且报表必须提供详细信息 。对于对话框会话,没有这种限制。 执行时用户在场,可以直接控制和操作程序流 。为了能够利用联机环境的所有优点,传统报表已发展为交互式报表 。交互式报表允许用户在会话期间积极参与检索和提出数据 。交互式报表创建的不是一个扩展的和

49、详细的列表,而是一个精简的基本列表, 通过定位光标并输入命令,用户可以从该列表中调用详细信息。因此 ,交互式报表减少了实际需要检索的数据信息 。在次列表中显示详细信息。次列表完全覆盖基本列表,或 者出现在屏幕上的附加对话窗口中 。次列表本身也可以是交互式的。除了创建次列表之外, 交互式报表还允许从列表中调用事务和其它报表。然后, 这些程序将 显示在列表中的值用作 输入值。例如,用户可以从列表中调用事务以 更改数据库表格,该数据库表的数显示在列表中,如图1-18所示。图1-182、交互式列表的事件控制ABAP/4 程序由事件关键字控制。 事件关键字是交互地使用列表所必需的。下列事件是交互式列表环

50、境特有的 :AT LINE-SELECTION、AT PF、AT USER-COMMAND如果在程序中为这些事件之一定义处理块,则程序可以对某些用户动作做出反应 。如果用户随后执行显示列表中的已定义的行为,则系统将触发相应事件。系统将在上述事件之一的处理块中编写的所有输出语句的输出写入到所谓的次列表中 。3、交互式列表上的动作必须在列表的界面定义中确定用户可以在列表上执行的,并触发特定事件的动作。可以为每个列表定义单独的界面。默认情况下,事件发生在列表的下列动作之后:AT LINE-SELECTION : 出现在用户双击某行之后,单击热点。AT PF : 出现在用户按下相应功能键之后。AT U

51、SER-COMMAND : 出现在用户选择自定义行为之后。4、事件控制带来的结果使用事件关键字编写交互式列表的事实带来下列重要结果 :不能嵌套处理块,这是由于每个新事件关键字终止前面的处理块。 因此,无法在交互式列表的处理块内处理其它事件。尤其不能:( 1 ) 使用 GET 和 GET LATE 之类的事件检索次列表的数据,但必须使用 SELECT 语句。只有对基本列表才能使用分配给报表的逻辑数据库 。如果要在交互式事件期间使用逻辑数据库, 必须调用使用SUBMIT的独立报表。( 2 ) 使用事件TOP-OF和END-OF影响次列表结构。为了设置次列表的页眉,必须使用事件TOP-OFDURIN

52、G LINE-SELECTION。( 3 ) 使用独立的处理块处理其它交互式事件。一定的用户动作总是触发程序中同一个处理块。 必须使用处理块内的控制语句(IF 和 CASE) ,以确保系统处理要求 语句。在 该环境中有几个系统字段帮助完成该操作,如表1-2所示。系统字段信 息SY-LSIND 当前事件中创建的列表索引(基本列表 = 0)SY-LISTI触发事件的列表级索引SY-LILLI触发事件的行的绝对号SY-LISEL触发事件的行的内容SY-CUROW触发事件的行在窗口中的位置(计数开始于 1)SY-CUCOL触发事件的列在窗口中的位置(计数开始于 2)SY-CPAGE触发事件的列表显示的

53、第一页的页号SY-STARO触发事件的列表显示的第一页第一行的行号(计数开始于1)。该行可能是页眉SY-STACO触发事件的列表显示的第一列的列号 (计数开始于 1)SY-UCOMM触发事件的功能代码SY-PFKEY显示列表的状态表1-2如果使用自定义的列表界面,则系统字段 SY-UCOMM 和 SY-PFKEY 很重要。次列表的页眉系统在次列表上不显示标准页眉,并且不触发事件 TOP-OF。要创建次列表的页眉, 必须增强 TOP-OF:语法:TOP-OFDURING LINE-SELECTION.对每个次列表,系统都触发该事件。如果要为不同列表级创建不同的页眉,必须相应地编写该事件的处理块,

54、例如,通过使用系统字段,如控制语句(IF 和CASE)中的 SY-LSIND 或 SY-PFKEY。用户垂直滚动次列表时,系统将保留页眉而只滚动页眉下的列表行 。列表中的消息ABAP/4 允许您根据错误的严重程度通过显示影响程序流的消息对错误或有疑问的用户输 入做出反应 。处理消息是对话编程中详细描述的主题。消息是通过语言、双字符标识和三个数字的号码存储的。可以为输出的各种消息分配不同消息类型。消息对程序流的影响取决于消息类型。在程序中使用 MESSAGE 语句静态或动态地输出信息,并确定信息类型 。语法:REPORT MESSAGE-ID .由于该语句的作用,报 表 可以使用存储标识 下表格

55、T100 中的所有消息。如果动态地指定消息标识,则可以忽略此 选项。要静态地指定消息号, 请使用:语法:MESSAGE WITH . .该语句输出存储在号码 下表格T100 中的消息, 它的标识与 REPORT 语句中的标识相同,与消息类型 一样。要在运行时动态地指定消息标识、 类型和号码 ,请使用:语法:MESSAGE ID TYPE NUMBER WITH . .该语句输出其标识、号码和类型存储在字段 、 和 中的消息。 对该语句, 不需要 REPORT 语句中的 MESSAGE-ID 选项。消息可以有五种不同类型。列表处理期间,这些消息类型有下列作用 :A (=终止) :系统在对话窗口中

56、显示该消息类型的消息。用户使用 ENTER 确认信息之后,系统终止整个事务(例如,SE38) 。E(=错 误)或 W(=警告 ):系统在状态行中显示该消息类型的消息。用户选择 ENTER 之后,系统将按下列情况运作:创建基本列表时,系统终止报表。创建次列表时,系统终止相应处理块,并继续显示前面的列表级 ,如图1-18所示。图1-18I(=信息) :系统在对话窗口中显示该消息类型的消息。用户选择 ENTER 之后,系统在当前程序位置继续处理S(=成功) :在输出屏幕上,系统在当前创建的列表的状态行中显示该消息类型的消息。字符& 在消息中起占位符的作用。如果使用 WITH 选项,系统用字段 的内容

57、替代消息中的占位符& ,并根据号码替代数字化的占位符 &I。 要在信息中输出& ,必须写 &用SE91调用 MESSAGE,一类的MESSAGE 最大的番号为 1000(0999),如图1-19所示。图1-19调用MESSAGE简单的方法为:按“模式”按钮,出现界面如图1-20所示。图1-20执行MESSAGE的后续动作:S: 状态栏的图标 继续执行以后的代码E: 状态栏的图标 停止I: 状态栏的图标 继续执行以后的代码从程序中触发事件不是使用户通过输出屏幕上的行为触发交互式事件,而是您自己可以从程序中触发事件。语法: SET USER-COMMAND .此语句在完成当前列表后生效。系统显示列

58、表之前,将触发与存储在 中的功能代码对应的事件,而独立于应用的用户界面。这意味着,对于自定义的功能代码, 将发生 AT USER-COMMAND 事件,对于功能代码 PICK 和PF , 将发生事件AT LINE-SELECTION 和 AT PF 。只有把光标置于列表行上时,功能代码 PICK 才触发事件。对于为系统功能定义的功能代码, 系统不触发事件,而是执行相应行为。例如,要一起显示列表和“搜索”对话窗口,请在 中指定%SC 。通过指定适当的滚动功能代码,可以在显示列表之前将它滚动到一定位置。如果创建列表时使用好几个SET USER-COMMAND 语句,系统只执行最后一个语句。从列表中

59、读取行系统内在地存储一个报表程序连续创建的所有列表。因此,可以从由当前会话创建的程序中访问任何列表,并且没有通过返回到前一列表级而删除它。1、要在出现交互式列表事件之后读取行,请使用 READ LINE 语句。语法:READ LINE INDEX FIELD VALUE INTO . INTO OF CURRENT PAGE | OF PAGE .没有任何选项的语句存储列表中行 的内容,在该列表上用 SY-LISEL 系统字段触发了事件( 索引 SY-LILLI) ,并把为此行存储的 HIDE 信息填写回相应字段中。至于 SY-LISEL 和 HIDE 区域,READ LINE 与交互式行 选

60、择具有相同的效果。如果选定的行 存在,则系统将 SY-SUBRC 设置为 0,否则,将它设置为4。选项有下列作用:INDEX : 系统从级 的列表中读取行的信息 。FIELD VALUE INTO . INTO :系统将行 中变量 的输出值解释为字符串 ,并将它们放到同一字 段 中,或者使用 INTO 时,将它们放到字段 中。重新填写字段时, 系统将应用转换规则。未出现在行中的字段不 影响目标字段。如果字段在行中出现了好几次 ,则系统只使用第一个字段。系统使用输出格式,即包括所有格式化字符,传输字段内容。这可能 致无法交换,例如将 编辑字符转换为十进制 符或其它字符。由于这种情况下无法使用 H

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论