SAP入门技术分享四:模块化程序

news2024/10/6 20:33:19

模块化程序

  • 1.子程序概要
  • 2.子程序定义
  • 3.子程序参数
    • (1)传递参数的方法
    • (2)定义参数类型
    • (3)参数与结构体
    • (4)参数与内表
    • 4.调用子程序
    • (1)调用程序内部子程序
    • (2)调用程序外部子程序
    • (3)动态调用子程序
  • 5.结束子程序
  • 6.临时动态子程序
  • 7.PERFORM ON COMMIT
    • (1)PERFORM ON COMMIT
    • (2)PERFORM ON ROLLBACK
    • (3)局部Macro(宏)
    • (4)全局Macro(宏)
    • 8.函数概要
  • 9.创建函数组
  • 10.函数
    • (1)属性
    • (2)传入参数
    • (3)传出参数
    • (4)传入/传出参数
    • (5)表参数
    • (6)例外处理
  • 11.RFC

1.子程序概要

  定义:把有具体功能的代码集合在一起的程序块,可以重复使用。

2.子程序定义

  FORM ENDFORM定义;
  PERFORM调用;
  命名:动词+宾语。

3.子程序参数

  实参:调用子程序时使用;
  虚参:在子程序中使用;
  分类:USING、CHANGING。
  例子:
在这里插入图片描述

(1)传递参数的方法

在这里插入图片描述
  Call by Value:使用USING关键字传递时与VALUE语句一起搭配使用。
在这里插入图片描述
  注:实参和虚参占有自己单独的内存空间,改变虚参的值不会影响实参。
  Call by Reference:使用CHANGING关键字传递参数的情况。
在这里插入图片描述
注:虚参没有自己的内存空间,只是在调用子程序时占用实参的地址,改变虚参的值会影响实参。
区别:若在子例程FORM语句中不使用VALUE语句,则USING与CHANGING语句功能是相同的,将USING代表传递数据,CHANGING代表传递数据后变更其值。
  为了避免发生实参值在调用子程序后不被修改的情况,当使用USING时要与VALUE语句搭配使用,无法修改实参值。
  Call by Value and Result:
在这里插入图片描述
  当CHANGING语句和VALUE语句搭配使用时,会修改实参值。

(2)定义参数类型

  子例程中的虚参可以利用TYPE与LIKE语句定义所有的ABAP数据类型。若不明确指定类型,则被定义为Generic类型,继承实参的技术属性。
  虚参的定义方法有如下三种:
在这里插入图片描述

(3)参数与结构体

  当结构体当作参数使用时,不仅能使用TYPE、LIKE语句定义,还可以使用STRUCTURE语句定义结构体类型。
在这里插入图片描述

(4)参数与内表

A.USING、CHANGING语句
  当子程序参数为内表时也可以使用关键字USING、CHANGING。
在这里插入图片描述
  若用TYPE ANY TABLE指定了参数,则在子例程中要改成动态形式。
  使用内表指定参数也有下列三种方法:
在这里插入图片描述
B.TABLES语句
  使用TABLES语句定义虚参,不支持相同的物理内存地址。
在这里插入图片描述

4.调用子程序

  调用子程序的方法有Internal、External两种。通过PERFORM语句既可以调用内部子程序,还可以调用其他程序的子程序。
在这里插入图片描述

(1)调用程序内部子程序

  只要用PERFORM语句指定FORM名就可以实现。

(2)调用程序外部子程序

  调用外部程序的子程序时首先要利用IF FOUND语句检查是否存在该子程序。
在这里插入图片描述

(3)动态调用子程序

  调用外部程序的子程序时可以动态地指定名字。

5.结束子程序

  用ENDFORM结束子程序,还可以利用EXIT、CHECK语句强制在执行过程中结束此子程序。
  遇到EXIT语句:直接跳出子程序。
  遇到CHECK语句:判断值为假时跳出子程序。
  例子:
在这里插入图片描述

6.临时动态子程序

  语法:
  
  可以用上面的语法创建子程序池,将子程序池的代码插入到内表中。
  常用:动态定义内表。
  例子:
在这里插入图片描述

7.PERFORM ON COMMIT

  如果调用子程序时使用ON COMMIT/ROLLBACK选项,则每当遇到COMMIT WORK或者ROLLBACK WORK语句时才执行此FORM。

