SAP ABAP——数据类型(二)【TYPES自定义数据类型详解】

news2024/10/6 10:29:15

💬个人网站:【芒果个人日志】​​​​​​

💬原文地址:SAP ABAP——数据类型(二)【TYPES自定义数据类型详解】 - 芒果个人日志 (wyz-math.cn)


💂作者简介: THUNDER王,一名热爱财税和SAP ABAP编程以及热爱分享的博主。目前于江西师范大学会计学专业大二本科在读,同时任汉硕云(广东)科技有限公司ABAP开发顾问。在学习工作中,我通常使用偏后端的开发语言ABAP,SQL进行任务的完成,对SAP企业管理系统,SAP ABAP开发和数据库具有较深入的研究。


💅文章概要:本文继续对ABAP中关于用户自定义数据类型TYPES进行一个深入的讲解!关于全局数据字典类型更详细的介绍将会在下一章节【数据字典】中进行详解!


🤟每日一言:宝剑锋从磨砺出,梅花香自苦寒来。

在上一文

SAP ABAP——数据类型(一)【数据类型概要及分类】

介绍了SAP ABAP中数据类型的概要以及分类,我们知道了ABAP中三种类型的数据类型,本文承接上一文继续对ABAP中关于用户自定义数据类型TYPES进行一个深入的讲解!关于全局数据字典类型更详细的介绍将会在下一章节【数据字典】中进行详解!

目录

定义单一类型

参照预定义数据类型定义

参照全局数据字典类型定义

参照数据库表字段定义

参照数据元素定义

参照数据字典结构中组件定义

参照类/接口定义

参照用户已定义数据类型再定义

定义结构体类型

参照预定义数据类型定义

参照全局数据字典类型定义

参照数据库表字段定义

参照数据元素定义

参照数据字典结构中组件定义

参照数据字典结构定义

参照类/接口定义

参照用户已定义数据类型再定义

定义内部表类型(标准表,排序表,哈希表)

参照全局数据字典类型定义

参照数据库表定义

参照数据字典表类型定义

参照数据字典结构定义内部表类型

参照用户已定义数据类型再定义

参照自定义结构类型再定义

参照自定义内部表类型再定义


定义单一类型

参照预定义数据类型定义

 TYPES:CHAR_10 TYPE CHAR10, "10位字符串
       CHAR_20 TYPE C LENGTH 20, "20位字符串
       P_8_2   TYPE P LENGTH 8 DECIMALS 2. "16位数字型变量,两位小数

参照全局数据字典类型定义

          下面列举了最常见的参照全局数据字典类型定义普通单一类型的示例代码:


  • 参照数据库表字段定义

TYPES:ZCARRID TYPE SFLIGHT-CARRID,
      ZCONNID TYPE SFLIGHT-CONNID,
      ZFLDATE TYPE SFLIGHT-FLDATE,
      ZPRICE  TYPE SFLIGHT-PRICE.

数据库表sflight如下:

数据库表sflight


  • 参照数据元素定义

 TYPES:ZCARRID TYPE S_CARR_ID,
       ZCONNID TYPE S_CONN_ID,
       ZFLDATE TYPE S_DATE,
       ZPRICE  TYPE S_PRICE.

使用的数据元素为上述数据库表sflight中所定义好的:

数据库表sflight


  • 参照数据字典结构中组件定义

    TYPES: ZFIELDNAME TYPE /EACA/O_CHAR_T-FIELDNAME.
    

数据字典结构/EACA/O_CHAR_T如下:

数据字典结构/EACA/O_CHAR_T


  • 参照类/接口定义

     TYPES:WCL_CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER,
           WCL_ALV       TYPE REF TO CL_GUI_ALV_GRID.
    

参照用户已定义数据类型再定义

          下面的示例代码首先各选取了上述各一个例子进行用户自定义类型,然后再分别参照自定义类型再定义相同的类型,后缀为【_copy】,展示如何参照用户已定义数据类型再定义:

*首先进行自定义数据类型:
TYPES:CHAR_10 TYPE CHAR10,
      ZCARRID TYPE SFLIGHT-CARRID,
      ZCONNID TYPE S_CONN_ID,
      ZFIELDNAME TYPE /EACA/O_CHAR_T-FIELDNAME,
      WCL_CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER.

*然后分别参照上面已定义的数据类型在定义:
TYPES:CHAR_10_COPY       TYPE CHAR_10,
      ZCARRID_COPY       TYPE ZCARRID,
      ZCONNID_COPY       TYPE ZCONNID,
      ZFIELDNAME_COPY    TYPE ZFIELDNAME,
      WCL_CONTAINER_COPY TYPE WCL_CONTAINER.

