SAP 中的ABAP OPEN SQL

一、ABAP OPEN SQL语法

如果要在ABAP中使用Open SQL 需要注意使用符合其规则的语法,SQL过程中的变量都需要使用@来转义,以下为普通SQL 与 Open SQL 之间的语法转换,

  1. 普通SQL:
SELECT MAX( MATNR ) 
 INTO IT_TAB-MATNR
 FROM MARA
WHERE MATNR LIKE LV_MATNR_01
  1. Open SQL:
 SELECT MAX( MATNR )
   FROM MARA
  WHERE MATNR LIKE @LV_MATNR_01
   INTO @DATA(GV_MATNR)
二、Open SQL CONCAT函数

1、在ABAP中使用CONCAT函数,需要符合ABAP Open SQL的语法,包括ABAP中的变量要用@转义,列表中的元素必须使用逗号分隔,INTO放置在SQL的最后,CONCAT函数可以将获取值粘贴起来,可以定义粘贴字段的占长以及占位符。
2、实例:使用lpad函数将字段填充,并使用concat函数拼接。

SELECT CONCAT( CONCAT( CONCAT( MANDT, LPAD( CARRID,15,'# ' ) ),
                                      LPAD( CARRNAME,15,'% ' ) ) ,
                                      LPAD( CURRCODE,15,'  ' ) ) AS LINE

 FROM SCARR
 INTO TABLE @DATA(RESULT).
三、Open SQL LENGTH函数

1、在ABAP中使用LENGTH函数,需要符合ABAP Open SQL的语法,包括ABAP中的变量要用@转义,列表中的元素必须使用逗号分隔,INTO放置在SQL的最后,LENGTH函数可以将获取值的长度作为SELECT的条件。
2、实例:使用函数length获取字段CARRNAME长度大于9的数据,如下

SELECT MANDT ,CARRID, CARRNAME ,CURRCODE
  FROM SCARR
 WHERE LENGTH( CARRNAME ) > 9
  INTO TABLE @DATA(RESULT).
四、Open SQL LEFT与RIGHT函数

1、在ABAP中使用LEFT与RIGHT函数,需要符合ABAP Open SQL的语法,包括ABAP中的变量要用@转义,列表中的元素必须使用逗号分隔,INTO放置在SQL的最后,LEFT函数可以截取字段值中从左侧开始的部分字符,而RIGHT函数是从右侧截取,在语法中可以定义截取的长度。
2、实例1:使用left函数获取名字的左边2位

SELECT left( carrname,2 ) AS left ,
       mandt ,
       carrid ,
       currcode
  FROM scarr 
  INTO TABLE @DATA(lt_scarr_left).

3、实例2:使用right函数获取名字的右边4位

SELECT right( carrname,4 ) AS right ,
       mandt ,
       carrid ,
       currcode
  FROM scarr
  INTO TABLE @DATA(lt_scarr_right).
五、Open SQL LOWER与UPPER函数实现大小写转换

1、在ABAP中使用LOWER与UPPER函数,需要符合ABAP Open SQL的语法,包括ABAP中的变量要用@转义,列表中的元素必须使用逗号分隔,INTO放置在SQL的最后,LOWER与UPPER函数可以将获取的字段值转换成全部大写或全部小写。
2、实例1:使用lower函数将字段carrname全都转为小写。

SELECT lower( carrname ) AS lower ,
       mandt ,
       carrid ,
       currcode
  FROM scarr
  INTO TABLE @DATA(lt_scarr_lower).

3、实例2:使用upper函数将字段carrname全都转为大写。

SELECT upper( carrname ) AS upper ,
       mandt ,
       carrid ,
       currcode
  FROM scarr
  INTO TABLE @DATA(lt_scarr_upper)
六、Open SQL LPAD与 RPAD 函数

1、在ABAP中使用LPAD及 RPAD 函数,需要符合ABAP Open SQL的语法规则,包括ABAP中的变量要用@转义,表中的字段必须使用逗号分隔,INTO放置在SQL的最后等,LPAD与 RPAD 函数可以在Select中为获取的字段值填充指定的字符串,在ABAP中的语法格式分别为LPAD( arg, len, src );RPAD( arg, len, src ) ,三个参数分别指定了操作字段;填充后值的长度;填充字符.
2、实例1:使用函数lpad函数将字段carrname左边填充字符**&**,字符长度到18:

 SELECT lpad( carrname , 18 , '&' ) AS carrname ,
        mandt ,
        carrid ,
        currcode
  FROM scarr
  INTO TABLE @DATA(lt_scarr_lpad). 

3、实例2:使用函数rpad函数将字段carrname右边填充字符**&**,字符长度到15:

SELECT rpad( carrname , 15 , '!' ) AS carrname ,
       mandt ,
       carrid ,
       currcode
  FROM scarr 
  INTO TABLE @DATA(lt_scarr_rpad). 
七、Open SQL LTRIM与 RTRIM 函数

1、在ABAP中使用LTRIM与 RTRIM 函数,需要符合ABAP Open SQL的语法规则,包括ABAP中的变量要用@转义,表中的字段必须使用逗号分隔,INTO放置在SQL的最后等,LTRIM与 RTRIM 函数可以在Select中为获取的字段值去除指定的字符串,在ABAP中的语法格式分别为LTRIM( arg, char );RTRIM( arg, char ) ,两个参数分别指定了操作字段和去除字符。
2、实例1:使用ltrim函数去除字符carrname字段左边的X字符。

SELECT ltrim( carrname , 'x' ) AS carrname ,
       mandt ,
       carrid ,
       currcode
  FROM scarr 
  INTO TABLE @DATA(lt_scarr_ltrim).

3、实例2:使用rtrim函数去除字符carrname字段右边的X字符。

SELECT rtrim( carrname , 'x' ) AS carrname ,
       mandt ,
       carrid ,
       currcode
  FROM scarr 
  INTO TABLE @DATA(lt_scarr_rtrim). 
八、Open SQL REPLACE函数

1、在ABAP中使用REPLACE函数,需要符合ABAP Open SQL的语法规则,包括ABAP中的变量要用@转义,表中的字段必须使用逗号分隔,INTO放置在SQL的最后等,L REPLACE函数可以在Select中为替换值中的某段字符串,在ABAP中的语法格式为REPLACE( arg1, arg2, arg3 ) , 其意为用arg3替换arg1中出现的所有arg2 。
2、实例1:使用函数replace函数将carrname字段中的px转换为yy。

SELECT replace( carrname , 'px' , 'yy' ) AS carrname ,
       mandt ,
       carrid ,
       currcode
  FROM scarr 
  INTO TABLE @DATA(lt_scarr_replace). 
九、Open SQL SUBSTRING函数

1、在ABAP中使用SUBSTRING函数,需要符合ABAP Open SQL的语法规则,包括ABAP中的变量要用@转义,表中的字段必须使用逗号分隔,INTO放置在SQL的最后等,SUBSTRING函数可以在Select中截取字段值中任意位置任意长度的字符串,在ABAP中的语法格式为SUBSTRING( arg, pos, len ) , 其意为从pos位开始截取arg的len位字符 。
2、实例1:使用substring函数截取carrname字段从第4位开始5个长度。

SELECT substring( carrname , 4 , 5 ) AS carrname ,
       mandt ,
       carrid ,
       currcode
  FROM scarr
 WHERE carrid <> ''
  INTO TABLE @DATA(lt_scarr_sub).

*注意:所有函数均可配合使用

你可能感兴趣的:(ABAP,SQL,ABAP,SQL)