abap 屏幕显示ALV

abap 屏幕显示ALV
image

image

image

image


REPORT ZPCYMOKUAI.

TYPE-pools: slis.
DATA: i_layout TYPE slis_layout_alv. " 定义布局结构

DATA: gt_spfli TYPE TABLE OF spfli,
      gs_spfli TYPE spfli.

" ===== 1. 全局变量声明区 =====
DATA: stu_id   TYPE string,
      stu_name TYPE string.
DATA: ok_code  TYPE sy-ucomm.


DATA: grid TYPE REF TO cl_gui_alv_grid,
      grid1 TYPE REF TO cl_gui_alv_grid,
      g_custom_container TYPE REF TO cl_gui_custom_container,
      g_custom_container1 TYPE REF TO cl_gui_custom_container,
      gt_sflight TYPE TABLE OF sflight.

" ===== 2. 可执行的启动事件(必须添加这个事件块) =====
START-OF-SELECTION.
  CALL SCREEN 0100.


" ===== 3. 屏幕逻辑模块(PBO 和 PAI) =====
*&---------------------------------------------------------------------*
*& Module STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
MODULE status_0100 OUTPUT.
  SET TITLEBAR 'TITLE_0100'.
  SET PF-STATUS 'STANDARD'.


  IF g_custom_container IS INITIAL.
  CREATE OBJECT g_custom_container
    EXPORTING
      container_name = 'CCCONTAINER'.
  CREATE OBJECT grid
    EXPORTING
      i_parent = g_custom_container.
  ENDIF.

 IF g_custom_container1 IS INITIAL.
  CREATE OBJECT g_custom_container1
    EXPORTING
      container_name = 'CCTABLE'.
  CREATE OBJECT grid1
    EXPORTING
      i_parent = g_custom_container1.
  ENDIF.


ENDMODULE.




*&---------------------------------------------------------------------*
*& Module USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
MODULE user_command_0100 INPUT.
  "MESSAGE '按钮被点击了' TYPE 'I'.   " 测试消息
  ok_code = sy-ucomm.

  CASE ok_code.
    WHEN 'SEARCH'.
      DATA tempvalue TYPE c LENGTH 10.
      tempvalue = |%{ stu_id }%|.
      SELECT * FROM sflight INTO TABLE gt_sflight WHERE currency LIKE tempvalue.

      CALL METHOD grid->set_table_for_first_display
        EXPORTING
          i_structure_name = 'SFLIGHT'
        CHANGING
          it_outtab = gt_sflight.


        CALL METHOD grid1->set_table_for_first_display
        EXPORTING
          i_structure_name = 'SFLIGHT'
        CHANGING
          it_outtab = gt_sflight.

    WHEN 'SHOW'.  " 新增按钮的处理
      PERFORM f1000_layout_init CHANGING i_layout.
      PERFORM f_display_data.
    WHEN 'BACK' OR 'EXIT' OR 'CANCEL'.
      LEAVE PROGRAM.
    WHEN OTHERS.
  ENDCASE.
ENDMODULE.

*----------------------------------------------------------------------*
*       FORM F_DISPLAY_DATA
*----------------------------------------------------------------------*
FORM f_display_data .
  CLEAR gt_spfli[].

  SELECT *
    FROM spfli
    INTO TABLE gt_spfli
    UP TO 1000 ROWS.

  IF sy-subrc <> 0.
    MESSAGE '未查询到任何数据' TYPE 'I'.
    EXIT.
  ENDIF.

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      I_STRUCTURE_NAME        = 'SPFLI'
      I_SAVE                  = 'A'
      is_layout          = i_layout
    TABLES
      t_outtab                = gt_spfli[]
    EXCEPTIONS
      program_error           = 1
      OTHERS                  = 2.

  IF sy-subrc <> 0.
    MESSAGE 'ALV显示出错' TYPE 'E'.
  ENDIF.
ENDFORM.

FORM f1000_layout_init USING i_layout TYPE slis_layout_alv.
  CLEAR i_layout.
  i_layout-colwidth_optimize = 'X'.   " 自动优化列宽
  i_layout-zebra = 'X'.              " 斑马条纹
  i_layout-totals_text = '合计'.      " 合计行文本
  i_layout-no_colhead = ''.          " 显示列标题
ENDFORM.

预览:
image

posted @ 2026-07-22 14:31  虚拟过客之IT老男人  阅读(3)  评论(0)    收藏  举报