SAP: SALV 利用控制器的模式

SAP : SALV 例子

利用控制器的模式

利用控制器的SALV方法与实际业务中最常用的利用GRID显示ALV的方法其步骤一样。

为了在画面上显示ALV事例,必须要存在连接画面和ALV GRID控件的SAP容器控件。

SAP控制器为了充当 LINKER将SAP控件包含于自己的领域。SAP控件包含SAP Tree、

SAP PICTURE、SAP TEXTEDIT、 SAP SPLITTER控件等。

 

3

 3、屏幕的逻辑流:

PROCESS BEFORE OUTPUT.

MODULE 0100_PBO.

PROCESS AFTER INPUT.

MODULE 0100_PAI.

 

4、主程序:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
*&---------------------------------------------------------------------*
*& Report  Z17_04
*&
*&---------------------------------------------------------------------*
*& 全屏Classic List模式
*& LIST_DISPLAY : 用SALV显示与传统式REUSE_ALV_LIST_DISPLAY函数输出ALV
*& 一样效果的报表。
*&---------------------------------------------------------------------*
 
REPORT Z17_04.
 
DATA: gt_itab type table of sflight.
DATA: gr_table TYPE REF TO CL_SALV_TABLE.
DATA: gr_function type ref to cl_salv_functions_list." 应用工具栏
DATA: gr_container type ref to cl_gui_custom_container.
DATA: OK_CODE type syucomm.
 
SELECT * FROM  SFLIGHT INTO CORRESPONDING FIELDS OF TABLE
  gt_itab up to 25 rows.
 
*& #REGION: 用 屏幕100代替
*cl_salv_table=>factory(
*  EXPORTING
*    list_display = abap_true
*  IMPORTING
*    r_salv_table = gr_table
*  CHANGING
*    t_table = gt_itab
*      ).
*
**& #region:  应用工具栏
*gr_function = gr_table->get_functions( ).
*gr_function->set_default( ).
**& #endregion:  应用工具栏
*
*gr_table->display( ).
*& #ENDREGION: 用 屏幕100代替
 
*& 调用自定义的屏幕100
CALL SCREEN 0100.
 
 
*& 屏幕输出后事件 子程序
INCLUDE z17_04_pbo.
 
*& 屏幕的输入前事件 子程序
INCLUDE z17_04_pai.

  

4.1 子程序 Z17_04_PAI

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
*----------------------------------------------------------------------*
***INCLUDE Z17_04_PAI.
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*&      Module  0100_PAI  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE 0100_PAI INPUT.
  CASE OK_CODE.
    WHEN 'BACK' OR 'EXIT' OR  'CANC'.
      SET SCREEN 0.
      LEAVE SCREEN.
  ENDCASE.
ENDMODULE.                 " 0100_PAI  INPUT

  

4.2 子程序 Z17_04_PBO

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
*----------------------------------------------------------------------*
***INCLUDE Z17_04_PBO.
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*&      Module  0100_PBO  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE 0100_PBO OUTPUT.
  SET PF-STATUS '0100'.
 
  IF gr_container is not bound.
 
 
*& 1. Create Container
    CREATE OBJECT gr_container
     exporting
       container_name = 'CONTAINER'.
 
*& 2. CREATE ALV
    cl_salv_table=>factory(
      exporting
        r_container = gr_container
        container_name = 'CONTAINER'
      IMPORTING
        r_salv_table = gr_table
      CHANGING
        t_table = gt_itab
    ).
 
*& 3. SET ALV BUTTON
    gr_function = gr_table->get_functions( ).
    gr_function->set_all( abap_true ). " 追加ALV所有功能
 
*& 4. Call alv
    gr_table->display( ).
  ENDIF.
ENDMODULE.                 " 0100_PBO  OUTPUT

4.3 运行效果图

 

  

posted @   samrv  阅读(32)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
历史上的今天:
2023-06-05 EBS:供应商详细信息之公司详细信息
点击右上角即可分享
微信分享提示