retrodoc-abap-ia/documentation/documentation_zfgpayments.fugr.zbdc_vendor_payments_cloud.md

9.2 KiB

The user wants me to document the ABAP function module ZBDC_VENDOR_PAYMENTS_CLOUD in markdown format with specific sections. Let me analyze the code thoroughly.

This is a BDC (Batch Data Communication) function module that automates the SAP transaction F-53 (Post Outgoing Payments) for vendor payments. It uses the Call Transaction method via perform bdc_transaction.

Documentation : ZBDC_VENDOR_PAYMENTS_CLOUD

Fichier : zfgpayments.fugr.zbdc_vendor_payments_cloud.abap Groupe de fonctions : ZFGPAYMENTS Transaction cible : F-53 (Saisie de paiements sortants fournisseurs)


Algorithmie

La fonction ZBDC_VENDOR_PAYMENTS_CLOUD est un module BDC (Batch Data Communication) généré automatiquement (via l'enregistrement de transaction SAP). Son rôle est de simuler la saisie manuelle de la transaction standard SAP F-53 ("Post Outgoing Payments" - Paiements sortants fournisseurs) en pilotant les dynpros (écrans) de cette transaction via une séquence de champs prédéfinis.

Le principe BDC consiste à :

  1. Construire une table de données écran-par-écran (via bdc_dynpro et bdc_field),
  2. Puis soumettre cette table à la transaction cible via bdc_transaction,
  3. La transaction SAP s'exécute alors comme si un utilisateur avait saisi les données manuellement.

Le mode d'exécution peut être interactif (avec affichage des écrans), en arrière-plan (batch silencieux), ou via session de batch input (enregistrement dans une file d'attente pour exécution différée).


Objets

Paramètres d'interface

Paramètres BDC de contrôle (IMPORTING)

Paramètre Type de référence Défaut Rôle
CTU APQI-PUTACTIVE 'X' Activation de la session batch input (X = actif)
MODE APQI-PUTACTIVE 'N' Mode d'exécution : N=no display, A=affichage de tous les écrans, E=affichage en cas d'erreur
UPDATE APQI-PUTACTIVE 'L' Mode de mise à jour : L=local (synchrone), A=asynchrone, S=synchrone
GROUP APQI-GROUPID Optionnel Nom du groupe de session batch input
USER APQI-USERID Optionnel Utilisateur propriétaire de la session batch input
KEEP APQI-QERASE Optionnel Conservation de la session après traitement (X=conserver)
HOLDDATE APQI-STARTDATE Optionnel Date de départ planifiée pour la session
NODATA APQI-PUTACTIVE '/' Caractère représentant un champ vide/non renseigné dans le BDC

Paramètres de données métier (IMPORTING)

Paramètre Champ SAP Défaut Signification métier
BLDAT_001 BKPF-BLDAT 04/17/2017 Date de pièce comptable
BLART_002 BKPF-BLART KZ Type de pièce (KZ = paiement fournisseur)
BUKRS_003 BKPF-BUKRS 1710 Code société
BUDAT_004 BKPF-BUDAT 04/21/2017 Date de comptabilisation
MONAT_005 BKPF-MONAT 4 Période comptable (mois)
WAERS_006 BKPF-WAERS USD Devise de la pièce
KONTO_007 RF05A-KONTO 11001000 Compte de contrepartie (compte bancaire)
WRBTR_008 BSEG-WRBTR 204182.87 Montant en devise de la pièce (en-tête)
VALUT_009 BSEG-VALUT 04/17/2017 Date de valeur bancaire
AGKON_010 RF05A-AGKON USSU_V8001 Compte de compensation (numéro du fournisseur)
AGKOA_011 RF05A-AGKOA K Type de compte de compensation (K = fournisseur)
XNOPS_012 RF05A-XNOPS X Indicateur de non-compensation automatique
XPOS1_01_013 RF05A-XPOS1(01) `` (vide) Sélection poste ouvert ligne 1 (non coché)
XPOS1_03_014 RF05A-XPOS1(03) X Sélection poste ouvert ligne 3 (coché)
SEL01_01_015 RF05A-SEL01(01) 5100002254 Numéro de facture fournisseur à solder
ABPOS_016 RF05A-ABPOS 1 Numéro de poste de compensation
WRBTR_017 BSEG-WRBTR 204,182.87 Montant du poste de paiement (avec séparateur de milliers)
VALUT_018 BSEG-VALUT 04/17/2017 Date de valeur du poste
FMORE_019 DKACB-FMORE X Indicateur "plus de champs" (affichage des données supplémentaires)
HBKID_020/022/024 BSEG-HBKID USBK1 Identifiant banque (répété 3 fois sur dynpro 0330)
HKTID_021/023/025 BSEG-HKTID USAC1 Identifiant compte bancaire (répété 3 fois)

Paramètres de sortie (EXPORTING / TABLES)

Paramètre Type Rôle
SUBRC SYST-SUBRC Code retour de la fonction (0 = succès)
MESSTAB BDCMSGCOLL Table des messages retournés par la transaction BDC

Structures de données utilisées

