0
点赞
收藏
分享

微信扫一扫

动态对比两个相同结构工作区的值CL_ABAP_TYPEDESCR=>DESCRIBE_BY_NAME_SAP刘梦_新浪博客...

需求是这样的

传入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》.
if subrc = 0.
《 L_FIELD_C》 = 《 L_FIELD》 .
endif.
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编码有冲突

欢迎关注订阅号:SAP学习记录 (SAPlearning )

​​

PO <wbr><wbr>text <wbr><wbr>copy <wbr><wbr>rules <wbr><wbr>:copy <wbr><wbr>PR <wbr><wbr>item <wbr><wbr>text <wbr><wbr>to <wbr><wbr>PO

​​

举报

相关推荐

0 条评论