SAP ABAP Table Control的制作

Table Control的制作

先建立一个有退出按钮的程序,进入屏幕编辑器,选中控制对象( ),并在屏幕上创建,如图7-12 所示。

建立的对象显示粉红色,表示属性未设置正确。输入名称属性后,表头会转为灰色。表

格的创建与常规编程软件不同,需要选中一个输入输出字段,然后在表身创建,如图7-13 所示。

输入名称后整个表格都转为灰色(表示已设置正确)。调整输入字段的其他属性,如图7-14 所示。

手工调整字段名称和内表对应的名称一致后,第一个字段建立完成,然后为该字段加上表头,制作方式和输入字段一样,选中一个文本字段,创建在该字段上方的表头,如图7-15所示。

接着创建航班号、起飞城市等信息,并添加垂直水平分格符,完成后如图 7-16 所示。

界面设计完成。

设计逻辑流程序:

*PBO显示屏幕前的处理

process before output.
  MODULE status_0100.

*处理LOOP从内表读到表控制

  LOOP WITH CONTROL tbl1.
    MODULE filltbl1.
  ENDLOOP.

process after input.

*处理LOOP从表控制更新内表

  LOOP WITH CONTROL tbl1.
    MODULE readtbl1.
  ENDLOOP.
  MODULE user_command_0100.

 主程序:

REPORT ytest21.
DATA: ok_code TYPE sy-ucomm,
      save_ok TYPE sy-ucomm.
*定义内表,注意,两种写法一样
*DATA SP2 LIKE SPFLI OCCURS 0 WITH HEADER LINE.
DATA sp2 LIKE TABLE OF spfli WITH HEADER LINE.
*定义单结构记录
DATA sp1 TYPE spfli.
*增加内表数据
SELECT * INTO CORRESPONDING FIELDS OF TABLE sp2 FROM spfli.
*直接调用窗口
CALL SCREEN 100.
*定义表控制对象
CONTROLS tbl1 TYPE TABLEVIEW USING SCREEN 100.
*输出数据,看内表有无改变
LOOP AT sp2.
  WRITE: / sp2-carrid,sp2-connid,sp2-countryfr,sp2-cityfrom.
ENDLOOP.
*&---------------------------------------------------------------------*
*& Module STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE status_0100 OUTPUT.
  SET PF-STATUS 'STATUS1'.
ENDMODULE. " STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
* text
 
*----------------------------------------------------------------------*
MODULE user_command_0100 INPUT.
  save_ok = ok_code.
  CLEAR ok_code.
  CASE save_ok.
    WHEN 'EXIT'.
      LEAVE TO SCREEN 0.
  ENDCASE.
ENDMODULE. " USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
*& Module FILL OUTPUT
*&---------------------------------------------------------------------*
* 逐行从内表填写表控制
*----------------------------------------------------------------------*
MODULE filltbl1 OUTPUT.
  READ TABLE sp2 INTO sp1 INDEX tbl1-current_line.
ENDMODULE. " FILL OUTPUT
*&---------------------------------------------------------------------*
*& Module READ INPUT
*&---------------------------------------------------------------------*
* 逐行从内表控制更新内表
*----------------------------------------------------------------------*
MODULE readtbl1 INPUT.
  MODIFY sp2 FROM sp1 INDEX tbl1-current_line.
ENDMODULE. " READ INPUT

程序输出结果如图7-17 所示。

调整前2 行数据,如图7-18 所示。

退出编辑屏幕,程序输出内表数据,屏幕显示数据已更改,如图7-19 所示。

上述表格控件是没有垂直滚动条的,原因是没有定义表格的记录数,因而在 PBO 中还

需要添加以下代码:

DATA nums TYPE i.
MODULE status_0100 OUTPUT.
  SET PF-STATUS ‘status1’.
  IF nums = 0.
    DESCRIBE TABLE sp2 LINES nums.
    tbl1-lines = nums.
  ENDIF.
ENDMODULE.

7.1.1 建立程序

先建立程序,定义内表,屏幕有退出按钮,代码如下。

逻辑流程序:

*PBO 显示屏幕前的处理

process before output.

  MODULE status_0100.

*PAI 用户输入后的处理

process after input.

  MODULE user_command_0100.

主程序:

REPORT ytest020.
*功能码返回值
DATA:ok_code TYPE sy-ucomm,
     save_ok LIKE ok_code.
*定义内表,注意,两种写法一样
*DATA SP1 LIKE SPFLI OCCURS 0 WITH HEADER LINE.
DATA sp1 LIKE TABLE OF spfli WITH HEADER LINE.
*增加内表数据
SELECT * INTO CORRESPONDING FIELDS OF TABLE sp1 FROM spfli.
*测试输出数据
*LOOP AT SP1.
 * write: / sp1-carrid,sp1-cityfrom.
*ENDLOOP.
*直接调用窗口
CALL SCREEN 100.
*用户交互
MODULE user_command_0100 INPUT.
  save_ok = ok_code.
  CLEAR ok_code.
*退出按钮时退出程序
  CASE save_ok.
    WHEN ‘exit’.
      LEAVE PROGRAM.
  ENDCASE.
ENDMODULE.
*定义状态条、包括菜单、工具条按钮、系统按钮等
MODULE status_0100 OUTPUT.
  SET PF-STATUS ‘status1’.
ENDMODULE.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ᝰ随心ꦿེএ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值