首页 > 其他分享 >ABAP基础语法1

ABAP基础语法1

时间:2024-11-05 16:47:45浏览次数:6  
标签:WRITE lv SY DATA 基础 语法 ABAP info TYPE

一、创建软件包(非必须)

通过事务码SE21创建软件包

1、填写包名,点击创建。注意包名用Z开头。

2、填写对包的简短描述,软件组织选择客户开发,点击确认。 

3、点击确认。 

4、检查信息,无误,点击保存。 

5、如果需要删除下挂没有程序的包,通过事务码SE80,搜索软件包,右键删除即可。

二、新建程序

通过事务码SE38进入创建程序页面。

1、填写程序名称,测试用程序一般用Y开头,自开发的程序一般用Z开头,点击创建。

 2、在弹出的对话框中填写程序标题,选择类型,点击保存。

3、 在弹出的对话框中选择软件包,点击保存,如果没有创建软件包可以点击创建本地对象。

4、点击确认。 

5、进入程序编写页面。

 三、编译运行及其他技巧

1、检查,可以检查程序错误。Ctrl+F2

2、激活,触发编译,必须激活之后才可以执行。Ctrl+F3

3、执行,执行程序。F8

通过下图可以找到三个按钮位置。

4、在输入部分关键字时,会出现提醒,此时按下Tab键即可关键字补全。

5、对于不了解的关键字,可以通过选择关键字之后按F1来查看具体用法等信息。

6、可点击程序美化器对代码格式进行优化。Shift+F1

设置格式美化器,点击实用程序->设置->ABAP编辑器->格式优化器,修改完成之后保存。

7、ABAP的注释

a、*注释该行,只能用于行首。
b、"(英文双引号),注释本行往后信息,可以不用于行首。
c、多行注释快捷键:Ctrl+,
d、取消多行注释:Ctrl+.

四、语法基础

1、WRITE表示输出。“/”表示换行,不要引号内使用。“.”表示语句的结束,不可省略。

 a、SKIP表示插入空白行,后面加上数字n表示插入n个空白行。
b、ULINE表示插入一条直线,不可以加数字表多根直线。
WRITE '字符串要用单引号?不能用双引号因为表示注释,双引号表示注释时可以不在行首'.
ULINE.
WRITE / 'WRITE表示输出,小数点表示结尾(必输),斜杠代表换行'.
ULINE.
WRITE: / '这样','可以','输出','多个变量'.
ULINE.
WRITE / : '这样','就会','每输出','一个变量就换行'.

此段代码运行结果显示: 

2、PARAMETERS表示允许用户在执行程序时输入数据。这些参数可以是文本框、选择框、日期选择器等控件,供用户在执行时填入值。 

*声明链接到屏幕上的输入字段*
PARAMETERS p_name TYPE C LENGTH 8.
PARAMETERS : p_age TYPE N  LENGTH 3,
             p_msg TYPE String.

WRITE : / 'p_name',p_name.
WRITE : / 'p_age',p_age.
WRITE : / 'p_msg',p_msg.

执行结果,输入完成之后点击执行即可显示输入结果。 

 3、DATA 变量名 <TYPE 变量类型> <LENGTH 变量长度> <VALUE 默认值>。

只需要对C、N、X、P类型的变量定义长度。具体类型定义可参考:ABAP 基本数据类型

变量可以直接=赋值,也可以用MOVE x TO y 给y赋值x。
*定义变量
*     变量名称    变量类型和长度 变量类型是n(数字)长度是10
DATA lv_nur TYPE n LENGTH 10.
lv_nur = 10."变量可以直接赋值
WRITE lv_nur."由于变量长度是10,输出的时候会在前面填0输出十位
WRITE / lv_nur NO-ZERO."不输出0

MOVE 888 TO lv_nur."也可以用MOVE x TO y 对y赋值
SKIP 3."插入n个空白行
Uline."插入一条线 只能插入一行,不能像SKIP那样用
WRITE lv_nur NO-ZERO.

 此段代码运行结果显示: 

四、系统变量

系统变量都是SY-的形式,常用系统变量如下面代码所示。可以将这些值赋给其他变量。

*系统变量*
WRITE: / 'SY-SUBRC',SY-SUBRC,"系统执行指令之后是否成功,0-成功,其他-有问题
       / 'SY-DATUM',SY-DATUM,"系统当前日期
       / 'SY-UZEIT',SY-UZEIT,"系统当前时间
       / 'SY-TABIX',SY-TABIX,"当前在内表的第几行
       / 'SY-INDEX',SY-INDEX,"当前循环的次数
       / 'SY-LANGU',SY-LANGU,"系统登录语言
       / 'SY-MANDT',SY-MANDT,"当前的集团代码
       / 'SY-TCODE',SY-TCODE,"当前的TCODE
       / 'SY-UNAME',SY-UNAME."当前登陆账号

 此段代码运行结果显示:  

