ABAP 步循环

一、在界面中循环输出行数据,屏幕直接画出行数,需要计算翻页,一旦界面行数变动,则需要更改代码,所以引入步循环

二、步循环

首先在界面上画出要展示的内容

一、在界面中循环输出行数据,屏幕直接画出行数,需要计算翻页,一旦界面行数变动,则需要更改代码,所以引入步循环

二、步循环

首先在界面上画出要展示的内容

注意,在步循环中,文本的名称和输入框的名称不能相同,否则报错

选中显示的框,定义步循环,发现一行框变成了两行

 通过下拉框,可以随意展示多行数据

 定义翻页按钮

 在屏幕输入输出流中加入步循环代码

 参考代码如下

"-----------------------------@斌将军-----------------------------
TYPES: BEGIN OF ty_makt,
         matnr TYPE makt-matnr,
         maktx TYPE makt-maktx,
       END OF ty_makt.

DATA:gt_makt TYPE TABLE OF ty_makt,
     gs_makt TYPE ty_makt.

DATA:gv_line       TYPE i, "当前行
     gv_lines      TYPE i, "
     gv_row        TYPE i, "总行数
     gv_page_lines TYPE i.
*     gv_limit      TYPE i.

DATA:ok_code TYPE sy-ucomm,
     save_ok TYPE sy-ucomm.

START-OF-SELECTION.

  SELECT
    matnr"物料号
    spras"语言
    maktx"物料描述
  FROM makt
  INTO CORRESPONDING FIELDS OF TABLE gt_makt
  WHERE matnr >= '000000000000000001' AND matnr <= '000000000000004422'.

  DESCRIBE TABLE gt_makt LINES gv_row.
  CALL SCREEN 100.
*&---------------------------------------------------------------------*
*&      Module  READ_DATA  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE read_data OUTPUT.
  gv_page_lines = sy-loopc.
  gv_lines = sy-stepl + gv_line.
  READ TABLE gt_makt INTO gs_makt INDEX gv_lines.
ENDMODULE.                 " READ_DATA  OUTPUT
*&---------------------------------------------------------------------*
*&      Module  MODIFY_DATA  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE modify_data INPUT.
  gv_lines = sy-stepl + gv_line.
  MODIFY gt_makt FROM gs_makt INDEX gv_lines.
ENDMODULE.                 " MODIFY_DATA  INPUT
*&---------------------------------------------------------------------*
*&      Module  USER_COMM  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE user_comm INPUT.
  DATA:lv_count TYPE i.
  save_ok = ok_code.
  CLEAR ok_code.
  CASE save_ok.
    WHEN 'PREV_LINE'.
      gv_line = gv_line - 1.
      IF gv_line < 0.
        gv_line = 0.
      ENDIF.
    WHEN 'PREV_PAGE'.
      gv_line = gv_line - gv_page_lines.
      IF gv_line < 0.
        gv_line = 0.
      ENDIF.
    WHEN 'FIRST_PAGE'.
      gv_line = 0.
    WHEN 'NEXT_LINE'.
*      CLEAR gv_limit.
*      gv_limit = gv_row - gv_line.
*      IF gv_limit > gv_page_lines.
      IF gv_line + 1 < gv_row."如果后边已经没有了,就不能再翻页
        gv_line = gv_line + 1.
      ENDIF.
*      ENDIF.
    WHEN 'NEXT_PAGE'.
*      CLEAR gv_limit.
*      gv_limit = gv_row - gv_line - gv_page_lines.
*      IF gv_limit > gv_page_lines.
      IF gv_line + gv_page_lines < gv_row."如果后边已经没有了,就不能再翻页
        gv_line = gv_line + gv_page_lines.
      ENDIF.
*      ELSE.
*        gv_line = gv_row - gv_page_lines.
*      ENDIF.
    WHEN 'LAST_PAGE'.
*      gv_line = gv_row - gv_page_lines.
      IF gv_page_lines <> 0.
        gv_line = ( gv_row / gv_page_lines ) * 10.
      ENDIF.

    WHEN 'CANCEL'.
      LEAVE PROGRAM.
    WHEN OTHERS.

  ENDCASE.
ENDMODULE.                 " USER_COMM  INPUT

"-----------------------------@斌将军-----------------------------

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值