通过脚本在BPA中创建作业链失败

2020-09-13 18:08发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)我尝试在BPA中创建一个简单的工...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我尝试在BPA中创建一个简单的工作链,但是当我尝试设置步骤参数时却失败了

{

字符串pPartition =" GLOBAL";
字符串jdName =" MyJobChainWithPreconditionABAP";
字符串stepName =" Step1"; 尝试
{
//获取或创建一个分区(如果尚不存在,则在这里创建一个分区)
Partition partition = jcsSession.getPartitionByName(pPartition);
if(分区== null)
{
partition = jcsSession.createPartition();
partition.setName(pPartition);
}
jcsOut.println("-使用partition" + pPartition); //检查是否已经存在类型为JOB_CHAIN(链定义)的作业定义
jcsOut.println("-检查作业定义" + jdName +"是否存在!");
JobDefinition jDefinition = jcsSession.getJobDefinitionByName(partition, jdName);
if(jDefinition == null)
{
//创建类型为JOB_CHAIN的JobDefinition(链定义)
jcsOut.println("-JobDefinition" + jdName +"不存在,并且 将被创建!");
jDefinition = jcsSession.createJobDefinition();
jDefinition.setName(jdName);
jDefinition.setJobDefinitionType(jcsSession.getJobDefinitionTypeByName(JobDefinitionType.JOB_CHAIN));
jDefinition。 setPartition(partition); //用一个步骤和一个作业链调用创建JobChain对象
jcsOut.println("-用一个步骤和一个作业链调用创建JobChain对象");
JobChain jchain = jcsSession.createJobChain();
jchain.setJobDefinition(jDefinition); //创建步骤
jcsOut.println("-创建步骤");
JobChainStep jcstep = jchain.createJobChainStep();
jcstep.setSequenceNumber(Long.valueOf(0));
jcstep。 setName(stepName); //作业链调用
jcsOut.println("-创建作业链");
JobChainCall jccall = jcstep.createJobChainCall(); //设置步骤参数
jcsOut.println("-设置SAP_AbapRun的步骤参数");
JobDefinition jDefinitionStep = jcsSession.getJobDefinitionByName(" SAP_AbapRun");
作业过程= jDefinitionStep.prepare(); < br> process.getJobParameterByName(" SAP_SYSTEMS")。setInValueString(" XXX");
process.getJobParameterByName(" CLIENT")。setInValueString(" 010");
process.getJobParameterByName(" ABAP_PROGRAM_NAME")。setInValueString (" Z_TST_IDLE");
process.getJobParameterByName(" JOBNAME")。setInValueString(" Step1");
process.getJobParameterByName(" LANGUAGE")。setInValueString(" EN");

队列queue = jcsSession.getQueueByName(partition," XXX_Queue");
jcsOut.println("-Queue:" + queue);
process.setQueue(queue);

//分配参数
jcsOut.println("-分配参数");
jccall.setJobDefinition(jDefinitionStep);
jccall.setSequenceNumber(Long.valueOf(0)); }
else
{
jcsOut.println(" JobDefinition" + jdName +"存在!");
jcsOut.println("您可以在以下行更改JobDefinition名称:\ n字符串jdName = \" MyJobChainWithPrecondition \";");
}
//提交更改
jcsOut.println("-提交更改");
jcsSession.persist(); //脚本成功完成
jcsOut.println("-脚本成功完成");
}
catch(异常e)
{
jcsErr.println(e.getMessage());
throw e;
}
}

2条回答
奄奄一息的小鱼
2020-09-13 18:16 .采纳回答

你好

