0% ont trouvé ce document utile (0 vote)
37 vues15 pages

Busca DDA

Ce document contient le code d'un programme SAP qui traite les fichiers de paiement. Il comprend : 1. Déclarations de données pour les variables utilisées dans le traitement du fichier de paiement, y compris les champs pour le document de paiement. 2. Logique pour extraire les champs clés du fichier de paiement tels que le numéro de document, le montant, et les peupler dans les champs du document de paiement. 3. Vérifications pour valider le numéro de document et récupérer le numéro de facture fournisseur correspondant si nécessaire. Cela implique de rechercher dans la table des documents de factures. 4. Logique supplémentaire ajoutée pour le marché brésilien afin de gérer la validation et la récupération du numéro de facture en fonction du numéro d'identification du client (CNPJ/CPF). Cela inclut la suppression des caractères spéciaux des champs avant la recherche.

Transféré par

ScribdTranslations
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
37 vues15 pages

Busca DDA

Ce document contient le code d'un programme SAP qui traite les fichiers de paiement. Il comprend : 1. Déclarations de données pour les variables utilisées dans le traitement du fichier de paiement, y compris les champs pour le document de paiement. 2. Logique pour extraire les champs clés du fichier de paiement tels que le numéro de document, le montant, et les peupler dans les champs du document de paiement. 3. Vérifications pour valider le numéro de document et récupérer le numéro de facture fournisseur correspondant si nécessaire. Cela implique de rechercher dans la table des documents de factures. 4. Logique supplémentaire ajoutée pour le marché brésilien afin de gérer la validation et la récupération du numéro de facture en fonction du numéro d'identification du client (CNPJ/CPF). Cela inclut la suppression des caractères spéciaux des champs avant la recherche.

Transféré par

ScribdTranslations
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Programme :: RFEBKA00

Alterados ::

format_itau(j_1bbr20).
Contexte ::

FORMULAIRE INSERT_FEBEP_G.

TYPES : DÉBUT DE TY_BSIK,


TYPE BUKRS
ANNEE TYPE ANNEE,
N° de document
FIN DE TY_BSIK.

Données : BELNR TYPE BELNR_D.


Données : W_BSIK TYPE BSIK.

CLEAR : BELNR, W_BSIK.

******************AJOUT DE MODIFICATIONS BRÉSIL


PHASE2*******************
TYPE DE FOURNISSEUR LIFNR.
******************ADDITION DE CHANGEMENTS BRÉSIL
PHASE2*******************

CLARTÉ FEBEP.
FEBEP-KUKEY = FEBKO-KUKEY.
FEBEP-ESNUM = SY-TABIX.
FEBEP-KWAER = FEBKO-WAERS. QHA941208

*Code de transaction externe pour Febraban et ITAU (Code de mouvement)


FEBEP-VGEXT = ARTICLES_P_G-G07.

* La date de sortie devient la date de réservation de l'élément individuel


FEBEP-BUDAT = FEBKO-AZDAT.
SI ITEMS_P_G-G28 = ESPACE
OU ITEMS_P_G-G28 = '00000000'.
FEBEP-BVDAT = FEBKO-AZDAT.
AUTRE.
FEBEP-BVDAT(4) = ITEMS_P_G-G28+4(4). yyyy
FEBEP-BVDAT+4(2) = ITEMS_P_G-G28+2(2). mm
FEBEP-BVDAT+6(2) = ITEMS_P_G-G28(2). dd
FEBEP-BUDAT = FEBEP-BVDAT.
FIN SI.
FEBEP-VALUT = FEBEP-BVDAT.
K Type de compte
ITEMS_P_G-G16
* FEBEP-GJAHR = ARTICLES_P_G-G28+4(4).

Année fiscale à partir de la date de génération du fichier dans l'en-tête

FEBEP-GJAHR = EN-TÊTE_P-H117+4(4).
* cas febko-absnd(3).
* quand '341'. Itau
* febep-chect = items_p_j-j22. Duplicata bancaire
* febep-kidno = articles_p_j-j22. REF3 note 383985
* quand les autres. Febraban
* febep-chect = éléments_p_j-j21. Duplicata de banque
* febep-kidno = éléments_p_j-j21. REF3 note 383985
Pas clair au sujet de Nosso Numero dans le segment G
* fin de cas.
* FEBEP-VOZEI = 'D'.
S seulement paiement normal ici
FEBEP-KWBTR = ARTICLES_P_G-G18.
FEBEP-KWBTR = FEBEP-KWBTR / 100.
FEBKO-SUMSO = FEBKO-SUMSO + FEBEP-KWBTR.

* Identifier le processus interne


EXÉCUTER VORGANG_ERMITTELN.

* L'attribution est remplie avec KUKEY et ESNUM -> machine


Déchiffrer
FEBEP-ZUONR+0(8) = FEBEP-KUKEY.
FEBEP-ZUONR+8(5) = FEBEP-ESNUM.

*Remplissez FEBEP-XBLNR avec le numéro NF/Document de Collection


nombre
FEBEP-XBLNR = ARTICLES_P_G-G21.

EXÉCUTER REMPLIR_BUTXT_AVEC_VGINTTXT.

*Vérifiez si le numéro de document dans le fichier dans le Segment G est le fournisseur


numéro de facture
*Sinon, trouvez le numéro de facture du fournisseur dans la collecte
Numéro de document/numéro NF dans le fichier

SÉLECTIONNER UNIQUE BUKRS


ANNEE
BELNR
DE BSIK
DANS W_BSIK
OÙ BUKRS = FEBKO-BUKRS
ET GJAHR = FEBEP-GJAHR
ET BELNR = ITEMS_P_G-G21.

SI SY-SUBRC = 0.
BELNR = ITEMS_P_G-G21.

SINON.

EXÉCUTER GET_BELNR EN UTILISANT ITEMS_P_G-G21


FEBKO-BUKRS
CNPJ/CPF
CHANGEMENT D'ARTICLES_P_G-G15
NUMÉRO DE DOCUMENT
FEBEP-ANNEE
******************AJOUT DE MODIFICATIONS BRÉSIL
PHASE2*******************
FOURNISSEUR.
******************AJOUT DES CHANGEMENTS BRÉSIL
PHASE2*******************
Remarque 1744913
AMÉLIORATION-POINT DDA_BR_POINT SPOTS DDA_BR_SPOTS.
*$*$-Début: DDA_BR_POINT---------------------------------------------------------
---------------$*$*

fim Contexte..

Note 1744913

AMÉLIORATION - POINT DDA_BR_POINT SPOTS DDA_BR_SPOTS.

* Pour rechercher correctement le document, nous devons retirer des caractères


spéciales du domaine de la NF.
TYPES: BEGIN OF ys_lifnr,
lifnr TYPE lfa1-lifnr
FIN de ys_lifnr.
DONNÉES : lc_xblnr TYPE bsid-xblnr,
lc_xbln2 TYPE bsid-xblnr,
lc_dummy
lt_lifnr TYPE TABLE OF ys_lifnr,
ls_bsik TYPE bsik,
TYPE c LONGUEUR 20
lc_stcd1 TYPE lfa1-stcd1,
lc_stcd2 TYPE lfa1-stcd2.
Vérifiez si vous n'avez pas encore trouvé le document
SI belnr EST INITIAL.
items_p_g-g21.
Condensa
CONDENSER lc_xblnr.
TRANSFORME TOUTES LES LETTRES EN MAJUSCULE
LC_XBLNR
Supprime toutes les lettres
ABCDEFGHIJKLMNOPQRSTUV
W X Y Z '.
Supprimer les espaces à gauche
DEPLACER lc_xblnr À GAUCHE EN SUPPRIMANT LES ESPACES EN TÊTE.
Supprimer les zéros à gauche
DÉPLACER lc_xblnr À GAUCHE EN SUPPRIMANT LE '0' DE DEVANT.
Supprimer les caractères spéciaux et mettre un espace
-/.
Utilisez la première chaîne de caractères, jusqu'à l'espace
DIVISER lc_xblnr À l'espace EN lc_xblnr lc_dummy.
Rechercher des fournisseurs possibles
EFFACER lt_lifnr.
Recherche par CNPJ et CPF
Teste le CNPJ
lc_stcd = items_p_g-g15.
DÉPLACER lc_stcd À GAUCHE.
lc_stcd.
SÉLECTIONNER lifnr
DE lfa1
DANS LA TABLE lt_lifnr
OÙ stcd1 ÉGAL lc_stcd1.
Si vous ne trouvez pas, testez le CPF
SI lt_lifnr EST INITIAL.
lc_stcd = éléments_p_g-g15.
DÉPLACER lc_stcd À GAUCHE DE 4 PLACES.
lc_stcd2 = lc_stcd.
SÉLECTIONNER lifnr
DE lfa1
DANS LA TABLE lt_lifnr
OÙ stcd2 ÉGAL lc_stcd2.
FIN SI.
SI lt_lifnr N'EST PAS INITIAL.
Recherche de documents
SÉLECTIONNER *

