转 abap里实现listbox的方法

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.
   直接运行这段代码就可以看到结果

posted @ 2014-03-19 06:26  qdxjmei  阅读(2010)  评论(0编辑  收藏  举报