定义结构体类型

参照预定义数据类型定义

TYPES:BEGIN OF TY_CLASS,
       TEA_NAME TYPE C LENGTH 10,
       TEA_ID   TYPE N LENGTH 8,
       STU_NAME TYPE C LENGTH 10,
       STU_ID   TYPE N LENGTH 8,
     END OF TY_CLASS.

参照全局数据字典类型定义

          下面列举了最常见的参照全局数据字典类型定义结构体类型的示例代码:


  • 参照数据库表字段定义

TYPES:BEGIN OF TY_SFLIGHT,
       ZCARRID  TYPE SFLIGHT-CARRID,
       ZCONNID  TYPE SFLIGHT-CONNID,
       ZFLDATE  TYPE SFLIGHT-FLDATE,
       ZPRICE   TYPE SFLIGHT-PRICE,
     END OF TY_SFLIGHT.

数据库表sflight如下:

数据库表sflight


  • 参照数据元素定义

TYPES:BEGIN OF TY_SFLIGHT,
       ZCARRID  TYPE S_CARR_ID,
       ZCONNID  TYPE S_CONN_ID,
       ZFLDATE  TYPE S_DATE,
       ZPRICE   TYPE S_PRICE,
     END OF TY_SFLIGHT.

  • 参照数据字典结构中组件定义

TYPES:BEGIN OF TY_/EACC/YS_WA_JOURNAL,
       ZPST_DAT        TYPE /EACC/YS_WA_JOURNAL-PST_DAT,
       ZACC_SYSTEM     TYPE /EACC/YS_WA_JOURNAL-ACC_SYSTEM,
       ZBUS_TRANS_CAT  TYPE /EACC/YS_WA_JOURNAL-BUS_TRANS_CAT,
       ZITEM_CAT       TYPE /EACC/YS_WA_JOURNAL-ITEM_CAT,
       ZJOURNAL        TYPE  /EACC/YS_WA_JOURNAL-JOURNAL,
     END OF TY_/EACC/YS_WA_JOURNAL.

数据字典结构/EACC/YS_WA_JOURNAL如下:

数据字典结构/EACC/YS_WA_JOURNAL


  • 参照数据字典结构定义

TYPES:TY_/EACC/YS_WA_JOURNAL TYPE /EACC/YS_WA_JOURNAL.

  • 参照类/接口定义

TYPES:BEGIN OF TY_ALV,
       WCL_CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER,
       WCL_ALV       TYPE REF TO CL_GUI_ALV_GRID,
      END OF TY_ALV.

参照用户已定义数据类型再定义

          下面的示例代码首先各选取了上述各一个例子进行用户自定义类型,然后再分别参照自定义类型再定义相同的类型,后缀为【_copy】,展示如何参照用户已定义数据类型再定义:

TYPES:BEGIN OF TY_TEST,
       TEA_NAME               TYPE C LENGTH 10,
       ZCARRID                TYPE SFLIGHT-CARRID,
       ZCONNID                TYPE S_CONN_ID,
       ZPST_DAT               TYPE /EACC/YS_WA_JOURNAL-PST_DAT,
       GS_/EACC/YS_WA_JOURNAL TYPE /EACC/YS_WA_JOURNAL,
       WCL_CONTAINER          TYPE REF TO CL_GUI_CUSTOM_CONTAINER,
     END OF TY_TEST.

TYPES: TY_TEST_COPY TYPE TY_TEST."参照自定义的结构TY_TEST再定义

定义内部表类型(标准表,排序表,哈希表)

参照全局数据字典类型定义

          下面列举了最常见的参照全局数据字典类型定义表类型的示例代码:其中关于内表的三种表类型将在后续章节【内表】中进行更加详细的讲解!


  • 参照数据库表定义

*定义标准表类型
TYPES: TY_TAB_SFLIGHT  TYPE TABLE OF SFLIGHT ,
       TY_TAB_SFLIGHT1 TYPE STANDARD TABLE OF SFLIGHT ,
       TY_TAB_SFLIGHT2 TYPE TABLE OF SFLIGHT WITH NON-UNIQUE KEY CARRID CONNID FLDATE,
       TY_TAB_SFLIGHT3 TYPE STANDARD TABLE OF SFLIGHT WITH NON-UNIQUE KEY CARRID CONNID FLDATE.

