在项目中对程序进行白盒测试时,为了将各个测试点都覆盖到,有时候需要在DEBUG中修改数据。

前台程序毋庸置疑,直接在程序中打断点进入DEBUG模式,对于需要修改的变量直接改动即可。

但是后台程序在跑JOB的时候该如何进入到DEBUG模式、并通过修改变量而得到想要的数据or结果呢?

在百度上搜索并没有找到完美的解决方案,去浏览了一下SAP QA社区里面的下面的回答,并整理总结一下项目上get的经验与大家分享。

以下分享三种后台程序DEBUG的方法,其中NO.1大法是可以用来修改数据的,NO.2/3是其他两种比较常见的DEBUG方式。


目录

NO.1 可以修改数据并反应到JOB结果中的DEBUG大法!

STEP 1: 准备工作

STEP 2: 定义JOB (TCODE:SM36)

STEP 3: 结果查看 (T-CODE: SM37)

NO.2 JDBG大法

STEP 1: 选中作业

STEP 2: F7找自己的代码

NO.3 在JOB LOG中回到程序DEBUG界面

STEP 1: 选中作业

STEP 2: DEBUG


NO.1 可以修改数据并反应到JOB结果中的DEBUG大法!

STEP 1: 准备工作

1-1 在程序中设置外部断点(带小人脑袋的那个)

1-2 在选择画面上输入信息,并保存一个Varient变式,作为后续后台执行时的选择画面条件

STEP 2: 定义JOB (TCODE:SM36)

2-1 输入自定义的JOB名称之后点击保存

2-2 保存后会自动弹窗,让用户自定义步骤。在步骤的Name中输入'BTCLOOP',之后点击保存

2-3 保存后①点击新建按钮后会弹出右边框;②在STEP2的名称中填入程序名,在变式中填入刚刚保存的选择画面Varient;③保存

2-4 点击返回

得到以下结果

  2-5 点击开始条件Start Condition,选择立刻执行并保存

2-6 点击个人作业Own Jobs

 2-7 在自己的JOB LIST中选中刚刚定义的JOB,这部分需要强调一点的是需要注意一下此时JOB的STATUS状态,如果是Scheduled的状态,需要将其Release成Active状态(要Release两遍,第一遍成为Ready状态)。在确保状态是执行中的状态时点击应用程序服务器Application Servers

 2-8 双击进入该Server

 2-9 选中刚刚定义的BTCLOOP这行,点击菜单栏的管理Administration-程序Program-调试Debugging

2-10 首先会进入开始定义的第一步BTCLOOP循环,这里要手动将I参数改成0以外的其他值,防止死循环。

2-11 此时点击F8,锵锵锵~~~ 就会进入之前在程序中打的外部断点的位置,然后按需修改参数进行测试就可以啦。跑完程序后会退回到2-9的界面,此时去SM37查看就能找到刚刚跑完的JOB

 例如我在这里想要测试主数据取得不到的场合,把GT_A表格清空,并确认SY-BATCH的确为后台执行,然后F8跑出去。

STEP 3: 结果查看 (T-CODE: SM37)

从这里之后的操作与正常查看后台JOB的结果没有不同,点击可查看JOB LOG, Spool, Step等等。

Duration就是程序执行&Debug总共花的时间。有些程序有执行日期/时间的取得逻辑,在进行DEBUG操作时,这部分时间需要注意一下。

PS:如果想再次以这种方法跑一次后台Debug,则退回到2-1的屏幕中,再次点击保存,之后的步骤直接跳到2-5。【这种方法定义的JOB在退掉SM36之后需要重新编辑STEP步骤2-2~2-4】


NO.2 JDBG大法

我在网络上看到有很多前辈推荐JDBG的DEBUG大法,这种方法非常便捷,但是个人觉得有一定的局限性。

前提:用后台跑了一遍JOB A(随便起个名字方便区分)

问题1:这种方法仅仅可以将程序按照JOB A执行的选择画面条件再次执行一次,并不会跑出结果,只是给你看一下过程

问题2:假如在跑完JOB A这次之后更改了代码逻辑,这样DEBUG进去,会按照新的代码逻辑走,并不能完全还原JOB A那次的过程。(我之前以为会是那种,在系统中自动保存了跑JOB A那次的程序版本,类似一个程序快照的东西。哈哈 后来发现我想多了)

优势:这种方法的优势在于,跑完JOB A之后直接DEBUG进去可以检查程序逻辑,找问题所在。

下面简单介绍一下这种方法如何实现,网络上已经有很多个教学版本了。

STEP 1: 选中作业

1-1 T-CODE SM37勾选中作业,并在T-CODE栏处输入JDBG后按回车

STEP 2: F7找自己的代码

2-1 回车进去后会跑到系统代码里面,此时慢慢按几次F7就能跳转到自己的代码中(不同的系统按F7的次数不同,有时还会跳转回第一种方法的2-10界面,需要手动改I值防止死循环)

跳回自己的代码中啦


NO.3 在JOB LOG中回到程序DEBUG界面

第三种方法也是之前我在网络上搜索到的教程,不过这种方法在我看来无异于在SM38重新执行一次程序,没有什么特殊的优势。

STEP 1: 选中作业

1-1 勾选中作业后点击STEP步骤

1-2 光标选中一个步骤之后(有红框),点击上方的转到Goto-程序Program

STEP 2: DEBUG

2-1 ①跳转到自己的程序后,点击F8执行。

②在选择画面中输入完条件后,再次点击执行,就会进入到DEBUG模式当中(记得提前设断点)。


