您的采购到付款 - 发票处理数据模板
您的采购到付款 - 发票处理数据模板
- 建议收集的属性
- 需要跟踪的关键活动
- SAP ECC数据提取指南
采购到付款 - 发票处理属性
| 名称 | 说明 | ||
|---|---|---|---|
| 事件时间 EventTime | 活动发生时的精确时间戳,包括日期和时间。 | ||
| 说明 事件时间记录业务活动在源系统中执行并留存记录的准确时刻。它构成流程的时间顺序基础,将每张发票的所有活动串联成连贯的序列。 在分析中,事件时间是计算各类时长指标的基础,例如周期时间、等待时间,以及活动之间的处理时间。它为“发票端到端周期时间”和“付款冻结解决时长”等仪表板提供数据,用于衡量流程中任意两个节点之间经过的时间。准确的时间戳对于识别延迟和绩效瓶颈至关重要。 重要性 此时间戳对于正确排列事件顺序和计算周期时间、瓶颈持续时间等绩效指标至关重要。 获取途径 通常将变更凭证表头CDHDR中的变更日期(UDATE)和变更时间(UTIME)合并得出。对于特定创建事件,也可以使用RBKP等表中的创建日期和时间(ERNAM、ERZET)。 示例 2023-03-15T10:30:00Z2023-03-16T14:05:21Z2023-03-28T09:00:00Z | |||
| 发票编号 InvoiceNumber | 供应商发票凭证的唯一标识符。 | ||
| 说明 发票编号是发票处理过程的唯一案例标识符。每个编号对应一张从供应商处收到的发票,可将从数据采集到最终付款的所有相关活动关联起来,作为同一个流程实例进行跟踪。 在流程挖掘分析中,此属性是重建每张发票端到端生命周期的基础。它能将SAP中分别记录的暂存、过账、冻结和清账等事件按时间顺序关联起来,清晰呈现每张发票的处理方式、所需时间,以及偏离标准流程的环节。 重要性 这是关联单张发票所有事件的主键,是流程分析和流程变体探索的基础。 获取途径 通常使用SAP表RBKP中的凭证编号字段BELNR,并与公司代码(BUKRS)和会计年度(GJAHR)拼接,以确保绝对唯一。 示例 510004567851000456795100045680 | |||
| 活动 Activity | 发票处理生命周期中发生的具体业务步骤或事件的名称。 | ||
| 说明 活动属性表示发票处理工作流中的特定阶段或操作。这些活动根据多种系统事件得出,例如凭证创建、状态变更、审批,或SAP变更日志中记录的用户操作。 活动分析是流程挖掘的核心。它可以将流程图可视化,识别瓶颈(例如“发票已提交审批”后长时间等待)、返工循环(例如反复出现“已设置付款冻结”和“已解除付款冻结”),以及合规偏差。活动的顺序和频率揭示了流程的实际运行情况。 重要性 此属性定义流程图中的步骤,支持流程可视化、瓶颈发现和返工识别。 获取途径 此属性通常根据多个来源得出,包括事务代码(SY-TCODE)、RBKP等表中的状态字段(如RBSTAT),以及CDHDR和CDPOS表中的变更事件。 示例 发票已暂存发票已提交审批发票已批准发票已过账发票已清账 | |||
| 付款冻结原因 PaymentBlockReason | 用于说明发票被冻结付款原因的代码。 | ||
| 说明 发票存在差异或需要进一步调查时,系统会设置付款冻结。付款冻结原因代码用于说明冻结原因,例如数量差异、价格差异或人工冻结。 该属性是“付款冻结解决时长”仪表板的重要依据。按原因分析冻结的频率和持续时间,有助于找出付款延迟的根本原因。例如,如果“价格差异”是导致长期冻结的最常见原因,可能说明主数据或采购订单流程存在问题,需要进一步处理。 重要性 该属性说明发票延迟的原因,有助于分析付款冻结的根本原因,并确定流程改进工作的优先级。 获取途径 付款冻结原因可在表RSEG的行项目级字段SPGRS中查找,也可在会计凭证表BSEG的字段ZLSPR中查找。 示例 RIM | |||
| 付款到期日 PaymentDueDate | 根据付款条款,发票应付给供应商的截止日期。 | ||
| 说明 付款到期日根据发票基准日期和约定的付款条款计算得出。该日期是付款截止时间,逾期可能导致罚款或损害供应商关系。 该属性对于“按时付款率”和“现金折扣机会损失”等绩效与合规KPI至关重要。将实际付款日期(清账日期)与付款到期日进行比较,分析即可自动判断付款是按时、提前还是逾期。该属性也是付款条款遵循情况仪表板的基础。 重要性 该日期是衡量按时付款表现和识别提前付款折扣获取机会的基准。 获取途径 该日期通常通过计算得出。付款基准日期(ZFBDT)位于表BSEG中,到期日的计算逻辑还取决于付款条款(BSEG-ZTERM)。 示例 2023-04-192023-05-052023-05-11 | |||
| 供应商编号 VendorNumber | 提交发票的供应商的唯一标识符。 | ||
| 说明 供应商编号是用于识别供应商的主数据键,可将发票交易关联到特定业务伙伴,从而按供应商特征进行分析。 按供应商编号分析流程,可以深入了解供应商关系和绩效。例如,您可以识别哪些供应商经常提交有问题的发票,导致付款冻结或出现差异;也可以找出哪些供应商的发票处理效率最高。这些信息有助于供应商管理和战略寻源。 重要性 此属性支持按供应商分析,帮助识别特定供应商相关的模式、问题或效率表现。 获取途径 此属性取自发票凭证表头RBKP中的“开票方”字段(LIFNR)。 示例 100345100876200112 | |||
| 发票金额 InvoiceAmount | 发票原始凭证币种的含税总金额。 | ||
| 说明 发票金额表示供应商提交发票的总金额,是每个发票案例的重要财务指标。 在流程挖掘中,此属性是按金额分析的基础。您可以根据发票金额筛选和细分流程,因为金额往往与流程复杂程度和审批要求相关。例如,高金额发票可能需要经过不同且更严格的审批路径。此属性也可用于合规分析,例如检查高金额发票是否绕过了规定的审批步骤。 重要性 此属性支持按金额分析,帮助优先呈现高金额发票,并了解发票金额对流程和合规的影响。 获取途径 此属性取自发票凭证表头RBKP中的“发票含税总金额”字段(RMWWR)。 示例 1500.7512500.00850.20 | |||
| 清账日期 ClearingDate | 付款完成且发票从应付账款中清账的日期。 | ||
| 说明 清账日期标志着发票生命周期的最后一步:付款。系统通过付款凭证清账未结发票行项目的日期,即为清账日期,也代表实际付款执行时间。 该属性是“平均发票周期时间”和“按时付款率”等多项关键KPI的终点。将其与付款到期日比较,可衡量付款表现。分析现金折扣时,则将其与折扣期限比较,判断付款是否及时,从而获取折扣。 重要性 该日期标志流程完成,是计算总周期时间、按时付款率和现金折扣实现情况的依据。 获取途径 对于已清账的行项目,该字段对应已清账供应商行项目表BSAK中的“Clearing Date”字段(AUGDT)。 示例 2023-04-152023-05-022023-05-20 | |||
| 用户名 UserName | 执行活动人员的SAP用户ID。 | ||
| 说明 用户名属性用于识别流程中负责执行特定活动的人员,通常是事务或变更事件中记录的SAP用户名。 此属性对于按用户或团队分析绩效至关重要。它有助于回答“哪些审批人处理得最快?”或“哪些用户造成的返工最多?”等问题。仪表板可利用此属性分析工作量分配、识别培训需求,并了解不同员工之间的绩效差异。 重要性 此属性支持按个人或团队分析绩效和工作量,帮助识别表现突出的人员、培训机会和资源分配失衡。 获取途径 此属性通常取自变更凭证表头CDHDR中的“更改人”字段(USERNAME)。对于创建事件,也可以取自RBKP等表中的“录入人”字段(ERNAM)。 示例 JSMITHBWILSONCHEN | |||
| 过账日期 PostingDate | 发票正式记入财务账簿的日期。 | ||
| 说明 过账日期是会计流程中的关键日期,决定发票费用计入总账的会计期间。通常由应付账款专员在处理发票时设置。 在流程分析中,由该日期标记的“发票已过账”活动是一个重要里程碑。从收到发票到过账日期的时长,是整体周期时间的重要组成部分。该日期也是财务报告和吞吐量分析的基础,例如跟踪每周或每月的发票过账量。 重要性 该日期标记流程中的重要里程碑,决定交易所属的财务期间,也是计算周期时间的关键依据。 获取途径 该字段对应发票凭证抬头表RBKP中的“Posting Date”字段(BUDAT)。 示例 2023-03-202023-04-052023-04-11 | |||
| 采购订单编号 PurchaseOrderNumber | 与发票匹配的采购订单(PO)的标识符。 | ||
| 说明 采购订单编号将发票关联到原始采购凭证,是三方匹配(采购订单、收货单、发票)以及分析采购订单关联发票处理效率的基础。 此属性对于“发票与采购订单匹配差异率”等仪表板至关重要。它可以将流程划分为采购订单关联发票和非采购订单发票,这两类发票的处理路径和复杂程度往往大不相同。分析特定采购订单相关问题,有助于诊断采购流程上游环节的问题。 重要性 此属性将发票与采购流程关联起来,支持分析采购订单关联发票与非采购订单发票,并识别匹配差异。 获取途径 此属性通常位于行项目级别。发票项目表RSEG中的“采购订单编号”字段为EBELN,可能需要汇总到表头级别。 示例 450001756345000175644500017565 | |||
| 上次数据更新 LastDataUpdate | 表示流程数据上次从源系统刷新时间的时间戳。 | ||
| 说明 此属性记录最近一次数据提取或更新的日期和时间,适用于整个数据集,而非单个事件,可清楚表明数据的时效性。 对于仪表板用户和分析人员而言,这是一项重要的元数据属性。它有助于了解分析涵盖的时间范围,并确保决策依据是最新信息。仪表板通常会醒目显示此属性,告知用户数据的更新时间。 重要性 此属性可告知用户数据的时效性,确保分析和决策基于最新信息。 获取途径 数据刷新时,数据提取工具或ETL工具会生成此值并写入数据集。 示例 2024-05-20T08:00:00Z2024-05-21T08:00:00Z2024-05-22T08:00:00Z | |||
| 付款条款 PaymentTerms | 用于定义与供应商约定的付款条件的代码,例如折扣期限和到期日。 | ||
| 说明 付款条款规定发票的付款时间,以及提前付款是否可享受现金折扣。例如,“净额30天”或“2% 10天,净额30天”表示10天内付款可享受2%的折扣,否则须在30天内付清全额。 该属性是“现金折扣机会损失”仪表板和“现金折扣获取率”KPI的基础。分析会结合付款条款、过账日期和付款日期,判断是否有折扣可用以及是否成功获取折扣。该属性也是付款条款遵循情况仪表板的关键依据。 重要性 该属性对于分析现金折扣获取率、了解流程延迟造成的财务影响至关重要。 获取途径 该字段对应发票凭证抬头表RBKP中的“Terms of Payment Key”字段(ZTERM)。 示例 Z0010001NT30 | |||
| 公司代码 CompanyCode | 处理发票的法人实体或公司的标识。 | ||
| 说明 公司代码是SAP财务中的基本组织单位,代表一个独立法人实体。包括发票在内的所有财务交易都记入特定公司代码。 该属性支持按法人实体细分流程分析,对于比较集团内不同公司的流程表现、合规情况和效率至关重要。您可以按公司代码筛选仪表板,查看特定公司的发票处理KPI。 重要性 该属性支持比较组织内不同法人实体的流程表现和基准。 获取途径 该字段对应发票凭证抬头表RBKP中的“Company Code”字段(BUKRS)。 示例 10002000US01 | |||
| 凭证类型 DocumentType | 用于对会计凭证分类的代码,例如供应商发票或贷项通知单。 | ||
| 说明 凭证类型用于对SAP中的不同业务交易进行分类。发票处理中,常见类型包括标准发票“RE”和供应商贷项通知单“KG”。凭证类型会控制过账的某些方面,例如所使用的编号范围。 在分析中,该属性可用于筛选特定交易类型。例如,贷项通知单的处理流程可能与标准发票大不相同。按凭证类型区分这些顺序流,可以更准确地呈现流程。 重要性 该属性可区分并分析不同业务交易,例如采用不同流程的发票和贷项通知单。 获取途径 该字段对应发票凭证抬头表RBKP中的“Document Type”字段(BLART)。 示例 REKRKG | |||
| 币种 Currency | 发票金额所用的币种代码。 | ||
| 说明 Currency属性表示发票金额所用的币种,例如USD、EUR或JPY。 该属性为Invoice Amount提供必要的背景信息,确保财务数据得到正确解读和汇总。对于涉及多种币种的跨国组织,这一点尤为重要。您可以按币种筛选分析结果,比较不同币种区域的处理效率或问题。为便于汇总财务数据,可能需要将金额换算为统一的报告币种。 重要性 该属性为各类财务金额提供必要的背景信息,确保金额得到准确解读,并支持按币种筛选和分析。 获取途径 该字段对应发票凭证抬头表RBKP中的“Currency Key”字段(WAERS)。 示例 USDEURGBP | |||
| 总账科目 GeneralLedgerAccount | 用于记入发票费用或成本的总账科目编号。 | ||
| 说明 总账科目是科目表中的目标科目,用于记录发票产生的财务影响。这是财务报告和成本管理的重要数据。 在流程挖掘中,分析总账科目可为流程顺序流增加财务维度。“总账科目使用情况分析”仪表板可以揭示支出模式、发现发票科目可能错记的情况,并确保成本分配到正确的部门或项目。它有助于关联流程执行与财务影响。 重要性 该属性为流程增加财务维度,支持分析成本分配、支出模式和发票科目错记的可能性。 获取途径 该字段位于行项目级别。采购订单发票的“总账科目编号”(HKONT)位于发票行项目表RSEG中,直接FI发票的该字段位于BSEG中。 示例 630000655100741000 | |||
| 拒绝原因 RejectionReason | 说明发票在审批工作流中被拒绝原因的代码或文本。 | ||
| 说明 审批人拒绝发票时,通常应说明拒绝原因。原因可以是标准代码,也可以是自由文本,例如“采购订单编号错误”“重复发票”或“金额错误”。 这些数据对于“发票拒绝原因与趋势”仪表板至关重要。分析不同拒绝原因的出现频率,有助于企业发现常见问题并采取纠正措施。例如,“采购订单编号错误”频繁出现,可能意味着需要加强与供应商的沟通,或为数据录入人员提供培训。这类分析有助于减少流程返工。 重要性 该属性揭示拒绝发票的根本原因,支持有针对性的流程改进,减少返工并提高一次做对率。 获取途径 此信息通常不会存储在单一的标准字段中,可能位于工作流容器日志、与凭证关联的长文本字段,或自定义工作流解决方案的特定字段中。 示例 重复发票金额错误未匹配采购订单 | |||
| 是否逾期 IsOverdue | 用于标记发票是否在付款到期日之后才完成付款的计算字段。 | ||
| 说明 这是一个布尔属性,通过比较“清账日期”(实际付款日期)和“付款到期日”计算得出。如果清账日期晚于到期日,该标记为true;否则为false。该属性可直接衡量每张发票的按时付款表现。 该属性简化了仪表板中的分析和可视化。您可以轻松筛选和汇总数据,计算“按时付款率”KPI。还可以快速按逾期发票和按时付款发票细分流程,比较两者的流程顺序流,从而发现可能导致延迟付款的流程模式。 重要性 该属性简化了按时付款表现分析,便于比较按时付款和逾期付款的发票流程。 获取途径 SAP中没有此属性。该属性在数据转换期间通过公式计算:ClearingDate > PaymentDueDate。 示例 truefalse | |||
| 是否错失现金折扣 IsCashDiscountLost | 用于标记是否错失可用现金折扣的计算字段。 | ||
| 说明 这是一个布尔属性,根据付款条款和实际付款日期计算得出。如果“付款条款”提供提前付款折扣,而“清账日期”晚于折扣期限,则该属性设为true。它可直接衡量流程效率低下造成的财务损失。 该属性是“现金折扣机会损失”仪表板的基础,可轻松量化处理延迟造成的财务影响。分析人员可以筛选该标记为true的案例,调查最常导致折扣错失的具体流程变体和瓶颈,为流程改进提供有力的商业论证。 重要性 该属性直接量化流程延迟造成的财务损失,为优化发票处理工作流提供有力依据。 获取途径 SAP中没有此属性。该属性在数据转换期间通过解析“PaymentTerms”,并将“ClearingDate”与折扣到期日进行比较来计算。 示例 truefalse | |||
| 源系统 SourceSystem | 标识数据提取自哪个具体源系统。 | ||
| 说明 源系统属性表示事件数据的来源,例如某个SAP ECC实例的名称。在拥有多个ERP系统或需要合并不同来源数据的环境中,此属性尤为重要。 分析时,此属性有助于区分不同系统、地区或业务单元的流程和绩效,尤其适用于分别运行在不同实例上的业务。它还能清晰呈现数据沿袭,并支持按系统筛选和分析。 重要性 在多系统环境中,此属性提供重要背景信息,支持正确隔离数据并按系统分析绩效。 获取途径 通常在数据提取过程中添加一个静态值,表示SAP系统ID(TADIR-SRCSYSTEM),或为特定SAP实例手动分配的标识符。 示例 SAPECC_PROD_EUECC_US_FINSAP_ERP_6_EHP8 | |||
| 结束时间 EndTime | 表示活动完成时间的时间戳。对于瞬时事件,此时间与开始时间相同。 | ||
| 说明 结束时间属性标记特定活动的完成时刻。SAP中的许多事件只记录一个时间点,因此结束时间与开始时间相同。但对于具有可测量时长的活动,例如正在处理的审批步骤,结束时间可以表示该工作完成的时刻。 在流程分析中,单独记录结束时间,可以衡量活动处理时间,并将其与活动开始前的等待时间区分开来。这样便能分别了解活动执行所需时间,以及案例等待活动开始的时间,从而更深入地分析资源效率。 重要性 此属性可用于计算活动处理时间,并将其与活动间的等待时间区分开来,从而改进瓶颈分析。 获取途径 此时间通常与开始时间相同,根据CDHDR-UDATE和CDHDR-UTIME得出。在某些情况下,也可以从明确记录任务开始和结束时间的工作流日志中获取。 示例 2023-03-15T10:35:10Z2023-03-16T14:10:00Z2023-03-28T09:02:45Z | |||
采购到付款 - 发票处理活动
| 活动 | 说明 | ||
|---|---|---|---|
| 发票已冲销 | 表示已取消已过账的发票凭证。系统会创建冲销凭证,以抵消原发票的财务影响。 | ||
| 重要性 此活动体现了重要的异常和返工路径。分析冲销的频率和原因,有助于发现发票校验和过账流程中的系统性问题。 获取途径 这是记录在凭证表头BKPF中的明确事件。被冲销凭证的表头包含冲销凭证编号(STBLG)和会计年度(STJAH)。 采集 筛选BKPF-STBLG字段有值的凭证。事件时间戳为冲销凭证的过账日期。 事件类型 explicit | |||
| 发票已清账 | 此活动标志着发票成功处理的最后一步:付款凭证清偿未结负债,表示付款已执行。 | ||
| 重要性 作为主要的结束事件,此活动对于计算端到端总周期时间至关重要。它确认流程已成功完成,也是衡量按时付款表现的依据。 获取途径 这是记录在发票行项目表BSEG中的明确事件。清账日期存储在字段AUGDT中,清账凭证编号存储在AUGBL中。 采集 使用发票凭证行项目中的清账日期(BSEG-AUGDT)。 事件类型 explicit | |||
| 发票已过账 | 这是重要的财务事件,表示发票已正式记入总账并形成负债。凭证由临时的暂存状态转为正式会计分录。 | ||
| 重要性 过账是确认发票有效的重要节点,也是付款的前提条件和衡量处理吞吐量的关键指标。 获取途径 这是记录在凭证表头BKPF中的明确事件。时间戳为过账日期BKPF-BUDAT。此时凭证不再处于暂存状态。 采集 对于未暂存的凭证(BKPF-BSTAT为空或为“ ”),使用过账日期(BKPF-BUDAT)。 事件类型 explicit | |||
| 已设置付款冻结 | 当发票行项目被设置冻结、无法付款时,就会发生此活动。三方匹配出现差异时,系统可能自动设置冻结;也可以因其他原因手动设置。 | ||
| 重要性 此事件对于衡量付款冻结解决时长和识别付款延迟的根本原因至关重要。它有助于发现价格、数量或所需审批方面的问题。 获取途径 这是一个明确记录的事件,可通过BSEG表字段ZLSPR(付款冻结码)的变更凭证日志(CDHDR和CDPOS表)进行跟踪。 采集 当BSEG-ZLSPR的值从空白变为非空白时,记录变更凭证(CDHDR)中的时间戳。 事件类型 explicit | |||
| 已采集发票数据 | 表示发票凭证在SAP中首次创建,无论是暂存凭证还是已正式过账的凭证。这通常是系统中发票生命周期的首个记录事件,也是流程开始时间。 | ||
| 重要性 这是衡量发票端到端处理周期时间的主要起点。分析从此时起经过的时间,有助于发现初始数据录入和凭证创建阶段的延迟。 获取途径 创建时间戳记录在SAP表BKPF中,字段为CPUDT(会计凭证录入日期)和CPUTM(录入时间)。 采集 使用BKPF表表头中的凭证创建时间戳(CPUDT)。 事件类型 explicit | |||
| 发票已批准 | 表示指定审批人已正式批准发票,发票可以继续过账和付款。这通常是工作流的最后一步。 | ||
| 重要性 此节点标志着审批周期时间测量结束。审批完成后,流程即可继续,及时付款也更有保障,同时还能分析审批人之间的工作量分配。 获取途径 通常可从SAP Business Workflow表中识别审批任务的完成时间来采集此事件。也可以根据与审批相关的付款冻结解除时间推断。 采集 工作流日志中审批步骤完成的时间戳,或特定付款冻结解除的时间戳。 事件类型 inferred | |||
| 发票已拒绝 | 表示发票在审批过程中被拒绝。通常需要更正后重新提交,因此会形成返工循环。 | ||
| 重要性 跟踪拒绝情况对于识别常见失败原因至关重要,例如数据错误或违反政策。这有助于量化返工,并找出流程改进或供应商培训的重点。 获取途径 通常可在SAP Business Workflow日志中找到此事件,记录为拒绝步骤。也可以根据特定状态变更或添加到发票凭证的备注推断。 采集 工作流日志中拒绝步骤的时间戳,或表示拒绝的凭证状态变更时间戳。 事件类型 inferred | |||
| 发票已提交审批 | 表示发票已提交至正式审批工作流。具体采集方式很大程度上取决于SAP Workflow或第三方系统的实施方式。 | ||
| 重要性 此活动是发票审批周期时间KPI的计时起点。准确记录这一时间对于发现审批链中的延迟和分析审批人绩效至关重要。 获取途径 通常可从SAP Business Workflow表(如SWW_WI2OBJ、SWWLOG)中识别特定审批任务的开始时间来采集此事件。在较简单的场景中,也可以根据自定义字段的状态变更推断。 采集 需要分析SAP工作流日志,或与发票凭证关联的自定义状态字段。 事件类型 inferred | |||
| 发票已暂存 | 表示发票已录入SAP,但尚未过账至总账。这是一个临时状态,可在财务过账前进行审核、更正或审批。 | ||
| 重要性 跟踪发票暂存的时间和持续时长,有助于发现过账前校验和审批流程中的瓶颈,也能区分数据录入时间与财务处理时间。 获取途径 可根据BKPF表中的凭证状态字段BSTAT推断。值为“V”(暂存凭证)或“W”(带变更发布的暂存凭证)表示凭证处于暂存状态。 采集 筛选状态字段BKPF-BSTAT为“V”的凭证。事件时间戳为创建日期BKPF-CPUDT。 事件类型 inferred | |||
| 发票已逾期 | 当当前日期超过发票净到期日且发票尚未付款时,就会触发此计算事件。到期日根据付款条件和基准日期确定。 | ||
| 重要性 此活动对于监控按时付款率KPI至关重要。它能提前标记有逾期付款风险的发票,避免损害供应商关系或产生罚款。 获取途径 将当前日期与净到期日进行比较即可计算此事件。到期日根据基准日期(BSEG-ZFBDT)和付款条件(BSEG-ZTERM)得出。 采集 当 事件类型 calculated | |||
| 已解除付款冻结 | 表示发票行项目上的付款冻结已解除,发票可以进入付款运行。这说明此前发现的问题已得到解决。 | ||
| 重要性 此活动标志着付款冻结时长测量结束。分析设置冻结到解除冻结之间的时间,可以了解问题解决流程的效率。 获取途径 解除冻结时,可通过BSEG表字段ZLSPR(付款冻结码)的变更凭证日志(CDHDR和CDPOS表)跟踪此事件。 采集 当BSEG-ZLSPR的值从非空白变为空白时,记录变更凭证(CDHDR)中的时间戳。 事件类型 explicit | |||
数据提取指南
步骤
- 创建ABAP程序:使用事务代码
SE38或SE80创建新的可执行程序,例如Z_PM_INVOICE_EXTRACT。填写合适的标题,并将类型设为“可执行程序”。 - 定义选择屏幕:在程序中定义选择屏幕,供用户筛选数据。关键参数应包括公司代码(
BUKRS)、会计年度(GJAHR)、过账日期范围(BUDAT),以及应用服务器上的输出文件路径。 - 声明数据结构:定义一个内部表结构,用于存放最终的事件日志。该结构必须包含所有必需和建议的属性:
InvoiceNumber、活动、EventTime、UserName、VendorNumber、PurchaseOrderNumber、InvoiceAmount、PostingDate、PaymentDueDate、PaymentBlockReason和ClearingDate。 - 实现数据筛选逻辑:编写核心ABAP逻辑以筛选发票数据。此方法需要多次查询,并将结果合并到最终事件日志表中。
- 首先,根据选择屏幕中的条件,从主要发票表
BKPF、BSEG、RBKP和RSEG中查询抬头和行项目数据。 - 对每张发票生成基础事件,例如“已采集发票数据”(使用创建时间戳)和“发票已过账”(使用过账时间戳)。
- 查询更改凭证表
CDHDR和CDPOS,查找与付款冻结(BSEG中的ZLSPR字段)相关的更改。针对每项相关更改,创建“设置付款冻结”和“解除付款冻结”事件。 - 检查
BSEG表中的清账凭证(AUGBL)和清账日期(AUGDT),识别“发票已清账”事件。 - 检查
BKPF抬头中的冲销凭证(STBLG),识别“发票已冲销”事件。 - 编写自定义逻辑以记录工作流事件(“发票已提交审批”“已批准”“已拒绝”)。此部分因客户而异,需要根据您的工作流表或状态字段调整代码。
- 首先,根据选择屏幕中的条件,从主要发票表
- 生成计算事件:在程序逻辑中计算“发票逾期”事件。对于所有未付款发票,将付款到期日(
PaymentDueDate)与当前日期进行比较。如果到期日已过,则创建事件,并将到期日设为EventTime。 - 填充事件日志表:从不同来源收集每张发票的数据时,对数据进行格式化,并将新行追加到最终的内部事件日志表中,每项活动对应一行。
- 将数据导出到文件:使用
OPEN DATASET、TRANSFER和CLOSE DATASET语句,将最终内部表的内容写入选择屏幕指定的SAP应用服务器路径中的文本文件。使用分号或制表符等统一分隔符创建CSV文件。 - 安排数据提取:如需定期提取数据,请为程序创建包含所需筛选条件的变式,并使用事务代码
SM36将其安排为后台作业。 - 获取输出文件:使用事务代码
AL11访问SAP应用服务器目录并找到生成的文件。使用事务代码CG3Y将文件下载到本地计算机。 - 准备上传:上传到流程挖掘工具前,请打开CSV文件,确认表头正确、数据格式一致(尤其是时间戳),且分隔符符合预期。确保文件以UTF-8编码保存。
配置
- 筛选条件:ABAP报表应包含完整的选择屏幕。最重要的筛选条件包括:
公司代码(BUKRS):将提取范围限定为特定法人实体。过账日期(BUDAT):设定数据提取的时间范围。建议分批提取数据,例如每次提取3至6个月的数据。凭证类型(BLART):仅纳入相关发票凭证类型,例如物流发票的“RE”和供应商发票的“KR”。
- 输出文件路径:必填参数,用于指定SAP应用服务器上输出文件的完整路径和文件名。运行报表的用户需要对此目录具有写入权限。
- 性能注意事项:对于大型数据集,应在非高峰时段以后台作业方式运行报表,避免系统性能下降。逻辑应仅从表中筛选所需字段,并尽可能使用SAP标准数据库索引。
- 前提条件和授权:运行数据提取的用户或服务账户需要具备以下权限:
- 执行ABAP报表的权限(属于
S_PROGRAM)。 - 对财务和物流表
BKPF、BSEG、RBKP、RSEG、CDHDR和CDPOS的读取权限。 - 向指定应用服务器目录写入文件的权限(
S_DATASET)。 - 访问事务代码
SE38、SM36、AL11和CG3Y的权限,用于开发、安排作业和获取文件。
- 执行ABAP报表的权限(属于
查询示例 abap
REPORT Z_PM_INVOICE_EXTRACT.
*&---------------------------------------------------------------------*
*& Tables for Selection Screen
*&---------------------------------------------------------------------*
TABLES: BKPF, RBKP.
*&---------------------------------------------------------------------*
*& Data Declarations
*&---------------------------------------------------------------------*
TYPES: BEGIN OF ty_event_log,
InvoiceNumber TYPE belnr_v,
Activity TYPE string,
EventTime TYPE timestamp,
UserName TYPE uname,
VendorNumber TYPE lifnr,
PurchaseOrderNumber TYPE ebeln,
InvoiceAmount TYPE wrbtr,
PostingDate TYPE budat,
PaymentDueDate TYPE faedt,
PaymentBlockReason TYPE rstgr,
ClearingDate TYPE augdt,
END OF ty_event_log.
DATA: gt_event_log TYPE TABLE OF ty_event_log,
gs_event_log TYPE ty_event_log.
DATA: lt_bkpf TYPE TABLE OF bkpf,
ls_bkpf TYPE bkpf,
lt_bseg TYPE TABLE OF bseg,
ls_bseg TYPE bseg.
DATA: lt_rbkp TYPE TABLE OF rbkp,
ls_rbkp TYPE rbkp.
*&---------------------------------------------------------------------*
*& Selection Screen
*&---------------------------------------------------------------------*
SELECT-OPTIONS: s_bukrs FOR bkpf-bukrs OBLIGATORY,
s_gjahr FOR bkpf-gjahr OBLIGATORY,
s_budat FOR bkpf-budat.
PARAMETERS: p_fpath TYPE string OBLIGATORY DEFAULT '/usr/sap/tmp/invoice_events.csv'.
*&---------------------------------------------------------------------*
*& Start of Program Logic
*&---------------------------------------------------------------------*
START-OF-SELECTION.
" Select FI Invoices (e.g., Doc Type KR)
SELECT * FROM bkpf INTO TABLE lt_bkpf
WHERE bukrs IN s_bukrs
AND gjahr IN s_gjahr
AND budat IN s_budat
AND blart = 'KR'.
" Select MM Invoices
SELECT * FROM rbkp INTO TABLE lt_rbkp
WHERE bukrs IN s_bukrs
AND gjahr IN s_gjahr
AND budat IN s_budat.
* --- Process FI Invoices ---
LOOP AT lt_bkpf INTO ls_bkpf.
CLEAR gs_event_log.
gs_event_log-InvoiceNumber = ls_bkpf-belnr.
gs_event_log-PostingDate = ls_bkpf-budat.
SELECT SINGLE * FROM bseg INTO ls_bseg
WHERE bukrs = ls_bkpf-bukrs
AND belnr = ls_bkpf-belnr
AND gjahr = ls_bkpf-gjahr
AND koart = 'K'. " Vendor Line Item
IF sy-subrc = 0.
gs_event_log-VendorNumber = ls_bseg-lifnr.
gs_event_log-InvoiceAmount = ls_bseg-wrbtr.
gs_event_log-ClearingDate = ls_bseg-augdt.
" Calculate Due Date
CALL FUNCTION 'DETERMINE_DUE_DATE'
EXPORTING
i_bseg = ls_bseg
IMPORTING
e_faedt = gs_event_log-PaymentDueDate.
ENDIF.
" Activity: Invoice Data Captured
gs_event_log-Activity = 'Invoice Data Captured'.
CONVERT DATE ls_bkpf-cpudt TIME ls_bkpf-cputm INTO TIME STAMP gs_event_log-EventTime TIME ZONE sy-zonlo.
gs_event_log-UserName = ls_bkpf-usnam.
APPEND gs_event_log TO gt_event_log.
" Activity: Invoice Parked (if BSTAT = 'V')
IF ls_bkpf-bstat = 'V'.
gs_event_log-Activity = 'Invoice Parked'.
APPEND gs_event_log TO gt_event_log.
ENDIF.
" Activity: Invoice Posted
gs_event_log-Activity = 'Invoice Posted'.
CONVERT DATE ls_bkpf-budat TIME ls_bkpf-cputm INTO TIME STAMP gs_event_log-EventTime TIME ZONE sy-zonlo.
gs_event_log-UserName = ls_bkpf-usnam.
APPEND gs_event_log TO gt_event_log.
" Activity: Invoice Cleared
IF ls_bseg-augbl IS NOT INITIAL.
gs_event_log-Activity = 'Invoice Cleared'.
CONVERT DATE ls_bseg-augdt INTO TIME STAMP gs_event_log-EventTime TIME ZONE sy-zonlo.
gs_event_log-UserName = ls_bseg-usnam_cl.
APPEND gs_event_log TO gt_event_log.
ENDIF.
" Activity: Invoice Becomes Overdue
IF gs_event_log-PaymentDueDate IS NOT INITIAL AND gs_event_log-PaymentDueDate < sy-datum AND ls_bseg-augbl IS INITIAL.
gs_event_log-Activity = 'Invoice Becomes Overdue'.
CONVERT DATE gs_event_log-PaymentDueDate INTO TIME STAMP gs_event_log-EventTime TIME ZONE sy-zonlo.
gs_event_log-UserName = 'SYSTEM'.
APPEND gs_event_log TO gt_event_log.
ENDIF.
" Activity: Invoice Reversed
IF ls_bkpf-stblg IS NOT INITIAL.
DATA: ls_rev_bkpf TYPE bkpf.
SELECT SINGLE budat, usnam FROM bkpf INTO ls_rev_bkpf
WHERE belnr = ls_bkpf-stblg AND bukrs = ls_bkpf-bukrs AND gjahr = ls_bkpf-gjahr.
IF sy-subrc = 0.
gs_event_log-Activity = 'Invoice Reversed'.
CONVERT DATE ls_rev_bkpf-budat INTO TIME STAMP gs_event_log-EventTime TIME ZONE sy-zonlo.
gs_event_log-UserName = ls_rev_bkpf-usnam.
APPEND gs_event_log TO gt_event_log.
ENDIF.
ENDIF.
ENDLOOP.
* --- NOTE: The logic for MM invoices (from lt_rbkp) would be similar, joining RBKP with RSEG.
* --- NOTE: The logic for Payment Blocks and Workflow events requires reading change documents (CDHDR/CDPOS)
* --- or custom workflow tables. Below is a conceptual example for payment blocks.
* --- Conceptual Example for 'Payment Block Set' / 'Released' using Change Docs
* DATA: lt_cdhdr TYPE TABLE OF cdhdr, ls_cdhdr TYPE cdhdr,
* lt_cdpos TYPE TABLE OF cdpos, ls_cdpos TYPE cdpos.
* SELECT * FROM cdhdr INTO TABLE lt_cdhdr
* WHERE objectclas = 'BELEG' AND objectid IN (SELECT belnr FROM bkpf WHERE ...).
* LOOP AT lt_cdhdr.
* SELECT * FROM cdpos INTO TABLE lt_cdpos
* WHERE changenr = ls_cdhdr-changenr AND tabname = 'BSEG' AND fname = 'ZLSPR'.
* LOOP AT lt_cdpos.
* "... logic to create 'Payment Block Set' (if VALUE_NEW is not blank)
* "... or 'Payment Block Released' (if VALUE_NEW is blank) events.
* ENDLOOP.
* ENDLOOP.
* --- Conceptual Example for Workflow events ('Sent For Approval', 'Approved', 'Rejected')
* --- This part MUST be customized based on your specific workflow implementation (e.g., OpenText VIM, SAP WF).
* --- You would query the relevant workflow tables or status change tables here.
*&---------------------------------------------------------------------*
*& Write to File
*&---------------------------------------------------------------------*
END-OF-SELECTION.
DATA: lv_string TYPE string,
lv_header TYPE string.
" Create Header
lv_header = 'InvoiceNumber;Activity;EventTime;UserName;VendorNumber;PurchaseOrderNumber;InvoiceAmount;PostingDate;PaymentDueDate;PaymentBlockReason;ClearingDate'.
OPEN DATASET p_fpath FOR OUTPUT IN TEXT MODE ENCODING UTF-8.
IF sy-subrc = 0.
TRANSFER lv_header TO p_fpath.
LOOP AT gt_event_log INTO gs_event_log.
CONCATENATE gs_event_log-InvoiceNumber
gs_event_log-Activity
gs_event_log-EventTime
gs_event_log-UserName
gs_event_log-VendorNumber
gs_event_log-PurchaseOrderNumber
gs_event_log-InvoiceAmount
gs_event_log-PostingDate
gs_event_log-PaymentDueDate
gs_event_log-PaymentBlockReason
gs_event_log-ClearingDate
INTO lv_string SEPARATED BY ';'.
TRANSFER lv_string TO p_fpath.
ENDLOOP.
CLOSE DATASET p_fpath.
ELSE.
MESSAGE 'Error opening file.' TYPE 'E'.
ENDIF. 立即优化采购到付款发票处理流程
定位低效环节,将发票周期时间缩短30%。
无需信用卡,几分钟即可完成设置。