ABAP开发-12、Dialog屏幕开发_1

系列文章目录


文章目录

  • 系列文章目录
    • @[TOC](文章目录)
  • 前言
  • 一、Dialog屏幕概览
  • 二、界面
    • 1、界面-界面中的事件块
    • 2、界面-创建界面
    • 3、界面- 属性
    • 4、界面-元素清单
    • 5、界面-Screen Layout Designer
    • 6、界面- 参照创建
    • 7、界面- 常用关键字
    • 8、界面- 数据处理逻辑
    • 9、界面- Module执行顺序
    • 10、界面- 程序事务代码
  • 三、界面元素
    • 1、按钮
    • 2、文本/输入框控件
    • 3、数据检查
    • 4、单选按钮
    • 5、复选框
    • 6、框BOX控件
    • 7、GUI STATUS/GUI TITLE
    • 8、Tabstrip控件
    • 9、使用向导创建Tabstrip Control
    • 10、标签页的修改
    • 11、表格控件TABLE CONTROL
    • 12、使用向导创建TABLE CONTROL
    • 13、Table Control列的修改
  • 四、F4的实现
  • 总结

前言


一、Dialog屏幕概览

  • Report程序:1类型程序
    • 制作报表,数据列表输出(Data List)输出
  • Online程序:M类型程序
    • 查询数据,录入,修改,删除等
    • Module Pool程序:以Moudle Pool形态进行业务流程的逻辑处理
    • Online程序:强调用Online Transaction来处理业务流程进行过程
    • Screen程序:主要使用Screen(屏幕对象),并实现见面间Flow Logic(流逻辑)
  • Online程序的主要对象
    • 界面(Screen)
    • 模块池(Modul Pool)
      • 全局字段(Global Data):声明模块池中所有模块都可使用的数据-TOP
      • PBQ模块(PBO Modules):屏幕输出前调用的模块-O01
      • PAI模块(PAI Modules):相应用户输入而调用的模块-I01
      • 子程序(Suboutines):可以在模块中任何位置调用的子程序-F01
    • 菜单(GUI Status)
    • 标题(GUI TITLE)
    • 事务代码(Transaction Code)
  • 用户可以访问的部分是Screen,用户对界面进行操作,相应的操作是通过Screen中的逻辑流控制,而数据声明和界面逻辑代码实现程序是在ABAP程序中

二、界面

  • SAP的屏幕开发
  • ABAP list代码实现(例如:选择界面的创建)
    • Report程序直接执行即可显示查询界面或结果界面
  • Dialog Screen绘制:较复杂,界面丰富
    • Online程序想要显示查询或结果界面必须建立Screen
    • 事件驱动程序
  • 屏幕功能开发
    • ABAP程序不能直接定义Screen,要通过Screen Painter这个工具来实现,界面元素的设定通过Screen Layout Designer来实现
    • 界面的设定:属性/大小/模式
    • 界面中的元素:描述或帮助,可以进行有效性检查
    • 界面中可以设置独立的Menu Bar或Title,点选按钮或回车可以触发相应功能
    • 功能实现位置:逻辑流中设定
  • Online程序不能备=被直接执行,必须通过事务代码,指定界面执行

1、界面-界面中的事件块

  • 用户访问界面,对界面进行操作,相应的操作是通过逻辑流控制的,也就是Screen Painter中定义Flow Logic的位置
  • 4个事件块:
    • PRECESS BEFORE OUTPUT
      • PBO中的处理逻辑控制界面输出前处理,如更改一些元素的值或属性
    • PROCESS AFTER INPUT
      • PAI中的处理逻辑控制用户对界面操作后的处理,如按回车对输入数据进行检查
    • PROCESS ON HELP-REQUEST
      • Field Help的实现
    • PROCESS ON VALUE-REQUEST
      • 输入帮助Search Help的实现(F4帮助)
  • 界面定义的步骤:
    • 创建界面,在Screen Attributes中定义Screen的属性
    • 在Screen Layout Designer和Element List中定义界面中的元素(位置及属性)
    • 在Screen Flow Logic中设定在Screen显示的逻辑处理和显示后对界面进行相应操作的逻辑处理

