SAP ABAP OO ALV全屏显示

通过CL_GUI_SPLITTER_CONTAINER拆分容器,实现OO ALV全屏幕显示。

1.创建屏幕0100 .

代码实现如下:

DATA SPLITTER TYPE REF TO CL_GUI_SPLITTER_CONTAINER.

DATA CONTAINER_1 TYPE REF TO CL_GUI_CONTAINER.

DATA O_ALV_GRID_ITEM_CREATE TYPE CL_GUI_ALV_GRID .

MODULE STATUS_0100 OUTPUT.
  SET PF-STATUS 'STATUS_0100'.
  SET TITLEBAR  'TITLE0100'.
ENDMODULE.

MODULE CREATE_ALV_DISPLAY OUTPUT.
  DATA LW_STABLE TYPE LVC_S_STBL.
IF SPLITTER IS INITIAL .
    CREATE OBJECT SPLITTER
      EXPORTING
        PARENT  = CL_GUI_CONTAINER=>SCREEN0
        ROWS    = 1
        COLUMNS = 1.
    CALL METHOD SPLITTER->GET_CONTAINER
      EXPORTING
        ROW       = 1
        COLUMN    = 1
      RECEIVING
        CONTAINER = CONTAINER_1.
  ENDIF .
  IF O_ALV_GRID_ITEM_CREATE IS INITIAL.
    CREATE OBJECT O_ALV_GRID_ITEM_CREATE
      EXPORTING
        I_PARENT = CONTAINER_1.
*构建ALV GRID的全局布局
    PERFORM FRM_PREPARE_CREATE_ITEM_LAYOUT.
*构建ALV显示的field属性
    PERFORM FRM_BULID_9001_ITEM_FIELDS.
*为ALV注册事件处理器。
    PERFORM FRM_SET_EVENT_ITEM_HANDLER.
*显示数
    PERFORM FRM_DISPLAY_9001_ITEM_DATA.
  ELSE.
*    DATA LW_STABLE TYPE LVC_S_STBL.
    LW_STABLE-COL =   'X'.
    LW_STABLE-ROW =   'X'.
    CALL METHOD O_ALV_GRID_ITEM_CREATE->REFRESH_TABLE_DISPLAY
      EXPORTING
        IS_STABLE = LW_STABLE.
  ENDIF.
ENDMODULE.
FORM FRM_PREPARE_CREATE_ITEM_LAYOUT .
  CLEAR WA_LAYOUT_ITEM_CREATE.
  WA_LAYOUT_ITEM_CREATE-ZEBRA =   'X'.                     "ALV条纹显示
  WA_LAYOUT_ITEM_CREATE-CWIDTH_OPT =  'X'.                "自适应宽度
*  WA_LAYOUT_ITEM_CREATE-INFO_FNAME = 'COLOR'.
ENDFORM.
FORM FRM_BULID_9001_ITEM_FIELDS .
  DATA:LS_FIELDCAT TYPE LVC_S_FCAT .
  CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
    EXPORTING
*     I_BUFFER_ACTIVE  =
      I_STRUCTURE_NAME = 'ZPPS_COLLN_ALV_DISPLAY'
*     I_CLIENT_NEVER_DISPLAY       = 'X'
*     I_BYPASSING_BUFFER           =
*     I_INTERNAL_TABNAME           =
    CHANGING
      CT_FIELDCAT      = I_ITEM_CREATE_FIELDCATALOG
*   EXCEPTIONS
*     INCONSISTENT_INTERFACE       = 1
*     PROGRAM_ERROR    = 2
*     OTHERS           = 3
    .
  IF SY-SUBRC <> 0.
* Implement suitable error handling here
  ENDIF.
  LOOP AT I_ITEM_CREATE_FIELDCATALOG INTO LS_FIELDCAT .
    IF LS_FIELDCAT-FIELDNAME EQ 'CHECK' .
      LS_FIELDCAT-EDIT = 'X' .
      LS_FIELDCAT-CHECKBOX = 'X' .
    ENDIF .
    IF LS_FIELDCAT-FIELDNAME EQ 'REPOM' .
      LS_FIELDCAT-EDIT = 'X' .
    ENDIF .
    MODIFY I_ITEM_CREATE_FIELDCATALOG FROM LS_FIELDCAT .
  ENDLOOP .
