基于快速数据加载链将这些凭证数据快速加载至相应的数据模型。
[0030]下面对上述方法的各个步骤进行详细描述。
[0031]关于变动凭证的帐期过滤:在实际的处理中,首先会判断凭证的帐期信息,根据出具报表时帐期的限制要求,对不在当前报表出具的帐期范围内的变动凭证进行过滤。例如:在每个月初出具上一月份财务报表时,报表取数的范围是帐期小于等于上一月份。通常当日的变动凭证中绝大多数帐期等于当月,是报表出具不需要的数据,可以滤除。
[0032]关于凭证的变动时间过滤:通过该过程可以选取最近一段时间内变动的凭证,因为正常情况下,OLAP系统会定期与SAP ECC系统进行数据同步,时间间隔通常是I天或半天一次。因此,影响报表出具的数据通常是在上一次数据同步之后发生变动的凭证,因此可以通过凭证的变动时间过滤掉已经完成同步的凭证记录。
[0033]关于凭证的公司范围过滤:通过该过程可以选取当前要出具的报表所涉及的相关公司的凭证数据。因为各个公司出具报表的时间不同,各公司对SAP ECC数据有时效性要求的时间段是不同的,因此当需要出具报表时,仅筛选出当期用户所属公司的凭证信息即可。
[0034]关于PSA历史数据包存在性比对:该过程会将通过以上三个步骤筛选出来的凭证记录继续进行逐条比对与判断,通过在数据源的PSA中查询历史数据包中进行检索,判断凭证是否已经被加载过。标识出尚未加载过的凭证(例如,为有价值的凭证),可以提示给用户。
[0035]关于凭证抽取时间与变动时间比对:针对上一步骤中已经被加载过的凭证记录,需要进一步比对在PSA中记录的凭证抽取时间与变动凭证的变动时间,确认时间的先后顺序。标识出凭证变动时间晚于抽取时间的凭证(例如,为有价值的凭证),同样可以提示给用户。
[0036]关于数据模型加载完整性比对:针对变动凭证涉及的相关ECC数据模型,需要进一步判断这些数据模型中的数据加载请求包是否已经被成功加载完成,如尚未加载至最终数据模型,可以判断存在在途的数据。
[0037]在实施方式中为了确定变更的凭证数据,方法还可以包括:监控包含凭证信息修改时间的堆栈表,然后根据所述堆栈表中的凭证数据修改时间确定变更的凭证数据。在本发明的实施方式中,考虑到财务业务的实际需要,有抽取价值的凭证数据可以包括以下中的至少一者:未加载过的凭证数据、需要重新加载的凭证数据。在不同的业务需求下,有价值的凭证数据可以与此相同或不同。
[0038]在优选的实施方式中,方法的步骤可以通过具有对应于方法各个步骤的部分的模型来实施。在这样的实施方式中,方法还可以包括:构建对应于所述方法的每个步骤的模型,该模型被配置成以全部凭证数据作为输入,以及以有抽取价值的凭证数据作为输出;以及当所述模型中不存在在途的凭证数据时,确定输出全部有抽取价值的凭证数据。
[0039]在实施方式中的筛选数据模型可以是在筛选模组中一组用于存放数据的模型,根据数据加工及数据展示的需要,筛选清晰数据模型通常采用分段设计。例如,“初始部分”存储原始数据,“转换部分”进行加工数据的工作,“最终数据源”存储汇总后可供其他业务系统或OLAP系统进行抽取的数据源。由于ECC中的数据清洗模型采用上述分层设计,因此增量数据会以数据包的形式在结构中逐层加载。例如,当数据包加载至“最终数据源”后,可供最终查询及报表使用,当数据包未加载至“最终数据源”组表时,增量数据无法被最终查询及报表访问到,这部分数据被称为“在途数据”。因此,在实施方式中,根据数据包得加载状态可以判断是否存在在途的数据,以及可以根据判断存在在途数据的判断结果提示等待加载完成。
[0040]图2是根据本发明示例性实施方式的基于SAP的数据抽取方法流程图。如图2所示,本发明实施方式提供的基于SAP的数据抽取方法,可以包括:S201,将每个步骤划分为多个子任务节点;S202,分配完成子任务节点所需的运算到所述计算机集群中的多个计算机节点进行运算处理;S203,保存所述多个计算机节点运算处理的状态快照;以及S204,当所述子任务节点中断时,根据所述状态快照恢复中断前的子任务节点状态,以及继续执行中断的子任务节点。
[0041]通过上述技术方案,将完成一个任务链步骤所需的运算分配到多个计算机节点进行运算处理,能够将运算量化整为零,提高任务运行速度;通过保存运算处理的状态快照,在任务链步骤因故中断时,能够将任务链步骤恢复到中断前状态,从而从中断前状态开始继续执行任务链。因此,通过上述技术方案,当任务链步骤或节点失败时,能够从失败的步骤或节点继续执行任务链,而无需从初始状态重复执行,提高任务处理效率、降低资源浪费。
[0042]在优选的实施方式中,上述方法还可以包括:对多个计算机节点进行心跳检测;以及将分配到心跳检测无响应的计算机节点的运算再分配到其他计算机节点。通过心跳检测可以确定进行运算的计算机节点的工作状态。为了确保分配到每个计算机节点的运算都能够完成,当出现心跳检测无响应的计算机时,可以将分配到该计算机节点的运算重新分配到其他心跳检测正常的计算机节点。优选地,重新分配到的计算机节点可以是已完成被分配的运算的计算机节点,这样可以充分利用空闲计算资源完成运算。
[0043]为了使完成任务链中每个任务节点或子任务节点的运算的计算机节点能够获取运算所需的数据,在实施方式中,方法还可以包括:将所述多个计算机节点的运算处理结果保存到与所述计算机集群中的所有计算机节点连接的共享存储器。这样所有计算机节点可以在运算开始时从共享存储器获取运算数据,以及在运算完成时向共享存储器中存储运算结果。这里需要说明的是,计算机节点运算处理的状态快照也可以保存在共享存储器中,或者也可以单独设置快照存储器。存储器的实例包括但不局限于只读存储器(ROM)、随机存取存储器(RAM)、寄存器、缓冲存储器、半导体存储设备等。
[0044]在不同的实施方式中,该方法还可以包括:当执行当前子任务节点的所有计算机节点运算处理完成后,对完成下一个子任务节点所需的运算进行分配。在实施方式中,存在多种情况需要执行上述步骤。例如,对于大量运算,需要使用计算机集群中的所有计算机节点参与的子任务节点的运算,只有当所有计算机节点都完成运算处理后才能继续分配下一子任务节点的运算。再如,对于需要得到上一子任务节点的全部运算结果后才能分配下一子任务节点的运算的情况,方法中也需要包含这样的步骤。当然,在实施方式中,也可以将不同子任务节点的运算同时分配到计算机集群中的不同计算机节点组进行处理。
[0045]下面结合图3对基于SAP的数据抽取方法的实现过程进行说明。如图3所示,在一个任务链从开始到结束之间可以有多个任务节点(或网状处理节点),每个任务节点中可以包括(例如具有网状拓扑结构的)多个子任务节点,每个子任务节点的运算可以被分配到计算机集群中的一个或多个计算机节点(图中未示出)进行处理。每个计算机节点所要进行的运算可以由统一的总控单元进行,该总控单元可以是计算机集群中的一个计算机节点,同时负责计算机集群中其他所有计算机节点的心跳检测。与运算相关的上下文共享数据(例如,计算机节点的运算处理结果)可以被保存到与所述计算机集群中的所有计算机节点连接的共享存储器。在完成最后一个网状处理节点的运算后,可以输