ABAP ALV

标准ALV开发相关细节

1、ALV中的各种结构类型注解:

1)TYPE-POOLS: slis:用于指定ALV类型组;

2)slis_listheader:用于定义top of page的抬头结构;

3)slis_t_listheader:用于定义top of page的抬头表

4)slis_t_sortinfo_alv:用于指定ALV排序分类合计等信息的数据对象;

   3slis_layout_alv :用于定义布局类型数据对象;

4slis_t_fieldcat_alv WITH HEADER LINE:用于定义ALV列字段相关类型数据

      对象;(slis_t_fieldcat_alv是表字段的整体,slis_fieldcat_alv是某一个字段的内容,将该字段的内容写到 slis_fieldcat_alv后,通过append添加到slis_t_fieldcat_alv中,后者是整个列表的标题,在显示的时候用到。)

5)slis_t_event :是event的整体可看作event的集合,感觉可以用来写表头。  

    slis_alv_event是某个event, 需要将slis_alv_event append到slis_t_event.它可以包含图片和listheader等,也就是说listheader等是靠event来显示的。

6)slis_t_listheader :是listheader的集合,slis_listheader是某个listheader。将slis_listheader赋值后append到slis_t_listheader中。它是内表的表头。

  7)slis_listheader : 包含:typ :H = header,S = Selection,A = action. key : 

     是和s对应的,是那个的标题吧. info:可以是变量和赋值的。跟在key的标题后面,

     是个表达值。

 

  2.2、ALV中所用到的函数:

1)显示ALV函数:

 CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
 
EXPORTING

   i_callback_program        = g_repid  
   i_callback_pf_status_set  = 
'FRM_STATUS_ALV'
   i_callback_user_command   = 
'FRM_USER_COMMAND_ALV'
   is_layout                 = g_layout
   it_fieldcat               = g_fieldcat_alv[]
 
TABLES
   t_outtab                  = it_main

 

     上面“REUSE_ALV_GRID_DISPLAY “函数的参数说明:

   1> g_repid:用于保存当前程序名,例如:

      g_repid TYPE sy-repid VALUE sy-repid     "保存当前程序名

   2> FRM_STATUS_ALV:该子程序用于指定程序状态,例如:

      FORM frm_status_alv USING p_extab TYPE slis_t_extab.
SET PF-STATUS 'STANDARD'.

ENDFORM.    

   3> FRM_USER_COMMAND_ALV:该子程序指定相关函数功能码的响应逻辑,例如:

      FORM frm_user_command_alv USING p_ucomm 

TYPE sy-ucomm p_selfield TYPE slis_selfield.
  ok_code = p_ucomm.

  CASE ok_code.

WHEN 'CREATE'.                                
    … …

WHEN 'DELETE'

… …                                                     

ENDCASE.

         p_selfield-refresh = 'X'"ALV被修改时会自动刷新,没有修改不进行刷新

ENDFORM.                    

4> g_layout:用于设置ALV布局样式,例如:

   FORM frm_alv_layout_build.
         g_layout-zebra = 
'X'.
         g_layout-colwidth_optimize = 
'X'.       "列数据最优化显示
         g_layout-box_fieldname = 
'SELFLAG'.     "表示ALV行项目选中的字段
       
ENDFORM.        

5> g_fieldcat_alv[]:用于指定ALV字段相关属性信息,例如:

   FORM frm_alv_set_columns.
         
REFRESH g_fieldcat_alv.
         
PERFORM frm_set_l_fieldcat USING 1 'LIFNR' '供应商账号'.

       ENDFORM

       FORM frm_set_l_fieldcat  USING  p_pos p_name p_text.
         
DATA: l_fieldcat TYPE slis_fieldcat_alv.
         l_fieldcat-col_pos = p_pos.
         l_fieldcat-fieldname = p_name.
         l_fieldcat-seltext_l = p_text.
       
*  l_fieldcat-no_zero = 'X'.
         
APPEND l_fieldcat TO g_fieldcat_alv.
       
ENDFORM.

6> it_main:此内表中保存的是ALV所要展示的数据,例如:

   it_main TYPE TABLE OF typ_item WITH HEADER LINE,  "ALV对应的内表

   SELECT lifnr           "供应商账号
         ktokk           
"账号组
         name1           
"名称1
         name2           
"名称2
       
INTO CORRESPONDING FIELDS OF TABLE it_main
       
FROM zmmjyht003
       
WHERE (l_where)
       .

      此函数的其它参数信息,详见附属信息中的 'REUSE_ALV_GRID_DISPLAY'函数常用参数

   2) reuse_alv_events_get : 将各个事件的名字写到slis_t_eventname中。这样,可以在后面,根据名字的不同,对不同的event付不同的form,来实现不同功能。

转载于:https://www.cnblogs.com/aBaoRong/archive/2012/06/06/2537628.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值