ALV tree应用实例

本文演示如何使用cl_gui_alv_tree_simple在屏幕上展示一个alv tree

下面是一段实例代码,基本思路是这样的:

1.在屏幕上建立一块区域,基于该区域创建一个custom container

2.在创建好的custom container里面创建一个alv tree控件

3.取数

4.设置alv tree的相关属性,包括fieldcatelog和sorted talbe(对于alv tree而言,这两个东西是必须的)

5.调用set_for_table_first_display显示data.

 

主程序代码如下:

TABLES sflight.
DATAok_code TYPE sy-ucomm.
DATAgo_container TYPE REF TO cl_gui_custom_container.
DATAgo_alv_tree TYPE REF TO cl_gui_alv_tree_simple.
DATAgs_sflight TYPE sflight.
DATAgt_sflight TYPE STANDARD TABLE OF sflight.
DATAgs_sorted TYPE lvc_s_sort.
DATAgt_sorted TYPE lvc_t_sort.
DATAgs_field_cat TYPE lvc_s_fcat.
DATAgt_field_cat TYPE lvc_t_fcat.


START-OF-SELECTION.
  PERFORM sub_retrieve_data.
  PERFORM sub_build_itabs.
  CALL SCREEN 9100.


*&---------------------------------------------------------------------*
*&      Module  STATUS_9100  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE status_9100 OUTPUT.
  SET PF-STATUS 'STATUS9100'.
*  SET TITLEBAR 'xxx'.

ENDMODULE.                 " STATUS_9100  OUTPUT
*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_9100  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE user_command_9100 INPUT.
  CASE ok_code.
    WHEN 'BACK' OR 'EXIT' OR 'CANC'.
      CALL METHOD go_alv_tree->free.
      CALL METHOD go_container->free.
      LEAVE PROGRAM.
    WHEN OTHERS.
  ENDCASE.
ENDMODULE.                 " USER_COMMAND_9100  INPUT
*&---------------------------------------------------------------------*
*&      Module  SHOW_ALV_TREE  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE show_alv_tree OUTPUT.
  IF go_container IS INITIAL.
    CREATE OBJECT go_container
      EXPORTING
        container_name 'GO_CONTAINER'.

    CREATE OBJECT go_alv_tree
      EXPORTING
        i_parent go_container.


    CALL METHOD go_alv_tree->set_table_for_first_display
      CHANGING
        it_outtab            gt_sflight
        it_fieldcatalog      gt_field_cat
        it_sort              gt_sorted.



  ENDIF.
ENDMODULE.                 " SHOW_ALV_TREE  OUTPUT
*&---------------------------------------------------------------------*
*&      Form  SUB_RETRIEVE_DATA
*&---------------------------------------------------------------------*
*       Retrieve data from database
*----------------------------------------------------------------------*
FORM sub_retrieve_data .
  SELECT *
    INTO TABLE gt_sflight
    FROM sflight.
ENDFORM.                    " SUB_RETRIEVE_DATA
*&---------------------------------------------------------------------*
*&      Form  SUB_BUILD_ITABS
*&---------------------------------------------------------------------*
*   Build field catelogs and sorted table
*----------------------------------------------------------------------*
form SUB_BUILD_ITABS .

*   Build fieldcat
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
  EXPORTING
   I_STRUCTURE_NAME             'SFLIGHT'
  CHANGING
    ct_fieldcat                  gt_field_cat.

CLEAR gs_field_cat.
gs_field_cat-no_out 'X'.
modify gt_field_cat FROM gs_field_cat
                    TRANSPORTING no_out
                    WHERE fieldname 'CARRID'
                    OR fieldname 'CONNID'.

CLEAR gs_field_cat.
gs_field_cat-do_sum 'X'.
modify gt_field_cat FROM gs_field_cat
                    TRANSPORTING do_sum
                    WHERE fieldname 'PRICE'
                    OR fieldname 'PAYMENTSUM'.


*   Build sorted table
  gs_sorted-spos 1.
  gs_sorted-fieldname 'CARRID'.
  gs_sorted-up 'X'.
  APPEND gs_sorted to gt_sorted.

  gs_sorted-spos 2.
  gs_sorted-fieldname 'CONNID'.
  gs_sorted-up 'X'.
  append gs_sorted to gt_sorted.




endform.                    " SUB_BUILD_ITABS  

 

 

屏幕9100中的代码如下:

PROCESS BEFORE OUTPUT.
  MODULE status_9100.
  MODULE show_alv_tree.

PROCESS AFTER INPUT.
  MODULE user_command_9100.

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值