当前位置: 首页 > news >正文

朝阳网站建设 高碑店/爱站长工具

朝阳网站建设 高碑店,爱站长工具,wordpress文章显示字体间距设置,我想做个微信小程序1. 常量 1.1 常量赋值 常量字段可以用来为内表中的部分字段赋初始值,字段类型和长度依据输入常量的值决定 SELECTmara~matnr, " 物料号mara~matkl, " 物料组mara~mtart, " 物料类型 AS lkenz, " 删除标识,常量空字符串123 AS fla…

1. 常量

1.1 常量赋值

常量字段可以用来为内表中的部分字段赋初始值,字段类型和长度依据输入常量的值决定

  SELECTmara~matnr, " 物料号mara~matkl, " 物料组mara~mtart, " 物料类型' ' AS lkenz, " 删除标识,常量空字符串123 AS flag   " 常量数字FROM maraINTO TABLE @DATA(lt_mara)UP TO 100 ROWS.cl_demo_output=>display( lt_mara ).

像上面的删除标识字段就蛮有用的,循环内表有时候需要根据复杂的条件决定该行目是否需要,此时若不需要就打上删除标记’X’,最后再用 delete {table} where lkenz = ‘X’ 一次性删除

2. 宿主变量/表达式

2.1 作为SQL操作数

通常在查询语句中,程序声明(非数据库层级)的变量前需要使用转义符 @ 进行标识,这些宿主变量通常被用作 Open SQL 语句中的操作数
在查询语句内部声明结构/内表时,应该在 DATA 前使用转义符
此外,在使用宿主表达式(在 Open SQL 中作为操作数使用的一些表达式) 时,也需要添加转义字符,如下例所示

注:表达式内部的变量不需要再使用转义符,且不能使用表达式外部的数据库对象

  DATA: lv_maktx TYPE makt-maktx VALUE '物料描述'.SELECTmara~matnr, " 物料号mara~matkl, " 物料组mara~mtart, " 物料类型@lv_maktx AS maktx, " 物料描述    宿主变量@( COND char10( WHEN sy-langu = '1' THEN '中文'WHEN sy-langu = 'E' THEN 'English'ELSE                     '其他语言' ) ) AS langu    " 物料语言    宿主表达式FROM maraINTO TABLE @DATA(lt_mara)UP TO 100 ROWS.cl_demo_output=>display( lt_mara ).

3. 聚合表达式

3.1 对一组数据计算

聚合表达式用于对一组值执行计算并返回单一的值,可以使用在SELECT或HAVING子句中,不能用在WHERE子句
WHERE 子句的搜索条件在进行分组操作之前应用;而 HAVING 的搜索条件则在进行分组操作之后应用
常见的聚合表达式如下,表达式内部可选用DISTINCT对数据去重后再进行处理:

  • AVG:返回结果集的平均值,返回类型默认为浮点型,可通过AS语句返回指定类型,如DEC,CURR,QUAN或FLTP
  • MAX:返回结果集的最大值
  • MIN:返回结果集的最小值
  • SUM:返回结果集的汇总值
  • COUNT:返回结果集的条目数,通常情况下使用COUNT( * ) / COUNT(*),需要使用DISTINCT时则要指定字段名
  SELECTvbeln, 													 " 交货单号MAX( lfimg ) AS max_lfimg,                               " 最大交货数量MIN( lfimg ) AS min_lfimg,                               " 最小交货数量AVG( lfimg AS DEC( 14,3 ) ) AS avg_lfimg,                " 平均交货数量SUM( lfimg ) AS sum_lfimg,                               " 总交货数量COUNT(*)     AS count_lfimg,                             " 总行目数AVG( DISTINCT lfimg AS DEC( 14,3 ) ) AS avg_dstct_lfimg, " 去重交货数量SUM( DISTINCT lfimg ) AS sum_dstct_lfimg,                " 去重总交货数量COUNT( DISTINCT lfimg ) AS count_dstct_lfimg			 " 去重总行目数FROM lips ##DB_FEATURE_MODE[TABLE_LEN_MAX1]WHEREvbeln BETWEEN '8000000061' AND '8000000069'GROUP BY vbelnINTO TABLE @DATA(lt_data).SORT lt_data BY vbeln.

