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. |
Partager