[英]Check original language of repository objects at creation?
在我们公司,存储库对象必须使用原始语言 EN 创建。 如果在 ABAP 存储库中创建新对象,是否可以检查登录语言?
期望的行为:
SE80 - 创建程序/类/数据元素/表/....
==> 用户出口/badi 检查登录语言。 当它不是'EN'时,创建将被拒绝。
问候,
奥马尔·阿卜杜拉
我知道有一个出口,但我不记得确切的名字。 您可以使用通用来查找出口。 转到 SE24 并打开CL_EXITHANDLER类,找到GET_INSTANCE方法并添加断点。 然后开始创建项目,它会在调试器上暂停多次,尝试找到合适的项目。
正如@mkysoft 建议的那样,您可以在
BAdI CTS_REQUEST_CHECK方法
CHECK_BEFORE_ADD_OBJECTS 中实施检查,该方法在对象即将附加到传输请求时调用。
引发异常 CANCEL 以使附件失败(因此也不会创建对象)。
编辑:抱歉,请忽略我的回答,“此方法未发布供客户使用”,如注释 2150125 中所述- 未触发方法 CHECK_BEFORE_ADD_OBJECTS
免责声明:绝对不推荐此处描述的方法。
正如其他成员正确指出的那样,没有标准和客户公开的方法来满足您的要求,但如果您绝对必须在创建期间启用此检查,则可以使用以下方法。 除了之前提供给您的,它还涉及对 SAP 标准的修改。
有一个系统 BAdi CTS_TADIR_SUBSCREEN
位于增强点CTS_ES_TADIR_POPUP
。 它们是 SAP 内部的,不供客户使用,因此请自行承担风险。
实施程序:
步骤 0 。 您需要更改的第一件事是 SAP 内部使用标志,为此您需要对象访问密钥,该密钥可以从 SAP 或在您的组织中实施的 SAP 合作伙伴获得。 在原始状态下,如果您尝试实现此 BAdi,则会抛出错误
所以在下文中我们假设您已经在 BAdi 设置中勾选了这个复选框
第 1 步。
为了实施BAdi,需要在此之前实施增强点。 这是最复杂的部分,因为尽管我们禁用了内部性标志,但 SAP 命名空间增强功能必须仅存储在 SAP 命名空间对象中。 SAP 命名空间是指非 Z、非 Y 和非 T(测试)。 这意味着要实现这个增强,除了修改增强定义之外,还需要创建一个,例如名为enh.impl.的CTS_ES_TADIR,并保存到非Z包中,你也需要创建。 您的增强实现选择器应该看起来像这样
在上面的屏幕上,只有第二个会工作,其余的 Z 都不会。
每个非 Z 对象都需要对象访问密钥,还记得吗? 太糟糕了。 但只是为了展示概念验证,我将继续。
第 2 步。 在你创建了 enh 之后。 SAP 命名空间中的实现,它将建议您创建 BAdi 实现。 同样的原则在这里适用:只有 SAP 命名空间对象的 SAP 命名空间容器,因此CTS_TADIR_SUBSCREEN
应该有实现类,例如CL_TADIR_SUBSCREEN
。 在创建增强的过程中你会看到很多警告
但最后你应该有这样的东西,所有系统命名的对象都被创建,增强/BAdi被激活。
第 3 步。 为了让 BAdi 工作,我们需要启用这个子屏幕处理
在玩增强的过程中,我发现 BAdi 类没有被独立触发,没有屏幕事件没有增强,所以为了让它工作,你需要触摸屏幕 100 的屏幕增强
如果您不想修改屏幕元素逻辑,只需将SHOW_TADIR
对话框模块中的虚拟增强放在包含LSTRDO18
PROCESS BEFORE OUTPUT.
MODULE SHOW_TADIR. "<-- create the dummy enhancement here
CALL SUBSCREEN subs_info INCLUDING gv_badi_prog gv_badi_dynnr.
例如像我一样的声明语句
第 4 步。 激活您创建的 BAdi 类并将必要的逻辑放在那里。 我无法触发方法GET_DATA_FROM_SCREEN
,但PUT_DATA_TO_SCREEN
工作正常
如果我们根据您的要求进行这种简单的处理
METHOD cts_if_tadir_subscreen~get_data_from_screen.
IF object_data-l_mstlang <> 'E'.
MESSAGE 'Objects in non-English languages are not allowed!' TYPE 'A'.
ENDIF.
ENDMETHOD.
它不允许用英语以外的语言创建对象。
签入方法get_data_from_screen
在显示屏幕之前完成,因此语言是根据系统登录设置确定的。 如果要更多地玩这个 BAdi,我想也可以启用GET_DATA_FROM_SCREEN
方法,这将使检查用户输入成为可能,即用户要更改默认语言的情况。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.