动态对比两个相同结构工作区的值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 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编码有冲突
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值