ABAP 新语法总结(Loading)

ABAP 新语法总结(Loading)

TYPES:BEGIN OF ty_i, "itab
        key   TYPE i,
        value TYPE i,
        kk    TYPE char10,
      END OF ty_i,
      BEGIN OF ty_col, "itab3
        col TYPE i,
        val TYPE i,
        dy  TYPE char10,
      END OF ty_col ,
   TT_I   TYPE TABLE OF TY_I ,
   TT_COL TYPE TABLE OF TY_COL .

DATA:
  BEGIN OF struct1,
    col1 TYPE i VALUE 11,
    col2 TYPE i VALUE 12,
  END OF struct1.

DATA:
  BEGIN OF struct2,
    col2 TYPE i VALUE 22,
    col3 TYPE i VALUE 23,
  END OF struct2.

struct2 = CORRESPONDING #( BASE ( struct2 ) struct1 ).
struct2 = VALUE #( BASE struct1  col3 = 33 ).

DATA: itab  TYPE TABLE OF ty_i,
      itab2 TYPE TABLE OF ty_i,
      itab3 TYPE TABLE OF ty_col.

itab  = VALUE #( ( key = 1 value = 1 ) ( key = 2 value = 2 ) (  key = 3 value = 3 ) ).
itab2 = VALUE #( ( key = 1 value = 1 ) ).
itab3 = VALUE #( ( col = 12 val = 15 dy = 'XXJ' ) ( col = 32 val = 65 dy = 'KKP' ) ).
*itab  = CORRESPONDING #( BASE ( itab ) itab2  EXCEPT key value ).  "类似appendd lines to强化版 EXCEP排除部分字段
itab = CORRESPONDING #( BASE ( itab ) itab3
                          MAPPING
                            key = col
                            kk  = dy
                          EXCEPT
                            value ). " 在mapping中已指定过kk 无法排除了

cl_demo_output=>display( itab ).

内表读取

READ TABLE itab WITH KEY key = '1' ASSIGNING FIELD-SYMBOL(<fs1>).
IF sy-subrc = 0.
  "...
ENDIF. "
*Instead of ↓
IF line_exists( itab[ key = '1' ] ).
  DATA(lv_var) = VALUE #( itab[ 1 ]-value DEFAULT VALUE #( itab2[ 1 ]-value DEFAULT '' ) ). "index读取 Default防dump
  lv_var = VALUE #( itab[ key = 1 ]-kk OPTIONAL ). "optionnal 防挂
ENDIF.

"内表筛选
*DATA(lt_tab) = VALUE tt_i( FOR WA IN ITAB WHERE ( KEY = 1 ) ( WA ) ). "筛选key=1的所有数据
DATA(lt_tab) = VALUE tt_i( FOR wa IN itab ( kk    = wa-value
                                            value = COND #( WHEN wa-key = 1 THEN 99 ELSE 18 )
                                            ) ). "括号内写几个赋值 就只赋值几个字段

LET IN

TYPES: BEGIN OF ty_data,
         matnr TYPE mara-matnr,
         mtart TYPE mara-mtart,
         matkl TYPE mara-matkl,
         text1 TYPE char50,
       END OF ty_data,
       tt_data TYPE TABLE OF ty_data WITH DEFAULT KEY.

DATA lt_data TYPE TABLE OF ty_data.

lt_data = VALUE #(
                   ( matnr = 'MATRIAL-001'
                     mtart = 'WATR'
                     matkl = '1020'
                     text1 = 'FIRST material' )
                   ( matnr = 'MATRIAL-002'
                     mtart = 'FOOD'
                     matkl = '1030'
                     text1 = 'SECOND material' )
                   ( matnr = 'MATRIAL-003'
                     mtart = 'WATR'
                     matkl = '1040'
                     text1 = 'THIRD material' )
                  ).

DATA(lt_line) = VALUE tt_data( LET
                                lw_data = VALUE #( lt_data[ matnr = 'MATRIAL-001' ] OPTIONAL )
                                lv_str  = 'Date:' && sy-datum
                               IN
                               ( matnr = lw_data-matnr
                                 mtart = lw_data-mtart
                                 matkl = lw_data-matkl
                                 text1 = lv_str )
                                ( matnr = '123'
                                  mtart = 'XXX'
                                  matkl = '9527'
                                  text1 = lv_str )

                              ).

cl_demo_output=>display( data = lt_line name = '这是标题' ).
*————————————————
*原文链接:https://blog.youkuaiyun.com/qq_34060435/article/details/117109771

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值