ENDFORM .
FORM FRM_SET_EVENT_ITEM_HANDLER .
ENDFORM .
FORM FRM_DISPLAY_9001_ITEM_DATA .
  DATA: LI_EXCLUDE TYPE UI_FUNCTIONS.
  PERFORM FRM_EXCLUDE_TB_FUNCTIONS CHANGING LI_EXCLUDE.
  CLEAR GS_VARIANT.
*设置变式
  GS_VARIANT-REPORT = SY-REPID.
*  SET HANDLER o_event_receiver->on_data_changed FOR o_alv_grid_item_create.
  CALL METHOD O_ALV_GRID_ITEM_CREATE->SET_TABLE_FOR_FIRST_DISPLAY                      "ALV GRID数据显示
    EXPORTING
      IS_LAYOUT                     = WA_LAYOUT_ITEM_CREATE
      IT_TOOLBAR_EXCLUDING          = LI_EXCLUDE
      IS_VARIANT                    = GS_VARIANT
      I_SAVE                        = 'A'
      I_DEFAULT                     = 'X'
    CHANGING
      IT_OUTTAB                     = GT_RESULT_TAB
      IT_FIELDCATALOG               = I_ITEM_CREATE_FIELDCATALOG
    EXCEPTIONS
      INVALID_PARAMETER_COMBINATION = 1
      PROGRAM_ERROR                 = 2
      TOO_MANY_LINES                = 3
      OTHERS                        = 4.

  CALL METHOD O_ALV_GRID_ITEM_CREATE->SET_READY_FOR_INPUT
    EXPORTING
      I_READY_FOR_INPUT = 1.
ENDFORM.
FORM FRM_EXCLUDE_TB_FUNCTIONS CHANGING O_EXCLUDE TYPE UI_FUNCTIONS.
*  DATA L_EXCLUDE TYPE UI_FUNC.
*  L_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_INSERT_ROW.
*  APPEND L_EXCLUDE TO O_EXCLUDE.
*  L_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_COPY_ROW.
*  APPEND L_EXCLUDE TO O_EXCLUDE.
*
*  L_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_APPEND_ROW.
*  APPEND L_EXCLUDE TO O_EXCLUDE.
**
*  L_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_MOVE_ROW.
*  APPEND L_EXCLUDE TO O_EXCLUDE.
*
*  L_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_COPY.
*  APPEND L_EXCLUDE TO O_EXCLUDE.
*
*  L_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_CUT.
*  APPEND L_EXCLUDE TO O_EXCLUDE.
*
*  L_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_PASTE.
*  APPEND L_EXCLUDE TO O_EXCLUDE.
*
*  L_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_PASTE_NEW_ROW.
*  APPEND L_EXCLUDE TO O_EXCLUDE.
*
*  L_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_UNDO.
*  APPEND L_EXCLUDE TO O_EXCLUDE.
*
*
*  L_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_DELETE_ROW.
*  APPEND L_EXCLUDE TO O_EXCLUDE.
*
*  L_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_INSERT_ROW.
*  APPEND L_EXCLUDE TO O_EXCLUDE.
ENDFORM. " FRM_EXCLUDE_TB_FUNCTIONS
*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_0100_EXIT  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_0100_EXIT INPUT.
  CASE SY-UCOMM.
    WHEN 'BACK' OR 'PRE' OR 'EXIT'.
      LEAVE TO SCREEN 0 .
  ENDCASE.
ENDMODULE.
*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_0100  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_0100 INPUT.
  CALL METHOD O_ALV_GRID_ITEM_CREATE->CHECK_CHANGED_DATA
*  IMPORTING
*    E_VALID   =
*  CHANGING
*    C_REFRESH = 'X'
    .

  CASE SY-UCOMM .
    WHEN 'SAVE' .
      PERFORM FRM_CHECK_SAVE .
      IF  GV_CHECK IS  INITIAL .
        PERFORM FRM_SAVE_DATA.
      ENDIF .
    WHEN 'SELALL'.
      PERFORM FRM_SELALL .
    WHEN 'DISALL' .
      PERFORM FRM_DISALL .
  ENDCASE .
ENDMODULE.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值