如何在 SAPGUI 的同一个屏幕显示两个 ALV list

简介: 如何在 SAPGUI 的同一个屏幕显示两个 ALV list

实现效果:同一个屏幕显示两个 list,按照垂直方向排列。

源代码:

report z.
TYPE-POOLS: SLIS.
DATA: T_SFLIGHT LIKE SFLIGHT OCCURS 0 WITH HEADER LINE.
DATA: FCAT TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE,
      GT_EVENTS TYPE SLIS_T_EVENT,
      GD_REPID LIKE SY-REPID,
      TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE 'TOP_OF_PAGE'.
DATA LIST_TOP TYPE SLIS_T_LISTHEADER. " For Logo
DATA WA_HEADER TYPE SLIS_LISTHEADER.
DATA: ES_LAYOUT TYPE  SLIS_LAYOUT_ALV,
      ES_LAYOUT1 TYPE  SLIS_LAYOUT_ALV,
      I_TABNAME TYPE  SLIS_TABNAME,
      I_TABNAME1 TYPE  SLIS_TABNAME,
      L_PRINT   TYPE SLIS_PRINT_ALV,
      I_TEXT TYPE  SLIS_TEXT40 ,
      I_TEXT1 TYPE  SLIS_TEXT40.
CONSTANTS:
      C_FNAM_COS_USER_COMMAND
           TYPE SLIS_FORMNAME  VALUE 'ALV_USER_COMMAND',
      C_FNAM_COS_PF_STATUS
           TYPE  SLIS_FORMNAME VALUE 'ALV_SET_PF_STATUS'.
*Initialize program name
GD_REPID  = SY-REPID.
SELECT CARRID
       CONNID
       FLDATE
       PLANETYPE
       PRICE
       CURRENCY
       SEATSOCC
       SEATSOCC_F
  FROM SFLIGHT
  INTO CORRESPONDING FIELDS OF TABLE T_SFLIGHT
 WHERE SEATSMAX_B < 20.
*Initialize values into ALV
FCAT-COL_POS = 1.
FCAT-FIELDNAME = 'CARRID'.
FCAT-TABNAME = 'T_SFLIGHT'.
FCAT-SELTEXT_L = 'FLIGHT NAME'.
FCAT-OUTPUTLEN = 11.
APPEND FCAT.
CLEAR FCAT.
FCAT-COL_POS = 2.
FCAT-FIELDNAME = 'CONNID'.
FCAT-TABNAME = 'T_SFLIGHT'.
FCAT-SELTEXT_L = 'FLIGHT NUMBER'.
FCAT-OUTPUTLEN = 14.
APPEND FCAT.
CLEAR FCAT.
FCAT-COL_POS = 3.
FCAT-FIELDNAME = 'FLDATE'.
FCAT-TABNAME = 'T_SFLIGHT'.
FCAT-SELTEXT_L = 'FLIGHT DATE'.
FCAT-OUTPUTLEN = 14.
APPEND FCAT.
CLEAR FCAT.
FCAT-COL_POS = 4.
FCAT-FIELDNAME = 'PLANETYPE'.
FCAT-TABNAME = 'T_SFLIGHT'.
FCAT-SELTEXT_L = 'PLANE TYPE'.
FCAT-OUTPUTLEN = 13.
APPEND FCAT.
CLEAR FCAT.
FCAT-COL_POS = 5.
FCAT-FIELDNAME = 'PRICE'.
FCAT-TABNAME = 'T_SFLIGHT'.
FCAT-SELTEXT_L = 'PRICE'.
FCAT-OUTPUTLEN = 10.
APPEND FCAT.
CLEAR FCAT.
FCAT-COL_POS = 6.
FCAT-FIELDNAME = 'CURRENCY'.
FCAT-TABNAME = 'T_SFLIGHT'.
FCAT-SELTEXT_S = 'CURRENCY'.
FCAT-OUTPUTLEN = 17.
APPEND FCAT.
CLEAR FCAT.
*Merging two Alv's in a list
*-----Ist-Step------>
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_INIT'
  EXPORTING
    I_CALLBACK_PROGRAM       = GD_REPID    "ALV_COS_REPID
    I_CALLBACK_PF_STATUS_SET = C_FNAM_COS_PF_STATUS
    I_CALLBACK_USER_COMMAND  = C_FNAM_COS_USER_COMMAND.
*-----IInd-Step------>
*A_____
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
  EXPORTING
    IS_LAYOUT                  = ES_LAYOUT
    IT_FIELDCAT                = FCAT[]
    I_TABNAME                  = I_TABNAME
    IT_EVENTS                  = GT_EVENTS[]
    I_TEXT                     = 'Ist ALV'
  TABLES
    T_OUTTAB                   = T_SFLIGHT
  EXCEPTIONS
    PROGRAM_ERROR              = 1
    MAXIMUM_OF_APPENDS_REACHED = 2
    OTHERS                     = 3.
IF SY-SUBRC <> 0.
  MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
          WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
*B_______
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
  EXPORTING
    IS_LAYOUT                  = ES_LAYOUT1
    IT_FIELDCAT                = FCAT[]
    I_TABNAME                  = 'Sanket'
    IT_EVENTS                  = GT_EVENTS[]
    I_TEXT                     = 'IInd ALV'
  TABLES
    T_OUTTAB                   = T_SFLIGHT
  EXCEPTIONS
    PROGRAM_ERROR              = 1
    MAXIMUM_OF_APPENDS_REACHED = 2
    OTHERS                     = 3.
IF SY-SUBRC <> 0.
  MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
          WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
*-----IIIrd-Step------>
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_DISPLAY'
  EXPORTING
    IS_PRINT      = L_PRINT
  EXCEPTIONS
    PROGRAM_ERROR = 1
    OTHERS        = 2.
IF SY-SUBRC <> 0.
  MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
          WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
相关文章
|
11天前
|
安全 Java
java线程之List集合并发安全问题及解决方案
java线程之List集合并发安全问题及解决方案
13 1
|
11天前
|
存储 消息中间件 算法
Java中的集合框架详解:List、Set、Map的使用场景
Java中的集合框架详解:List、Set、Map的使用场景
|
5天前
|
存储 安全 Java
详解Java中集合的List接口实现的ArrayList方法 | Set接口实现的HashSet方法
详解Java中集合的List接口实现的ArrayList方法 | Set接口实现的HashSet方法
|
16天前
|
存储 安全 Java
Java List详解
Java List详解
|
17天前
|
Java API
使用 Java 来实现两个 List 的差集操作
使用 Java 来实现两个 List 的差集操作
18 3
|
19天前
|
安全 Java 索引
Java List:从入门到精通,一篇文章就够了!
【6月更文挑战第17天】Java List是有序元素集合,支持索引访问、添加、删除和修改。从ArrayList、LinkedList到Vector,各种实现满足不同场景需求。使用add()添加元素,get()获取,set()修改,remove()删除。遍历可用for-each或Iterator,subList()创建子集。注意线程安全,可选synchronizedList()、Vector或CopyOnWriteArrayList。理解List的基本操作和特性,能提升编程效率。
|
4天前
|
存储 缓存 安全
Java List操作详解及常用方法
Java List操作详解及常用方法
|
4天前
|
存储 Java 索引
Java List接口实现原理与性能评估
Java List接口实现原理与性能评估
|
8天前
|
存储 缓存 安全
Java List操作详解及常用方法
Java List操作详解及常用方法