用ABAP编写程序,屏幕的一组输入/输出框是SBOOK的字段CARRID、CONNID、FLDATE、BOOKID,另外还有三个按钮分别为“订票”、“重置”和“返回”,当按“订票”钮后,该条信息被保存,并且出现新的屏幕,屏幕上有一个输出框,显示“XX航空公司XX航线XX航班订票人数为XX人”;当按“重置”钮后,屏幕上的文字都被清除;当按“返回”钮后,返回程序。
时间: 2023-07-15 22:14:34 浏览: 42
以下是一个简单的 ABAP 程序,实现了上述功能:
```abap
REPORT Z_BOOK_FLIGHT.
* 数据定义
DATA: BEGIN OF SBOOK,
CARRID TYPE SFLIGHT-CARRID,
CONNID TYPE SFLIGHT-CONNID,
FLDATE TYPE SFLIGHT-FLDATE,
BOOKID TYPE SBOOK-BOOKID,
END OF SBOOK.
DATA: NUM_BOOKED TYPE I.
* 屏幕定义
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
PARAMETERS:
carrid TYPE SFLIGHT-CARRID,
connid TYPE SFLIGHT-CONNID,
fldate TYPE SFLIGHT-FLDATE,
bookid TYPE SBOOK-BOOKID.
SELECTION-SCREEN END OF BLOCK b1.
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-002.
SELECTION-SCREEN PUSHBUTTON /1(10) '订票' USER-COMMAND book.
SELECTION-SCREEN PUSHBUTTON /1(10) '重置' USER-COMMAND reset.
SELECTION-SCREEN PUSHBUTTON /1(10) '返回' USER-COMMAND back.
SELECTION-SCREEN END OF BLOCK b2.
* 事件处理
AT SELECTION-SCREEN OUTPUT.
LOOP AT SCREEN.
CASE screen-group1.
WHEN 'B1'.
screen-active = 1.
WHEN 'B2'.
IF screen-name = 'BOOK'.
screen-active = 1.
ELSE.
screen-active = 0.
ENDIF.
ENDCASE.
MODIFY SCREEN.
ENDLOOP.
AT SELECTION-SCREEN.
CASE sy-ucomm.
WHEN 'BOOK'.
* 保存订票信息
MOVE-CORRESPONDING SBOOK TO SBOOK_DB.
APPEND SBOOK_DB TO SBOOKS_DB.
* 统计订票人数
SELECT COUNT(*) FROM SBOOKS INTO NUM_BOOKED
WHERE carrid = SBOOK_DB-carrid
AND connid = SBOOK_DB-connid
AND fldate = SBOOK_DB-fldate.
* 显示订票信息
MESSAGE |{ SBOOK_DB-carrid }航空公司{ SBOOK_DB-connid }航线{ SBOOK_DB-fldate }航班订票人数为{ NUM_BOOKED }人| TYPE 'S'.
WHEN 'RESET'.
* 清除输入框
CLEAR SBOOK.
WHEN 'BACK'.
* 退出程序
LEAVE TO SCREEN 0.
ENDCASE.
```
这个程序定义了一个名为 `SBOOK` 的结构体,用来保存输入框的内容。在屏幕上定义了一组输入框和三个按钮,分别对应订票、重置和返回操作。当用户点击“订票”按钮时,程序会将输入框的内容保存到一个名为 `SBOOKS_DB` 的表中,并统计当前航班的订票人数,最后在屏幕上显示订票信息。当用户点击“重置”按钮时,程序会清除输入框的内容。当用户点击“返回”按钮时,程序直接退出。