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

news/2025/2/23 2:34:03/

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

💬原文地址: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.ppmy.cn/news/281.html

相关文章

【C++】特殊类的设计

目录 前言 一、请设计一个类,不能被拷贝 二、请设计一个类,只能在堆上创建对象 三、请设计一个类,只能在栈上创建对象 四、请设计一个类,不能被继承 五、请设计一个类,只能创建一个对象 1、设计模式 2、单例模…

火山引擎 DataLeap 的 Data Catalog 系统公有云实践

Data Catalog 通过汇总技术和业务元数据,解决大数据生产者组织梳理数据、数据消费者找数和理解数的业务场景。本篇内容源自于火山引擎大数据研发治理套件 DataLeap 中的 Data Catalog 功能模块的实践,主要介绍 Data Catalog 在公有云部署和发布中遇到挑战…

[附源码]Python计算机毕业设计Django-大学生健康档案管理

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

计算机组成原理习题课第三章-1(唐朔飞)

计算机组成原理习题课第三章-1(唐朔飞) ✨欢迎关注🖱点赞🎀收藏⭐留言✒ 🔮本文由京与旧铺原创,csdn首发! 😘系列专栏:java学习 💻首发时间:&…

Effective C++条款17:以独立语句将newed对象置入智能指针

Effective C条款17:以独立语句将newed对象置入智能指针(Store newed objects in smart pointers in standalone statements)条款17:以独立语句将newed对象置入智能指针1、使用对象管理资源仍然会出现资源泄漏的用法2、智能指针资源…

MySQL纯代码复习(下)

前言 本文章的语言描述会比上篇多一些 数据库的创建修改与删除 标识符命名规则 数据库名、表名不得超过30个字符,变量限制为29个必须只能包含A-Z,a-z,0-9,_等63个字符数据库名、表名、字段名等对象名中间不要包含空格同一个My…

[附源码]SSM计算机毕业设计学生档案管理系统JAVA

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

FRED应用:激光二极管的模拟

简介 当提及模拟激光二极管时,FRED软件具有极大的灵活性。在这篇应用笔记中,将会描述简单到详细的激光光源模型。最基本的模型是高斯TEM0,0模。更高级的模型包括在束腰上偏移和发散中的像散光束。激光也可以使用其M2因子表示。最后,可以创…