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