2、界面-创建界面

  • 界面编号的选取
    • 0000~9999
    • 其中1000和1010之间的屏幕编号为ABAP字典表的维护屏幕以及可执行程序的标准选择屏幕而预留
  • 属性
    • 设定屏幕基本属性
  • 元素清单
    • 包含界面中定义的所有构成元素
    • 可编辑元素属性
    • OK_CODE(要定义接受变量)
  • 流逻辑
    • 代码定义部分
  • 点击布局
    • 可以进入屏幕制作器SCREEN LAYOUT DESIGNER

3、界面- 属性

  • 短文本
  • 界面类型
    • 标准界面
    • 子界面
    • 对话框
    • 选择界面
  • 下一屏
    • 当前界面输出结束时出现的界面
    • 为空:程序结束
    • 程序中调用其他界面:调用优先
  • 行/列
    • 设置界面大小

4、界面-元素清单

文本字段TEXT FIELD:只能显示,不能修改
输入域INPUT/OUTPUT FIELD:显示或输入数据
复选框CHECKBOX:X:选中,空:未选中
单选按钮RADIO BUTTON:必须分组,组内只能选一个
按钮OUSHBUTTON:必须定义功能码FUNCTION CODE
TAB分页控制/创建向导:一个界面中显示多个标签页/标签页创建向导(自动生成代码)
框架控件BOX:将关联元素组成一个组
子屏幕区域SUBSCREEN AREA:可以在子界面区域连接其他界面
数据表格控件/创建向导TABLE CONTROL:以表单形式显示数据列表/表格创建向导(自动生成代码)
用户定义控件CUSTOM CONTROL:类的容器,实现ABAP object使用
状态图标 STATUS ICON:显示ICON

5、界面-Screen Layout Designer

  • 创建元素
    • 选中要创建的元素,在屏幕中拖拽生成
  • 修改属性
    • 双击
  • 元素的复制、粘贴、转换
    • 在元素上点击右键,在清单中选择

6、界面- 参照创建

  • 参照数据字典/程序字段创建屏幕元素
    • 选择界面中按钮
    • 从数据字典中获取
    • 从程序中获取

7、界面- 常用关键字

MODULE:调用DIALOG MODULE
FIELD:指Element List 中特定的Screen field,即可以判断Screen Field 的值或状态是否发生变化,在PAI中对相关Field进行控制时,一定要使用的关键字
ON:Field …ON(Field 的连接词)
value:Field …value(Field 的连接词)
CHAIN:CHAIN可以将多个FIELD捆绑成一个同时进行管理
ENDCHAIN:结束CHAIN
CALL:调用(Call a Subscreen)
LOOP:开始处理Screen Table
ENDLOOP:结束Screen Table 的处理

8、界面- 数据处理逻辑

在这里插入图片描述

9、界面- Module执行顺序

PROCESS BEFORE OUTPUT."PBO
MODULE A.
MODULE B.PROCESS AFTER INPUT."PAI
MODULE C.
MODULE D.

执行MODULE A->执行MODULE B->将数据从ABAP工作区传到Screen工作区->显示界面->点击回车->将数据哦才能够Screen工作区传到ABAP工作区->执行MODULE C->执行MODULE D

10、界面- 程序事务代码

右键程序-》创建-》事务
输入事务代码、描述、选择程序、定义屏幕编号

三、界面元素

1、按钮

在屏幕编辑器中定义一个按钮
名称、文本、功能码
在PAI中处理结果

2、文本/输入框控件

  • TEXT控件:在适宜位置定义,定义名称、描述、显示长度
  • INOUT/OUTPUT控件
    • 显示效果是否可输入/必输项设置
    • 2D/3D显示
    • 下拉框设置/可接受负数值设置

3、数据检查

一些程序中,设置输入框后,需要根据用户的输入,进行有效性的检查等,DIALOG中提供了针对字段的检查

  • 针对某个字段
    • FIELD F1 MODULE M1 [ON REQUEST]
  • 针对多个字段同时检查
CHAIN.
FIELD F1.
FIELD F2.
FIELD F3.
MODULE M1 [ON CHAIN-REQUEST].
ENDCHAIN.

4、单选按钮

