TABLE CONTROL 跳页代码

本文介绍了如何在SAP中实现TABLE CONTROL的跳页功能,包括跳转到第一页、上一页、下一页和最后一页的代码实现。通过调用COMPUTE_SCROLLING_IN_TC形式,根据传入的TABLE CONTROL名称和按钮功能码进行屏幕滚动操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

      TABLE CONTROL 跳转代码总结,TABLE CONTROL的名字是SCR_RESULT,

屏幕上分别有四个按钮:第一页,上一页,下一页和最后一页

 定义全局变量:

DATA:  G_SCR_RESULT_LINES  LIKE SY-LOOPC.

在屏幕PBO里面设置G_SCR_RESULT_LINES  的值:

PROCESS BEFORE OUTPUT.

...

LOOP AT   SCREEN_RESULT
       INTO SCREEN_RESULT
       WITH CONTROL SCR_RESULT
       CURSOR SCR_RESULT-CURRENT_LINE.
    MODULE SET_4103_TC_LINES.
*&SPWIZARD:   MODULE SCR_RESULT_CHANGE_FIELD_ATTR
  ENDLOOP.

...

 

MODULE SET_4103_TC_LINES OUTPUT.
  G_SCR_RESULT_LINES = SY-LOOPC.
ENDMODULE.  

...

 

以下就是详细调用代码:

 "跳到第一页

PERFORM COMPUTE_SCROLLING_IN_TC USING  'SCR_RESULT' 'P--'.

 "跳到上一页

PERFORM COMPUTE_SCROLLING_IN_TC USING  'SCR_RESULT' 'P-'.

 "跳到下一页

PERFORM COMPUTE_SCROLLING_IN_TC USING  'SCR_RESULT' 'P+'.

 "跳到最后一页

PERFORM COMPUTE_SCROLLING_IN_TC USING  'SCR_RESULT' 'P++'.

 

"跳转代码

"说明: P_TC_NAME   -- TABLE CONTROL的名字 

"             P_OK -- 屏幕跳转按钮的功能码

"                            固定值:P-- (第一页)     P- (上一页)

"                                             P+  (下一页)    p++(最后一页)

FORM COMPUTE_SCROLLING_IN_TC USING    P_TC_NAME   P_OK.

  DATA L_TC_NEW_TOP_LINE     TYPE I.
  DATA L_TC_NAME             LIKE FELD-NAME.
  DATA L_TC_LINES_NAME       LIKE FELD-NAME.
  DATA L_TC_FIELD_NAME       LIKE FELD-NAME.
  DATA:     L_SCR_RESULT_LINES  LIKE SY-LOOPC.
  FIELD-SYMBOLS <TC>         TYPE CXTAB_CONTROL.
  FIELD-SYMBOLS <LINES>      TYPE I.

  ASSIGN (P_TC_NAME) TO <TC>.
  CONCATENATE 'L_' P_TC_NAME '_LINES' INTO L_TC_LINES_NAME.
  ASSIGN (L_TC_LINES_NAME) TO <LINES>.

  IF <TC>-LINES = 0.

    L_TC_NEW_TOP_LINE = 1.
  ELSE.

    CALL FUNCTION 'SCROLLING_IN_TABLE'
         EXPORTING
              ENTRY_ACT             = <TC>-TOP_LINE
              ENTRY_FROM            = 1
              ENTRY_TO              = <TC>-LINES
              LAST_PAGE_FULL        = 'X'
              LOOPS                 = <LINES>
              OK_CODE               = P_OK
              OVERLAPPING           = 'X'
         IMPORTING
              ENTRY_NEW             = L_TC_NEW_TOP_LINE
         EXCEPTIONS
              OTHERS                = 0.
  ENDIF.

  GET CURSOR FIELD L_TC_FIELD_NAME
             AREA  L_TC_NAME.

  IF SYST-SUBRC = 0.
    IF L_TC_NAME = P_TC_NAME.
      SET CURSOR FIELD L_TC_FIELD_NAME LINE 1.
    ENDIF.
  ENDIF.

  <TC>-TOP_LINE = L_TC_NEW_TOP_LINE.

ENDFORM.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值