ALV GRID(2) 详解1

上篇博文中给出了一个例子,下面对例子进行解析

1、声明ALV,没有这句话将无法定义ALV相关的结构和内表

type-pools:slis.

2、定义布局

 data: ls_lay type slis_layout_alv. 
 ls_lay-colwidth_optimize = 'X'.
slis_layout_alv中常用的产生有以下几种:
colwidth_optimize = 'X' 根据字段长度自动调整列宽
zebra = 'X' 隔行换色
box_fieldname = 'zzz' zzz列作为行现在标识(zzz必须为char1类型)


3、定义输出列
data: ltd_cat type standard table of slis_fieldcat_alv,
         lth_cat type slis_fieldcat_alv.
   lth_cat-fieldname = 'MATNR'.
   lth_cat-seltext_s = '物料编码'.
   append lth_cat to ltd_cat.
   clear lth_cat.

fieldname     输出的列名

seltext_s     列标题(短)

一般情况下 有这两个属性就能够正常输出内容。

但用户经常会提出其他一些要求

do_sum='X'                  求和计算

edit='X'                        列内容可编辑

edit_mask='==CUNIT'   当列为计量单位时,内部值变成外部值显示

no_zero = 'X'                不输出前导零

checkbox = 'X'              字段为复选框,一般与edit配合使用

decimals = '2'               输出小数点后2位

 

4、交互

      i_callback_user_command = 'USER_COMMAND'

function中上行代码用来指定交互动作交给什么form去处理

 form USER_command using i_ucomm like sy-ucomm
                          i_selfield type slis_selfield.
 
   if i_ucomm = '&IC1'.
     case i_selfield-fieldname.
       when 'MATNR'.
         set parameter id 'MAT' field I_selfield-value.
         call transaction 'MM03' and skip first screen.
     endcase.
   endif.
 endform. 

i_ucomm参数用来存放前台动作名称

 

 

 

 

 



 

 


posted on 2016-04-06 15:31  ydream  阅读(313)  评论(0)    收藏  举报

导航