abap (屏幕)表格控制器

xiaoxiao2021-02-28  60

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

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 效果图:
转载请注明原文地址: https://www.6miu.com/read-70326.html

最新回复(0)