(1)PERFORM ON COMMIT

  遇到COMMIT WORK时调用子程序。

(2)PERFORM ON ROLLBACK

  遇到COMMIT ROLLBACK时调用子程序。
  例子:
在这里插入图片描述

(3)局部Macro(宏)

在这里插入图片描述
  例子:
在这里插入图片描述

(4)全局Macro(宏)

  全局宏Macro在数据库表TRMAC中进行维护,经常使用的全局Macro中包含指定断点时用的BREAK语句。
在这里插入图片描述
  注:如果双击ABAP命令,出现下列消息,就意味着是全局Macro。
在这里插入图片描述

8.函数概要

  定义:函数是储存在中央库中的特殊全局子程序。
  内容:传入参数、传出参数、传入/传出参数表、例外处理。
  与子例程的区别:
在这里插入图片描述
  函数组:通过函数编辑器创建函数和函数组,则系统会自动生成主程序及共享程序。
  主程序名字自动由SAPL+函数组名组成,且函数组的INCLUDE主程序如下:
在这里插入图片描述

9.创建函数组

在这里插入图片描述

10.函数

(1)属性

在这里插入图片描述
在这里插入图片描述

(2)传入参数

在这里插入图片描述
在这里插入图片描述

(3)传出参数

在这里插入图片描述
在这里插入图片描述

(4)传入/传出参数

  与调用此函数的ABAP程序可以同时传入/传出参数。
在这里插入图片描述

(5)表参数

  表参数可以传递复数值。
在这里插入图片描述
在这里插入图片描述

(6)例外处理

在这里插入图片描述
在这里插入图片描述

11.RFC

  (1)目的:充当源系统和R/3系统的数据接口。
  (2)设置:创建函数时设置成远程启用的模块。
在这里插入图片描述

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

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

相关文章

vue npm link关联本地组件库

什么是 npm link 就是把你在本地开发好的文件做一个映射和链接,当你在 本地开发一个a项目,你的本地b项目想使用a项目下的组件 这时候就是需要进行npm link链接起来 a项目的运行效果 b项目的运行效果: 想要实现的效果:(在b项目上…

Oracle SQL Developer使用dbms_output.put_line显示输出

dbms输出 点击DBMS输出左侧的号,选择需要输出的数据库,点击确定 与步骤2选择相同数据库,右击数据库,选择打开SQL工作表(T) 在工作表中执行语句 declare --定义,相当于声明属性。t_a varchar2(20);--声明自定义属…

怎么写一篇计算机SCI论文初稿? - 易智编译EaseEditing

一、SCI论文的要求 SCI论文的核心是创新性。对于这个方面来说主要就是针对于论文的观点正确,文字通畅,逻辑严密,结构合理,结论有创新等等。 二、SCI论文格式规范 每一个SCI期刊都有自己特定的宗旨、栏目和专业定位,投…

TCP通信机制:三次握手、四次挥手、滑动窗口

欢迎关注博主 Mindtechnist 或加入【Linux C/C/Python社区】一起探讨和分享Linux C/C/Python/Shell编程、机器人技术、机器学习、机器视觉、嵌入式AI相关领域的知识和技术。 TCP通信机制1. TCP三次握手2. TCP四次挥手3. TCP连接与数据传输过程4. TCP滑动窗口机制5. server服务端…

这套设备管理方案助你效率10倍提升

车间工厂等货物人员密集场所,对消防安全的要求很高。消防设备管理自然是生产制造型企业的核心之一。消防设施的有效管理,既要保证日常巡检工作的有效性,又要在设备出现故障后及时响应。在此基础上还要对整体管理情况进行数据分析,…

振弦采集模块的各种参数操作

振弦采集模块的各种参数操作 固件版本读取 点击指令区【 读取版本】 按钮,读取当前连接模块的固件版本信息,读取到的版本信息显示于按钮右侧。 VMTool 会根据读取到的版本不同对功能和界面做出调整,故此, 在使用 VMTool 时&#…

Workfine新手入门:给图片加水印

哈喽,我是办公助手小W,又到了跟大家分享办公小技巧的时候啦! 最近Workfine5.0最新版本上线后,一直有人问到底有啥新功能啊?与往期版本有何不同呢?小W亲自去体验了一番,最大的一个亮点就是新增了…

90、【树与二叉树】leetcode ——104. 二叉树的最大深度:层次遍历+DFS+子问题分解(C++版本)

解题思路 原题链接:104. 二叉树的最大深度 解题思路 1、迭代法:层次遍历BFS /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), rig…

