sapabap使用选择屏幕.docx
《sapabap使用选择屏幕.docx》由会员分享,可在线阅读,更多相关《sapabap使用选择屏幕.docx(28页珍藏版)》请在冰豆网上搜索。
![sapabap使用选择屏幕.docx](https://file1.bdocx.com/fileroot1/2022-11/27/a0b62403-6de8-4a9a-9ba7-428739e53be7/a0b62403-6de8-4a9a-9ba7-428739e53be71.gif)
sapabap使用选择屏幕
第二章1使用选择屏幕
概览
内容
选择屏幕是报表程序的一部分,您可以设计选择屏幕以便交互输入字段值和选择标准。
在报表程序启动之后,用户在该屏幕中输入值。
关于选择屏幕概念的详细信息,参见
关于选择屏幕与逻辑数据库之间关系的简要介绍,参见
在ABAP/4程序中,可以使用下列语句设计选择屏幕:
_PARAMETERS,为变量定义输入字段
_SELECT-OPTIONS,为选择标准定义输入字段
_SELECTION-SCREEN,格式化选择屏幕
下列主题讨论
1选择屏幕是什么?
正如您从声明数据(页3–1)部分所知道的,您可以给内部变量分配初始值。
但是,不象C语言有GETC,FORTRAN语言有READ,或者BASIC语言有INPUT,ABAP/4没有关键字可以允许您在程序流的任何一点上交互地输入值。
要创建交互式的ABAP/4程序,必须使用在编写ABAP/4事务(页Error!
Notavalidlink.).中描述的对话编程方法。
这意味着您必须创建事务、编写ABAP/4模块存储程序,并用屏幕绘制器和菜单绘制器设计屏幕(参见文档ABAP/4工作台工具(页Error!
Notavalidlink.))。
通过选择屏幕,ABAP/4还为报表程序提供了一个交互元素。
您可以定义选择屏幕而不必影响对话编程所要求的所有细节。
例如,您可以用简单语句创建字段、复选框或单选按钮,并设计屏幕布局。
系统自动为您处理屏幕绘制器的实际任务。
总是在报表程序启动后直接处理选择屏幕(参见通过事件控制ABAP/4程序流(页Error!
Notavalidlink.))。
用户可以在该屏幕中输入字段值和选择标准。
对于每个报表程序,输入值集可以按变体(参见使用变式预设置选择(页Error!
Notavalidlink.))创建和存储。
选择屏幕上的文本可以按依赖于语言的文字摘要(参见选择文本(页5–4))进行维护。
选择屏幕的主要目的是使用户能够控制报表程序的数据库选择。
如果报表程序是用SUBMIT语句(参见调用报表(页Error!
Notavalidlink.))从另一个ABAP/4程序中启动的,则选择屏幕对象还起到数据接口的作用,
通过在报表程序中定义的选择屏幕,您可以使用户能够
_通过PARAMETERS语句给变量分配值
_通过SELECT-OPTIONS语句确定选择标准
逻辑数据库程序通常也包括PARAMETERS和SELECT-OPTIONS语句(参见逻辑数据库的特征和_护(页Error!
Notavalidlink.))。
如果您写通过报表属性与逻辑数据库相连接的报表程序,报表选择屏幕将自动包括相应的输入字段。
您应该尽可能广泛地使用逻辑数据库提供的选择标准。
只有当它们不能满足您的需要时才在您的程序中使用PARAMETERS或SELECT-OPTIONS语句。
由这些语句定义的输入字段将在报表选择屏幕上作为逻辑数据库的附加选择标准出现(示例参见避免将选择标准传递到逻辑数据库(页2–24))
2选择屏幕与逻辑数据库
每个报表程序都与一个逻辑数据库相链接,该逻辑数据库决定选择屏幕的格式。
如果在程序属性中没有指定逻辑数据库,系统将使用标准数据库,该数据库格式化选择屏幕,但是不读取任何数据。
选择屏幕包含逻辑数据库选择和在报表程序中定义的选择。
为逻辑数据库选择显示的输入字段取决于您在程序中用TABLES语句声明的数据库表。
标准数据库的选择屏幕只包含在报表程序中定义的选择。
关于逻辑数据库选择的详细信息,参见逻辑数据库的特征和_护(页Error!
Notavalidlink.)。
逻辑数据库F1S被附加到下列报表程序。
F1S的结构是:
假设下列报表程序:
REPORTSAPMZTST.
TABLESSPFLI.
启动SAPMZTST后,选择屏幕如下所示:
这些是选择标准的输入字段和数据库表SPFLI各列的参数。
在逻辑数据库程序中编码定义该屏幕的语句(SELECT-OPTIONS和PARAMETERS)。
现在,假设下列报表程序:
REPORTSAPMZTST.
TABLESSBOOK.
启动SAPMZTST后,选择屏幕如下所示:
系统不仅显示与数据库表SBOOK相连的选择标准的输入字段,而且显示那些与表SPFLI和SFLIGHT相连的选择标准。
出现在逻辑数据库选择屏幕中的输入字段通常是在逻辑数据库程序中用SELECT-OPTIONS语句(参见定义选择标准(页2–17))定义的。
使用这些语句来限制对数据库的访问,例如通过SELECT语句的WHERE子句(参见在WHERE子句中使用选择表(页2–26))。
示例参见逻辑数据库示例(页Error!
Notavalidlink.)。
逻辑数据库可以提供一个特征以便报表用户指定动态选择,这些动态选择在逻辑数据库程序中没有用SELECT-OPTIONS语句编码。
如果逻辑数据库提供动态选择,用户通过单击选择屏幕上应用工具条的“用户选择”访问这些选择。
将显示新的选择屏幕或屏幕,用户可以在其中选择为要其指定选择标准的数据库字段。
对于逻辑数据库F1S,动态选择的屏幕可能如下所示:
动态选择通过使用动态WHERE条件限制对逻辑数据库程序(参见运行时指_行选择的条件(页11–22))对数据库进行访问。
必须在逻辑数据库程序中编码动态选择的可能性(参见编辑选择(页Error!
Notavalidlink.))。
如果逻辑数据库允许动态选择(“动态选择”出现在应用工具条中),则可以使用ABAP/4集成开发环境定义允许用户在哪些数据库表和列上定义动态选择(选择视图)。
要找出哪些数据库表提供动态选择,请选择“工具->ABAP/4开发工具台->开发->编程环境->逻辑数据库->细节->动态选择”。
在下一个屏幕中,您将看到这些数据库表名称的列表。
对于逻辑数据库F1S,只有数据库表SPFLI提供动态选择:
3为变量定义输入字段
如果您想使报表程序的用户能在选择屏幕中输入变量值,则必须用PARAMETERS语句定义变量。
每个用PARAMETERS语句定义的变量将在选择屏幕上作为输入字段出现。
PARAMETERS语句具有一些在报表程序环境中很重要的变体。
这些变体在下列主题中进行解释:
在逻辑数据库程序中使用的PARAMETERS语句的附加变体也是有效的。
(参见关键字文档和逻辑数据库的特征和_护(页Error!
Notavalidlink.))。
3PARAMETERS语句基本格式
可以按照用DATA语句(参见DATA语句(页3–14))声明字段的方式用PARAMETERS语句声明字段。
用PARAMETERS语句声明的字段称为参数。
通常,输入字段的所有参数都将出现在选择屏幕上。
系统处理输入屏幕时,报表用户在这些输入字段中键入的值将被分配给相应的参数。
要声明参数及其数据类型,请使用PARAMETERS语句,如下所示:
语法
PARAMETERS
[()][].
该语句创建参数
。
附加项、和与DATA语句相同(参见DATA语句的基本格式(页3–14))。
用户启动报表程序时,
的输入字段将出现在选择屏幕中。
您可以如选择文本(页5–4)中描述的那样通过使用文字摘要来更改输入字段左侧的说明。
REPORTSAPMZTST.
TABLESSPFLI.
PARAMETERS:
WORD(10)TYPEC,
DATETYPED,
NUMBERTYPEPDECIMALS2,
CONNECTLIKESPFLI-CONNID.
该示例创建四个字段,即字符字段WORD,长度为10;日期字段DATE,长度为8;组合式数据字段NUMBER,两位小数;字段CONNECT,引用ABAP/4词典结构SPFLI-CONNID。
用户启动报表SAPMZTST时,声明的四个字段的输入字段将出现在选择屏幕中,如下所示:
例如,您可以使用参数控制程序流,或者与SELECT语句相连接,使报表用户能够决定数据库访问的选择标准(参见选择即将读取的行(页11–18))。
TABLESSPLFI.
PARAMETERS:
LOWLIKESPFLI-CARRID,
HIGHLIKESPFLI-CARRID.
SELECT*FROMSPLFIWHERECARRIDBETWEENLOWANDHIGH.
........
ENDSELECT.
在该示例中,系统从数据库表SPFLI读入所有行,其中字段CARRID的内容在界限LOW和HIGH之间。
报表用户可以在选择屏幕中输入LOW和HIGH字段。
如果使用PARAMETERS语句定义WHERE条件,则必须在报表程序中编码所有可能的选择选项。
对于复杂选择,最好使用选择标准,它们存储在内表中。
(参见选择标准是什么?
(页2–12))。
4给参数分配缺省值
要为将显示在选择屏幕上的输入字段分配缺省值,请使用PARAMETERS语句的DEFAULT选项。
语法如下:
语法
PARAMETERS
......DEFAULT......
可以是文字或字段名。
如果指定字段名,则系统将按缺省值处理该字段的内容。
报表用户可以在选择屏幕中更改缺省值。
系统在时间事件INITIALIZATION(参见INITIALIZATION(页Error!
Notavalidlink.))之前将缺省值传输给参数。
因此,对于那些在用户启动程序时已经被填充的字段,应该使用字段名而不是文字作为字段的缺省值。
例如,这些字段是系统字段(参见系统ㄒ宓_数据韵_(页3–12))。
REPORTSAPMZTST.
PARAMETERS:
VALUETYPEIDEFAULT100,
NAMELIKESY-UNAMEDEFAULTSY-UNAME,
DATELIKESY-DATUMDEFAULT'19950627'.
如果报表用户名为FRED,选择屏幕如下所示:
请注意,字段DATE的缺省值在选择屏幕中按用户主记录中的格式出现。
4禁止参数显示
要禁止在选择屏幕中显示参数,请使用PARAMETERS语句的NO-DISPLAY选项。
语法如下:
语法
PARAMETERS
......NO-DISPLAY......
创建参数,并通过DEFAULT选项在时间事件INITIALIZATION(参见INITIALIZATION(页Error!
Notavalidlink.))中内部赋值,或者,如果报表是用SUBMIT启动的,则由调用程序进行外部赋值。
如果想只在某种条件下才显示参数,例如,根据报表用户在选择屏幕的其它输入字段中输入的值决定是否显示参数,则请您不要使用NO-DISPLAY选项。
如果使用了这个选项,参数就不是选择屏幕的元素,而且您也不能用MODIFYSCREEN语句(参见给修改组分配参数(页2–11))使它可见。
要使参数成为选择屏幕的隐藏元素,请不带NO-DISPLAY选项声明该参数,并通过使用MODIFYSCREEN语句禁止显示它。
4允许参数接受大小写
要允许用户用大写或小写字母输入参数值,请使用PARAMETERS语句的LOWERCASE选项。
语法如下:
语法
PARAMETERS
......LOWERCASE......
如果没有LOWERCASE选项,系统将所有输入值更改为大写。
如果使用LIKE选项从ABAP/4词典中引用字段,参数将接受ABAP/4字段的所有属性。
不能更改这些属性,也不能使用LOWERCASE选项。
必须在ABAP/4词典中定义是否可以输入大写或小写值。
REPORTSAPMZTST.
PARAMETERS:
FIELD1(10),
FIELD2(10)LOWERCASE.
WRITE:
FIELD1,FIELD2.
假设选择屏幕上有下列输入值:
输出如下所示:
UPPERlower
FIELD1的内容变为大写。
5制作需要的输入字段的参数
要制作需要的输入字段的参数,请使用PARAMETERS语句的OBLIGATORY选项。
语法如下:
语法
PARAMETERS
......OBLIGATORY......
使用该选项时,在参数
的输入字段上将出现一个问号。
用户如果不在选择屏幕的这个字段上输入值,程序就无法继续执行。
REPORTSAPMZTST.
PARAMETERSFIELD(10)OBLIGATORY.
最终的选择屏幕如下所示:
5在选择屏幕上创建复选框
要为参数输入定义复选框,请使用PARAMETERS语句的ASCHECKBOX选项。
语法如下:
语法
PARAMETERS
......ASCHECKBOX......
参数
按长度为1的类型C创建。
在这种情况下,不允许使用附加选项TYPE和LIKE。
的有效值是‘’和‘X’。
这些值在用户单击选择屏幕上的复选框时赋给参数。
PARAMETERS:
AASCHECKBOX,
BASCHECKBOXDEFAULT'X'.
在该示例中,两个复选框出现在选择屏幕的左侧,它们的右侧出现字段的名称。
复选框B具有缺省值‘X’。
当用户单击这些复选框时,值‘X’和‘’将分配给相应的参数。
如果使用PARAMETERS语句的LIKE选项参阅ABAP/4词典的字段,该字段类型为CHAR,长度为1,允许的值是‘X’和‘’(在字段的域中定义,参见文档ABAP/4词典(页Error!
Notavalidlink.)),则该参数将自动作为复选框出现在选择屏幕上。
6在选择屏幕上创建单选按钮组
要为参数输入定义单选按钮组,请使用PARAMETERS语句的RADIOBUTTONGROUP选项。
语法如下:
语法
PARAMETERS
......RADIOBUTTONGROUP......
参数
按类型C,长度1创建,并分配到组。
字符串的最大长度是4。
允许使用附加的LIKE选项,但是必须参阅类型为C、长度为1的字段。
必须为每个组分配至少两个参数。
每个组中只有一个参数可以用DEFAULT选项分配的缺省值。
该值必须是‘X’。
当用户单击选择屏幕中的单选按钮时,相应的参数被激活(分配值‘X’),同时同组的其它参数被设为非活动的(赋值‘’)。
PARAMETERS:
R1RADIOBUTTONGROUPRAD1,
R2RADIOBUTTONGROUPRAD1DEFAULT'X',
R3RADIOBUTTONGROUPRAD1,
S1RADIOBUTTONGROUPRAD2,
S2RADIOBUTTONGROUPRAD2,
S3RADIOBUTTONGROUPRAD2DEFAULT'X'.
在该示例中,R1、R2和R3形成一个单选按钮组,而S1、S2和S3形成另一个组。
在选择屏幕中,当其它按钮非活动时R2和S3被激活。
如果没有使用DEFAULT选项,每个组的第一个参数(即R1和S1)将被激活并分配值‘X’。
6从SAP内存中使用缺省值
PARAMETERS语句的MEMORY-ID选项允许您从全局SAP内存(SPA/GPA参数)使用缺省值。
语法如下:
语法
PARAMETERS
......MEMORYID......
使用该选项时,以名称存储在全局用户相关的SAP内存中的值将作为的缺省值出现在选择屏幕上。
最长3个字符,并且不能用引号封闭。
可以使用全局SAP内存在程序间传递保留在事务限制以外的值。
用户在整个终端进程期间都可利用该内存,并且所有并行进程使用相同的内存。
因此SAP内存包含的内容要比局限于事务的ABAP/4内存(参见ABAP/4内存中的数据簇(页12–1))更广泛。
参数可以按用户在名为的用户主记录中的说明进行设置。
关于SAP内存的详细信息,参阅SET/GETPARAMETER的关键字文档和在程序间传递数据(页Error!
Notavalidlink.)。
下列报表以“HK”为名称在全局SAP内存中存储值:
REPORTSAPMZTS1.
SETPARAMETERID'HK'FIELD'TestParameter'.
该值在下列报表中作为参数TEST的缺省值使用:
PROGRAMSAPMZTS2.
PARAMETERSTEST(16)MEMORYIDHK.
SAPMZTS2的选择屏幕如下所示:
7给参数分配匹配代码对象
要给参数分配匹配代码对象,请使用PARAMETERS语句的MATCHCODEOBJECT选项。
语法如下:
语法
PARAMETERS
......MATCHCODEOBJECT......
匹配代码对象的名称必须是4字符的变量名,并且不能用引号封闭。
如果使用该选项,则可能的条目按钮将在参数
的输入字段之后出现。
用户按下该按钮时,其结果是为执行输入字段的匹配代码选择。
关于匹配代码的详细信息,参阅文档ABAP/4词典(页Error!
Notavalidlink.)。
PARAMETERSCONN(10)MATCHCODEOBJECTSPFL.
单击可能的条目按钮后,在选择屏幕上将出现下列对话框:
匹配代码对象SPFL用于查找航班号。
通过在字段上安置光标,输入值并选择“返回”,用户将获得与输入值相匹配的航班号列表,例如,特定承运方的所有航班。
7给修改组分配参数
要将参数分配给修改组(该参数可用于随后的屏幕修改),请使用PARAMTERS语句的MODIFID选项,如下所示:
语法
PARAMETERS
......MODIFID......
修改组的名称必须是不带引号的3字符变量名。
MODIFID选项总是把分配到内表SCREEN的SCREEN-GROUP1列。
在ATSELECTION-SCREENOUTPUT事件(参见选择屏幕的PBO(页Error!
Notavalidlink.))中,分配给修改组的参数可以用LOOPATSCREEN/MODIFYSCREEN语句按整个组进行处理。
有关修改组和内表SCREEN的详细信息,参见LOOPATSCREEN的关键字文档或文档工作台工具(页Error!
Notavalidlink.).中有关屏幕修改的部分。
PARAMETERS:
TEST1(10)MODIFIDSC1,
TEST2(10)MODIFIDSC2,
TEST3(10)MODIFIDSC1,
TEST4(10)MODIFIDSC2.
ATSELECTION-SCREENOUTPUT.
LOOPATSCREEN.
IFSCREEN-GROUP1='SC1'.
SCREEN-INTENSIFIED='1'.
MODIFYSCREEN.
CONTINUE.
ENDIF.
IFSCREEN-GROUP1='SC2'.
SCREEN-INTENSIFIED='0'.
MODIFYSCREEN.
ENDIF.
ENDLOOP.
在PARAMETERS语句中,参数TEST1和TEST3被分配给组SC1,而TEST2和TEST4被分配给组SC2。
在ATSELECTION-SCREENOUTPUT事件中,按照GROUP1字段的内容,内表SCREEN的字段INTENSIFIED被设置为1或0。
在选择屏幕中,TEST1和TEST3所在行被设置为高亮度,而TEST2和TEST4则不是,如下所示:
8使用选择标准
在ABAP/4中,选择标准存储在特殊内表中,以方便设置数据库访问条件。
每个选择标准通常分配到数据库表的特定列。
可以用SELECT-OPTIONS语句定义选择标准。
如果在报表程序中用SELECT-OPTIONS语句定义了选择标准,系统将在报表选择屏幕中自动创建输入字段。
这样,用户可以为访问相关的数据库表输入条件。
8选择标准是什么?
要使报表用户能够在选择屏幕中输入对数据库访问的限制,您可以使用选择标准。
它们提供方便的方式以限制程序从数据库表到某个子集对数据进行访问