ABAP ALV详解编程语言

标准ALV开发相关细节

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

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

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

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

4slis_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中,后者是整个列表的标题,在显示的时候用到。)

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

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

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

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

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

     是个表达值。

 

  2.2ALV中所用到的函数:

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://blog.ytso.com/18257.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论