Download as pdf or txt
Download as pdf or txt
You are on page 1of 37

Program 1 : ZSRM_RELEVE_JOBS - Lancement JOBS / GSR

report ZEX_RELEVE_JOBS NO STANDARD PAGE HEADING line-size 200.

tables :but000,dfkkko,fkkvkp.

*&----------------------------------------------------------------------
* Ecran de sélection
*&----------------------------------------------------------------------
selection-screen begin of block b1 with frame title text-001.
parameters pgsber like fkkvkp-gsber MATCHCODE object zsh_tgsb
OBLIGATORY.
SELECT-OPTIONS s_period for sy-datum no-EXTENSION.
selection-screen end of block b1.

selection-screen begin of block b11 with frame title text-010.


selection-screen begin of line.
parameters pbt radiobutton group gsel.
selection-screen comment 5(30) text-002.
selection-screen end of line.
selection-screen begin of line.
parameters pmt radiobutton group gsel.
selection-screen comment 5(30) text-003.
selection-screen end of line.
selection-screen end of block b11.

*&----------------------------------------------------------------------
* Variables, structures et tables internes
*&----------------------------------------------------------------------
data JNAME LIKE TBTCO-JOBNAME.
data JNUMB LIKE RSJOBINFO-JOBNUMB.

data : begin of tab_jobs occurs 0,


jname type tbtco-jobname,
jnumb type rsjobinfo-jobnumb,
end of tab_jobs.

data gv_cpt(7) type n.


data gv_job(3) type n.

data gv_date like sy-datum.

ranges r_gsr for fkkvkp-regiogr_ca_t.


ranges r_gsber for fkkvkp-gsber.

data gv_like(10).

DATA tab_txt TYPE truxs_t_text_data.


FIELD-SYMBOLS <fsf>.

*&----------------------------------------------------------------------
INITIALIZATION.
*&----------------------------------------------------------------------

*&----------------------------------------------------------------------
START-OF-SELECTION.
*&----------------------------------------------------------------------
case pgsber.
WHEN 'DR01'. gv_like = 'D%'.
WHEN 'DR02'. gv_like = 'R%'.
WHEN 'DR03'. gv_like = 'M%'.
WHEN 'DR04'. gv_like = 'F%'.
WHEN 'DR05'. gv_like = 'J%'.
WHEN 'DR06'. gv_like = 'H%'.
WHEN 'DR07'. gv_like = 'A%'.
WHEN 'DR08'. gv_like = 'L%'.
WHEN 'DR09'. gv_like = 'B%'.
WHEN 'DR10'. gv_like = 'N%'.
ENDCASE.

select * into table @data(gt_gsr) from ADRREGGRP


where regiogroup like @gv_like.

***
free r_gsber.
r_gsber-low = pgsber.
r_gsber-option = 'EQ'.
r_gsber-sign = 'I'.
append r_gsber.

loop at gt_gsr INTO data(gs_gsr).


free r_gsr.
r_gsr-low = gs_gsr-regiogroup.
r_gsr-option = 'EQ'.
r_gsr-sign = 'I'.
append r_gsr.

CLEAR JNAME.

if pbt eq 'X'.
CONCATENATE 'SRM_RELEVE_BT_' pgsber '_' gs_gsr-regiogroup
INTO JNAME.
endif.

if pmt eq 'X'.
CONCATENATE 'SRM_RELEVE_MT_' pgsber '_' gs_gsr-regiogroup
INTO JNAME.
endif.

CALL FUNCTION 'JOB_OPEN'


EXPORTING
JOBNAME = JNAME
IMPORTING
JOBCOUNT = JNUMB
EXCEPTIONS
CANT_CREATE_JOB = 1
INVALID_JOB_DATA = 2
JOBNAME_MISSING = 3
OTHERS = 4.

IF SY-SUBRC <> 0.
WRITE :/ 'Erreur création job : ' , jname.
exit.
ENDIF.

SUBMIT ZSRM_EXTRACT_RESULT_RELEVE VIA JOB JNAME NUMBER JNUMB


WITH s_gsber in r_gsber
with s_gsr in r_gsr
with s_period in s_period
WITH pbt = pbt
with pmt = pmt
AND RETURN.

CALL FUNCTION 'JOB_CLOSE'


EXPORTING
JOBCOUNT = JNUMB
JOBNAME = JNAME
STRTIMMED = 'X'
EXCEPTIONS
CANT_START_IMMEDIATE = 1
INVALID_STARTDATE = 2
JOBNAME_MISSING = 3
JOB_CLOSE_FAILED = 4
JOB_NOSTEPS = 5
JOB_NOTEX = 6
LOCK_FAILED = 7
INVALID_TARGET = 8
OTHERS = 9.

IF SY-SUBRC <> 0.
WRITE :/ 'Erreur lancement job : ' , jname.
else.
WRITE :/ 'Job ', jname, ' lancé'.
ENDIF.

ENDLOOP.

Program 2 : ZSRM_EXT_RESULT_REL - Extraction résultats de relevé

*&----------------------------------------------------------------------
*& Auteur : Hassan ABOUBAKR
*& Date :
*&----------------------------------------------------------------------
*& Description : Projet SRM : Extraction résultats de relevé
*&
*&----------------------------------------------------------------------
*& Historique des modifications
*&----------------------------------------------------------------------
*& Date ! Auteur ! Description
*& ! !
*$ ! !
*&----------------------------------------------------------------------
report ZSRM_EXTRACT_RESULT_RELEVE NO STANDARD PAGE HEADING line-size 200.
TYPE-POOLS: slis,truxs,sccr.

tables : fkkvkp,eanlh,ever,equi,iflo,evbs,eanl,eabl,etdz,erdk.

*&----------------------------------------------------------------------
* Ecran de sélection
*&----------------------------------------------------------------------
selection-screen begin of block b1 with frame title text-001.
SELECT-options s_gsber FOR fkkvkp-gsber MATCHCODE object zsh_tgsb
OBLIGATORY.
select-options s_gsr for fkkvkp-regiogr_ca_t OBLIGATORY.
*SELECT-OPTIONS s_ur for eanlh-ableinh.
SELECT-OPTIONS s_gpart for fkkvkp-gpart.
SELECT-OPTIONS s_vkont for fkkvkp-vkont.
SELECT-OPTIONS s_vtg for ever-vertrag.
SELECT-OPTIONS s_period for sy-datum no-EXTENSION OBLIGATORY.
selection-screen end of block b1.

selection-screen begin of block b11 with frame title text-010.


*selection-screen begin of line.
*parameters pbtmt radiobutton group gsel.
*selection-screen comment 5(30) text-004.
*selection-screen end of line.
selection-screen begin of line.
parameters pbt radiobutton group gsel.
selection-screen comment 5(30) text-002.
selection-screen end of line.
selection-screen begin of line.
parameters pmt radiobutton group gsel.
selection-screen comment 5(30) text-003.
selection-screen end of line.
selection-screen end of block b11.

*&----------------------------------------------------------------------
* Variables, structures et tables internes
*&----------------------------------------------------------------------
data gv_lines type i.

data gv_bh.

data gt_rel_bt type STANDARD TABLE OF ZSRM_RELeve_BT WITH HEADER LINE.


data gt_rel_mt type STANDARD TABLE OF ZSRM_RELeve_MT WITH HEADER LINE.
data gt_erdz type STANDARD TABLE OF erdz WITH HEADER LINE.

ranges r_gsr for fkkvkp-regiogr_ca_t.


ranges r_ever for ever-vertrag.
data gv_cpt type i.
data gv_bt type i.
data gv_mt type i.

data : BEGIN OF gt_rel occurs 0,


ANLAGE type ANLAGE,
ADATSOLL type ADATSOLL,
ABLESGR type ABLESGR,
END OF gt_rel.
*&----------------------------------------------------------------------
INITIALIZATION.
*&----------------------------------------------------------------------

*&----------------------------------------------------------------------
START-OF-SELECTION.
*&----------------------------------------------------------------------
clear : gv_bt,gv_mt.

if s_period-high > sy-datum.


message s398(00) with 'Période de relevé erronée' DISPLAY LIKE 'E'.
exit.
endif.
*&----------------------------------------------------------------------
* Niveau de tension
*&----------------------------------------------------------------------
if pbt eq 'X'.
* data(gv_vktyp) = 'BT'.
data(gv_aklasse) = 'ERBT'.
endif.

if pmt eq 'X'.
* gv_vktyp = 'MT'.
gv_aklasse = 'ERMT'.
endif.

*&----------------------------------------------------------------------
* Contrôle autorisation GSR
*&----------------------------------------------------------------------
select REGIOGROUP into TABLE @data(gt_gsr)
from ADRREGGRP where regiogroup in @s_gsr.

if gt_gsr[] is INITIAL.
message s398(00) with 'GSR(s) inexistant(s)' DISPLAY LIKE 'E'.
exit.
endif.

loop at gt_gsr ASSIGNING FIELD-SYMBOL(<fs_gsr>).


CALL FUNCTION 'ZSISU_AUTHORITY_CHECK_REGIOGR'
EXPORTING
x_activity = '3'
X_REGIOCR_T = <fs_gsr>-regiogroup
EXCEPTIONS
authority_not_given = 1
others = 99.

if sy-subrc = 1.
delete gt_gsr.
endif.
endloop.

if gt_gsr[] is INITIAL.
message s398(00) with 'Prob autorisation GSR' DISPLAY LIKE 'E'.
exit.
endif.

free r_gsr.
CLEAR r_gsr.
r_gsr-sign = 'I'.
r_gsr-option = 'EQ'.

loop at gt_gsr into data(gs_gsr).


r_gsr-low = gs_gsr-regiogroup.
APPEND r_gsr.
ENDLOOP.

