当前位置: 首页 > news >正文

ABAP 开发的那些小技巧

在对话框程序中的选择屏幕添加图标

要在选择屏幕中添加图标,其中包括参数:

在参数的选择文本中或选择选项(select-option)中写入 @01@

或选择选项:

您可以使用 01、02、03,依此类推,以获取不同的不同图标。

在运行时更改参数的名称

这是在运行时更改参数的很酷的技巧:

在特定时间或单击参数标签将更改…

SELECTION-SCREEN BEGIN OF BLOCK b1.  
PARAMETERS : rd1 RADIOBUTTON GROUP g1 USER-COMMAND abc DEFAULT 'X',  rd2 RADIOBUTTON GROUP g1.  SELECTION-SCREEN: BEGIN OF LINE.  SELECTION-SCREEN: COMMENT 1(50) text_003.   " (text_003 will holds the name)  
PARAMETERS  p_matnr TYPE matnr .  
SELECTION-SCREEN: END   OF LINE.  
SELECTION-SCREEN END OF BLOCK b1.  *To change the name on click of radio button  AT SELECTION-SCREEN OUTPUT.  IF rd1 = 'X'.  text_003 = 'Matnr'.  ELSEIF rd2 = 'X'.  text_003 = 'Material Number'.  ENDIF.

图片.png

实际开发中遇到的解决方式:

代码如下:

**----------------------------------------------------------------------*
*& 选择屏幕部分
SELECTION-SCREEN FUNCTION KEY 1.SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text002.SELECTION-SCREEN: BEGIN OF LINE.
PARAMETERS: p1 TYPE c RADIOBUTTON GROUP rb1 USER-COMMAND uc DEFAULT 'X'.
SELECTION-SCREEN: COMMENT (30) FOR FIELD p1.PARAMETERS: p2 TYPE c RADIOBUTTON GROUP rb1.
SELECTION-SCREEN: COMMENT (30) FOR FIELD p2.
SELECTION-SCREEN: END OF LINE.SELECTION-SCREEN END OF BLOCK b2.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text001.SELECT-OPTIONS:s_pbom FOR zmmt076-zcompocode MODIF ID ty1, " Component Codes_fbom FOR zmmt077-zforpegcode MODIF ID ty2," Forecast Pegging Codeso_sku FOR mara-zmatsku, " SKUs_zbrand FOR mara-zbrand , " Brands_zrange FOR mara-zrange, " Ranges_zprod FOR mara-zprod, " Products_zprgrp FOR mara-zprdgrp, " Product Groups_series FOR mara-zseries_int, " Internal Seriess_erdat FOR zmmt076-erdat, " Update Dates_bismt FOR zmmt076-zbismt, " Old Material No.s_crdat FOR zmmt076-erdat. " Sales Order Created Date
SELECTION-SCREEN END OF BLOCK b1.INITIALIZATION.text001 = 'Selection'.text002 = 'PBOM/FBOM'.s_crdat-low = '20200101'. s_crdat-high = sy-datum.s_crdat-sign = 'I'.s_crdat-option = 'BT'.APPEND s_crdat.CLEAR s_crdat.AT SELECTION-SCREEN OUTPUT.LOOP AT SCREEN.CASE screen-group1.WHEN 'TY1'.IF p1 = 'X'.screen-active = '1'.ELSE.screen-active = '0'.ENDIF.WHEN 'TY2'.IF p2 IS INITIAL.screen-active = '0'.ELSE.screen-active = '1'.ENDIF.ENDCASE.MODIFY SCREEN.ENDLOOP.

显示效果如下:

图片.png

Describe 方法的替代

我们可以在不使用 DESCRIBE 语句的情况下计算内表的行:

count = lines(itab)

动态 SQL 语句

动态创建选择查询语句的技巧:

SELECT (<fs_fields>)FROM (<fs_tabname>)APPENDING TABLE <fs_itab>WHERE (wa_tab) .
[every variable should be of character type]

显示 ALV 的最简单方式

使用此代码显示 ALV 的最简单和最短方法:

DATA: gr_table TYPE REF TO cl_salv_table.CALL METHOD cl_salv_table=>factoryIMPORTINGr_salv_table = gr_tableCHANGINGt_table = itab. " internal table having data to displaygr_table->display( ).

运行阻塞的 T-Code

Tcodes 被中断…不是一个大问题。这是运行任何 T-code 的两种方法:

  1. RS_HDSYS_CALL_TC_VARIANT: RS_HDSYS_CALL_TC_VARIANT 并使用参数进行权限检查
  2. 在报表中使用如下的代码:
DATA: l_tcode TYPE sytcode.  PARAMETERS: p_tcode TYPE sy-tcode.  START-OF-SELECTION.  SELECT SINGLE tcode FROM tstc  INTO l_tcode  WHERE tcode = p_tcode.  IF sy-subrc = 0.  CALL TRANSACTION p_tcode.  ELSE.  MESSAGE 'TCODE not found.' TYPE 'I'.  ENDIF.

显示弹出窗口

使用 method th_popup 函数来显示弹出框或消息提示。

CALL FUNCTION 'POPUP_TO_CONFIRM'  EXPORTING  text_question  = '确定删除?'  IMPORTING  answer         = lv_answer  
*       TABLES  
*     PARAMETER      =  EXCEPTIONS  text_not_found = 1  OTHERS         = 2.  CHECK lv_answer = '1'.

报表中创建日志

这是在 ABAP 中创建日志显示的代码:

CREATE OBJECT lc_app_log  EXCEPTIONS  log_header_inconsistent = 1  OTHERS                  = 2.  *Error messages  LOOP AT i_msg_log INTO wa_msg_log.  lw_msg = wa_msg_log-message.  lw_msgty = wa_msg_log-msgtyp.  CALL METHOD lc_app_log->add_msg_free_text  EXPORTING  im_msg    = lw_msg  im_msgty  = lw_msgty  EXCEPTIONS  msg_error = 1  OTHERS    = 2.  IF NOT sy-subrc IS INITIAL.  RETURN.  ENDIF.  CLEAR wa_msg_log.  ENDLOOP.  lc_app_log->display_log( ).

用字符串查找报表

我们可以通过使用报表输入任何程序中编写的字符串来找到报表:RS_ABAP_SOURCE_SCAN

在不按 CTRL+C 或 CTRL+V 的情况下复制任何行

使用 CTRL+D 来复制任何一行,通常在更新代码时使用,将原有的逻辑注释,复制当前行的代码,重新写新的业务逻辑代码

相关文章:

ABAP 开发的那些小技巧

在对话框程序中的选择屏幕添加图标 要在选择屏幕中添加图标&#xff0c;其中包括参数&#xff1a; 在参数的选择文本中或选择选项(select-option)中写入 01 或选择选项&#xff1a; 您可以使用 01、02、03&#xff0c;依此类推&#xff0c;以获取不同的不同图标。 在运行时…...

电科金仓(人大金仓)更新授权文件(致命错误: XX000: License file expired.)

问题:电科金仓(人大金仓)数据库链接异常,重启失败,查看日志如下: 致命错误: XX000: License file expired. 位置: PostmasterMain, postmaster.c:725 解决方法: 一、下载授权文件 根据安装版本在官网下载授权文件(电科金仓-成为世界卓越的数据库产品与服务提供商)…...

玩转「HF/魔搭/魔乐」平台

模型下载 Hugging Face 下载到 GitHub CodeSpace CodeSpace创建环境&#xff1a; # 安装transformers pip install transformers4.38 pip install sentencepiece0.1.99 pip install einops0.8.0 pip install protobuf5.27.2 pip install accelerate0.33.0下载internlm2_5-7b…...

鸿蒙系统的优势 开发 环境搭建 开发小示例

HarmonyOS是面向多智能终端、全场景的分布式操作系统,为消费者提供跨终端的无缝体验.华为开发者联盟从HarmonyOS应用设计、开发、测试、推广变现等环节全方位助力开发者。 开发者可以通过以下步骤学习鸿蒙系统的开发&#xff1a; 基础理论学习&#xff1a; 了解鸿蒙系统概述&a…...

python批量合并excel文件

当工作中发现有多个excel表需要进行相同的操作或者需要汇总在一起&#xff0c;一个一个处理太费时间&#xff0c;以下的python代码能够帮你解决这个问题~ import pandas as pd import os# 设置Excel文件所在的文件夹路径和合并文件的输出路径 folder_path D:\\Desktop\\dat…...

AWS S3 JavaScript SDK(v3)常用操作

安装 aws s3 sdk npm install aws-sdk/client-s3配置 创建 ~/.aws/credentials 文件&#xff0c;添加以下配置项&#xff1a; [default] aws_access_key_id<...> aws_secret_access_key<...> region<...>S3 SDK常用桶操作 获取桶列表 import {S3Client,…...

数据结构——图的基本操作