DE bsik
DANS ls_bsik
POUR TOUS LES ENTRIES DANS lt_lifnr
OÙ bukrs EQ febko-bukrs ET
lifnr EQ lt_lifnr-lifnr.
Formate le xblnr du document
lc_xbln2 = ls_bsik-xblnr.
CONDENSER lc_xbln2.
TRANSFORME TOUTES LES LETTRES EN MAJUSCULE
LC_XBLN2
Enlevez toutes les lettres
lc_xbln2 utilisant 'A B C D E F G H I J K L M N O P Q R S T U
V W X Y Z '.
Retirer les espaces à gauche
DEPLACER lc_xbln2 À GAUCHE EN SUPPRIMANT LES ESPACES DE TÊTE.
Supprimer les zéros à gauche
DECALER lc_xbln2 À GAUCHE EN SUPPRIMANT LE '0' DE DEBUT.
Enlever les caractères spéciaux et mettre des espaces
lc_xbln2 utilisant '- / . '
Utilisez la première chaîne de caractères, jusqu'à l'espace
SPLIT lc_xbln2 AU espace EN lc_xbln2 lc_dummy.

Compare les deux XBLNR


SI lc_xbln2 EQ lc_xblnr.
ls_bsik-xblnr.
Sai du sélection
SORTIE.
FIN SI.
FIN DE SÉLECTION.
FIN SI.
Effectuez la recherche du document
EXÉCUTER get_belnr UTILISANT lc_xblnr
febko-bukrs
CHANGEMENT d'items_p_g-g15 CNPJ/CPF
belnr
febep-gjahr
vendeur.
FIN SI.
AMÉLIORATION DE FIN

format_bradesco(j_1bbr30).
Contexte

FORM GET_BELNR UTILISANT iv_belnr


iv_xblnr
iv_code_comp
année_iv
iv_cnpj
CHANGEMENT cv_belnr
cv_fournisseur.

Données : flag_found TYPE c.

CLAIR: cv_fournisseur,cv_belnr,flag_trouvé,
gs_bsik,gt_bsik.

Vérifiez si le numéro de document dans le fichier est la facture du fournisseur


numéro
EFFECTUER CHECK_IF_DOC_IS_VENDOR_INVOICE EN UTILISANT iv_comp_code
iv_année
CHANGEMENT de cv_belnr.
SI cv_belnr EST INITIAL.
EXÉCUTER IF_DOC_IS_COLLECTION_DOCUMENT EN UTILISANT
iv_code_comp
CHANGING flag_found.
SI flag_found eq espace.
Récupérez le document basé sur le numéro de Nota fiscal
SÉLECTIONNER bukrs belnr gjahr xblnr DE bsik DANS
CHAMPS CORRESPONDANTS DE LA TABLE gt_bsik
OÙ bukrs = iv_comp_code
ET gjahr = iv_year
ET xblnr = iv_xblnr
ET bstat = espace.

FIN SI.
FIN SI.

SI gt_bsik[] N'EST PAS INITIAL.


trier gt_bsik.
supprimer les doublons adjacents de gt_bsik en comparant tous les champs.
EXÉCUTER GET_UNIQUE_BELNR EN UTILISANT iv_cnpj CHANGEMENT cv_belnr
cv_vendeur
FIN SI.

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
$"$\SE:(1) Form. GET_BELNR, Fim
A
*$*$-Début : (1)--------------------------------------------------------------------------
-------$*$*

fim Contexte

AMÉLIORATION 1 ZEHSD002. "version active


* Si aucun document n'est trouvé, essayez la recherche alternative

* Pour rechercher correctement le document, nous devons retirer les caractères


