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. #21
    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
    D'accord. C'est ce qu'il me semblait aussi concernant le champ CREATOR.

    Oui tu as raison, je vais demander un aperçu de la production afin d'avoir une idée plus précise car le débogues de la PCP0... euhh... non merci !

    Merci pour ton aide, je reviendrais lorsque j'aurais plus de précisions

  2. #22
    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
    J'ai plus de précisions

    Je dois alimenter le champ matricule (champ "PERNR" de la table "PPOIX") dans la table retour intitulé "ECRITURES" et prendre le montant (champ "BETRG" de la table "PPOIX") pour avoir le détail par matricule.

    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
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    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
    *"----------------------------------------------------------------------
    
    *&----------------------------------------------------------------------
    *&  TABLE PERIODES
    *&----------------------------------------------------------------------
      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,
    *Début Ajout
             pernr  TYPE ppoix-pernr,
    *Fin Ajout
             END OF periodes.
    
    *&----------------------------------------------------------------------
    *&  TABLE TRANCHES
    *&----------------------------------------------------------------------
      DATA : BEGIN OF tranches OCCURS 0,
               abkrs TYPE abkrs,
               pabrp TYPE pabrp,
               pabrj TYPE pabrj,
               begda TYPE d,
               endda TYPE d,
             END OF tranches.
    
    *&----------------------------------------------------------------------
    *&  PARAMETRES
    *&----------------------------------------------------------------------
      DATA : permo TYPE t549a-permo.
    
    *&----------------------------------------------------------------------
    *&  TABLE DES DONNEES I_PPDIT
    *&----------------------------------------------------------------------
      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,
    *Debut Modification
    *          pernr  LIKE ppdit-pernr,
              pernr  LIKE ppoix-pernr,
    *Fin Modification
              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.
    
    *&----------------------------------------------------------------------
    *&  TABLES INTERNE
    *&----------------------------------------------------------------------
      DATA : it_pevst TYPE TABLE OF pevst WITH HEADER LINE.
      DATA : it_pevat TYPE TABLE OF pevat WITH HEADER LINE.
    *Debut Ajout
      DATA : it_ppoix TYPE TABLE OF ppoix WITH HEADER LINE.
    *Fin Ajout
    
    *&----------------------------------------------------------------------
    *&  PARAMETRES
    *&----------------------------------------------------------------------
      DATA : gsber TYPE gsber.
    
    *&----------------------------------------------------------------------
    *&  RANGES
    *&----------------------------------------------------------------------
      RANGES : r_runid FOR pevst-runid.
    
    *&----------------------------------------------------------------------
    *&  TRAITEMENT 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.
    
    *&----------------------------------------------------------------------
    *&  CONCATENATION
    *&----------------------------------------------------------------------
      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
    *&----------------------------------------------------------------------
      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.
    *&----------------------------------------------------------------------
    *&  ENDLOOP PERIODES
    *&----------------------------------------------------------------------
    
      IF periodes[] IS INITIAL.
        RAISE no_entry.
      ELSE.
    
    *&----------------------------------------------------------------------
    *&  Sélection des données à transférer
    *&----------------------------------------------------------------------
        REFRESH: it_pevst, it_pevat, it_ppoix.
    
        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.
    
    *Debut Ajout
        SELECT * FROM ppoix
          INTO TABLE it_ppoix
          FOR ALL ENTRIES IN periodes
          WHERE runid = periodes-runid.
    
          SORT it_ppoix.
    *Fin Ajout
    
        SELECT ppdhd~docnum ppdhd~runid blart doclin budat bldat abper
               ppdhd~bukrs sgtxt zuonr gsber
               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.
    
    *Debut Ajout
    *    SELECT ppoix~pernr
    *     APPENDING CORRESPONDING FIELDS OF TABLE i_ppdit
    *      FROM ppoix INNER JOIN ppdit
    *        ON ppdit~pernr = ppoix~pernr.
    *Fin Ajout
    
    *&----------------------------------------------------------------------
    *&  Transfert dans la table ECRITURES
    *&----------------------------------------------------------------------
        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.
    Lorsque je met un point d'arrêt sur ce SELECT :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        SELECT * FROM ppoix
          INTO TABLE it_ppoix
          FOR ALL ENTRIES IN periodes
          WHERE runid = periodes-runid.
    
          SORT it_ppoix.
    La table "IT_PPOIX" contient tous mes matricules "PERNR" c'est à dire 393 entrées et la table "PERIODES" contient tous les matricules (=106) comme demandé à l'écran de sélection...

    Voyez vous une erreur qui ne me permet pas d'alimenter dans ma table "ECRITURES" le matricule et le montant provenant de la table "PPOIX" ?

    Merci pour votre aide !

  3. #23
    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 : 39
    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
    Je pense que c'est dans ta méga-jointure (j'ai horreur des jointures !!! >_<) que se pose le problème.

    En effet, tu fais un SELECT * FROM pevat donc il semble très difficile de savoir d'où proviennent les infos qui sont alimentées dans ta table ECRITURE.

    D'ailleurs, si je je peux te donner un conseil, c'est d'éviter les SELECT * et les INTO CORRESPONDING FIELDS OF. Il est préférable de spécifier précisément les champs à récupérer et dans l'ordre des champs de ta table ECRITURE et de faire un INTO TABLE, ça permet de gagner en temps de traitement.

    Pour commencer, remplace le * par les champs que tu souhaites récupérer, on verra ce que tu récupères.

  4. #24
    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,

    J'ai changé ma méga-jointure comme ceci :
    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
      SELECT a~mandt a~type a~runid 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
       INNER JOIN ppoix as p
        ON  p~runid = a~runid
        INTO 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
         AND p~pernr = matricule.
    Cependant je récupère dans ma table PERIODES seulement les champs suivants : mandt, type, runid

    As-tu un exemple de ce que je dois faire car je suis un peu perdu la... il faut que je supprimes mes jointures ?

    Merci pour ton aide!

  5. #25
    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 : 39
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      SELECT a~mandt a~type a~runid FROM pevat AS a
    Cependant je récupère dans ma table PERIODES seulement les champs suivants : mandt, type, runid
    Bonjour,

    C'est normal, car tu as demandé de ne récupérer que ces trois champs là dans ta table ECRITURE.

    En toute logique, la requête que tu dois écrire devrait avoir grossièrement cette forme là:
    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
    SELECT a~type   a~runid a~attr a~id a~value
           d~docnum p~pernr
        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
    En tout cas, pour ce qui concerne la partie «SELECT [champs]»

  6. #26
    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 comprends bien le fonctionnement.

    D'accord pour la forme de la requête et pour la partie «SELECT [champs]».

    Ma table "PERIODES" est donc complétée en fonction des données remplies en sélection après ce "SELECT".

    Cependant lorsque je rentre ensuite dans mon "LOOP AT Périodes" ma table ne se remplie pas avec les dates remplies en sélection...

    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
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    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
    *"----------------------------------------------------------------------
    
    *&----------------------------------------------------------------------
    *&  TABLE PERIODES
    *&----------------------------------------------------------------------
      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,
             pernr  LIKE ppoix-pernr,
             END OF periodes.
    
    *&----------------------------------------------------------------------
    *&  TABLE TRANCHES
    *&----------------------------------------------------------------------
      DATA : BEGIN OF tranches OCCURS 0,
               abkrs TYPE abkrs,
               pabrp TYPE pabrp,
               pabrj TYPE pabrj,
               begda TYPE d,
               endda TYPE d,
             END OF tranches.
    
    *&----------------------------------------------------------------------
    *&  PARAMETRES
    *&----------------------------------------------------------------------
      DATA : permo TYPE t549a-permo.
    
    *&----------------------------------------------------------------------
    *&  TABLE DES DONNEES I_PPDIT
    *&----------------------------------------------------------------------
      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,
    *Debut Modification
    *          pernr  LIKE ppdit-pernr,
              pernr  LIKE ppoix-pernr,
    *Fin Modification
              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.
    
    *&----------------------------------------------------------------------
    *&  TABLES INTERNE
    *&----------------------------------------------------------------------
      DATA : it_pevst TYPE TABLE OF pevst WITH HEADER LINE.
      DATA : it_pevat TYPE TABLE OF pevat WITH HEADER LINE.
    *Debut Ajout
      DATA : it_ppoix TYPE TABLE OF ppoix WITH HEADER LINE.
    *Fin Ajout
    
    *&----------------------------------------------------------------------
    *&  PARAMETRES
    *&----------------------------------------------------------------------
      DATA : gsber TYPE gsber.
    
    *&----------------------------------------------------------------------
    *&  RANGES
    *&----------------------------------------------------------------------
      RANGES : r_runid FOR pevst-runid.
    
    *&----------------------------------------------------------------------
    *&  TRAITEMENT 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.
    
    *&----------------------------------------------------------------------
    *&  CONCATENATION
    *&----------------------------------------------------------------------
      CONCATENATE '%' etablissement '%' INTO gsber.
    
    *&----------------------------------------------------------------------
    *&  Sélection des documents à transmettre
    *&----------------------------------------------------------------------
      SELECT a~type a~runid a~attr a~id d~docnum p~pernr
        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
      INNER JOIN ppoix as p
       ON  p~runid = a~runid
       INTO CORRESPONDING FIELDS OF TABLE periodes
      WHERE a~type   = 'PP'
        AND t~runid  IN r_runid
        AND a~attr   = 'AKPER'
        AND h~actual = 'X'
        AND t~simu   = simu
        AND h~status = status
        AND d~bukrs  = societe
        AND p~pernr = matricule.
    
    *&----------------------------------------------------------------------
    *&  LOOP AT PERIODES
    *&----------------------------------------------------------------------
      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.
    *&----------------------------------------------------------------------
    *&  ENDLOOP PERIODES
    *&----------------------------------------------------------------------
    
      IF periodes[] IS INITIAL.
        RAISE no_entry.
      ELSE.
    
    *&----------------------------------------------------------------------
    *&  Sélection des données à transférer
    *&----------------------------------------------------------------------
        REFRESH: it_pevst, it_pevat, it_ppoix.
    
        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_pevat.
    
    *Debut Ajout
        SELECT * FROM ppoix
          INTO TABLE it_ppoix
          FOR ALL ENTRIES IN periodes
          WHERE runid = periodes-runid.
    
        SORT it_ppoix.
    *Fin Ajout
    
        SELECT ppdhd~docnum ppdhd~runid blart doclin budat bldat abper
               ppdhd~bukrs sgtxt zuonr gsber
               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 ECRITURES
    *&----------------------------------------------------------------------
        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.
    Cela vient de mes jointures après le "SELECT" ?

  7. #27
    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 : 39
    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
    T'as oublié de récupérer le champ VALUE dans ta jointure.

  8. #28
    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
    Ah d'accord et concrètement tu l'indique comment ?

    Je suis

    Merci !

  9. #29
    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 : 39
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT a~type a~runid a~attr a~id a~value d~docnum p~pernr
    Tout simplement.

  10. #30
    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
    D'accord je ne croyais pas que tu me parlais du champ "VALUE" mais effectivement ça fonctionne mieux je te remercie !

    Au niveau du résultat j'ai toujours pas ce que je souhaite.

    J'ai modifié mes SELECT(s) comme ceci :

    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
      REFRESH: it_pevst, it_pevat, it_ppoix.
    
        SELECT mandt type runid name simu FROM pevst
          INTO TABLE it_pevst
           FOR ALL ENTRIES IN periodes
         WHERE type = 'PP'
           AND runid = periodes-runid.
    
        SORT it_pevst.
    
        SELECT mandt type runid attr id value FROM pevat
          INTO TABLE it_pevat
           FOR ALL ENTRIES IN periodes
         WHERE type = 'PP'
           AND runid = periodes-runid
           AND attr = 'AKPER'.
    
        SORT it_pevat.
    
    *Debut Ajout
        SELECT * FROM ppoix
          INTO TABLE it_ppoix
          FOR ALL ENTRIES IN periodes
          WHERE runid = periodes-runid
          AND pernr = matricule.
    
        SORT it_ppoix.
    *Fin Ajout
    
        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.
    Dans ma table "ECRITURES", le PERNR n'est pas incrémenté...

    Je pense que c'est mon dernier SELECT qui n'est pas correct!

    Une idée ?

  11. #31
    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 : 39
    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
    Faudrait que tu nous redonnes le code complet dans sa dernière version.

    Mais je pense que tu récupères dans ECRITURES le PERNR la table PPDIT au lieu de le reprendre de PPOIX, regarde à l'endroit où tu alimentes ta table ECRITURES.

  12. #32
    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
    A ta demande Celdron voici la dernière version de 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
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    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
    *"----------------------------------------------------------------------
    
    *&----------------------------------------------------------------------
    *&  TABLE PERIODES
    *&----------------------------------------------------------------------
      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,
             pernr  LIKE ppoix-pernr,
             END OF periodes.
    
    *&----------------------------------------------------------------------
    *&  TABLE TRANCHES
    *&----------------------------------------------------------------------
      DATA : BEGIN OF tranches OCCURS 0,
               abkrs TYPE abkrs,
               pabrp TYPE pabrp,
               pabrj TYPE pabrj,
               begda TYPE d,
               endda TYPE d,
             END OF tranches.
    
    *&----------------------------------------------------------------------
    *&  PARAMETRES
    *&----------------------------------------------------------------------
      DATA : permo TYPE t549a-permo.
    
    *&----------------------------------------------------------------------
    *&  TABLE DES DONNEES I_PPDIT
    *&----------------------------------------------------------------------
      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 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.
    
    *&----------------------------------------------------------------------
    *&  TABLES INTERNE
    *&----------------------------------------------------------------------
      DATA : it_pevst TYPE TABLE OF pevst WITH HEADER LINE.
      DATA : it_pevat TYPE TABLE OF pevat WITH HEADER LINE.
      DATA : it_ppoix TYPE TABLE OF ppoix WITH HEADER LINE.
    
    *&----------------------------------------------------------------------
    *&  PARAMETRES
    *&----------------------------------------------------------------------
      DATA : gsber TYPE gsber.
    
    *&----------------------------------------------------------------------
    *&  RANGES
    *&----------------------------------------------------------------------
      RANGES : r_runid FOR pevst-runid.
    
    *&----------------------------------------------------------------------
    *&  TRAITEMENT 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.
    
    *&----------------------------------------------------------------------
    *&  CONCATENATION
    *&----------------------------------------------------------------------
      CONCATENATE '%' etablissement '%' INTO gsber.
    
    *&----------------------------------------------------------------------
    *&  Sélection des documents à transmettre
    *&----------------------------------------------------------------------
      SELECT a~type a~runid a~attr a~id a~value d~docnum p~pernr
        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
      INNER JOIN ppoix as p
       ON  p~runid = a~runid
       INTO CORRESPONDING FIELDS OF TABLE periodes
      WHERE a~type   = 'PP'
        AND t~runid  IN r_runid
        AND a~attr   = 'AKPER'
        AND h~actual = 'X'
        AND t~simu   = simu
        AND h~status = status
        AND d~bukrs  = societe
        AND p~pernr = matricule.
    
    *&----------------------------------------------------------------------
    *&  LOOP AT PERIODES
    *&----------------------------------------------------------------------
      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.
    *&----------------------------------------------------------------------
    *&  ENDLOOP PERIODES
    *&----------------------------------------------------------------------
    
      IF periodes[] IS INITIAL.
        RAISE no_entry.
      ELSE.
    
    *&----------------------------------------------------------------------
    *&  Sélection des données à transférer
    *&----------------------------------------------------------------------
        REFRESH: it_pevst, it_pevat, it_ppoix.
    
        SELECT mandt type runid name simu FROM pevst
          INTO TABLE it_pevst
           FOR ALL ENTRIES IN periodes
         WHERE type = 'PP'
           AND runid = periodes-runid.
    
        SORT it_pevst.
    
        SELECT mandt type runid attr id value FROM pevat
          INTO TABLE it_pevat
           FOR ALL ENTRIES IN periodes
         WHERE type = 'PP'
           AND runid = periodes-runid
           AND attr = 'AKPER'.
    
        SORT it_pevat.
    
        SELECT * FROM ppoix
          INTO TABLE it_ppoix
          FOR ALL ENTRIES IN periodes
          WHERE runid = periodes-runid
          AND pernr = matricule.
    
        SORT it_ppoix.
    
        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 ECRITURES
    *&----------------------------------------------------------------------
        LOOP AT i_ppdit.
          CLEAR ecritures.
          ecritures-rtype  = 'C'.
          ecritures-rste   = i_ppdit-bukrs.
          ecritures-retab  = i_ppdit-gsber+2(2).
          ecritures-pernr = 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.
    Tu veux dire dans mon dernier SELECT ?

  13. #33
    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 : 39
    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
    Non, je te parle de ce bout de code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    LOOP AT i_ppdit.
          CLEAR ecritures.
          ecritures-rtype  = 'C'.
          ecritures-rste   = i_ppdit-bukrs.
          ecritures-retab  = i_ppdit-gsber+2(2).
          ecritures-pernr = i_ppdit-pernr.
          ecritures-rgen   = i_ppdit-hkont.
          ecritures-ranp   = i_ppdit-budat(4).
    T'as pas dit que tu devais reprendre le PERNR de la table PPOIX dans ta table ECRITURES? Parce que ce n'est pas ce qui est fait actuellement, sachant que les données de I_PPDIT provienne de la jointure entre PPDHD et PPDIT.

  14. #34
    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
    Si excuse moi j'avais modifié cette partie par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ecritures-pernr =  it_ppoix-pernr.
    Cependant toujours pas de PERNR dans ma table "ECRITURES"...

  15. #35
    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 : 39
    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
    Donc, je vais te reposer une petite question…

    Est-ce que dans ta table PPOIX, le champ PERNR est alimenté dans l'environnement sur lequel tu travailles?

  16. #36
    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 le champ PERNR est bien alimenté dans ma table PPOIX (et par conséquent sur mon environnement de travail)

    C'est pour ça que je ne comprends pas...

    Par contre le champ PERNR n'est pas alimenté dans ma table PPDIT...

    Je pense qu'il faut que je modifie ma requête suivante :

    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.
    Elle va chercher le PERNR de I_PPDIT non ?!

  17. #37
    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 : 39
    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
    Alors, si tu ne récupères pas le PERNR, c'est soit:
    - que le paramètre MATRICULE de ta fonction est vide, car requêter une table avec une variable/un paramètre vide recherche les entrées pour lesquelles PERNR est vide
    - qu'il n'y a pas d'entrée dans PPOIX correspondant à la valeur issues de ton paramètre MATRICULE

    Et pour ta dernière remarque, tu m'as affirmé que tu reprenais le PERNR de la table PPOIX et non celui de PPDIT.

  18. #38
    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
    D'accord. Alors...

    - Comment vérifier que le paramètre MATRICULE de la fonction est vide. Seulement en dé-bug non ?

    - Lorsque je vais en SE16 dans la table PPOIX, il y a des matricules (PERNR) qui correspondent au paramètre passé dans MATRICULE (lorsque je fais le test).

    Oui j'ai bien pris le PERNR de la table PPOIX avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
          ecritures-pernr  = it_ppoix-pernr.
    C'est bien de ça que tu parles ?

    Merci encore pour ton aide

  19. #39
    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
    Je vais être plus précis avec toi Celdron

    Le but de la fonction est de retourner les écritures de chaque matricule (champ PERNR de la table PPOIX)

    Description étape par étape (en dé-bug)

    Etape 1 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT a~type a~runid a~attr a~id a~value d~docnum p~pernr
        FROM pevat AS a
    Après ce SELECT j'ai toutes les données demandées.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        AND p~pernr = matricule.
    Ici mon matricule est égal à la valeur saisie (ici : 00000106)

    Etape 2 :

    Après mon LOOP AT, ma table période est complétée.

    Etape 3 :

    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
        REFRESH: it_pevst, it_pevat, it_ppoix.
    
        SELECT mandt type runid name simu FROM pevst
          INTO TABLE it_pevst
           FOR ALL ENTRIES IN periodes
         WHERE type = 'PP'
           AND runid = periodes-runid.
    
        SORT it_pevst.
    
        SELECT mandt type runid attr id value FROM pevat
          INTO TABLE it_pevat
           FOR ALL ENTRIES IN periodes
         WHERE type = 'PP'
           AND runid = periodes-runid
           AND attr = 'AKPER'.
    
        SORT it_pevat.
    
        SELECT * FROM ppoix
          INTO TABLE it_ppoix
          FOR ALL ENTRIES IN periodes
          WHERE runid = periodes-runid
          AND pernr = matricule.
    
        SORT it_ppoix.
    Ici mon matricule est toujours égal à la valeur saisie (ici : 00000106)

    Etape 4 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
          ecritures-pernr  = it_ppoix-pernr.
    Mon matricule "it_ppoix-pernr" est égal à 00000000.

    D'où mon interrogation sur ce SELECT :

    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.
    Que fait le "APPENDING CORRESPONDING FIELDS OF TABLE i_ppdit" ??

    (sachant que dans ma table I_PPDIT tous les champs PERNR sont à "00000000")

  20. #40
    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 : 39
    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
    Le APENDING CORRESPONDING FIELDS OF TABLE rajoute les entrées trouvées dans ta requête dans la table cible, ici I_PPDIT.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 4 PremièrePremière 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