文章目录 1.图2.图的结构体定义3.图的初始化4.添加顶点、删除顶点4.1添加顶点4.2删除顶点 5.添加边、删除边5.1添加边5.2删除边 6.打印图7.main函数 在生命旅途中&#xff0c;我们就像是一个个节点&#xff0c;被无数看不见的边相连。每一次的相识与相离&#xff0c;都在这张巨…...

掌握全球速递:在表格中高效利用国际快递公式查询快递

在当今全球化的商业环境中&#xff0c;国际快递服务已成为连接世界各地企业与个人的重要桥梁。无论是跨国企业间的货物运输&#xff0c;还是个人用户的海外购物需求&#xff0c;国际快递都扮演着不可或缺的角色。然而如何快速准确地获取大量国际快递的物流轨迹成为了一个挑战。…...

【MySQL系列】字符集设置

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...

Vue2进阶之Vue3高级用法

Vue3高级用法 响应式Vue2&#xff1a;Object.definePropertyObject.definePropertythis.$set设置响应式 Vue3&#xff1a;Proxy composition APIVue2 option API和Vue3 compositionAPIreactive和shallowReactivereadonly效果toRefs效果 生命周期main.jsindex.htmlLifeCycle.vue…...

基于微信的追星小程序+ssm(lw+演示+源码+运行)

摘 要 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;追星小程序被用户普遍使用&#xff0c;为方便用户能够可以…...

【51单片机】串口通信原理 + 使用

学习使用的开发板&#xff1a;STC89C52RC/LE52RC 编程软件&#xff1a;Keil5 烧录软件&#xff1a;stc-isp 开发板实图&#xff1a; 文章目录 串口硬件电路UART串口相关寄存器 编码单片机通过串口发送数据电脑通过串口发送数据控制LED灯 串口 串口是一种应用十分广泛的通讯接…...

优选算法第五讲:位运算模块

优选算法第五讲&#xff1a;位运算模块 1.常见的位运算总结2.判断字符是否唯一3.丢失的数字4.两整数之和5.只出现一次的数字II6.消失的两个数字 1.常见的位运算总结 2.判断字符是否唯一 链接: link class Solution { public:bool isUnique(string astr) {if(astr.size() >…...

【07】Maven项目多环境打包配置

&#xff08;1&#xff09;Web项目使用Maven进行多模块划分开发之后&#xff0c;面临一个问题&#xff0c;即如何加载不同环境的配置文件打包发布到不同的环境中&#xff1f; &#xff08;2&#xff09;不同的环境有开发环境、测试环境、线上生产环境等。 &#xff08;3&#x…...

嵌入式Linux入门具备:C语言基础与基本驱动学习(2):Linux GIibc IO基础

标准IO 标准 I/O 虽然是对文件 I/O 进行了封装&#xff0c;但事实上并不仅仅只是如此&#xff0c;标准 I/O 会处理很多细节&#xff0c;譬如分配 stdio 缓冲区、以优化的块长度执行 I/O 等&#xff0c;这些处理使用户不必担心如何选择使用正确的块长度。I/O 库函数是构建于文件…...

【微服务】Docker 容器化

一、初识Docker 1. 为什么需要 Docker 大型项目组件较多&#xff0c;运行环境也较为复杂&#xff0c;部署时会遇到一些问题&#xff1a; 依赖关系复杂&#xff0c;容易出现兼容性的问题开发、测试、生产环境有差异 Docker 如何解决依赖的兼容问题 将应用的Libs&#xff08;…...

[前端] 为网站侧边栏添加搜索引擎模块

前言 最近想给我的个人网站侧边栏添加一个搜索引擎模块&#xff0c;可以引导用户帮助本站SEO优化&#xff08;让用户可以通过点击搜索按钮完成一次对本人网站的搜索&#xff0c;从而实现对网站的搜索引擎优化&#xff09;。 最开始&#xff0c;我只是想实现一个简单的百度搜索…...

解决CORS (跨源资源共享) 错误

问题引入 前端代码 <template><div id"hello-vue" class"demo">{{ message }}</div><el-button type"primary" click"handleClick">我是一个按钮</el-button></template><script setup>//加…...

Redis 实现分布式缓存

一、引言 在当今互联网时代&#xff0c;随着业务的不断发展和用户量的持续增长&#xff0c;系统的性能和可扩展性成为了关键挑战。分布式缓存作为一种重要的技术手段&#xff0c;能够有效地缓解数据库压力、提高系统响应速度、增强系统的可扩展性。Redis 作为一种高性能的内存数…...

Chrome与火狐哪个浏览器的移动版本更流畅