spéciaux du domaine de la NF.
TYPES : DÉBUT DE ys_lifnr,
lifnr TYPE lfa1-lifnr,
FIN DE ys_lifnr.
Données: lc_xblnr TYPE bsid-xblnr,
lc_xbln2 TYPE bsid-xblnr,
lc_dummy
lt_lifnr TYPE TABLE OF ys_lifnr,
ls_bsik TYPE bsik,
lc_stcd TYPE c LENGTH 20,
lc_stcd1 TYPE lfa1-stcd1,
lc_stcd2 TYPE lfa1-stcd2.
Vérifiez si vous n'avez pas encore trouvé le document
SI gt_bsik[] EST INITIAL.
iv_xblnr.
Condensa
CONDENSER lc_xblnr.
TRANSFORME TOUTES LES LETTRES EN MAJUSCULE
LC_XBLNR
Supprime toutes les lettres
ABCDEFGHIJKLMNOPQRSTUV
WXYZ'.
Supprimer les espaces à gauche
DECALER lc_xblnr À GAUCHE EN SUPPRIMANT les espaces de tête.
Retirer les zéros à gauche
DÉPLACER lc_xblnr À GAUCHE EN SUPPRIMANT LE PREFIXE '0'.
Retirez les caractères spéciaux et mettez un espace
-/.
Utilisez la première chaîne de caractères, jusqu'à l'espace
DIVISER lc_xblnr À l'espace EN lc_xblnr lc_dummy.
Cherche des fournisseurs possibles
EFFACER lt_lifnr.
Recherche par CNPJ et CPF
Teste le CNPJ
iv_cnpj.
DÉPLACER lc_stcd À GAUCHE.
lc_stcd.
SÉLECTIONNER lifnr
DE lfa1
DANS LA TABLE lt_lifnr
OÙ stcd1 EQ lc_stcd1.
Si vous ne trouvez pas, essayez le CPF
SI lt_lifnr EST INITIAL.
lc_stcd = iv_cnpj.
DÉPLACER lc_stcd À GAUCHE DE 4 PLACES.
lc_stcd2 = lc_stcd.
SÉLECTIONNER lifnr
DE lfa1
DANS LA TABLE lt_lifnr
Où stcd2 EQ lc_stcd2.
FIN SI.
SI lt_lifnr N'EST PAS INITIAL.
Cherchez des documents
SÉLECTIONNER *

DE bsik
DANS ls_bsik
POUR ENTRER DANS lt_lifnr
OÙ bukrs EQ febko-bukrs ET
lifnr EQ lt_lifnr-lifnr.
Formate le xblnr du document
lc_xbln2 = ls_bsik-xblnr.
CONDENSER lc_xbln2.
TRANSFORMA TODAS LETRAS EM MAIÚSCULO
LC_XBLN2
Retirez toutes les lettres
lc_xbln2 utilisant 'A B C D E F G H I J K L M N O P Q R S T U
V W X Y Z '.
Retirer les espaces à gauche
DÉPLACER lc_xbln2 À GAUCHE EN SUPPRIMANT L'ESPACE DE DéBUT.
Supprimer les zéros à gauche
DÉCALER lc_xbln2 À GAUCHE EN SUPPRIMANT LE PRÉFIXE '0'.
Supprimer les caractères spéciaux et mettre de l'espace
lc_xbln2 utilisant '- / . '
Utilisez la première chaîne de caractères, jusqu'à l'espace
DIVISER lc_xbln2 À l'espace EN lc_xbln2 lc_dummy.

Compare les deux XBLNR


SI lc_xbln2 EQ lc_xblnr.
ls_bsik-xblnr.
Sai du select
SORTIE.
FIN SI.
FINDESELECTION.
FIN SI.

SI flag_found EQ espace.
Récupérez le document en fonction du numéro de la Nota fiscale
SÉLECTIONNER bukrs belnr gjahr xblnr DE bsik
DANS LES CHAMPS CORRESPONDANTS DE LA TABLE gt_bsik
OÙ bukrs = iv_comp_code
ET gjahr = iv_year
ET xblnr = lc_xblnr
ET bstat = espace.
FIN SI.

SI gt_bsik[] N'EST PAS INITIAL.


TRIER gt_bsik.
SUPPRIMER LES DOUBLONS ADJACENTS DE gt_bsik EN COMPARANT TOUS
CHAMPS.
EXÉCUTER get_unique_belnr EN UTILISANT iv_cnpj CHANGING cv_belnr
cv_fournisseur
FIN SI.
FIN SI.
INCLURE RFFOBR_DDA_O00