*&----------------------------------------------------------------------
* Sélection données
*&----------------------------------------------------------------------
select ever~vertrag, ever~einzdat, ever~auszdat
INTO table @data(gt_ever)
from FKKVKP as fkkvkp
inner join EVER as ever
on EVER~VKONTO = FKKVKP~VKONT
* inner join fkkvk as fkkvk
* on fkkvk~VKONT = FKKVKP~VKONT
where "fkkvk~vktyp eq @gv_vktyp
* and
FKKVKP~vkont in @s_vkont
and FKKVKP~gpart in @s_gpart
and FKKVKP~GSBER in @s_gsber
and FKKVKP~REGIOGR_CA_T in @r_GSR
and ever~vertrag in @s_vtg.

* DELETE gt_ever WHERE auszdat ne '99991231'.

CHECK gt_ever[] is NOT INITIAL.

free r_ever.
CLEAR r_ever.
r_ever-sign = 'I'.
r_ever-option = 'EQ'.

CLEAR gv_cpt.

loop at gt_ever into data(gs_ever).


CALL FUNCTION 'FKK_DTE_PERIOD_INTERSECTION'
EXPORTING
I_INTERVAL1_LOW = gs_ever-einzdat
I_INTERVAL1_HIGH = gs_ever-auszdat
I_INTERVAL2_LOW = s_period-low
I_INTERVAL2_HIGH = s_period-high
EXCEPTIONS
NO = 1
INVALID_INPUT = 2
OTHERS = 3.

if sy-subrc ne 0.
delete gt_ever.
continue.
endif.

r_ever-low = gs_ever-vertrag.
APPEND r_ever.
add 1 to gv_cpt.

if gv_cpt eq 1000.
PERFORM write_data.
free r_ever.
CLEAR r_ever.
r_ever-sign = 'I'.
r_ever-option = 'EQ'.
CLEAR gv_cpt.
ENDIF.

ENDLOOP.

if r_ever[] is not INITIAL.


PERFORM write_data.
ENdif.

if pbt eq 'X'.
write :/5 gv_bt, 'Ligne(s) relevé BT insérée(s) / modifiée(s)'.
else.
write :/5 gv_mt, 'Ligne(s) relevé MT insérée(s) / modifiée(s)'.
endif.

*&---------------------------------------------------------------------*
*& Form WRITE_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM WRITE_DATA .
select
FKKVKP~GSBER, FKKVKP~regiogr_ca_t, FKKVKP~gpart, FKKVKP~VKONT,
EANLH~ANLAGE,EVER~VERTRAG,EABLG~ADATSOLL,EABLG~ABLESGR,EABL~ZWNUMME
R,
EABLG~ABLBELNR, EABLG~ABLEINH,eastl~kondigr,
EABL~EQUNR,EABL~ADAT, EABL~AEDAT, EABL~V_ZWSTAND, EABL~ABLSTAT,
EABL~ABLHINW, EABL~STABLHW, EABL~ABLESART, EABL~ISTABLART,
EQUI~MATNR, EQUI~SERNR,
etdz~kennziff,EVER~AUSZDAT,
etrg~trigstat,
erch~belnr, erch~billing_period,
erchc~opbel
from FKKVKP as fkkvkp
inner join EVER as ever
on EVER~VKONTO = FKKVKP~VKONT
inner join EANLH as eanlh
on EANLH~ANLAGE = EVER~ANLAGE
inner join EABLG as eablg
on EABLG~ANLAGE = EANLH~ANLAGE
INNER JOIN eastl as eastl
on eastl~anlage = eablg~anlage
and Eastl~AB <= eablg~ADATSOLL
and Eastl~BIS >= eablg~ADATSOLL
inner join EABL as eabl
on EABL~ABLBELNR = EABLG~ABLBELNR
inner join EQUI as equi
on EQUI~EQUNR = EABL~EQUNR
left OUTER JOIN etdz as etdz
on ETDZ~EQUNR = EABL~EQUNR
and ETDZ~ZWNUMMER = eabl~ZWNUMMER
and ETDZ~AB <= eabl~ADAT
and ETDZ~BIS >= eabl~ADAT
LEFT OUTER JOIN etrg as etrg
on etrg~anlage = eablg~anlage
and etrg~adatsoll = eablg~adatsoll
LEFT OUTER JOIN erch as erch
on erch~vertrag = ever~vertrag
and ERCH~adatsoll = eablg~ADATSOLL
and ERCH~STORNODAT eq '00000000'
and ERCH~SIMULATION eq ' '
and ERCH~SC_BELNR_H eq ' '
LEFT OUTER JOIN erchc as erchc
on erch~belnr = erchc~belnr
and ERCHC~INTCPUDT eq '00000000'
and ERCHC~SIMULATED eq ' '
where
ever~vertrag in @r_ever
and ever~einzdat <= eabl~ADAT
and ever~auszdat >= eabl~ADAT
and eanlh~aklasse eq @gv_aklasse
and eanlh~ab <= eabl~ADAT
and eanlh~bis >= eabl~ADAT
and eabl~adat in @s_period
INTO table @data(gt_data).

delete gt_data where adat not in s_period.


delete gt_data where ablstat eq 0.

