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

2020-09-13 18:08发布

         点击此处--->   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;
}
}

         点击此处--->   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条回答
奄奄一息的小鱼
1楼 · 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

浮生未央
2楼-- · 2020-09-13 18:37

Hello Gerben

非常感谢您的快速回复和帮助。 我能够使用您的代码示例成功创建工作链。

我仅修复了一些语法错误,并将jcciep.createJobChainCallSchedulingParameter修复为jccall.createJobChainCallSchedulingParameter()。

这是已更正且有效的代码:

{
字符串pPartition =" GLOBAL";
字符串jdName =" MyJobChainWithPreconditionABAP";
字符串stepName =" Step1";
try
{
//获取或创建 一个分区(如果尚不存在,则在此处创建一个分区)
分区partition = jcsSession.getPartitionByName(pPartition);
if(partition == null)
{
partition = jcsSession.createPartition( );
partition.setName(pPartition);
}
jcsOut.println("-使用partition" + pPartition); //检查是否已存在类型为JOB_CHAIN(链定义)的作业定义
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"));
jccieion "];
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.createJobChainCallInExpress; initionParameter(jDefinitionStep.getJobDefinitionParameterByName(" JOBNAME"));
jcciep.setExpression(" Step1");
jcciep = jccall.createJobChainCallInExpressionParameter();
jcciep.setLocalJobDefinitionParameter(jDefinitionStep.getJobDefinitionParameterByName" LAN );
jcciep.setExpression(" EN");
队列队列= jcsSession.getQueueByName(分区," XXX_Queue");
jcsOut.println("-队列:" +队列);

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

一周热门 更多>