在当今的数字化时代&#xff0c;移动设备已经成为我们生活中不可或缺的一部分。而浏览器作为我们访问互联网的重要工具&#xff0c;其性能和用户体验直接影响到我们的使用感受。本文将对比Chrome和火狐&#xff08;Firefox&#xff09;两款主流浏览器的移动版本&#xff0c;探讨…...

高等数学 定理及习题

本文涉及知识点 数学 《高等数学》&#xff08;上册&#xff09; 第一章 函数与极限 第一节 映射与函数 第二节 数列的极限 第三节 函数的极限 第四节 无穷小与无穷大 第五节 极限运算法则 第六节 极限存在准则 两个重要极限 第七节 无穷小的比较 第八节 函数的连续性…...

数据库局部变量,全局变量,流程控制

前言知识点什么时候用&#xff1f;局部变量调试脚本、存储过程参数、临时存值全局变量获取执行状态、错误处理IF/WHILE条件判断、批量数据处理视图简化复杂查询、统一查询逻辑索引加快查询速度函数封装可复用的计算逻辑存储过程封装复杂业务、批量操作一SQL局部变量变量1.是什么…...

混合参数化量子态(HPQS)在量子机器学习中的应用与优化

1. 混合参数化量子态&#xff08;HPQS&#xff09;框架解析量子机器学习在NISQ&#xff08;Noisy Intermediate-Scale Quantum&#xff09;时代面临两大核心挑战&#xff1a;参数化量子电路&#xff08;PQC&#xff09;因有限测量次数导致的统计不确定性&#xff0c;以及神经量…...

消费级EEG眼动追踪技术:原理、应用与挑战

1. 消费级EEG眼动追踪技术概述 在脑机接口(BCI)研究领域&#xff0c;利用脑电信号(EEG)中的眼动伪迹进行视线追踪(ET)正逐渐成为一种创新方法。传统基于摄像头的眼动追踪技术虽然成熟&#xff0c;但在实际应用中存在明显局限——需要充足光照条件、无法在闭眼状态下工作&#…...

电子书转有声书完整指南:一键实现1158种语言的AI语音合成

电子书转有声书完整指南&#xff1a;一键实现1158种语言的AI语音合成 【免费下载链接】ebook2audiobook Generate audiobooks from e-books, voice cloning & 1158 languages! 项目地址: https://gitcode.com/GitHub_Trending/eb/ebook2audiobook 你是否曾希望将心爱…...

《Enterprise Architecture with SAP》—— 从“纸上蓝图”到“场景落地”

上一篇文章&#xff08;《Enterprise Architecture with SAP》— 从“项目思维”到“企业级全局视角”&#xff09;&#xff0c;我们花了不少篇幅把SAP企业架构的“骨架”搭起来了——五大支柱是什么、方法论怎么走、参考内容给什么蓝图、EA在企业里和谁配合干活。用一句话总结…...

COOT模型详解:视频时序理解与跨模态对齐技术

1. 项目概述&#xff1a;让视频自己“开口说话”的底层逻辑 你有没有遇到过这样的场景&#xff1a;手头有一段3分钟的产品演示视频&#xff0c;需要快速生成一段精准的图文摘要发给客户&#xff1b;或者正在做无障碍内容建设&#xff0c;得为一段教学视频配上符合语义节奏的字幕…...

视频理解新范式:COOT模型实现对象-场景联合建模的视频描述生成

1. 项目概述&#xff1a;让视频自己“开口说话”的底层逻辑你有没有遇到过这样的场景&#xff1a;手头有一段3分钟的产品演示视频&#xff0c;需要快速生成一段精准的图文摘要发给客户&#xff1b;或者在做无障碍内容开发时&#xff0c;得为一段教学视频配上逐帧语义描述&#…...

ChatGPT API调用费用暴涨?揭秘token计费陷阱:5个被90%开发者忽略的隐性成本源

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;ChatGPT API调用费用暴涨&#xff1f;揭秘token计费陷阱&#xff1a;5个被90%开发者忽略的隐性成本源 ChatGPT API 的账单突增&#xff0c;往往并非源于请求量激增&#xff0c;而是被 token 计费机制中…...

用 jose 正确实现 JWT 签发、验签与密钥轮换

1. 为什么你写的 JWT 总是“看起来能用&#xff0c;上线就出事”JWT&#xff08;JSON Web Token&#xff09;这东西&#xff0c;我第一次在项目里用的时候&#xff0c;也是照着文档抄了三行代码&#xff1a;jwt.sign(payload, secret)、jwt.verify(token, secret)、res.json({ …...