Open SQL 函数调试程序
ABAP Open SQL 语法:
如果要在ABAP中使用Open SQL 需要注意使用符合其规则的语法,SOL过程中的变量都需要使用@来转义
REPORT yn_demo_sql_function.
CLASS demo DEFINITION.
PUBLIC SECTION.
CLASS-METHODS main.
ENDCLASS.
CLASS demo IMPLEMENTATION.
METHOD main.
*-----------------------------------------------------------------------
*concat(Select时将字段拼接)
*-----------------------------------------------------------------------
SELECT concat( concat( concat( mandt,
lpad( carrid,15,'# ' ) ),
lpad( carrname,15,'% ' ) ) ,
lpad( currcode,15,' ' ) )
AS line , mandt
FROM scarr
INTO TABLE @DATA(result).
*-----------------------------------------------------------------------
*length(长度判断)
*-----------------------------------------------------------------------
SELECT mandt ,carrid, carrname ,currcode
FROM scarr
WHERE length( carrname ) > 9
INTO TABLE @DATA(result1)
.
*-----------------------------------------------------------------------
*left & right(截取两端字符串)
*-----------------------------------------------------------------------
SELECT left( carrname,2 ) AS left ,
mandt ,
carrid ,
currcode
FROM scarr
WHERE length( carrname ) > 9
INTO TABLE @DATA(result2)
.
SELECT right( carrname,3 ) AS right ,
mandt ,
carrid ,
currcode
FROM scarr
WHERE length( carrname ) > 9
INTO TABLE @DATA(result3)
.
*-----------------------------------------------------------------------
*lower & upper (大小写转换)
*-----------------------------------------------------------------------
SELECT lower( carrname ) AS lower ,
mandt ,
carrid ,
currcode
FROM scarr
WHERE length( carrname ) > 9
INTO TABLE @DATA(result4)
.
SELECT upper( carrname ) AS upper ,
mandt ,
carrid ,
currcode
FROM scarr
WHERE length( carrname ) > 9
INTO TABLE @DATA(result5)
.
*-----------------------------------------------------------------------
*lpad & rpad (填充两端字符串)
*-----------------------------------------------------------------------
SELECT lpad( carrname , 18 , '&' ) AS carrname ,
mandt ,
carrid ,
currcode
FROM scarr
WHERE length( carrname ) > 9
INTO TABLE @DATA(result6)
.
SELECT rpad( carrname , 15 , '!' ) AS carrname ,
mandt ,
carrid ,
currcode
FROM scarr
WHERE length( carrname ) > 9
INTO TABLE @DATA(result7)
.
*-----------------------------------------------------------------------
*ltrim & rtrim (去除两端字符串)
*-----------------------------------------------------------------------
DATA: lv_char TYPE char40.
lv_char = '%' && 'xx' && '%' .
SELECT ltrim( carrname , 'x' ) AS carrname ,
mandt ,
carrid ,
currcode
FROM scarr
WHERE carrname LIKE @lv_char
INTO TABLE @DATA(result8)
.
SELECT rtrim( carrname , 'x' ) AS carrname ,
mandt ,
carrid ,
currcode
FROM scarr
WHERE carrname LIKE @lv_char
INTO TABLE @DATA(result9)
.
*-----------------------------------------------------------------------
*replace(字符串替换)
*-----------------------------------------------------------------------
SELECT replace( carrname , 'px' , '&*' ) AS carrname ,
mandt ,
carrid ,
currcode
FROM scarr
WHERE carrid = 'PS'
INTO TABLE @DATA(result10)
.
*-----------------------------------------------------------------------
*substring(截取任意位置任意长度的字符串)
*-----------------------------------------------------------------------
SELECT substring( carrname , 4 , 5 ) AS carrname ,
mandt ,
carrid ,
currcode
FROM scarr
WHERE carrid <> ''
INTO TABLE @DATA(result11)
.
cl_demo_output=>display( result11[] ).
ENDMETHOD.
ENDCLASS.
START-OF-SELECTION.
demo=>main( ).