*定义排序表类型
TYPES: TY_TAB_SFLIGHT4  TYPE SORTED TABLE OF SFLIGHT ,
       TY_TAB_SFLIGHT5 TYPE SORTED TABLE OF SFLIGHT WITH UNIQUE KEY CARRID CONNID FLDATE,
       TY_TAB_SFLIGHT6 TYPE SORTED TABLE OF SFLIGHT WITH NON-UNIQUE KEY CARRID CONNID FLDATE.

*定义哈希表类型
TYPES: TY_TAB_SFLIGHT7  TYPE HASHED TABLE OF SFLIGHT ,
       TY_TAB_SFLIGHT8 TYPE HASHED TABLE OF SFLIGHT WITH UNIQUE KEY CARRID CONNID FLDATE.

  • 参照数据字典表类型定义

TYPES: TY_TAB_HRPERNR  TYPE  HRAHQ_PERNR_TABLE .

PS:【TYPE】后面跟全局的表类型(标准表、排序表、哈希表),所以不需要使用【TYPE [STANDARD|SORTED|HASHED] TABLE OF】语句


  • 参照数据字典结构定义内部表类型

*定义标准表类型
TYPES:  TY_TAB_/EACC/YS_WA_JOURNAL  TYPE TABLE OF /EACC/YS_WA_JOURNAL ,
        TY_TAB_/EACC/YS_WA_JOURNAL1 TYPE STANDARD TABLE OF /EACC/YS_WA_JOURNAL ,
        TY_TAB_/EACC/YS_WA_JOURNAL2 TYPE TABLE OF /EACC/YS_WA_JOURNAL WITH NON-UNIQUE KEY PST_DAT 
ACC_SYSTEM BUS_TRANS_CAT.
        TY_TAB_/EACC/YS_WA_JOURNAL3 TYPE STANDARD TABLE OF /EACC/YS_WA_JOURNAL WITH NON-UNIQUE KEY PST_DAT 
ACC_SYSTEM BUS_TRANS_CAT.


*定义排序表类型
TYPES:  TY_TAB_/EACC/YS_WA_JOURNAL4  TYPE SORTED TABLE OF  /EACC/YS_WA_JOURNAL ,
        TY_TAB_/EACC/YS_WA_JOURNAL5  TYPE SORTED TABLE OF  /EACC/YS_WA_JOURNAL WITH UNIQUE KEY PST_DAT 
ACC_SYSTEM BUS_TRANS_CAT,
        TY_TAB_/EACC/YS_WA_JOURNAL6  TYPE SORTED TABLE OF  /EACC/YS_WA_JOURNAL WITH NON-UNIQUE KEY 
PST_DAT ACC_SYSTEM BUS_TRANS_CAT.

*定义哈希表类型
TYPES: TY_TAB_/EACC/YS_WA_JOURNAL7 TYPE HASHED TABLE OF /EACC/YS_WA_JOURNAL ,
       TY_TAB_/EACC/YS_WA_JOURNAL8 TYPE HASHED TABLE OF /EACC/YS_WA_JOURNAL WITH UNIQUE KEY PST_DAT 
ACC_SYSTEM BUS_TRANS_CAT.

数据字典结构/EACC/YS_WA_JOURNAL如下:

数据字典结构/EACC/YS_WA_JOURNAL


参照用户已定义数据类型再定义

          下面列举了两种参照自定义数据类型再定义表类型的示例代码:一种方法是参照自定义结构再定义,另一种方法是参照自定义表类型再定义


  • 参照自定义结构类型再定义

*定义标准表类型
TYPES:BEGIN OF TY_CLASS,
       TEA_NAME TYPE C LENGTH 10,
       TEA_ID   TYPE N LENGTH 8,
       STU_NAME TYPE C LENGTH 10,
       STU_ID   TYPE N LENGTH 8,
     END OF TY_CLASS.

*定义标准表类型
TYPES: TY_TAB_CLASS  TYPE TABLE OF TY_CLASS ,
       TY_TAB_CLASS1 TYPE STANDARD TABLE OF TY_CLASS ,
       TY_TAB_CLASS2 TYPE TABLE OF TY_CLASS WITH NON-UNIQUE KEY  TEA_ID STU_ID,
       TY_TAB_CLASS3 TYPE STANDARD TABLE OF TY_CLASS WITH NON-UNIQUE KEY TEA_ID STU_ID.

*定义排序表类型
TYPES: TY_TAB_CLASS4 TYPE SORTED TABLE OF TY_CLASS ,
       TY_TAB_CLASS5 TYPE SORTED TABLE OF TY_CLASS WITH UNIQUE KEY TEA_ID STU_ID,
       TY_TAB_CLASS6 TYPE SORTED TABLE OF TY_CLASS WITH NON-UNIQUE KEY TEA_ID STU_ID.

