方法参数中的“在此位置不可能进行内联声明”

cov*_*ant 2 methods abap

下面的代码给出了这个错误:

内联声明“DATA(LV_DESKTOP)”在此位置不可能。

  CALL METHOD cl_gui_frontend_services=>get_desktop_directory
    CHANGING
      desktop_directory = data(lv_desktop). "Declaring in method
Run Code Online (Sandbox Code Playgroud)

San*_*ssi 6

您不能在方法调用CHANGING和类型参数中使用内联声明。EXPORTING

ABAP 文档没有明确说明,但明确提到内联声明可用于类型IMPORTING和的参数RECEIVING,但有一些限制,但没有提及其他两种类型。

这里这里进行了广泛的讨论。

带有方法调用的可能内联声明的示例:

cl_gui_frontend_services=>FILE_GET_ATTRIBUTES
    EXPORTING
      filename = `C:\test.txt`
    IMPORTING
      readonly = DATA(readonly) ).
cl_ixml=>create(
    RECEIVING
      rval = DATA(ixml) ).
Run Code Online (Sandbox Code Playgroud)

关于EXPORTINGCHANGING,您必须处理旧的声明。例子:

DATA lv_desktop TYPE string.
cl_gui_frontend_services=>get_desktop_directory(
    CHANGING
      desktop_directory = lv_desktop ).
Run Code Online (Sandbox Code Playgroud)