ABAP 标准列表和选择屏幕

1.连接相似语句

使用“:”连接相似语句,在 ABAP 中,冒号是非常常见的,比如说最常见的程序
“WIRTE::'111', '222', '333'.”。“:”并不是 WRITE语法,而是ABAP 本身语法,是通过“:”
将三个相似语句连接,相当于 
WRITE ’111’. 
WRITE ’222’. 
WRITE ’333’.

2.标准列表输出

TABLES SPFLI.
SKIP.
ULINE AT /(66).
WRITE: / SY-VLINE,(10)'承运人',
SY-VLINE,(10)'航班连接',
SY-VLINE,(10)'国家代码',
SY-VLINE,(10)'起飞城市',
SY-VLINE,(10)'机场',
SY-VLINE."列表的垂直线
ULINE AT /(66).
SELECT * FROM SPFLI.
  WRITE:/ SY-VLINE,(10) SPFLI-CARRID,
  SY-VLINE,(10) SPFLI-CONNID,
  SY-VLINE,(10) SPFLI-COUNTRYTO,
  SY-VLINE,(10) SPFLI-CITYFROM,
  SY-VLINE,(10) SPFLI-AIRPFROM,
  SY-VLINE.
  ENDSELECT.

3.输出无条件换页

输出无条件换页,使用语法:“NEW-PAGE”。 
换页并且定义新页面的长度,使用语法:“NEW-PAGE LINE-COUNT 20”

4.列表颜色

语法: 
FORMAT COLOR <n> [ON] INTENSIFIED [ON|OFF] INVERSE [ON|OFF] 

intensified on:背景色    inverse on:字体颜色

*更改背景颜色
  FORMAT COLOR COL_NEGATIVE.
  WRITE 'HELLO'.
*更改字体颜色
  FORMAT COLOR COL_NEGATIVE INVERSE ON.
  WRITE / 'HAHA'.

更改列表颜色

5.输出热点

START-OF-SELECTION.
WRITE '请按'.
FORMAT HOTSPOT ON COLOR COL_NEGATIVE INVERSE ON.
WRITE '热点'.
FORMAT HOTSPOT OFF COLOR OFF.
AT LINE-SELECTION.
  WRITE 'HAHA'.
  
 

6.交互式列表

双击输出行时输出第二页

START-OF-SELECTION.
WRITE: '初如列表,SY-LSIND=',SY-LSIND.
AT LINE-SELECTION.
  IF SY-LSIND = 1.
    WRITE:'第二列表,SY-LSIND=',SY-LSIND.
    ENDIF.

7.为列表定义工具条与菜单

START-OF-SELECTION.
*设置已使用的状态条
SET PF-STATUS 'ST1'.
WRITE : '测试工具条按钮'.

AT USER-COMMAND.
*当单击按钮时输出
  CASE SY-UCOMM."输入后处理促发功能代码
    WHEN 'MYTEST'.

      WRITE:'SELECTED!'.
      ENDCASE.

在弹出窗口中显示列表

START-OF-SELECTION.
*设置已使用的状态条
SET PF-STATUS 'ST1'.
WRITE : '测试工具条按钮'.

AT USER-COMMAND.
*当单击按钮时输出
  CASE SY-UCOMM.
    WHEN 'MYTEST'.
      IF SY-LSIND = 1.
        SET PF-STATUS 'ST6'.

*定义子窗口并输出
WINDOW STARTING AT 10 10 ENDING AT 30 20.
WRITE '在子窗口输出'.
WRITE '请注意'.
      ENDIF.
  
      ENDCASE.

隐藏字段技术

隐藏字段是列表中存在数据但不输出,可以读到该字段

TABLES:SPFLI,SFLIGHT.
START-OF-SELECTION.
SKIP.

*输出
ULINE AT /(66).
WRITE: / SY-VLINE,(10)'承运人',
SY-VLINE,(10)'航班连接',
SY-VLINE,(10)'国家代码',
SY-VLINE,(10)'起飞城市',
SY-VLINE,(10)'机场',
SY-VLINE."列表的垂直线
ULINE AT /(66).

SELECT * FROM SPFLI.
  WRITE:/ SY-VLINE,(10) SPFLI-CARRID,
  SY-VLINE,(10) SPFLI-CONNID,
  SY-VLINE,(10) SPFLI-COUNTRYTO,
  SY-VLINE,(10) SPFLI-CITYFROM,
  SY-VLINE,(10) SPFLI-AIRPFROM,
  SY-VLINE.
*隐藏关键字
 HIDE:SPFLI-CARRID,SPFLI-CONNID.
ULINE AT /(66).
  ENDSELECT.

  AT LINE-SELECTION.
*只输出第一页
    IF SY-LSIND = 1.
*根据隐藏字段读取并打印成表
    SELECT * FROM SFLIGHT
      WHERE CARRID = SPFLI-CARRID AND CONNID = SPFLI-CONNID.
      WRITE: / SFLIGHT-CARRID,SY-VLINE,
               SFLIGHT-CONNID,SY-VLINE,
              SFLIGHT-FLDATE,SY-VLINE,
              SFLIGHT-PRICE.
      ENDSELECT.
      ENDIF.