以上就是几种常见的后台JOB的DEBUG方式,主要还是想跟大家分享第一种可以修改数据的方法。 文中如有表述不准确的地方,欢迎各位前辈指正。/鞠躬

ABAP 后台程序BACKGROUND JOB DEBUG的终极大法(可修改数据并反映到结果当中)相关推荐

  1. 用JQuery中的Ajax方法获取web service等后台程序中的方法

    用JQuery中的Ajax方法获取web service等后台程序中的方法 1.准备需要被前台html页面调用的web Service,这里我们就用ws来代替了,代码如下: using System; ...

  2. csdn的blog后台程序的导航菜单的实现

    研究了一下csdn的 blog后台程序的导航菜单的实现,其特点是每个导航菜单项的宽度不一样,所以,被用作导航条背景的图片不能是一个单一固定长度的图片,所以,csdn采用了一种称之为滑动门的技术,每个菜 ...

  3. vhm在服务器上创建虚拟机,一步步实现ABAP后台导入EXCEL到数据库【1】

    在SAP的应用当中,导入.导出EXCEL文件的情况是一个常见的需求,有时候用户需要将大量数据定期导入到SAP的数据库中.这种情况下,使用导入程序在前台导入可能要花费不少的时间,如果能安排导入程序为后台 ...

  4. 检查 ABAP/4 程序用户的 权限

    要在 ABAP/4 程序中检查 用户权限, 请使用 AUTHORITY-CHECK 语句,如下 所示:语法 AUTHORITY-CHECK OBJECT '<object>'        ...

  5. SAP ABAP CDS view里的注解在ABAP后台是如何被解析的?

    我们在ABAP Development Tool里编写SAP CDS view,为视图维护这些以@开头的注解,同Java Spring里广泛应用的annotation一样,都是一种为developme ...

  6. 利用VSCode阅读OpenFOAM源代码及其调试Debug【终极总结篇】

    利用VSCode阅读OpenFOAM源代码及其调试Debug[终极总结篇] 1. 本文总结了Win10系统中利用VSCode连接wsl或远程服务器,阅读OF源代码及其调试Debug的方法(不仅适用于W ...

  7. django源码简析——后台程序入口

    django源码简析--后台程序入口 这一年一直在用云笔记,平时记录一些tips或者问题很方便,所以也就不再用博客进行记录,还是想把最近学习到的一些东西和大家作以分享,也能够对自己做一个总结.工作中主 ...

  8. C++ 后台程序实时性能监控

    面对的问题: 做后台程序经常会被问一句话,你的程序能撑多少人.一般官方一点的回答是这个得根据实际情况而定.实际上后台程序的性能是可以被量化的.我们开发的每一个服务器程序,对性能都非常有底,以为我们有数 ...

  9. bash 后台程序_如何向您的Bash程序添加帮助工具

    bash 后台程序 在本系列的第一篇文章中,您创建了一个很小的单行Bash脚本,并探讨了创建Shell脚本的原因,以及为什么它们是系统管理员而非编译程序最有效的选择. 在第二篇文章中 ,您开始了创建一 ...

最新文章

  1. Git远程仓库Github
  2. Linux中source命令的用法
  3. 关于坐标系的那些事儿!(转)
  4. [转]侯捷对进入IT行业的年轻人的建议
  5. QT的QImage类的使用
  6. jakob slam_Jakob Nielsen针对用户界面设计的第二种可用性启发法
  7. java erlang_Java开发人员的Erlang
  8. MinIO存储桶通知指南 ​​​​​​​
  9. vista系统服务器,Vista系统中怎么设置IIS服务器
  10. 吃瓜笔记 | Momenta王晋玮:让深度学习更高效运行的两个视角
  11. 远端异步调用事件结果
  12. 分析 : BSOD案例 2013-0821
  13. java实体类中的枚举类型_Java枚举类的使用
  14. vue-video-player,切换页面时控制台报错:TypeError: this.el_.vjs_getProperty is not a function解决方案
  15. FFmpeg进阶: 给视频添加背景音乐
  16. 获取公众号关注页面链接
  17. java容器~面试知识点整理
  18. S-function入门及案例详解(2)——S-function基本案例介绍
  19. 【数据结构】红黑树前置知识——4阶B树
  20. CSS3案例之安卓机器人图形

热门文章

  1. 网易官宣:免费培养30名游戏开发人才!
  2. 一个人做饭简单食谱_如何通过两个简单的寿司布局食谱来理解CSS浮动
  3. 计算机ppt继续教育,word、excel、PPT继续教育计算机第四次.doc
  4. QQ活动助手,通过作者也就是我搜集各种QQ有关的活动,整理成软件的形式让大伙参加,实现一键参与和抽奖的一款小软件。。O(∩_∩)O~不过涉及的东西还是挺多的
  5. Android 10.0 Launcher3 电话和短信app图标显示未读短信和未接来电的条数
  6. [Python嗯~机器学习]---对于音乐推荐引擎的基本理解
  7. 蓝桥杯真题 包子凑数 c++代码实现 小明几乎每天早晨都会在一家包子铺吃早餐。他发现这家包子铺有 N 种蒸笼,其中第 i种蒸笼恰好能放 Ai个包子。
  8. 大气 html5 企业网站,高端大气HTML5科技企业网站响应式网站带后台
  9. lol服服务器维护算逃跑吗,英雄联盟掉线几分钟算逃跑
  10. ldap管理linux用户,ldap服务器用户及权限管理控制linux操作系统 -电脑资料