SAP/ABAP(二)

news2024/11/26 13:38:36

一、循环结构

*&---------------------------------------------------------------------*
*& Report ZDEMO_LIMING01
*&---------------------------------------------------------------------*
*&作者:黎明
*&---------------------------------------------------------------------*
REPORT zdemo_liming01.
*1while循环实现输出0-7
DATA lv_a TYPE i.
lv_a = 0.

WHILE lv_a < 8. "条件
  WRITE: / 'This is line:',lv_a. "执行的语句
  lv_a = lv_a + 1.
ENDWHILE.

*2do循环实现输出0-7
lv_a = 0.
DO 8 TIMES. "指定循环的次数
  WRITE: / 'Do this is line:',lv_a.
  lv_a = lv_a + 1.
ENDDO.

*3、嵌套循环
DATA: lv_a1 TYPE i VALUE 0,
      lv_a2 TYPE i VALUE 0.
DO 2 TIMES.
  lv_a1 = lv_a1 + 1.
  WRITE: / 'Outer',lv_a1.
  DO 5 TIMES.
    lv_a2 = lv_a2 + 1.
    WRITE: / 'Inner',lv_a2.
  ENDDO.
ENDDO.

*跳出循环三个条件
DO 15 TIMES.
  IF sy-index = 5.
    CONTINUE."终止当前循环,跳到下次循环
    EXIT."终止所有循环
  ENDIF.
  CHECK sy-index = 4."有条件的执行后面的语句
  WRITE: / 'Hello',sy-index.
ENDDO.

二、条件判断

*1、条件判断
DATA lv_title1 TYPE c LENGTH 20.
lv_title1 = 'abap'.
IF lv_title1 = 'abap'.
  WRITE: / 'true'.
ELSE.
  WRITE: / 'false'.
ENDIF.

*2、复杂的条件判断(方式一)
DATA: lv_c1 TYPE c LENGTH 20 VALUE '2023',
      lv_c2 TYPE c LENGTH 20 VALUE 'ABAP',
      lv_c3 TYPE c LENGTH 20 VALUE '35'.

IF lv_c1 = '2023'.
  IF lv_c2 = 'ABAP'.
    IF lv_c3 = '35'.
      WRITE: / '今天不上班'.
    ENDIF.
  ENDIF.
ENDIF.

*复杂的条件判断(方式二 and or)
IF lv_c1 = '2023' AND lv_c2 = 'ABAP' AND lv_c3 = '35'.
  WRITE: / '今天不上班'.
ENDIF.

*3if elseif else

*4case when
**如果b1 = 36 今天上班
**如果b1 = 35 今天不上班
**如果都不满足,今天肯定不上班
DATA lv_b1 TYPE i VALUE 36.

CASE lv_b1.
  WHEN 36.
    WRITE: / '今天上班'.
  WHEN 35.
    WRITE: / '今天不上班'.
  WHEN OTHERS.
    WRITE: / '今天肯定不上班'.
ENDCASE.

在这里插入图片描述

三、异常处理(cx-root)

*异常处理(cx-root)
DATA: lv_i1  TYPE i VALUE 2,
      lv_i2  TYPE i VALUE 0,
      lv_i3  TYPE i,
      lv_msg TYPE string.
TRY.
    lv_i3 = lv_i1 / lv_i2.
    WRITE: / lv_i3.
  CATCH cx_root INTO DATA(lo_exref).
    lv_msg = lo_exref->get_text( ).
    WRITE: / lv_msg.
ENDTRY.

四、结构体,工作区

*结构体,工作区
**方法一 定义一个变量
DATA:
  BEGIN OF ls_student1,
    name TYPE c LENGTH 10,
    age  TYPE i,
  END OF ls_student1.

DATA: ls_student2 LIKE ls_student1.
ls_student2-name = '学生1'.
ls_student2-age = 18.
WRITE: / ls_student2-name,ls_student2-age.

