第104章通过事件控制ABAP.docx

上传人:b****2 文档编号:2715709 上传时间:2023-05-04 格式:DOCX 页数:27 大小:30.32KB
下载 相关 举报
第104章通过事件控制ABAP.docx_第1页
第1页 / 共27页
第104章通过事件控制ABAP.docx_第2页
第2页 / 共27页
第104章通过事件控制ABAP.docx_第3页
第3页 / 共27页
第104章通过事件控制ABAP.docx_第4页
第4页 / 共27页
第104章通过事件控制ABAP.docx_第5页
第5页 / 共27页
第104章通过事件控制ABAP.docx_第6页
第6页 / 共27页
第104章通过事件控制ABAP.docx_第7页
第7页 / 共27页
第104章通过事件控制ABAP.docx_第8页
第8页 / 共27页
第104章通过事件控制ABAP.docx_第9页
第9页 / 共27页
第104章通过事件控制ABAP.docx_第10页
第10页 / 共27页
第104章通过事件控制ABAP.docx_第11页
第11页 / 共27页
第104章通过事件控制ABAP.docx_第12页
第12页 / 共27页
第104章通过事件控制ABAP.docx_第13页
第13页 / 共27页
第104章通过事件控制ABAP.docx_第14页
第14页 / 共27页
第104章通过事件控制ABAP.docx_第15页
第15页 / 共27页
第104章通过事件控制ABAP.docx_第16页
第16页 / 共27页
第104章通过事件控制ABAP.docx_第17页
第17页 / 共27页
第104章通过事件控制ABAP.docx_第18页
第18页 / 共27页
第104章通过事件控制ABAP.docx_第19页
第19页 / 共27页
第104章通过事件控制ABAP.docx_第20页
第20页 / 共27页
亲,该文档总共27页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

第104章通过事件控制ABAP.docx

《第104章通过事件控制ABAP.docx》由会员分享,可在线阅读,更多相关《第104章通过事件控制ABAP.docx(27页珍藏版)》请在冰点文库上搜索。

第104章通过事件控制ABAP.docx

第104章通过事件控制ABAP

第四章1通过事件控制ABAP/4程序流

概览

内容

定义过程块

ABAP/4处理程序

事件及其事件关键字

INITIALIZATION

ATSELECTION-SCREEN

START-OF-SELECTION

GET

GET

LATE

END-OF-SELECTION

终止过程块

无条件地离开过程块

有条件地离开过程块

无条件地离开GET事件

有条件地离开GET事件

ABAP/4是事件驱动语言。

这意味着通过外部事件控制一般的ABAP/4程序流。

程序的一部分组成过程块,并将该过程块分配到特定的事件。

事件关键字提供了事件和程序之间的接口。

系统总是在相应事件出现时启动过程块(参见ABAP/4中流控制的概念(页错误!

链接无效。

))。

在控制ABAP/4程序流(页错误!

链接无效。

)中介绍了过程块中的流控制(内部控制)。

本节介绍ABAP/4程序的外部控制和可能涉及到的事件。

可以学到

1定义过程块

可以在ABAP/4中通过使用事件关键字定义过程块。

在事件及其事件关键字(页4–4)中对可能的事件关键字进行了说明。

两个事件关键字之间或事件关键字与FORM语句之间的所有语句(参见定义子程序(页错误!

链接无效。

))构成过程块。

出现事件时,系统将在相应事件关键字之后处理过程块。

ABAP/4报表程序中的所有语句都是过程块或子程序的一部分。

没有紧跟着事件关键字或FORM-ENDFORM块的语句自动成为默认事件START-OF-SELECTION过程块的一部分(关于此默认事件的详细信息,参见START-OF-SELECTION(页4–14))。

这样将有下列影响:

_如果在REPORT或PROGRAM语句与第一个事件关键字或FORM语句之间写语句,则将把这些语句包括在START-OF-SELECTION过程块中。

-如果没有把START-OF-SELECTION关键字包括在报表中,则这些语句构成整个START-OF-SELECTION过程块。

-如果将START-OF-SELECTION关键字包括在报表中,则将把这些语句插入到此块的开始部分。

_如果没有在程序中指定事件关键字,则该程序FORM语句之前的所有语句构成START-OF-SELECTION过程块。

