部分静态和部分动态方法参数?

Partly static and partly dynamic method parameter?

提问人:Cutter 提问时间:5/23/2023 最后编辑:SuncatcherCutter 更新时间:10/1/2023 访问量:36

问:

我需要一个具有部分泛型类型的方法参数:它的一些组件应该是静态已知的,其余的可以是泛型的。

目前,我的类方法具有完全泛型的导入参数类型。我想强制传递给该方法的参数至少具有组件 , , 在其类型中。组件 , , 应该在方法中静态访问,如下所示:、、。is_paramsimpleabcabcis_param-ais_param-cis_param-c

参数的其他组件将是动态的。

如何输入这样的参数?

OOP 泛型方法 参数 ABAP

评论

0赞 Chetan Ahirrao 5/23/2023
你是说可选参数吗?help.sap.com/doc/abapdocu_752_index_htm/7.52/en-us/......
0赞 Cutter 5/23/2023
不,那是不一样的。

答:

2赞 Herr Berthm 5/23/2023 #1

不幸的是,没有办法拥有部分动态和部分静态的参数。所以你被动态参数困住了。您可以检查组件和通孔的参数,如果有异常,则提出异常。is_paramabcassign component 'A' of structure is_param to <value>.sy-subrc <> 0

要静态访问 ,(无需每次都分配它们),只需使用这些组件定义一个结构,然后将字段从 移过来。然后,只要您需要访问这些字段,就可以使用该结构。abcis_param

  method do_something.

    data: begin of ls_static,
             a type char1,
             b type char1,
             c type char1,
           end of ls_static.
    move-corresponding is_param to ls_static.
  *  use ls_static for a,b and c...
    
  *  if it's a changing parameter move a,b and c back:
    move-corresponding ls_static to is_param.
  endmethod.

如果参数正在更改,则必须将它们移回末尾。在这种情况下,您必须小心不要从那里更改或使用它们,因为您可能会有不同的状态。is_paramls_statica,b,cis_paramis_paramls_static

注意:也许有一种方法可以使用类来实现这一点,因为您可以使用 object->attribute访问全局属性。因此,您可以使用它来访问静态组件并将其余数据也存储在该类中。我试了一下,但找不到一个好方法来实际实现任何比上述解决方案更易于使用或更方便的东西。