在写ABAP程序过程中,经常会遇到一些按照业务顾问要求定义好的分类、枚举等内容,在程序中写死了又不利于以后维护,(何况业务的问题说变就变,说不定那天业务顾问脑袋短路了,就提出新的分类要求,如此一来程序中各处用到的都要做相应的修改,特别是讨厌的输出显示部分),如果将这些分类等对应内容存放到selection-screen中的selection-option中,即解决了程序中的调用问题(selection-option是一个灵活的内表,可以存放单值、多值、区间等数据),又给用户提供了进行分类修改和自定义的界面
在选屏中添加SELECTION-OPTION。
然后在选屏中结合 设置变式 ,就可以满足未来分类变化的需要了
在选屏中添加SELECTION-OPTION。
SELECTION-SCREEN: BEGIN OF BLOCK FRAME02 WITH FRAME TITLE TEXT-
003
.
SELECTION-SCREEN COMMENT / 1 ( 30 ) COMM1. "
SELECT-OPTIONS S_MASS1 FOR ANLA-ANLKL NO INTERVALS.
SELECT-OPTIONS S_MASS2 FOR ANLA-ANLKL NO INTERVALS.
SELECT-OPTIONS S_MASS3 FOR ANLA-ANLKL NO INTERVALS.
SELECT-OPTIONS S_MASS4 FOR ANLA-ANLKL NO INTERVALS.
SELECT-OPTIONS S_MASS5 FOR ANLA-ANLKL NO INTERVALS.
SELECT-OPTIONS S_MASS6 FOR ANLA-ANLKL NO INTERVALS.
SELECT-OPTIONS S_MASS7 FOR ANLA-ANLKL NO INTERVALS.
SELECT-OPTIONS S_MASS8 FOR ANLA-ANLKL NO INTERVALS.
SELECT-OPTIONS S_MASS9 FOR ANLA-ANLKL NO INTERVALS.
SELECT-OPTIONS S_MASS10 FOR ANLA-ANLKL NO INTERVALS.
SELECTION-SCREEN COMMENT /1(30) COMM2. "
SELECT-OPTIONS S_MASS11 FOR ANLC-BUKRS NO INTERVALS.
SELECT-OPTIONS S_MASS12 FOR ANLC-BUKRS NO INTERVALS.
SELECT-OPTIONS S_MASS13 FOR ANLC-BUKRS NO INTERVALS.
SELECT-OPTIONS S_MASS14 FOR ANLC-BUKRS NO INTERVALS.
SELECT-OPTIONS S_MASS15 FOR ANLC-BUKRS NO INTERVALS.
SELECT-OPTIONS S_MASS16 FOR ANLC-BUKRS NO INTERVALS.
SELECT-OPTIONS S_MASS17 FOR ANLC-BUKRS NO INTERVALS.
SELECT-OPTIONS S_MASS18 FOR ANLC-BUKRS NO INTERVALS.
SELECT-OPTIONS S_MASS19 FOR ANLC-BUKRS NO INTERVALS.
SELECT-OPTIONS S_MASS20 FOR ANLC-BUKRS NO INTERVALS.
SELECT-OPTIONS S_MASS21 FOR ANLC-BUKRS NO INTERVALS.
SELECT-OPTIONS S_MASS22 FOR ANLC-BUKRS NO INTERVALS.
SELECT-OPTIONS S_MASS23 FOR ANLC-BUKRS NO INTERVALS.
SELECT-OPTIONS S_MASS24 FOR ANLC-BUKRS NO INTERVALS.
SELECT-OPTIONS S_MASS25 FOR ANLC-BUKRS NO INTERVALS.
SELECT-OPTIONS S_MASS26 FOR ANLC-BUKRS NO INTERVALS.
SELECT-OPTIONS S_MASS27 FOR ANLC-BUKRS NO INTERVALS.
SELECTION-SCREEN: END OF BLOCK FRAME02.
SELECTION-SCREEN COMMENT / 1 ( 30 ) COMM1. "
SELECT-OPTIONS S_MASS1 FOR ANLA-ANLKL NO INTERVALS.
SELECT-OPTIONS S_MASS2 FOR ANLA-ANLKL NO INTERVALS.
SELECT-OPTIONS S_MASS3 FOR ANLA-ANLKL NO INTERVALS.
SELECT-OPTIONS S_MASS4 FOR ANLA-ANLKL NO INTERVALS.
SELECT-OPTIONS S_MASS5 FOR ANLA-ANLKL NO INTERVALS.
SELECT-OPTIONS S_MASS6 FOR ANLA-ANLKL NO INTERVALS.
SELECT-OPTIONS S_MASS7 FOR ANLA-ANLKL NO INTERVALS.
SELECT-OPTIONS S_MASS8 FOR ANLA-ANLKL NO INTERVALS.
SELECT-OPTIONS S_MASS9 FOR ANLA-ANLKL NO INTERVALS.
SELECT-OPTIONS S_MASS10 FOR ANLA-ANLKL NO INTERVALS.
SELECTION-SCREEN COMMENT /1(30) COMM2. "
SELECT-OPTIONS S_MASS11 FOR ANLC-BUKRS NO INTERVALS.
SELECT-OPTIONS S_MASS12 FOR ANLC-BUKRS NO INTERVALS.
SELECT-OPTIONS S_MASS13 FOR ANLC-BUKRS NO INTERVALS.
SELECT-OPTIONS S_MASS14 FOR ANLC-BUKRS NO INTERVALS.
SELECT-OPTIONS S_MASS15 FOR ANLC-BUKRS NO INTERVALS.
SELECT-OPTIONS S_MASS16 FOR ANLC-BUKRS NO INTERVALS.
SELECT-OPTIONS S_MASS17 FOR ANLC-BUKRS NO INTERVALS.
SELECT-OPTIONS S_MASS18 FOR ANLC-BUKRS NO INTERVALS.
SELECT-OPTIONS S_MASS19 FOR ANLC-BUKRS NO INTERVALS.
SELECT-OPTIONS S_MASS20 FOR ANLC-BUKRS NO INTERVALS.
SELECT-OPTIONS S_MASS21 FOR ANLC-BUKRS NO INTERVALS.
SELECT-OPTIONS S_MASS22 FOR ANLC-BUKRS NO INTERVALS.
SELECT-OPTIONS S_MASS23 FOR ANLC-BUKRS NO INTERVALS.
SELECT-OPTIONS S_MASS24 FOR ANLC-BUKRS NO INTERVALS.
SELECT-OPTIONS S_MASS25 FOR ANLC-BUKRS NO INTERVALS.
SELECT-OPTIONS S_MASS26 FOR ANLC-BUKRS NO INTERVALS.
SELECT-OPTIONS S_MASS27 FOR ANLC-BUKRS NO INTERVALS.
SELECTION-SCREEN: END OF BLOCK FRAME02.
填充这些SELECTION-OPTION。
INITIALIZATION.
* 设置选择屏幕-××××类型默认值
S_MASS1-SIGN = 'I'. S_MASS1-OPTION = 'EQ'. S_MASS1-LOW = ' 00001000 '. APPEND S_MASS1.
S_MASS2-SIGN = 'I'. S_MASS2-OPTION = 'EQ'. S_MASS2-LOW = ' 00001001 '. APPEND S_MASS2.
S_MASS3-SIGN = 'I'. S_MASS3-OPTION = 'EQ'. S_MASS3-LOW = ' 00002000 '. APPEND S_MASS3.
S_MASS4-SIGN = 'I'. S_MASS4-OPTION = 'EQ'. S_MASS4-LOW = ' 00002200 '. APPEND S_MASS4.
S_MASS5-SIGN = 'I'. S_MASS5-OPTION = 'EQ'. S_MASS5-LOW = ' 00003000 '. APPEND S_MASS5.
S_MASS6-SIGN = 'I'. S_MASS6-OPTION = 'EQ'. S_MASS6-LOW = ' 00004000 '. APPEND S_MASS6.
S_MASS7-SIGN = 'I'. S_MASS7-OPTION = 'EQ'. S_MASS7-LOW = ' 00004200 '. APPEND S_MASS7.
S_MASS8-SIGN = 'I'. S_MASS8-OPTION = 'EQ'. S_MASS8-LOW = ' 00004400 '. APPEND S_MASS8.
S_MASS9-SIGN = 'I'. S_MASS9-OPTION = 'EQ'. S_MASS9-LOW = ' 00005000 '. APPEND S_MASS9.
* 设置选择屏幕-×××××类型默认值
S_MASS11-SIGN = 'I'. S_MASS11-OPTION = 'EQ'. S_MASS11-LOW = ' 020 '. APPEND S_MASS11.
S_MASS11-SIGN = 'I'. S_MASS11-OPTION = 'EQ'. S_MASS11-LOW = ' 030 '. APPEND S_MASS11.
S_MASS11-SIGN = 'I'. S_MASS11-OPTION = 'EQ'. S_MASS11-LOW = ' 100 '. APPEND S_MASS11.
S_MASS11-SIGN = 'I'. S_MASS11-OPTION = 'EQ'. S_MASS11-LOW = ' 101 '. APPEND S_MASS11.
S_MASS11-SIGN = 'I'. S_MASS11-OPTION = 'EQ'. S_MASS11-LOW = ' 103 '. APPEND S_MASS11.
…… ……(略)
* 设置选择屏幕-××××类型默认值
S_MASS1-SIGN = 'I'. S_MASS1-OPTION = 'EQ'. S_MASS1-LOW = ' 00001000 '. APPEND S_MASS1.
S_MASS2-SIGN = 'I'. S_MASS2-OPTION = 'EQ'. S_MASS2-LOW = ' 00001001 '. APPEND S_MASS2.
S_MASS3-SIGN = 'I'. S_MASS3-OPTION = 'EQ'. S_MASS3-LOW = ' 00002000 '. APPEND S_MASS3.
S_MASS4-SIGN = 'I'. S_MASS4-OPTION = 'EQ'. S_MASS4-LOW = ' 00002200 '. APPEND S_MASS4.
S_MASS5-SIGN = 'I'. S_MASS5-OPTION = 'EQ'. S_MASS5-LOW = ' 00003000 '. APPEND S_MASS5.
S_MASS6-SIGN = 'I'. S_MASS6-OPTION = 'EQ'. S_MASS6-LOW = ' 00004000 '. APPEND S_MASS6.
S_MASS7-SIGN = 'I'. S_MASS7-OPTION = 'EQ'. S_MASS7-LOW = ' 00004200 '. APPEND S_MASS7.
S_MASS8-SIGN = 'I'. S_MASS8-OPTION = 'EQ'. S_MASS8-LOW = ' 00004400 '. APPEND S_MASS8.
S_MASS9-SIGN = 'I'. S_MASS9-OPTION = 'EQ'. S_MASS9-LOW = ' 00005000 '. APPEND S_MASS9.
* 设置选择屏幕-×××××类型默认值
S_MASS11-SIGN = 'I'. S_MASS11-OPTION = 'EQ'. S_MASS11-LOW = ' 020 '. APPEND S_MASS11.
S_MASS11-SIGN = 'I'. S_MASS11-OPTION = 'EQ'. S_MASS11-LOW = ' 030 '. APPEND S_MASS11.
S_MASS11-SIGN = 'I'. S_MASS11-OPTION = 'EQ'. S_MASS11-LOW = ' 100 '. APPEND S_MASS11.
S_MASS11-SIGN = 'I'. S_MASS11-OPTION = 'EQ'. S_MASS11-LOW = ' 101 '. APPEND S_MASS11.
S_MASS11-SIGN = 'I'. S_MASS11-OPTION = 'EQ'. S_MASS11-LOW = ' 103 '. APPEND S_MASS11.
…… ……(略)
然后在选屏中结合 设置变式 ,就可以满足未来分类变化的需要了