*定义哈希表类型
TYPES: TY_TAB_CLASS7  TYPE HASHED TABLE OF TY_CLASS ,
       TY_TAB_CLASS8 TYPE HASHED TABLE OF TY_CLASS WITH UNIQUE KEY TEA_ID STU_ID.

  • 参照自定义内部表类型再定义

*先定义结构
TYPES:BEGIN OF TY_CLASS,
       TEA_NAME TYPE C LENGTH 10,
       TEA_ID   TYPE N LENGTH 8,
       STU_NAME TYPE C LENGTH 10,
       STU_ID   TYPE N LENGTH 8,
     END OF TY_CLASS.

*定义标准表类型
TYPES: TY_TAB_CLASS      TYPE STANDARD TABLE OF TY_CLASS WITH NON-UNIQUE KEY TEA_ID STU_ID,
       TY_TAB_CLASS_COPY TYPE TY_TAB_CLASS ."参照已定义的标准表类型TY_TAB_CLASS再定义

*定义排序表类型
TYPES: TY_TAB_CLASS1      TYPE SORTED TABLE OF TY_CLASS WITH NON-UNIQUE KEY TEA_ID STU_ID,
       TY_TAB_CLASS2      TYPE SORTED TABLE OF TY_CLASS WITH UNIQUE KEY TEA_ID STU_ID,
       TY_TAB_CLASS_COPY1 TYPE TY_TAB_CLASS1, "参照已定义的排序表类型TY_TAB_CLASS1再定义
       TY_TAB_CLASS_COPY2 TYPE TY_TAB_CLASS1. "参照已定义的排序表类型TY_TAB_CLASS2再定义

*定义哈希表类型
TYPES: TY_TAB_CLASS3      TYPE HASHED TABLE OF TY_CLASS WITH UNIQUE KEY TEA_ID STU_ID,
       TY_TAB_CLASS_COPY3 TYPE TY_TAB_CLASS3 . "参照已定义的哈希表类型TY_TAB_CLASS3再定义

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/47211.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

python学习笔记(11)---(模块与包)

第九章 模块与包 1.模块(modules) (1)概念:将实现某一特定功能的代码放置在一个文件中,以便于其他程序进行导入使用,可以避免函数名、变量名的冲突,该文件称为模块,拓展…

RtspServer之LibRtsp解决闪退 新增鉴权(用户名密码登录)

编程语言:C 目标平台:arm(hi3519)注:因为代码是纯C语言按道理可以移植到各种平台 基础库:librtsp(存在功能补全,有一定的bug) 因为项目需求需要在海思平台实现IPC…

C++ Reference: Standard C++ Library reference: Containers: list: list: crend

C官网参考链接&#xff1a;https://cplusplus.com/reference/list/list/crend/ 公有成员函数 <list> std::list::crend const_reverse_iterator crend() const noexcept; 返回反向结束的常量反向迭代器 返回一个const_reverse_iterator&#xff0c;指向容器中第一个元素…

领悟《信号与系统》之 采样定理

采样定理采样定理一、采样定理结论二、奈奎斯特间隔和频率计算公式及例题&#xff1a;三、信号自然采样&#xff08;脉冲采样&#xff09;四、信号理想采样&#xff08;冲激采样&#xff09;采样定理 连续时间信号也叫模拟信号。在一定条件之下&#xff0c;模拟信号可以用该信…

LDAP客户端操作方法

本文章简单介绍LDAP Admin客户端的使用方法&#xff0c;客户端工具地址为&#xff1a; https://download.csdn.net/download/u013896064/87209312 1、前提 我使用的是Ubuntu的虚拟机安装了一个LDAP服务&#xff0c;初始化完成并配置好密码&#xff0c;本次例子里面我使用的U…

nodejs+vue音乐网站与分享平台

目 录 摘 要 I 1 绪论 1 1.1研究背景 1 1.2研究现状 1 1.3研究内容 2 2 系统关键技术 3 2.1 Spring Boot框架 3 2.2 JAVA技术 3 2.3 MYSQL数据库 4 2.4 B/S结构 4 3 系统分析 5 3.1 可行性分析 5 3.1.1 技术可行性 5 3.1.2经济可行性…

Windows OpenGL 图像色彩替换

目录 一.OpenGL 图像色彩替换 1.原始图片2.效果演示 二.OpenGL 图像色彩替换源码下载三.猜你喜欢 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES 基础 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES 特效 零基础 OpenGL…

[附源码]计算机毕业设计JAVA网上花店系统

[附源码]计算机毕业设计JAVA网上花店系统 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis M…

