ABAP:动态方法调用区分大小写,尽管代码的行为有所不同

问题描述 投票:0回答:1

最小工作示例:

CLASS lcl_some_class DEFINITION. ""// <-- this is obviously lower case
  PUBLIC SECTION.
    CLASS-METHODS some_static_method. ""// <-- this is obviously lower case
  PROTECTED SECTION.
  PRIVATE SECTION.
ENDCLASS.
CLASS lcl_some_class IMPLEMENTATION.
  METHOD some_static_method.
    " nothing
  ENDMETHOD.
ENDCLASS.
END-OF-SELECTION.

DATA: lc_class_name_upper  TYPE string VALUE 'LCL_SOME_CLASS',
      lc_class_name_lower  TYPE string VALUE 'lcl_some_class',
      lc_method_name_upper TYPE string VALUE 'SOME_STATIC_METHOD',
      lc_method_name_lower TYPE string VALUE 'some_static_method'.

CALL METHOD LCL_SOME_CLASS=>SOME_STATIC_METHOD. ""ok
CALL METHOD (lc_class_name_upper)=>(lc_method_name_upper). ""ok

CALL METHOD lcl_some_class=>SOME_STATIC_METHOD. ""ok
CALL METHOD (lc_class_name_lower)=>(lc_method_name_upper). ""failure

CALL METHOD LCL_SOME_CLASS=>some_static_method. ""ok
CALL METHOD (lc_class_name_upper)=>(lc_method_name_lower). ""failure

CALL METHOD lCl_SoMe_ClAsS=>sOmE_sTaTiC_mEtHoD. ""ok

我希望注释为“ failure”的行的行为与上面的相应行完全相同:区分大小写。但是相反,它们失败并显示以下消息之一:

CX_SY_DYN_CALL_ILLEGAL_CLASS / DYN_CALL_METH_CLASS_NOT_FOUND

en:在动态方法调用期间找不到该类。

de:Die Klasse beim dynamischen Methodenaufruf konnte nicht gefunden werden。

CX_SY_DYN_CALL_ILLEGAL_METHOD / DYN_CALL_METH_NOT_FOUND

en:在动态调用期间找不到该方法。

de:迪米·迪法尼·康纳特·本·迪南米申·奥弗鲁夫·尼赫特·吉芬登·沃登。

是否有一种方法可以使动态调用的大小写敏感-in(除了很明显的将字符串转换为大写的字符之外?] >>

最小工作示例:CLASS lcl_some_class DEFINITION。 “” //

dynamic abap
1个回答
0
投票

CALL METHOD - dynamic_meth的ABAP官方文档非常简单,涉及(class_name)=>(meth_name)(class_name)=>meth

© www.soinside.com 2019 - 2024. All rights reserved.