注意,这种情况下,永远不会执行FORM-ENDFORM块之后的所有语句。

因为通过事件唯一切换执行顺序,所以在程序中过程块的出现顺序是没有任何关系的。

但是,为了保证可读性,在程序中应该以过程块的执行顺序排列它们。

与操作或控制语句不一样,系统在生成程序时而不是在运行时间中执行说明性语句(关于说明性语句的详细信息,参见关键字(页错误!

链接无效。

))。

对它们的执行与它们在程序代码中的位置无关,并且可以属于任何过程块。

为清楚起见,应该把所有说明性的关键字放到程序或子程序的开始处。

REPORTSAPMZTST.

WRITE/'Statement1'.

FORMROUTINE.

WRITE/'Subroutine'.

ENDFORM.

WRITE/'Statement2'.

PERFORMROUTINE.

WRITE/'Statement3'.

输出如下所示:

Statement1

在此程序中,只执行了START-OF-SELECTION过程块。

此块包含第一个WRITE语句。

现在,按照下列方法把START-OF-SELECTION语句插入程序中:

REPORTSAPMZTST.

WRITE/'Statement1'.

FORMROUTINE.

WRITE/'Subroutine'.

ENDFORM.

START-OF-SELECTION.

WRITE/'Statement2'.

PERFORMROUTINE.

WRITE/'Statement3'.

输出如下所示:

Statement1

Statement2

Subroutine

Statement3

在此程序中,START-OF-SELECTION过程块包含除FORM-ENDFORM块之外的所有语句。

下列是此程序更易读的形式:

REPORTSAPMZTST.

START-OF-SELECTION.

WRITE/'Statement1'.

WRITE/'Statement2'.

PERFORMROUTINE.

WRITE/'Statement3'.

FORMROUTINE.

WRITE/'Subroutine'.

ENDFORM.

在程序的这种形式中,也可以忽略START-OF-SELECTION语句。

2ABAP/4处理程序

报表程序是过程块的集合,执行该程序以对特定事件作出反应,特别是使用逻辑数据库时。

可以把这些块视为可调用模块。

在程序代码中,它们不需要以任何特殊的顺序出现。

一旦调用报表程序,系统就启动另一个进程(控制程序),该进程调用这些模块,并控制外部程序流。

此控制程序是ABAP/4处理程序。

它监视ABAP/4报表程序、逻辑数据库程序和其他程序模块(例如对话屏幕)之间的交互作用。

它也解释ABAP/4程序的运行时间对象。

必须生成每个ABAP/4程序,在ABAP/4编辑器中编写这些程序,以创建其运行时间对象。

这既适用于报表程序,也适用于逻辑数据库程序。

即可以在ABAP/4编辑器中通过选择“程序->生成”执行该生成,也可以在“ABAP/4编辑器:

初始屏幕”上通过选择“生成”执行。

第一次启动报表程序时,自动生成该报表程序。

通过在程序中使用的事件关键字控制ABAP/4处理程序和不同程序之间的交互作用。

例如

_在报表程序START-OF-SELECTION、GET中,等等,

参见事件及其事件关键字(页4–4),

_在逻辑数据库程序PUT中,等等,

参见逻辑数据库的特征和维护(页Error!

Notavalidlink.)。

根据由事件关键字定义的流,ABAP/4处理程序解释相应程序单元,并开始处理它们。

3事件及其事件关键字

这里有几组事件关键字,这些事件关键字在特定环境下控制ABAP/4程序流。

逻辑数据库是典型报表程序的外部流控制的中心点(参见用逻辑数据库访问数据(页错误!

链接无效。

))。

如果将逻辑数据库链接到报表程序,将导致显示选择屏幕,并决定系统如何从数据库表中读取数据。

这引起在下列表中说明的事件序列。

关于事件出现顺序的详细信息,参见逻辑数据库和ABAP/4报表(页Error!

Notavalidlink.)。

下列事件出现在典型报表程序的运行时间处,该报表程序使用逻辑数据库:

事件关键字

事件

INITIALIZATION(页4–5)

在显示选择屏幕之前的点

ATSELECTION-SCREEN(页4–8)

选择屏幕仍然活动时,处理用户在选择屏幕上输入之后的点

