gpt4 book ai didi

abap - 可以在程序加载时退出程序吗?

转载 作者:行者123 更新时间:2023-12-02 18:10:04 30 4
gpt4 key购买 nike

我正在程序启动时实现一些检查,主要是授权,如果不允许用户执行它,我想中止程序。通过 SE93 进行显式身份验证对象分配不适合我,因为它缺乏灵活性。

我尝试通过两种方式在 LOAD-OF-PROGRAM 事件中执行此操作:

  • 通过 RETURN 语句
  • 通过抛出类型为 E 的消息

两者都导致转储事件LOAD-OF-PROGRAM的非法中断,这确实对应于ABAP docu :

The event block must be fully executed, otherwise a runtime error occurs

This means that statements can be specified that exit the event block without returning to it.

我解释该段落这意味着可以指定退出事件 block 而不返回事件 block 的语句,而该 block 中不允许使用任何退出语句。我的理解正确吗?

现在我在 INITIALIZATION block 中进行中止/验证:

INITIALIZATION.
IF do_validate( ) = abap_false.
MESSAGE 'You are busted!' TYPE 'E'.
ENDIF

问题是我的程序有多个选择屏幕,并且INITIALIZATION block 被触发多次。是的,我当然可以通过屏幕编号来区分它们,但在 LOAD-OF-PROGRAM 中执行此操作似乎更合乎逻辑,因为每个程序仅执行一次。

问题:是否有某种方法可以在 LOP 事件或其他最佳实践中实现这一目标?为什么?

最佳答案

我不知道这是否是最佳实践,但可以使用 LEAVE PROGRAM 来实现此目标。

LOAD-OF-PROGRAM.

IF ...
LEAVE PROGRAM.
ENDIF.

https://help.sap.com/doc/abapdocu_751_index_htm/7.51/en-US/abapleave_program.htm

“语句 LEAVE PROGRAM 可以出现在任何处理 block 内的任何位置。无论在哪个程序或对象中执行该程序,或者在内部 session 的哪个程序组中,它都会结束程序。”

关于abap - 可以在程序加载时退出程序吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72529697/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com