ABAP 7.0中能否绕过中间变量直接向PERFORM传入接口实现类实例?
在ABAP 7.0中能否绕过中间变量直接向PERFORM传入实现接口的类实例?
在ABAP 7.0版本中,无法直接绕过中间变量,必须通过接口类型的引用变量传递给PERFORM,以下是具体原因和说明:
核心限制原因
ABAP 7.0的PERFORM参数传递机制不支持直接将具体类的引用(如num_counter类型的c1)隐式转换为接口类型引用(如my_interface1),同时也没有语法支持直接从类实例中提取接口引用作为参数传入。
为什么你的尝试都失败了
PERFORM test using c1.:c1是具体类的引用,与PERFORM定义的接口类型参数类型不匹配,7.0不支持这种跨类型的隐式转换,编译直接报错。c1->my_interface1/c1~my_interface1:这两种写法不符合ABAP语法规则,->用于访问类属性或调用方法,~用于调用接口的重命名方法,都无法返回接口类型的引用,因此会触发语法错误。
7.0版本下的唯一可行写法
你最初的代码是符合ABAP 7.0规范的正确实现,必须显式声明接口类型的引用变量,完成类型转换后再传入PERFORM:
DATA xx TYPE REF TO my_interface1. xx = c1. PERFORM test USING xx.
更高版本的简化方案(供参考)
如果后续升级到ABAP 7.40及以上版本,可以使用CAST操作符简化代码,无需单独定义中间变量:
PERFORM test USING CAST my_interface1( c1 ).
内容的提问来源于stack exchange,提问作者Manul74
相关产品推荐
相关产品推荐