**方法二 定义一个类型
TYPES: BEGIN OF lty_student,
         name TYPE c LENGTH 10,
         age  TYPE i,
       END OF lty_student.

DATA: ls_stu1 TYPE lty_student.
ls_stu1-name = '学生2'.
ls_stu1-age = 19.
WRITE: / ls_stu1-name,ls_stu1-age.

*给结构体赋值三种方式
DATA: ls_stu2 TYPE lty_student,
      ls_stu3 TYPE lty_student,
      ls_stu4 TYPE lty_student.
**=赋值
ls_stu2 = ls_stu1.
**用move to
MOVE ls_stu1 TO ls_stu3.
**MOVE-CORRESPONDING...to(建议使用)
MOVE-CORRESPONDING ls_stu1 TO ls_stu4.


*结构体继承
TYPES: BEGIN OF lty_xxs,
         name TYPE c LENGTH 10,
         age  TYPE i,
       END OF lty_xxs.
DATA: ls_xxs TYPE lty_xxs.

ls_xxs-name = '学生1'.
ls_xxs-age = 6.
WRITE: / '小学生信息:', ls_xxs-name, ls_xxs-age.

TYPES: BEGIN OF lty_dxs,
         zy TYPE string.
    INCLUDE STRUCTURE ls_xxs.
TYPES: END OF lty_dxs.

DATA: ls_dxs TYPE lty_dxs.
ls_dxs-zy = 'ABAP'.
WRITE: / '大学生信息:', ls_dxs-name,ls_dxs-age,ls_dxs-zy.

五、内表

*内表
**结构-》一个学生的信息
**内表-》一群学生的信息

**1、内表的定义
TYPES: BEGIN OF lty_xxs,
         name TYPE c LENGTH 10,
         age  TYPE i,
       END OF lty_xxs.
DATA: ls_xxs TYPE lty_xxs,
      lt_xxs TYPE STANDARD TABLE OF lty_xxs.

ls_xxs-name = '学生1'.
ls_xxs-age = 6.
APPEND ls_xxs TO lt_xxs.

ls_xxs-name = '学生2'.
ls_xxs-age = 6.
APPEND ls_xxs TO lt_xxs.

ls_xxs-name = '学生3'.
ls_xxs-age = 6.
APPEND ls_xxs TO lt_xxs.

DO 3 TIMES.
  ls_xxs-name = '循环相互来的'.
  ls_xxs-age = sy-index.
  APPEND ls_xxs TO lt_xxs. "append:追加
ENDDO.

ls_xxs-name = '插班生'.
ls_xxs-age = 7.
INSERT ls_xxs INTO lt_xxs INDEX 3. "在内表中间插入一条数据,在3前面插入

cl_demo_output=>display( lt_xxs )."打印输出

*读取内表数据
**根据索引读取数据
READ TABLE lt_xxs INTO ls_xxs INDEX 1.
WRITE: / '根据索引读取index 1 的学生',ls_xxs-name,ls_xxs-age.

**根据一些关键字读取数据
READ TABLE lt_xxs INTO ls_xxs WITH KEY name = '插班生'.
WRITE: / '根据关键字读取学生信息',ls_xxs-name,ls_xxs-age.

**二分查找法
**排序
SORT lt_xxs BY name ASCENDING.
READ TABLE lt_xxs INTO ls_xxs WITH KEY name = '插班生' BINARY SEARCH.
WRITE: / '根据二分查找读取学生信息',ls_xxs-name,ls_xxs-age.

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

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

相关文章

DBISAM Client-Server Crack

您是否需要经过验证且可靠的 BDE&#xff08;Borland 数据库引擎&#xff09;替代品&#xff1f; DBISAM是Delphi或CBuilder应用中替代BDE的标准。它已被部署到全球数千个地点&#xff0c;并且可以打上品牌&#xff0c;以至于没有人知道正在使用DBISAM。它是按开发人员许可的&a…

