开发ALV的基本流程

第一步:定义ALV所要用到的类型池:TYPE-POOLS: SLIS 

 第二步:定义ALV所要显示的数据对应的内表数据类型及内表数据对象;

 第三步:定义一些显示ALV时所要使用到的变量,例如:

   Data: w_repid  like  sy-repid,  ABAP程序,我们一般取当前程序

        w_callback_ucomm   type slis_formname,   "字符型,功能

        w_print            type slis_print_alv,  "类型组

        w_layout           type slis_layout_alv, "类型组

        w_html_top_of_page type  slis_formname,  "字符型

        w_fieldcat_alv     like line of i_fieldcat_alv, “从上面的数据结构类型引用过来的

        w_excluding        like line of i_excluding,    “同上

        w_events           like line of i_events,       “同上

        w_event_exit       like line of i_event_exit,   “同上

        w_list_comments    like line of i_list_comments.“同上

 第四步:定义选择屏幕 ;

 第五步:声明各个选择屏幕事件块,例如:

   定义initialization部分,在这个部分往往要指定w_repid的值,w_repid = sy-repid

   定义start-of-selection部分,在这通常会调用各种子程序,以下以标准ALV显示为例:

   1)调用一个子程序(通常命名为frm_get_dataXXX(X代表任意自定义字母)),用于获取ALV所要显示的数据 ;例如:

     FORM frm_get_data.

        … …    其它处理逻辑

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

      … …    其它处理逻辑

     ENDFORM.

   2)调用一个子程序(通常命名为frm_alv_layout_build),用于设置ALV所要显示的样式 ;

    例如:

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

   3)调用一个子程序(通常命名为frm_alv_set_columns),用于完成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.

       DATAl_fieldcat TYPE slis_fieldcat_alv.
 l_fieldcat-col_pos p_pos.
 l_fieldcat-fieldname p_name.
 l_fieldcat-seltext_l p_text.  

APPEND l_fieldcat TO g_fieldcat_alv.

    ENDFORM

   4)调用显示ALV的函数,例如:REUSE_ALV_GRID_DISPLAY 

     FORM frm_alv_display_data.
       
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
        
EXCEPTIONS
           program_error                     
1
        
OTHERS                            2
            .
  
   ENDFORM

     如果ALV所要展示的列过多时,建议先在数据字典系统中创建相应的结构,这样可免去对输出列表头信息的繁琐编辑处理,代码行也会缩短。只要将上面函数中的it_fieldcat参数替换成i_structure_name,如:I_STRUCTURE_NAME = 'TY_OUT_FILE',注意:此处的TY_OUT_FILE结构必须是数据字典中已经存在的对象

 


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值