三种不同的控制 CRM UI Assignment Block 显示与否的技术

2448 篇文章 26 订阅

WebClient UI 作为一种极佳的企业级应用 UI 开发技术,给开发人员提供了强大而灵活选择来实现用户的各种需求。

在实际的 CRM 实施项目中,一个常见的要求是,概览页面中的某个分配块只能在某种情况下显示,例如被 ABAP business switch 开启与否的控制。

本文以下是通过 ABAP 代码控制一个赋值块的可见性的三种方法。

方法一:动态视图分离

这种做法的思路是,redefine 概述页面的控制器类的方法 DETACH_STATIC_OVW_VIEWS.

所有放入内部表 rt_viewid 中的视图将在运行时被 UI 框架隐藏。

下面的代码是一个示意,开发人员可以评估第 3 行中的某些条件,如果满足条件,则赋值块 SearchResult 将被隐藏。

方法2:动态UI配置加载

创建一个新配置,其中仅显示搜索视图。 配置绑定到特定的 UI 对象类型。

现在我们有两个 UI 配置。 标准配置默认显示两个分配块,UI 对象类型 = CRM_SMC 的配置将仅显示搜索视图。

方法 DO_CONFIG_DETERMINATION 的实现代码:

method DO_CONFIG_DETERMINATION.
  " IF search result view should be hidden
     me->set_config_keys( iv_object_type          = 'CRM_SMC'
                          iv_propagate_2_children = abap_false ).
  " ENDIF
  endmethod.

方法三:通过 business switch 可见性

这是三种方法里最优雅的方式,但前提是只有当我们想通过业务开关控制视图的可见性时,才可以使用它。

ABAP Business Switch(ABAP业务开关)是SAP系统中的一项功能,用于控制特定的业务功能或行为。它允许管理员在系统中启用或禁用某些功能,以满足特定的业务需求或遵循特定的规则和标准。通过启用或禁用这些开关,可以调整系统的行为,以适应不同的业务场景。

ABAP 业务开关通常用于以下情况:

  1. 功能启用/禁用: 在系统中启用或禁用特定的功能模块或业务流程。这可以根据企业的需求来调整系统的功能,以便满足不同的业务需求。

  2. 法律遵从性: 一些国家或行业可能有特定的法规和标准,要求企业在其系统中实施特定的控制措施。ABAP业务开关可以帮助企业符合这些法规,通过启用或禁用相关功能来确保系统的合规性。

  3. 性能调优: 在某些情况下,启用或禁用特定的功能可以改善系统的性能。ABAP业务开关可以用于调整系统的行为,以提高性能或减少资源消耗。

  4. 实验和测试: 在系统开发或更新过程中,可以使用ABAP业务开关来启用或禁用新功能,以进行测试和验证。这有助于确保新功能的稳定性和兼容性。

ABAP 业务开关的配置通常由系统管理员或具有相应权限的用户进行。它们可以在 SAP 系统的管理界面中进行设置和管理。

当我们将分配视图分配到运行时存储库中的概述页面的视图区域时,可以分配 business switch,如下图所示。 如果关闭该开关,UI Framework 将自动隐藏相关视图。

将视图分配给概览页面的视图区域后,switch ID 将显示在视图名称后面。

首先可以通过 tcode SFW1,找到 business function CRM_SOC_SFWS_SMI_2 的相关业务功能,

然后在SFW5中查找业务功能状态:


以上就是三种通过方式的详细介绍。大家在项目中可以根据自己的实际情况,选择最适合自己的一种来实现。

  • 22
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: A:这个错误通常表示在函数或代码块中使用了某个变量,但在该变量被赋值之前就尝试引用该变量。这可能是因为变量的赋值发生了错误或没有在正确的位置进行赋值所致。检查该变量是否在先前的代码行中正确赋值,并确保它已定义,然后再尝试使用它。如果问题仍然存在,可以尝试将代码段分解成更小的部分进行调试。 ### 回答2: 出现这个错误通常是因为在某个函数或代码块中使用了一个局部变量 'snake_block',但在使用之前没有给它赋值。 Python 中,当使用一个变量前需要先给它赋值,否则会出现该错误。可能的情况如下: 1. 在函数或代码块内部声明了一个局部变量 'snake_block',但在之前没有给它赋值。可以通过在使用之前为其赋一个初始值来解决这个问题。 例如,可以在函数或代码块开始时为 'snake_block' 赋一个默认值: snake_block = 0 2. 在函数或代码块内部已经声明了一个全局变量 'snake_block',但在某处又将其当作局部变量使用,而在使用前没有给它赋值。 可以通过在使用 'snake_block' 变量之前,使用 'global' 关键字将其声明为全局变量来解决这个问题。在函数内部,添加以下代码: global snake_block 这样,Python 就知道 'snake_block' 是一个全局变量,而不是局部变量。 总之,当遇到 "local variable 'snake_block' referenced before assignment" 的错误时,可以检查是否满足以上两种情况,并根据具体情况采取相应的解决方法。 ### 回答3: 在Python中,当我们在定义函数时,如果使用了一个变量但是在定义之前没有给他赋值,就会出现"local variable 'snake_block' referenced before assignment"的错误。 这个错误通常是因为我们在一个函数中使用了一个变量,但是在函数体内部没有给它赋值。当我们在函数内部使用一个变量时,Python会首先查找当前函数内部是否有这个变量的局部定义。如果没有找到,它会继续向上一级作用域寻找这个变量的定义。如果最终也没有找到,就会报错。 要解决这个问题,我们需要确保在使用变量之前已经给它赋值。可以在函数内部给这个变量赋一个初始值,或者在函数调用之前先给它赋值。 另外,也要注意变量的作用域。如果在函数内部通过global关键字声明一个变量,则可以在函数体外部访问和修改它。但如果只是在函数内部修改一个在函数体外定义的变量,并不需要使用global关键字。 总之,当遇到"local variable 'snake_block' referenced before assignment"错误时,我们需要检查是否在使用变量之前给它赋值。如果没有赋值,可以在使用之前进行初始化。同时,还要注意变量的作用域,确保在需要的地方正确地声明和使用变量。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

汪子熙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值