SAP-ABAP-740新语法解析中文版五:FOR运算

1.快速将内表的某一个字段赋值到另一个表


""740前的语法
TYPES : BEGIN OF TYA_03M ,
  FIELDNAME TYPE DD03M-FIELDNAME ,
 END OF TYA_03M .
DATA LTA_03M TYPE TABLE OF TYA_03M .
DATA LSA_03M TYPE TYA_03M .
SELECT  * FROM DD03M INTO TABLE @DATA(LTB_03M) WHERE TABNAME = 'BKPF'.
LOOP AT LTB_03M INTO DATA(LSB_03M).
  CLEAR:LSA_03M .
  LSA_03M-FIELDNAME = LSB_03M-FIELDNAME .
  APPEND LSA_03M TO LTA_03M .
ENDLOOP.

""740后可使用的新语法
TYPES TY_FIEELD2 TYPE STANDARD TABLE OF DD03M-FIELDNAME WITH EMPTY KEY .
SELECT  * FROM DD03M INTO TABLE @DATA(LT_03M) WHERE TABNAME = 'BKPF'.
DATA(LT_FIELD) = VALUE TY_FIEELD2( FOR LS_03M IN LT_03M[] ( LS_03M-FIELDNAME ) ) .
"DATA(LT_FIELD) = VALUE  TY_FIEELD2( FOR LS_03M IN LT_03M[] WHERE ( FLDSTAT = 'A' ) ( LS_03M-FIELDNAME ) ) .

740之前的语法需要定义结构,定义表,定义工作区,然后loop循环数据添加

740只后的新语法只需要定义一个表类型的结构,然后用FOR运算符循环赋值即可,但是限制条件很多。(说的不对的欢迎评论区指正)

限制条件1,只能快速赋值一个字段,不能多个字段

限制条件2,定义的类型TY_FIEELD2只能是表类型的,不能像往常740之前的语法定义行类型的

好处在于省略了很多代码,并且循环表LT_03M的工作区LS_03M也快速定义了

2.FOR 循环给表赋值(实际写代码种完全用不上)


TYPES:  BEGIN OF ty_line,
    col1 TYPE i,
    col2 TYPE i,
    col3 TYPE i,
  END OF ty_line,
  ty_tab TYPE STANDARD TABLE OF ty_line WITH EMPTY KEY.
DATA: gt_itab TYPE ty_tab,
      j       TYPE i.
FIELD-SYMBOLS <ls_tab> TYPE ty_line.
j = 1.
DO.
  j = j + 10.
  IF j > 40.
    EXIT.
  ENDIF.
  APPEND INITIAL LINE TO gt_itab ASSIGNING <ls_tab>.
  <ls_tab>-col1 = j.
  <ls_tab>-col2 = j + 1.
  <ls_tab>-col3 = j + 2.
ENDDO.

DATA(gt_itab2) = VALUE ty_tab( FOR k = 11 THEN k + 10 UNTIL k > 40
                            ( col1 = K  col2 = k + 1 col3 = k + 2  ) ).

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值