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 à :
- Construire une table de données écran-par-écran (via
bdc_dynproetbdc_field), - Puis soumettre cette table à la transaction cible via
bdc_transaction, - 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)