在将定义添加到调用的地方,您选择的路径错误。 像这样:

 {
   字符串pPartition =" GLOBAL";
   字符串jdName =" MyJobChainWithPreconditionABAP";
   字符串stepName =" Step1";
   尝试
   {
    //获取或创建一个分区(如果尚不存在,在这里创建一个分区)
     分区partition = jcsSession.getPartitionByName(pPartition);
     如果(分区==空)
     {
       partition = jcsSession.createPartition();
       partition.setName(pPartition);
     }
     jcsOut.println("-使用分区" + pPartition); //检查类型为JOB_CHAIN(链定义)的Job Definition是否已经存在
     jcsOut.println("-检查作业定义" + jdName +"是否存在!");
     JobDefinition jDefinition = jcsSession.getJobDefinitionByName(partition,jdName);
     如果(jDefinition == null)
     {
      //创建类型为JOB_CHAIN的JobDefinition(链定义)
       jcsOut.println("-JobDefinition" + jdName +"不存在,将被创建!");
       jDefinition = jcsSession.createJobDefinition();
       jDefinition.setName(jdName);
       jDefinition.setJobDefinitionType(jcsSession.getJobDefinitionTypeByName(JobDefinitionType.JOB_CHAIN));
       jDefinition.setPartition(partition); //通过一个步骤和一个工作链调用创建JobChain对象
       jcsOut.println("-用一个步骤和一个作业链调用创建JobChain对象");
       JobChain jchain = jcsSession.createJobChain();
       jchain.setJobDefinition(jDefinition); //创建步骤
       jcsOut.println("-创建步骤");
       JobChainStep jcstep = jchain.createJobChainStep();
       jcstep.setSequenceNumber(Long.valueOf(0));
       jcstep.setName(stepName); //工作链调用
       jcsOut.println("-创建工作链");
       JobChainCall jccall = jcstep.createJobChainCall(); //设置步骤参数
       jcsOut.println("-为SAP_AbapRun设置步骤参数");
       JobDefinition jDefinitionStep = jcsSession.getJobDefinitionByName(" SAP_AbapRun");
       jccall.setJobDefinition(jDefinitionStep);
       jccall.setSequenceNumber(Long.valueOf(0));
       JobChainCallInExpressionParameter jcciep = jccall.createJobChainCallInExpressionParameter();
       jcciep.setLocalJobDefinitionParameter(jDefinitionStep.getJobDefinitionParameterByName(" SAP_SYSTEMS");
       jcciep.setExpression(" XXX");
       jcciep = jccall.createJobChainCallInExpressionParameter();
       jcciep.setLocalJobDefinitionParameter(jDefinitionStep.getJobDefinitionParameterByName(" CLIENT");
       jcciep.setExpression(" 010");
       jcciep = jccall.createJobChainCallInExpressionParameter();
       jcciep.setLocalJobDefinitionParameter(jDefinitionStep.getJobDefinitionParameterByName(" ABAP_PROGRAM_NAME");
       jcciep.setExpression(" Z_TST_IDLE");
       jcciep = jccall.createJobChainCallInExpressionParameter();
       jcciep.setLocalJobDefinitionParameter(jDefinitionStep.getJobDefinitionParameterByName(" JOBNAME");
       jcciep.setExpression(" Step1");
       jcciep = jccall.createJobChainCallInExpressionParameter();
       jcciep.setLocalJobDefinitionParameter(jDefinitionStep.getJobDefinitionParameterByName(" LANGUAGE");
       jcciep.setExpression(" EN");


       队列队列= jcsSession.getQueueByName(partition," XXX_Queue");
       jcsOut.println("-队列:" +队列);
       JobChainCallSchedulingParameter jccsp = jccall.createJobChainCallSchedulingParameter();
       jccsp.setName(SchedulingParameterName.Queue);
       jccsp.setExpression(queue.getBusinessKey()。getPath()。toString());
     }
     其他
     {
       jcsOut.println(" JobDefinition" + jdName +"存在!");
       jcsOut.println("您可以在以下行上更改JobDefinition名称:\ n字符串jdName = \" MyJobChainWithPrecondition \";");
     }
    //提交更改
     jcsOut.println("-提交更改");
     jcsSession.persist(); //脚本成功完成
     jcsOut.println("-脚本成功完成");
   }
   捕获(异常e)
   {
     jcsErr.println(e.getMessage());
     抛出e;
   }
 }
 

关于Gerben

一周热门 更多>