START-OF-SELECTION(页4–14)

处理选择屏幕之后的点

GET

(页4–15)

点位于逻辑数据库提供数据库表

的行处。

GET

LATE(页4–18)

处理所有表之后的点,在逻辑数据库的结构中,使这些表位于数据库表

的下层。

END-OF-SELECTION(页4–20)

处理完逻辑数据库提供的所有行之后的点。

下列主题说明这些事件的过程块。

处理和显示报表程序输出列表时,出现其他没有连接到逻辑数据库的事件。

可以用这些事件格式化输出列表,并使报表程序成为交互式的。

在适当的节中将继续说明这些事件。

处理报表程序输出列表时,出现下列事件:

事件关键字

事件

TOP-OF-PAGE

启动新页时,列表处理中的点

END-OF-PAGE

结束页时,列表处理中的点

可以用这些关键字改善输出列表的格式。

说明参见创建列表(页Error!

Notavalidlink.)。

下列事件出现在报表程序输出列表的显示中:

事件关键字

事件

ATLINE-SELECTION

用户在该点处选择行

ATUSER-COMMAND

用户在该点处按下功能键或在命令字段中输入命令

ATPF

用户在该点处按下有功能代码PF的功能键

可以使用这些关键字编写交互式报告的程序。

详情参见交互式列表(页Error!

Notavalidlink.)。

关于所有事件关键字的详细说明,参见事件关键字文档。

3INITIALIZATION

启动已定义选择屏幕的程序(在程序自身或在被链接的逻辑数据库程序中)时,系统通常首先处理此选择屏幕。

如果希望在处理选择屏幕之前执行过程块,可以把它分配到事件关键字INITIALIZATION。

在此块中,指定初始化选择屏幕的语句,例如通过更改参数或选择标准的默认值。

这只对在逻辑数据库中定义的参数或选择标准才有效。

对于选择标准,应该通过更改选择表的表头行并把它附加到表中,至少定义选择表的组件-SIGN、-OPTION、-LOW(参见选择表(页错误!

链接无效。

))。

否则,可能未定义部分选择标准。

如果希望通过检查逻辑数据库SAPDB自己(使用事务SLDB或通过选择“工具->ABAP/4开发工作台->开发->编程环境->逻辑数据库”),或通过检索字段的技术信息而更改内部字段,可以找到该字段的名称。

为此,在选择屏幕上选择输入字段,并按下F1。

然后,选择对话框中的“技术信息”。

在下列窗口的字段“屏幕字段”中,将会看到程序中使用的字段名称。

假定有链接到逻辑数据库F1S的报表程序:

REPORTSAPMZTST.

PARAMETERSFIRSTDAYLIKESY-DATUMDEFAULTSY-DATUM.

TABLESSPFLI.

启动此程序时,将自动出现下列选择屏幕:

在逻辑数据库F1S中定义有选择文本“承运方ID”的选择标准,以及有选择文本“从”和“到”的参数(参见选择文本(页错误!

链接无效。

))。

在程序自身中定义参数FIRSTDAY。

例如,现在选择“承运方ID”的第一个输入字段,按下F1,然后选择“技术信息”,以找到选择表的名称:

在字段“屏幕字段”中,将看到名称CARRID-LOW,它是对应于选择输入的选择表的组件。

从这里看到选择标准的名称是CARRID。

在上面所述的相同过程中,可以发现把输入字段“从”和“到”命名为CITY_FR和CITY_TO。

现在,可以按照下列方法更改报表程序:

REPORTSAPMZTST.

PARAMETERSFIRSTDAYLIKESY-DATUMDEFAULTSY-DATUM.

TABLESSPFLI.

INITIALIZATION.

CITY_FR='NEWYORK'.

CITY_TO='FRANKFURT'.

CARRID-SIGN='I'.

CARRID-OPTION='EQ'.

CARRID-LOW='AA'.

APPENDCARRID.

FIRSTDAY+6

(2)='01'.

启动SAPMZTST之后,选择屏幕如下:

更改了选择标准的默认值和所有参数。

4ATSELECTION-SCREEN

事件关键字ATSELECTION-SCREEN提供了好几种在系统处理选择屏幕时执行过程块的方法。