没有关联功能码,本身不触发PAI事件
成组设置功能码,可以触发
设置多个单选按钮,拖拽选中,右键建组
默认为第一个选中
在这里插入图片描述

5、复选框

默认情况下为不选中
可以关联功能码实现功能
在这里插入图片描述

6、框BOX控件

创建BOX控件,通过拖拽框将多个控件包含在BOX控件内
成组移动
设置隐藏/显示属性,需要设置GROUP字段

7、GUI STATUS/GUI TITLE

  • 按钮
    • 在程序中定义GUI STATUS
    • 在PBO中创建MODULE,用SET PF-STATUS语句设置按钮
    • 在PAI中根据SY-UCOMM的值进行判断
      • 使用OK_CODE/OK_SAVE
    • …EXCLUDING…一个字段的内表
  • 标题
    • 在程序中定义GUI TITLE
    • 在PBO中创建MODULE,用SET TITLEBAR语句设置标题
    • …with…(&1占位符)

8、Tabstrip控件

Tabstrip可以实现在某个界面中,通过tab页的形式来显示多个界面
构成:按钮及子界面区域

9、使用向导创建Tabstrip Control

创建Tabstrip Control
Tabstrip Name: Tabstrip Control控件名(例:TS_tab)
输入需要创建的各个TAB页的描述
设定各tab页的名称,及相应的子界面编号
设定各部分代码进入的include程序
激活程序后,可以查看到程序中增加了子界面的编号,可以依次进入界面,修改界面格式,设置方式与主界面相同,但不能设置GUI STATUS和GUI TITLE

10、标签页的修改

  • 减少
    选中标签页切换位置,点击删除,在数据定义/PBO/PAI中做相应变更,也可不变更
  • 增加
    选择pushbutton控件,在标签页旁增加一个页面
    NAME、TEXT、FCT CODE、REF FIELD
    增加数据定义/PBO/PAI处代码,可以直接参考复制

11、表格控件TABLE CONTROL

当界面中查询多条数据时,可以使用表格控件来进行表单输出
table control的行和列可以由以下元素构成:
KEYWORDS关键字、INPUT/OUTPUT FIELDS输入输出域、RADIO BUTTON/TADIO BUTTON GROUP单选按钮、CHECKBOX复选框、PUSHBUTTON按钮

12、使用向导创建TABLE CONTROL

  • 在程序中创建TABLE CONTROL使用的内表(向导会自动创建相应代码)
  • 创建TABLE CONTROL
  • Name of Table Control:Table Control 的名称(例如:TC_TAB)
  • 使用Internal Program Table创建,选择程序中的内表
  • 选择显示列
  • 设定属性
    • 只显示、不可输入
    • 可输入
    • 带标题
    • 行可选中
    • SINGLE:只能选一行
    • MULTIPLE:可以选中多行
  • 设定按钮
    • SCROLL:设定滚动条
    • 插入/删除行按钮
    • 选中所有/不选中按钮
    • 设定选中列的字段
  • 设定各部分进入的include程序

13、Table Control列的修改

  • 减少
    • 选中输入域,直接删除
    • 将PAI中的chain部分,相应字段注释
  • 增加
    • 内表中增加字段
    • 使用输入域增加列
    • Text控件增加描述
    • 在PAI的chain部分增加相应字段
  • 属性修改
    • 将输入域设成不可输 入
  • 在PAI中修改属性(修改 Table Control的静态属性)
    • 在PAI中修改静态属性,在PBO中输出时自动获取,按属性输出
    • 以列修改为例
      • 屏幕中创建按钮,功能码输入’COL‘
      • 修改table control控件属性结构中的Cols字段(此字段为一个内表)
      • 创建COLS表相应的结构,通过执行其中的第五列的行,将COL中的SCREEN字段(结构)中的input字段进行修改

四、F4的实现

  • 静态实现Srearch Help:数据字典中创建Search Help
    • Data Element 中设置关联
    • Input/Output中设置关联
    • Domain的固定值/数据库表的check table等也会实现F4帮助
  • 动态实现 Search Help:定义内表实现
    • PROCESS ON VALUE-REQUEST部分定义
      • FIELD< field >MODULE < module >.
    • 使用函数F4IF_INT_TABLE_VALUE_REQUEST
  • 下拉菜单
    • input/output field 属性:是否含有KEY显示
    • 使用函数VRM_SET_VALUES,在PBO中给List赋值

