SE24维护类、接口interface(如何看懂CO03事务码对应的abap代码)

news2024/11/19 2:36:07

我想读懂CO03这个事务码的代码。

也不是全都读懂,只要读懂其中一小部分就可以了。如下图: 记入文档的货物移动。

现在已经大概知道了这种SAP系统自带事务码的代码结构,因为我想看懂的部分,毕竟是其中最简单的部分-----ALV,如下图

这个报表,生产订单和物料凭证之间的关系在abap编程中,怎么找到(不要跟我说什么RESB\MARD\MSEG之间的关系了,我早就知道),我就想知道CO03这个事务码对应的系统自带的abap代码,究竟他妈怎么写出来的。

 

0

给大家简要说说,核心就是Function pool和function group 。一个事务码对应一个function pool 也就是program name

然后这个function pool下面挂了很多function module,这些function module应该是都归属于某一个function group

代码的结构 入口处 就是一堆INCLUDE statement,顺序执行,自己用SE80去看就行了。

既然我们要看的代码的重点在于CO03的ALV部分,根据以往的经验,显示ALV肯定要创建普通屏幕,准备数据,然后ALV_DISPLAY方法来显示就完了。

找到对应代码,发现还是挺复杂的:

直接给大家一个坐标:

functionpool : SAPLCOISOUTPUT ----LCOISOUTPUTUXX ---- LCOISOUTPUTU02 ---- CALL SCREEN 100 ---- MODULE pbo_0100 ----  

-list->set_table_for_first_display( -container ).

就是上述语句了

现在需要搞清楚的是:

1.这个set_table_for_first_display()方法是怎么定义的?

2.参数-container是个什么东东?

 

我们今天查看的interface名字是:IF_COIS_DISP_LIST

接口 IF_COIS_DISP_LIST

 

 

因为今天的主角是上面这个方法SET_TABLE_FOR_FIRST_DISPLAY 这个名字我们很熟悉,这是abap编程中常常用到的显示alv的方法

但是过去使用的方法和这个还是有本质的区别,过去我们一直在使用CL_GUI_ALV_GRID 类 中定义的该方法,而这一次我们是用的代码是IF_COIS_DISP_LIST接口 中定义的该方法。

如下图和上图,看到同样一个名字的方法,定义在 IF_COIS_DISP_LIST 接口 和 CL_GUI_ALV_GRID 类中的区别。

 

上面两个图,都是使用事务码SE24打开的。

接口IF_COIS_DISP_LIST 只是一个接口,接口的意思就是,它不是实现类,下面我们来看看这个接口的其中一个实现类:CL_COIS_DISP_LIST

 

看上图,毫无疑问 类 CL_COIS_DISP_LIST是接口IF_COIS_DISP_LIST的一个实现类。你肯定要问,你怎么发现接口和类之间的关系的呢?

是这样,我在进行调试的时候,双击 下图中 set_table_for_first_display()方法 因为这是一个接口的方法,因此,系统弹出一个窗体,让我选择,具体的实现类

 但是,上图看到,很显然,该接口的实现类,不只有一个,点开右侧的按钮,看看:

 确实有两个实现类,而下面看到的代码就是由CL_COIS_DISP_LIST类实现的接口IF_COIS_DISP_LIST

 

上图是静态代码,下面是我调试时候的看到的代码,看一模一样把?

看看下面的图片吧,这是我调试一个代码的时候的截图:下面才是我写这篇博文的目的

上述代码是 IF_COIS_DISP_LIST 接口  的方法SET_TABLE_FOR_FIRST_DISPLAY的一个 实现,其中的关键是 使用FIELD-SYMBOLS 和ASSIGN进行赋值

现在我们找到了 所调试的代码中调用的SET_TABLE_FOR_FIRST_DISPLAY方法的来源:CL_COIS_DISP_LIST类的方法,而不是我们自己写代码时候运用的CL_GUI_ALV_GRID类的方法。那么事实果真如此吗?

我们继续看IF_COIS_DISP_LIST 接口  的方法SET_TABLE_FOR_FIRST_DISPLAY的代码如下图:

 双击mo_grid,发现它是CL_COIS_DISP_LIST的一个成员对象,而这个成员对象的类型,如下图,恰恰是CL_GUI_ALV_GRID类

 也就是说,我们自己写的abap代码中常常使用的SET_TABLE_FOR_FIRST_DISPLAY方法和 所调试代码中使用的SET_TABLE_FOR_FIRST_DISPLAY方法,虽然是不同类下的方法,但是归根结底,都是CL_GUI_ALV_GRID类的方法,只是我们所调试的代码,创建了另一个接口,并实现,实现类封装了原来的方法。

 

 

 

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

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

相关文章

大疆mini 3 Pro 手工拍摄倾斜摄影照片, 利用WebODM 制作老房子的模型

最近比较着迷于无人机, 因此也研究了一些无人机图片的处理技术, 对于航空倾斜摄影的图片处理, 发现WebODM 这个开源软件确实不错, 利用手里的大疆mini 3 pro, 手动拍摄了一些关于家里的老房子的照片, 最后果…

MFC140.dll缺失的修复方法,安装MFC140.dll文件

大家好,今天我要和大家分享的是如何正确安装和使用MFC140.dll。MFC140.dll是一种常见的动态链接库文件,它是Microsoft Foundation Classes(MFC)的一部分,被广泛应用于Windows操作系统中的各种应用程序中。在本文中,我们将详细介绍…

什么是高度塌陷?