为了对处理选择屏幕时出现的不同事件都有效,关键字ATSELECTION-SCREEN有不同选项。

与PARAMETERS和SELCECT-OPTIONS语句的特殊选项一起,在使用选择屏幕(页错误!

链接无效。

)中显示了关键字AT-SELECTION屏幕的某些应用。

如果指定字段的关键字没有任何选项,则在系统处理完选择屏幕之后启动相应过程块。

如果从此过程块中发送ERRORMESSAGE,则系统将又显示选择屏幕,并且可以更改所有输入字段。

必须提供适当的ERRORMESSAGE。

例如,此方法可以输入字段命令,尽管没有在逻辑数据库程序中使用PARAMETERS或SELECT-OPTIONS语句的OBLIGATORY选项定义它们。

在表T100中存储和维护MESSAGE。

通过语言、两个字符的ID和三位数字对它们进行分组,可以从程序中以不同条件发送MESSAGE:

_A:

Abend,终止当前事务

_E:

错误,系统等待新输入数据

_I:

信息,处理ENTER之后,系统继续处理

_S:

确认,消息出现在下一屏上

_W:

警告,可以更改输入数据或通过按ENTER继续

必须在程序的REPORT或PROGRAM语句之后指定MESSAGE-ID。

通过ABAP/4编辑器,选择“编辑->插入语句...”,可以很容易地将MESSAGE包括到程序中。

也可以从这里更改MESSAGE。

关于报表中MESSAGE处理的详细信息,参见列表中的消息(页Error!

Notavalidlink.)。

将逻辑数据库F1S附加到下列报表程序:

REPORTSAPMZTSTMESSAGE-IDHB.

TABLESSPFLI.

ATSELECTION-SCREEN.

IFCARRID-LOWISINITIAL

ORCITY_FRISINITIAL

ORCITY_TOISINITIAL.

MESSAGEE000.

ENDIF.

此报表使用有IDHB的MESSAGE。

启动SAPMZTST之后,选择屏幕显示在逻辑数据库F1S中定义的内容。

一旦用户不把值输入到每个输入字段中,下列错误信息就将出现在屏幕的状态栏中。

在表T100中,以IDHB为此例子编写了MESSAGE000代码。

事件关键字ATSELECTION-SCREEN的选项使您能够在处理选择屏幕时为特定事件创建过程块。

在下列主题中说明这些事件:

在下列主题中即将介绍这些选项。

详细信息,参见关于ATSELECTION-SCREEN的关键字文档。

 

5处理特殊输入字段

要在处理选择屏幕的特殊输入字段之后启动过程块,请按照下列方法使用关键字ATSELECTION屏幕:

语法:

ATSELECTION-SCREENON.

系统处理了变量的输入字段之后,启动相应过程块。

如果从此过程块中发送ERRORMESSAGE,则系统再次显示选择屏幕,用户仅必须更改变量的输入字段。

将逻辑数据库F1S附加到下列报表程序。

REPORTSAPMZTSTMESSAGE-IDHB.

TABLESSPFLI.

ATSELECTION-SCREENONCITY_FR.

IFCITY_FRNE'NEWYORK'.

MESSAGEE010.

ENDIF.

如果用户没有在选择屏幕中的字段“从”中插入“NEWYORK”,则下列ERRORMESSAGE会出现在屏幕的状态栏中,

直到用户作出正确输入。

在表T100中,以此IDHB为例编写了MESSAGE010代码。

5处理多重选择

将特殊选择标准的复杂选择输入到选择屏幕的“多重选择”窗口,并处理此窗口之后(参见SELECT-OPTIONS语句的基本格式(页错误!

链接无效。

)中的例子),可以调用过程块,为此,请按照下列方法使用ATSELECTION-SCREEN语句:

语法

ATSELECTION-SCREENONENDOF.

在处理选择标准的“复杂选择”窗口结束处启动相应过程块。

可以使用这些选项检查内表中的条目。

将逻辑数据库F1S附加到下列报表程序中。

REPORTSAPMZTSTMESSAGE-IDHB.

TABLESSPFLI.

ATSELECTION-SCREENONENDOFCARRID.

LOOPATCARRID.

IFCARRID-HIGHNE''.

IFCARRID-LOWISINITIAL.

