ABAP OO分屏:sflight

此博客主要展示了一段ABAP程序代码,用于创建和展示GUI界面。代码包含数据定义、选择屏幕设置、数据获取、ALV网格创建与显示等功能。通过该程序,可实现抬头和行项目数据的输出,并对界面进行分割、布局设置和数据刷新等操作。

*&---------------------------------------------------------------------*
*& Report  ZTEST_CESHI
*&---------------------------------------------------------------------*
REPORT ztest_ceshi.

TABLES: sflight.

"抬头数据输出
TYPES: BEGIN OF ty_head.
        INCLUDE TYPE scarr.
TYPES:   slbox   TYPE c,
         light   TYPE icon_d,
         message TYPE string,
         END OF ty_head.
DATA: gt_head TYPE TABLE OF ty_head,
      gs_head TYPE ty_head.
"行项目数据输出
TYPES: BEGIN OF ty_item.
        INCLUDE TYPE sflight.
TYPES:   slbox   TYPE c,
         light   TYPE icon_d,
         message TYPE string,
         END OF ty_item.

DATA: gt_item TYPE TABLE OF ty_item,
      gs_item TYPE ty_item.

DATA:g_cust_con    TYPE REF TO cl_gui_custom_container.

"字段属性定义
DATA: gs_fcat TYPE lvc_s_fcat.
DATA: gt_fcat_h TYPE lvc_t_fcat,
      gt_fcat_i TYPE lvc_t_fcat.
DATA: gs_layout_h TYPE lvc_s_layo,
      gs_layout_i TYPE lvc_s_layo.
DATA: gs_variant_h TYPE disvariant,
      gs_variant_i TYPE disvariant,
      gv_colno     TYPE i.
DATA: gt_ui_func TYPE ui_functions. "隐藏alv菜单控件

DATA: ok_code TYPE sy-ucomm. "用户功能码接收
DATA: save_ok TYPE sy-ucomm. "用户功能码接收

"ALV grid
DATA: gs_dock        TYPE REF TO cl_gui_docking_container,
      gs_splitter    TYPE REF TO cl_gui_splitter_container, "分割屏幕类
      gs_container_h TYPE REF TO cl_gui_container, "抬头容器
      gs_container_i TYPE REF TO cl_gui_container, "行项目容器
      gs_grid_h      TYPE REF TO cl_gui_alv_grid, "抬头屏幕对象类
      gs_grid_i      TYPE REF TO cl_gui_alv_grid. "行项目屏幕对象类

CONSTANTS: gc_h   TYPE c VALUE 'H'. "抬头标识符
CONSTANTS: gc_i  TYPE c VALUE 'I'. "行项目标识符

"选择屏幕
SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME.
SELECT-OPTIONS: s_carrid FOR sflight-carrid.
SELECTION-SCREEN END OF BLOCK blk1 .

START-OF-SELECTION.
  "取数
  PERFORM frm_select_data.

END-OF-SELECTION.
  "输出屏幕准备
  PERFORM frm_prepare_alv.
  "调用100屏幕输出
  CALL SCREEN 0100.

MODULE pbo OUTPUT.
  SET PF-STATUS 'MAIN100'.
  SET TITLEBAR 'MAINTITLE' WITH 'OOALV分割'.
ENDMODULE.

MODULE pai INPUT.
  save_ok = ok_code.
  CLEAR ok_code.

  CASE save_ok.
    WHEN '&F03' OR '&F12' OR '&F15'.
      LEAVE TO SCREEN 0. "返回上一个屏幕
    WHEN OTHERS.
  ENDCASE.
ENDMODULE.
MODULE init_alv OUTPUT.
  IF gs_dock IS INITIAL.
    "屏幕分割
    PERFORM frm_split_screen.

    "创建alv grid
    PERFORM frm_create_grid.
    "显示数据
    PERFORM frm_display_alv USING gc_h gs_grid_h.
    PERFORM frm_display_alv USING gc_i gs_grid_i.

  ELSE.
    "alv 刷新
    PERFORM frm_refresh_alv USING gs_grid_h.
    PERFORM frm_refresh_alv USING gs_grid_i.
  ENDIF.
ENDMODULE.
FORM frm_select_data .
  SELECT *
    FROM scarr
    INTO CORRESPONDING FIELDS OF TABLE gt_head
  WHERE carrid IN s_carrid.
  SELECT *
    FROM sflight
    INTO CORRESPONDING FIELDS OF TABLE gt_item
 &

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值