首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在SALV表上调用remove_column?

如何在SALV表上调用remove_column?
EN

Stack Overflow用户
提问于 2016-11-16 15:10:21
回答 1查看 1.3K关注 0票数 1

我想在一个remove_column实例上执行cl_salv_column_table方法,但是由于它的可见性级别,我无法这样做。

计划:

我已经尝试过从cl_salv_columns_list继承,然后在remove-method中执行调用:

代码语言:javascript
复制
CLASS lcl_columns_list DEFINITION INHERITING FROM CL_SALV_COLUMNS_LIST.
    PUBLIC SECTION.
    METHODS:
        remove IMPORTING iw_colname TYPE string.
ENDCLASS.

但显然我的选角知识生疏了,因为我找不到合适的解决办法。

这是我当前的层次结构--红色箭头显示了我必须采取的方式:

我的方法是这样的:

代码语言:javascript
复制
DATA lo_column_list TYPE REF TO lcl_columns_list.
lo_column_list ?= CAST cl_salv_columns_list( lo_columns ).

但它失败了,因为:

CX_SY_MOVE_CAST_ERROR来源类型:\CLASS=CL_SALV_COLUMNS_TABLE目标类型:"\PROGRAM=XXX\CLASS=LCL_COLUMNS_LIST“

背景:

我的任务是选择3个表的所有列(这类似于SELECT t1~*, t2~*, t3~* ...),只要它们的名称不冲突(例如,字段MANDT应该只显示一次)。这将需要定义一个非常大的结构,并将选择列表的大小提高到最大。

为了避免这种情况,我想利用内联声明生成的类型。通过set_visible( abap_false )隐藏单独的列仍然会在布局管理器中显示它们--这看起来很难看。

还有其他方法来完成我的目标吗?

EN

回答 1

Stack Overflow用户

发布于 2016-11-18 07:30:24

使用set_technical( abap_true )完全隐藏列。至于您的方法--对不起,继承不是这样工作的--没有我所知道的静态类型的面向对象语言。您不能将实例化的对象“重铸”到另一个类。您需要对框架进行广泛的修改,以支持这一点。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40635572

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档