ABAP+记录一个BDC的BUG修改过程

问题背景:

业务顾问反馈在使用BDC 进行MEQ1进行供应商配额时,由于以前录屏时用例只有3行数据,导致现在有5行数据的时候,代码仍然只获取了3行数据进行录入,现在需要更改代码,使其按照实际情况自动调整行数。

解决记录:

首先根据业务顾问提供的出错的案例,进行问题复刻,将CALL事务代码的时候,模式的值IM_MODE调整为A,就可以将屏幕一步一步点开进行调试。

下面是调试的界面

数据填充结束的时候,我们可以看到下面这里本应该有5条,但是现在只有3条,那应该就是这里的问题,一般情况下,像这种填充表格的时候数据被重复覆盖,大概率是表格的行数在赋值时重复了,这时候一般可以直接从BDCDATA入手。

在调试时看一下BDCDATA的数据,这里我导出来了,放一个截图,从下图可以看到,这个数字02出现了很多次,应该是它的问题,我们将其依次在debug的时候改成02、03、04、05,再进行调试。

调试结果如下,发现数据从3条成功变成了5条,那么数据就可以这样修改:

下面放一个赋值的思维,这样填写就可以根据数据行数进行行数累加了:

这样就修改完了。

后续思考:

其实这是一个比较偷懒的改法,一点都没有动脑,直接改变了原有的逻辑。因为我在看代码的时候,发现上一个开发者在02旁边写了一句话“两条以上的记录,点击新增,在第二行里录入信息”,其实是表明他是考虑到多行输入数据的情况的,只是出了差错,每次新填的数据将原有的第2行进行覆盖了。这是因为在BDC录屏时,如果上下拉动进度条或者滑动鼠标滚轮,都是需要记录的,但是滑动鼠标滚轮时不生成记录代码,必须改为上下拉动进度条。这里少了拉动进度条的代码,所以每个02都会覆盖原有的数据,如果加上拉动进度条的代码,就可以保证每个02都是新增,因为我不擅长添加拉动进度条的代码,所以,我老老实实添加的代表数字的代码。

好吧,最后的最后,我还是又按照原来开发的意思修改了代码,在代码原有的基础上更改了代码,加上了拉动进度条的代码BDC_OKCODE = NL,就是拉动进度条的意思,原有代码的BDC_OKCODE是/00,是回车的意思,现在修改成=NL,就可以了。业务顾问测试后也是可以的,可恶,我写了这么多代码,那就还是把以前的代码放进来做个纪念吧

     以前的代码:

   ELSE. " 两条以上的记录,点击新增,在第二行里录入信息
*          CHANGE BY GYX D20250630,两条以上数据按照编号依次新增 START-------
**          PERFORM BDC_DYNPRO      USING 'SAPDM06Q' '0215'.
**          PERFORM BDC_FIELD       USING 'BDC_CURSOR'
**                                        'EQUP-QUOTE(02)'.
**          PERFORM BDC_FIELD       USING 'BDC_OKCODE'
**                                        '/00'.
**          PERFORM BDC_FIELD       USING 'EQUP-BESKZ(02)'
**                                        W_DATA-BESKZ.
**          PERFORM BDC_FIELD       USING 'RM06Q-SOBIN(02)'
**                                        W_DATA-ESOBS.
**          PERFORM BDC_FIELD       USING 'EQUP-LIFNR(02)'
**                                        W_DATA-LIFNR.
**          WRITE W_DATA-QUOTE TO LC_QUOTE.
**          PERFORM BDC_FIELD       USING 'EQUP-QUOTE(02)'
**                                        LC_QUOTE.
**
**          "最小批量尺寸
**          WRITE W_DATA-MINLS TO L_STR.
**          PERFORM BDC_FIELD       USING 'EQUP-MINLS(02)'
**                                        L_STR.PERFORM BDC_DYNPRO      USING 'SAPDM06Q' '0215'.DATA(GV_FIELD) =  'EQUP-QUOTE(' && LV_NUM && ')'.PERFORM BDC_FIELD       USING 'BDC_CURSOR'GV_FIELD."'EQUP-QUOTE(02)'.PERFORM BDC_FIELD       USING 'BDC_OKCODE''/00'.GV_FIELD =  'EQUP-BESKZ(' && LV_NUM && ')'.PERFORM BDC_FIELD       USING   GV_FIELD"'EQUP-BESKZ(02)'W_DATA-BESKZ.GV_FIELD =  'RM06Q-SOBIN(' && LV_NUM && ')'.PERFORM BDC_FIELD       USING GV_FIELD"'RM06Q-SOBIN(02)'W_DATA-ESOBS.GV_FIELD =  'EQUP-LIFNR(' && LV_NUM && ')'.PERFORM BDC_FIELD       USING GV_FIELD"'EQUP-LIFNR(02)'W_DATA-LIFNR.WRITE W_DATA-QUOTE TO LC_QUOTE.GV_FIELD =  'EQUP-QUOTE(' && LV_NUM && ')'.PERFORM BDC_FIELD       USING GV_FIELD"'EQUP-QUOTE(02)'LC_QUOTE."最小批量尺寸WRITE W_DATA-MINLS TO L_STR.GV_FIELD =  'EQUP-MINLS(' && LV_NUM && ')'.PERFORM BDC_FIELD       USING GV_FIELD"'EQUP-MINLS(02)'L_STR.*          CHANGE BY GYX D20250630,两条以上数据按照编号依次新增 END------

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

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

