1

我在 Dynpro 上设置了一个 Tabstrip。我有 2 个标签。在每个选项卡上,我设置了一个子屏幕。

0100 - 主屏幕
0110 - 子屏幕一
0120 - 子屏幕二

tabstrip 是用这些属性定义的。

标签:

Title strip    Reference subscreen  Function code  Function type
Subscreen One  SUB1                 STP_CTGRY_TAB  P
Subscreen Two  SUB1                 TRAN_TAB       P

子屏幕(子屏幕区域):

SUB1

dynpro 0100 流逻辑为:

 PROCESS BEFORE OUTPUT.
   MODULE pbo.
   CALL SUBSCREEN sub1 INCLUDING sy-repid dynnr.
 PROCESS AFTER INPUT.
   CALL SUBSCREEN sub1.
   MODULE pai.

在程序级别我声明。

CONTROLS mytabstrip TYPE TABSTRIP.
DATA: ok_code          LIKE sy-ucomm,
  dynnr            TYPE sy-dynnr.

在主屏幕 0100 PBO:

IF mytabstrip-activetab IS INITIAL OR dynnr IS INITIAL.
  mytabstrip-activetab = 'STP_CTGRY_TAB'.
  dynnr = '0110'.
ENDIF.

在主屏幕 0100 PAI:

CASE ok_code.
 WHEN 'STP_CTGRY_TAB'.
  dynnr = '0110'.
  mytabstrip-activetab = ok_code.
 WHEN 'TRAN_TAB'.
  dynnr = '0120'.
  mytabstrip-activetab = ok_code.
ENDCASE.

如果我调试我的程序并设置断点,tabstrip 就可以工作。如果我运行程序并更改标签条的标签,则似乎子屏幕冻结并与应显示的子屏幕重叠。总而言之,选项卡上的所有更改都不起作用。

我忘了任何代码吗?谁能帮助我我可能错过的东西?

4

1 回答 1

1

原因:

  • 2个选项卡的功能类型是用值“P”定义的,这意味着tabstrip使用“本地分页”工作,因此它需要与2个子屏幕区域一起工作,每个区域分别指向一个不同的子屏幕,以便标签上的操作按预期工作。

  • tabstrip 有两种用法。

    1. 为所有选项卡使用一个子屏幕(“服务器分页”)因此,如果用户单击选项卡,您必须加载每个新数据。

    2. 每个选项卡使用一个子屏幕(“本地分页”)整个数据将在程序开始时加载。
      注意:在屏幕布局编辑器中,您必须将参数设置FctTypeP - local GUI func.

解析度:

如果要使用服务器分页 (1),请让函数类型为空,如下所示:

Title strip    Reference subscreen  Function code  Function type
Subscreen One  SUB1                 STP_CTGRY_TAB  
Subscreen Two  SUB1                 TRAN_TAB       

dynpro 0100 流逻辑为:

PROCESS BEFORE OUTPUT.
  MODULE pbo.
  CALL SUBSCREEN sub1 INCLUDING sy-repid dynnr.
PROCESS AFTER INPUT.
  CALL SUBSCREEN sub1.
  MODULE pai.

在 PBO 和 PAI 模块中,定义 ABAP 代码以将 DYNNR 和 MYTABSTRIP-ACTIVETAB 变量初始化为正确的值,如初始问题所示。

如果要使用本地分页(2),请执行以下操作:

标签:

Title strip    Reference subscreen  Function code  Function type
Subscreen One  SUB1                 STP_CTGRY_TAB  P
Subscreen Two  SUB2                 TRAN_TAB       P

子屏幕(子屏幕区域):

SUB1
SUB2

dynpro 0100 流逻辑为:

PROCESS BEFORE OUTPUT.
  MODULE pbo.
  CALL SUBSCREEN sub1 INCLUDING sy-repid '0110'.
  CALL SUBSCREEN sub2 INCLUDING sy-repid '0120'.
PROCESS AFTER INPUT.
  CALL SUBSCREEN sub1.
  CALL SUBSCREEN sub2.
  MODULE pai.

在本地分页场景中,PBO 和 PAI 模块中不需要 ABAP 代码来在选项卡之间切换,因为它是在 SAP GUI 上本地处理的。

更多信息在这里:https ://help.sap.com/saphelp_nw70/helpdata/en/17/5bf1b52ba211d2954f0000e8353423/frameset.htm

于 2017-12-07T08:27:09.123 回答