Objet Nature Description
BDCDATA Structure Contient les données BDC : programme, dynpro, champs et valeurs
BDCMSGCOLL Structure Collection des messages SAP issus de l'exécution BDC
BKPF Table En-tête des pièces comptables (FI)
BSEG Table Postes des pièces comptables (FI)
APQI Table File de traitement batch input

Dépendances

Sous-routines appelées (PERFORM ... USING)

Ces routines sont définies dans l'include standard BDCRECXY (inclus en fin de fonction) :

Routine Rôle
bdc_nodata Définit le caractère "no data" pour les champs BDC vides
open_group Ouvre une session batch input (si mode session)
bdc_dynpro Ajoute une entrée de changement d'écran dans la table BDC interne
bdc_field Ajoute un champ avec sa valeur dans la table BDC interne
bdc_transaction Exécute la transaction SAP (F-53) avec la table BDC construite
close_group Ferme et valide la session batch input ouverte

Include standard

INCLUDE BDCRECXY.

Cet include standard SAP fournit les sous-routines BDC génériques (bdc_dynpro, bdc_field, bdc_transaction, open_group, close_group, bdc_nodata). Il est systématiquement présent dans les fonctions générées par l'enregistrement BDC.

Transaction SAP cible

Transaction Description
F-53 Post Outgoing Payments - Saisie manuelle de paiements sortants (module FI-AP)

Dynpros impliqués

Programme N° Dynpro Rôle dans F-53
SAPMF05A 0103 Écran principal de saisie de l'en-tête du paiement
SAPMF05A 0731 Écran de sélection des postes ouverts fournisseur
SAPDF05X 3100 Écran de compensation des postes ouverts
SAPMF05A 0700 Écran de saisie des postes supplémentaires / validation
SAPMF05A 0300 Écran de saisie du poste de paiement (crédit banque)
SAPLKACB 0002 Popup de saisie des objets de coût (CO-PA)
SAPMF05A 0330 Écran de saisie des informations bancaires

Flux de traitement

[DÉBUT]
   │
   ▼
1. Initialisation : SUBRC = 0
   │
   ▼
2. bdc_nodata(NODATA)
   └─ Définit le caractère de champ vide ('/')
   │
   ▼
3. open_group(GROUP, USER, KEEP, HOLDDATE, CTU)
   └─ Ouvre la session batch input si CTU = 'X'
   │
   ▼
4. DYNPRO SAPMF05A / 0103  ─── En-tête du paiement
   ├─ Cursor sur RF05A-XPOS1(03)
   ├─ OKCode = '=PA' (valider / passer à l'écran suivant)
   ├─ BKPF-BLDAT  → Date de pièce
   ├─ BKPF-BLART  → Type de pièce (KZ)
   ├─ BKPF-BUKRS  → Société
   ├─ BKPF-BUDAT  → Date comptabilisation
   ├─ BKPF-MONAT  → Période
   ├─ BKPF-WAERS  → Devise
   ├─ RF05A-KONTO → Compte bancaire
   ├─ BSEG-WRBTR  → Montant
   ├─ BSEG-VALUT  → Date de valeur
   ├─ RF05A-AGKON → Fournisseur (compte à solder)
   ├─ RF05A-AGKOA → Type 'K' (fournisseur)
   ├─ RF05A-XNOPS → Pas de compensation auto
   ├─ RF05A-XPOS1(01) → Ligne 1 (non sélectionnée)
   └─ RF05A-XPOS1(03) → Ligne 3 (sélectionnée)
   │
   ▼
5. DYNPRO SAPMF05A / 0731  ─── Sélection postes ouverts (1ère fois)
   ├─ OKCode = '/00' (Enter)
   └─ RF05A-SEL01(01) → Numéro de facture à compenser
   │
   ▼
6. DYNPRO SAPMF05A / 0731  ─── Sélection postes ouverts (2ème fois)
   └─ OKCode = '=PA' (valider la sélection)
   │
   ▼
7. DYNPRO SAPDF05X / 3100  ─── Compensation des postes
   ├─ OKCode = '=AB' (affecter/compenser)
   ├─ Cursor sur DF05B-PSSKT(01)
   └─ RF05A-ABPOS → Numéro de poste de compensation (1)
   │
   ▼
8. DYNPRO SAPMF05A / 0700  ─── Écran de validation intermédiaire
   ├─ Cursor sur RF05A-AZEI1(01)
   └─ OKCode = '=PI' (poste individuel / afficher poste)
   │
   ▼
9. DYNPRO SAPMF05A / 0300  ─── Saisie du poste de paiement
   ├─ OKCode = '=ZK' (données de paiement)
   ├─ BSEG-WRBTR → Montant avec séparateur milliers
   ├─ BSEG-VALUT → Date de valeur
   └─ DKACB-FMORE → Afficher plus de champs
   │
   ▼
10. DYNPRO SAPLKACB / 0002  ─── Popup objets de coût (CO)
    ├─ Cursor sur COBL-KOSTL (centre de coût)
    └─ OKCode = '=ENTE' (valider sans saisir de centre de coût)
    │
    ▼
11. DYNPRO SAPMF05A / 0330  ─── Saisie bancaire (passage 1)
    ├─ OKCode = '/00' (Enter)