SpringBoot基于若依项目工时统计成本核算管理源码带文字教程

该系统是前后端分离的架构&#xff0c;前端使用Vue2&#xff0c;后端使用SpringBoot2。 技术架构 技术框架&#xff1a;SpringBoot2.0.0 Mybatis1.3.2 Shiro swagger-ui jpa lombok Vue2 Mysql5.7 运行环境&#xff1a;jdk8 IntelliJ IDEA maven 宝塔面板 本地搭建文…

MySQL数据库行级锁之间隙锁、临键锁

间隙锁 默认情况下&#xff0c;InnoDB在 REPEATABLE READ事务隔离级别运行&#xff0c;InnoDB使用 next-key 锁进行搜索和索引扫描&#xff0c;以防止幻读。 索引上的等值查询(唯一索引)&#xff0c;给不存在的记录加锁时, 优化为间隙锁 。索引上的等值查询(非唯一普通索引)&…

数据字典功能

我们在项目中会有很多的下拉框,这些下拉框都有一个特点,就是键值对的存在 实现方案: 直接硬编码写在html代码中, 缺点:新增修改需要修改代码为每个下拉框都设计一个表&#xff0c;然后提供CRUD功能 , 缺点 : 很多表,很多重复的CRUD代码使用数据字典的方式 ,使用字典类型表和字…

CTFHUB-web-SQL注入

整数型注入 字符型注入 得到数据库名 sqli http://challenge-f7a63a00793e62c6.sandbox.ctfhub.com:10800/?id-1 union select 1,database() 爆sqli数据库的数据表 爆flag表的所有列&#xff1a; http://challenge-f7a63a00793e62c6.sandbox.ctfhub.com:10800/?id-1 union s…

[Azkaban] No active executors found分析

启动AzkabanWebServer报如下错误: 点击进入 ActiveExecutors.setupExecutors发现调用的是 loadExecutors()继续深入 private ImmutableSet<Executor> loadExecutors() throws ExecutorManagerException {logger.info("Initializing executors from database.&q…

window 下 达梦数据库的备份和还原

DM 提供的各种工具进行备份还原与恢复的操作&#xff0c;包括 DIsql工具、DMRMAN 工具、图形化客户端管理工具 MANAGER 和 CONSOLE。 DIsql 工具用于执 行联机的数据备份与数据还原&#xff0c;包括数、归档备份据库备份、表空间备份与还原、表备份与 还原&#xff1b; DMRMA…

docker-compose安装nacos

文章目录一、安装nacos1.docker-compose.yml2.nacos数据库表结构3.docker-compose 构建运行4.检查nacos日志6.测试访问&#xff1a;TODO:二、nacos为注册中心&#xff1a;项目测试1.新建maven项目&#xff1a;2.配置pom.xml3.配置application.properties4.激活服务发现客户端5.…

117.Django-缓存redis

1. 概述 ​ 动态网站的基本权衡是&#xff0c;它们是动态的。每次用户请求页面时&#xff0c;Web服务器都会进行各种计算 - 从数据库查询到模板呈现再到业务逻辑 - 以创建站点访问者看到的页面。从处理开销的角度来看&#xff0c;这比标准的文件读取文件系统服务器要耗时多了。…

数据库、计算机网络,操作系统刷题笔记4

数据库、计算机网络&#xff0c;操作系统刷题笔记4 2022找工作是学历、能力和运气的超强结合体&#xff0c;遇到寒冬&#xff0c;大厂不招人&#xff0c;可能很多算法学生都得去找开发&#xff0c;测开 测开的话&#xff0c;你就得学数据库&#xff0c;sql&#xff0c;oracle&…

【POJ No. 1195】 矩形区域查询 Mobile phones

【POJ No. 1195】 矩形区域查询 Mobile phones 北大 OJ 题目地址 【题意】 移动电话的基站区域分为多个正方形单元&#xff0c;形成S S 矩阵&#xff0c;行和列的编号为0&#xff5e;S -1&#xff0c;每个单元都包含一个基站。一个单元内活动手机的数量可能发生变化&#xff…

[附源码]Python计算机毕业设计Django大学生考勤管理系统论文

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

区块链存储优化——从MPT树到KV存储

MPT树存储的优缺点 区块链如果采用MPT树存储&#xff0c;大概会有以下优点&#xff1a; 可用全局数据的根哈希做共识&#xff0c;数据篡改会被立即发现&#xff1b;可以查询任意历史区块对应时刻的所有数据&#xff1b;方便从指定区块开始同步数据&#xff0c;因为正如上面所…