SAP JOB长期处于READY状态

多内容关注公众号:SAP Technical 

点击进入:SAP JOB长期处于READY状态

正常情况下,长期处于ready状态的后台作业应该不是正常的系统响应。如果使用TCODE:SM65执行状态检查或一致性检查,则可以消除这种情况。但是,这种情况会经常发生,我们应该想一个办法解决这个问题。

 

如果检查发现要执行的后台作业是空闲工作进程,则系统将此作业的状态设置为ready,然后使用调度程序发送启动消息。在正常情况下,后台工作进程会立即收到此消息,然后将状态设置为running。

 

如果在发送或接收期间出现问题,则作业状态仍为ready,系统不再执行该状态。该系统响应的可能原因如下几种:

1、系统无法发送消息(很少见)

2、接收后台工作进程没有数据连接,因此无法更改作业状态(比较常见)

3、接收后台工作进程重复重启(很少见)

 

下面来讨论一下怎么解决这种情况,如果你的系统比较新,从SAP Basis Release 740 SP5开始,对于挂起状态为ready的作业,有一个自动重启机制。 你不再需要做任何事情。但是,现在很多项目还在处于比较旧的版本,这就需要我们手动去调整了。

 

执行以下步骤以确定问题的原因:

1、检查系统日志(TCODE:SM21),调度程序跟踪文件(dev_disp)以及后台工作进程的跟踪文件中的错误消息。 在事务SM37中的Executing Server字段中,系统显示已处理或将要处理受影响作业的实例的名称。

 

2、在系统日志(TCODE:SM21)和后台工作进程的跟踪文件中,检查引用数据库连接问题的错误消息。 在事务SM37中的Executing Server字段中,系统显示处理受影响作业的实例的名称。

 

3、在系统日志(TCODE:SM21)和后台工作进程的跟踪文件中,检查显示进程重新启动的错误消息。

 

我们可以使用事务SM37中的状态检查将受影响的作业的状态设置为scheduled或重新启动作业。

