让ABAP table control显示正确的行数
2008 12 5 11:10 AM 3500次查看
今天在TL的指导下,在ABAPDOCU这个transaction里找到了DEMO_DYNPRO_TABCONT_LOOP_AT这个示例程序,才发现table control的行数是需要手动在PBO中修改的。
部分代码示例(以sflight表为例):
*数据定义
TABLES sflight.
CONTROLS tab TYPE TABLEVIEW USING SCREEN 0200.
DATA : cols LIKE LINE OF tab-cols,
lines TYPE i.
DATA it_sflight TYPE STANDARD TABLE OF sflight WITH KEY
MANDT
CARRID
CONNID
FLDATE.
*screen 0200的Flow logic
PROCESS BEFORE OUTPUT.
MODULE STATUS_0200.
LOOP AT it_sflight INTO sflight WITH CONTROL tab CURSOR tab-top_line.
ENDLOOP.
*PAI就省略了,里面处理添加/删除等事件
*最关键的部分,修改行数
MODULE status_0200 OUTPUT.
SET PF-STATUS 'PF200'.
DESCRIBE TABLE it_sflight LINES lines.
tab-lines = lines. "这里就是更改行数了
ENDMODULE.
顺便再说下,有时候CALL SCREEN,然后LEAVE TO SCREEN 0回来时,可能会一次后退多个屏幕。其实只要在CALL SCREEN的下面加上“LEAVE TO SCREEN 当前屏幕号”就可以了。
不过我看到很多代码都是直接LEAVE TO SCREEN,我用CALL SCREEN的原因是可以不用多次写AT EXIT-COMMAND的MODULE,而可以用通用的:
MODULE exit INPUT.
CASE ok_code.
WHEN 'EXIT'.
LEAVE PROGRAM.
WHEN 'BACK' OR 'CANC'.
LEAVE TO SCREEN 0.
WHEN OTHERS.
ENDCASE.
ENDMODULE.
0条评论 你不来一发么↓