4. 嵌入表达式

4.1 数值

在 SELECT LIST 使用内嵌表达式来处理数值,使用时需注意传入参数的类型
常见的数值表达式如下:

  • ABS:获取绝对值
  • CEIL:向上取整
  • FLOOR:向下取整
  • DIV:除法计算,取整数位
  • DIVISION:除法计算,保留 N 位小数
  • MOD:除法计算,取余数
  • ROUND:计算舍入值
  DATA(lv_num) = CONV lfimg( '-123.456' )." 简化测试,全部用宿主变量SELECT SINGLE@lv_num               AS num          , " 原始值ABS( @lv_num )        AS abs_num      , " 绝对值CEIL( @lv_num )       AS ceil_num     , " 向上取整FLOOR( @lv_num )      AS floor_num    , " 向下取整DIV( 5 , 2 )          AS div_num      , " 除法,整数DIVISION( 5 , 2 , 2 ) AS divison_num  , " 除法,保留n位小数MOD( 5 , 2 )          AS mod_num      , " 取余ROUND( @lv_num , 2 )  AS rount_num_po , " 四舍五入,N为正数时,保留小数点后N位ROUND( @lv_num , -2 ) AS rount_num_ne   " 四舍五入,N为负数时,保留小数点前N位FROM lips ##DB_FEATURE_MODE[TABLE_LEN_MAX1]INTO @DATA(ls_data).

在这里插入图片描述

4.2 字符串

在 SELECT LIST 使用内嵌表达式来处理字符串, 通常情况下字符串返回结果不能超过255个字符,如果字符长度异常,语法检查时会有错误提示

  • CONCAT:连接字符串,参数固定为2个,各个表达式之间可以嵌套使用,CONCAT内部也可以使用 &&
  • &&:连接字符串,参数没有个数限制,但不能将其他内嵌表达式当作参数使用,仅作为操作符使用,在非SELECT语句中也可以被使用
  • CONCAT_WITH_SPACE:连接字符串,并用 N 个空格分隔,该表达式结果不能超过1333个字符
  • INSTR:遍历字符串,查找指定字符 s1 并返回第一次出现的位置,没有查到则返回0
  • LEFT/RIGHT:从字符串左/右侧开始取出 N 位字符,忽略前导/尾部的空格
  • LENGTH:计算字符串长度
  SELECT concat( carrid , currcode )                AS concat       ,carrid && currcode                         AS concat_sign  ,concat_with_space( carrid , currcode , 1 ) AS with_space   ,instr( carrid , 'BA' )                     AS instr        ,left( carrname , 4 )                       AS left         ,right( carrname , 4 )                      AS right        ,length( carrname )                         AS lengthFROM scarrINTO TABLE @DATA(lt_data)UP TO 5 ROWS.
  • LOWER/UPPER:将字符串转换成小写/大写
  • LPAD/RPAD:在字符串左侧/右侧填充指定字符 s1,直到字符串长度为 N,如果初始值长度>=N,则不会填充,但是超过 N 位的字符会被截断
  • LTRIM/RTRIM:从字符串左侧/右侧开始逐个删除指定字符 s1,直到出现其他字符为止,默认会删除尾部的空格
  • REPLACE:将字符串中所有的指定字符 s1 用其他字符 s2 代替
  • SUBSTRING:从字符串第 N 位开始截取长度为 M 的字符,系统会默认检查截取范围是否超出该字段最大长度,以避免造成DUMP
SELECT lower( carrid ) AS lower,upper( carrid ) AS upper,lpad( carrid , 5 , 'B' ) AS lpad,rpad( carrid , 5 , 'B' ) AS rpad,ltrim( carrid , 'A' ) AS ltrim,rtrim( carrid , 'A' ) AS rtrim,replace( carrid , 'A' , '@' ) AS replace,substring( carrname , 5 , 10 ) AS substring FROM scarrINTO TABLE @DATA(lt_data)UP TO 3 ROWS.     

