abap (屏幕)表格控制器

在网上看了很多关于这个表格控制器的用法,感觉很多人分享的文章时编辑不太严谨,自己尝试时会出现很多错误,所以现在自己分享一个详细的关于屏幕表格控制器的用法。


1.建立程序和屏幕.


第一步,老生常谈用SE38建立程序,我这里取名为 ”Z_SCREEN_TEST1“。



































然后建立屏幕,取名为 “0100”


如上图所示,然后再点击“格式”,进入如下图的屏幕编辑模式,在左侧栏拖一个表格控制器出来,然后点击下图圈红的ABAP字典,选择一个你本地的SAP透明表,拖到表格控制器里






然后选择除MANDT以外的栏位,生成如下屏幕。然后再设置各种参数,把表格控制器命名为“tabcol”,在这里就不详细说明使用屏幕的方法了,主要是介绍表格控制器的使用




之后再建立gui_status,我贴上我建立的status供参考。





到这里,第一个步骤就完成了,在这个步骤,主要是创建程序,在程序里创建屏幕,在屏幕中创建表格控制器,然后再按F6调出abab字典导入格式,之后再创建gui_status.

2.屏幕流逻辑和程序代码实现



流逻辑代码
PROCESS BEFORE OUTPUT.

  MODULE status_0100.
*處理LOOP從內表讀到表控制
  LOOP WITH CONTROL tabcol.

    MODULE filltab1.
  ENDLOOP.

*
PROCESS AFTER INPUT.

*  處理loop從表控制更新到內表
   loop with control tabcol.

  MODULE readtabl.
ENDLOOP.
 MODULE USER_COMMAND_0100.


主程序代码:
REPORT z_screen_test1 .
TABLES: zlover.

DATA: ok_code TYPE sy-ucomm,
      save_ok TYPE sy-ucomm.
* 定義內表
DATA: tab LIKE TABLE OF zlover WITH HEADER LINE.
*調用窗口
CALL SCREEN 100.

*定義表控制對象
*&--------------------------------------------------------------------&*
*&    若要使用表控制器,則要在程序定義部分追加下面語句                &*
*&  CONTROLS ctr TYPE TABLEVIEW USING SCREEN scr.                     &*
*&  ctr: 表控制器的名字。                                             &*
*&  scr: 使用表控制器的畫面編號。                                     &*
*&--------------------------------------------------------------------&*
CONTROLS tabcol TYPE TABLEVIEW USING SCREEN 100.
*&---------------------------------------------------------------------*
*&      Module  status_0100  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE status_0100 OUTPUT.
*使用GUI
  SET PF-STATUS '0100_STATUS'.
*  將透明表數據賦值到內表
  SELECT * INTO CORRESPONDING FIELDS OF TABLE tab FROM zlover.
*確認表控制器的數據條數,可生成滾動條
  DESCRIBE TABLE tab LINES tabcol-lines.
ENDMODULE.                 " status_0100  OUTPUT
*&---------------------------------------------------------------------*
*&      Module  filltab1  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE filltab1 OUTPUT. "逐行把內表的數據寫到表控制器中
  READ TABLE tab INTO zlover INDEX tabcol-current_line.

ENDMODULE.                 " filltab1  OUTPUT
*&---------------------------------------------------------------------*
*&      Module  readtabl  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE readtabl INPUT. "逐行從內表更新到透明表
  MODIFY tab FROM zlover INDEX tabcol-current_line.
ENDMODULE.                 " readtabl  INPUT
*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_0100  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE user_command_0100 INPUT.
  save_ok = ok_code.
  CLEAR ok_code.
  CASE save_ok.
    WHEN 'BACK'.
      LEAVE TO SCREEN 0.
  ENDCASE.

ENDMODULE.                 " USER_COMMAND_0100  INPUT



效果图:





















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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值