Abap 如何调用SALV表上的remove_列?
我想在Abap 如何调用SALV表上的remove_列?,abap,Abap,我想在cl\u salv\u column\u表的实例上执行方法remove\u column,但由于其可见性级别,我无法执行此操作 计划: 我已经尝试从cl\u salv\u columns\u list继承,然后在remove-方法中执行调用: CLASS lcl_columns_list DEFINITION INHERITING FROM CL_SALV_COLUMNS_LIST. PUBLIC SECTION. METHODS: remove IMPO
cl\u salv\u column\u表的实例上执行方法remove\u column
,但由于其可见性级别,我无法执行此操作
计划:
我已经尝试从cl\u salv\u columns\u list继承,然后在remove
-方法中执行调用:
CLASS lcl_columns_list DEFINITION INHERITING FROM CL_SALV_COLUMNS_LIST.
PUBLIC SECTION.
METHODS:
remove IMPORTING iw_colname TYPE string.
ENDCLASS.
但很明显,我的铸造知识已经过时了,因为我无法找到合适的解决方案
这是我当前的层次结构-红色箭头显示了我必须采取的方式:
我的方法如下:
DATA lo_column_list TYPE REF TO lcl_columns_list.
lo_column_list ?= CAST cl_salv_columns_list( lo_columns ).
但它在以下方面失败了:
背景:
我的任务是选择3个表的所有列(如selectt1~*、t2~*、t3~*…
),只要它们的名称不冲突(例如fieldMANDT
只显示一次)。这需要定义一个非常大的结构,并将选择列表的大小调整到最大
为了避免这种情况,我想使用内联声明生成的类型。通过set\u visible(abap\u false)
隐藏各个列仍然会在布局管理器中显示它们,这看起来非常难看
有没有其他方法可以实现我的目标?使用set\u technical(abap\u true)
完全隐藏列。至于您的方法——对不起,继承不是这样工作的——我所知道的没有静态类型的面向对象语言。不能将实例化对象“重铸”到其他类。您需要对框架进行大量修改以支持该功能。为什么要首先调用该方法?@vwegert我还编辑了我的问题。。。如果实现了一种方法,我应该能够使用它。谢谢你的回答!但这个问题的一个主要部分也是调用remove\u column
——不管我的实际目标是什么。如果能够以某种方式解决这个问题,那就太好了。如果一个方法没有标记为public,那么通常是有原因的。我相信你的假设“如果它存在,我必须能够调用它”是有缺陷的-有很多内部方法没有完全实现,从未完成,未经测试或不受支持,或者需要特殊准备。能见度的概念被发明是有原因的。。。
CX_SY_MOVE_CAST_ERROR
Source type: \CLASS=CL_SALV_COLUMNS_TABLE
Target type: "\PROGRAM=XXX\CLASS=LCL_COLUMNS_LIST"