4.3 日期/时间

在 SELECT LIST 使用内嵌表达式来处理日期/时间

  • DATS_IS_VALID/TIMS_IS_VALID:校验日期/时间有效性,有效时返回 1,否则返回 0(时间有效性的函数有报错,可能版本不支持)
  • DATS_DAYS_BETWEEN:计算日期d1和d2相隔的天数
  • DATS_ADD_DAYS:为指定日期加上N天
  • DATS_ADD_MONTHS:为指定日期加上N月
  DATA(lv_date) = CONV datum( '20181022' ).SELECT fldate                                 AS original_date,dats_is_valid( fldate )                AS valid_date,
*    tims_is_valid( @sy-uzeit )             AS valid_time,dats_days_between( fldate , @lv_date ) AS between,dats_add_days( fldate , 10 )           AS add_days,dats_add_months( fldate , 3 )          AS add_monthsFROM sflightINTO TABLE @DATA(lt_data)UP TO 3 ROWS.

4.4 时间戳

在 SELECT LIST 使用内嵌表达式来处理时间戳

  • TSTMP_IS_VALID:校验时间戳有效性,有效时返回 1,否则返回 0
  • TSTMP_CURRENT_UTCTIMESTAMP:返回当前时间戳
  • TSTMP_SECONDS_BETWEEN:计算时间戳 t1 和 t2 相隔的秒数,需要用赋值语句进行传参,可以添加相应的错误处理
  • TSTMP_ADD_SECONDS:为指定时间戳加上 N 秒,N 必须为 timestamp 类型
DATA(lv_stamp_now) = CONV timestamp( '20190603133559' ).
DATA(lv_stamp_past) = CONV timestamp( '20190602161408' ).SELECT tstmp_is_valid( @lv_stamp_now ) AS valid_stamp,tstmp_current_utctimestamp( ) AS current_stamp,tstmp_seconds_between( tstmp1 = @lv_stamp_past,tstmp2 = @lv_stamp_now,on_error = @sql_tstmp_seconds_between=>set_to_null ) AS between,tstmp_add_seconds( tstmp = @lv_stamp_now,seconds = @( CONV timestamp( 999 ) ),on_error = @sql_tstmp_add_seconds=>set_to_null ) AS add_secondFROM sflightINTO TABLE @DATA(lt_data)UP TO 1 ROWS.

4.5 时区

ABAP_USER_TIMEZONE:获取用户时区,不传参时默认获取当前用户当前 Client 的时区
ABAP_SYSTEM_TIMEZONE:获取系统时区,不传参时默认获取当前 Client 的时区

SELECT abap_user_timezone( user = @( CONV uname( 'JIANGRE' ) ),client = '130',on_error = @sql_abap_user_timezone=>set_to_null ) AS user_zone,abap_system_timezone( client = '130',on_error = @sql_abap_system_timezone=>set_to_null ) AS sys_zoneFROM sflightINTO TABLE @DATA(lt_data)UP TO 1 ROWS. 

4.6 日期/时间转换

在 SELECT LIST 使用内嵌表达式来转换日期/时间/时间戳

  • TSTMP_TO_DATS:将时间戳转换成对应时区的日期
  • TSTMP_TO_TIMS:将时间戳转换成对应时区的时间
  • TSTMP_TO_DST:根据时间戳获取对应时区的夏令时标识
  • DATS_TIMS_TO_TSTMP:将日期和时间根据时区转换成时间戳
DATA(lv_stamp) = CONV timestamp( '20190603133559' ).SELECT tstmp_to_dats( tstmp = @lv_stamp,tzone = @( CONV tznzone( 'CET' ) ) ) AS dats,tstmp_to_tims( tstmp = @lv_stamp,tzone = @( CONV tznzone( 'CET' ) ) ) AS tims,tstmp_to_dst( tstmp = @lv_stamp,tzone = @( CONV tznzone( 'CET' ) ) ) AS dst,dats_tims_to_tstmp( date = @sy-datum,time = @sy-uzeit,tzone = @( CONV tznzone( 'CET' ) ) ) AS tstmpFROM sflightINTO TABLE @DATA(lt_data)UP TO 1 ROWS. 

