对于渣渣我来讲,感觉有点灌不下去了。
于是停下来总结下。
文章目录
SELECT-OPTIONSEVENTPAI、PBOOBLIGATORYDEFAULT 'c'FORMAT COLORRIGHT-JUSTIFIEDCHECKBOXselect singleat selection screen on fieldadd top-of-page从上次的数据库表的一些基础操作开始。主要就是从表里根据参数来取值。
或者是从两个表里来取值。这样都是需要输入参数的。
但是,如果你是直接固定的参数。那就是:PARAMETERS: p_***TYPEtable_***.
select ***where ***=p_ ***
这样就是单个的参数值。
如果要一个值范围。那就用到select-options.
SELECT-OPTIONS
select-options, 就是让你很多选择条件。因为我可能想一次性多选几个,或者选一个值范围。或者想排除一个值范围。
也就是我们经常看到的这种:
那我们自己来写下,就是注意语法是SELECT-OPTIONS: FOR
最后where 是 IN。
因为它是一个范围。
然后一开始要声明要用的表。
执行结果是这样
改个描述:
对于范围呢,有一点就有意思了。
我以前一直看到什么SIGN,OPTION,LOW,HIGH的。
到这里如果糊里糊涂的,现在就能懂了。
用个debug去看下这个select-option的真实面目。
这个里面有很多有意思的EVENT,和PAI。待会来解释。
step in执行,到下一步双击s_land1,看它是个structure。有1行四列。
再双击进去看。
它有这些component,还有不同的值。
这是因为我只选了个US。
当选择范围,会变成BT(between)和LOW、HIGH都有值。
排除范围则是NB(Not between)。
EVENT
从上面的截图里能看到,有个event是START-OF-SELECTION。这就是默认的event,每个event会有处理一系列的code。这个是SAP默认的,你不写它也会执行的。event不需要有end。但是会在遇到下一个事件时执行下一个。
比如INITIALIZATION这个event。
对我的范围参数进行初始化。
我执行的时候会有默认的值。
PAI、PBO
PAI: process after input
PBO: process before output
OBLIGATORY
就是这个是必须输入的。
那你不输就会报错
DEFAULT ‘c’
给个默认的值
比如
FORMAT COLOR
这个就是我如果要输出描述,也就是第一行,那我可以把行标题给打上颜色。
这个我懒得再写一个write了。
就直接数据行打颜色。
执行出来时颜色1,也可以改成颜色2,3.
RIGHT-JUSTIFIED
就把这个字段靠右。对于是数量的,靠右比较好看。同理有left-justified.
CHECKBOX
就是复选框。
那怎么弄呢?
用到checkbox,那就是要用到if else了
如果这个复选框被选中。那就是怎样,如果没被选中,又是怎样。
功能扩展:
要在点击check box后,填充一个select option的值,并把它变灰。
这就涉及到event了。
event的一系列,屏幕上的操作。
也就是在initialization和start of selection之间的。
有很多的在at selection screen这层显示屏幕的操作。
而且如果我点击了checkbox之后,要把屏幕自动输出,而且变灰。那是要在OUTPUT之前。也就是PBO。所以要限定到screen output这个event上,当然输出屏幕会有很多参数,我要限定到我要控制的那个参数,用IF去限定。IF checkbox被点了。那而且当前屏幕被改的人就是我系统用户了。这个反正我用不到。
在屏幕OUTPUT这个event上操作。然后是限制在点了checkbox之后。
于是在点击checkbox和enter之后,就会直接填充select option的值了。
那么就直接这样了:
要把值弄灰。就再加一步:
让屏幕这个structure的input=0。
select single
如果我在select options 里面填入了一个错误值,那我需要让它给我点信息。
那它其实是个PAI,不能是在屏幕output那个event里面了。需要在屏幕上。
如果参数中被填入了值,那我要去看这个值你填的对不对哦,我要去我引用的表里面去对照到底有没有你这个值,但是,我只需要找到就行了,于是selectsingle不管你找到了多少,我只要找到就行了。如果没找到,那就报一个Error类型的message。
在屏幕上做的操作有很多,隐藏啦,显示啦。
就是有很多屏幕event。
因为有很多验证要做,比如刚才的你输入的值是不是瞎输入的。要验证下。
at selection screen on field
如果我想要让我输入的值不对的同时,其他值变灰。也就是说,我如果先输入的不对了,就别继续往下输入了。
下面我这个例子的顺序有误,但是意思是一样的。那直接用on field这个event就行了。
不像之前在screen上的那个event,那我们有很多选择,但是现在我指定到field上了。如果我出了提示错了,那其他就不用输入了。
add top-of-page
加抬头和结尾。
变量类型和长度。