五、时间类型变量

1、日期:日期可以直接赋值,按照年月日格式(YYYYMMDD),对于日期要加上''引号。输出的时候可以调整格式,也可对日期进行加减法运算,单位是天。

*日期的定义和输出*
DATA lv_date TYPE D.
lv_date = SY-DATUM."等于当前系统时间,参考系统变量
WRITE :'lv_date:',lv_date,/
       'lv_date DD/MM/YYYY:',lv_date DD/MM/YYYY,/"可以通过这种方式进行输出格式调整
       'lv_date YYMMDD:',lv_date YYMMDD.

*日期可以直接加减*
DATA tomorrow TYPE D.
tomorrow = lv_date + 1."日期按照天数进行加减
WRITE / tomorrow DD/MM/YYYY.

DATA past TYPE D.
past = lv_date - 365."日期按照天数进行加减
WRITE / past DD/MM/YYYY.

 此段代码运行结果显示:  

 2、时间:时间可以直接赋值,按照时分秒格式(HHMMSS),时间要加上''引号。输出的时候可以调整格式,也可对时间进行加减法运算,单位是秒。

write后的数字只是表示字符串长度,太短输出不了,没有其他含义,可以自己试试。

*时间的定义和输出*
DATA lv_time TYPE T.
*lv_time = 162430.
lv_time = SY-UZEIT."使用系统时间定义
WRITE :  lv_time."两个下横线
WRITE : /(60) lv_time USING EDIT MASK 'Now time is  __:__:__'."两个下横线

DATA future TYPE T.
future = lv_time + 60."按秒算的 一分钟
WRITE : /(30) future USING EDIT MASK 'Future time is  __:__:__'.

DATA past TYPE T.
past = lv_time - 3600."按秒算的 一个小时
WRITE : /(25) past USING EDIT MASK 'Past time is  __:__:__'.

  此段代码运行结果显示:  

3、时间戳:按照系统当前日期+时间组成时间戳。

*时间戳 日期+时间*
DATA lv_timestamp TYPE timestamp.
GET TIME STAMP FIELD lv_timestamp."赋值当前系统时间给时间戳
WRITE lv_timestamp.
WRITE : / '带有Time Zone(时区)的显示',lv_timestamp TIME ZONE SY-ZONLO.
WRITE / SY-ZONLO."当前系统时区

  此段代码运行结果显示:   

六、引用类型 

DATA 变量名 TYPE REF TO 变量类型 <VALUE IS INITAIL>.

 ABAP中的引用类型区别与C/C++等,ABAP中的引用类型并不像C++中的引用(&)那样用于创建别名,而是通过 DATA 关键字和引用类型声明来创建引用。引用本身只存储内存地址,并且使用时不会直接修改原始数据的内容。只能在VALUE之后添加指定的IS INITIAL用于检查引用是否为NULL或者未zhi'xinag'ren'he

*引用类型--参考变量*
DATA ref_1 TYPE REF TO I."先定义类型,没有分配内存空间
CREATE DATA ref_1."动态分配内存空间,ref_1 现在指向一个内存中的整数对象
ref_1->* = 888."通过 ->* 语法来访问 ref_1 指向的内存空间,且与变量名之间不能有空格
WRITE ref_1->*."输出必须这样写,表示对应的内存地址里面的内容

此段代码运行结果显示:  

七、常量 

CONSTANTS 常量名 <TYPE 常量类型> VALUE 默认值

注意这里的默认值是必填的

与其他语言类似,常量的值不可修改。

*常量*
CONSTANTS cv_num TYPE I VALUE 5.
WRITE : 'cv_num','=',cv_num.

此段代码运行结果显示:   

八、结构

此概念与C/C++中的结构体相似,它们都用于定义包含多个不同数据类型字段的复合数据类型。

但是在取结构中的某一个值的时候不是用“.”,而是用“-”。

1、常量的结构:

结构中的每一个常量都需要赋一个默认值。

CONSTANTS : BEGIN OF cs_info,
  name TYPE C LENGTH 3 VALUE 'VIA',
  age TYPE I VALUE 5,
  bir TYPE D VALUE '20241105',
  msg TYPE String VALUE '当用常量结构体时,每个值都需要赋一个默认值',
  END OF cs_info.
ULINE.
WRITE : / '姓名',cs_info-name,/
        '年龄',cs_info-age,/
        '生日',cs_info-bir,/
        '信息',cs_info-msg.

