sap-abap 基础3-数据字典

7 篇文章 0 订阅

一、数据类型

      1 数据类型分类

   abap种数据类型大的分类为:基本数据类型、局部数据类型、全局数据类型

  基本数据类型:系统预定义的数据类型。

  局部数据类型:用于程序内部,可以使用基本数据类型定义或者包含多个基本类型的结构体。

  全局数据类型:存在于数据字典中,也叫数据字典类型。常见:数据元素、结构、表类型。所有程序都可以使用,可以用于定义变量。

     2基本数据类型8种

               

数据类型

默认大小(byte)

有效大小

初始值

说明

示例

C

1 character

1 to  65535

 

Space

‘tom’

N

1 character

1 to  65535

‘00000’

数字字符串

‘1234’

D

8位

‘00000000’

日期

20200101

T

6位

‘000000’

时间

121212

I

4 BYTE 32位

-2^31 to 2^31 -1

0

整数

F

测试可以无限

浮点(科学计数法)

P

8byte

2的49次幂到2的50次幂之间

压缩

String

字符串

注意:

     F 类型是科学计数法,数据超过17位以上数据运算会失真,谨慎使用。

     P类型 压缩型,

定义数据元素时的数据类型30种,在基础数据类型的基础上,专门用来维护数据元素的类型

  

对应关系

      3定义数据变量

      data: 定义变量

               data :  znum type c .

      like : 定义时基于实例化对象

            data:znum2 like znum 。

      type : 用于指定参考数据类型

      types:定义结构体

        

    

      4 运算符

            算数运算符

               加减乘除模   + - * /  mod

            比较运算符

                =  EQ  等于判断

                <> NE  不等于

                > GT  大于

               >= GE  大于等于

             < LT   小于

               <= LE  小于等于

           BETWEEN   之间

          IS INITIAL .变量内容为空

  

           字符串运算符

                CO  仅包含

                CN  不仅包含

                CA  包含任何

               NA  不包含任何

              CS  包含字符串

              NS 不包含字符串

             CP 包含模式

            NP 不包含模式

例子:

S1 CO S2 :  S2中的每个字符 在s1中都有 则为真。(注意如果纯数字则0不行)

S1 CN S2 :  s1中的其中一个字符不在s2 则为真 。

S1 CA S2 :   s2中的其中一个字符在s1 则为真

S1 NA S2 :  S2任何字符都不在s1中则为真  

  S1 CS S2  : 字符串 s1 整体包含s2 为真

  S1 NS S2  : 字符串 s1 不整体包含s2 为真

  S1 CP S2 : 字符串 s1 包含s2 模式。

S1 = ‘ACDE’ S2 = ‘*CD*’  

*表示任意个字符  +表示一个

  S1 NP S2 : 字符串 s1 包含s2 模式。

string相关命令

     

   正则

      正则用来: 验证字符串是否符合指定特征,查找字符串和用来替换字符串、sql中

    常用关键字: find(查找) 、 replace(替代) 、regex(正则表达式)

 正则说明

"1.Single Character Patterns 
  "示例:
  "regex:A  string:a  结果:不匹配
  "regex:AB string:A  结果:不匹配
 

  ".,[,],-,^特殊操作字符
  ".可以替换任意单个字符;
  "\使用反斜杠将特殊字符变成普通字符;
  "\和一些字符一起表示一组字符(不能再[]中使用):
  "1.\C:表示字母字符集;
  "2.\d:表示数字字符集;
  "3.\D:表示非数字字符集;
  "4.\l:表示小写字符集;
  "5.\L:表示非小写字符集;
  "6.\s:表示空白字符;
  "7.\S:表示非空白字符;
  "8.\u:表示大写字符集;
  "9.\U:表示非大写字符集;
  "10.\w:表示字母数字下划线字符集;
  "11.\W:表示非字母数字下划线字符集;

  "[]表示一个字符集,只需要匹配字符集中一个字符,表示匹配;
  "[^x]表示对该字符集取反,只需要不匹配字符集中任意字符,表示匹配;
  "[x-x]表示字符集范围,A-Z,a-z,0-1等;
  "ABAP定义的字符集
  "1.[:alnum:]字母数字集;
  "2.[:alpha:]字母集;
  "3.[:digit:]数字集;
  "4.[:blank:]空白字符,水平制表符;
  "5.[:cntrl:]所有控制字符集;
  "6.[:graph:]可显示字符集,除空白和水平制表符;
  "7.[:lower:]小写字符集;
  "8.[:print:]所有可显示字符的集合([:graph:]和[:blank:]的并集);
  "9.[:punct:]所有标点字符集;
  "10.[:space:]所有空白字符、制表符和回车符的集合;
  "11.[:unicode:]字符表示大于255的所有字符集(仅在Unicode系统中);
  "12.[:upper:]所有大写字符集;
  "13.[:word:]包括下划线在内的所有字母数字字符集_;
  "14.[:xdigit:]所有十六进制数字的集合(“0”-“9”,“A”-“F”,和“A”-“F”);

  "示例:
  "regex:\. string:.  结果:匹配
  "regex:\C string:A  结果:匹配
  "regex:.. string:AB 结果:匹配
  "regex:[ABC]  string:A  结果:匹配
  "regex:[AB][CD] string:AD 结果:匹配
  "regex:[^A-Z] string:1 结果:匹配
  "regex:[A-Z-] string:- 结果:匹配
 