创建型模式 - 工厂模式

概述 需求&#xff1a;设计一个咖啡店点餐系统。 设计一个咖啡类&#xff08;Coffee&#xff09;&#xff0c;并定义其两个子类&#xff08;美式咖啡【AmericanCoffee】和拿铁咖啡【LatteCoffee】&#xff09;&#xff1b;再设计一个咖啡店类&#xff08;CoffeeStore&#xf…

Sa-Token + SpringBoot 实现登录鉴权

1. 技术选型 今天最近在做登录、授权的功能,一开始考虑到的是spring boot + spring security,但spring security太重,而我们是轻量级的项目,所以,spring security不适合我们。 而后考虑spring boot + shiro,但shiro自带的aop会影响spring boot的aop,所以,shiro也不适…

等保测评包过是真的吗?安全吗?

最近有小伙伴在问&#xff0c;等保测评包过是真的吗&#xff1f;安全吗&#xff1f;哪位大哥来解答一下&#xff1f; 等保测评包过是真的吗&#xff1f;安全吗&#xff1f; 【回答】&#xff1a;等级保护采用备案与测评机制&#xff0c;而非认证机制&#xff0c;因此不存在“包…

uni-app:常见组件view、text、icon

根据html&#xff1a;可知div是块级标签&#xff0c;span是行级标签 这里view类似于div&#xff0c;text类似于span&#xff0c;即 块级标签&#xff1a;view 行级标签&#xff1a;text、icon 类似效果 两个icon图标&#xff0c;置于第一排 两个view&#xff0c;分别位于第…

四维轻云地理空间数据在线协作管理平台为测绘行业用户解决了这些难题

测绘作为一个基础性行业&#xff0c;从大比例的地形图到铁路网、公路网的分布&#xff0c;再到互联网地图&#xff0c;测绘的身影随处可见。随着科技的不断发展与进步&#xff0c;无人机也成为测绘行业的一部分。通过无人机测绘技术能够获取高精度的影像数据并生成三维模型和点…

华菱电子冲刺创业板上市:计划募资6.5亿元,总经理为日本国籍

7月17日&#xff0c;深圳证券交易所披露的信息显示&#xff0c;已对山东华菱电子股份有限公司&#xff08;下称“华菱电子”&#xff09;发出第1轮审核问询函。目前&#xff0c;华菱电子在深圳证券交易所的审核状态已经变更为“已问询”。 根据公开信息&#xff0c;华菱电子于2…

WooCommerce适合企业电子商务吗?

目录 成功开展电子商务业务变得比以往任何时候都容易。市场上有几个现成的平台&#xff0c;完全有可能将一个初步的想法快速转变为在线贸易业务&#xff0c;并源源不断地收到订单。 什么是 WooCommerce&#xff1f; 为什么您应该考虑使用 WooCommerce 很灵活 重量轻且功…

一文读懂 MySQL 中的索引

文章目录 1. 索引概述1.1 索引概述1.2 优点1.3 缺点1.6 常见索引概念1.6.1 聚簇索引1.6.2 二级索引&#xff08;辅助索引、非聚簇索引&#xff09;1.6.3 联合索引 1.8 MyISAM索引的原理1.9 MyISAM 与 InnoDB对比1.10 索引的代价 2. 索引的创建与设计原则2.1 索引的声明与使用2.…

算法训练营第四十二天||● 01背包问题,你该了解这些! ● 01背包问题,你该了解这些! 滚动数组 ● 416. 分割等和子集

● 01背包问题&#xff0c;你该了解这些&#xff01; 二维dp数组 ● 01背包问题&#xff0c;你该了解这些&#xff01; 滚动数组 一维dp数组 dp[j] max(dp[j], dp[j - weight[i]] value[i]); ● 416. 分割等和子集 本题属于01背包问题的应用&#xff0c; 这道题目是要…