5. Case

5.1 条件语句

在 SELECT 语句中使用 CASE 作为条件语句,与一般条件判断使用的 CASE 类似,但有所区别
该语句不仅可以用于单值判断,也可以根据复杂条件进行判断;
此外,WHEN OTHERS 不再适用,需要使用 ELSE 代替,语句结束时使用 END,而不是 ENDCASE,且需要定义别名

SELECT CASE currcodeWHEN 'EUR' THEN carrnameELSE urlEND AS case_simple,		" 单值判断CASEWHEN currcode = 'EUR' THEN urlWHEN carrname <> ' '  THEN carrnameELSE carrid && '@' && currcodeEND AS case_complex	" 复杂条件判断FROM scarrINTO TABLE @DATA(lt_data)UP TO 5 ROWS. 

6. NULL Value

在使用 LEFT / RIGHT OUTER JOIN 关联外表时,如果主表中存在记录,但在外表中没有关联到数据,则外表的这部分字段的值在取数过程中始终为 NULL,在取数完成后传入数据对象时,NULL 会再转换成系统兼容的值,通常为初始值;
NULL 值用于数值计算或是字符串处理时返回结果仍为NULL值,可以在条件语句中用 IS [ NOT ] NULL 判断以及处理

DATA: lr_carrid TYPE RANGE OF s_carr_id.lr_carrid = VALUE #( sign = 'I' option = 'EQ' ( low = 'AA' )( low = 'CO' ) ).
SELECT DISTINCTr~carrid,CASEWHEN t~seatsocc IS NULL THEN 'IS NULL'WHEN t~seatsocc IS NOT NULL THEN 'IS NOT NULL'END AS field_statusFROM scarr AS rLEFT OUTER JOIN sflight AS t ON t~carrid = r~carridINTO TABLE @DATA(lt_data)WHERE r~carrid IN @lr_carrid. 
http://www.jmfq.cn/news/5317381.html

相关文章:

  • 网站建设推广特色/品牌网站建设哪家好
  • 网站建设的方式有哪些/网络推广哪个好
  • 讯杰网站建设/石家庄百度快照优化
  • 技术支持:洛阳网站建设/百度入口网页版
  • 建设一个网站app需要多少钱/什么是seo站内优化
  • 网站建设的图片尺寸应该是像素/杭州seo优化公司
  • 网站建设与管理就业前景/免费crm
  • 建设新农村网站/太原seo外包服务
  • 网站建设大约多少钱/培训心得体会1000字通用
  • 宿州网站建设时间/手机app免费下载
  • 龙泉建设工程有限公司网站/站长工具传媒
  • 青岛东橙网站建设/淘宝推广平台有哪些
  • 郑州做营销型网站建设/制作一个简单的网站
  • 四川泰龙建设集团公司官方网站/淘宝关键词工具
  • 兰州网站建设ulezhi/温州seo网站推广
  • 政府 社区网站建设/互联网推广怎么找客户
  • 同学会网站建设方案/百度搜索引擎排名规则
  • 网站建设前期准备方案/怎样才能上百度
  • 惠州市网站建设企业/深圳网络优化seo
  • 免费做手机网站建设/移动营销
  • 宁波建设工程主管部门网站/潍坊网站模板建站
  • 国际酒店网站建设不好/百度新闻首页
  • 现在网站建设怎么收费/优势的seo网站优化排名
  • 成都科技网站建设电话咨询/网络热词英语
  • 政府网站建设的流程/如何做网站平台
  • 网站建设的四大要素/济南网络推广公司电话
  • 杯子电子商务网站的建设/济宁百度推广电话
  • 建设银行 网站 交党费/什么是seo技术
  • 红旗河沟网站建设/百度一下就知道官方网站
  • 高性能网站建设进阶.../谷歌浏览器中文手机版