<think>嗯,用户给了一段ABAP代码,看起来是SAP报表程序的结构。他们希望优化这段代码并加上注释。首先,我需要仔细阅读这段代码,理解各个部分的功能。 用户提供的代码以REPORT ZQT开头,然后包含了几个INCLUDE文件,比如YPPR074_TOP、SCREEN、FROM、CLASS。这些INCLUDE通常用来分割程序的不同部分,比如数据定义、屏幕元素、表单逻辑和类定义。接下来是DATA语句声明了functxt变量,类型为smp_dyntxt。然后是INITIALIZATION、AT SELECTION-SCREEN等事件块,以及一些PERFORM语句调用子例程。 用户可能希望优化代码结构,添加注释,使代码更易读和符合ABAP最佳实践。首先,检查代码是否有冗余部分,比如不必要的空行或重复的注释。然后,考虑将INCLUDE文件名改为更清晰的名称,例如将YPPR074_TOP改为ZINCLUDE_TOP,这样更符合命名规范。 另外,代码中的事件块如INITIALIZATION、AT SELECTION-SCREEN等,虽然已有部分注释,但可以进一步用中文详细说明每个事件的作用和执行时机。例如,INITIALIZATION在程序启动时初始化数据,AT SELECTION-SCREEN在屏幕显示前处理输入验证等。 PERFORM调用的子例程名称如frm_ready_report_cx、frm_pre_fieldcat等,可能需要更明确的命名,例如使用动词开头,如prepare_report_data、build_field_catalog等,这样更直观。同时,在注释中解释每个子例程的具体功能,帮助其他开发者理解。 在代码结构上,确保每个事件块之间有适当的空行分隔,注释对齐,增加可读性。此外,检查是否有可以合并或优化的步骤,例如在START-OF-SELECTION中处理数据准备,END-OF-SELECTION处理ALV显示的设置,这些部分是否逻辑清晰。 还需要注意ABAP的编码规范,比如变量命名使用有意义的前缀,避免缩写,使用英文或一致的命名方式。虽然用户要求用中文注释,但变量和子例程名最好保持英文,符合SAP标准。 最后,添加文件头的注释,说明程序名称、作者、创建日期、功能描述等,方便后续维护。同时,在每个INCLUDE文件前加上注释,说明其包含的内容,如全局变量定义、屏幕元素、子例程、类定义等。 可能用户没有提到但需要注意的点包括:检查INCLUDE文件是否存在,确保程序没有语法错误;确认所有子例程在对应的INCLUDE中有实现;ALV显示部分是否符合最新的SAP UI标准;是否有权限检查或异常处理机制需要补充。 总结下来,优化方向包括代码结构整理、命名规范、注释补充、符合ABAP最佳实践,以及确保程序功能正确性和可维护性。</think>以下是对代码的优化及详细注释建议: ```abap *&---------------------------------------------------------------------* *& 程序名称 : ZQT * *& 作者 : [您的姓名] * *& 创建日期 : [日期] * *& 描述 : 自定义报表程序,用于展示ALV网格数据 * *&---------------------------------------------------------------------* *&---------------------------------------------------------------------* *& 包含文件(建议按功能拆分) * *&---------------------------------------------------------------------* INCLUDE ZINCLUDE_TOP. " 全局变量、结构、表定义 INCLUDE ZINCLUDE_SCREEN. " 选择屏幕定义 INCLUDE ZINCLUDE_FORM. " 子例程(Form)定义 INCLUDE ZINCLUDE_CLASS. " 类和方法定义 *&---------------------------------------------------------------------* *& 全局数据定义 * *&---------------------------------------------------------------------* DATA: functxt TYPE smp_dyntxt. " 用于功能代码文本的存储 *&---------------------------------------------------------------------* *& 初始化事件(程序启动时执行) * *&---------------------------------------------------------------------* INITIALIZATION. PERFORM init_default_values. " 初始化默认值 *&---------------------------------------------------------------------* *& 选择屏幕处理事件(屏幕显示前执行) * *&---------------------------------------------------------------------* AT SELECTION-SCREEN. PERFORM validate_input. " 输入参数校验 *&---------------------------------------------------------------------* *& 主数据处理事件(选择屏幕确认后执行) * *&---------------------------------------------------------------------* START-OF-SELECTION. PERFORM get_data_from_db; " 从数据库获取数据 PERFORM process_business_logic; " 执行业务逻辑处理 *&---------------------------------------------------------------------* *& 数据展示准备事件(数据处理完成后执行) * *&---------------------------------------------------------------------* END-OF-SELECTION. PERFORM build_header USING gt_list_top_of_page[]; " 构建报表抬头 PERFORM prepare_fieldcat CHANGING gt_fieldcat[]; " 准备字段目录 PERFORM setup_alv_layout CHANGING gs_layout; " 设置ALV布局 PERFORM register_events CHANGING gt_events[]; " 注册事件处理 PERFORM display_alv_report; " 展示ALV报表 *&---------------------------------------------------------------------* *& 页面抬头输出事件(每页顶部显示) * *&---------------------------------------------------------------------* TOP-OF-PAGE. PERFORM print_page_header; " 输出页眉信息 *&---------------------------------------------------------------------* *& 页面结尾输出事件(每页底部显示) * *&---------------------------------------------------------------------* END-OF-PAGE. PERFORM print_page_footer; " 输出页脚信息 ``` 优化建议说明: 1. 命名规范优化: - 将 `YPPR074_*` 系列包含文件重命名为更有意义的名称(如示例中的`ZINCLUDE_*`) - 子例程命名采用动词+名词结构(如`get_data_from_db`) 2. 事件处理优化: - 每个事件块添加中文注释说明执行时机 - 拆分数据处理逻辑到独立子例程 - 增加输入参数校验环节 3. ALV显示优化: - 明确分离布局设置、字段目录、事件注册等步骤 - 使用更语义化的子例程名称 4. 注释规范: - 添加程序头文件说明 - 关键步骤添加功能注释 - 子例程参数添加USING/CHANGING说明 5. 代码结构优化: - 使用分号分隔同一行的多个PERFORM调用 - 保持一致的缩进格式 - 移除冗余空行 建议补充的增强功能: 1. 异常处理机制(TRY/CATCH) 2. 权限检查(AUTHORITY-CHECK) 3. 后台作业支持(JOB SUBMIT) 4. 导出功能(Excel/PDF导出) 5. 动态选择屏幕字段控制
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值