Blender 物理属性 (二)布料和碰撞

文章目录添加与去除布料查看布料效果布料的预设属性(模拟不同的布料效果)布料与其他物体碰撞布料的自交叉问题布料钉固制作一个窗帘添加与去除布料 1 添加:物体模式选中一个物体,属性栏/物理属性(蓝色圆圈),选择布料 …

程序员转项目经理,需要拒绝的3大习惯。

程序员转项目经理并不容易,需要我们转变思路,并拒绝我们日常3大习惯。 1、拒绝单打独干,转而关注与干系人的沟通协调。 做为技术人员,在确定自我任务后,独自敲代码就好,具有较强的单干性质。而作为项目经理…

前端项目代码统一规范-从eslint、stylelint、husky、lint-staged、commitlint和配合vscode插件一一道来

目前在多人项目开发时发现很多代码不规范的地方,因为每个项目都是多人维护,再加上各种历史代码的不同风格,这些情况很容易就造成了代码规范落地难,项目中出现大量低质量代码,代码格式难统一。所以采用 eslinthuskystyl…

【Vue】移动端项目流程

移动端项目 O 项目技术栈说明 脚手架: Vite 3 还有 vue-cli - 底层 webpack 脚本:typescript路由:vue-router4状态管理器: vuex4 还有 pinia 组件库:vant3.6.3组件API:选项式API 一、Vite 脚手架的使用 …

PostgreSQL复习记录(一):Win10成功安装postgresql14.6的过程记录

到官网下载页面选择合适的版本进行下载,我这里选择Windows版本,跳转到Download PostgreSQL后选择PostgreSQL Version 14.1 Windows x86-64的版本。 1,启动安装程序: 如果只是练习使用,安装时这里可以取消勾选Stack Bu…

戴尔电脑开机屏幕花屏无法启动解决方法

戴尔电脑开机屏幕花屏无法启动解决方法。有用户使用的戴尔电脑开机的时候出现了一些问题,电脑屏幕变成了满屏的马赛克花屏,不能正常启动到桌面页面上了。那么这个问题要如何去做出解决,一起看看操作的方法吧。 准备工作: 1、U盘一…

初步认识 Babel

Babel 官网:https://www.babeljs.cn/docs/1.AST 抽象语法树AST 抽象语法树,是 Babel 的核心在 JavaScript 的世界中,你可以认为抽象语法树(AST)是最底层下面会通过拆解一个普通函数,解释下什么是 AST 抽象语…

node服务从http升级到https(阿里云免费ssl)

升级原因1.各大搜索引擎中,https的网页的权重比一般的http的网页权重要高。2.从用户体验的角度,一个老是被浏览器提醒该网页不可信的网页,总不会让用户感到安心所以将网站从http升级为https是很有必要的用户配置首先介绍一下这次升级的网站使…

拓扑排序 (算法思想+图解+模板+练习题)

拓扑排序 有向无环图一定是拓扑序列,有向有环图一定不是拓扑序列。 无向图没有拓扑序列。 首先我们先来解释一下什么是有向无环图: 有向就是我们两个结点之间的边是有方向的,无环的意思就是整个序列中没有几个结点通过边形成一个圆环。 下图就是一个…

数据分析:通俗易懂假设检验

导读 大多数关于假设检验的教程都是从先验分布假设开始,列出一些定义和公式,然后直接应用它们来解决问题。然而,在本教程[1]中,我们将从第一原则中学习。这将是一个示例驱动的教程,我们从一个基本示例开始,…

Web(五、六)

JavascriptDOM* 功能:控制html文档的内容* 获取页面标签(元素)对象:Element* document.getElementById("id值"):通过元素的id获取元素对象* 操作Element对象:1. 修改属性值:明确获取的对象是哪一个?查看API文…

BI工具将数据分析拉下神坛

以前,数据分析是一件比较有门槛的事,它不仅要求数据分析师具备一定的数据分析思维和方法经验,还要求数据分析师们熟练使用各种复杂的数据分析工具,要求他们掌握Python、R、SQL等。但随着BI工具的发展,多维自助分析逐渐…