Abap 是否有类似于移动的首字母?
我正在寻找一种语言结构或一个函数模块,它应该是Abap 是否有类似于移动的首字母?,abap,Abap,我正在寻找一种语言结构或一个函数模块,它应该是MOVE-correlated忽略缩写词like。简单地说,我想要一个工作方式与将对应的source移动到dest完全相同的东西,但忽略source中的所有初始字段 有这样的东西吗?没有针对任意结构的语言构造。对于字符字段,可以使用覆盖。。。但是,如果你试图用结构来实现这一点,它会导致非常混乱的代码和很多不可预见的关于可变长度内容的麻烦。最好的办法是使用RTTI()来实现这一点,但在检查初始值时要小心。我已经准备好了自己的代码片段,希望与大家分享。它
MOVE-correlated忽略缩写词
like。简单地说,我想要一个工作方式与将对应的source移动到dest
完全相同的东西,但忽略source
中的所有初始字段
有这样的东西吗?没有针对任意结构的语言构造。对于字符字段,可以使用覆盖。。。但是,如果你试图用结构来实现这一点,它会导致非常混乱的代码和很多不可预见的关于可变长度内容的麻烦。最好的办法是使用RTTI()来实现这一点,但在检查初始值时要小心。我已经准备好了自己的代码片段,希望与大家分享。它不是完美的,它不能用于复杂的结构。然而,我现在不需要比在平面结构上工作更多的东西
CLASS lcl_utilities DEFINITION FINAL CREATE PRIVATE.
PUBLIC SECTION.
CLASS-METHODS:
move_corresponding_ignore_init
IMPORTING
i_str_source TYPE any
CHANGING
c_str_dest TYPE any.
ENDCLASS.
CLASS lcl_utilities IMPLEMENTATION.
METHOD move_corresponding_ignore_init.
DATA:
l_rcl_abap_structdescr TYPE REF TO cl_abap_structdescr.
l_rcl_abap_structdescr ?= cl_abap_typedescr=>describe_by_data( i_str_source ).
LOOP AT l_rcl_abap_structdescr->components ASSIGNING FIELD-SYMBOL(<fs_str_component>).
ASSIGN COMPONENT <fs_str_component>-name OF STRUCTURE c_str_dest TO FIELD-SYMBOL(<fs_dest_field>).
IF sy-subrc = 0.
ASSIGN COMPONENT <fs_str_component>-name OF STRUCTURE i_str_source TO FIELD-SYMBOL(<fs_source_field>).
ASSERT sy-subrc = 0.
IF <fs_source_field> IS NOT INITIAL.
<fs_dest_field> = <fs_source_field>.
ENDIF.
ENDIF.
ENDLOOP.
ENDMETHOD. "move_corresponding_ignore_init
ENDCLASS.
谢谢你的提示,但这不是我要找的。我自己编写了一段代码,我相信它并不复杂。@Jagger:使用RTTI正是您在提供的代码中所做的,所以为什么这不是您想要的呢?对不起,也许我的回答有点误解。我正在用进行大约
覆盖。你答案的第二部分确实是我在代码中使用的。如果你想在不检查的情况下进行转换,你可以完全省略l_rcl_abap_typedescr。
DEFINE move_corresponding_ignore_init.
lcl_utilities=>move_corresponding_ignore_init(
exporting
i_str_source = &1
changing
c_str_dest = &2
).
END-OF-DEFINITION.