Tabstrip 冻结
Tabstrip freezes
我在 Dynpro 上设置了一个 Tabstrip。我有 2 个标签。
在每个选项卡上我都设置了一个子屏幕。
0100 - 主屏幕
0110 - 子屏幕一
0120 - 子屏幕二
标签条是用这些属性定义的。
标签:
Title strip Reference subscreen Function code Function type
Subscreen One SUB1 STP_CTGRY_TAB P
Subscreen Two SUB1 TRAN_TAB P
Subscreens(子屏幕区域):
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.
如果我调试我的程序并设置断点,则选项卡可以正常工作。但是,如果我 运行 程序并更改选项卡条的选项卡,子屏幕似乎会冻结并与应该显示的子屏幕重叠。总而言之,选项卡上的所有更改均无效。
我忘记密码了吗?谁能帮我解决我可能遗漏的问题?
原因:
2个tabs的功能类型定义为"P",表示tabstrip使用"local paging",所以需要配合2个subscreen areas参考每个到一个不同的子屏幕,以便选项卡上的操作按预期工作。
标签条有两种用法。
所有选项卡使用一个子屏幕("server paging")
因此,如果用户单击选项卡,您必须加载每个新数据。
每个选项卡使用一个子屏幕("local paging")
整个数据将在程序开始时加载。
注意:在屏幕布局编辑器中,您必须将参数 FctType
设置为 P - 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
Subscreens(子屏幕区域):
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
我在 Dynpro 上设置了一个 Tabstrip。我有 2 个标签。 在每个选项卡上我都设置了一个子屏幕。
0100 - 主屏幕
0110 - 子屏幕一
0120 - 子屏幕二
标签条是用这些属性定义的。
标签:
Title strip Reference subscreen Function code Function type
Subscreen One SUB1 STP_CTGRY_TAB P
Subscreen Two SUB1 TRAN_TAB P
Subscreens(子屏幕区域):
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.
如果我调试我的程序并设置断点,则选项卡可以正常工作。但是,如果我 运行 程序并更改选项卡条的选项卡,子屏幕似乎会冻结并与应该显示的子屏幕重叠。总而言之,选项卡上的所有更改均无效。
我忘记密码了吗?谁能帮我解决我可能遗漏的问题?
原因:
2个tabs的功能类型定义为"P",表示tabstrip使用"local paging",所以需要配合2个subscreen areas参考每个到一个不同的子屏幕,以便选项卡上的操作按预期工作。
标签条有两种用法。
所有选项卡使用一个子屏幕("server paging") 因此,如果用户单击选项卡,您必须加载每个新数据。
每个选项卡使用一个子屏幕("local paging") 整个数据将在程序开始时加载。
注意:在屏幕布局编辑器中,您必须将参数FctType
设置为P - 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
Subscreens(子屏幕区域):
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