相关文章

github上传代码步骤(http)

github上传步骤(http) 之前github上传不了代码,总是报错。后面发现自己用的ssh上传需要秘钥,现在我介绍一个最简单的http上传方法(虽然没有ssh安全。。。但简单嘛~),现在我做个例子&#xff0c…

深入理解Nginx-以实际http通信例子改造带ssl配Nginx的实战-优雅草卓伊凡|麻子

深入理解Nginx-以实际http通信例子改造带ssl配Nginx的实战-优雅草卓伊凡|麻子 SSL/TLS在Nginx中的底层实现原理 Nginx的SSL模块架构 Nginx通过ngx_http_ssl_module模块实现SSL/TLS功能,该模块基于OpenSSL库构建。根据Nginx官方文档,SSL模块在Nginx架构…

AT6558R-5N32介绍

作为单芯片SOC方案,AT6558R在片上整合了射频前端、数字基带处理器与32位RISC CPU,并具备电源管理能力。该芯片兼容北斗、GPS、GLONASS三大卫星导航系统,可实现多模协同定位‌。 主要特征 支持 BDS/GPS/GLONASS 多系统联合定位 和单系统独立定…

“对象创建”模式之原型模式

目录 Prototype 原型模式动机 Motivation引例模式定义结构 Structure要点总结 Prototype 原型模式 动机 Motivation 在软件系统中,经常面临着“某些结构复杂的对象”的创建工作;由于需求的变化,这些对象经常面临着剧烈的变化,但…

Tomcat服务概述