Contexte
FORM EN UTILISANT r_ucomm COMME sy-ucomm
rs_selfield TYPE slis_selfield.

DATA: flag_cnpj TYPE c,


flag_cpf TYPE c,
flag_amount TYPE c,
flag_duedate TYPE c,
drapeau_une_fois TYPE c.

DATA: w_dda_new TYPE ty_dda.


w_dda_old TYPE j1b_error_dda,
w_dda_mod TYPE j1b_error_dda.

DATEECHÉANCE_FINALE TYPE regup-zfbdt.


DATA: lin TYPE c.

pline COMME bseg-buzei,


mode(1) TYPE c.

DONNÉES : lv_awkey TYPE awkey.


DONNÉES : lv_montant TYPE bseg-wrbtr,
lv_due_date COMME regup-zfbdt.

lv_fis_anné TYPE gjahr. changement d'exercice fiscal


DATA: lv_due_date_del(8) TYPE c.

CAS r_ucomm.
QUAND '&IC1'.
LIRE LA TABLE i_dda_1 DANS w_dda_1 INDEX rs_selfield-
tabindex.
VÉRIFIER sy-subrc = 0.
SI rs_selfield-fieldname = 'LIFNR'.
DEFINIR L'IDENTIFIANT DE PARAMÈTRE 'LIF' CHAMP w_dda_1-lifnr.
SET PARAMETER ID 'BUK' FIELD w_dda_1-bukrs.
APPELER LA TRANSACTION 'FK03' ET SAUTER LE PREMIER ÉCRAN.
FIN SI.

SI rs_selfield-nom_du_champ = 'DOC_NUM'.
DEFINIR L'IDENTIFIANT DE PARAMÈTRE 'BLN' CHAMP w_dda_1-doc_num.
DEFINIR L'IDENTIFIANT PARAMÈTRE 'BUK' CHAMP w_dda_1-bukrs.
DEFINIR L'IDENTIFIANT DE PARAMÈTRE 'GJR' CHAMP w_dda_1-gjahr.
APPELEZ LA TRANSACTION 'FB03' ET SAUTEZ LE PREMIER ÉCRAN.
FIN SI.
SI rs_selfield-nom_du_champ = 'MIRO_FACTURE'.
DÉFINIR L'IDENTIFIANT DE PARAMÈTRE 'RBN' CHAMP w_dda_1-miro_invoice.
DEFINIR L'IDENTIFIANT DE PARAMÈTRE 'GJR' CHAMP w_dda_1-gjahr.
APPELER LA TRANSACTION 'MIR4' ET PASSER LE PREMIER ÉCRAN.
FIN SI.
CLARIFIER w_dda_1.
FIN DU CAS.

SI r_ucomm EQ 'DEL'.
FAIRE UNE BOUCLE SUR i_dda_1 EN INTO w_dda_1 OÙ sel = 'X'.
v_index = sy-tabix.

SUPPRIMER i_dda_1 INDEX v_index.


Note 1781726
w_dda_1-date_d'échéance+6(2).
lv_due_date_del+2(2) = w_dda_1-date_due+4(2).
lv_due_date_del+4(4) = w_dda_1-due_date+0(4).

SUPPRIMER DE j1b_error_dda OÙ id = w_dda_1-id ET


status_check = w_dda_1-vérification_du_statut ET
lifnr = w_dda_1-lifnr ET
reference_no = w_dda_1-reference_no ET
doc_num = w_dda_1-doc_num ET
miro_facture = w_dda_1-miro_facture ET
bukrs = w_dda_1-bukrs ET
gjahr = w_dda_1-gjahr ET
cnpj = w_dda_1-cnpj ET
date_d'échéance = lv_date_d'échéance_del.

FIN BOUCLE.
* supprimer i_dda où sel eq 'X'.
X
FIN SI.

****Post-traitement DDA
enregistrements***********************************
SI r_ucomm EQ 'PROCESS'.

BOUCLE SUR i_dda_1 EN INTO w_dda_1 OÙ sel = 'X' ET


