Topic: 求教!ALV工具栏加按钮的问题

ERP俱乐部

第 1 页 总共 1 页 [共有 2 条记录]


Posted by roczsm on 2009-02-04 04:16 下午
我的主要功能是ALV OO方式下加工具栏上的按钮,在程序中没有新建屏幕(要求没有CALL SCREEN 100之类的)
下面是我做的程序,大家只要拷贝过去就可以测试了,在ALV工具栏上加的按钮就是不出来,怎么办?高手!!!!!!!
*以下两句到底放在什么地方呀,我什么地方都放了,报错
*CREATE OBJECT alv_roce.
*SET HANDLER alv_roce->bt FOR GV_GRID.


*&---------------------------------------------------------------------*
*& 测试程序
*&---------------------------------------------------------------------*
REPORT  ZROC_TEST5.

   TYPE-POOLS: SLIS.
  DATA: i_cat TYPE LVC_T_FCAT,
        GV_GRID TYPE REF TO CL_GUI_ALV_GRID,
        GD_LAYOUT    TYPE LVC_S_LAYO,     "slis_layout_alv,
        GD_REPID     LIKE SY-REPID.
*航班表
DATA IT LIKE SFLIGHT OCCURS 0 WITH HEADER LINE .


*---------------------------------------------------------------------*
*       1、定义类
*---------------------------------------------------------------------*
CLASS roce DEFINITION.
PUBLIC SECTION.
   METHODS:
*--在ALV工具条按钮
    bt FOR EVENT toolbar OF cl_gui_alv_grid
         IMPORTING e_object e_interactive.
  PRIVATE SECTION.
ENDCLASS.
*---------------------------------------------------------------------*
*      2、实现类方法
*---------------------------------------------------------------------*
CLASS roce IMPLEMENTATION.
*--在ALV工具条按钮
  METHOD: bt.
    PERFORM go_bt USING e_object e_interactive.
  ENDMETHOD.
ENDCLASS.
*---------------------------------------------------------------------*
*      3、定义
*---------------------------------------------------------------------*
DATA alv_roce TYPE REF TO roce.


************************************************************************
START-OF-SELECTION.
  PERFORM MAIN.


*&---------------------------------------------------------------------*
*&      主逻辑
*&---------------------------------------------------------------------*
FORM MAIN.
IT-FLDATE = '20090203'.IT-PRICE = 400.APPEND IT .CLEAR IT .
IT-FLDATE = '20090204'.IT-PRICE = 500.APPEND IT .CLEAR IT .

*以下两句到底放在什么地方呀,我什么地方都放了,报错
*CREATE OBJECT alv_roce.
*SET HANDLER alv_roce->bt FOR GV_GRID.

*取值结构
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
    EXPORTING
        i_structure_name = 'SFLIGHT'
    CHANGING
        ct_fieldcat = I_CAT[]
    EXCEPTIONS
        inconsistent_interface = 1
        program_error = 2
        OTHERS = 3.

*输出
  GD_REPID = SY-REPID.
  GD_LAYOUT-ZEBRA             = 'X'.
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
    EXPORTING
      I_CALLBACK_PROGRAM      = GD_REPID
      I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
      IS_LAYOUT_LVC           = GD_LAYOUT
      IT_FIELDCAT_LVC         = I_CAT
      I_SAVE                  = 'X'
    TABLES
      T_OUTTAB                = it
    EXCEPTIONS
      PROGRAM_ERROR           = 1
      OTHERS                  = 2.



ENDFORM.

*&---------------------------------------------------------------------*
*&      自定义按钮
*&---------------------------------------------------------------------*
FORM go_bt USING e_object TYPE REF TO cl_alv_event_toolbar_set  e_interactive .
   DATA: ls_toolbar TYPE stb_button.


    CLEAR ls_toolbar.
    MOVE 'BOOKINGS' TO ls_toolbar-function.
    MOVE 'Show Bookings'(111) TO ls_toolbar-quickinfo.
    MOVE 'Detail'(112) TO ls_toolbar-text.
    MOVE ' ' TO ls_toolbar-disabled.
    APPEND ls_toolbar TO e_object->mt_toolbar.

    MESSAGE 'test' TYPE 'S' .


ENDFORM.
**&---------------------------------------------------------------------*
**&      界面指令操作
**&---------------------------------------------------------------------*
FORM USER_COMMAND USING R_UCOMM LIKE SY-UCOMM
                        RS_SELFIELD TYPE SLIS_SELFIELD.

MESSAGE '接收' type 'S' .

ENDFORM.

Posted by roczsm on 2009-02-09 08:08 上午
期待高手!!!