当前位置: 首页 > article >正文

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.


http://www.kler.cn/a/157855.html

相关文章:

  • 关于前端学习的思考-vertical-align的用法
  • JDK8新特性——Stream流
  • 基于Java SSM酒店客房管理系统
  • Flask 快速入门
  • 在JDBC中使用DataSource获取连接
  • 配置texstudio编译器
  • Vue学习计划--Vue2(二)Vue代理方式
  • 2023-2024-1-高级语言程序设计-第2次月考编程题
  • 上传文件获得下载链接方法:直链!直链!
  • vue3,元素可拖拽,自定义指令
  • Java后端开发——JDBC(万字详解)
  • 聊聊nginx的keepalive相关参数
  • C1. Good Subarrays (Easy Version)
  • Linux下超轻量级Rust开发环境搭建:一、安装Rust
  • 分享几种 Java8 中通过 Stream 对列表进行去重的方法
  • 伦敦银破位指标是哪些?
  • 【Cesium】模型平面裁切
  • 12月5日星期二今日早报简报微语报早读
  • Linux chfn命令教程:如何更改和管理用户的finger信息(附案例详解和注意事项)
  • AttributeError: ‘FieldInfo‘ object has no attribute ‘required‘.