E
LIRE LA TABLE i_dda DANS w_dda_new AVEC CLÉ status_check =
w_dda_1-vérification_d'état
w_dda_1-lifnr
w_dda_1-numéro_de_référence
doc_num = w_dda_1-doc_num
w_dda_1-miro_invoice
w_dda_1-bukrs
w_dda_1-gjahr
w_dda_1-cnpj.

DEPLACER-CORRESPONDANT w_dda_new VERS w_dda_mod.


DÉPLACER-CORRESPONDANT w_dda_new VERS w_dda_old.

EFFACER
drapeau_une_fois
lv_montant
gv_vendeur.

SI w_dda_mod-doc_num N'EST PAS INITIAL ET ( w_dda_mod-


err_reason = 'C' OU
w_dda_mod-err_reason = 'D' OU w_dda_mod-err_reason = 'A'.

lv_montant = w_dda_mod-montant.

SÉLECTIONNER * DE bseg DANS TABLE gt_bseg OÙ bukrs =


w_dda_mod-bukrs ET
belnr = w_dda_mod-doc_num ET gjahr =
w_dda_mod-année
* ET dmbtr = lv_amount "Note 1887451
ET koart = 'K'.

SINON.

sélectionner bukrs belnr gjahr xblnr de bsik dans correspondant


champs de la table gt_bsik
OÙ bukrs = w_dda_mod-bukrs
ET gjahr = w_dda_mod-gjahr
ET xblnr = w_dda_mod-reference_no
ET bstat = espace.

*******************CHANGEMENTS D'EXERCICE FISCAL............


SI sy-subrc NE 0.
lv_fis_year = w_dda_mod-gjahr + 1.

SI lv_fis_year EQ sy-datum(4).
sélectionner bukrs belnr gjahr xblnr de bsik dans correspondant
champs de la table gt_bsik
OÙ bukrs = w_dda_mod-bukrs
ET gjahr = sy-datum(4)
ET xblnr = w_dda_mod-reference_no
ET bstat = espace.
si sy-subrc = 0.
w_dda_mod-gjahr = sy-datum(4).
fin si.
FIN SI.
FIN SI.
**************************************************

trier gt_bsik.
supprimer les doublons adjacents de gt_bsik.

SI gt_bsik[] N'EST PAS INITIAL.


EXÉCUTER get_unique_belnr en utilisant w_dda_mod-cnpj.
FIN SI.

SI gv_vendor N'EST PAS INITIAL ET gv_belnr N'EST PAS INITIAL.


*Trouvez le bon article dans une facture fournisseur où le code-barres doit être
être
*mis à jour et vérifiez également la date d'échéance...
clair : lv_awkey.
lv_montant = w_dda_mod-montant.
SELECT * FROM bseg INTO TABLE gt_bseg WHERE bukrs =
w_dda_mod-bukrs
ET belnr = gv_belnr
ET gjahr = w_dda_mod-gjahr
* ET dmbtr = lv_amount "Note
1887451
ET koart = 'K'.

SÉLECTIONNEZ UNIQUE awkey DANS lv_awkey DE bkpf OÙ


w_dda_mod-bukrs
ET belnr = gv_belnr
ET gjahr = w_dda_mod-gjahr
ET awtyp = 'RMRP'.

w_dda_mod-doc_num = gv_belnr.
w_dda_mod-lifnr = gv_vendor.
w_dda_mod-miro_invoice = lv_awkey(10).

FIN SI.

ENDIF.

Fim contexte
Note 1744913
POINT D'AMÉLIORATION RFFOBR_DDA_POINT SPOTS
RFFOBR_DDA_SPOT
*$*$-Début : RFFOBR_DDA_POINT--------------------------------------------------
------------------$*$*
AMÉLIORATION 1 ZEHSD003. "version active

Vérifie les articles avec erreur et essaie de trouver la référence correcte


TYPES : DÉBUT DE ys_lifnr,
lifnr TYPE lfa1-lifnr,
FIN de ys_lifnr.
DONNÉES : lc_xblnr TYPE bsid-xblnr
lc_xbln2 TYPE bsid-xblnr,
lc_dummy
lt_lifnr TYPE TABLE OF ys_lifnr,
ls_bsik TYPE bsik,
lc_stcd TYPE c LENGTH 20
lc_stcd1 TYPE lfa1-stcd1,
lc_stcd2 TYPE lfa1-stcd2.

S'il n'a pas été trouvé dans le standard