双击某一行时,显示该航线所有计划数据。

8.使用hide技术从列表中读取行

上面例子是双击某一行读取改行内容,下面例子直接读取所有数据,在输出的每行加上checkbox确认框,选中后输出。

TABLES:SPFLI.
DATA:SELA(1) TYPE C,
      NUM1 TYPE I.

START-OF-SELECTION.
SKIP.

*输出
ULINE AT /(66).
WRITE: / SY-VLINE,'',
SY-VLINE,(10)'承运人',
SY-VLINE,(10)'航班连接',
SY-VLINE,(10)'国家代码',
SY-VLINE,(10)'起飞城市',
SY-VLINE,(10)'机场',
SY-VLINE."列表的垂直线
ULINE AT /(66).

SELECT * FROM SPFLI.
  WRITE:/ SY-VLINE,SELA AS CHECKBOX,
  SY-VLINE,(10) SPFLI-CARRID,
  SY-VLINE,(10) SPFLI-CONNID,
  SY-VLINE,(10) SPFLI-COUNTRYTO,
  SY-VLINE,(10) SPFLI-CITYFROM,
  SY-VLINE,(10) SPFLI-AIRPFROM,
  SY-VLINE.
*隐藏关键字
 HIDE:SPFLI-CARRID,SPFLI-CONNID,SPFLI-COUNTRYTO,SPFLI-CITYFROM,SPFLI-AIRPFROM.
ULINE AT /(66).
*隐藏选择框,使表格行不会选择
HIDE SELA.
  ENDSELECT.

  END-OF-SELECTION.
  NUM1 = SY-LINNO - 1."当前行

  AT LINE-SELECTION.
*只输出第一页
    IF SY-LSIND = 1.
      DO NUM1 TIMES.

*读取行
        READ LINE SY-INDEX FIELD VALUE SELA.
*如果checked,输出隐含字段
        IF SELA = 'X' .
          WRITE : / SPFLI-CARRID,SPFLI-CONNID,SPFLI-COUNTRYTO,SPFLI-CITYFROM,SPFLI-AIRPFROM.
        ENDIF.
        ENDDO.
        ENDIF.

显示被选中行的信息

9.选择屏幕语法

PARAMETERS:A1(10) TYPE C,
            A2 TYPE I.
WRITE:/ A1,/ A2.

范围筛选(SELECT-OPTIONS)

使用select-options进行多值和多范围检索。

DATA DATA1(20) TYPE C.

SELECT-OPTIONS D1 FOR DATA1.
LOOP AT D1.
  WRITE : / 'SIGN',D1-SIGN,
  'OPTION',D1-OPTION,
  'LOW',D1-LOW,
  'HIGH',D1-HIGH.
  ENDLOOP.
 

调整输入提示

编写完程序后,需要中文提示,先激活程序。

选择菜单转到—文本元素—选择文本—更改D1文本—保存—激活。

选择屏幕实例设计

(1)定义选择屏幕

SELECTION-SCREEN BEGIN OF SCREEN 500.
  PARAMETERS DATA1(20) TYPE C.
  SELECTION-SCREEN END OF SCREEN 500.
  CALL SELECTION-SCREEN 500.

(2)定义多个字段一行输出

SELECTION-SCREEN BEGIN OF LINE.
*预设
*SELECTION-SCREEN POSITION 28.
 SELECTION-SCREEN COMMENT 1(10) S2.
 PARAMETERS:A1(1) TYPE C,
 A2(4) TYPE C,
 S3(4) TYPE C.
 SELECTION-SCREEN END OF LINE.
*为预设值赋值
INITIALIZATION.
S2 = '测试输入'.

(3)单选框

SELECTION-SCREEN BEGIN OF BLOCK RDG1 WITH FRAME TITLE S2.
  PARAMETERS A1 RADIOBUTTON GROUP RG1.
  PARAMETERS A2 RADIOBUTTON GROUP RG1.
  PARAMETERS A3 RADIOBUTTON GROUP RG1.
  SELECTION-SCREEN END OF BLOCK RDG1.
  INITIALIZATION.
  S2 = '请选择'.

(4)为选择窗口定义按钮并响应

TABLES SSCRFIELDS.
DATA DONE(2) TYPE C.
SELECTION-SCREEN:
BEGIN OF SCREEN 500 TITLE TIT,
  BEGIN OF LINE,
    PUSHBUTTON 2(10) S1 USER-COMMAND C1,
    PUSHBUTTON 12(10) S2 USER-COMMAND C2,
    END OF LINE,
    END OF SCREEN 500.

AT SELECTION-SCREEN.
  CASE SSCRFIELDS-UCOMM.
    WHEN 'C1'.
      DONE = 'C1'.
    WHEN 'C2'.
      DONE = 'C2'.
      ENDCASE.

LEAVE TO SCREEN 0.

START-OF-SELECTION.
CALL SCREEN 500.
WRITE:'你按了:',DONE.

INITIALIZATION.
S1 = '按钮1'.
S2 = '按钮2'.
TIT = '为选择窗口定义按钮并响应'.

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值