ABAP CALL语句是否设置sy - subc值



我正在查看SAP ABAP关键字定义中CALL -系统函数调用的描述。这样的调用格式为CALL 'xxx' ID 'yyy' FIELD 'zzz'.。ABAP关键字定义中没有提到sy-subrc是通过调用系统函数来设置的。但不知何故,我怀疑它是。

  • 在这种情况下,我可以"信任"关键字定义吗?(sy-subrc未提及=>未设置)
  • 在SAP系统上测试一个"好的"系统函数调用示例是什么?(不破坏/改变任何东西,存在于所有系统)

请注意,我不是一个ABAP程序员,我通常在Java中处理第三方ABAP程序作为文本/解析树。我知道通常不应该调用系统函数,但是我看到的ABAP代码可能有这样的调用。此外,我对特定系统调用设置sy-subrc的实际值不感兴趣,只关心系统调用是否设置/更改sy-subrc

好吧,当你问这个问题时,你已经意识到这是不推荐使用直接系统调用的方法。但是,如果您仍然想使用它们…
通过使用CALL语句调用SAP内核c模块,在不知道源的情况下,我们不能自信地解释返回值,它要么是0,要么是1。
尽管有一些例子(参见DYNP_VALUES_READ FM的第230行)在系统调用之后检查sy-subrc值,但是除了SAP之外没有人知道在某些情况下检查哪个值。也不是我们。
也有报告(1,2)关于在测试中这些值的歧义。

所以答案是NOsy-subrc在这个上下文中没有带来任何有意义的信息。

注:回答你的问题:

    不,你不能那样解释。如果在ABAP文档中没有提到的东西,那么这个不知道肯定或根本没有意义。
  1. 我不能确认这是一个好主意(测试系统调用),但如果你想,你可以尝试调用SYSTEM函数。

调用任意Unix命令。
例如,您可以像这样移动存储在ABAP服务器上的文件:

    CALL 'SYSTEM' 
     ID 'COMMAND' 
     FIELD 'mv /usr/sap/temporary
               /usr/sap/definite'.

现在这应该是一个安全的调用,可以在任何系统上工作:

DATA: dbserver TYPE char255.
CALL 'C_SAPGPARAM' ID 'NAME'  FIELD 'SAPDBHOST'
                   ID 'VALUE' FIELD  dbserver.

正如你可能已经知道的,有一些例外可能会发生。至于sy-subrc,当命令设置sy-subrc时,通常会在文档中明确提到它,包括它可以保存哪些值及其含义。但不要引用我的话。

简单的(无害的)功能模块是RH_GET_DATE_DAYNAME,需要语言和10个字符的日期(例如。26.10.2016)作为输入字段,DATE_TO_DAY只需要10个字符的日期作为输入。如果输入了有效的日期,则sy-subrc应返回为0

相关内容

  • 没有找到相关文章

最新更新