点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
大家好,
我需要你的帮助。
许多示例表明,我可以创建一个继承自超类的子类,添加方法和属性,并进行如下操作:
但是,当我尝试对从cl_gui_alv_grid派生的类进行相同操作时,我总是在向下转换的指令中出现强制类型转换异常。
示例:
字段符号:类型标准表。 数据:gos_alv类型为cl_gui_alv_grid的引用。 * ------------------------------------------------- -------------------- * * CLASS lcl_gui_alv_grid定义 * ------------------------------------------------- -------------------- * * * ------------------------------------------------- -------------------- * 从cl_gui_alv_grid继承的class lcl_gui_alv_grid定义。 公共部分。 方法:get_tab_line。 结束类。 " lcl_gui_alv_grid定义 * ------------------------------------------------- -------------------- * * CLASS lcl_gui_alv_grid实施 * ------------------------------------------------- -------------------- * * * ------------------------------------------------- -------------------- * lcl_gui_alv_grid类的实现。 方法get_tab_line。 * mt_outtab是作为受保护属性保存的数据表 *在cl_gui_alv_grid类中。 将我-> mt_outtab-> *分配给 。 "原始数据 方法。 " get_tab_line 结束类。 " lcl_gui_alv_grid IMPLEMENTATION 数据:l_alv类型引用到lcl_gui_alv_grid。
但是当我像这样进行垂头丧气时(gos_alv已经使用"创建对象"指令创建了):
l_alv?= gos_alv。
我有一个转换错误的例外。 我不明白为什么以及如何解决问题。
非常感谢您的协作。
安德里亚
安德里亚,你好
我建议您微调代码,因为我想重点是获取mt_outtab表,对吧?
现在您需要做的就是调用静态方法get_tab_line提供您的实际Alv参考
关于您的问题,为什么使用此代码
触发异常 cx_sy_move_cast_error 。
如果您使用此编码
...您可以防止系统转储,但是无论如何都会触发异常。 您会抓住它的。
问题仅源于这样的事实,即下注检查将这两个参考变量 l_alv 和 gos_alv 置于同一级别。 这就是为什么你在那放问号? 询问系统gos_alv实际上是否包含适当的参考。 您只能在程序执行期间对其进行评估。
当涉及到铸件时,总是会想到这种情况。
您拥有VEHICLE类(您的 cl_gui_alv_grid )。 从其继承的类是PLANE(您的lcl_gui_alv_grid)。 现在,您随时可以进行这样的操作
但是你永远做不到
这是因为飞机始终是交通工具,但交通工具不必是平原。 它可以是卡车,轮船或飞机。
因此,对于下降演员,您总是必须询问系统VEHICLE是否确实包含(在执行过程中)对PLANE的引用。 这就是为什么你这样写
然后系统检查车辆是否真的在其中包含平面参考。
以为乍看之下可能没有用,这是政治化的基础,但这是另一次谈话;)
致谢
Marcin
如果Down Cast总是给出Move data Exception,那么Down Case的实时用途是什么??
可以使用'='运算符直接在层次结构或更高版本的情况下将对象投射到同一级别。
一周热门 更多>