计划处理链的很多种情况factory calendar

要去跑一个处理链,有很多种情况。

每天定点跑一次。
每天不定点跑很多次。

月初月末那几天每天不定点跑很多次。

haha,感觉写下来怪怪的。这个处理链的小脾气还挺多的。
一般是在开始进程里搞:
开始进程有两大招:

  1. 自己跑,想怎么跑怎么跑:scheduled
  2. 别人通知了再跑: External start only (via API or metachain)
    在这里插入图片描述
    自己跑就是scheduled: 有好几种情况
    在这里插入图片描述
    当你设定了这个scheduled跑,那就会有个scheduled jobs:
    在这里插入图片描述
    后台会自动给你release一个job叫BI_PROCESS_TRIGGER,这个job是对应开始进程的。
    一般开始进程下都是DTP,那么这些DTP进程都会由这个BI_PROCESS_TRIGGER来触发其他的event job。

如果你是用主链或者API来计划链,那就没有BI_PROCESS_TRIGGER这个job了。
它作为子链可以按主链延递的顺序跑,或者是通过API(就是那个FM:RSPC_API_CHAIN_START)来跑。这就让我想到一个问题了,如果是用API来跑,那么后台也会有一个JOB,这个JOB里会给RSPROCESS这个program一个对应到处理链的变量,然后这个变量就可以用在自建的JOB里去启动这个处理链。没这么做过的还真不理解。

回到这个自己跑的方式,假设我们想要这个处理链每月的1号跑:
那就是Montnly.
每两个月跑一次呢,就是other period-> 2 months.
在这里插入图片描述
假设这个链要每天跑两次,在不同时间段,早上7点,下午1点。
那就先设置一个早上7点的daily的,激活链,schedule链。此时就有了scheduled jobs了,然后去干啥?
去找这个schuduled job.
在这里插入图片描述
在这里插入图片描述
然后去改一个另外的时间:
在这里插入图片描述
为什么这样可以?
因为这个repeat就相当于一个复制了的job,而且这个job里面已经有了这个处理链的开始进程参数了。
我们只是重复设置了一个时间让它这个job再去跑一遍这个处理链。去看这个变量的值,就是处理链开始进程。
在这里插入图片描述
那么这样之后,会有什么情况呢?你会发现这个处理链的开始进程变红了,这个意思就是它有很多个计划时间。有很多个released的job。
你想一天执行好几遍这个链,那你就可以直接复制job。
每个月的哪天执行好几遍,也可以这样复制job。这样的话就可以直接在右键scheduled job里面看到好几个它的schedule的时间。不好的点就是它的job名字都是BI_PROCESS_TRIGGER。如果你是直接自己建一个job,然后把相同的变量填进去,那么就可以自己起一个job名。这样不好的点就是不能关联到这个Chain上面去了。在处理链界面看不到。只能在Job里看到。
在这里插入图片描述

或者还可以咋办?
还有一个复杂点的方法。
当你去执行一个链的时候,还有after job, after event 等等。
那你可以去after event.

event 是要在SM62里面去建的。
然后去。SM36去建job,job里面简直跟process开始进程一样的:
job 还能after job, after event呢。
在这里插入图片描述
job里面要干啥?
我们定义处理链开始进程的job时候,是直接一个RSPROCESS的ABAP程序,变量都给我们自动填成了处理链开始进程,就是去触发它。

如果说我们让处理链的开始进程是去after event的,那咋整?
这个event也是要触发的,那就在job里面的step里去触发这个event,用program BTC_EVENT_RAISE,填你建好的event作为变量名。
在这里插入图片描述
在这里插入图片描述

然后在你设定的job的运行时间里,这个job就会去触发event去了,触发完了event,处理链那个after event的,就会去跑了。
你要一天跑3次的,就去建3个job。对应3个不同的开始时间。
或者你自己去写一个程序,调用method cl_batch_event , event id就是你建的event。也就是用这个程序去raise event。
在这里插入图片描述
这个么,就是又多了一步。
不过这思来想去,这从不同的job开始时间通过program去触发event,再调起一个after event的处理链,我觉得不是跟不同job开始时间直接去调用after job的处理链一个意思么,走这么一大圈去用program,去用event,不是脱裤子放屁么。

就算我是要用job里面的日历,比如月初如果是节假日就不跑,那么我这不还是在job里面就定义好了,用那个event意义何在呢,我暂时还没想通。
就比如说,只在每月的1-20号,月末的最后两天跑这个链。
那我就是要用到日历factory calendar.
在SCAL
在这里插入图片描述
创建工厂日历,就是哪些是工作日,哪些是周末,哪些是节假日。
比如说血汗工厂一周7天都是工作日。。。

要定义工厂日历,得把节假日单拎出来。
就是还要建个holiday calendar.
点change进去。新建。
在这里插入图片描述
要填ID和文本,确定可用时限,确定holiday日历编号,确定工作日是哪些天。
在这里插入图片描述
相关program:
在这里插入图片描述

那么对于我们上面这个要在每月前20日和后两日跑的呢?
那就去把前20天和后两天当做工作日,其他日子都不是。
最后去处理链开始进程,restriction里头,选中刚定义的工厂日历。然后不在节假日跑。
在这里插入图片描述
这个当然也可以就平时跑处理链不跑在周末和节假日的,用已经有的工厂日历。
因为这个要跑的日子多,所以就去弄个日历一了百了。
如果说只要每月前两天和后两天的,那还是直接去建好多个job吧。我觉得弄这个日历也挺麻烦的。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xiaomici

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值