【问题标题】:How do I pass multiple parameters to a subroutine?如何将多个参数传递给子例程?
【发布时间】:2019-11-28 09:57:25
【问题描述】:

我正在尝试将多个 parameters 传递给子例程,但出现以下错误:

不正确的嵌套:在“FORM”语句之前,“FORM”引入的结构必须以“ENDFORM”结尾

这是我的代码:

CASE p_choose.
  WHEN 'UMK'.
    PERFORM umk USING: p_modul,
                       p_e_pal,
                       p_vbeln,
                       p_e_umk.
"some other cases
ENDCASE.

FORM umk USING: p_modul,
                p_e_pal,
                p_vbeln,
                p_e_umk.
ENDFORM.

我的错误在哪里?如何传递多个参数?还是根本不可能?谢谢!

【问题讨论】:

  • 这并不能回答您的问题,但是在编写新代码时,我建议使用(静态)方法或至少使用功能模块。 FORM 很难调试。
  • 我会记住的,谢谢!

标签: abap subroutine


【解决方案1】:

我自己已经找到了解决方案。 错误是每个参数后面的“,”。

正确的代码是:

CASE p_choose.
  WHEN 'UMK'.
    PERFORM umk USING p_modul
                      p_e_pal
                      p_vbeln
                      p_e_umk.
"some other cases
ENDCASE.

FORM umk USING p_modul
               p_e_pal
               p_vbeln
               p_e_umk.
ENDFORM.

【讨论】:

【解决方案2】:

为了完成您自己的正确解决方案的答案,让我通过显示没有链接语句的等效代码来解释错误的原因,这是由于误解了chained statements 的工作原理。

带有链式语句的旧代码(符号 :,):

FORM umk USING: p_modul,
                p_e_pal,
                p_vbeln,
                p_e_umk.
ENDFORM.

完全等同于没有链接语句的代码:

FORM umk USING p_modul.
FORM umk USING p_e_pal.
FORM umk USING p_vbeln.
FORM umk USING p_e_umk.
ENDFORM.

因此出现了明显的语法错误。

【讨论】:

    猜你喜欢
    • 2014-11-10
    • 2019-10-05
    • 2016-11-22
    • 1970-01-01
    • 2021-03-09
    • 1970-01-01
    • 2018-09-17
    • 1970-01-01
    • 2011-08-06
    相关资源
    最近更新 更多