if pbt eq 'X'.
* delete gt_data where ( matnr eq '1STA2F5-
30A230V_D' or matnr eq '1STA4F10-60A400V_D' ) and
* ( zwnummer eq 1 or zwnummer eq 2 ).
delete gt_data where ( matnr ne '1STA2F5-
30A230V_D' and matnr ne '1STA4F10-60A400V_D' ) and
( zwnummer ne 1 ).
else.
* loop at gt_data into data(gs_data).
* if 'EAITT/ERIHL/ERIHP/ERIHC/EAEHL/EAEHP/EAEHC/EAETT/EAIPH1/EAIPH2/EA
IPH3/EAEPH1/EAEPH2/EAEPH3'
* cs gs_data-kennziff.
* delete gt_data.
* endif.
* endloop.
endif.

sort gt_data by anlage adatsoll ablesgr zwnummer.

free gt_rel.

LOOP AT gt_data into data(gs_data).


clear gt_rel.
MOVE-CORRESPONDING gs_data to gt_rel.
collect gt_rel.
ENDLOOP.

if pbt eq 'X'.
free : gt_rel_bt.
LOOP AT gt_rel.
clear gt_rel_bt.
LOOP AT gt_data into gs_data where anlage eq gt_rel-anlage
and adatsoll eq gt_rel-adatsoll
and ablesgr eq gt_rel-ablesgr.

MOVE-CORRESPONDING gs_data to gt_rel_bt.

if gs_data-zwnummer eq 1.
move gs_data-ablbelnr to gt_rel_bt-ablbelnr.
ENDIF.

* CASE gs_data-zwnummer.
* WHEN 1 or 4. gt_rel_bt-Index_eai_eaihp = gs_data-V_ZWSTAND.
* WHEN 3. gt_rel_bt-Index_eaihl = gs_data-V_ZWSTAND.
* WHEN 5. gt_rel_bt-Index_eaihc = gs_data-V_ZWSTAND.
* WHEN 2. gt_rel_bt-Index_eaitt = gs_data-V_ZWSTAND.
* ENDCASE.

clear gv_bh.

if gs_data-matnr eq '1STA2F5-30A230V_D' or
gs_data-matnr eq '1STA4F10-60A400V_D'.
gv_bh = 'X'.
* clear : gt_rel_bt-istablart,gt_rel_bt-ablstat,gt_rel_bt-ablhinw.
endif.

CASE gs_data-kennziff.
WHEN 'EAIHP'.
gt_rel_bt-Index_eai_eaihp = gs_data-V_ZWSTAND.
gt_rel_bt-istablart_eai_eaihp = gs_data-istablart.
gt_rel_bt-statut_eai_eaihp = gs_data-ablstat.
gt_rel_bt-notice_eai_eaihp = gs_data-ablhinw.
WHEN 'EAIHL'.
gt_rel_bt-Index_eaihl = gs_data-V_ZWSTAND.
gt_rel_bt-istablart_eaihl = gs_data-istablart.
gt_rel_bt-statut_eaihl = gs_data-ablstat.
gt_rel_bt-notice_eaihl = gs_data-ablhinw.
WHEN 'EAIHC'.
gt_rel_bt-Index_eaihc = gs_data-V_ZWSTAND.
gt_rel_bt-istablart_eaihc = gs_data-istablart.
gt_rel_bt-statut_eaihc = gs_data-ablstat.
gt_rel_bt-notice_eaihc = gs_data-ablhinw.
WHEN 'EAITT'.
if gv_bh eq 'X'.
gt_rel_bt-Index_eaitt = gs_data-V_ZWSTAND.
gt_rel_bt-istablart_eaitt = gs_data-istablart.
gt_rel_bt-statut_eaitt = gs_data-ablstat.
gt_rel_bt-notice_eaitt = gs_data-ablhinw.
else.
gt_rel_bt-Index_eai_eaihp = gs_data-V_ZWSTAND.
gt_rel_bt-istablart_eai_eaihp = gs_data-istablart.
gt_rel_bt-statut_eai_eaihp = gs_data-ablstat.
gt_rel_bt-notice_eai_eaihp = gs_data-ablhinw.
endif.
when 'EAI'.
gt_rel_bt-Index_eai_eaihp = gs_data-V_ZWSTAND.
gt_rel_bt-istablart_eai_eaihp = gs_data-istablart.
gt_rel_bt-statut_eai_eaihp = gs_data-ablstat.
gt_rel_bt-notice_eai_eaihp = gs_data-ablhinw.
WHEN 'PA1'.
gt_rel_bt-Index_pai = gs_data-V_ZWSTAND.
gt_rel_bt-CONS_PAI = gt_rel_bt-Index_pai.
gt_rel_bt-istablart_pai = gs_data-istablart.
gt_rel_bt-statut_pai = gs_data-ablstat.
gt_rel_bt-notice_pai = gs_data-ablhinw.
ENDCASE.

if not gs_data-opbel is INITIAL.


free gt_erdz.

CALL FUNCTION 'ISU_DB_ERDZ_SELECT_DOC'


EXPORTING
X_OPBEL = gs_data-opbel
TABLES
YT_ERDZ = gt_erdz
EXCEPTIONS
NOT_FOUND = 1
NOT_QUALIFIED = 2
SYSTEM_ERROR = 3
OTHERS = 4.

LOOP AT gt_erdz.
CASE gt_erdz-belzart.
WHEN 'XEAT' or 'XEAHP'.
if gt_erdz-i_abrmenge ge 0.
add gt_erdz-i_abrmenge to gt_rel_bt-CONS_EAI_EAIHP_FACT.
add gt_erdz-I_ZWSTDIFF to gt_rel_bt-CONS_EAI_EAIHP.
endif.
WHEN 'XEAHL'.
if gt_erdz-i_abrmenge ge 0.
add gt_erdz-i_abrmenge to gt_rel_bt-CONS_EAIHL_FACT.
add gt_erdz-I_ZWSTDIFF to gt_rel_bt-CONS_EAIHL.
endif.
WHEN 'XEAHC'.
if gt_erdz-i_abrmenge ge 0.
add gt_erdz-i_abrmenge to gt_rel_bt-CONS_EAIHC_FACT.
add gt_erdz-I_ZWSTDIFF to gt_rel_bt-CONS_EAIHC.
endif.
WHEN 'XEATT'.
if gt_erdz-i_abrmenge ge 0.
* add gt_erdz-i_abrmenge to gt_rel_bt-CONS_EAITT_FACT.
add gt_erdz-I_ZWSTDIFF to gt_rel_bt-CONS_EAITT.
endif.
* WHEN 'XPS'.
* if gv_bh eq 'X'.
* if gt_erdz-i_abrmenge ge 0.
* add gt_erdz-i_abrmenge to gt_rel_bt-CONS_PAI_FACT.
* add gt_erdz-I_ZWSTDIFF to gt_rel_bt-CONS_PAI.
* endif.
* endif.
ENDCASE.
ENDLOOP.
endif.
ENDLOOP.
append gt_rel_bt.
ENDLOOP.

modify zsrm_releve_bt FROM table gt_rel_bt.


add sy-dbcnt to gv_bt.

else.
free : gt_rel_mt.

LOOP AT gt_rel.
clear gt_rel_mt.
LOOP AT gt_data into gs_data where anlage eq gt_rel-anlage
and adatsoll eq gt_rel-adatsoll
and ablesgr eq gt_rel-ablesgr.

MOVE-CORRESPONDING gs_data to gt_rel_mt.

if gs_data-zwnummer eq 1.
move gs_data-ablbelnr to gt_rel_mt-ablbelnr.
ENDIF.

CASE gs_data-kondigr.
WHEN 'ERMTCPTB10'. gt_rel_mt-type_comptage = 'B10'.
WHEN 'ERMTCPT10'. gt_rel_mt-type_comptage = '10'.
WHEN 'ERMTCPT11'. gt_rel_mt-type_comptage = '11'.
ENDCASE.

CASE gs_data-kennziff.
WHEN 'EAIHP'.
gt_rel_mt-Index_eaihp = gs_data-V_ZWSTAND.
gt_rel_mt-notice_eaihp = gs_data-ablhinw.
gt_rel_mt-statut_eaihp = gs_data-ablstat.
WHEN 'EAIHL'.
gt_rel_mt-Index_eaihl = gs_data-V_ZWSTAND.
gt_rel_mt-notice_eaihl = gs_data-ablhinw.
gt_rel_mt-statut_eaihl = gs_data-ablstat.
WHEN 'EAIHC'.
gt_rel_mt-Index_eaihc = gs_data-V_ZWSTAND.
gt_rel_mt-notice_eaihc = gs_data-ablhinw.
gt_rel_mt-statut_eaihc = gs_data-ablstat.
WHEN 'ERITT'.
gt_rel_mt-Index_eritt = gs_data-V_ZWSTAND.
gt_rel_mt-notice_eritt = gs_data-ablhinw.
gt_rel_mt-statut_eritt = gs_data-ablstat.
WHEN 'PAIHP'.
gt_rel_mt-Index_paihp = gs_data-V_ZWSTAND.
gt_rel_mt-notice_paihp = gs_data-ablhinw.
gt_rel_mt-statut_paihp = gs_data-ablstat.
WHEN 'PAIHL'.
gt_rel_mt-Index_paihl = gs_data-V_ZWSTAND.
gt_rel_mt-notice_paihl = gs_data-ablhinw.
gt_rel_mt-statut_paihl = gs_data-ablstat.
WHEN 'PAIHC'.
gt_rel_mt-Index_paihc = gs_data-V_ZWSTAND.
gt_rel_mt-notice_paihc = gs_data-ablhinw.
gt_rel_mt-statut_paihc = gs_data-ablstat.
* WHEN 'PAIHP' or 'PAIHL' or 'PAIHC'.
* if gt_rel_mt-Index_pmax < gs_data-V_ZWSTAND.
* gt_rel_mt-Index_pmax = gs_data-V_ZWSTAND.
* endif.
WHEN 'HU' or 'MNU'.
gt_rel_mt-Index_hu_mnu = gs_data-V_ZWSTAND.
gt_rel_mt-notice_hu_mnu = gs_data-ablhinw.
gt_rel_mt-statut_hu_mnu = gs_data-ablstat.
WHEN 'EAITT'.
gt_rel_mt-Index_eaitt = gs_data-V_ZWSTAND.
gt_rel_mt-notice_eaitt = gs_data-ablhinw.
gt_rel_mt-statut_eaitt = gs_data-ablstat.
WHEN 'ERIHL'.
gt_rel_mt-Index_erihl = gs_data-V_ZWSTAND.
gt_rel_mt-notice_erihl = gs_data-ablhinw.
gt_rel_mt-statut_erihl = gs_data-ablstat.
WHEN 'ERIHP'.
gt_rel_mt-Index_erihp = gs_data-V_ZWSTAND.
gt_rel_mt-notice_erihp = gs_data-ablhinw.
gt_rel_mt-statut_erihp = gs_data-ablstat.
WHEN 'ERIHC'.
gt_rel_mt-Index_erihc = gs_data-V_ZWSTAND.
gt_rel_mt-notice_erihc = gs_data-ablhinw.
gt_rel_mt-statut_erihc = gs_data-ablstat.
WHEN 'EAEHL'.
gt_rel_mt-Index_eaehl = gs_data-V_ZWSTAND.
gt_rel_mt-notice_eaehl = gs_data-ablhinw.
gt_rel_mt-statut_eaehl = gs_data-ablstat.
WHEN 'EAEHP'.
gt_rel_mt-Index_eaehp = gs_data-V_ZWSTAND.
gt_rel_mt-notice_eaehp = gs_data-ablhinw.
gt_rel_mt-statut_eaehp = gs_data-ablstat.
WHEN 'EAEHC'.
gt_rel_mt-Index_eaehc = gs_data-V_ZWSTAND.
gt_rel_mt-notice_eaehc = gs_data-ablhinw.
gt_rel_mt-statut_eaehc = gs_data-ablstat.
WHEN 'EAETT'.
gt_rel_mt-Index_eaett = gs_data-V_ZWSTAND.
gt_rel_mt-notice_eaett = gs_data-ablhinw.
gt_rel_mt-statut_eaett = gs_data-ablstat.
WHEN 'EAIPH1'.
gt_rel_mt-Index_eaiph1 = gs_data-V_ZWSTAND.
gt_rel_mt-notice_eaiph1 = gs_data-ablhinw.
gt_rel_mt-statut_eaiph1 = gs_data-ablstat.
WHEN 'EAIPH2'.
gt_rel_mt-Index_eaiph2 = gs_data-V_ZWSTAND.
gt_rel_mt-notice_eaiph2 = gs_data-ablhinw.
gt_rel_mt-statut_eaiph2 = gs_data-ablstat.
WHEN 'EAIPH3'.
gt_rel_mt-Index_eaiph3 = gs_data-V_ZWSTAND.
gt_rel_mt-notice_eaiph3 = gs_data-ablhinw.
gt_rel_mt-statut_eaiph3 = gs_data-ablstat.
WHEN 'EAEPH1'.
gt_rel_mt-Index_eaeph1 = gs_data-V_ZWSTAND.
gt_rel_mt-notice_eaeph1 = gs_data-ablhinw.
gt_rel_mt-statut_eaeph1 = gs_data-ablstat.
WHEN 'EAEPH2'.
gt_rel_mt-Index_eaeph2 = gs_data-V_ZWSTAND.
gt_rel_mt-notice_eaeph2 = gs_data-ablhinw.
gt_rel_mt-statut_eaeph2 = gs_data-ablstat.
WHEN 'EAEPH3'.
gt_rel_mt-Index_eaeph3 = gs_data-V_ZWSTAND.
gt_rel_mt-notice_eaeph3 = gs_data-ablhinw.
gt_rel_mt-statut_eaeph3 = gs_data-ablstat.
ENDCASE.
ENDLOOP.
append gt_rel_Mt.
ENDLOOP.

modify zsrm_releve_mt FROM table gt_rel_mt.


add sy-dbcnt to gv_mt.

endif.
ENDFORM.

at SELECTION-SCREEN OUTPUT.
LOOP AT screen.
if screen-name eq 'S_PERIOD-HIGH'.
screen-required = 1.
MODIFY SCREEN.
exit.
endif.
ENDLOOP.

Program 3 : ZSRM_RE_REL_BT - Reporting des résultats de relevé BT

*&----------------------------------------------------------------------
*& Description : Projet SRM : Reporting résultats de relevé BT
*d'apurement
*&
*&----------------------------------------------------------------------
*& Historique des modifications
*&----------------------------------------------------------------------
*& Date ! Auteur ! Description
*& ! !
*$ ! !
*&----------------------------------------------------------------------

report ZSRM_RE_RESULT_RELEVE_BT NO STANDARD PAGE HEADING line-size 200.


tables :ZSRM_RELeve_BT,fkkvkp,ever.

*&----------------------------------------------------------------------
* Ecran de sélection
*&----------------------------------------------------------------------
selection-screen begin of block b1 with frame title text-001.
select-options s_gsber for fkkvkp-gsber OBLIGATORY.
select-options s_gsr for fkkvkp-regiogr_ca_t OBLIGATORY .
SELECT-OPTIONS s_ur for ZSRM_RELeve_BT-ableinh.
SELECT-OPTIONS s_inst for ZSRM_RELeve_BT-anlage.
SELECT-OPTIONS s_cont for ever-vertrag.
SELECT-OPTIONS s_drp for ZSRM_RELeve_BT-adatsoll.
selection-screen end of block b1.

*&----------------------------------------------------------------------
* Variables, structures et tables internes
*&----------------------------------------------------------------------
TYPE-POOLS: slis.

DATA gt_fieldcat TYPE slis_t_fieldcat_alv.


DATA gs_sort TYPE slis_t_sortinfo_alv.
DATA zsort TYPE slis_sortinfo_alv.
DATA zcat TYPE slis_fieldcat_alv.
DATA: gt_list_top_of_page TYPE slis_t_listheader.
DATA: ztop TYPE slis_listheader.
DATA lc_glay TYPE lvc_s_glay.
DATA: gs_layout TYPE slis_layout_alv .
DATA w_date LIKE sy-datum.
DATA zdate(10).
*data : gt_data like ZPOSTE_ORIGINE.

* Table interne à afficher


DATA : BEGIN OF gt_data OCCURS 0.
include structure ZSRM_RELeve_BT.
data end of gt_data.

data gv_lines type i.


*&----------------------------------------------------------------------
INITIALIZATION.
*&----------------------------------------------------------------------

*&----------------------------------------------------------------------
START-OF-SELECTION.
*&----------------------------------------------------------------------
********************** sélection données ******************
SELECT * INTO table gt_data
from ZSRM_RELeve_BT
where anlage in s_inst
and adatsoll in s_drp
and gsber in s_gsber
and REGIOGR_CA_T in s_gsr
and vertrag in s_cont
and ableinh in s_ur.

DESCRIBE TABLE gt_data lines gv_lines.

sort gt_data by gsber regiogr_ca_t ableinh anlage adatsoll.

***********************
*&---------------------------------------------------------------------
*& Design -------------------------------------------------------------
*&---------------------------------------------------------------------
gs_layout-zebra = 'X'.
gs_layout-window_titlebar =
'SRM - Résultats de relevé BT'.
gs_layout-colwidth_optimize = 'X'.

*&---------------------------------------------------------------------
*& Catalogue ----------------------------------------------------------
*&---------------------------------------------------------------------
free gt_fieldcat.

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'


EXPORTING
i_program_name = sy-repid
i_internal_tabname = 'GT_DATA'
i_inclname = sy-repid
CHANGING
ct_fieldcat = gt_fieldcat
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.

LOOP AT gt_fieldcat INTO zcat.


zcat-decimals_out = 0.

IF zcat-fieldname = 'INDEX_EAI_EAIHP'.
zcat-ddictxt = 'L'.
zcat-seltext_l = 'Index EAI/EAIHP'.
ENDIF.

IF zcat-fieldname = 'INDEX_EAIHL'.
zcat-ddictxt = 'L'.
zcat-seltext_l = 'Index EAIHL'.
ENDIF.

IF zcat-fieldname = 'INDEX_EAIHC'.
zcat-ddictxt = 'L'.
zcat-seltext_l = 'Index EAIHC'.
ENDIF.

IF zcat-fieldname = 'CONS_EAI_EAIHP'.
zcat-ddictxt = 'L'.
zcat-seltext_l = 'Cons EAI/EAIHP'.
ENDIF.

IF zcat-fieldname = 'CONS_EAIHL'.
zcat-ddictxt = 'L'.
zcat-seltext_l = 'Cons EAIHL'.
ENDIF.

IF zcat-fieldname = 'CONS_EAIHC'.
zcat-ddictxt = 'L'.
zcat-seltext_l = 'Cons EAIHC'.
ENDIF.

IF zcat-fieldname = 'CONS_EAI_EAIHP_FACT'.
zcat-ddictxt = 'L'.
zcat-seltext_l = 'Cons Fact EAI/EAIHP'.
ENDIF.

IF zcat-fieldname = 'CONS_EAIHL_FACT'.
zcat-ddictxt = 'L'.
zcat-seltext_l = 'Cons Fact EAIHL'.
ENDIF.
IF zcat-fieldname = 'CONS_EAIHC_FACT'.
zcat-ddictxt = 'L'.
zcat-seltext_l = 'Cons Fact EAIHC'.
ENDIF.

IF zcat-fieldname = 'INDEX_EAITT'.
zcat-ddictxt = 'L'.
zcat-seltext_l = 'Index EAITT'.
ENDIF.

IF zcat-fieldname = 'CONS_EAITT'.
zcat-ddictxt = 'L'.
zcat-seltext_l = 'Cons EAITT'.
ENDIF.

IF zcat-fieldname = 'CONS_EAITT_FACT'.
zcat-ddictxt = 'L'.
zcat-seltext_l = 'Cons Fact EAITT'.
ENDIF.

IF zcat-fieldname = 'INDEX_PAI'.
zcat-ddictxt = 'L'.
zcat-seltext_l = 'Index PAI'.
ENDIF.

IF zcat-fieldname = 'CONS_PAI'.
zcat-ddictxt = 'L'.
zcat-seltext_l = 'Cons PAI'.
ENDIF.

IF zcat-fieldname = 'CONS_PAI_FACT'.
zcat-ddictxt = 'L'.
zcat-seltext_l = 'Cons Fact PAI'.
ENDIF.

IF zcat-fieldname = 'ISTABLART_EAI_EAIHP'.
zcat-ddictxt = 'L'.
zcat-seltext_l = 'Cat. Rel. EAI/EAIHP'.
ENDIF.

IF zcat-fieldname = 'ISTABLART_EAIHL'.
zcat-ddictxt = 'L'.
zcat-seltext_l = 'Cat. Rel. EAIHL'.
ENDIF.

IF zcat-fieldname = 'ISTABLART_EAIHC'.
zcat-ddictxt = 'L'.
zcat-seltext_l = 'Cat. Rel EAIHC'.
ENDIF.

IF zcat-fieldname = 'ISTABLART_EAITT'.
zcat-ddictxt = 'L'.
zcat-seltext_l = 'Cat. Rel EAITT'.
ENDIF.

IF zcat-fieldname = 'ISTABLART_PAI'.
zcat-ddictxt = 'L'.
zcat-seltext_l = 'Cat. Rel PAI'.
ENDIF.

IF zcat-fieldname = 'STATUT_EAI_EAIHP'.
zcat-ddictxt = 'L'.
zcat-seltext_l = 'Statut EAI/EAIHP'.
ENDIF.

IF zcat-fieldname = 'STATUT_EAIHL'.
zcat-ddictxt = 'L'.
zcat-seltext_l = 'Statut EAIHL'.
ENDIF.

IF zcat-fieldname = 'STATUT_EAIHC'.
zcat-ddictxt = 'L'.
zcat-seltext_l = 'Statut EAIHC'.
ENDIF.

IF zcat-fieldname = 'STATUT_EAITT'.
zcat-ddictxt = 'L'.
zcat-seltext_l = 'Statut EAITT'.
ENDIF.

IF zcat-fieldname = 'STATUT_PAI'.
zcat-ddictxt = 'L'.
zcat-seltext_l = 'Statut PAI'.
ENDIF.

IF zcat-fieldname = 'NOTICE_EAI_EAIHP'.
zcat-ddictxt = 'L'.
zcat-seltext_l = 'NOTICE EAI/EAIHP'.
ENDIF.

IF zcat-fieldname = 'NOTICE_EAIHL'.
zcat-ddictxt = 'L'.
zcat-seltext_l = 'NOTICE EAIHL'.
ENDIF.

IF zcat-fieldname = 'NOTICE_EAIHC'.
zcat-ddictxt = 'L'.
zcat-seltext_l = 'NOTICE EAIHC'.
ENDIF.

IF zcat-fieldname = 'NOTICE_EAITT'.
zcat-ddictxt = 'L'.
zcat-seltext_l = 'NOTICE EAITT'.
ENDIF.

IF zcat-fieldname = 'NOTICE_PAI'.
zcat-ddictxt = 'L'.
zcat-seltext_l = 'NOTICE PAI'.
ENDIF.

MODIFY gt_fieldcat FROM zcat.


ENDLOOP.
*&---------------------------------------------------------------------
*& Affichage ---------------------------------------------------------
*&---------------------------------------------------------------------
* lc_glay-edt_cll_cb = 'X'.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'


EXPORTING
i_background_id = 'BACKONE'
i_callback_program = sy-repid
i_callback_pf_status_set = 'STAT'
i_callback_user_command = 'COMMANDES'
i_callback_top_of_page = 'TOP'
is_layout = gs_layout
it_fieldcat = gt_fieldcat
it_sort = gs_sort
i_grid_settings = lc_glay
TABLES
t_outtab = gt_data
EXCEPTIONS
program_error = 1
OTHERS = 2.

IF sy-subrc <> 0.
MESSAGE e208(00) WITH 'Erreur affichage ALV'.
ENDIF.

*&---------------------------------------------------------------------
*& Status -------------------------------------------------------------
*&---------------------------------------------------------------------
FORM stat USING extab TYPE slis_t_extab.
SET PF-STATUS 'PF01' EXCLUDING extab.
ENDFORM. "stat

*&---------------------------------------------------------------------
*& Commandes ----------------------------------------------------------
*&---------------------------------------------------------------------
FORM commandes USING rf_ucomm
LIKE sy-ucomm rs_selfield TYPE slis_selfield.
CASE rf_ucomm.
WHEN OTHERS.
READ TABLE gt_data INDEX rs_selfield-tabindex.
if rs_selfield-fieldname eq 'VERTRAG'.
CALL FUNCTION 'ISU_S_CONTRACT_DISPLAY'
EXPORTING
X_VERTRAG = gt_data-vertrag
EXCEPTIONS
NOT_FOUND = 1
KEY_INVALID = 2
SYSTEM_ERROR = 3
NOT_AUTHORIZED = 4
OTHERS = 5.
endif.

ENDCASE.
ENDFORM. "commandes

* top
FORM top.
free gt_list_top_of_page.
* Entete
CLEAR ztop.
ztop-typ = 'H'.
ztop-info = 'SRM - Résultats de relevé BT'.
APPEND ztop TO gt_list_top_of_page.

* lignes type s
CLEAR ztop.
ztop-typ = 'S'.
ztop-key = 'Nombre de lignes : '.
ztop-info = gv_lines.
APPEND ztop TO gt_list_top_of_page.

CLEAR ztop.
ztop-typ = 'S'.
APPEND ztop TO gt_list_top_of_page.
APPEND ztop TO gt_list_top_of_page.
APPEND ztop TO gt_list_top_of_page.

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'


EXPORTING
it_list_commentary = gt_list_top_of_page
i_logo = 'LOGOONE'
i_end_of_list_grid = space.

ENDFORM. "top

Program 4 : ZSRM_FILE_REL_BT - Création fichier résultats de relevé BT

*&---------------------------------------------------------------------
*& Auteur : Hassan ABOUBAKR
*&----------------------------------------------------------------------
*& Description : Projet SRM : Création fichier résultats relevé BT
*&
*&
*&----------------------------------------------------------------------
*& Historique des modifications
*&----------------------------------------------------------------------
*& Date ! Auteur ! Description
*& ! !
*$ ! !
*&----------------------------------------------------------------------

report ZSRM_FILE_RESULT_RELEVE_BT
NO STANDARD PAGE HEADING line-size 200.
TYPE-POOLS: slis,truxs,sccr.

tables : fkkvkp,ZSRM_RELEVE_BT,ever.

*&----------------------------------------------------------------------
* Ecran de sélection
*&----------------------------------------------------------------------
selection-screen begin of block b1 with frame title text-001.
*select-options s_gsber for fkkvkp-gsber OBLIGATORY.
PARAMETERS pgsber like fkkvkp-gsber OBLIGATORY.
select-options s_gsr for fkkvkp-regiogr_ca_t.
SELECT-OPTIONS s_ur for ZSRM_RELeve_BT-ableinh.
SELECT-OPTIONS s_inst for ZSRM_RELeve_BT-anlage.
SELECT-OPTIONS s_cont for ever-vertrag.
SELECT-OPTIONS s_drp for ZSRM_RELeve_BT-adatsoll.
selection-screen end of block b1.

selection-screen begin of block b2 WITH FRAME TITLE text-020.


SELECTION-SCREEN BEGIN OF LINE .
PARAMETERS FICH RADIOBUTTON GROUP GRES DEFAULT 'X' USER-COMMAND GRES.
SELECTION-SCREEN COMMENT 5(40) TEXT-P02 .
SELECTION-SCREEN END OF LINE .
parameters pfile(128) DEFAULT '/INTERFACES/SIRIUS/SRM/'.

SELECTION-SCREEN skip 1.

SELECTION-SCREEN BEGIN OF LINE .


PARAMETERS floc RADIOBUTTON GROUP GRES .
SELECTION-SCREEN COMMENT 5(40) TEXT-P03 .
SELECTION-SCREEN END OF LINE .
parameters ploc type string.

SELECTION-SCREEN skip 1.

SELECTION-SCREEN BEGIN OF LINE .


PARAMETERS alv RADIOBUTTON GROUP GRES.
SELECTION-SCREEN COMMENT 5(40) TEXT-P04.
SELECTION-SCREEN END OF LINE .

selection-screen end of block b2.

*&----------------------------------------------------------------------
* Variables, structures et tables internes
*&----------------------------------------------------------------------
data gt_data type STANDARD TABLE OF ZSRM_releve_bt WITH HEADER LINE.

data : begin of gt_conv OCCURS 0,


ANN_HIS_CSO(4),
PER_HIS_CSO(2),
DAT_RLV_CSO(8),
DAT_HRE_RLV_CSO(8),
COD_ORI_IDX_CSO(2),
NUM_ITV_ORI_MAJ_CSO(4),
COD_ANN_RLV_CSO(2),
COD_ANO_RLV_CSO(2),
IND_ANA_CSO(1),
VAL_IDX_CDR1(9),
VOL_CSO_CDR1(46),
VOL_FAC_CDR1(46),
VAL_IDX_CDR2(9),
VOL_CSO_CDR2(46),
VOL_FAC_CDR2(46),
VAL_IDX_CDR3(9),
VOL_CSO_CDR3(46),
VOL_FAC_CDR3(46),
NUM_APT_ORI(18),
NUM_PL_ORI(10),
NUM_CTA_ORI(10),
CMT_CSO(100),
VAL_IDX_CDR4(9),
VOL_CSO_CDR4(46),
VOL_FAC_CDR4(46),
VAL_IDX_CDR5(9),
VOL_CSO_CDR5(46),
VOL_FAC_CDR5(46),
A1(20),
A2(50),
* A3(20),
* A4(60),
* A5(20),
* A6(40),
* A7(20),
* A8(50),
A9(20),
A10(50),
A11(20),
A12(50),
A13(20),
A14(50),
A15(20),
A16(50),
A17(20),
A18(50),
A19(20),
A20(50),
A21(20),
A22(50),
A23(20),
A24(50),
A25(20),
A26(50),
A27(20),
A28(50),
A29(2),
A30(50),
A31(2),
A32(50),
A33(2),
A34(50),
A35(2),
A36(50),
A37(2),
A38(50),
end of gt_conv.

data : begin of gs_entete,


ANN_HIS_CSO type string value 'ANN_HIS_CSO',
PER_HIS_CSO type string value 'PER_HIS_CSO',
DAT_RLV_CSO type string value 'DAT_RLV_CSO',
DAT_HRE_RLV_CSO type string value 'DAT_HRE_RLV_CSO',
COD_ORI_IDX_CSO type string value 'COD_ORI_IDX_CSO',
NUM_ITV_ORI_MAJ_CSO type string value 'NUM_ITV_ORI_MAJ_CSO',
COD_ANN_RLV_CSO type string value 'COD_ANN_RLV_CSO',
COD_ANO_RLV_CSO type string value 'COD_ANO_RLV_CSO',
IND_ANA_CSO type string value 'IND_ANA_CSO',
VAL_IDX_CDR1 type string value 'VAL_IDX_CDR1',
VOL_CSO_CDR1 type string value 'VOL_CSO_CDR1',
VOL_FAC_CDR1 type string value 'VOL_FAC_CDR1',
VAL_IDX_CDR2 type string value 'VAL_IDX_CDR2',
VOL_CSO_CDR2 type string value 'VOL_CSO_CDR2',
VOL_FAC_CDR2 type string value 'VOL_FAC_CDR2',
VAL_IDX_CDR3 type string value 'VAL_IDX_CDR3',
VOL_CSO_CDR3 type string value 'VOL_CSO_CDR3',
VOL_FAC_CDR3 type string value 'VOL_FAC_CDR3',
NUM_APT_ORI type string value 'NUM_APT_ORI',
NUM_PL_ORI type string value 'NUM_PL_ORI',
NUM_CTA_ORI type string value 'NUM_CTA_ORI',
CMT_CSO type string value 'CMT_CSO',
VAL_IDX_CDR4 type string value 'VAL_IDX_CDR4',
VOL_CSO_CDR4 type string value 'VOL_CSO_CDR4',
VOL_FAC_CDR4 type string value 'VOL_FAC_CDR4',
VAL_IDX_CDR5 type string value 'VAL_IDX_CDR5',
VOL_CSO_CDR5 type string value 'VOL_CSO_CDR5',
VOL_FAC_CDR5 type string value 'VOL_FAC_CDR5',
A1 type string value 'A1',
A2 type string value 'A2',
* A3 type string value 'A3',
* A4 type string value 'A4',
* A5 type string value 'A5',
* A6 type string value 'A6',
* A7 type string value 'A7',
* A8 type string value 'A8',
A9 type string value 'A9',
A10 type string value 'A10',
A11 type string value 'A11',
A12 type string value 'A12',
A13 type string value 'A13',
A14 type string value 'A14',
A15 type string value 'A15',
A16 type string value 'A16',
A17 type string value 'A17',
A18 type string value 'A18',
A19 type string value 'A19',
A20 type string value 'A20',
A21 type string value 'A21',
A22 type string value 'A22',
A23 type string value 'A23',
A24 type string value 'A24',
A25 type string value 'A25',
A26 type string value 'A26',
A27 type string value 'A27',
A28 type string value 'A28',
A29 type string value 'A29',
A30 type string value 'A30',
A31 type string value 'A31',
A32 type string value 'A32',
A33 type string value 'A33',
A34 type string value 'A34',
A35 type string value 'A35',
A36 type string value 'A36',
A37 type string value 'A37',
A38 type string value 'A38',
end of gs_entete.

data gt_entete like gs_entete occurs 0 WITH HEADER LINE.

data gt_alv like gt_conv occurs 0 WITH HEADER LINE.

data w_fich(128).
DATA tab_ent TYPE truxs_t_text_data.
DATA tab_txt TYPE truxs_t_text_data.
data str_entete(4096) type c.
FIELD-SYMBOLS <fsf>.
data w_lines type i.
ranges r_gsr for fkkvkp-regiogr_ca_t.
data gv_cpt TYPE i.

DATA last_doc TYPE eabl-ablbelnr.

DATA gs_fieldcat TYPE slis_t_fieldcat_alv.


DATA gs_sort TYPE slis_t_sortinfo_alv.
DATA zsort TYPE slis_sortinfo_alv.
DATA zcat TYPE slis_fieldcat_alv.
DATA: gt_list_top_of_page TYPE slis_t_listheader.
DATA: ztop TYPE slis_listheader.
DATA lc_glay TYPE lvc_s_glay.
DATA: gs_layout TYPE slis_layout_alv .
DATA w_date LIKE sy-datum.
data gv_type.
data gv_cnt type p DECIMALS 0.
data gv_nb type p DECIMALS 0.
ranges r_numord for eabl-ablbelnr.

*&----------------------------------------------------------------------
INITIALIZATION.
*&----------------------------------------------------------------------

*&----------------------------------------------------------------------
START-OF-SELECTION.
*&----------------------------------------------------------------------
SELECT single region into @data(gv_region) from zsrm_dr
WHERE gsber eq @pgsber.

if sy-subrc ne 0.
MESSAGE s398(00) with 'Direction régionale non codifiée pour SRM'
DISPLAY LIKE 'E'.
exit.
endif.

gv_type = 'E'.

if ( s_gsr[] is INITIAL or
( line_exists( s_gsr[ low = '*' sign = 'I' option = 'CP' ] )
and lines( s_gsr ) eq 1 ) ) and
( s_ur[] is INITIAL or
( line_exists( s_ur[ low = '*' sign = 'I' option = 'CP' ] )
and lines( s_ur ) eq 1 ) ) and
( s_cont[] is INITIAL or
( line_exists( s_cont[ low = '*' sign = 'I' option = 'CP' ] )
and lines( s_cont ) eq 1 ) ) and
( s_drp[] is INITIAL or
( line_exists( s_drp[ low = '*' sign = 'I' option = 'CP' ] )
and lines( s_drp ) eq 1 ) ) and
( s_inst[] is INITIAL or
( line_exists( s_inst[ low = '*' sign = 'I' option = 'CP' ] )
and lines( s_inst ) eq 1 ) ).
gv_type = 'C'.
endif.

*&----------------------------------------------------------------------
* Contrôle autorisation GSR
*&----------------------------------------------------------------------
select REGIOGROUP into TABLE @data(gt_gsr)
from ADRREGGRP where regiogroup in @s_gsr.

if gt_gsr[] is INITIAL.
message s398(00) with 'GSR(s) inexistant(s)' DISPLAY LIKE 'E'.
exit.
endif.

loop at gt_gsr ASSIGNING FIELD-SYMBOL(<fs_gsr>).


CALL FUNCTION 'ZSISU_AUTHORITY_CHECK_REGIOGR'
EXPORTING
x_activity = '3'
X_REGIOCR_T = <fs_gsr>-regiogroup
EXCEPTIONS
authority_not_given = 1
others = 99.

if sy-subrc = 1.
delete gt_gsr.
endif.
endloop.

if gt_gsr[] is INITIAL.
message s398(00) with 'Prob autorisation GSR' DISPLAY LIKE 'E'.
exit.
endif.

free r_gsr.
CLEAR r_gsr.
r_gsr-sign = 'I'.
r_gsr-option = 'EQ'.

loop at gt_gsr into data(gs_gsr).


r_gsr-low = gs_gsr-regiogroup.
APPEND r_gsr.
ENDLOOP.

*********************** sélection données


if fich eq 'X'.
concatenate pfile gv_type '_' gv_region '_BE_INDEX_CONSO_BT_'
sy-datum sy-uzeit '.CSV' into w_fich.

OPEN DATASET w_fich FOR OUTPUT IN TEXT MODE ENCODING UTF-8.


if sy-subrc ne 0.
message s398(00) with 'Erreur d''ouverture du fichier' w_fich
DISPLAY LIKE 'E'.
exit.
endif.

close DATASET w_fich.


OPEN DATASET w_fich FOR APPENDING IN TEXT MODE ENCODING UTF-8.
endif.

if alv ne 'X'.
free gt_entete.
append gs_entete to gt_entete.

CALL FUNCTION 'SAP_CONVERT_TO_TEX_FORMAT'


EXPORTING
i_field_seperator = '|'
"cl_abap_char_utilities=>horizontal_tab
TABLES
i_tab_sap_data = gt_entete
CHANGING
i_tab_converted_data = tab_ent
EXCEPTIONS
conversion_failed = 1
OTHERS = 2.
endif.

if fich eq 'X'.
LOOP AT tab_ent ASSIGNING <fsf>.
TRANSFER <fsf> TO w_fich.
ENDLOOP.
endif.

if floc eq 'X'.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
FILENAME = ploc
append = ' '
TABLES
DATA_TAB = tab_ent.
endif.

***
select * into table @data(gt_TE609T)
from TE609T WHERE spras eq @sy-langu.

SELECT * into table @data(gt_TE436T)


from TE436T WHERE spras eq @sy-langu.

SELECT * INTO TABLE @data(gt_TE259T)


from TE259T WHERE spras eq @sy-langu.

***
clear last_doc.

free gt_alv.
clear : gv_cnt,gv_nb.

SELECT ABLBELNR INTO table @data(gt_numord)


from ZSRM_releve_bt
where anlage in @s_inst
and adatsoll in @s_drp
and gsber eq @pgsber "in s_gsber
and REGIOGR_CA_T in @s_gsr
and vertrag in @s_cont
and ableinh in @s_ur.

sort gt_numord by ablbelnr.


delete ADJACENT DUPLICATES FROM gt_numord COMPARING ablbelnr.

free r_numord.
clear r_numord.
r_numord-sign = 'I'.
r_numord-option = 'EQ'.

loop at gt_numord into data(gs_numord).


r_numord-low = gs_numord-ablbelnr.
APPEND r_numord.

add 1 to : gv_cnt,gv_nb.

check gv_cnt eq 1000 or gv_nb eq lines( gt_numord ).

SELECT * INTO table gt_data


from ZSRM_releve_bt
* where ablbelnr in r_numord.
FOR ALL ENTRIES IN r_numord
where ablbelnr eq r_numord-low.

PERFORM select_fact.

free r_numord.
clear r_numord.
r_numord-sign = 'I'.
r_numord-option = 'EQ'.
clear gv_cnt.
ENDLOOP.

***
if alv ne 'X'.
write :/5 'Date :',25 sy-datum.
write :/5 'Heure :',25 sy-uzeit.
skip 1.

if fich eq 'X'.
CLOSE DATASET w_fich.
write :/5 'Nom fichier :',25 w_fich.
else.
write :/5 'Nom fichier :',25 ploc.
endif.

write :/5 'Nombre de lignes :',25 w_lines.


else.
perform alv_display.
endif.

***********************
END-OF-SELECTION.

at selection-screen output.
if fich eq 'X'.
loop at screen.
if screen-name eq 'PLOC'.
clear ploc.
screen-input = 0.
MODIFY SCREEN.
endif.
endloop.
elseif floc eq 'X'.
loop at screen.
if screen-name eq 'PFILE'.
clear ploc.
screen-input = 0.
MODIFY SCREEN.
endif.
endloop.
else.
loop at screen.
if screen-name eq 'PFILE' or
screen-name eq 'PLOC'.
clear ploc.
screen-input = 0.
MODIFY SCREEN.
endif.
endloop.
endif.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR Ploc.


data ploc2 type IBIPPARMS-PATH.

if floc eq 'X'.
CALL FUNCTION 'F4_FILENAME'
EXPORTING
PROGRAM_NAME = SYST-CPROG
DYNPRO_NUMBER = SYST-DYNNR
FIELD_NAME = 'PLOC'
IMPORTING
FILE_NAME = Ploc2.

ploc = ploc2.
endif.
*&---------------------------------------------------------------------*
*& Form CONV_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM CONV_DATA .
data lv_ablstat type DD07V-DOMVALUE_L.
data lv_ablstatt type DD07V-DDTEXT.

free gt_conv.

loop at gt_data.
clear gt_conv.

gt_conv-ANN_HIS_CSO = gt_data-adat(4).
gt_conv-PER_HIS_CSO = gt_data-adat+4(2).

gt_conv-DAT_RLV_CSO = |{ gt_data-adat+6(2) }| &


|{ gt_data-adat+4(2) }| &
|{ gt_data-adat(4) }|.

if NOT gt_data-aedat IS INITIAL.


gt_conv-DAT_HRE_RLV_CSO = |{ gt_data-aedat+6(2) }| &
|{ gt_data-aedat+4(2) }| &
|{ gt_data-aedat(4) }|.
endif.

write gt_data-Index_eai_eaihp to gt_conv-VAL_IDX_CDR1


NO-GROUPING DECIMALS 0 RIGHT-JUSTIFIED.

write gt_data-CONS_EAI_EAIHP to gt_conv-VOL_CSO_CDR1


NO-GROUPING DECIMALS 0 RIGHT-JUSTIFIED.

write gt_data-CONS_EAI_EAIHP_FACT to gt_conv-VOL_FAC_CDR1


NO-GROUPING DECIMALS 0 RIGHT-JUSTIFIED.

write gt_data-Index_eaihl to gt_conv-VAL_IDX_CDR2


NO-GROUPING DECIMALS 0.

write gt_data-CONS_EAIHL to gt_conv-VOL_CSO_CDR2


NO-GROUPING DECIMALS 0 RIGHT-JUSTIFIED.

write gt_data-CONS_EAIHL_FACT to gt_conv-VOL_FAC_CDR2


NO-GROUPING DECIMALS 0 RIGHT-JUSTIFIED.

write gt_data-Index_eaihc to gt_conv-VAL_IDX_CDR3


NO-GROUPING DECIMALS 0.

write gt_data-CONS_EAIHC to gt_conv-VOL_CSO_CDR3


NO-GROUPING DECIMALS 0 RIGHT-JUSTIFIED.

write gt_data-CONS_EAIHC_FACT to gt_conv-VOL_FAC_CDR3


NO-GROUPING DECIMALS 0 RIGHT-JUSTIFIED.

write gt_data-Index_eaitt to gt_conv-VAL_IDX_CDR4


NO-GROUPING DECIMALS 0.

write gt_data-CONS_EAITT to gt_conv-VOL_CSO_CDR4


NO-GROUPING DECIMALS 0 RIGHT-JUSTIFIED.

write gt_data-CONS_EAITT_FACT to gt_conv-VOL_FAC_CDR4


NO-GROUPING DECIMALS 0 RIGHT-JUSTIFIED.

write gt_data-Index_pai to gt_conv-VAL_IDX_CDR5


NO-GROUPING DECIMALS 0.

write gt_data-CONS_PAI to gt_conv-VOL_CSO_CDR5


NO-GROUPING DECIMALS 7 RIGHT-JUSTIFIED.

write gt_data-CONS_PAI_FACT to gt_conv-VOL_FAC_CDR5


NO-GROUPING DECIMALS 7 RIGHT-JUSTIFIED.

gt_conv-NUM_APT_ORI = gt_data-equnr.
gt_conv-NUM_PL_ORI = gt_data-anlage.
gt_conv-NUM_CTA_ORI = gt_data-vertrag.

gt_conv-A1 = gt_data-ablesgr.
gt_conv-A2 = GT_TE609T[ ablesgr = gt_data-ablesgr ]-text40.

* if not gt_data-ablstat is INITIAL.


* gt_conv-A3 = gt_data-ablstat.
*
* clear : lv_ablstat,lv_ablstatt.
*
* lv_ablstat = gt_data-ablstat.
*
* CALL FUNCTION 'C_DIC_DOMAIN_VALUE_TEXT_READ'
* EXPORTING
* NAME = 'ABLSTAT'
* SPRAS = 'F'
* VALUE = lv_ablstat
* IMPORTING
* TEXT = lv_ablstatt
* EXCEPTIONS
* NOT_FOUND = 1
* OTHERS = 2.
*
* gt_conv-A4 = lv_ablstatt.
* else.
gt_conv-A9 = gt_data-statut_eai_eaihp.

clear : lv_ablstat,lv_ablstatt.

lv_ablstat = gt_data-statut_eai_eaihp.

CALL FUNCTION 'C_DIC_DOMAIN_VALUE_TEXT_READ'


EXPORTING
NAME = 'ABLSTAT'
SPRAS = 'F'
VALUE = lv_ablstat
IMPORTING
TEXT = lv_ablstatt
EXCEPTIONS
NOT_FOUND = 1
OTHERS = 2.

gt_conv-A10 = lv_ablstatt.
gt_conv-A11 = gt_data-statut_eaihl.

clear : lv_ablstat,lv_ablstatt.

lv_ablstat = gt_data-statut_eaihl.

CALL FUNCTION 'C_DIC_DOMAIN_VALUE_TEXT_READ'


EXPORTING
NAME = 'ABLSTAT'
SPRAS = 'F'
VALUE = lv_ablstat
IMPORTING
TEXT = lv_ablstatt
EXCEPTIONS
NOT_FOUND = 1
OTHERS = 2.

gt_conv-A12 = lv_ablstatt.

gt_conv-A13 = gt_data-statut_eaihc.

clear : lv_ablstat,lv_ablstatt.

lv_ablstat = gt_data-statut_eaihc.

CALL FUNCTION 'C_DIC_DOMAIN_VALUE_TEXT_READ'


EXPORTING
NAME = 'ABLSTAT'
SPRAS = 'F'
VALUE = lv_ablstat
IMPORTING
TEXT = lv_ablstatt
EXCEPTIONS
NOT_FOUND = 1
OTHERS = 2.

gt_conv-A14 = lv_ablstatt.

gt_conv-A15 = gt_data-statut_eaitt.

clear : lv_ablstat,lv_ablstatt.

lv_ablstat = gt_data-statut_eaitt.

CALL FUNCTION 'C_DIC_DOMAIN_VALUE_TEXT_READ'


EXPORTING
NAME = 'ABLSTAT'
SPRAS = 'F'
VALUE = lv_ablstat
IMPORTING
TEXT = lv_ablstatt
EXCEPTIONS
NOT_FOUND = 1
OTHERS = 2.

gt_conv-A16 = lv_ablstatt.
gt_conv-A17 = gt_data-statut_pai.

clear : lv_ablstat,lv_ablstatt.

lv_ablstat = gt_data-statut_pai.

CALL FUNCTION 'C_DIC_DOMAIN_VALUE_TEXT_READ'


EXPORTING
NAME = 'ABLSTAT'
SPRAS = 'F'
VALUE = lv_ablstat
IMPORTING
TEXT = lv_ablstatt
EXCEPTIONS
NOT_FOUND = 1
OTHERS = 2.

gt_conv-A18 = lv_ablstatt.
* endif.

* if not gt_data-istablart is INITIAL.


* gt_conv-A5 = gt_data-istablart.
* gt_conv-A6 = GT_TE436T[ istablart = gt_data-istablart ]-text40.
* else.
gt_conv-A29 = gt_data-ISTABLART_EAI_EAIHP.

if not gt_data-ISTABLART_EAI_EAIHP is INITIAL.


gt_conv-A30 = GT_TE436T[ istablart =
gt_data-ISTABLART_EAI_EAIHP ]-text40.
endif.
* endif.

gt_conv-A31 = gt_data-ISTABLART_EAIHL.

if line_exists( GT_TE436T[ istablart = gt_data-ISTABLART_EAIHL ] ).


gt_conv-A32 = GT_TE436T[ istablart =
gt_data-ISTABLART_EAIHL ]-text40.
endif.

gt_conv-A33 = gt_data-ISTABLART_EAIHC.

if line_exists( GT_TE436T[ istablart = gt_data-ISTABLART_EAIHC ] ).


gt_conv-A34 = GT_TE436T[ istablart =
gt_data-ISTABLART_EAIHC ]-text40.
endif.

gt_conv-A35 = gt_data-ISTABLART_EAITT.

if line_exists( GT_TE436T[ istablart = gt_data-ISTABLART_EAITT ] ).


gt_conv-A36 = GT_TE436T[ istablart =
gt_data-ISTABLART_EAITT ]-text40.
endif.

if line_exists( GT_TE436T[ istablart = gt_data-ISTABLART_PAI ] ).


gt_conv-A37 = gt_data-ISTABLART_PAI.
gt_conv-A38 = GT_TE436T[ istablart =
gt_data-ISTABLART_PAI ]-text40.
endif.

* if not gt_data-ablhinw is INITIAL.


* gt_conv-A7 = gt_data-ablhinw.
* gt_conv-A8 = GT_TE259T[ ablhinw = gt_data-ablhinw ]-TABLHINW.
* else.
if not gt_data-NOTICE_EAI_EAIHP is INITIAL.
gt_conv-A19 = gt_data-NOTICE_EAI_EAIHP.
gt_conv-A20 = GT_TE259T[ ablhinw =
gt_data-NOTICE_EAI_EAIHP ]-TABLHINW.
endif.
if not gt_data-NOTICE_EAIHL is INITIAL.
gt_conv-A21 = gt_data-NOTICE_EAIHL.
gt_conv-A22 = GT_TE259T[ ablhinw =
gt_data-NOTICE_EAIHL ]-TABLHINW.
endif.
if not gt_data-NOTICE_EAIHC is INITIAL.
gt_conv-A23 = gt_data-NOTICE_EAIHC.
gt_conv-A24 = GT_TE259T[ ablhinw =
gt_data-NOTICE_EAIHC ]-TABLHINW.
endif.
if not gt_data-NOTICE_EAITT is INITIAL.
gt_conv-A25 = gt_data-NOTICE_EAITT.
gt_conv-A26 = GT_TE259T[ ablhinw =
gt_data-NOTICE_EAITT ]-TABLHINW.
endif.
if not gt_data-NOTICE_PAI is INITIAL.
gt_conv-A27 = gt_data-NOTICE_PAI.
gt_conv-A28 = GT_TE259T[ ablhinw =
gt_data-NOTICE_PAI ]-TABLHINW.
endif.
* ENDIF.

append gt_conv.
endloop.

if alv eq 'X'.
APPEND LINES OF gt_conv to gt_alv.
endif.

if alv ne 'X'.
CALL FUNCTION 'SAP_CONVERT_TO_TEX_FORMAT'
EXPORTING
i_field_seperator = '|'
"cl_abap_char_utilities=>horizontal_tab
TABLES
i_tab_sap_data = gt_conv
CHANGING
i_tab_converted_data = tab_txt
EXCEPTIONS
conversion_failed = 1
OTHERS = 2.

IF sy-subrc NE 0.
MESSAGE e398(00) WITH 'Erreur conversion TXT'.
ENDIF.
endif.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form SELECT_FACT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM SELECT_FACT .

PERFORM conv_data.

DESCRIBE TABLE gt_data.

add sy-tfill to w_lines.

***************************************************************
* Fichier serveur
***************************************************************
if fich eq 'X'.
LOOP AT tab_txt ASSIGNING <fsf>.
TRANSFER <fsf> TO w_fich.
ENDLOOP.
endif.

******************************************************************
* Fichier local
******************************************************************
if floc eq 'X'.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
FILENAME = ploc
append = 'X'
TABLES
DATA_TAB = tab_txt.
endif.
ENDFORM.

*&---------------------------------------------------------------------*
*& Form ALV_DISPLAY
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM ALV_DISPLAY .
*& Design -------------------------------------------------------------
gs_layout-zebra = 'X'.
gs_layout-window_titlebar =
'Projet SRM : Résultats relevé BT'.
gs_layout-colwidth_optimize = 'X'.
*gs_layout-coltab_fieldname = 'CELLCOLOR'.

* zsort-group = 'X'.
* CLEAR zsort-up.

*& Catalogue ----------------------------------------------------------


REFRESH gs_fieldcat.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_program_name = sy-repid
i_internal_tabname = 'GT_CONV'
i_inclname = sy-repid
CHANGING
ct_fieldcat = gs_fieldcat
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.

LOOP AT gs_fieldcat INTO zcat.


CLEAR zcat-key.
zcat-ddictxt = 'L'.

case zcat-fieldname.

when 'ANN_HIS_CSO'. zcat-seltext_l = 'ANN_HIS_CSO'.


when 'PER_HIS_CSO'. zcat-seltext_l = 'PER_HIS_CSO'.
when 'DAT_RLV_CSO'. zcat-seltext_l = 'DAT_RLV_CSO'.
when 'DAT_HRE_RLV_CSO'. zcat-seltext_l = 'DAT_HRE_RLV_CSO'.
when 'COD_ORI_IDX_CSO'. zcat-seltext_l = 'COD_ORI_IDX_CSO'.
when 'NUM_ITV_ORI_MAJ_CSO'.
zcat-seltext_l = 'NUM_ITV_ORI_MAJ_CSO'.
when 'COD_ANN_RLV_CSO'. zcat-seltext_l = 'COD_ANN_RLV_CSO'.
when 'COD_ANO_RLV_CSO'. zcat-seltext_l = 'COD_ANO_RLV_CSO'.
when 'IND_ANA_CSO'. zcat-seltext_l = 'IND_ANA_CSO'.
when 'VAL_IDX_CDR1'. zcat-seltext_l = 'VAL_IDX_CDR1'.
when 'VOL_CSO_CDR1'. zcat-seltext_l = 'VOL_CSO_CDR1'.
when 'VOL_FAC_CDR1'. zcat-seltext_l = 'VOL_FAC_CDR1'.
when 'VAL_IDX_CDR2'. zcat-seltext_l = 'VAL_IDX_CDR2'.
when 'VOL_CSO_CDR2'. zcat-seltext_l = 'VOL_CSO_CDR2'.
when 'VOL_FAC_CDR2'. zcat-seltext_l = 'VOL_FAC_CDR2'.
when 'VAL_IDX_CDR3'. zcat-seltext_l = 'VAL_IDX_CDR3'.
when 'VOL_CSO_CDR3'. zcat-seltext_l = 'VOL_CSO_CDR3'.
when 'VOL_FAC_CDR3'. zcat-seltext_l = 'VOL_FAC_CDR3'.
when 'NUM_APT_ORI'. zcat-seltext_l = 'NUM_APT_ORI'.
when 'NUM_PL_ORI'. zcat-seltext_l = 'NUM_PL_ORI'.
when 'NUM_CTA_ORI'. zcat-seltext_l = 'NUM_CTA_ORI'.
when 'CMT_CSO'. zcat-seltext_l = 'CMT_CSO'.
when 'VAL_IDX_CDR4'. zcat-seltext_l = 'VAL_IDX_CDR4'.
when 'VOL_CSO_CDR4'. zcat-seltext_l = 'VOL_CSO_CDR4'.
when 'VOL_FAC_CDR4'. zcat-seltext_l = 'VOL_FAC_CDR4'.
when 'VAL_IDX_CDR5'. zcat-seltext_l = 'VAL_IDX_CDR5'.
when 'VOL_CSO_CDR5'. zcat-seltext_l = 'VOL_CSO_CDR5'.
when 'VOL_FAC_CDR5'. zcat-seltext_l = 'VOL_FAC_CDR5'.
when 'A1'. zcat-seltext_l = 'A1'.
when 'A2'. zcat-seltext_l = 'A2'.
* when 'A3'. zcat-seltext_l = 'A3'.
* when 'A4'. zcat-seltext_l = 'A4'.
* when 'A5'. zcat-seltext_l = 'A5'.
* when 'A6'. zcat-seltext_l = 'A6'.
* when 'A7'. zcat-seltext_l = 'A7'.
* when 'A8'. zcat-seltext_l = 'A8'.
when 'A9'. zcat-seltext_l = 'A9'.
when 'A10'. zcat-seltext_l = 'A10'.
when 'A11'. zcat-seltext_l = 'A11'.
when 'A12'. zcat-seltext_l = 'A12'.
when 'A13'. zcat-seltext_l = 'A13'.
when 'A14'. zcat-seltext_l = 'A14'.
when 'A15'. zcat-seltext_l = 'A15'.
when 'A16'. zcat-seltext_l = 'A16'.
when 'A17'. zcat-seltext_l = 'A17'.
when 'A18'. zcat-seltext_l = 'A18'.
when 'A19'. zcat-seltext_l = 'A19'.
when 'A20'. zcat-seltext_l = 'A20'.
when 'A21'. zcat-seltext_l = 'A21'.
when 'A22'. zcat-seltext_l = 'A22'.
when 'A23'. zcat-seltext_l = 'A23'.
when 'A24'. zcat-seltext_l = 'A24'.
when 'A25'. zcat-seltext_l = 'A25'.
when 'A26'. zcat-seltext_l = 'A26'.
when 'A27'. zcat-seltext_l = 'A27'.
when 'A28'. zcat-seltext_l = 'A28'.
when 'A29'. Zcat-seltext_l = 'A29'.
when 'A30'. Zcat-seltext_l = 'A30'.
when 'A31'. Zcat-seltext_l = 'A31'.
when 'A32'. Zcat-seltext_l = 'A32'.
when 'A33'. Zcat-seltext_l = 'A33'.
when 'A34'. Zcat-seltext_l = 'A34'.
when 'A35'. Zcat-seltext_l = 'A35'.
when 'A36'. Zcat-seltext_l = 'A36'.
when 'A37'. Zcat-seltext_l = 'A37'.
when 'A38'. Zcat-seltext_l = 'A38'.
ENDCASE.

IF zcat-fieldname = 'REGIOGR_CA_T'.
zcat-ddictxt = 'L'.
zcat-seltext_l = 'GSR'.
ENDIF.

MODIFY gs_fieldcat FROM zcat.


ENDLOOP.

*& Affichage ---------------------------------------------------------


* lc_glay-edt_cll_cb = 'X'.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_background_id = 'BACKONE'
i_callback_program = sy-repid
i_callback_pf_status_set = 'STAT'
i_callback_user_command = 'COMMANDES'
i_callback_top_of_page = 'TOP'
is_layout = gs_layout
it_fieldcat = gs_fieldcat
* it_sort = gs_gs_sort
i_grid_settings = lc_glay
TABLES
t_outtab = gt_alv
EXCEPTIONS
program_error = 1
OTHERS = 2.

IF sy-subrc <> 0.
MESSAGE e208(00) WITH 'Erreur ALV'.
ENDIF.
ENDFORM.
*& Status -------------------------------------------------------------
FORM stat USING extab TYPE slis_t_extab.
SET PF-STATUS 'PF01' EXCLUDING extab.
ENDFORM. "stat

*& Commandes ----------------------------------------------------------


FORM commandes USING rf_ucomm
LIKE sy-ucomm rs_selfield TYPE slis_selfield.
CASE rf_ucomm.
WHEN OTHERS.
READ TABLE gt_data INDEX rs_selfield-tabindex.

ENDCASE.
ENDFORM. "commandes

* top
FORM top.
REFRESH gt_list_top_of_page.
* Entete
CLEAR ztop.
ztop-typ = 'H'.
ztop-info = 'Projet SRM : Résultats relevé BT'.
APPEND ztop TO gt_list_top_of_page.

* lignes type s
CLEAR ztop.
ztop-typ = 'S'.
APPEND ztop TO gt_list_top_of_page.

CLEAR ztop.
ztop-typ = 'S'.
ztop-key = 'Nombre de lignes :'.
ztop-info = w_lines.
APPEND ztop TO gt_list_top_of_page.

* lignes type A
CLEAR ztop.
ztop-typ = 'A'.
APPEND ztop TO gt_list_top_of_page.

CLEAR ztop.
ztop-typ = 'A'.
APPEND ztop TO gt_list_top_of_page.

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'


EXPORTING
it_list_commentary = gt_list_top_of_page
i_logo = 'LOGOONE'
i_end_of_list_grid = space.

ENDFORM. "top

You might also like