You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ABAP Objects中`ADD-CORRESPONDING`不支持,求等效替代方案

ABAP Objects中ADD-CORRESPONDING的替代方案

在ABAP Objects上下文(如类方法)中,传统ABAP的ADD-CORRESPONDING语句不被支持,你可以根据结构字段的数量和灵活性需求选择以下等效方案:

1. 手动赋值对应字段(推荐字段少的场景)

如果结构的对应字段数量不多且固定,直接手动计算赋值是最直观高效的方式:

struc2-number1 = struc2-number1 + struc1-number1.

修改后的完整测试代码:

REPORT.
CLASS lcl_app DEFINITION FOR TESTING RISK LEVEL HARMLESS DURATION SHORT.
  PUBLIC SECTION.
    CLASS-METHODS main.
ENDCLASS.
CLASS lcl_app IMPLEMENTATION.
  METHOD main.
    TYPES: BEGIN OF ty_struc1,
             number1 TYPE i,
             number2 TYPE i,
           END OF ty_struc1,
           BEGIN OF ty_struc2,
             number1 TYPE i,
             number3 TYPE i,
           END OF ty_struc2.
    DATA(struc1) = VALUE ty_struc1( number1 = 1 number2 = 1 ).
    DATA(struc2) = VALUE ty_struc2( number1 = 1 number3 = 1 ).
    
    " 替代ADD-CORRESPONDING的手动赋值
    struc2-number1 = struc2-number1 + struc1-number1.
    
    cl_abap_unit_assert=>assert_equals( act = struc2 exp = VALUE ty_struc2( number1 = 2 number3 = 1 ) ).
  ENDMETHOD.
ENDCLASS.

START-OF-SELECTION.
  lcl_app=>main( ).

2. 使用CORRESPONDING表达式(适合保留其他字段的场景)

通过CORRESPONDING表达式结合字段计算,既能实现对应字段的累加,又能保留目标结构其他字段的原有值:

struc2 = CORRESPONDING #( struc2
                          NUMBER1 = struc2-NUMBER1 + struc1-NUMBER1 ).

3. 动态处理结构字段(通用场景)

如果需要处理字段不固定的结构,可通过结构描述类动态获取共有字段并循环累加:

DATA(desc_struc1) = CL_ABAP_STRUCTDESCR=>DESCRIBE_BY_DATA( struc1 ).
DATA(desc_struc2) = CL_ABAP_STRUCTDESCR=>DESCRIBE_BY_DATA( struc2 ).

" 获取两个结构的共有字段名
DATA(common_fields) = VALUE string_table(
  FOR field IN desc_struc1->components
  WHERE ( name IN VALUE string_table( FOR f2 IN desc_struc2->components ( f2-name ) ) )
  ( field-name )
).

LOOP AT common_fields INTO DATA(field_name).
  ASSIGN COMPONENT field_name OF STRUCTURE struc1 TO FIELD-SYMBOL(<fs1>).
  ASSIGN COMPONENT field_name OF STRUCTURE struc2 TO FIELD-SYMBOL(<fs2>).
  IF <fs1> IS ASSIGNED AND <fs2> IS ASSIGNED.
    <fs2> = <fs2> + <fs1>.
  ENDIF.
ENDLOOP.

内容的提问来源于stack exchange,提问作者Sandra Rossi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 14:27:23