需要帮助返回孩子的工作状态

2020-09-12 18:31发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)试图获取子作业的状态,但是它从与...

         点击此处--->   EasySAP.com群内免费提供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"));;
}

2018-09-28-07-45 -32-sap-rq1-00global-sep-28-2018-7.jpg (12.4 kB)
3条回答
落灬小鱼
2020-09-12 19:25 .采纳回答

嗨,雅各布,


您需要进行以下更改。 在do-while循环中,添加以下行。

做{
 jcsSession.refreshObjects(new SchedulerEntity [] {aJob});
 ... 

这可确保您从数据库中获得了正确的新作业实际状态(从计划到正在运行到已完成)。
仅获得计划的原因是,您是通过与 作业对象的缓存版本。 它不会跟踪作业的实际状态。 换句话说,它将无限期地返回"计划的"。

第43行出现错误,

} while(!TheStatus.equals(" cCheck")); 

删除引号,因为cCheck已经是一个字符串。 将其更改为:

} while(!TheStatus.equals(cCheck)); 


让我知道是否可以解决问题。

K,

Bas

一周热门 更多>

相关问答