IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SAP Discussion :

Récupération de données dans une table


Sujet :

SAP

  1. #1
    Membre régulier
    Inscrit en
    Mars 2010
    Messages
    271
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 271
    Points : 79
    Points
    79
    Par défaut Récupération de données dans une table
    Bonjour,

    Je souhaite récupérer toutes les écritures passées d'un matricule (zone PERNR). Cependant lorsque j'exécute ma fonction, celle ci me retourne pas mon matricule dans ma table... Je ne comprends pas pourquoi...

    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    FUNCTION Z_HR_ABC.
    *"----------------------------------------------------------------------
    *"*"Interface locale :
    *"  IMPORTING
    *"     VALUE(MPERIO) TYPE  CHAR2
    *"     VALUE(APERIO) TYPE  CHAR4
    *"     VALUE(SOCIETE) TYPE  BUKRS
    *"     VALUE(MATRICULE) TYPE  PERNR_D
    *"     VALUE(ETABLISSEMENT) TYPE  CHAR2 OPTIONAL
    *"     VALUE(RUNID) TYPE  P_EVNUM OPTIONAL
    *"     VALUE(STATUS) TYPE  P_EVSTATUS DEFAULT '50'
    *"     VALUE(SIMU) TYPE  P_EVSIMU DEFAULT ' '
    *"  TABLES
    *"      ECRITURES STRUCTURE  ZHR_ITF_ABC
    *"  EXCEPTIONS
    *"      NO_ENTRY
    *"----------------------------------------------------------------------
    
      DATA : BEGIN OF periodes OCCURS 0.
              INCLUDE STRUCTURE pevat.
      DATA : abkrs  TYPE abkrs,
             begda  TYPE d,
             endda  TYPE d,
             pabrp  TYPE pabrp,
             pabrj  TYPE pabrj,
             mperio TYPE char2,
             aperio TYPE char4,
             docnum TYPE ppdhd-docnum,
             END OF periodes.
    
      DATA : BEGIN OF tranches OCCURS 0,
               abkrs TYPE abkrs,
               pabrp TYPE pabrp,
               pabrj TYPE pabrj,
               begda TYPE d,
               endda TYPE d,
             END OF tranches.
    
      DATA : permo TYPE t549a-permo.
    
    ** Table des données
      DATA: BEGIN OF i_ppdit OCCURS 0,
              docnum LIKE ppdhd-docnum ,
              runid  LIKE ppdhd-runid ,
              blart  LIKE ppdhd-blart,
              doclin LIKE ppdit-doclin,
              budat  LIKE ppdhd-budat,
              bldat  LIKE ppdhd-bldat,
              abper  LIKE ppdit-abper,
              bukrs  LIKE ppdhd-bukrs,
              sgtxt  LIKE ppdit-sgtxt,
              zuonr  LIKE ppdit-zuonr,
              gsber  LIKE ppdit-gsber,
              pernr  LIKE ppdit-pernr,
              kostl  LIKE ppdit-kostl,
              ktosl  LIKE ppdit-ktosl,
              hkont  LIKE ppdit-hkont,
              lifnr  LIKE ppdit-lifnr,
              wrbtr  LIKE ppdit-wrbtr,
              waers  LIKE ppdit-waers,
            END OF i_ppdit.
    
      DATA : it_pevst TYPE TABLE OF pevst WITH HEADER LINE.
      DATA : it_pevat TYPE TABLE OF pevat WITH HEADER LINE.
      DATA : gsber TYPE gsber.
    
      RANGES : r_runid FOR pevst-runid.
    
      REFRESH r_runid.
    
      IF runid IS NOT INITIAL.
        CLEAR r_runid.
        r_runid-low = runid.
        r_runid-option = 'EQ'.
        r_runid-sign = 'I'.
        APPEND r_runid.
      ENDIF.
    
      CONCATENATE '%' etablissement '%' INTO gsber.
    
    * Sélection des documents à transmettre
      SELECT * FROM pevat AS a
       INNER JOIN pevsh AS h
          ON h~type  = a~type
         AND h~runid = a~runid
       INNER JOIN pevst AS t
          ON t~type  = a~type
         AND t~runid = a~runid
       INNER JOIN ppdhd AS d
          ON d~evtyp = a~type
         AND d~runid = a~runid
        INTO CORRESPONDING FIELDS OF TABLE periodes
       WHERE a~type   = 'PP'
         AND t~simu   = simu
         AND t~runid  IN r_runid
         AND a~attr   = 'AKPER'
         AND h~actual = 'X'
         AND h~status = status
         AND d~bukrs  = societe.
    
      LOOP AT periodes.
        periodes-abkrs = periodes-value(2).
        periodes-pabrp = periodes-value+3(2).
        periodes-pabrj = periodes-value+6(4).
    
        READ TABLE tranches WITH KEY abkrs = periodes-abkrs
                                     pabrp = periodes-pabrp
                                     pabrj = periodes-pabrj.
        IF sy-subrc = 0.
          periodes-begda  = tranches-begda.
          periodes-endda  = tranches-endda.
          periodes-mperio = tranches-endda+4(2).
          periodes-aperio = tranches-endda(4).
        ELSE.
          CLEAR permo.
          SELECT SINGLE permo FROM t549a
            INTO permo
           WHERE abkrs = periodes-abkrs.
    
          SELECT SINGLE * FROM t549q
           INTO CORRESPONDING FIELDS OF tranches
           WHERE permo = permo
             AND pabrj = periodes-pabrj
             AND pabrp = periodes-pabrp.
    
          tranches-abkrs = periodes-abkrs.
    
          APPEND tranches.
    
          periodes-begda  = tranches-begda.
          periodes-endda  = tranches-endda.
          periodes-mperio = tranches-endda+4(2).
          periodes-aperio = tranches-endda(4).
        ENDIF.
    
        IF periodes-aperio NE aperio OR periodes-mperio NE mperio.
          DELETE periodes.
        ELSE.
          MODIFY periodes.
        ENDIF.
    
      ENDLOOP.
    
      IF periodes[] IS INITIAL.
        RAISE no_entry.
      ELSE.
    
    *Sélection des données à transférer
        REFRESH: it_pevst, it_pevat.
    
        SELECT * FROM pevst
          INTO TABLE it_pevst
           FOR ALL ENTRIES IN periodes
         WHERE type = 'PP'
           AND runid = periodes-runid.
    
        SORT it_pevst.
    *
        SELECT * FROM pevat
          INTO TABLE it_pevat
           FOR ALL ENTRIES IN periodes
         WHERE type = 'PP'
           AND runid = periodes-runid
           AND attr = 'AKPER'.
    
        SORT it_pevst.
    *
        SELECT ppdhd~docnum ppdhd~runid blart doclin budat bldat abper
               ppdhd~bukrs  sgtxt zuonr  gsber pernr
               kostl ktosl hkont lifnr wrbtr waers
         APPENDING CORRESPONDING FIELDS OF TABLE i_ppdit
          FROM ppdhd INNER JOIN ppdit
            ON ppdit~docnum = ppdhd~docnum
           FOR ALL ENTRIES IN periodes
         WHERE ppdhd~docnum = periodes-docnum
           AND ppdit~gsber LIKE gsber.
    *
    
    *--- Transfert dans la table ABC
        LOOP AT i_ppdit.
          CLEAR ecritures.
          ecritures-rtype  = 'C'.
          ecritures-rste   = i_ppdit-bukrs.
          ecritures-retab  = i_ppdit-gsber+2(2).
          ecritures-matricule = i_ppdit-pernr.
          ecritures-rgen   = i_ppdit-hkont.
          ecritures-ranp   = i_ppdit-budat(4).
          ecritures-rmoisp = i_ppdit-budat+4(2).
          ecritures-rjourp = i_ppdit-budat+6(2).
          ecritures-rce    = '6'.
          ecritures-ddatoa = i_ppdit-bldat(4).
          ecritures-ddatom = i_ppdit-bldat+4(2).
          ecritures-ddatoj = i_ppdit-bldat+6(2).
          ecritures-djal   = '640'.
          ecritures-dpiece = i_ppdit-docnum+2.
          READ TABLE it_pevst WITH KEY type  = 'PP'
                                       runid = i_ppdit-runid
               BINARY SEARCH.
          IF sy-subrc = 0.
            ecritures-dlib = it_pevst-name.
          ENDIF.
          IF i_ppdit-wrbtr LT 0.
            ecritures-dmdev = 0 - ( i_ppdit-wrbtr * 100 ) .
          ELSE.
            ecritures-dmdev = i_ppdit-wrbtr * 100.
          ENDIF.
          ecritures-dfolio = 'PAI'.
          ecritures-dws    = 'SAL'.
          ecritures-dnolig = i_ppdit-doclin.
          ecritures-dcdev  = i_ppdit-waers.
          ecritures-rsect  = i_ppdit-kostl.
          ecritures-rsect5 = i_ppdit-gsber.
          IF i_ppdit-wrbtr LT 0.
            ecritures-dsens = '-'.
          ELSE.
            ecritures-dsens = '+'.
          ENDIF.
          APPEND ecritures.
        ENDLOOP.
      ENDIF.
    
    ENDFUNCTION.
    Quelqu'un peut-il m'aider à comprendre mon erreur ?

    Merci d'avance pour votre aide.

  2. #2
    Membre régulier
    Inscrit en
    Février 2011
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 98
    Points : 70
    Points
    70
    Par défaut
    Bonjour,

    Je ne suis pas un pro mais si je peux aider...
    As tu passé ton code en dé-bug ? est ce que "ecritures-matricule" est vide ou est ce un problème d'affichage ? as tu essayé avec un insert ?

  3. #3
    Membre régulier
    Inscrit en
    Mars 2010
    Messages
    271
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 271
    Points : 79
    Points
    79
    Par défaut
    Bonjour et merci pour ton aide!

    J'ai passé mon code en dé-bug et "ecritures-matricule" est vide donc ce n'est pas un problème d'affichage.

    Ou dois-je essayé mon insert ?

    Merci !

  4. #4
    Membre régulier
    Inscrit en
    Mars 2010
    Messages
    271
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 271
    Points : 79
    Points
    79
    Par défaut
    Le but de la fonction étant de récupérer les écritures pour un salarié (par rapport au numéro de matricule).

  5. #5
    Membre éprouvé Avatar de Celdrøn
    Homme Profil pro
    Consultant SAP
    Inscrit en
    Juillet 2007
    Messages
    614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Consultant SAP

    Informations forums :
    Inscription : Juillet 2007
    Messages : 614
    Points : 1 008
    Points
    1 008
    Par défaut
    Bonjour,

    Question toute bête, mais histoire de lever le doute, le champ PERNR est-il alimenté dans ta table source? Cette dernière devant être PPDIT semble-t-il.
    Boaf...signature <= ça suffira ça ??

  6. #6
    Membre régulier
    Inscrit en
    Mars 2010
    Messages
    271
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 271
    Points : 79
    Points
    79
    Par défaut
    Bonjour Celdron,

    Effectivement c'est une question toute bête mais tu as bien fait de la poser car dans ma table source PPDIT, le champ PERNR est égal à "00000000".

    Comment puis-je faire pour retourner les écritures de comptes d'un numéro de matricule précis, dois-je changer ma table source ?

    Car lorsque je lance la transaction "pcp0", le numéro de matricule s'affiche correctement avec les écritures associées...

    Merci pour ton aide.

  7. #7
    Membre éprouvé Avatar de Celdrøn
    Homme Profil pro
    Consultant SAP
    Inscrit en
    Juillet 2007
    Messages
    614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Consultant SAP

    Informations forums :
    Inscription : Juillet 2007
    Messages : 614
    Points : 1 008
    Points
    1 008
    Par défaut
    Citation Envoyé par johan0510 Voir le message
    Effectivement c'est une question toute bête mais tu as bien fait de la poser car dans ma table source PPDIT, le champ PERNR est égal à "00000000".
    Ce qui confirme l'adage:
    «Il n'y a pas de question bête… juste des gens pour le penser.»

    Si la transaction PCP0 affiche bien un matricule, cela signifie que cette information provient de quelque part. Reste à trouver d'où…

    Une trace SQL (ST05) peut sûrement t'aider à connaître les tables requêtées pour récupérer les données affichées.
    Boaf...signature <= ça suffira ça ??

  8. #8
    Membre régulier
    Inscrit en
    Mars 2010
    Messages
    271
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 271
    Points : 79
    Points
    79
    Par défaut
    Ce qui confirme l'adage:
    «Il n'y a pas de question bête… juste des gens pour le penser.»
    Exactement

    Oui j'ai effectivement utiliser la trace SQL (ST05) et j'ai trouvé les tables PPOIX et PPOPX qui sont requêtées.

    J'ai modifier mon code en conséquence :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    FUNCTION Z_HR_ABC.
    *"----------------------------------------------------------------------
    *"*"Interface locale :
    *"  IMPORTING
    *"     VALUE(MPERIO) TYPE  CHAR2
    *"     VALUE(APERIO) TYPE  CHAR4
    *"     VALUE(SOCIETE) TYPE  BUKRS
    *"     VALUE(MATRICULE) TYPE  PERNR_D OPTIONAL
    *"     VALUE(ETABLISSEMENT) TYPE  CHAR2 OPTIONAL
    *"     VALUE(RUNID) TYPE  P_EVNUM OPTIONAL
    *"     VALUE(STATUS) TYPE  P_EVSTATUS DEFAULT '50'
    *"     VALUE(SIMU) TYPE  P_EVSIMU DEFAULT ' '
    *"  TABLES
    *"      ECRITURES STRUCTURE  ZHR_ITF_ABC
    *"  EXCEPTIONS
    *"      NO_ENTRY
    *"----------------------------------------------------------------------
    
      DATA : BEGIN OF periodes OCCURS 0.
              INCLUDE STRUCTURE pevat.
      DATA : abkrs  TYPE abkrs,
             begda  TYPE d,
             endda  TYPE d,
             pabrp  TYPE pabrp,
             pabrj  TYPE pabrj,
             mperio TYPE char2,
             aperio TYPE char4,
             docnum TYPE ppdhd-docnum,
             END OF periodes.
    
      DATA : BEGIN OF tranches OCCURS 0,
               abkrs TYPE abkrs,
               pabrp TYPE pabrp,
               pabrj TYPE pabrj,
               begda TYPE d,
               endda TYPE d,
             END OF tranches.
    
      DATA : permo TYPE t549a-permo.
    
    ** Table des données
      DATA: BEGIN OF i_ppdit OCCURS 0,
              docnum LIKE ppdhd-docnum ,
              runid  LIKE ppdhd-runid ,
              blart  LIKE ppdhd-blart,
              doclin LIKE ppdit-doclin,
              budat  LIKE ppdhd-budat,
              bldat  LIKE ppdhd-bldat,
              abper  LIKE ppdit-abper,
              bukrs  LIKE ppdhd-bukrs,
              sgtxt  LIKE ppdit-sgtxt,
              zuonr  LIKE ppdit-zuonr,
              gsber  LIKE ppdit-gsber,
    *          pernr  LIKE ppdit-pernr,
              pernr  LIKE ppoix-pernr,
              kostl  LIKE ppdit-kostl,
              ktosl  LIKE ppdit-ktosl,
              hkont  LIKE ppdit-hkont,
              lifnr  LIKE ppdit-lifnr,
              wrbtr  LIKE ppdit-wrbtr,
              waers  LIKE ppdit-waers,
            END OF i_ppdit.
    
      DATA : it_pevst TYPE TABLE OF pevst WITH HEADER LINE.
      DATA : it_pevat TYPE TABLE OF pevat WITH HEADER LINE.
    
      DATA : gsber TYPE gsber.
    
      RANGES : r_runid FOR pevst-runid.
    
      REFRESH r_runid.
    
      IF runid IS NOT INITIAL.
        CLEAR r_runid.
        r_runid-low = runid.
        r_runid-option = 'EQ'.
        r_runid-sign = 'I'.
        APPEND r_runid.
      ENDIF.
    
      CONCATENATE '%' etablissement '%' INTO gsber.
    
    * Sélection des documents à transmettre
      SELECT * FROM pevat AS a
       INNER JOIN pevsh AS h
          ON h~type  = a~type
         AND h~runid = a~runid
       INNER JOIN pevst AS t
          ON t~type  = a~type
         AND t~runid = a~runid
       INNER JOIN ppdhd AS d
          ON d~evtyp = a~type
         AND d~runid = a~runid
    *Debut Ajout
       INNER JOIN ppoix as p
        ON p~runid = a~runid
    *Fin Ajout
        INTO CORRESPONDING FIELDS OF TABLE periodes
       WHERE a~type   = 'PP'
         AND t~simu   = simu
         AND t~runid  IN r_runid
         AND a~attr   = 'AKPER'
         AND h~actual = 'X'
         AND h~status = status
         AND d~bukrs  = societe
    *Debut Ajout 
         AND p~pernr = matricule.
    *Fin Ajout
    
      LOOP AT periodes.
        periodes-abkrs = periodes-value(2).
        periodes-pabrp = periodes-value+3(2).
        periodes-pabrj = periodes-value+6(4).
    
        READ TABLE tranches WITH KEY abkrs = periodes-abkrs
                                     pabrp = periodes-pabrp
                                     pabrj = periodes-pabrj.
        IF sy-subrc = 0.
          periodes-begda  = tranches-begda.
          periodes-endda  = tranches-endda.
          periodes-mperio = tranches-endda+4(2).
          periodes-aperio = tranches-endda(4).
        ELSE.
          CLEAR permo.
          SELECT SINGLE permo FROM t549a
            INTO permo
           WHERE abkrs = periodes-abkrs.
    
          SELECT SINGLE * FROM t549q
           INTO CORRESPONDING FIELDS OF tranches
           WHERE permo = permo
             AND pabrj = periodes-pabrj
             AND pabrp = periodes-pabrp.
    
          tranches-abkrs = periodes-abkrs.
    
          APPEND tranches.
    
          periodes-begda  = tranches-begda.
          periodes-endda  = tranches-endda.
          periodes-mperio = tranches-endda+4(2).
          periodes-aperio = tranches-endda(4).
        ENDIF.
    
        IF periodes-aperio NE aperio OR periodes-mperio NE mperio.
          DELETE periodes.
        ELSE.
          MODIFY periodes.
        ENDIF.
    
      ENDLOOP.
    
      IF periodes[] IS INITIAL.
        RAISE no_entry.
      ELSE.
    
    *Sélection des données à transférer
        REFRESH: it_pevst, it_pevat.
    
        SELECT * FROM pevst
          INTO TABLE it_pevst
           FOR ALL ENTRIES IN periodes
         WHERE type = 'PP'
           AND runid = periodes-runid.
    
        SORT it_pevst.
    *
        SELECT * FROM pevat
          INTO TABLE it_pevat
           FOR ALL ENTRIES IN periodes
         WHERE type = 'PP'
           AND runid = periodes-runid
           AND attr = 'AKPER'.
    
        SORT it_pevst.
    
        SELECT ppdhd~docnum ppdhd~runid blart doclin budat bldat abper
               ppdhd~bukrs sgtxt zuonr gsber pernr
               kostl ktosl hkont lifnr wrbtr waers
         APPENDING CORRESPONDING FIELDS OF TABLE i_ppdit
          FROM ppdhd INNER JOIN ppdit
            ON ppdit~docnum = ppdhd~docnum
           FOR ALL ENTRIES IN periodes
         WHERE ppdhd~docnum = periodes-docnum
           AND ppdit~gsber LIKE gsber.
    
    *--- Transfert dans la table ABC
        LOOP AT i_ppdit.
          CLEAR ecritures.
          ecritures-rtype  = 'C'.
          ecritures-rste   = i_ppdit-bukrs.
          ecritures-retab  = i_ppdit-gsber+2(2).
    *Debut Ajout
          ecritures-pernr = i_ppdit-pernr.
    *Fin Ajout
          ecritures-rgen   = i_ppdit-hkont.
          ecritures-ranp   = i_ppdit-budat(4).
          ecritures-rmoisp = i_ppdit-budat+4(2).
          ecritures-rjourp = i_ppdit-budat+6(2).
          ecritures-rce    = '6'.
          ecritures-ddatoa = i_ppdit-bldat(4).
          ecritures-ddatom = i_ppdit-bldat+4(2).
          ecritures-ddatoj = i_ppdit-bldat+6(2).
          ecritures-djal   = '640'.
          ecritures-dpiece = i_ppdit-docnum+2.
          READ TABLE it_pevst WITH KEY type  = 'PP'
                                       runid = i_ppdit-runid
               BINARY SEARCH.
          IF sy-subrc = 0.
            ecritures-dlib = it_pevst-name.
          ENDIF.
          IF i_ppdit-wrbtr LT 0.
            ecritures-dmdev = 0 - ( i_ppdit-wrbtr * 100 ) .
          ELSE.
            ecritures-dmdev = i_ppdit-wrbtr * 100.
          ENDIF.
          ecritures-dfolio = 'PAI'.
          ecritures-dws    = 'SAL'.
          ecritures-dnolig = i_ppdit-doclin.
          ecritures-dcdev  = i_ppdit-waers.
          ecritures-rsect  = i_ppdit-kostl.
          ecritures-rsect5 = i_ppdit-gsber.
          IF i_ppdit-wrbtr LT 0.
            ecritures-dsens = '-'.
          ELSE.
            ecritures-dsens = '+'.
          ENDIF.
          APPEND ecritures.
        ENDLOOP.
      ENDIF.
    
    ENDFUNCTION.
    Toujours la même erreur, mon PERNR est à "00000000" dans ma table de résultat

    Merci pour votre aide.

  9. #9
    Membre régulier
    Inscrit en
    Février 2011
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 98
    Points : 70
    Points
    70
    Par défaut
    Lorsque tu passes périodes en Dé-bug, ton champs est-il rempli ou toujours à 0?

  10. #10
    Membre régulier
    Inscrit en
    Mars 2010
    Messages
    271
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 271
    Points : 79
    Points
    79
    Par défaut
    Mon champ est toujours à 0 car je ne suis pas encore rentrer dans le

  11. #11
    Membre régulier
    Inscrit en
    Février 2011
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 98
    Points : 70
    Points
    70
    Par défaut
    oui mais avant ton Loop, tu remplies "periodes" avec ton SELECT non ? Si oui, "periodes" devrait contenir ton champs ? (je me perd dans ton code lol mais je débute en ABAP c'est pour ça^^)

  12. #12
    Membre régulier
    Inscrit en
    Mars 2010
    Messages
    271
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 271
    Points : 79
    Points
    79
    Par défaut
    Oui je rempli "périodes" mais "périodes" ne contient pas mon champ.
    C'est la table "i-ppdit" qui contient mon champ PERNR (matricule)

    ( tkt pas ^^ c'est déjà sympa de m'aider )

    Question : dois-je modifier le select suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT ppdhd~docnum ppdhd~runid blart doclin budat bldat abper
               ppdhd~bukrs sgtxt zuonr gsber pernr
               kostl ktosl hkont lifnr wrbtr waers
         APPENDING CORRESPONDING FIELDS OF TABLE i_ppdit
          FROM ppdhd INNER JOIN ppdit
            ON ppdit~docnum = ppdhd~docnum
           FOR ALL ENTRIES IN periodes
         WHERE ppdhd~docnum = periodes-docnum
           AND ppdit~gsber LIKE gsber.
    afin de prendre en compte mon champ PERNR de la table PPOIX ?

  13. #13
    Membre régulier
    Inscrit en
    Février 2011
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 98
    Points : 70
    Points
    70
    Par défaut
    Dans un sens pourquoi pas, ton champ matricule se retrouve bien dans les deux tables (ppdit et ppoix) non ? tu pourras comparer...(si je dis pas de bêtise, je pense que Celdron pourra t'aider bien mieux que moi mais je vais continuer à te poser des questions qui sait sur un malentendu tu trouveras l'erreur )

  14. #14
    Membre régulier
    Inscrit en
    Mars 2010
    Messages
    271
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 271
    Points : 79
    Points
    79
    Par défaut
    Le champ PERNR (matricule) est effectivement dans les deux tables (PPDIT et PPOIX). Je peux comparer mais je n'y arrive pas...! tu as une petite idée ?

    ( oui tu as peut être raison qui sait )

  15. #15
    Membre régulier
    Inscrit en
    Février 2011
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 98
    Points : 70
    Points
    70
    Par défaut
    Regarde les liaisons (à l'aide de se16n, je trouve que via la construction d'un infoset il y a parfois des erreurs) entre ces deux tables et les autres, vois si tu peux les inclure dans ton select.
    Ensuite affiches les comme tu le fais déjà...

    PS: Je quitte le boulot, donc a demain!

  16. #16
    Membre régulier
    Inscrit en
    Mars 2010
    Messages
    271
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 271
    Points : 79
    Points
    79
    Par défaut
    Pour lier ces deux tables il y a le champ PERNR (matricule)

    J'ai essayé le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        SELECT ppoix~pernr
         APPENDING CORRESPONDING FIELDS OF TABLE i_ppdit
          FROM ppoix INNER JOIN ppdit
            ON ppdit~pernr = ppoix~pernr.
    Mais sans succès...

    (Bonne soirée à toi et merci quand même !)

  17. #17
    Membre régulier
    Inscrit en
    Mars 2010
    Messages
    271
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 271
    Points : 79
    Points
    79
    Par défaut
    Bonjour à tous,

    Quelqu'un a-t-il une petite idée de l'erreur pour me faire avancer ?

    Peut être toi Celdron ?

    Merci pour votre aide !

  18. #18
    Membre éprouvé Avatar de Celdrøn
    Homme Profil pro
    Consultant SAP
    Inscrit en
    Juillet 2007
    Messages
    614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Consultant SAP

    Informations forums :
    Inscription : Juillet 2007
    Messages : 614
    Points : 1 008
    Points
    1 008
    Par défaut
    Salut,

    J'ai lu tout ce qui s'était dit, mais je vais rebondir sur le dernier message que tu as envoyé.

    Si avec un peu de réflexion tu relis ta dernière requête et que tu te rappelles de ce que tu obtenais avant… Bon ok, dès bon matin, pas facile… je vais me chercher un kawa.

    Dans ta table PPDIT, ton champ Matricule (PERNR) est vide (sur toutes les lignes au fait?), donc tu requêtes forcément la seconde table, PPOIX, avec un PERNR à vide, donc il est normal que rien ne te soit retourné si PERNR est alimenté dans PPOIX. Le lien ne doit pas être celui-ci, à moins que tu ne travailles pas sur une base avec des données reflétant ce qu'il y a en Prod, ce qui est possible.

    Petite question: En farfouillant un peu la transaction PCP0, qui est à la limite de l'imbitable, j'ai constaté que le champ CREATOR (Nom de l'utilisateur) de la table PEVSH était récupéré… ce ne serait pas ça par hasard ce que tu recherches.
    Boaf...signature <= ça suffira ça ??

  19. #19
    Membre régulier
    Inscrit en
    Mars 2010
    Messages
    271
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 271
    Points : 79
    Points
    79
    Par défaut
    Salut Celdron et Merci pour ton aide,

    Alors pour être précis, dans ma table PPDIT, le champ PERNR (Matricule) est vide sur toutes les lignes (="00000000").

    Effectivement, je ne travaille pas sur une base avec des données reflétant ce qu'il y a en production... elle est peut être la l'erreur...

    Oui la transaction PCP0... comment dire?!? c'est double kawa

    Je recherche le champ PERNR afin de retourner toutes les écritures (HKONT) d'un matricule.

    Le champ CREATOR peut faire la liaison ?

  20. #20
    Membre éprouvé Avatar de Celdrøn
    Homme Profil pro
    Consultant SAP
    Inscrit en
    Juillet 2007
    Messages
    614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Consultant SAP

    Informations forums :
    Inscription : Juillet 2007
    Messages : 614
    Points : 1 008
    Points
    1 008
    Par défaut
    Si ton champ PERNR est vide sur toutes les lignes, alors c'est mort pour passer par cette valeur. Je pense que le champ CREATOR, contient le compte utilisateur qui est à l'origine de l'écriture et non le matricule.

    Essaie d'avoir un accès sur la base de recette ou au pire qu'une personne accréditée te sorte un jeu de données de la prod dans un Excel, histoire d'avoir un aperçu de ce que tu as en réalité. La personne à l'origine du besoin peut te produire ça sans problème je pense.

    Seules des données de qualité te permettront de déterminer les liens entre les différentes tables... ou alors, tu débogues la PCP0, c'est au choix.
    Boaf...signature <= ça suffira ça ??

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 4 1234 DernièreDernière

Discussions similaires

  1. Réponses: 6
    Dernier message: 28/10/2014, 12h19
  2. Récupération de données d'une table dans un fichier Word
    Par flieto dans le forum Général Dotnet
    Réponses: 5
    Dernier message: 02/12/2013, 12h48
  3. récupération des données d'une table dans une page jsp
    Par sihamsisim dans le forum Struts 1
    Réponses: 28
    Dernier message: 22/05/2008, 19h01
  4. [MySQL] Récupération des données dans une table
    Par doudom dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 25/07/2007, 19h59
  5. Problème de récupérations de données dans une table mysql
    Par Helpine dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 09/03/2006, 19h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo