ALV 容器备忘录

来源:互联网 发布:科笛淘宝上下架软件 编辑:程序博客网 时间:2024/05/24 00:29


DATA :
*ALV 字段
*  IT_SORT       TYPE LVC_T_SORT,
  I_FCAT1       TYPE LVC_T_FCAT,
  I_FCAT2       TYPE LVC_T_FCAT,
* 容器名称
  GV_CNAME1     TYPE SCRFNAME VALUE 'CONTAINER1',
  GV_CNAME2     TYPE SCRFNAME VALUE 'CONTAINER2',
* 容器对象
  GV_CONTAINER1 TYPE REF TO CL_GUI_CUSTOM_CONTAINER,
  GV_CONTAINER2 TYPE REF TO CL_GUI_CUSTOM_CONTAINER,
* ALV对象
  GV_ALV1       TYPE REF TO CL_GUI_ALV_GRID,
  GV_ALV2       TYPE REF TO CL_GUI_ALV_GRID,
* ALV布局
  GV_LAYOUT1    TYPE LVC_S_LAYO,
  GV_LAYOUT2    TYPE LVC_S_LAYO.


*&---------------------------------------------------------------------*
*&      Module  INITIAL_CONTAINER  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE INITIAL_CONTAINER OUTPUT.
  IF GV_ALV1 IS INITIAL.
    IF NOT GV_CONTAINER1 IS INITIAL.
      CALL METHOD GV_CONTAINER1->FREE
        EXCEPTIONS
          CNTL_SYSTEM_ERROR 1
          CNTL_ERROR        2.
*    IF SY-SUBRC <> 0.
*    ENDIF.
    ENDIF.
    CLEAR GV_CONTAINER1.
    CLEAR GV_ALV1.
    CREATE OBJECT GV_CONTAINER1
      EXPORTING
        CONTAINER_NAME              GV_CNAME1
      EXCEPTIONS
        CNTL_ERROR                  1
        CNTL_SYSTEM_ERROR           2
        CREATE_ERROR                3
        LIFETIME_ERROR              4
        LIFETIME_DYNPRO_DYNPRO_LINK 5.
*创建ALV容器
    CREATE OBJECT GV_ALV1
      EXPORTING
        I_PARENT          GV_CONTAINER1
      EXCEPTIONS
        ERROR_CNTL_CREATE 1
        ERROR_CNTL_INIT   2
        ERROR_CNTL_LINK   3
        ERROR_DP_CREATE   4.
*ALV的设置
    PERFORM FRM_ALV_LIST1.
*AVL的显示
    CALL METHOD GV_ALV1->SET_TABLE_FOR_FIRST_DISPLAY
      EXPORTING
        IS_LAYOUT                     GV_LAYOUT1
        I_SAVE                        'A'
      CHANGING
        IT_OUTTAB                     GT_TCITEM[]
        IT_FIELDCATALOG               I_FCAT1
*       IT_SORT                       = IT_SORT
      EXCEPTIONS
        INVALID_PARAMETER_COMBINATION 1
        PROGRAM_ERROR                 2
        TOO_MANY_LINES                3
        OTHERS                        4.

  ELSE.
*刷新
    CALL METHOD GV_ALV1->REFRESH_TABLE_DISPLAY.
  ENDIF.

  IF GV_ALV2 IS INITIAL.
    IF NOT GV_CONTAINER2 IS INITIAL.
      CALL METHOD GV_CONTAINER2->FREE
        EXCEPTIONS
          CNTL_SYSTEM_ERROR 1
          CNTL_ERROR        2.
*    IF SY-SUBRC <> 0.
*    ENDIF.
    ENDIF.
    CLEAR GV_CONTAINER2.
    CLEAR GV_ALV2.
    CREATE OBJECT GV_CONTAINER2
      EXPORTING
        CONTAINER_NAME              GV_CNAME2
      EXCEPTIONS
        CNTL_ERROR                  1
        CNTL_SYSTEM_ERROR           2
        CREATE_ERROR                3
        LIFETIME_ERROR              4
        LIFETIME_DYNPRO_DYNPRO_LINK 5.
*创建ALV容器
    CREATE OBJECT GV_ALV2
      EXPORTING
        I_PARENT          GV_CONTAINER2
      EXCEPTIONS
        ERROR_CNTL_CREATE 1
        ERROR_CNTL_INIT   2
        ERROR_CNTL_LINK   3
        ERROR_DP_CREATE   4.
*ALV的设置
    PERFORM FRM_ALV_LIST2.
*AVL的显示
    CALL METHOD GV_ALV2->SET_TABLE_FOR_FIRST_DISPLAY
      EXPORTING
        IS_LAYOUT                     GV_LAYOUT2
        I_SAVE                        'A'
      CHANGING
        IT_OUTTAB                     GT_FJDJ[]
        IT_FIELDCATALOG               I_FCAT2
      EXCEPTIONS
        INVALID_PARAMETER_COMBINATION 1
        PROGRAM_ERROR                 2
        TOO_MANY_LINES                3
        OTHERS                        4.
*    --Creating an instance for the event handler
*    CREATE OBJECT GR_EVENT_HANDLER .
*    --Registering handler methods to handle ALV Grid events
*    SET HANDLER GR_EVENT_HANDLER->HANDLE_DOUBLE_CLICK FOR GV_ALV2.
  ELSE.
*刷新
    CALL METHOD GV_ALV2->REFRESH_TABLE_DISPLAY.
  ENDIF.

ENDMODULE.

*&---------------------------------------------------------------------*
*&      Form  FRM_FREE_CONTAINER
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM FRM_FREE_CONTAINER .
* Free the object of container
  IF  NOT GV_CONTAINER1 IS INITIAL
   OR NOT GV_CONTAINER2 IS INITIAL.
    CALL METHOD GV_CONTAINER1->FREE
      EXCEPTIONS
        CNTL_SYSTEM_ERROR 1
        CNTL_ERROR        2.

    CALL METHOD GV_CONTAINER2->FREE
      EXCEPTIONS
        CNTL_SYSTEM_ERROR 1
        CNTL_ERROR        2.
    CLEAR:
          GV_CONTAINER1,
          GV_CONTAINER2,
          GV_ALV1,
          GV_ALV2.
  ENDIF.
ENDFORM.                    " FRM_FREE_CONTAINER

1 0