MESSAGEW020.

ENDIF.

ENDIF.

ENDLOOP.

启动SAPMZTST之后,如果用户在选择屏幕上单击箭头图标,然后在“多重选择”窗口中输入范围选择的上限,而不输入下限,则出现下列对话框,并发出警告:

在表T100中,以此IDHB为例编写了MESSAGE020代码。

6创建输入值列表

You通过按照下列方法使用ATSELECTION-SCREEN语句,可以为选择屏幕上的输入字段创建可能输入值的列表:

语法

ATSELECTION-SCREENONVALUE-REQUESTFOR.

如果使用此语句,在选择屏幕上选定参数或选择标准的输入字段时,会自动紧跟着该字段出现可能的登录按钮。

只可以在报表程序中使用此语句。

在逻辑数据库程序中,可以使用PARAMETERS和SELECT-OPTIONS语句的VALUE-REQUEST选项(参见关键字文档)。

必须在ATSELECTION-SCREENONVALUEREQUEST语句的过程块内为编写建议值列表程序。

用户单击可能的登录按钮或按下F4时,将显示此列表。

如何编写这种列表的代码是对话编程的范畴,并在编写字_-和值-帮助程序(页Error!

Notavalidlink.)中作了介绍。

PARAMETERSFIELD(10).

ATSELECTION-SCREENONVALUE-REQUESTFORFIELD.

参数如下:

 

如果为FIELD编写了建议值列表,并且用户单击了可能的登录按钮,则将显示它。

6创建输入字段的帮助

通过按照下列方法使用ATSELECTION-SCREEN语句,可以为选择屏幕上的输入字段创建自己的帮助:

语法

ATSELECTION-SCREENONHELP-REQUESTFOR.

如果使用此语句,用户在选择屏幕上选择的输入字段,并按下F1键时,将显示帮助文本。

只可以在报表程序中使用此语句。

在逻辑数据库程序中,使用PARAMETERS和SELECT-OPTIONS语句的HELP-REQUEST选项(参见关键字文档)。

必须在ATSELECTION-SCREENONHELPREQUEST语句的过程块内编写帮助文本的程序。

如何编写这种帮助的代码是对话编程的范畴,并在编写字_-和值-帮助程序(页Error!

Notavalidlink.)中作了介绍。

6处理单选按钮组

在选择屏幕上处理完单选按钮组之后(参见在选择屏幕上创建单选按钮组(页错误!

链接无效。

)),要启动过程块,请按照下列方法使用关键字ATSELECTION屏幕:

语法:

ATSELECTION-SCREENONRADIOBUTTONGROUP.

系统处理单选按钮组后启动相应过程块。

如果从过程块中发送ERRORMESSAGE,则系统又显示选择屏幕,用户只必须更改单选按钮的输入字段。

REPORTSAPMZTSTMESSAGE-IDHB.

PARAMETERS:

R1RADIOBUTTONGROUPRAD1DEFAULT'X',

R2RADIOBUTTONGROUPRAD1,

R3RADIOBUTTONGROUPRAD1.

ATSELECTION-SCREENONRADIOBUTTONGROUPRAD1.

IFR1='X'.

MESSAGEI030.

ENDIF.

如果用户没有更改选择屏幕上的单选按钮,将出现下列INFORMATIONMESSAGE:

在表T100中,以此IDHB为例编写了MESSAGE030代码。

7处理输入字段块

在选择屏幕上处理完元素块(参见创建元素块(页错误!

链接无效。

))之后启动过程块,请按照下列方法使用关键字ATSELECTION屏幕:

语法:

ATSELECTION-SCREENONBLOCK.

系统处理完元素块时启动相应过程块。

如果从此过程块中发送ERRORMESSAGE,则系统再次显示选择屏幕,用户只必须更改块的输入字段。

REPORTSAPMZTSTMESSAGE-IDHB.

SELECTION-SCREENBEGINOFBLOCKPART1

WITHFRAMETITLETEXT-001.

PARAMETERS:

NUMBER1TYPEI,

NUMBER2TYPEI,

NUMBER3TYPEI.

SELECTION-SCREENENDOFBLOCKPART1.

ATSELECTION-SCREENON

展开阅读全文
相关搜索
资源标签

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2