TABSCRIP 两种类型 scrolling in the application server和scrolling in sapgui的区别

之前已经讲过如何使用tabscrip了,但实际上tabscrip有两种类型,虽然我们用的比较多的是第一种类型scrolling in the  application server但在无需和服务器交互的情况下,我们会选择后面一种,很明显这样能省去交互的时间。

但是,这两种类型是不容易区分的。 

      个人认为,如果tabscrip下的至少有一个subscreen area被多个tab共享,那么这样tabscrip算是前一种,原因是call subscreen的时候必须带有参数,这个时候必然和服务器交互,自然就会触发该屏幕的PAI以及下一屏幕的PBO。

      如果tabscrip下的所有TAB都有自身独立的subscreen area,我认为,这样的tabscrip算是后一种类型,原因是当前屏幕的PBO在call subscreen的时候就已经将该tabscrip下所有的tab里面的信息显示出来了,只是要通过切换tab浏览这显示出来的结果,切换tab的时候并未和application server发生交互,自然就不会触发该屏幕的PAI。

通过上面的分析,你发现原来屏幕的按钮是不一定会触发PAI的,这点在tabscrip中就体现出来了。

 

以下是我写的一个简单测试程序,这里有两个tab共享了同一个subscreen area,所以该tabscrip属于第一种类型,也就是scrolling in the application server类型,因此切换TAB的时候会触发PAI事件:

 

主程序:

*&----------------------------------------------------------------*
*& Report ztest_pillar                                            *
*&----------------------------------------------------------------*

REPORT ztest_pillar.
DATA sus_num TYPE LENGTH 4.
DATA ok_code TYPE sy-ucomm.
CONTROLS tabstrip1 TYPE TABSTRIP.

INITIALIZATION.
tabstrip1-activetab = 'TAB3'.
sus_num = '0110'.




START-OF-SELECTION.
CALL SCREEN 0100.
*&---------------------------------------------------------------------*
*&      Module  CANCEL  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE cancel INPUT.
  LEAVE PROGRAM.
ENDMODULE.                 " CANCEL  INPUT
*&---------------------------------------------------------------------*
*&      Module  STATUS_0100  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE status_0100 OUTPUT.
*  SET PF-STATUS 'xxxxxxxx'.
*  SET TITLEBAR 'xxx'.
  DATA lv_save TYPE sy-ucomm.
  lv_save = ok_code.
  CLEAR ok_code.
CASE lv_save.
  WHEN 'TAB1'.
    tabstrip1-activetab = 'TAB1'.
    sus_num = '0110'.
  WHEN 'TAB2'.
    tabstrip1-activetab = 'TAB2'.
    sus_num = '0120'.
  WHEN 'TAB3'.
    tabstrip1-activetab = 'TAB3'.
  WHEN OTHERS.

ENDCASE.
ENDMODULE.                 " STATUS_0100  OUTPUT

 

 

 

 

屏幕100逻辑流:

PROCESS BEFORE OUTPUT.
  MODULE STATUS_0100.
  CALL SUBSCREEN: SUB1 INCLUDING SY-REPID sus_num,
                  SUB2 INCLUDING SY-REPID '0130'.
PROCESS AFTER INPUT.
 MODULE cancel at exit-command .
 call subscreen: sub1, sub2.

 

几个子屏幕分别是:0110 0120 0130,这里就不列出其逻辑流了 

 

你可能感兴趣的:(TABSCRIP 两种类型 scrolling in the application server和scrolling in sapgui的区别)