从包外部仍然可以看到未在包接口中公开的开发对象。为什么?

时间:2013-08-06 16:27:22

标签: interface package sap abap

我正在尝试了解Package接口并使用访问权限。

我有两个包的层次结构

1: ZAVG_TRAINING-PACKAGE1含有
...
ZAVG_TRNG_SUBPKG3



2: ZAVG_TRNGPKG_2_STRUCT_SUBPKG_1包含
ZAVG_TRAINING_PACKAGE2包含
ZAVG_TRNGPKG2_SUBKPG_1

在第一个层次结构中,所有包都不是主包 在第二个中,基础包是一个结构包,下一个是主包,第三个是非主包。

ZAVG_TRNG_SUBPKG3(在第一个层次结构中),我有一个视图ZAVG_V_MARA和一个程序ZAVG_DELETE_THIS_8。我还有一个暴露程序的包接口,没有授予访问权限。

我的问题是,从包ZAVG_TRNGPKG2_SUBKPG_1中包含的程序,我可以无限制地访问ZAVG_TRNG_SUBPKG3中包含的对象。

据我在文档中看到,为了使开发对象可以从当前包之外的包中看到(除了外包),我应该将它们全部添加到包接口并创建使用访问对于应该允许使用该接口的包。

我做错了什么?

2 个答案:

答案 0 :(得分:1)

只要您不打算构建像企业核心组件那样复杂的东西,并计划将其出售给成千上万的匿名客户,如果您更改已发布的内容,他们会提起诉讼接口,我不打扰包访问控制。我知道这不能回答你的问题,但你最终得到的却是浪费了很多时间,没有任何优势。你必须以不合逻辑的方式调整包结构,并且非常反直觉才能使工作正常。

在您的情况下,有很多事情可能出错 - 例如,系统范围的包检查开关可能已关闭。然后,您必须记住,检查只在设计时进行,而不是在运行程序时进行。最后,据我记忆,检查不会自动执行 - 您必须手动或使用某些自动化工具执行。

答案 1 :(得分:1)

要手动检查包,您可以从ABAP工作台的菜单中执行此操作:

enter image description here

或者右键单击对象列表:

enter image description here

然而,正如vwegert所说:很可能你的系统中没有打开包检查(我没有在打开它的单个系统上工作)。