step loop浅谈
来源:互联网 发布:网络传销骗局 编辑:程序博客网 时间:2024/06/07 22:00
step loop和table control有极其相似的一面,二者主要区别以下两点:
step loop 不能横向滚动,table control可以横向滚动,step loop没有滚动条,table control有;
step loop可以从指定内表cursor显示数据,table control只能将内表数据全部显示出来。
相对来说,个人认为由于数据表的字段一般比较多,所以在关联数据表的情况下,选择使用table control较为方便。
而当程序自定义表结构时,通常字段不会很多,这个时候我们一般选用step loop显示数据。
之前已经有讲解table control的使用,以下讲解step loop的用法。
首先当然要定义好要显示的结构
然后在屏幕中定义step loop:
选择那些定义好的field--->Edit--->Grouping-->Step loop--->Define
然后,在PBO 和PAI中至少写一个loop. ... ... end loop,第一个loop里面作用是逐行将内表数据读入到step loop的field里面去,第二个loop用于更新内表数据。
以下是本人模仿DEMO写的一个实例,加以详细的注释,希望帮助ABAP入门的朋友加强理解:
注意:在screen上的field会默认为CHAR类型,需要手动将类型改为整型才能接收到程序内表的数字
主程序:
*Data declaration--------------------------------------------------*
*Define structure
TYPES: BEGIN OF t_itab,
col1 TYPE i,
col2 TYPE i,
END OF t_itab.
DATA: itab TYPE STANDARD TABLE OF t_itab,
wa LIKE LINE OF itab,
fill TYPE i.
DATA line TYPE i."used to store top line of step loop
DATA lines TYPE i."used to store current line of step loop
data page_lines type i.
DATA limit TYPE i.
DATA ok_code TYPE sy-ucomm.
DATA save_ok TYPE sy-ucomm.
*Event processing blocks-------------------------------------------*
*start-of-selection event
START-OF-SELECTION.
*initialize itab
DO 40 TIMES.
wa-col1 = sy-index.
wa-col2 = sy-index ** 2.
APPEND wa TO itab.
ENDDO.
DESCRIBE TABLE itab LINES fill.
CALL SCREEN 100.
*&---------------------------------------------------------------------*
*& Module READ_DATA OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE read_data OUTPUT.
page_lines = sy-loopc.
lines = sy-stepl + line.
READ TABLE itab INTO wa INDEX lines.
ENDMODULE. " READ_DATA OUTPUT
*&---------------------------------------------------------------------*
*& Module MODIFY_DATA INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE modify_data INPUT.
lines = sy-stepl + line.
MODIFY itab FROM wa INDEX lines.
ENDMODULE. " MODIFY_DATA INPUT
*&---------------------------------------------------------------------*
*& Module USER_COMM INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE user_comm INPUT.
save_ok = ok_code.
CLEAR ok_code.
CASE save_ok.
WHEN 'PREV_LINE'.
line = line - 1.
IF line < 0.
line = 0.
ENDIF.
WHEN 'PREV_PAGE'.
line = line - page_lines.
IF line < 0.
line = 0.
ENDIF.
WHEN 'FIRST_PAGE'.
line = 0.
WHEN 'NEXT_LINE'.
CLEAR limit.
limit = fill - line.
IF limit > page_lines.
line = line + 1.
ENDIF.
WHEN 'NEXT_PAGE'.
CLEAR limit.
limit = fill - line - page_lines.
IF limit > page_lines.
line = line + page_lines.
ELSE.
line = fill - page_lines.
ENDIF.
WHEN 'LAST_PAGE'.
line = fill - page_lines.
WHEN OTHERS.
ENDCASE.
ENDMODULE. " USER_COMM INPUT
*&---------------------------------------------------------------------*
*& Module CANCEL INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE cancel INPUT.
LEAVE PROGRAM.
ENDMODULE. " CANCEL INPUT
屏幕逻辑流:
PROCESS BEFORE OUTPUT.
MODULE status_0100.
LOOP .
MODULE read_data.
ENDLOOP.
PROCESS AFTER INPUT.
MODULE cancel AT EXIT-COMMAND.
LOOP .
MODULE modify_data.
ENDLOOP.
MODULE user_comm.
- step loop浅谈
- 讨论会之后,next step ->loop
- ABAP 表格控制(Table Control)和 步循环(STEP-LOOP) .
- ABAP 表格控制(Table Control)和 步循环(STEP-LOOP)
- ABAP 表格控制(Table Control)和 步循环(STEP-LOOP) . .
- loop
- loop
- Loop
- loop
- 浅谈Handler,Loop,MessageQueue,Thread的小秘密
- Step
- step
- Step
- Step
- step
- step
- Loop & Loop
- 浅谈SQL Server中的三种物理连接操作(HASH JOIN MERGE JOIN NESTED LOOP)
- C# 导入.reg文件
- Hibernate2--开发步骤及接口说明
- Jquery表单验证(只能输入数字,检查复选框)
- Eclipse常用的几个功能设置
- C# 16进制与字符串、字节数组之间的转换(转)
- step loop浅谈
- select中不可选择的option
- Eclipse快捷键大全(转载)
- android Gallery控件与BaseAdapter适配器
- js方法传参报未找到该对象
- Android "syntax error"
- hdu3887求一棵树中每个结点的子树中比其序号小的数目
- 关于XML 类型字段的修改
- 在linux下安装mysql