ALV的另外一种写法

 一般我们用到的ALV有两种方法,FUNCTION,和容器的方法。

在FUNCTION中,我们有下面的方法实现

  call function 'REUSE_ALV_LIST_DISPLAY'
    exporting
      i_callback_program      = pgm
      i_callback_user_command = 'USER_COMMAND'
      it_fieldcat             = fieldcat
      it_sort                 = sortcat
      i_save                  = 'A'
      it_events               = eventcat
    tables
      t_outtab                = itab
    exceptions
      program_error           = 1
      others                  = 2.
endform.                    "alvdisplay
在用到容器方面,以下方法实现

  create object container_1
       exporting container_name = 'CONTAINER1'.
*  ENDIF.

*  IF alv_grid IS INITIAL."ALV放入容器
    create object alv_grid
       exporting i_parent = container_1.
  call method alv_grid->set_table_for_first_display "ALV显示
    exporting
      is_variant        = gs_variant
      is_layout         = is_layout     "布局
      i_save           = 'A'
    changing
      it_outtab        = item[]
      it_fieldcatalog  = it_fieldcat.
  if sy-subrc <> 0.
    exit.
  endif.

本文对其他一种方法进行介绍,对以上两种方法就不详细介绍内容了

DATA: it_sflight TYPE TABLE OF sflight.
* Workarea for data fetch
DATA: wa_sflight LIKE LINE OF it_sflight.
* Switch for list display yes / no
DATA: list_display TYPE sap_bool.
* Reference for container control
DATA: gr_cont TYPE REF TO cl_gui_custom_container.
* Reference for ALV instance
DATA: gr_alv TYPE REF TO cl_salv_table.
* Reference for error situations
DATA: gr_error TYPE REF TO cx_salv_error.
* user-command from dynpro
DATA: ok_code LIKE sy-ucomm.

 

* retrieve data into internal table
SELECT *
FROM sflight
INTO TABLE it_sflight
WHERE carrid IN so_car
AND connid IN so_con.

 

    CREATE OBJECT gr_cont
    EXPORTING
    container_name = 'MY_CONTAINER'
    EXCEPTIONS
    OTHERS = 1
    .
    IF sy-subrc <> 0.
      MESSAGE a015(bc405).
* Error when creating the container object.
    ENDIF.
* create ALV and
* link it to the container control
    TRY.
        cl_salv_table=>factory(
        EXPORTING
* LIST_DISPLAY = IF_SALV_C_BOOL_SAP=>FALSE
        r_container = gr_cont
* CONTAINER_NAME =
        IMPORTING
        r_salv_table = gr_alv
        CHANGING
        t_table = it_sflight
        ).
      CATCH cx_salv_msg INTO gr_error.
    ENDTRY.
* display ALV
    gr_alv->display( ).

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值