您的采购到付款发票处理数据模板
您的采购到付款发票处理数据模板
- 建议收集的属性
- 需要跟踪的关键活动
- SAP ECC数据提取指南
采购到付款-发票处理属性
| 名称 | 说明 | ||
|---|---|---|---|
| 事件时间 EventTime | 活动发生时的精确时间戳,包括日期和时间。 | ||
| 说明 Event Time记录业务活动在源系统中执行并写入日志的确切时刻。该时间戳构成流程的时间顺序基础,将每张发票的所有活动排列成连贯序列。 在分析中,Event Time对于计算所有基于时长的指标至关重要,例如周期时间、等待时间,以及活动之间的处理时间。它为“Invoice End-to-End Cycle Time”和“Payment Block Resolution Duration”等仪表板提供数据,用于衡量流程中任意两个节点之间经过的时间。准确的时间戳对于识别延迟和性能瓶颈至关重要。 为什么重要 该时间戳对于正确排列事件顺序,以及计算周期时间、瓶颈持续时间等所有性能指标至关重要。 获取位置 通常将变更凭证抬头表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 | 发票处理生命周期中发生的特定业务步骤或事件的名称。 | ||
| 说明 Activity属性表示发票处理工作流中的一个独立阶段或操作。这些活动源自各种系统事件,例如文档创建、状态变更、审批,或SAP变更日志中记录的用户操作。 活动分析是流程挖掘的核心。通过分析活动,可以可视化流程图、识别瓶颈(例如“Invoice Sent For Approval”后长时间等待)、发现返工循环(例如“Payment Block Set”和“Payment Block Released”反复循环),以及发现合规偏差。活动的顺序和频率揭示了实际运行的流程。 为什么重要 它定义流程图中的步骤,从而支持顺序流可视化、瓶颈发现和返工识别。 获取位置 此属性通常源自多个数据源,包括事务代码(SY-TCODE)、RBKP等表中的状态字段(例如RBSTAT),以及CDHDR和CDPOS表中的变更事件。 示例 发票暂存发票提交审批发票已审批发票已过账发票已清账 | |||
| 付款冻结原因 PaymentBlockReason | 表示发票被冻结付款原因的代码。 | ||
| 说明 当发票存在差异或需要进一步调查时,系统会设置付款冻结。Payment Block Reason代码说明冻结原因,例如数量差异、价格差异或人工冻结。 该属性对于“Payment Block Resolution Duration”仪表板至关重要。按原因分析冻结频率和持续时间,有助于识别付款延迟的根本原因。例如,如果“Price Discrepancy”是导致长期冻结的最常见原因,就说明主数据或采购订单流程可能存在需要解决的问题。 为什么重要 它说明发票延迟的原因,支持对付款冻结进行根因分析,并帮助确定流程改进工作的优先级。 获取位置 付款冻结原因可在RSEG表的行项目层级找到(字段SPGRS),也可在会计凭证表BSEG中找到(字段ZLSPR)。 示例 RIM | |||
| 付款到期日 PaymentDueDate | 根据付款条款,发票应向供应商支付的截止日期。 | ||
| 说明 Payment Due Date根据发票基准日期和约定的付款条款计算得出。它表示付款截止时间,按时付款可避免逾期、潜在罚款或供应商关系受损。 该属性对于“On-Time Payment Rate”和“Cash Discount Opportunity Loss”等绩效与合规KPI至关重要。通过将实际付款日期(Clearing Date)与Payment Due Date比较,分析可以自动判断付款是否按时、提前或逾期。它也是Payment Terms Adherence仪表板的基础要素。 为什么重要 它是衡量按时付款绩效和识别提前付款折扣获取机会的基准。 获取位置 该日期通常通过计算得出。付款基准日期(ZFBDT)位于BSEG表中,到期日逻辑还取决于付款条款(BSEG-ZTERM)。 示例 2023-04-192023-05-052023-05-11 | |||
| 供应商编号 VendorNumber | 提交发票的供应商或供货商的唯一标识符。 | ||
| 说明 Vendor Number是用于标识供应商的主数据键。它将发票事务关联到特定业务伙伴,从而支持基于供应商特征的分析。 按Vendor Number分析流程,可以发现供应商关系和绩效方面的重要信息。例如,识别哪些供应商经常提交有问题的发票,导致付款冻结或出现差异;也可以识别哪些供应商的发票处理效率最高。这些信息对供应商管理和战略采购计划具有重要价值。 为什么重要 它支持按供应商分析,有助于识别特定供应商相关的模式、问题或效率。 获取位置 这是发票凭证抬头表RBKP中的“Invoicing Party”字段(LIFNR)。 示例 100345100876200112 | |||
| 发票金额 InvoiceAmount | 发票按原始单据币种计算的含税总金额。 | ||
| 说明 Invoice Amount表示供应商提交的发票总金额,是每个发票案例的关键财务指标。 在流程挖掘中,该属性对于基于金额的分析至关重要。它支持按发票金额筛选和细分流程,而金额通常与流程复杂度和审批要求相关。例如,高金额发票可能需要遵循不同且更严格的审批路径。该属性也用于合规分析,例如检查高金额发票是否跳过了必需的审批步骤。 为什么重要 它支持基于金额的分析,帮助您优先处理高金额发票,并了解发票金额如何影响流程和合规。 获取位置 这是发票凭证抬头表RBKP中的“Gross invoice amount”字段(RMWWR)。 示例 1500.7512500.00850.20 | |||
| 清账日期 ClearingDate | 付款完成且发票从应付账款中清账的日期。 | ||
| 说明 Clearing Date标志着发票生命周期的最后一步:付款。它表示系统通过付款凭证清账未结发票项目的日期,也就是实际执行付款的时间。 该属性是“Average Invoice Cycle Time”和“On-Time Payment Rate”等关键KPI的终点。它会与Payment Due Date进行比较,用于衡量付款绩效。在现金折扣分析中,它还会与折扣期限比较,以判断付款是否及时,从而获取折扣。 为什么重要 它标志着流程完成,是计算总周期时间、按时付款率和现金折扣实现情况的基础。 获取位置 对于已清账项目,这是已清账供应商项目表BSAK中的“Clearing Date”字段(AUGDT)。 示例 2023-04-152023-05-022023-05-20 | |||
| 用户名 UserName | 执行该活动人员的SAP用户ID。 | ||
| 说明 User Name属性标识流程中负责执行特定活动的人员。通常,这是与事务或变更事件一同记录的SAP用户名。 该属性对于用户或团队层面的性能分析至关重要。它有助于回答“哪些审批人速度最快?”或“哪些用户产生的返工最多?”等问题。仪表板可利用该属性分析工作负载分布、识别培训需求,并了解不同员工之间的绩效差异。 为什么重要 它支持按个人或团队分析绩效和工作负载,有助于识别高绩效人员、培训机会和资源配置不均衡问题。 获取位置 这是变更凭证抬头表CDHDR中的“Changed By”字段(USERNAME)。对于创建事件,也可以使用RBKP等表中的“Entered by”字段(ERNAM)。 示例 JSMITHBWILSONCHEN | |||
| 过账日期 PostingDate | 发票正式过账至财务账簿的日期。 | ||
| 说明 Posting Date是会计流程中的关键日期,决定发票费用计入总账的财务期间。通常由应付账款专员在发票处理过程中设置。 在流程分析中,由该日期标记的“Invoice Posted”活动是重要里程碑。从收到发票到Posting Date的时长,是整体周期时间的重要组成部分。该日期也是财务报告和吞吐量分析的基础,例如跟踪每周或每月的发票过账量。 为什么重要 它标志着流程中的关键里程碑,决定事务所属财务期间,也是计算周期时间的重要组成部分。 获取位置 这是发票凭证抬头表RBKP中的“Posting Date”字段(BUDAT)。 示例 2023-03-202023-04-052023-04-11 | |||
| 采购订单编号 PurchaseOrderNumber | 与发票进行匹配的采购订单(PO)标识符。 | ||
| 说明 Purchase Order Number将发票关联到原始采购文档。这是三方匹配(PO、收货、发票)的基础,也用于分析基于PO的发票流程效率。 该属性对于“Invoice-PO Matching Discrepancy Rate”等仪表板至关重要。它支持将流程划分为PO发票和非PO发票,两者通常具有完全不同的处理路径和复杂度。分析特定PO相关的问题,有助于诊断采购流程中的上游问题。 为什么重要 它将发票与采购流程关联起来,支持分析PO与非PO发票,并识别匹配差异。 获取位置 通常位于行项目层级。发票项目表RSEG中包含“Purchase Order Number”(EBELN),可能需要汇总到抬头层级。 示例 450001756345000175644500017565 | |||
| 付款条款 PaymentTerms | 定义与供应商约定的付款条件的代码,例如折扣期限和到期日。 | ||
| 说明 Payment Terms定义发票付款时间,以及提前付款可享受的现金折扣(如有)。例如,“Net 30 days”表示30天内全额付款;“2% 10, Net 30”表示10天内付款可享受2%折扣,否则须在30天内支付全额。 该属性是“Cash Discount Opportunity Loss”仪表板和“Cash Discount Capture Rate”KPI的基础。分析会结合付款条款、过账日期和付款日期,判断是否存在折扣,以及是否成功获取折扣。它也是Payment Terms Adherence仪表板的关键属性。 为什么重要 它对于分析现金折扣获取率,以及了解流程延迟的财务影响至关重要。 获取位置 这是发票凭证抬头表RBKP中的“Terms of Payment Key”字段(ZTERM)。 示例 Z0010001NT30 | |||
| 公司代码 CompanyCode | 处理发票的法人实体或公司的标识符。 | ||
| 说明 Company Code是SAP Financials中的基础组织单元,代表独立法人实体。包括发票在内的所有财务事务都会过账到特定公司代码。 该属性支持按法人实体细分流程分析,对于比较集团内不同公司的流程绩效、合规性和效率至关重要。仪表板可以按Company Code筛选,提供特定公司的发票处理KPI视图。 为什么重要 它支持比较组织内不同法人实体的流程,并进行绩效基准分析。 获取位置 这是发票凭证抬头表RBKP中的“Company Code”字段(BUKRS)。 示例 10002000US01 | |||
| 最近数据更新时间 LastDataUpdate | 表示流程数据最近一次从源系统刷新时间的时间戳。 | ||
| 说明 此属性记录最近一次数据提取或更新的日期和时间。它适用于整个数据集,而非单个事件,可清晰反映数据的新鲜度。 对于仪表板用户和分析人员而言,这是关键的元数据属性。它帮助用户了解分析覆盖的时间范围,并确保决策基于最新信息。该属性通常会在仪表板中突出显示,用于告知用户数据的更新时间。 为什么重要 它向用户说明数据的新鲜度,确保分析和决策基于最新信息。 获取位置 该值由数据提取或ETL工具在数据刷新时生成并写入数据集。 示例 2024-05-20T08:00:00Z2024-05-21T08:00:00Z2024-05-22T08:00:00Z | |||
| 凭证类型 DocumentType | 用于对会计凭证进行分类的代码,例如供应商发票或贷项凭证。 | ||
| 说明 Document Type用于对SAP中的不同业务事务进行分类。在发票处理中,常见类型包括表示标准发票的“RE”,以及表示供应商贷项凭证的“KG”。凭证类型会控制过账的相关设置,例如使用的编号范围。 在分析中,该属性支持将流程筛选为特定事务类型。例如,贷项凭证的处理流程可能与标准发票完全不同。使用Document Type分离这些流程,可以获得更准确、更有意义的流程视图。 为什么重要 它支持区分和分析不同业务事务,例如发票和贷项凭证,因为两者遵循不同的流程。 获取位置 这是发票凭证抬头表RBKP中的“Document Type”字段(BLART)。 示例 REKRKG | |||
| 币种 Currency | 发票金额使用的币种代码。 | ||
| 说明 Currency属性指定发票金额使用的币种,例如USD、EUR或JPY。 该属性为Invoice Amount提供必要上下文,支持正确解读和汇总财务数据,尤其适用于涉及多种币种的全球化组织。您可以按币种筛选分析结果,比较不同币种区域的处理效率或问题。要进行有意义的财务汇总,可能需要将金额换算为统一的报告币种。 为什么重要 它为所有财务金额提供必要上下文,确保准确解读,并支持按币种筛选和分析。 获取位置 这是发票凭证抬头表RBKP中的“Currency Key”字段(WAERS)。 示例 USDEURGBP | |||
| 总账科目 GeneralLedgerAccount | 用于记录发票费用或成本的总账科目编号。 | ||
| 说明 总账(G/L)科目是科目表中的目标科目,用于记录发票产生的财务影响。这是财务报告和成本管理的重要数据。 对于流程挖掘而言,分析G/L科目可以为顺序流增加财务维度。“总账科目使用情况分析”仪表板可以揭示支出模式,识别发票可能存在的科目错误,并确保成本分配到正确的部门或项目。它有助于连接流程执行与财务影响。 为什么重要 它为流程增加财务维度,支持分析成本分配、支出模式和潜在的发票科目编码错误。 获取位置 该属性位于行项目层级。PO发票的发票项目表RSEG中包含“G/L Account Number”(HKONT),直接FI发票则位于BSEG表中。 示例 630000655100741000 | |||
| 拒绝原因 RejectionReason | 说明发票在审批工作流中被拒绝原因的代码或文本。 | ||
| 说明 审批人拒绝发票时,通常应提供拒绝原因。原因可以是标准化代码,也可以是自由文本,例如“采购订单编号错误”“发票重复”或“金额错误”。 这些数据对于“Invoice Rejection Reasons & Trends”仪表板至关重要。通过分析不同拒绝原因的频率,企业可以识别常见问题并采取纠正措施。例如,如果“采购订单编号错误”频繁出现,可能说明需要加强与供应商的沟通,或为数据录入人员提供培训。这类分析是减少流程返工的关键。 为什么重要 它提供拒绝的根本原因,支持有针对性地改进流程,减少返工并提高一次通过率。 获取位置 该信息通常不会存储在单一的标准字段中,可能位于工作流容器日志、与文档关联的长文本字段,或定制工作流解决方案中的特定字段。 示例 DUPLICATE_INVWRONG_AMTNO_PO_MATCH | |||
| 是否损失现金折扣 IsCashDiscountLost | 表示是否错过可用现金折扣的计算标记。 | ||
| 说明 这是根据付款条款和实际付款日期计算得出的布尔属性。如果Payment Terms提供提前付款折扣,且Clearing Date晚于折扣期限,则该属性为true。它直接衡量流程低效造成的财务损失。 该属性是“Cash Discount Opportunity Loss”仪表板的基础。它支持量化处理延迟造成的财务影响。通过筛选该标记为true的案例,分析人员可以调查最常导致折扣损失的具体流程变体和瓶颈,为流程改进提供有力的业务依据。 为什么重要 它直接量化流程延迟造成的财务损失,为优化发票处理工作流提供明确依据。 获取位置 SAP中不存在此属性。它在数据转换过程中通过解析“PaymentTerms”,并将“ClearingDate”与折扣到期日进行比较来计算。 示例 truefalse | |||
| 是否逾期 IsOverdue | 表示发票是否在付款到期日之后才完成付款的计算标记。 | ||
| 说明 这是通过比较“Clearing Date”(实际付款日期)与“Payment Due Date”计算得出的布尔属性。如果清账日期晚于到期日,标记为true,否则为false。它为每张发票提供了直接、简明的按时付款绩效衡量方式。 该属性简化了仪表板中的分析和可视化。它支持轻松筛选和汇总,以计算“On-Time Payment Rate”KPI。您可以快速将流程划分为逾期发票和按时付款发票,比较两者的流程路径,从而发现可能导致延迟付款的流程模式。 为什么重要 它简化了按时付款绩效分析,并支持轻松比较按时付款和逾期付款发票的流程。 获取位置 SAP中不存在此属性。它在数据转换过程中通过公式计算:ClearingDate > PaymentDueDate。 示例 truefalse | |||
| 源系统 SourceSystem | 标识提取数据的具体源系统。 | ||
| 说明 Source System属性表示事件数据的来源,例如某个SAP ECC实例的名称。在包含多个ERP系统,或需要合并不同数据源的环境中,这一点尤为重要。 在分析中,该属性有助于区分运行在不同实例上的系统、区域或业务部门之间的流程和性能。它确保数据血缘清晰,并支持按系统筛选和分析。 为什么重要 它为多系统环境提供关键上下文,支持正确的数据隔离和按系统进行性能分析。 获取位置 通常是在数据提取过程中添加的静态值,表示SAP系统ID(TADIR-SRCSYSTEM),或为特定SAP实例手动分配的标识符。 示例 SAPECC_PROD_EUECC_US_FINSAP_ERP_6_EHP8 | |||
| 结束时间 EndTime | 表示活动完成时间的时间戳。对于瞬时事件,该时间与开始时间相同。 | ||
| 说明 End Time属性标记特定活动的完成时间。SAP中的许多事件以单个时间点记录,因此End Time通常与Start Time相同。但对于具有可测量持续时间的活动,例如正在处理的审批步骤,End Time可以表示该项工作的结束时间。 在流程分析中,独立的End Time支持测量活动处理时间,并将其与活动开始前的等待时间区分开来。这有助于区分活动实际执行所需的时间,以及案例等待活动开始所需的时间,从而深入了解资源效率。 为什么重要 它支持计算活动处理时间,将其与活动之间的等待时间区分开来,并改善瓶颈分析。 获取位置 它通常与Start Time相同,源自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 | |||
| 已采集发票数据 | 表示在SAP中创建发票凭证的初始事件,凭证可能处于暂存或已完整过账状态。这通常是发票生命周期在系统中记录的第一个事件,并作为流程开始时间。 | ||
| 为什么重要 该活动是衡量端到端发票处理周期时间的主要起点。分析从此时开始的持续时间,有助于识别初始数据录入和凭证创建阶段的延迟。 获取位置 创建时间戳记录在SAP表BKPF的CPUDT字段(会计凭证录入日期)和CPUTM字段(录入时间)中。 采集 使用BKPF表表头中的凭证创建时间戳(CPUDT)。 事件类型 explicit | |||
| 设置付款冻结 | 当发票行项目被设置冻结、无法付款时,就会发生此活动。冻结可能因三方匹配差异自动设置,也可能出于其他原因由人工设置。 | ||
| 为什么重要 该事件对于衡量付款冻结解除时长和识别付款延迟的根本原因至关重要,可突出价格、数量或必要审批方面的问题。 获取位置 这是一个明确记录的事件,可通过BSEG表字段ZLSPR(付款冻结键)的变更凭证日志(CDHDR和CDPOS表)进行跟踪。 采集 当BSEG-ZLSPR的值从空白变为非空白时,使用变更凭证(CDHDR)中的时间戳。 事件类型 explicit | |||
| 发票已审批 | 表示指定审批人已正式批准发票,发票可以继续进行过账和付款。这通常是工作流的最后一步。 | ||
| 为什么重要 该里程碑结束审批周期时间的计量,解除流程阻塞,使付款能够及时进行,同时帮助分析审批人之间的工作量分配。 获取位置 通常通过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 | |||
| 发票被拒绝 | 表示发票在审批过程中被拒绝。通常需要更正并重新提交,从而形成返工循环。 | ||
| 为什么重要 跟踪拒绝情况对于识别失败的常见原因至关重要,例如数据错误或违反政策。这有助于量化返工,并定位流程改进或供应商培训的重点。 获取位置 通常可在SAP Business Workflow日志中找到该拒绝步骤。也可以根据特定状态变化或添加到发票凭证中的备注进行推断。 采集 工作流日志中拒绝步骤的时间戳,或表示拒绝的凭证状态变更时间戳。 事件类型 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报告应包含完整的选择屏幕。最重要的筛选条件包括:
Company Code (BUKRS):将提取范围限定为特定法人实体。Posting Date (BUDAT):定义提取时间范围。建议按可管理的数据量分批提取,例如每次提取3至6个月的数据。Document Type (BLART):仅纳入相关发票凭证类型,例如物流发票使用“RE”,供应商发票使用“KR”。
- 输出文件路径:必须指定SAP应用服务器上创建输出文件的完整路径和文件名。运行报告的用户需要拥有该目录的写入权限。
- 性能注意事项:对于大型数据集,应在业务低峰期以后台作业方式执行报告,避免系统性能下降。逻辑应仅从表中选择所需字段,并尽可能使用SAP标准数据库索引。
- 前提条件和授权:执行提取的用户或服务账户需要具备以下权限:
- ABAP报告执行权限(属于
S_PROGRAM)。 - 对包括
BKPF、BSEG、RBKP、RSEG、CDHDR和CDPOS在内的财务及物流表拥有读取权限。 - 向指定应用服务器目录写入文件的权限(
S_DATASET)。 - 访问
SE38、SM36、AL11和CG3Y事务代码,用于开发、计划任务和获取文件。
- ABAP报告执行权限(属于
a 示例查询 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%。
无需信用卡,几分钟即可完成设置。