此段代码运行结果显示:    

 2、变量的结构:

*定义,类似于C的结构体*
TYPES : BEGIN OF ty_info,
  name TYPE C LENGTH 8,
  age TYPE I,
  bir TYPE D,
  msg TYPE String,
  END OF ty_info.

*使用,区别为是用 - 来表示结构体中的变量而不是.*
DATA ls_info TYPE ty_info.
ls_info-name = 'VIA'.
ls_info-age = 23.
ls_info-bir = '22221122'.
ls_info-msg = '这是对VIA的描述'.
WRITE : '姓名',ls_info-name,/
        '年龄',ls_info-age,/
        '生日',ls_info-bir,/
        '信息',ls_info-msg.

 此段代码运行结果显示:   

标签:WRITE,lv,SY,DATA,基础,语法,ABAP,info,TYPE
From: https://blog.csdn.net/qq_55411102/article/details/143509579

相关文章

  • 实验3 类和对象_基础编程2
    1.实验任务1button.hpp1#pragmaonce2#include<iostream>3#include<string>4usingstd::string;5usingstd::cout;6//按钮类7classButton{8public:9Button(conststring&text);10stringget_label()const;11......
  • 计算机组成原理基础知识(二)
    来源:https://blog.csdn.net/weixin_47180815/article/details/125496560?fromshare=blogdetail&sharetype=blogdetail&sharerId=125496560&sharerefer=PC&sharesource=rxzyyyyyy&sharefrom=from_linkn位定点小数、整数的取值范围溢出判断1、采用一位符号位2、采用双符......
  • 黑马PM-营销中心-运营基础
    运营基础知识营销中心的功能......
  • 实验3 类和对象_基础编程2
    任务1button.hpp1#pragmaonce23#include<iostream>4#include<string>56usingstd::string;7usingstd::cout;89//按钮类10classButton{11public:12Button(conststring&text);13stringget_label()const;1......
  • 大模型经典著作《大语言模型基础与前沿》
    介绍《大语言模型基础与前沿》是由美国明尼苏达大学双城分校电子与计算机工程博士熊涛所著。熊博士曾在多家中美知名高科技公司担任高级管理职位和首席科学家,在人工智能的多个领域,包括大语言模型、图神经网络等从事研发和管理工作多年。本书深入涵盖大语言模型的广泛主题......
  • 鸿蒙HarmonyOS(ArkTS基础-1)
    文章目录HarmonyOS鸿蒙开发ArkTS语言1.初识ArkTS语言a.ArKTS是什么b.ArkTS的编程规范c.从Ts到ArkTS的注意点2.ArkTS的基本语法a.声明b.类型c.运算符d.语句HarmonyOS鸿蒙开发(本文档是在鸿蒙开发者文档的基础上,选取了最常用的一些关键语法,以及一些注释,可......
  • 新能源行业必会基础知识-----电力现货市场理论篇-----电力市场概述-----电力现货市场
    新能源行业必会基础知识-----电力现货市场理论篇-----主目录-----持续更新https://blog.csdn.net/grd_java/article/details/143364261这本书是2023年出版的,是当下了解国内电力市场最好的途径了。还是推荐大家买来这本书进行阅读观看,最好作为随身携带的查阅工具书。内......
  • 了解病毒木马(非常详细),零基础入门黑客,看这篇就够了!
    1、病毒木马是什么病毒木马都属于恶意软件,病毒会自我复制,木马则擅长伪装。2、病毒木马有哪些(1)破坏病毒:如熊猫烧香,以破坏计算机为目的,让计算机不能正常使用。(2)勒索病毒:本质是加密软件,被不法分子用于勒索。2017-2018年特别猖獗。(3)挖矿病毒:虚拟货币,通过计算资源获得。通......
  • 300个网络安全软件和在线工具(归类版)(非常详细),零基础入门到精通,看这一篇就够了
    系统下载1、KALI安装版https://pan.quark.cn/s/483c664db4fb2、KALI免安装版https://pan.quark.cn/s/23d4540a800b3、下载所有Kali系统https://pan.quark.cn/s/7d8b9982012f4、KALI软件源https://pan.quark.cn/s/33781a6f346d5、所有Linux系统https://pan.quark.c......
  • 中国十大网络安全公司(非常详细),零基础入门到精通,看这一篇就够了
    文章目录前言1、深信服科技股份有限公司2、奇安信3、启明星辰信息技术集团股份有限公司4、天融信(南洋股份)5、美亚柏科6、蓝盾股份7、绿盟科技8、任子行9、安恒信息10、山石网科零基础网络安全学习计划学习路线图大纲总览学习计划阶段一:初级网络安全工程师阶段二:中级or高......