前言: 作为Apache软件基金会Jakarta项目的核心成果,Tomcat凭借其轻量级、开源免费的特性,已成为Java Web应用服务的行业基准。它实现了完整的Servlet与JSP规范,通过模块化架构(Connector请求处理层与Container业务逻辑…

HarmonyOS应用开发高级认证知识点梳理 (一) 布局与样式

以下是 HarmonyOS 应用开发中 ‌布局与样式‌ 的核心知识点梳理(针对高级认证备考),结合官方文档与高频考点: 一、布局系统核心知识点 布局容器类型‌ 线性布局‌:Column(纵向)、Row&#xf…

【Ragflow】30.离线环境迁移方案

前言 之前的 Ragflow-Plus 在服务器上稳定运行一段时间后,接到任务,要把服务迁移到一台古老的,离线的windows台式机上。 起初认为,下载离线安装包,加载离线镜像,迁移下数据就可以了。 结果坑多得意想不到…

nrf52840蓝牙学习(定时器的应用)

和其他 MCU 处理器一样,在 nrf52840 中定时器的功能是十分强大的。其内部包含了 5 个定时 器 TIMER 模块 :TIMER0 、 TIMER1 、 TIMER2 、 TIMER3 、 TIMER4 ,如下表 10.1 所示。 1. 时钟源 首先定时器 TIMER 工作在高频时钟源&#xff08…

【Bluedroid】蓝牙启动之BTM_reset_complete源码解析

当蓝牙控制器完成硬件重置后,协议栈需通过一系列初始化操作恢复各模块状态。本文深入分析BTM_reset_complete核心函数及其调用链,详解 L2CAP 连接清理、安全模块重置、扫描参数恢复、BLE 隐私功能初始化等关键流程,揭示蓝牙设备在重置后如何通过标准化状态恢复确保互操作性、…

containerd 项目主要目录简要说明

containerd 项目结构清晰,核心代码分布在若干主目录下。以下是 client、cmd、core、internal、pkg、plugins 这六个主要包/目录的简要作用说明: 1. client 作用:封装与 containerd 守护进程通信的 Go 客户端 API,主要基于 gRPC。…

有线转无线工具,轻松创建WiFi热点

软件介绍 今天为大家推荐一款实用的无线网络共享工具——MyPublicWiFi。这款软件能够将电脑的有线网络转换为无线WiFi,方便其他设备连接使用。 安装与设置 该软件为安装版程序,安装完成后会自动识别当前电脑的IP地址。用户可在软件界面中自定义设…

Linux下,通过标准I2C驱动读取Sensor ID

sensor型号&#xff1a;OS04L10&#xff0c;sensor引脚以及时钟要先配置好&#xff0c;源码如下&#xff1a; #include <fcntl.h> #include <linux/i2c-dev.h> #include <linux/i2c.h> #include <stdint.h> #include <stdio.h> #include <sy…

人工智能基石:SVM支持向量机全解析(附Python实战)

大家好&#xff01;今天我们来深入探讨支持向量机&#xff08;Support Vector Machine, SVM&#xff09;——这个在​​图像识别、文本分类​​等领域广泛应用的强大算法。既能处理分类问题&#xff0c;又能解决回归任务&#xff0c;甚至在非线性数据面前也能游刃有余。本文将带…

mysql查看数据库

在 MySQL 中查看当前数据库的创建语句&#xff0c;使用 SHOW CREATE DATABASE 命令&#xff0c;以下是详细操作指南&#xff1a; 1. 查看当前数据库的创建语句 SHOW CREATE DATABASE database_name; 替换 database_name 为你的数据库名使用反引号 包裹特殊名称或保留字 2.…

ArrayList剖析

大家天天在用List&#xff0c;ArrayList一般来讲应该是程序员用的最多的集合类了。 我们今天研究一下ArrayList。 总体来讲&#xff0c;从底层数据结构或者源码的角度看&#xff0c;List比Map或者Set要简单。 底层数据结构 ArryList其实就是可变长数组。 初始化的时候&…

回顾JAVA中的锁机制

Java中的锁机制 在Java中&#xff0c;锁机制是多线程编程里保障数据一致性与线程安全的关键技术。 1. 内置锁&#xff1a;synchronized关键字 synchronized是Java的内置锁机制&#xff0c;能够保证在同一时刻&#xff0c;只有一个线程可以执行被其修饰的代码块或方法。 用法…

YOLOv11: AN OVERVIEW OF THE KEY ARCHITECTURAL ENHANCEMENTS目标检测论文精读(逐段解析)

YOLOv11: AN OVERVIEW OF THE KEY ARCHITECTURAL ENHANCEMENTS目标检测论文精读&#xff08;逐段解析&#xff09; 论文地址&#xff1a;https://www.arxiv.org/abs/2410.17725 Rahima Khanam and Muhammad Hussain Ultralytics公司发布 CVPR 2024 论文写的比较简单&#xff…

【Erdas实验教程】025:遥感图像辐射增强(雾霾去除)

文章目录 一、雾霾去除原理二、雾霾去除案例一、雾霾去除原理 遥感影像雾霾去除的核心原理是消除大气散射对电磁波的干扰,恢复地物真实反射信息。Haze Reduction 工具的原理: 该工具基于暗目标法(Dark Object Subtraction, DOS),适用于去除因大气散射(雾霾本质是大气颗…

Language Models are Unsupervised Multitask Learners :语言模型是无监督的多任务学习者

摘要 自然语言处理任务&#xff0c;如问答、机器翻译、阅读理解和摘要&#xff0c;通常通过在特定任务的数据集上进行监督学习来解决。我们展示了语言模型在训练于一个包含数百万网页的新数据集——WebText——时&#xff0c;可以无需任何显式监督就开始学习这些任务。当模型以…

SQL语句全攻略:从基础到进阶的编程之旅

目录 一、引言二、SQL 基础语法2.1 SQL 语句写法顺序2.2 关联查询2.3 数据处理常用函数和运算符 三、数据库和表的基本操作3.1 创建数据库3.2 使用数据库3.3 创建表 四、基础增删改查操作4.1 插入数据&#xff08;增&#xff09;4.2 查询数据&#xff08;查&#xff09;4.3 更新…