SI gt_bseg[] EST INITIAL.
Vérifie les éléments
w_dda_new-numéro_de_référence
Condensa
CONDENSER lc_xblnr.
TRANSFORME TOUTES LES LETTRES EN MAJUSCULE
LC_XBLNR
Enlevez toutes les lettres
lc_xblnr EN UTILISANT 'A B C D E F G H I J K L M N O P Q R S T U
V W X Y Z '.
Retirer les espaces à gauche
DÉPLACER lc_xblnr À GAUCHE EN SUPPRIMANT L'ESPACE DE TÊTE.
Retirer les zéros à gauche
DÉPLACER lc_xblnr À GAUCHE EN SUPPRIMANT LES ZÉROS INITIAUX.
Retirer les caractères spéciaux et ajouter de l'espace
lc_xblnr utilisant '- / . '.
Utilisez la première chaîne de caractères, jusqu'à l'espace
DIVISER lc_xblnr À l'espace EN lc_xblnr lc_dummy.
Cherchez des fournisseurs possibles
EFFACER lt_lifnr.
Recherche par CNPJ et CPF
Teste le CNPJ
lc_stcd = w_dda_new-cnpj.
DÉPLACER lc_stcd À GAUCHE.
lc_stcd.
SÉLECTIONNER lifnr
DE lfa1
DANS LA TABLE lt_lifnr
OÙ stcd1 EQ lc_stcd1.
Si tu ne trouves pas, essaie le CPF
SI lt_lifnr EST INITIAL.
w_dda_new-cnpj.
DÉPLACEZ lc_stcd À GAUCHE DE 4 PLACES.
lc_stcd2 = lc_stcd.
SELECT lifnr
DE lfa1
DANS LA TABLE lt_lifnr
OÙ stcd2 EQ lc_stcd2.
FIN SI.
SI lt_lifnr N'EST PAS INITIAL.
Rechercher des documents
SÉLECTIONNER *

DE bsik
DANS ls_bsik
POUR TOUS LES ENTRÉES DANS lt_lifnr
OÙ bukrs EQ w_dda_new-bukrs ET
gjahr EQ w_dda_new-gjahr ET
lifnr EQ lt_lifnr-lifnr.
Formate le xblnr du document
lc_xbln2 = ls_bsik-xblnr.
CONDENSER lc_xbln2.
TRANSFORMA TODAS LETRAS EM MAIÚSCULO
LC_XBLN2
Enlevez toutes les lettres
lc_xbln2 utilisant 'A B C D E F G H I J K L M N O P Q R S T
U V W X Y Z '.
Supprimer les espaces à gauche
DÉPLACER lc_xbln2 À GAUCHE EN SUPPRIMANT L'ESPACE DE DÉBUT.
Supprimer les zéros à gauche
DÉCALER lc_xbln2 À GAUCHE EN SUPPRIMANT LE '0' DE TÊTE.
Supprimer les caractères spéciaux et mettre un espace
lc_xbln2 en utilisant '- / . '.
Utilisez la première chaîne de caractères, jusqu'à l'espace
SPLIT lc_xbln2 À l'espace DANS lc_xbln2 lc_dummy.

Compare les deux XBLNR


SI lc_xbln2 EQ lc_xblnr.
w_dda_mod-doc_num = ls_bsik-belnr.
w_dda_mod-lifnr = ls_bsik-lifnr.
Cherchez la référence
SELECT SINGLE awkey INTO lv_awkey FROM bkpf WHERE bukrs
= w_dda_mod-bukrs
ET belnr = w_dda_mod-doc_num
ET gjahr = w_dda_mod-gjahr
ET awtyp = 'RMRP'.
w_dda_mod-miro_facture = lv_awkey(10).
Fais la recherche de la BSEG
SÉLECTIONNER * DE bseg DANS TABLE gt_bseg OÙ bukrs =
w_dda_mod-bukrs ET
belnr = w_dda_mod-doc_num ET gjahr = w_dda_mod-
année
* ET dmbtr = lv_amount "Note 1887451
ET koart = 'K'.
Sortez du select
SORTIE.
FINSI.
FIN DE LA SÉLECTION.
FIN SI.
FIN SI.
AMÉLIORATION DE LA FIN
*$*$-Fin: RFFOBR_DDA_POINT--------------------------------------------------
------------------$*$*

Vous aimerez peut-être aussi