点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)试图获取子作业的状态,但是它从与...
点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)试图获取子作业的状态,但是它从与...
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
试图获取子作业的状态,但是它从与预期不同的作业中返回状态。 不知道从哪里获取此信息。 我已附上返回信息的屏幕截图。 2018-09-28-07-45-32-sap-rq1-00global-sep-28-2018-7.jpg
{
//提交JobDef的代码
//变量
字符串sCheck ="错误";
字符串TheStatus ="";
字符串cCheck ="已完成";
//获取作业定义SAP_AbapRun
JobDefinition aJobDef = jcsSession.getJobDefinitionByName(" JOBTOSUBMIT");
//创建作业
Job aJob = aJobDef.prepare(); < br>
//分配参数
aJob.getJobParameterByName(" SOURCEDIR")。setInValueString(SRCEDIR);
aJob.getJobParameterByName(" SOURCEFILE")。setInValueString(SRCEFILE);
aJob.getJobParameterByName( " DESTDIR")。setInValueString(DSTDIR);
//分配队列,因为SAP作业需要一个队列
队列aQ = jcsSession.getQueueByName(" AQueue");
aJob.setQueue(aQ) ;
//提交作业定义并将未保存的数据写入数据库
jcsSession.persist();
//等待所有子级
//jcsSession.waitForAllChildren( aJob);
做{
TheStatus =(String)aJob.getStatus()。name();
jcsOut.println(" {");
jcsOut.println (TheStatus);
j csOut.println(aJob);
jcsOut.println("}");
如果(sCheck.equals(TheStatus))
{
throw new RuntimeException();
}
Thread.sleep (1000);
} while(!TheStatus.equals(" cCheck"));;
}
嗨,雅各布,
您需要进行以下更改。 在do-while循环中,添加以下行。
这可确保您从数据库中获得了正确的新作业实际状态(从计划到正在运行到已完成)。
仅获得计划的原因是,您是通过与 作业对象的缓存版本。 它不会跟踪作业的实际状态。 换句话说,它将无限期地返回"计划的"。
第43行出现错误,
删除引号,因为cCheck已经是一个字符串。 将其更改为:
让我知道是否可以解决问题。
K,
Bas
通过更改第34行,该作业现在返回正确的作业ID。 该状态仍处于预定状态,因此也许我在第30行的代码已关闭,而我正在为其他工作拉该状态?
该代码用于将子作业的状态返回到父作业。 如果子作业出错,则父作业也会出错。
嗨,雅各布,
您可以添加从Cronacle流程监视器完全展开的作业的屏幕截图吗?
为帮助识别工作ID,将第34行替换为以下内容:
在我看来,您提供的代码,提交一个作业并监视状态每1000毫秒完成一次,直到完成。
Kr,
Bas
一周热门 更多>