ABAP MODIFY-TRANSPORTING

1、使用CONCATENATE进行字符串拼接(i型和c型不能拼)
2、使用&&进行字符串拼接
3、MODIFY-TRANSPORTING
4、模糊查询

*&---------------------------------------------------------------------*
*& REPORT Z_09_SELECTMARA
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT Z_09_SELECTMARA.

*DATA: BEGIN OF LS_MARA,
*    MATNR LIKE MARA-MATNR,
*    MAKTX LIKE MAKT-MAKTX,
*    TEXT(80) TYPE C,
*  END OF LS_MARA.
*DATA: LT_MARA LIKE TABLE OF LS_MARA.
*
*DATA LV_DATE LIKE SY-DATUM.
*LV_DATE = SY-DATUM - 300.
*
*SELECT
*  A~MATNR
*  B~MAKTX
*  FROM MARA AS A
*  LEFT JOIN MAKT AS B
*  ON A~MATNR = B~MATNR
*  INTO CORRESPONDING FIELDS OF TABLE LT_MARA
*  WHERE A~ERSDA < LV_DATE
*  AND A~MATNR LIKE 'RCT%' OR A~MATNR LIKE 'FP%'.
*
*
*LOOP AT LT_MARA INTO LS_MARA.
*  WRITE: / 'MARA=',LS_MARA-MATNR,
*           'MAKT=',LS_MARA-MAKTX,
*           'TEXT=',LS_MARA-TEXT.
*ENDLOOP.

*自定义结构类型
TYPES: BEGIN OF TY_ITAB,
         MATNR    LIKE MARA-MATNR,
         MAKTX    LIKE MAKT-MAKTX,
         TEXT(80) TYPE C,
       END OF TY_ITAB.

*定义工作区
DATA LW_ITAB TYPE TY_ITAB.

*使用自定义类型来定义表
DATA LT_ITAB LIKE TABLE OF LW_ITAB.

*定义一个时间变量
DATA LV_DATE LIKE SY-DATUM.

*给时间变量赋值
LV_DATE = SY-DATUM - 300.

*字符串拼接的变量声明
DATA: STR1(10) TYPE C VALUE '当前是第',
      STR2(10) TYPE C,
      STR3(10) TYPE C VALUE '行'.

*查询
SELECT
  A~MATNR
  B~MAKTX
  FROM MARA AS A
  LEFT OUTER JOIN MAKT AS B
  ON A~MATNR = B~MATNR
  INTO CORRESPONDING FIELDS OF TABLE LT_ITAB
  WHERE A~ERSDA > LV_DATE
  AND A~MATNR LIKE 'FP%'
  OR A~MATNR LIKE 'RCT%'.
*  AND B~SPRAS = SY-LANGU.

**查询 UP TO * ROWS
*SELECT
*  A~MATNR
*  B~MAKTX
*  FROM MARA AS A
*  LEFT OUTER JOIN MAKT AS B
*  ON A~MATNR = B~MATNR
*  INTO CORRESPONDING FIELDS OF TABLE LT_ITAB
*  UP TO 5 ROWS
*  WHERE A~ERSDA > LV_DATE
*  AND A~MATNR LIKE 'FP%'
*  OR A~MATNR LIKE 'RCT%'
*  .

*循环,给内表的TEXT赋值  使用CONCATENATE进行字符串拼接(i型和c型不能拼)
LOOP AT LT_ITAB INTO LW_ITAB.
  STR2 = SY-TABIX.
  CONCATENATE STR1 STR2 STR3 INTO LW_ITAB-TEXT.
*  LW_ITAB-TEXT = '当前是第' && SY-TABIX && '行'.
  MODIFY LT_ITAB FROM LW_ITAB.
ENDLOOP.

**循环,给内表的TEXT赋值  使用&&进行字符串拼接  MODIFY-TRANSPORTING
*LOOP AT LT_ITAB INTO LW_ITAB.
*  LW_ITAB-MATNR = '111'.
*  LW_ITAB-TEXT = '当前是第' && SY-TABIX && '行'.
*  MODIFY LT_ITAB FROM LW_ITAB TRANSPORTING TEXT.
*ENDLOOP.

**循环,给内表的text赋值 通过指针FIELD-SYMBOLS
*FIELD-SYMBOLS: <F1> LIKE LINE OF LT-ITAB.


*给内表插入抬头描述在第一行
LW_ITAB-MATNR = 'MATNR'.
LW_ITAB-MAKTX = 'MAKTX'.
LW_ITAB-TEXT = 'TEXT'.
INSERT LW_ITAB INTO LT_ITAB INDEX 1.

*排序  降序
*SORT LT_ITAB DESCENDING BY TEXT.

*循环输出  FROM 1 TO 5输出前五行
LOOP AT LT_ITAB INTO LW_ITAB FROM 1 TO 5.
  WRITE: / LW_ITAB-MATNR,
           LW_ITAB-MAKTX,
           LW_ITAB-TEXT.
ENDLOOP.

**循环输出 EXIT
*LOOP AT LT_ITAB INTO LW_ITAB.
*  WRITE: / LW_ITAB-MATNR,
*           LW_ITAB-MAKTX,
*           LW_ITAB-TEXT.
*  IF SY-TABIX = 5.
*    EXIT.
*  ENDIF.
*ENDLOOP.

**循环输出 CHECK
*LOOP AT LT_ITAB INTO LW_ITAB.
*  WRITE: / 'CHECK BEFORE'.
**CHECK 为true执行后面的语句,为false不执行
*  CHECK SY-TABIX <= 5.
*  WRITE: / LW_ITAB-MATNR,
*           LW_ITAB-MAKTX,
*           LW_ITAB-TEXT.
*  WRITE: / 'CHECK AFTER'.
*ENDLOOP.
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值