Personas 3.0 Tabstrip元素

2020-08-22 01:10发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


Hi Personas Pros,

寻求带有Tabstrip元素的路线。 当屏幕上有一个选项卡并编辑屏幕时,在"高级属性编辑器"中,您可以看到" elementOrder"属性。 这是所有标签的JSON,无论是否可见。

在脚本编写中,要达到相同的属性,我似乎面临挑战。 根据条件和标题,我的标签应该打开/关闭。 我用另一种方式(TAB_NEXT命令)解决了它,但这并不优雅。

我希望你们有解决方案! 谢谢!

亲切的问候,

彼得·托特

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


Hi Personas Pros,

寻求带有Tabstrip元素的路线。 当屏幕上有一个选项卡并编辑屏幕时,在"高级属性编辑器"中,您可以看到" elementOrder"属性。 这是所有标签的JSON,无论是否可见。

在脚本编写中,要达到相同的属性,我似乎面临挑战。 根据条件和标题,我的标签应该打开/关闭。 我用另一种方式(TAB_NEXT命令)解决了它,但这并不优雅。

我希望你们有解决方案! 谢谢!

亲切的问候,

彼得·托特

付费偷看设置
发送
6条回答
葫芦娃快救爷爷
1楼-- · 2020-08-22 01:55

隐藏选项卡与更改其顺序不同,因此尚不清楚您的目标是什么。

动态隐藏应该很容易。 如果您的屏幕布局数量有限(取决于某些情况,选项卡的顺序不同),那么您可能需要考虑使用视口,而不是对屏幕进行动态更改,否则可能会导致性能问题。

# p#

嗨,彼得,

因此,您试图通过脚本根据某些条件隐藏或显示选项卡吗? 您能提供一笔交易以及更多细节吗? 我很乐意为您提供帮助,但是这里没有足够的信息。

谢谢,布莱恩

CJones
2楼-- · 2020-08-22 02:02

嗨,布莱恩,

感谢您的回复。 我使用事务IL03,但它通常适用于您在屏幕上看到Tabstrip的任何事务。 在我的情况下,当您尝试隐藏"常规"和"长文本"选项卡之外的所有内容时,交易会令人头疼,因为选项卡的数量和描述来自于自定义,具体取决于功能位置的类别(?)。因此,当您输入 功能位置并编辑该特定功能位置的样式,您将隐藏除这两个选项卡之外的所有内容。下次您返回不同的功能位置时,会弹出新的选项卡,您没有机会在上一个位置中隐藏。/p>

所以我的想法是读取GuiTabStrip的属性" elementOrder"。 当您在Edit Flavor中时,将焦点放在GuiTabStrip上,然后从"更多选项"中选择"高级",在"高级属性编辑器"中您会看到此属性,它是一个JSON列表,将所有选项卡的ID对齐。 然后可以在session.findById(ID).hide()中使用这些ID。

至少那是我开创性的想法。 在脚本视图中,您无法以任何方式查看/获取此属性。 我希望其他人会知道魔术。

再次感谢您对此进行研究。

亲切的问候,

Peter Toth

小熊yu生菜
3楼-- · 2020-08-22 02:03

不,我认为视口不会在这里为您提供帮助。
但是,如果我对您的理解正确,那么您会看到两个选项卡,其中包含所需的内容以及所有其他内容 标签应该被隐藏。 您可以选择将所有必需的控件移出这两个选项卡,然后隐藏整个选项卡条吗?

四川大学会员
4楼-- · 2020-08-22 01:43

嗨,塔玛斯,

很高兴再次认识您。 :)

我没有视口经验。 我开始研究它。 实际上,我什至没有考虑它,因为动态性来自ABAP级别,因此我实际上不需要选择隐藏的内容,我只知道要显示的内容。 请参阅我对Brian的回答。 视口在这里适用吗?

谢谢您回答我的问题。

亲切的问候,

Peter Toth

小熊yu生菜
5楼-- · 2020-08-22 02:05

嗨,Peter

您可以在Slipstream Engine(SE)风味编辑器(/sap/bc/se/m)中覆盖默认的标签顺序。 选择TabStrip控件,打开"高级属性编辑器",寻找elementOrder属性。 要更改顺序,您需要根据自己的喜好安排Tab ID值来更新JSON值。

请确保您没有从JSON数组中删除或重复任何ID。 不支持通过从elementOrder中删除标签来隐藏标签,而应使用"隐藏"按钮。 基于更新的elementOrder值的新标签顺序将在Slipstream Engine运行时中应用。

请注意,由于基于堆栈内核版本的属性支持会有所不同,因此在SAP GUI for HTML(WebGUI)Flavor Editor中编辑elementOrder属性当前处于禁用状态(您可以在WebGUI中测试SE Flavor)。 此外,GuiTabStrip的elementOrder是静态属性,无法使用脚本引擎API进行更改。

谢谢!

克里斯特·马格斯

SAP屏幕角色开发团队

半个程序猿
6楼-- · 2020-08-22 01:48

嗨,塔玛斯,

由于某些原因,控件ID不是静态的。 开发系统中的同一选项卡与质量系统中的选项卡具有不同的ID。 生产系统似乎也是独立的,但是生产系统中的ID与开发系统或质量系统的ID相同。 因此,我唯一能抓住的就是标签的文本。

Krists嗨,

如上所述,选项卡的顺序只是一个问题。 要隐藏(或显示)的选项卡的ID不是静态的。 因此,我需要elementOrder可以在脚本中读取。 我可以循环查看其内容,看看哪个标签的text属性中显示" General"或" Long Text"。 我现在也可以使用控件进行相同的操作:

//加载
 var startTab ="";
 var targetTab ="";
 而(true){
 如果(startTab === session.findById(" wnd [0]/usr/tabsTABSTRIP")。selectedTab){
 如果(targetTab!==""){
 targetTab.select();
 }
 打破;
 }
 如果(startTab ===""){
 startTab = session.findById(" wnd [0]/usr/tabsTABSTRIP")。selectedTab;
 }
 session.findById(" wnd [0]/usr/tabsTABSTRIP")。selectedTab.hide();
 如果(session.findById(" wnd [0]/usr/tabsTABSTRIP")。selectedTab.text ===" General"){
 session.findById(" wnd [0]/usr/tabsTABSTRIP")。selectedTab.show();
 }
 如果(session.findById(" wnd [0]/usr/tabsTABSTRIP")。selectedTab.text ===" Long Text"){
 session.findById(" wnd [0]/usr/tabsTABSTRIP")。selectedTab.show();
 targetTab = session.findById(" wnd [0]/usr/tabsTABSTRIP")。selectedTab;
 }
 session.findById(" wnd [0]/tbar [0]/okcd")。text =" TAB_NEXT";
 session.findById(" wnd [0]")。sendVKey(0);
 }
 

targetTab就在那儿,因为除了仅显示两个选项卡外,还需要登陆"长文本"。 HTML GUI上缺少TAB_NEXT后面的控件。 因此,仅适用于命令。

绝对不是我编写过的最好的代码。 无论如何,它只是有效。 但我希望有一个干净的代码。

亲切的问候,

彼得·托特(Peter Toth)

一周热门 更多>