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 = '为选择窗口定义按钮并响应'.