使用regex实现

      

替换字符串中的  非数字

REPLACE ALL OCCURRENCES OF REGEX '[^0-9]' IN lv_bstkd WITH space

使用类实现

在ABAP中定义了两个类来实现相应功能,分别是CL_ABAP_REGEX 和CL_ABAP_MATCHER

   *正则表达式验证
IF cl_abap_matcher=>matches(
    pattern = '^(^[\-0-9][0-9]*(.[0-9]+)?)$'
    text = '1.01a' ) = abap_true.
  WRITE '数字'.
ELSE.
  WRITE '非数字'.
ENDIF.

查找

*正则表达式查找
DATA: lv_string TYPE string VALUE '广东省珠海市香洲区中山路'.

DATA: lt_result TYPE TABLE OF match_result,
      wa_result TYPE match_result.

FIND ALL OCCURRENCES OF PCRE '(.+?[省])?(.+?[市])?(.+?[区])?(.*)?' IN  lv_string IGNORING CASE RESULTS lt_result.

LOOP AT lt_result INTO wa_result WHERE offset >= 0 .
  WRITE:/ lv_string+wa_result-offset(wa_result-length).
ENDLOOP.

ULINE.
*读取捕获的分组值
LOOP AT lt_result INTO wa_result.
  DATA(lt_submatches) = wa_result-submatches.
  LOOP AT lt_submatches INTO DATA(wa_submatches) WHERE offset >= 0.
    WRITE:/ lv_string+wa_submatches-offset(wa_submatches-length).
  ENDLOOP.
ENDLOOP.

1 *正则表达式替换
2 DATA text TYPE string VALUE '-hubinshishuibuzhidao-'.
3 REPLACE ALL OCCURRENCES OF PCRE 'sh.?i' IN text WITH 'FFF'.
4 WRITE:/ text.

 

      5数据字典中的数据类型

  se11创建数据类型

数据元素:全局的自定义数据类型。可以基于预定义的数据类型定义,也可以使用 域定义。

 结构: 全局的结构类型 。类似于全局的 types。

表类型:基于行类型创建。主要用于接口中。

二、域

     se11

     基于基本数据类型创建,可以指定数据范围 。数据范围可以是 固定几个,也可以是范围,也可以是某个表中的数据。

    

   

三、搜索帮助

SE11 创建

常用于某个字段可以基于某个配置表进行搜索。

以下例子是 创建搜索帮助: ZH_SFXCP ,该搜索帮助基于表 ZTSFXCP, 在创建其他字段时可以指定该搜索帮助。

1 配置表:ZTSFXCP

2 基于配置表创建搜索帮助

3 在表中的字段上指定该搜索帮助(创建表或创建数据元素时指定搜索帮助)

4 效果

 

四、消息message

系统自带和自建消息在表t100 ,tcode:se91

可以用于问题的调试

1 直接弹出消息

  Message  ‘mes’  type  ‘I’ .

2 使用系统自带消息

IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.

3 自定义消息

自定义消息类SE91,例如:zmesg

使用

  须在报表中声明 MESSAGE-ID ZMSEG .

 

 

    sap系统的提示方式有两种:

1.  MESSAGE I002(ZFI) with ‘文本1’ ‘文本2’ .

2.  MESSAGE   ID ' ZFI ' TYPE 'I' NUMBER '002'  with ‘文本1’ ‘文本2’ .

消息使用

一般在调用bapi根据返回的消息 是否包含 EAX 来处理错误

  • 21
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值