Votre Template de données pour le processus Purchase to Pay - Traitement des factures
Votre Template de données pour le processus Purchase to Pay - Traitement des factures
- Attributs recommandés à collecter
- Activités clés à suivre
- Directives d'extraction pour SAP ECC
Attributs Purchase to Pay - Traitement des factures
| Nom | Description | ||
|---|---|---|---|
| Activité Activity | Le nom d'une étape métier ou d'un événement spécifique survenu pendant le cycle de vie du traitement des factures. | ||
| Description L'attribut 'Activité' représente une étape ou une action distincte dans le workflow de traitement des factures. Ces activités sont dérivées de divers événements système, tels que la création de documents, les changements de statut, les approbations ou les actions utilisateur enregistrées dans les journaux de modifications SAP. L'analyse des activités est au cœur du Process Mining. Elle permet la visualisation des cartes de processus, l'identification des goulots d'étranglement (par exemple, de longues attentes après 'Facture envoyée pour approbation'), des boucles de retravail (par exemple, des cycles répétés de 'Blocage de paiement défini' et 'Blocage de paiement levé') et des écarts de conformité. La séquence et la fréquence des activités révèlent le flux de processus réel, tel qu'il est. Pourquoi c'est important Il définit les étapes de la cartographie des processus, permettant la visualisation des flux de processus, la découverte des goulots d'étranglement et l'identification du retravail. Où obtenir Cet attribut est généralement dérivé de plusieurs sources, y compris les codes de transaction (SY-TCODE), les champs de statut dans des tables comme RBKP (par exemple, RBSTAT) et les événements de modification des tables CDHDR et CDPOS. Exemples Facture pré-enregistréeFacture Envoyée pour ApprobationFacture approuvéeFacture comptabiliséeFacture apurée | |||
| Heure de l'événement EventTime | L'horodatage précis, incluant la date et l'heure, à laquelle une activité s'est produite. | ||
| Description L'Event Time (Heure de l'Événement) enregistre le moment exact où une activité commerciale a été exécutée et journalisée dans le système source. Cet horodatage est l'épine dorsale chronologique du processus, ordonnant toutes les activités pour chaque facture en une séquence cohérente. En analyse, l'Event Time est essentiel pour le calcul de toutes les métriques basées sur la durée, telles que les temps de cycle, les temps d'attente et les temps de traitement entre les activités. Il alimente des tableaux de bord comme le 'Temps de cycle de bout en bout de la facture' et la 'Durée de résolution du blocage de paiement' en fournissant les données nécessaires pour mesurer le temps écoulé entre deux points quelconques du processus. Des horodatages précis sont critiques pour identifier les retards et les goulots d'étranglement de performance. Pourquoi c'est important Cet horodatage est essentiel pour ordonner correctement les événements et calculer toutes les métriques de performance, telles que les temps de cycle et les durées des goulots d'étranglement. Où obtenir Ceci est généralement dérivé en combinant la date de modification (UDATE) et l'heure de modification (UTIME) de la table d'en-tête de document de modification, CDHDR. Pour les événements de création spécifiques, il peut s'agir de la date et l'heure de création des tables comme RBKP (ERNAM, ERZET). Exemples 2023-03-15T10:30:00Z2023-03-16T14:05:21Z2023-03-28T09:00:00Z | |||
| Numéro de facture InvoiceNumber | L'identifiant unique d'un document de facture fournisseur. | ||
| Description Le numéro de facture sert d'identifiant unique pour le parcours de traitement des factures. Chaque numéro correspond à une seule facture reçue d'un fournisseur, permettant de suivre toutes les activités connexes, de la capture des données au paiement final, comme faisant partie d'une instance de processus cohérente. Dans l'analyse du Process Mining, cet attribut est fondamental pour reconstituer le cycle de vie de bout en bout de chaque facture. Il permet la connexion d'événements disparates enregistrés dans SAP, tels que la mise en attente, la comptabilisation, le blocage et la compensation, en une séquence chronologique. Cela offre une vue claire de la manière dont chaque facture est traitée, du temps que cela prend et des endroits où des écarts par rapport au processus standard se produisent. Pourquoi c'est important C'est la clé primaire qui lie tous les événements liés à une seule facture, en faisant le fondement essentiel pour l'analyse des processus et l'exploration des variantes. Où obtenir Il s'agit généralement du numéro de document de la table SAP RBKP, champ BELNR, souvent concaténé avec le code de société (BUKRS) et l'exercice comptable (GJAHR) pour une unicité absolue. Exemples 510004567851000456795100045680 | |||
| Date d'échéance du paiement PaymentDueDate | La date à laquelle le paiement de la facture est dû au fournisseur, selon les conditions de paiement. | ||
| Description La date d'échéance du paiement est calculée en fonction de la date de référence de la facture et des conditions de paiement convenues. Elle représente la date limite pour effectuer le paiement afin d'éviter les retards et d'éventuelles pénalités ou de nuire aux relations avec les fournisseurs. Cet attribut est crucial pour les KPI de performance et de conformité tels que le 'Taux de paiement ponctuel' et la 'Perte d'opportunités d'escompte'. En comparant la date de paiement réelle (Date de compensation) à la date d'échéance du paiement, l'analyse peut déterminer automatiquement si un paiement a été effectué à temps, en avance ou en retard. C'est un élément fondamental pour le tableau de bord 'Respect des conditions de paiement'. Pourquoi c'est important Il sert de référence pour mesurer la performance des paiements à temps et identifier les opportunités de capture d'escomptes pour paiement anticipé. Où obtenir Cette date est souvent calculée. La date de référence pour le paiement (ZFBDT) se trouve dans la table BSEG. La logique de la date d'échéance dépend également des conditions de paiement (BSEG-ZTERM). Exemples 2023-04-192023-05-052023-05-11 | |||
| Date d'encaissement ClearingDate | La date à laquelle le paiement a été effectué et la facture a été compensée des comptes fournisseurs. | ||
| Description La 'Date de compensation' marque l'étape finale du cycle de vie de la facture : le paiement. C'est la date à laquelle le poste de facture ouvert est compensé par un document de paiement dans le système. Cette date représente le moment réel de l'exécution du paiement. Cet attribut est le point final de nombreux KPI critiques, y compris le 'Temps de cycle moyen des factures' et le 'Taux de paiement ponctuel'. Il est comparé à la date d'échéance du paiement pour mesurer la performance de paiement. Pour l'analyse des escomptes, il est comparé à la période d'escompte pour voir si le paiement a été effectué à temps pour bénéficier de l'escompte. Pourquoi c'est important Il marque l'achèvement du processus et constitue la base du calcul du temps de cycle total, des taux de paiement à temps et de la réalisation des escomptes de caisse. Où obtenir Pour les postes lettrés, il s'agit du champ 'Date de lettrage' (AUGDT) de la table des postes fournisseurs lettrés, BSAK. Exemples 2023-04-152023-05-022023-05-20 | |||
| Date de comptabilisation PostingDate | La date à laquelle la facture a été officiellement comptabilisée dans les grands livres financiers. | ||
| Description La date de comptabilisation est une date clé dans le processus comptable. Elle détermine la période fiscale durant laquelle la dépense de la facture est reconnue dans le grand livre général. Elle est généralement définie par le comptable fournisseurs lors du traitement de la facture. Dans l'analyse des processus, l'activité 'Facture comptabilisée', marquée par cette date, est une étape majeure. La durée entre la réception de la facture et la date de comptabilisation est une composante critique du temps de cycle global. Cette date est également fondamentale pour le reporting financier et l'analyse du débit, comme le suivi du volume de factures comptabilisées par semaine ou par mois. Pourquoi c'est important Il marque une étape critique du processus, détermine la période financière de la transaction et est un élément clé du calcul du temps de cycle. Où obtenir Il s'agit du champ 'Date de comptabilisation' (BUDAT) de la table d'en-tête de document de facture, RBKP. Exemples 2023-03-202023-04-052023-04-11 | |||
| Montant de la facture InvoiceAmount | Le montant brut total de la facture, exprimé dans la devise d'origine du document. | ||
| Description Le Montant de la Facture représente la valeur totale de la facture soumise par le fournisseur. Il s'agit d'une métrique financière clé pour chaque cas de facture. Dans le Process Mining, cet attribut est essentiel pour l'analyse basée sur la valeur. Il permet de filtrer et de segmenter le processus en fonction de la valeur de la facture, qui est souvent corrélée à la complexité du processus et aux exigences d'approbation. Par exemple, les factures de grande valeur pourraient suivre un chemin d'approbation différent et plus strict. Il est également utilisé dans l'analyse de conformité, par exemple, pour vérifier si les factures de grande valeur contournent les étapes d'approbation requises. Pourquoi c'est important Il permet une analyse basée sur la valeur, aidant à prioriser les factures de grande valeur et à comprendre comment le montant de la facture impacte le flux de processus et la conformité. Où obtenir Il s'agit du champ 'Montant brut de la facture' (RMWWR) de la table d'en-tête de document de facture, RBKP. Exemples 1500.7512500.00850.20 | |||
| Motif de blocage de paiement PaymentBlockReason | Un code indiquant la raison pour laquelle une facture est bloquée pour paiement. | ||
| Description Lorsqu'une facture présente un écart ou nécessite une investigation plus approfondie, un blocage de paiement est appliqué. Le code de raison du blocage de paiement spécifie pourquoi le blocage a été mis en place, par exemple, en raison d'un écart de quantité, d'un écart de prix ou d'un blocage manuel. Cet attribut est essentiel pour le tableau de bord 'Durée de résolution des blocages de paiement'. L'analyse de la fréquence et de la durée des blocages par motif aide à identifier les causes profondes des retards de paiement. Par exemple, si 'Écart de prix' est la raison la plus courante des longs blocages, cela indique un problème potentiel dans les données de base ou le processus de commande qui doit être résolu. Pourquoi c'est important Il explique pourquoi les factures sont retardées, permettant une analyse des causes profondes des blocages de paiement et aidant à prioriser les efforts d'amélioration des processus. Où obtenir La raison du blocage de paiement peut être trouvée au niveau du poste dans la table RSEG (champ SPGRS) ou dans la table des documents comptables BSEG (champ ZLSPR). Exemples RIM | |||
| Nom d'utilisateur UserName | L'ID utilisateur SAP de la personne qui a exécuté l'activité. | ||
| Description L'attribut 'Nom d'utilisateur' identifie l'individu spécifique responsable de l'exécution d'une activité donnée dans le processus. Il s'agit généralement du nom d'utilisateur SAP enregistré avec la transaction ou l'événement de modification. Cet attribut est crucial pour l'analyse des performances au niveau de l'utilisateur ou de l'équipe. Il aide à répondre à des questions telles que 'Qui sont les approbateurs les plus rapides ?' ou 'Quels utilisateurs génèrent le plus de retravail ?'. Il est utilisé dans les tableaux de bord pour analyser la répartition de la charge de travail, identifier les besoins en formation et comprendre les variations de performance entre les différents employés. Pourquoi c'est important Il permet l'analyse de la performance et de la charge de travail par individu ou par équipe, aidant à identifier les meilleurs performeurs, les opportunités de formation et les déséquilibres de ressources. Où obtenir Il s'agit du champ 'Modifié par' (USERNAME) de la table d'en-tête de document de modification, CDHDR. Pour les événements de création, il peut s'agir du champ 'Saisi par' (ERNAM) dans des tables comme RBKP. Exemples JSMITHBWILSONCHEN | |||
| Numéro de commande d'achat PurchaseOrderNumber | L'identifiant de la commande (PO) à laquelle la facture est rapprochée. | ||
| Description Le numéro de commande d'achat (PO) lie une facture au document d'approvisionnement original. C'est fondamental pour le rapprochement à trois (PO, réception de marchandises, facture) et pour l'analyse de l'efficacité du processus de facturation basé sur la commande. Cet attribut est essentiel pour des tableaux de bord tels que le 'Taux d'écart de rapprochement facture-commande'. Il permet de segmenter le processus en factures avec commande versus factures sans commande, qui ont souvent des chemins de traitement et des complexités très différents. L'analyse des problèmes liés à des commandes spécifiques peut aider à diagnostiquer des problèmes en amont dans le processus d'approvisionnement. Pourquoi c'est important Il relie la facture au processus d'approvisionnement, permettant l'analyse des factures avec et sans commande d'achat et l'identification des écarts de rapprochement. Où obtenir Ceci se trouve généralement au niveau du poste. Le 'Numéro de commande d'achat' (EBELN) se trouve dans la table des postes de facture, RSEG. Il peut être nécessaire de l'agréger au niveau de l'en-tête. Exemples 450001756345000175644500017565 | |||
| Numéro de fournisseur VendorNumber | Un identifiant unique pour le fournisseur ou le prestataire qui a soumis la facture. | ||
| Description Le numéro de fournisseur est la clé de données de base qui identifie le fournisseur. Il lie la transaction de facture à un partenaire commercial spécifique, permettant une analyse basée sur les caractéristiques du fournisseur. L'analyse du processus par numéro de fournisseur peut révéler des informations importantes sur les relations et la performance des fournisseurs. Par exemple, elle peut aider à identifier quels fournisseurs soumettent constamment des factures problématiques qui entraînent des blocs de paiement ou des écarts, ou quelles factures de fournisseurs sont traitées le plus efficacement. Ces informations sont précieuses pour la gestion des fournisseurs et les initiatives d'approvisionnement stratégique. Pourquoi c'est important Il permet une analyse spécifique aux fournisseurs, aidant à identifier les modèles, les problèmes ou les efficacités associés à des fournisseurs particuliers. Où obtenir Il s'agit du champ 'Partenaire de facturation' (LIFNR) de la table d'en-tête de document de facture, RBKP. Exemples 100345100876200112 | |||
| Code société CompanyCode | L'identifiant de l'entité juridique ou de l'entreprise pour laquelle la facture est traitée. | ||
| Description Le code de société est une unité organisationnelle fondamentale dans SAP Financials, représentant une entité juridique indépendante. Toutes les transactions financières, y compris les factures, sont comptabilisées sous un code de société spécifique. Cet attribut permet de segmenter l'analyse des processus par entité juridique. Il est crucial pour comparer la performance des processus, la conformité et l'efficacité entre différentes sociétés au sein d'un groupe d'entreprises. Les tableaux de bord peuvent être filtrés par code de société pour fournir une vue spécifique à l'entreprise des KPI de traitement des factures. Pourquoi c'est important Il permet la comparaison des processus et l'analyse comparative des performances entre différentes entités juridiques au sein d'une organisation. Où obtenir Il s'agit du champ 'Code de société' (BUKRS) de la table d'en-tête de document de facture, RBKP. Exemples 10002000US01 | |||
| Compte de Grand Livre GeneralLedgerAccount | Le numéro de compte général auquel est imputée la dépense ou le coût de la facture. | ||
| Description Le compte général est le compte de destination dans le plan comptable où l'impact financier de la facture est enregistré. C'est une donnée critique pour le reporting financier et la gestion des coûts. Pour le Process Mining, l'analyse du compte général apporte une dimension financière au flux de processus. Le tableau de bord 'Analyse de l'utilisation des comptes généraux' peut révéler des schémas de dépenses, identifier d'éventuels erreurs de codification des factures et garantir que les coûts sont alloués aux départements ou projets corrects. Il aide à combler le fossé entre l'exécution des processus et l'impact financier. Pourquoi c'est important Il ajoute une dimension financière au processus, permettant l'analyse de l'allocation des coûts, des modèles de dépenses et des erreurs potentielles de codage des factures. Où obtenir Ceci se trouve au niveau du poste. Le 'Numéro de compte général' (HKONT) se trouve dans la table des postes de facture RSEG pour les factures de commande ou BSEG pour les factures FI directes. Exemples 630000655100741000 | |||
| Conditions de paiement PaymentTerms | Le code définissant les conditions de paiement convenues avec le fournisseur, telles que les périodes d'escompte et les dates d'échéance. | ||
| Description Les conditions de paiement définissent les règles de règlement des factures et, le cas échéant, les escomptes disponibles pour paiement anticipé. Les exemples incluent 'Net 30 jours' ou '2% 10, Net 30', signifiant un escompte de 2% si payé en 10 jours, sinon le montant total est dû en 30 jours. Cet attribut est la base du tableau de bord 'Perte d'opportunités d'escompte' et de l'indicateur de performance clé (KPI) 'Taux de saisie d'escompte'. L'analyse utilise les conditions de paiement conjointement avec les dates de comptabilisation et de paiement pour déterminer si un escompte était disponible et s'il a été effectivement saisi. Il est également essentiel pour le tableau de bord 'Respect des conditions de paiement'. Pourquoi c'est important Il est essentiel pour analyser les taux de capture des escomptes de caisse et comprendre l'impact financier des retards de processus. Où obtenir Il s'agit du champ 'Clé des conditions de paiement' (ZTERM) de la table d'en-tête de document de facture, RBKP. Exemples Z0010001NT30 | |||
| Dernière mise à jour des données LastDataUpdate | Horodatage indiquant la dernière actualisation des données du processus depuis le système source. | ||
| Description Cet attribut enregistre la date et l'heure de la dernière extraction ou mise à jour des données. Il s'applique à l'ensemble du jeu de données plutôt qu'aux événements individuels, fournissant une indication claire de la fraîcheur des données. Il s'agit d'un attribut de métadonnées essentiel pour les utilisateurs de tableaux de bord et les analystes. Il les aide à comprendre la période couverte par l'analyse et garantit qu'ils prennent des décisions basées sur des informations actuelles. Il est généralement affiché en évidence sur les tableaux de bord pour informer les utilisateurs de la récence des données. Pourquoi c'est important Il informe les utilisateurs de la fraîcheur des données, garantissant que l'analyse et les décisions sont basées sur des informations à jour. Où obtenir Cette valeur est générée et injectée dans le jeu de données par l'outil d'extraction de données ou ETL au moment de l'actualisation des données. Exemples 2024-05-20T08:00:00Z2024-05-21T08:00:00Z2024-05-22T08:00:00Z | |||
| Devise Currency | Le code de devise pour le montant de la facture. | ||
| Description L'attribut 'Devise' spécifie la devise dans laquelle le montant de la facture est libellé, par exemple, USD, EUR ou JPY. Cet attribut fournit un contexte essentiel pour le montant de la facture. Il permet une interprétation et une agrégation correctes des données financières, en particulier dans les organisations mondiales traitant avec plusieurs devises. L'analyse peut être filtrée par devise pour comparer l'efficacité de traitement ou les problèmes entre différentes zones monétaires. Pour une agrégation financière significative, les montants peuvent nécessiter une conversion en une seule devise de reporting. Pourquoi c'est important Il fournit le contexte nécessaire à tout montant financier, garantissant une interprétation précise et permettant le filtrage et l'analyse basés sur la devise. Où obtenir Il s'agit du champ 'Clé de devise' (WAERS) de la table d'en-tête de document de facture, RBKP. Exemples USDEURGBP | |||
| Escompte de Caisse Manqué IsCashDiscountLost | Un indicateur calculé qui signale si un escompte de caisse disponible a été manqué. | ||
| Description C'est un attribut booléen calculé à partir des conditions de paiement et de la date de paiement réelle. Il est défini sur vrai si les 'Conditions de paiement' offraient un escompte pour paiement anticipé et que la 'Date de compensation' était postérieure à l'expiration de la période d'escompte. Cela mesure directement la perte financière due aux inefficacités du processus. Cet attribut est la base du tableau de bord 'Perte d'opportunités d'escompte'. Il permet une quantification aisée de l'impact financier des retards de traitement. En filtrant les cas où ce drapeau est vrai, les analystes peuvent étudier les variantes de processus spécifiques et les goulots d'étranglement qui conduisent le plus fréquemment à des escomptes manqués, offrant un argument commercial solide pour l'amélioration des processus. Pourquoi c'est important Il quantifie directement la perte financière due aux retards de processus, créant un argument convaincant pour l'optimisation du workflow de traitement des factures. Où obtenir Cet attribut n'existe pas dans SAP. Il est calculé lors de la transformation des données en interprétant les 'Conditions de paiement' et en comparant la 'Date de compensation' à la date d'échéance de l'escompte. Exemples truefaux | |||
| Est en souffrance IsOverdue | Un indicateur calculé qui signale si la facture a été payée après sa date d'échéance. | ||
| Description C'est un attribut booléen calculé en comparant la 'Date de compensation' (date de paiement réelle) avec la 'Date d'échéance de paiement'. Si la date de compensation est postérieure à la date d'échéance, le drapeau est vrai ; sinon, il est faux. Cela fournit une mesure simple et directe de la performance de paiement ponctuel pour chaque facture. Cet attribut simplifie l'analyse et la visualisation dans les tableaux de bord. Il permet un filtrage et une agrégation aisés pour calculer le KPI 'Taux de paiement ponctuel'. Les utilisateurs peuvent rapidement segmenter le processus pour comparer les flux de processus des factures en retard par rapport à celles payées à temps, révélant potentiellement les schémas de processus qui conduisent aux paiements tardifs. Pourquoi c'est important Il simplifie l'analyse de la performance des paiements à temps et permet une comparaison facile entre les processus de facturation à temps et en retard. Où obtenir Cet attribut n'existe pas dans SAP. Il est calculé lors de la transformation des données en utilisant la formule : ClearingDate > PaymentDueDate. Exemples truefaux | |||
| Heure de fin EndTime | L'horodatage indiquant quand une activité a été achevée. Pour les événements instantanés, il est identique à l'heure de début. | ||
| Description L'attribut 'Heure de fin' marque l'achèvement d'une activité spécifique. Pour de nombreux événements dans SAP, qui sont enregistrés comme des points uniques dans le temps, l'heure de fin sera identique à l'heure de début. Cependant, pour les activités ayant une durée mesurable, comme une étape d'approbation sur laquelle on travaille activement, elle peut représenter la conclusion de ce travail. Dans l'analyse des processus, disposer d'une heure de fin distincte permet de mesurer le temps de traitement de l'activité, séparément du temps d'attente qui la précède. Cela aide à différencier le temps qu'il faut pour exécuter une activité de la durée pendant laquelle un dossier attend que cette activité commence, offrant des informations plus approfondies sur l'efficacité des ressources. Pourquoi c'est important Il permet le calcul du temps de traitement des activités, le distinguant du temps d'attente entre les activités et améliorant l'analyse des goulots d'étranglement. Où obtenir C'est souvent la même chose que l'heure de début, dérivée de CDHDR-UDATE et CDHDR-UTIME. Dans certains cas, elle peut être dérivée des journaux de workflow qui enregistrent explicitement le début et la fin d'une tâche. Exemples 2023-03-15T10:35:10Z2023-03-16T14:10:00Z2023-03-28T09:02:45Z | |||
| Motif de refus RejectionReason | Un code ou un texte expliquant pourquoi une facture a été rejetée pendant le workflow d'approbation. | ||
| Description Lorsqu'un approbateur rejette une facture, il fournit idéalement une raison à ce rejet. Cela peut être un code standardisé ou un commentaire en texte libre indiquant des problèmes comme 'Numéro de commande incorrect', 'Facture en double' ou 'Montant incorrect'. Ces données sont vitales pour le tableau de bord 'Raisons et tendances des rejets de factures'. En analysant la fréquence des différentes raisons de rejet, l'entreprise peut identifier les problèmes courants et mettre en œuvre des actions correctives. Par exemple, si 'Numéro de commande incorrect' est une raison fréquente, cela pourrait indiquer un besoin de meilleure communication avec les fournisseurs ou de formation pour le personnel de saisie des données. Cette analyse est essentielle pour réduire le retravail des processus. Pourquoi c'est important Il fournit la cause profonde des rejets, permettant des améliorations ciblées des processus pour réduire le retravail et améliorer les taux de réussite dès la première fois. Où obtenir Cette information n'est souvent pas stockée dans un seul champ standard. Elle peut se trouver dans les journaux de conteneurs de workflow, les champs de texte long associés au document, ou des champs spécifiques dans une solution de workflow personnalisée. Exemples DUPLICATE_INVMONTANT_ERRONÉNO_PO_MATCH | |||
| Système source SourceSystem | Identifie le système source spécifique à partir duquel les données ont été extraites. | ||
| Description L'attribut 'Système source' indique l'origine des données d'événement, par exemple, un nom d'instance SAP ECC spécifique. C'est particulièrement important dans les environnements avec plusieurs systèmes ERP ou lorsque les données sont combinées de différentes sources. Dans l'analyse, cet attribut aide à différencier les processus et les performances entre divers systèmes, régions ou unités commerciales qui pourraient fonctionner sur des instances séparées. Il assure une lignée des données claire et permet un filtrage et une analyse spécifiques au système. Pourquoi c'est important Il fournit un contexte crucial dans les architectures multi-systèmes, permettant une ségrégation appropriée des données et une analyse des performances spécifique au système. Où obtenir Il s'agit généralement d'une valeur statique ajoutée lors du processus d'extraction des données, représentant l'ID système SAP (TADIR-SRCSYSTEM) ou un identifiant assigné manuellement pour l'instance SAP spécifique. Exemples SAPECC_PROD_EUECC_US_FINSAP_ERP_6_EHP8 | |||
| Temps de traitement ProcessingTime | La durée du temps passé sur une activité spécifique. | ||
| Description Le temps de traitement mesure le temps nécessaire pour exécuter une activité, de son début à sa fin. Il est calculé comme la différence entre l'heure de fin et l'heure de début d'une activité. Il se distingue du temps de cycle, qui inclut le temps d'attente entre les activités. L'analyse du temps de traitement permet de comprendre l'effort réel ou le temps de contact pour les différentes étapes. Elle peut identifier les activités gourmandes en ressources ou inefficaces. Par exemple, un temps de traitement long pour 'Données de facture saisies' pourrait indiquer une facture complexe ou un processus de saisie de données inefficace. Cette métrique est précieuse pour la planification des ressources et les initiatives d'automatisation. Pourquoi c'est important Il mesure la durée réelle de travail pour une activité, aidant à identifier les étapes gourmandes en ressources et à distinguer le temps de travail actif du temps d'attente inactif. Où obtenir Cet attribut n'existe pas dans SAP. Il est calculé lors de la transformation des données en utilisant la formule : EndTime - StartTime. Exemples PT5M10SPT2H15MPT30S | |||
| Type de document DocumentType | Un code qui classe le document comptable, par exemple, comme une facture fournisseur ou un avoir. | ||
| Description Le type de document est utilisé pour catégoriser différents types de transactions commerciales dans SAP. Pour le traitement des factures, les types courants incluent 'RE' pour les factures standard ou 'KG' pour les avoirs fournisseurs. Le type de document contrôle des aspects de la comptabilisation, tels que la plage de numéros utilisée. Dans l'analyse, cet attribut permet de filtrer le processus par types de transactions spécifiques. Par exemple, le processus de traitement d'un avoir peut être significativement différent de celui d'une facture standard. La séparation de ces flux à l'aide du type de document fournit une vue de processus plus précise et pertinente. Pourquoi c'est important Il permet la séparation et l'analyse de différentes transactions commerciales, telles que les factures par rapport aux avoirs, qui suivent des processus différents. Où obtenir Il s'agit du champ 'Type de document' (BLART) de la table d'en-tête de document de facture, RBKP. Exemples REKRKG | |||
Activités Purchase to Pay - Traitement des factures
| Activité | Description | ||
|---|---|---|---|
| Blocage de paiement activé | Cette activité se produit lorsqu'un blocage est placé sur un poste de facture, l'empêchant d'être payé. Les blocages peuvent être définis automatiquement en raison d'écarts dans le rapprochement à trois voies ou manuellement pour diverses raisons. | ||
| Pourquoi c'est important Cet événement est critique pour mesurer la durée de résolution du blocage de paiement et identifier les causes profondes des retards de paiement. Il met en évidence les problèmes de prix, de quantité ou d'approbations requises. Où obtenir C'est un événement explicite qui peut être suivi via les journaux de modifications (tables CDHDR et CDPOS) pour la table BSEG, champ ZLSPR (Clé de blocage de paiement). Capture Horodatage des documents de modification (CDHDR) lorsque la valeur de BSEG-ZLSPR passe de vide à non vide. Type d'événement explicit | |||
| Données de facture saisies | Marque la création initiale du document de facture dans SAP, soit comme document mis en attente (parked) ou entièrement comptabilisé (posted). C'est généralement le premier événement enregistré dans le système pour le cycle de vie d'une facture et sert de point de départ du processus. | ||
| Pourquoi c'est important Cette activité est le point de départ principal pour mesurer le temps de cycle de traitement des factures de bout en bout. L'analyse de la durée à partir de ce point aide à identifier les retards dans la phase initiale de saisie des données et de création de documents. Où obtenir L'horodatage de création est capturé dans la table SAP BKPF, champ CPUDT (Date de saisie du document comptable) et CPUTM (Heure de saisie). Capture Utilisez l'horodatage de création du document de l'en-tête de la table BKPF (CPUDT). Type d'événement explicit | |||
| Facture apurée | Cette activité marque l'étape finale d'un cycle de vie de facture réussi, où l'engagement ouvert est compensé par un document de paiement. Cela signifie que le paiement a été exécuté. | ||
| Pourquoi c'est important En tant qu'événement de fin principal, il est crucial pour le calcul du temps de cycle global de bout en bout. Il confirme la réussite du processus et est utilisé pour mesurer la performance des paiements à temps. Où obtenir C'est un événement explicite enregistré dans la table des postes de facture BSEG. La date de compensation est stockée dans le champ AUGDT, et le numéro du document de compensation dans AUGBL. Capture Utilisez la date de compensation (BSEG-AUGDT) du poste du document de facture. Type d'événement explicit | |||
| Facture comptabilisée | C'est un événement financier clé où la facture est officiellement enregistrée dans le grand livre général, créant une dette. Cela fait passer le document d'un état temporaire (mis en attente) à une écriture comptable permanente. | ||
| Pourquoi c'est important La comptabilisation est une étape majeure qui confirme la validité de la facture. C'est un préalable au paiement et un indicateur clé du débit de traitement. Où obtenir C'est un événement explicite enregistré dans la table d'en-tête de document BKPF. L'horodatage est la date de comptabilisation, BKPF-BUDAT. Le document n'aura plus le statut 'mis en attente'. Capture Utilisez la date de comptabilisation (BKPF-BUDAT) pour les documents qui ne sont pas mis en attente (BKPF-BSTAT est vide ou ' '). Type d'événement explicit | |||
| Facture contre-passée | Représente l'annulation d'un document de facture comptabilisé. Un document d'annulation est créé pour annuler l'impact financier de la facture originale. | ||
| Pourquoi c'est important Cette activité met en évidence une exception significative et un chemin de retravail. L'analyse de la fréquence et des raisons des annulations peut révéler des problèmes systémiques dans le processus de validation et de comptabilisation des factures. Où obtenir C'est un événement explicite enregistré dans la table d'en-tête de document BKPF. L'en-tête du document annulé contient le numéro du document d'annulation (STBLG) et l'exercice comptable (STJAH). Capture Identifiez les documents où BKPF-STBLG est renseigné. L'horodatage de l'événement est la date de comptabilisation du document d'annulation. Type d'événement explicit | |||
| Blocage de paiement levé | Représente la levée d'un blocage de paiement sur un poste de facture, lui permettant de passer à l'exécution du paiement. Cela signifie qu'un problème précédemment identifié a été résolu. | ||
| Pourquoi c'est important Cette activité conclut la mesure de la durée du blocage. L'analyse du temps entre la mise en place et la levée d'un blocage révèle l'efficacité du processus de résolution des problèmes. Où obtenir Cet événement est suivi via les journaux de modifications (tables CDHDR et CDPOS) pour la table BSEG, champ ZLSPR (Clé de blocage de paiement), lorsque le blocage est levé. Capture Horodatage des documents de modification (CDHDR) lorsque la valeur de BSEG-ZLSPR passe de non vide à vide. Type d'événement explicit | |||
| Facture approuvée | Signifie que la facture a été formellement approuvée par l'autorité désignée, lui permettant de passer à la comptabilisation et au paiement. C'est souvent l'étape finale d'un workflow. | ||
| Pourquoi c'est important Ce jalon conclut la mesure du temps de cycle d'approbation. Il débloque le processus, permettant un paiement rapide et aidant à analyser la répartition de la charge de travail parmi les approbateurs. Où obtenir Ceci est généralement capturé à partir des tables de workflow SAP Business en identifiant l'achèvement d'une tâche d'approbation. Alternativement, il peut être déduit de la levée d'un blocage de paiement lié à l'approbation. Capture Horodatage de l'étape d'approbation complétée dans les journaux de workflow ou de la levée d'un blocage de paiement spécifique. Type d'événement inferred | |||
| Facture Envoyée pour Approbation | Représente le moment où une facture est soumise à un workflow d'approbation formel. Le mécanisme de capture dépend fortement de l'implémentation spécifique du workflow SAP ou d'un système tiers. | ||
| Pourquoi c'est important Cette activité déclenche la mesure du KPI 'Temps de cycle d'approbation des factures'. Elle est essentielle pour identifier les retards dans la chaîne d'approbation et analyser la performance des approbateurs. Où obtenir Cet événement est généralement capturé à partir des tables de workflow SAP Business (par exemple, SWW_WI2OBJ, SWWLOG) en identifiant le début d'une tâche d'approbation spécifique. Dans des scénarios plus simples, il peut être déduit d'un changement de statut dans un champ personnalisé. Capture Nécessite l'analyse des journaux de workflow SAP ou des champs de statut personnalisés liés au document de facture. Type d'événement inferred | |||
| Facture pré-enregistrée | Indique qu'une facture a été saisie dans SAP mais n'a pas encore été comptabilisée dans le grand livre. Il s'agit d'un état temporaire permettant une révision, une correction ou une approbation avant la comptabilisation financière. | ||
| Pourquoi c'est important Suivre le moment et la durée de la mise en attente des factures met en évidence les goulots d'étranglement dans le processus de validation et d'approbation pré-comptabilisation. Cela sépare le temps de saisie des données du temps de traitement financier. Où obtenir Ceci est déduit du statut du document dans la table BKPF, champ BSTAT. Une valeur de 'V' (document mis en attente) ou 'W' (document mis en attente avec libération de modification) indique un état de mise en attente. Capture Identifiez les documents où le champ de statut BKPF-BSTAT est 'V'. L'horodatage de l'événement est la date de création BKPF-CPUDT. Type d'événement inferred | |||
| Facture rejetée | Indique qu'une facture a été rejetée pendant le processus d'approbation. Cette action nécessite généralement une correction et une nouvelle soumission, créant une boucle de retravail. | ||
| Pourquoi c'est important Le suivi des rejets est crucial pour identifier les raisons courantes d'échec, telles que des données incorrectes ou des violations de politique. Il aide à quantifier le retravail et à identifier les domaines d'amélioration des processus ou de formation des fournisseurs. Où obtenir Cet événement se trouve généralement dans les journaux de workflow SAP Business comme une étape de rejet. Il peut également être déduit de changements de statut spécifiques ou de notes ajoutées au document de facture. Capture Horodatage de l'étape de rejet dans les journaux de workflow ou d'un changement de statut de document indiquant un rejet. Type d'événement inferred | |||
| La facture devient en retard | Un événement calculé qui se produit lorsque la date actuelle dépasse la date d'échéance nette de la facture et que celle-ci n'a pas encore été payée. La date d'échéance est déterminée à partir des conditions de paiement et de la date de base. | ||
| Pourquoi c'est important Cette activité est essentielle pour le suivi du KPI 'Taux de paiement ponctuel'. Elle signale de manière proactive les factures à risque de paiement tardif, ce qui peut nuire aux relations avec les fournisseurs et entraîner des pénalités. Où obtenir Cet événement est calculé en comparant la date actuelle à la date d'échéance nette. La date d'échéance est dérivée de la date de référence (BSEG-ZFBDT) et des conditions de paiement (BSEG-ZTERM). Capture L'événement est déclenché lorsque Type d'événement calculated | |||
Guides d'extraction
Étapes
- Créer le Programme ABAP: Utilisez la transaction
SE38ouSE80pour créer un nouveau programme exécutable, par exemple,Z_PM_INVOICE_EXTRACT. Donnez un titre approprié et définissez le type sur 'Executable Program'. - Définir l'Écran de Sélection: Dans le programme, définissez un écran de sélection pour permettre aux utilisateurs de filtrer les données. Les paramètres clés devraient inclure le code de société (
BUKRS), l'année fiscale (GJAHR), la plage de dates de comptabilisation (BUDAT), et un paramètre pour le chemin du fichier de sortie sur le serveur d'applications. - Déclarer les Structures de Données: Définissez une structure de table interne qui contiendra le journal d'événements final. Cette structure doit inclure tous les attributs requis et recommandés :
InvoiceNumber,Activity,EventTime,UserName,VendorNumber,PurchaseOrderNumber,InvoiceAmount,PostingDate,PaymentDueDate,PaymentBlockReason, etClearingDate. - Implémenter la Logique de Sélection des Données: Écrivez la logique ABAP principale pour sélectionner les données de facture. L'approche implique plusieurs sélections qui sont combinées dans la table du journal d'événements final.
- Tout d'abord, sélectionnez les données d'en-tête et de poste des tables de factures primaires
BKPF,BSEG,RBKPetRSEGen fonction des critères de l'écran de sélection. - Pour chaque facture, générez les événements de base comme 'Données de facture capturées' (à partir de l'horodatage de création) et 'Facture comptabilisée' (à partir de l'horodatage de comptabilisation).
- Interrogez les tables de documents de modification
CDHDRetCDPOSpour trouver les modifications liées aux blocages de paiement (champZLSPRdansBSEG). Pour chaque modification pertinente, créez les événements 'Blocage de paiement défini' et 'Blocage de paiement levé'. - Identifiez les événements 'Facture lettrée' en vérifiant un document de lettrage (
AUGBL) et une date de lettrage (AUGDT) dans la tableBSEG. - Identifiez les événements 'Facture annulée' en vérifiant un document d'annulation (
STBLG) dans l'en-têteBKPF. - Implémentez une logique personnalisée pour capturer les événements de workflow ('Facture envoyée pour approbation', 'Approuvée', 'Rejetée'). Cette partie est très spécifique au client et nécessite d'adapter le code aux tables ou champs de statut de votre workflow.
- Tout d'abord, sélectionnez les données d'en-tête et de poste des tables de factures primaires
- Générer les Événements Calculés: Dans la logique du programme, calculez l'événement
La facture devient en retard. Cela est dérivé en comparant la date d'échéance de paiement de la facture (PaymentDueDate) avec la date actuelle pour toutes les factures impayées. Si la date d'échéance est passée, créez un événement avec l'EventTimedéfini sur la date d'échéance. - Remplir la Table du Journal d'Événements: Au fur et à mesure que vous collectez les données pour chaque facture à partir des différentes sources, formatez-les et ajoutez de nouvelles lignes à la table interne finale du journal d'événements, une ligne par activité.
- Exporter les Données vers un Fichier: Utilisez les instructions
OPEN DATASET,TRANSFERetCLOSE DATASETpour écrire le contenu de la table interne finale dans un fichier plat sur le chemin du serveur d'applications SAP spécifié sur l'écran de sélection. Utilisez un séparateur cohérent, comme un point-virgule ou une tabulation, pour créer un fichier CSV. - Planifier l'Extraction: Pour une extraction régulière des données, créez une variante pour le programme avec les critères de sélection souhaités et planifiez son exécution en tâche de fond à l'aide de la transaction
SM36. - Récupérer le Fichier de Sortie: Accédez au répertoire du serveur d'applications SAP à l'aide de la transaction
AL11pour localiser le fichier généré. Utilisez la transactionCG3Ypour télécharger le fichier du serveur d'applications vers votre machine locale. - Préparer le Téléchargement: Avant de télécharger vers un outil de Process Mining, ouvrez le fichier CSV pour vérifier que les en-têtes sont corrects, que le format des données est cohérent (surtout pour les horodatages) et que le séparateur est celui attendu. Assurez-vous que le fichier est enregistré avec un encodage UTF-8.
Configuration
- Critères de sélection: Le rapport ABAP doit inclure un écran de sélection complet. Les filtres les plus importants sont :
Code de société (BUKRS): Pour limiter l'extraction à des entités légales spécifiques.Date de comptabilisation (BUDAT): Pour définir la période d'extraction. Il est recommandé d'extraire les données par blocs gérables, par exemple, 3 à 6 mois à la fois.Type de document (BLART): Pour inclure uniquement les types de documents de facture pertinents, tels que 'RE' pour les factures logistiques et 'KR' pour les factures fournisseurs.
- Chemin du Fichier de Sortie: Un paramètre obligatoire pour spécifier le chemin complet et le nom du fichier sur le serveur d'applications SAP où le fichier de sortie sera créé. L'utilisateur exécutant le rapport doit avoir l'autorisation d'écriture dans ce répertoire.
- Considérations de Performance: Pour les grands ensembles de données, le rapport doit être exécuté en tâche de fond pendant les heures creuses afin d'éviter la dégradation des performances du système. La logique doit sélectionner uniquement les champs requis des tables et utiliser les index de base de données SAP standard lorsque cela est possible.
- Prérequis et Autorisations: L'utilisateur ou le compte de service exécutant cette extraction nécessite :
- Des autorisations d'exécution de rapports ABAP (partie de
S_PROGRAM). - Un accès en lecture aux tables financières et logistiques, y compris
BKPF,BSEG,RBKP,RSEG,CDHDRetCDPOS. - Une autorisation d'écriture de fichiers dans le répertoire spécifié du serveur d'applications (
S_DATASET). - Un accès aux transactions
SE38,SM36,AL11etCG3Ypour le développement, la planification et la récupération des fichiers.
- Des autorisations d'exécution de rapports ABAP (partie de
a Exemple de requête 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.