目录 高度塌陷 解决高度塌陷的方法 由于前面将高度塌陷和外边距重叠搞混,现在重新写一下高度塌陷 高度塌陷 在文档流中,父元素的高度默认是被子元素撑开的,也就是子元素多高,父元素就多高。但是当为子元素设置浮动以后&#xff…

win10的pycharm开发工具使用Jupyter的各种报错:环境问题

一、问题 在win10系统的pycharm开发工具使用Jupyter的各种报错,却一直解决不了。 我一度使用过购买云服务器、重装系统等等各种办法,都没能解决。 例如:在speech_processing.ipynb文件中 import librosa y, sr librosa.load(C:/Test/000…

基于Forcite模块的分子动力学研究药剂与矿物相互作用实例(一)

关键词:相互作用 MS Forcite 分子动力学 径向分布 笔名:杨过 Forcite模块是分子动力学计算的主要模块,研究范围广,可以对多种周期性体系进行计算分析,在矿物分选领域中主要是计算分析药剂与矿物相互作用&#xff0…

ROS2中的roscd命令

一、问题 最近在学习ROS2,环境搭建好后想查看下某个包的内容,在ROS里面习惯用roscd直接进入,但在ROS2里面没有这个命令 二、解决办法 目前网上的相关资料比较少,博客1中提到ROS2中需要使用colcon_cd来替代roscd,不过…

LeetCode 热题 100(五):54. 螺旋矩阵、234. 回文链表、21. 合并两个有序链表

题目一: 54. 螺旋矩阵https://leetcode.cn/problems/spiral-matrix/ 题目要求: 思路:一定要先找好边界。如下图 ,上边界是1234,右边界是8、12,下边界是9、10、11,左边界是5,所以可…

机器人TF坐标系变换与一些可视化工具的应用

TF坐标在ROS中是一个非常重要的概念,因为机器人在做日常操作任务的时候,对于其所在位置和朝向是需要时刻知道的,而机器人是由很多节点组成的协同任务,对于每个部件,我们需要知道它的位姿(位置和朝向),这使得…

Vue初识别--环境搭建--前置配置过程

问题一: 在浏览器上的扩展程序上添加了vue-devtools后不生效: 解决方式:打开刚加入的扩展工具Vue.js devtools的允许访问文件地址设置 问题二:Vue新建一个项目 创建一个空文件夹hrsone,然后在VSCode中打开这个空文件夹…

操作系统-笔记-第二章-进程同步与互斥

目录 二、第二章——【进程同步与互斥】 1、进程同步(异步) 2、进程互斥 & 共享 3、总结(互斥、同步) 4、进程互斥(软件实现) (1)单标志法——谦让【会让他们轮流访问、其…

李沐pytorch学习-卷积网络及其实现

一、卷积定义 卷积计算过程如图1所示,即输入矩阵和核函数对应的位置相乘,然后相加得到输出对应位置的数。 图1. 卷积计算过程 该过程可以形象地从图2中展现。 图2. 二维卷积示意图 二、代码实现 2.1 实现互相关运算 import torch from torch import n…

CANoe软件Tools中无法找到LDF Explorer

关联文章: LDF概述和LDF Explorer工具介绍 问题描述 使用CANoe软件的菜单栏Tools中无法找到LDF Explorer 原因分析/解决方案: ①查看CANoe硬件是否带LIN license,并且license在正常激活时间内。 ②查看CANoe是否配置了LIN通道,…

嵌入式设备应用开发(程序构建)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 编译是嵌入式开发很重要的一个环节。记得早年在上海一家通讯公司上班的时候,单位还专门有一个人维护编译脚本。当时用的是makefile,这位同学的主要工作就是替大家维护好各个项目的…

设备绑定驱动

头文件 驱动程序 应用程序 串口实现LED灯亮灭

postgresql 数据排序

postgresql 常见操作 排序总结 排序 -- 排序的时候null是最大的值(看一下) select employee_id,manager_id from employeesorder by manager_id desc;-- nulls first使null值排在第一位 select employee_id,manager_id from employeesorder by manager_id nulls first;-- null…

无涯教程-TensorFlow - 分布式计算

本章将重点介绍如何开始使用分布式TensorFlow,目的是帮助开发人员了解重复出现的基本分布式TF概念,如TF服务器。无涯教程将使用Jupyter Notebook分布式TensorFlow。 第1步 - 导入分布式计算必需的必要模块- import tensorflow as tf 第2步 - …

【Zorro】点击蒙层关闭模态框modal,用nzMaskClosable

使用 nzMaskClosable 例子&#xff1a; <nz-modalnzTitle"新增流程"[nzMaskClosable]"false"[nzWidth]"1200"[(nzVisible)]"visible"[nzCancelLoading]"saving"[nzOkLoading]"saving"(nzOnCancel)"onMo…

SQL Server Express 自动备份方案

文章目录 SQL Server Express 自动备份方案前言方案原理SQL Server Express 自动备份1.创建存储过程2.设定计划任务3.结果检查sqlcmd 参数说明SQL Server Express 自动备份方案 前言 对于许多小型企业和个人开发者来说,SQL Server Express是一个经济实惠且强大的数据库解决方…

LDF概述和LDF Explorer工具介绍

文章目录 一、LDF是什么?二、LDF实践创建LDF工程规范&发展历史一、LDF是什么? LDF:LIN description file - LIN总线描述性文件,使用LIN规范中定义的LIN配置语言,在汽车行业应用广泛。主要描述了: ①节点的定义:主节点和从节点(一主多从) 关联文章:LIN是什么? ②…