【EasyExcel】在SpringBoot+VUE项目中引入EasyExcel实现对数据的导出(封装工具类)

在SpringBootVUE项目中引入EasyExcel实现导入导出 一、引入EasyExcel 通过maven引入&#xff0c;坐标如下&#xff1a; <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel-core</artifactId><version>3.3.2</version…

Mysql 单表使用索引注意事项(避免失效)

Mysql 单表使用索引 1.尽量建全索引 查询的字段按照顺序在索引中都可以匹配到&#xff01; SQL中查询字段的顺序&#xff0c;跟使用索引中字段的顺序是有关系的。但是在不影响SQL执行结果的前提下&#xff0c;给你自动地优化。没有顺序限制了 2. 最佳左前缀法则 查询字段与…

ES系列--es进阶

一、系统架构 一个运行中的 Elasticsearch 实例称为一个节点&#xff0c;而集群是由一个或者多个拥有相同 cluster.name 配置的节点组成&#xff0c; 它们共同承担数据和负载的压力。当有节点加入集群中或者 从集群中移除节点时&#xff0c;集群将会重新平均分布所有的数据。 …

uniapp离线引入阿里巴巴图标

阿里巴巴图标地址 1.添加图标到购物车 2.点击购物车进入项目 3.下载到本地 4.解压后文件目录 5.放入项目目录中(比如说我经常放在common或者static下icon中) 6.在main.ts或者main.js中引入&#xff08;注意路径&#xff0c;用相对的也行&#xff09; import /static/iconfon…

qt和vue交互

1、首先在vue项目中引入qwebchannel /******************************************************************************** Copyright (C) 2016 The Qt Company Ltd.** Copyright (C) 2016 Klarlvdalens Datakonsult AB, a KDAB Group company, infokdab.com, author Milian …

Cisco学习笔记(CCNA)——Introduction to TCP/IP

Introduction to TCP/IP 常见协议 应用层协议 协议 端口号 描述 HTTP 80 超文本传输协议&#xff0c;提供浏览网页服务 Telnet 23 远程登录协议&#xff0c;提供远程管理服务 FTP 20、21 文件传输协议&#xff0c;提供互联网文件资源共享服务 SMTP 25 简单邮件传…

【个人笔记】Linux登录时要执行的文件与内建命令

Linux登录时要执行的文件 在刚登录Linux时&#xff0c;首先启动 /etc/profile 文件&#xff0c;然后再启动用户目录下的 ~/.bash_profile、 ~/.bash_login或 **/.profile**文件中的其中一个&#xff0c;执行的顺序为&#xff1a;/.bash_profile、 ~/.bash_login、 ~/.profile。…

使用基于自动化生成式 AI 的 Ansible-Lightspeed 服务高效开发 Ansible Playbook(附视频)

《OpenShift / RHEL / DevSecOps 汇总目录》 自动化生成式 AI 的 Ansible-Lightspeed 服务核心功能 Ansible-Lightspeed 是 RedHat 提供的一项自动化生成式 AI 的服务&#xff0c;它可以帮助 Ansible 开发人员更快、更好地开发 Playbook。除了自动生成 Playbook 内容外&#…

直播回顾|用户增长之路,如何兼具体验和点击率?

激活用户的关键在于深入理解产品功能、引导用户体验产品的核心价值。在这方面&#xff0c;推送功能就是简单而便捷的解决方案之一。通过推送活动和优惠消息&#xff0c;吸引用户点击&#xff0c;进而提升用户参与度和留存率。 在推送消息的过程中&#xff0c;我们可能会遇到这…

ROS节点通信Demo

0 开始之前 确保你已经安装了ROS (Robot Operating System)。 1 第一步&#xff1a; 创建一个ROS包 在开始编程前&#xff0c;我们首先创建一个新的ROS包(package)。移动到你的catkin workspace的 src 文件夹下&#xff0c;然后运行以下命令&#xff1a; cd ~/catkin_ws/sr…