下拉菜单:

  • 界面控件定义为下拉菜单
    • ListBox(只显示描述)
    • ListBox with key(显示描述及关键字)
  • 在PBO部分增加Module设置给下拉菜单增加内容
    • 使用函数VRM_SET_VALUES
      • ID = (返回界面中的字段名称)
      • values = (下拉菜单内容所在内表,要参照VRM_VALUES定义)

几个特别的F4

  • 日期类型的F4
    • 函数:F4_DATE
    • 注意界面中的控件定义为D类型
  • 文件路径的F4
    • 函数:F4_FILENAME
    • 界面中的控件定义为RLGRAP-FILENAME

总结

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

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

相关文章

vue搭建项目之后的步骤操作

1.创建router文件夹&#xff08;里面创建index.js&#xff09;&#xff0c;创建views文件夹&#xff08;创建index页面&#xff09; 2.删除assets文件夹里面的内容&#xff0c;删除components文件夹 3.安装路由 npm install vue-router 4.router路由下面的index.js书写内容 …

w029基于springboot的网上购物商城系统研发

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以查看文章末尾⬇️联系方式获取&#xff0c;记得注明来意哦~&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0…

底层视角看C语言

文章目录 main函数很普通main函数之前调用了什么main函数和自定义函数的对比 变量名只为人而存在goto是循环的本质指针变量指针是一个特殊的数字汇编层面看指针 数组和指针数组越界问题低端地址越界高端地址越界 引用就是指针 main函数很普通 main函数是第一个被调用的函数吗&…

Linux内核USB2.0驱动框架分析--USB设备枚举过程

一 USB特点 1.1 USB协议版本介绍&#xff1a; USB1.0/1.1&#xff08;low/fullspeed&#xff09;&#xff1a;传输速率最大为12Mbps&#xff0c;是较早的USB协议版本。 USB2.0&#xff08;highspeed&#xff09;&#xff1a;传输速率最大为480Mbps&#xff0c;相比USB1.0/1.1…

bert-base-uncased处理文档

1.安装必要的库 确保安装 transformers 和 torch 库&#xff1a; pip install transformers torch 2.加载本地 BERT 模型和分词器 由于已将模型和分词器下载到本地&#xff0c;可以指定文件路径加载。确保路径与本地文件结构一致。 from transformers import BertTokenizer…

【快速入门】Kafka的安装部署

目录 一、我的集群环境介绍 二、集群部署 1、解压安装包 2、修改解压后的文件名称 3、进入到/opt/installs/kafka3 目录&#xff0c;修改配置文件 4、分发安装包 5、分别在 bigdata02 和 bigdata03上修改配置文件 6、配置环境变量 7、启动集群 8、停止集群 三、本文用…

Windows安装tensorflow的GPU版本

前言 首先本文讨论的是windows系统&#xff0c;显卡是英伟达&#xff08;invida&#xff09;如何安装tensorflow-gpu。一共需要安装tensorflow-gpu、cuDNN、CUDA三个东西。其中CUDA是显卡的驱动库&#xff0c;cuDNN是深度学习加速库。 安装开始前&#xff0c;首先需要安装好c…

深度学习(神经网络)中模型的评估与性能度量

深度学习&#xff08;神经网络&#xff09;中模型的评估与性能度量 1.在现实任务中&#xff0c;我们往往有多种学习算法可供选择&#xff0c;那么我们如何评判一个模型的好坏呢&#xff1f;理想的解决方案是对模型的泛化误差进行评估&#xff0c;选择泛化误差最小的&#xff1…

mysql做数据统计图表常用的sql语句 部门人数 工龄 学历 年龄 性别 在职人员 兴趣分析查询

做统计有时候挺头疼的&#xff0c;sql改来改去还是达不到想要的效果&#xff0c;这里分享一下最近写的sql&#xff0c;感兴趣的朋友可以看看了解一下&#xff0c;sql语句代码都有注释。 这里只分享sql查询语句&#xff0c;前端图表用的是Echarts。 首先看一下统计的效果图 1、…

