动态对比两个相同结构工作区的值CL…

网友投稿 486 2022-11-26

动态对比两个相同结构工作区的值CL…

动态对比两个相同结构工作区的值CL…

需求是这样的

传入is_likp 参数,结构同likp 对比目前 cs_likp 参数,结构同 likp

如果is_likp   中某个字段赋值了,就覆盖掉 cs_likp原有值, 如果is_likp 中字段是空,不处理

DATA  : LT_IDETAILS  TYPE ABAP_COMPDESCR_TAB  WITH  HEADER  LINE .

DATA  : LR_REF_TABLE_DES  TYPE  REF  TO CL_ABAP_STRUCTDESCR .

“定义field变量,type any   FIELD-SYMBOLS :   《L_FIELD》      TYPE  ANY,                                       《L_FIELD_C》  TYPE  ANY.

**动态得到内表结构  ”全局结构

LR_REF_TABLE_DES ?=

CL_ABAP_TYPEDESCR=>DESCRIBE_BY_NAME( 'LIKP' ).

LT_IDETAILS[] = LR_REF_TABLE_DES->COMPONENTS[].

"循环判断结构每个字段

LOOP AT LT_IDETAILS.

ASSIGN COMPONENT LT_IDETAILS-NAME OF STRUCTURE is_likp TO    《

L_FIELD》      .     IF SY-SUBRC = 0 AND  IS NOT INITIAL.

ASSIGN COMPONENT LT_IDETAILS-NAME OF STRUCTURE CS_LIKP TO  《

L_FIELD_C》.       《 L_FIELD_C》  =  《 L_FIELD》  .     ENDIF.

ENDLOOP.

其中: ASSIGN  COMPONENT  LT_IDETAILS - NAME  OF  STRUCTURE  is_likp  TO  . 【 LT_IDETAILS - NAME】:是is_likp 中的字段名称 , 【   TO  《 L_FIELD》】这里的  《 L_FIELD》就是刚才那个字段对应的值

都是动态指定,循环的是likp的结构

其实如果两个结构不完全一样, 如果只需要修改相同字段名称的值 也可以这样处理 只是assign后判断subrc即可

另外还有两个函数 DDIF_NAMETAB_GET LVC_FIELDCATALOG_MERGE 具体怎么用自己写代码一测便知

注:  《 L_FIELD_C》是为防止跟web编码有冲突

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Trusted RFC creation&n…
下一篇:ABAP-FOR ALL ENTRIES IN 注意点
相关文章

 发表评论

暂时没有评论,来抢沙发吧~