几种下拉框的实现方式

                ABAP中实现LISTBOX的几种方法

                                                        xiaogangh  2005/09/07

 

1.  在选择屏幕输出时调用FUNCTION MODULE ‘VRM_SET_VALUES’

这种方法的好处就是,可以在程序中自定义LISTBOX中的内容

 

源码如下:

report z_hxg_006 .

* 需要调用的类型池

type-pools: vrm.

 

data: name type vrm_id,

     list type vrm_values,

     value like line of list.

data: ps_t(10) type c.

*  选择屏幕定义

parameters: ps_parm(10) as listbox visible length 10,

          ps(10) as listbox visible length 10.

*  选择屏幕输出控制

at selection-screen output.

refresh list.

 clear list.

 name = 'PS'.

 value-ke(R)y = '1'.

 value-text = 'Line 1'.

 append value to list.

 value-key = '2'.

 value-text = 'Line 2'.

 append value to list.

 call function 'VRM_SET_VALUES'

   exporting id     = name

             values = list.

*  start-of-selection事件触发

start-of-selection.

case ps.

  when '1'.

    ps_t = 'Line 1'.

  when '2'.

    ps_t = 'Line 2'.

endcase.

 write: / 'Parameter:', ps_t.

 

 

2.  直接在数据字典中定义域(将该域的value range填充相应的值),然后通过数据表中的字段和这个域关联即可。

report z_hxg_042 .

tables: zsale_plan.    自定义的表

*  下面的zsale_plan-zmonth是和SAP系统自带的域month相关联的,即这个字段的字段类*  型为month

parameters: zmonth like zsale_plan-zmonth as listbox

             visible length 10.

 

3.  通过自定义屏幕来实现LISTBOX

1) 首先我们自己创建一个屏幕

Call screen 100.

双击上面这段代码,进入到屏幕设计GUI之后,在界面上增加文本输入框,给它取名为SJUDGE(这个名字可以随便你自己取,只要在程序编写的时候保持一致就可以了),同时在属性框的“下拉“中选中LISTBOX即可,如下图所示:

 

 

 2) 做完上面一步后,我们需要在该屏幕的逻辑流中这样设计

process before output.

* MODULE STATUS_0100.

 

process after input.

* MODULE USER_COMMAND_0100.

* 这里就是给屏幕字段SJUDGE创建一个功能模块module create_dropdown_list

process on value-request.

      field sjudge module create_dropdown_list.  

 

3)      双击moule create_dropdown_list,我们创建这个module在程序中的代码,这里需要调用一个系统的功能模块F4IF_INT_TABLE_VALUE_REQUEST

 

主程序代码如下:

report z_hxg_040.

data: ok_code type sy-ucomm.

data: begin of itab occurs 0,

          carrname like scarr-carrname,

         end of itab.

call screen 100.

*  module create_dropdown_list_input

module create_dropdown_list input.

     refresh itab.

     clear itab.

     itab-carrname = '合格'.

     append itab.

     itab-carrname = '不合格'.

     append itab.

     call function 'F4IF_INT_TABLE_VALUE_REQUEST'

       exporting

          retfield = 'CARRNAME'

          value_org = 'S'

       tables

          value_tab = itab

       exceptions

          parameter_error = 1

          no_values_found = 2

          others = 3.

     if sy-subrc <> 0.

     

     endif.

endmodule.

注:1.用过其中的第一种和第三种。在DIALOG屏幕编程中,若用第一种方法会有问题。在现在下来框的某个后,屏幕是无法捕捉到这个值的,为什么会这样现在也没搞清楚!

    2.第三种是F4的帮助,这个fun不仅仅是可以用在实现下来框上,可以用它带出字段的帮助,但是很奇怪的一点是其传如内表的定义其字段类型要在字典中存在的字段!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
除了在 `el-option` 中使用 `slot` 来自定义下拉框选项的显示内容之外,还有其他几种方法可以实现下拉框某条数据中显示星号: 1. 在 `el-option` 中使用 `template` 来自定义下拉框选项的显示内容: ```html <el-select v-model="value"> <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value" > <template v-if="item.showStar"> <span>{{ item.label }}*</span> </template> <template v-else> <span>{{ item.label }}</span> </template> </el-option> </el-select> ``` 在上面的代码中,我们在 `el-option` 中使用了 `template` 来根据 `item.showStar` 的值来显示不同的内容。 2. 使用 `formatter` 属性来自定义下拉框选项的显示内容: ```html <el-select v-model="value" :formatter="formatter"> <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value" > </el-option> </el-select> ``` ```javascript methods: { formatter(row) { if (row.showStar) { return `${row.label}*` } else { return row.label } } } ``` 在上面的代码中,我们使用了 `formatter` 属性来自定义下拉框选项的显示内容,`formatter` 方法会接收一个参数 `row`,表示当前选项的数据对象,我们可以根据 `row.showStar` 的值来显示不同的内容。 3. 使用插槽 `dropdown-item` 来自定义下拉框选项的显示内容: ```html <el-select v-model="value"> <template v-for="item in options"> <el-option :key="item.value" :label="item.label" :value="item.value" > <template v-slot:dropdown-item> <span>{{ item.label }}</span> <span v-if="item.showStar">*</span> </template> </el-option> </template> </el-select> ``` 在上面的代码中,我们使用了插槽 `dropdown-item` 来自定义下拉框选项的显示内容,如果 `item.showStar` 的值为 `true`,则会在显示内容后面添加一个星号。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值