无人机之姿态融合算法篇

无人机的姿态融合算法是无人机飞行控制中的核心技术之一&#xff0c;它通过将来自不同传感器的数据进行融合&#xff0c;以实现更加精确、可靠的姿态检测。 一、传感器选择与数据预处理 无人机姿态融合算法通常依赖于多种传感器&#xff0c;包括加速度计、陀螺仪、磁力计等。这…

phpstudy 使用php8.2.9版本报错问题

phpstudy 使用php8.2.9版本报错问题 1、如果php8的扩展控制面板开启无效的话&#xff0c;可以手动开启试试 2、php有报错日志&#xff1a; Fatal error: Directive ‘track_errors’ is no longer available in PHP in Unknown on line 0 在切换php版本到更高版本时在终端查…

SpringBoot开发——SpringBoot3.3 中实现多端口监听

文章目录 1、项目环境与依赖配置2、配置多端口监听3、编写配置类实现多端口监听4、为每个端口创建独立的配置类4.1 8081 端口配置类4.2 8082 端口配置类 5、控制器类定义5.1 8080 端口的控制器&#xff08;保持原有配置&#xff09;5.2 8081 端口的控制器5.3 8082 端口的控制器…

Git分支

目录​​​​​​​ 一、分支是什么 二、查看、创建分⽀(git branch) 查看分支 创建分支 三、切换分支(git checkout&#xff0c;git checkout -b) 四、合并分支(git merge、git log查看合并情况) 五、删除分支&#xff08;git branch -d []&#xff09; 六、合并冲突&…

sigmoid和softmax有什么区别,softmax的本质是最大熵?

本文理论依据王木头的视频&#xff1a; softmax是为了解决归一问题凑出来的吗&#xff1f;和最大熵是什么关系&#xff1f;最大熵对机器学习为什么非常重要&#xff1f;_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1cP4y1t7cP/?spm_id_from333.999.0.0&vd_sourc…

stm32 挂死定位(死循环)

1&#xff0c;调式程序时先看初始化和轮询点灯流程&#xff0c;如果灯没有闪烁则表明程序进入了死循环。 2&#xff0c;程序调式进入调式debug接口&#xff1b; 3&#xff0c;打断点依次运行&#xff1b; 4&#xff0c;查看寄存器&#xff1b; LR在异常后通常为0xFFFFFFFx&am…

ZFC in Lean 之 前集及其成员关系(S, ∈)是良创的(Well-founded)

基于前文&#xff0c;对前集&#xff08;S&#xff0c;pre-set&#xff09;、其成员关系&#xff08;∈&#xff0c;membership&#xff09;&#xff0c;以及良创&#xff08;Well-Founded&#xff09;的定义&#xff0c;此文&#xff0c;分析&#xff08;S, ∈&#xff09;是良…

【暴刷力扣】59. 螺旋矩阵 II

题目 给你一个正整数 n &#xff0c;生成一个包含 1 到 n2 所有元素&#xff0c;且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。 题解 leetcode 大部分题解写的不知道都是什么——代码非常杂乱。 还是直接放上紫书&#xff08;《算法竞赛入门指南》&#xff09;…

vue3+ts+element-ui实现的可编辑table表格组件 插入单行多行 组件代码可直接使用

最近需求越来越离谱&#xff0c;加班越来越严重&#xff0c;干活的牛马也越来越卑微。写了一个可编辑表格&#xff0c;并已封装好组件&#xff0c;可直接使用。 基于这位大佬的 动态表格自由编辑 方法和思路&#xff0c;于是参考和重写了表格&#xff0c;在基础上增加和删除了…

zxing生成、解析二维码,条形码

1、maven依赖 <!--zxing依赖--><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.1.0</version></dependency><dependency><groupId>com.google.zxing</groupI…

JQuery设置Cookie操作,设置、获取、删除三种方法

//触发条件 当用户点击或者操作时需要设置cookie时 //方法里面定义了三个处理cookie的方法 $(document).ready(function(e) {$("#btnsetcookie").click(function() {setCookie("Demo", "我的示例Cookie数据", 2); //设置cookie});$("#btn…