Files
DATA-Hawk/src/#deso#fg_dh_check.fugr.#deso#lfg_dh_checkf01.abap
2025-11-27 13:16:56 +00:00

683 lines
25 KiB
ABAP

*----------------------------------------------------------------------*
***INCLUDE /DESO/LFG_DH_CHECKF01.
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form read_data
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM read_data USING check_view TYPE /deso/dh_view
objtype TYPE /deso/dh_object
objkey TYPE edc_refkey
check_dev TYPE flag
check_pod_rel TYPE flag
gt_data TYPE /deso/dh_tt_data
add_data TYPE flag
gr_util_f TYPE REF TO /deso/dh_utilities.
INCLUDE ieobjtyp.
INCLUDE iestread.
INCLUDE ie00flag.
REFRESH ipath . CLEAR ipath .
REFRESH istruc . CLEAR istruc .
REFRESH ibcont . CLEAR ibcont .
REFRESH ieabl . CLEAR ieabl .
REFRESH ieablg . CLEAR ieablg .
REFRESH ieabp . CLEAR ieabp .
REFRESH ieadz . CLEAR ieadz .
REFRESH ieanl . CLEAR ieanl .
REFRESH ieasti . CLEAR ieasti .
REFRESH ieastih . CLEAR ieastih .
REFRESH ieastl . CLEAR ieastl .
REFRESH ieasts . CLEAR ieasts .
REFRESH ieaus . CLEAR ieaus .
REFRESH ieausv . CLEAR ieausv .
REFRESH ieein . CLEAR ieein .
REFRESH ieeinv . CLEAR ieeinv .
REFRESH ieger . CLEAR ieger .
REFRESH iegpl . CLEAR iegpl .
REFRESH iehau . CLEAR iehau .
REFRESH iekun . CLEAR iekun .
REFRESH ietdz . CLEAR ietdz .
REFRESH ietins . CLEAR ietins .
REFRESH iettif . CLEAR iettif .
REFRESH ievbs . CLEAR ievbs .
REFRESH iever . CLEAR iever .
REFRESH iezug . CLEAR iezug .
REFRESH iezuz . CLEAR iezuz .
REFRESH ifkkvkp . CLEAR ifkkvkp .
REFRESH ite420 . CLEAR ite420 .
REFRESH ite422 . CLEAR ite422 .
IF add_data IS INITIAL.
REFRESH gt_data .
ENDIF.
DATA ls_mess_data TYPE /deso/dh_message.
DATA lv_stop_readness TYPE flag.
DATA lv_add_data TYPE flag.
DATA lv_tmp_objkey LIKE objkey.
DATA lt_tmp_objkey LIKE TABLE OF objkey.
DATA lv_tmp_equnr TYPE equnr.
DATA lt_tmp_ezug LIKE TABLE OF iezug.
DATA lt_tmp_pod_rel TYPE /deso/dh_tt_pod_rel.
DATA lt_tmp_ezuz LIKE TABLE OF iezuz.
DATA lt_tmp_eger LIKE TABLE OF ieger.
DATA lt_tmp_euiinstln TYPE /deso/dh_tt_euiinstln.
DATA lv_pod_rel_tabname TYPE tabname.
DATA ls_pod_rel TYPE /deso/dh_s_pod_rel.
CLEAR lv_pod_rel_tabname.
SELECT COUNT(*) FROM dd02l WHERE tabname = '/IDXGC/POD_REL'.
IF sy-subrc EQ 0.
lv_pod_rel_tabname = '/IDXGC/POD_REL'.
ELSE.
SELECT COUNT(*) FROM dd02l WHERE tabname = '/UCOM/POD_REL'.
IF sy-subrc EQ 0.
lv_pod_rel_tabname = '/UCOM/POD_REL'.
ENDIF.
ENDIF.
CLEAR lv_stop_readness.
CASE objtype.
************************************************************************
WHEN co_objtype_partner.
* partner found
iekun-partner = objkey.
APPEND iekun.
* set path for structure reader
estr_add_ipath 'EKUN' 'FKKVKP' space.
estr_add_ipath 'FKKVKP' 'EVER' space.
estr_add_ipath 'EVER' 'EANL' space.
estr_add_ipath 'EANL' 'EASTL' space.
estr_add_ipath 'EANL' 'EVBS' space.
estr_add_ipath 'EANL' 'EASTS' space.
estr_add_ipath 'EASTL' 'EGER' space.
estr_add_ipath 'EGER' 'EGPL' space.
estr_add_ipath 'EGER' 'EZUG' '1'.
estr_add_ipath 'EGER' 'EZUG' '2'.
estr_add_ipath 'EGER' 'ETDZ' space.
estr_add_ipath 'EGPL' 'EHAU' space.
estr_add_ipath 'ETDZ' 'EZUZ' space.
estr_add_ipath 'ETDZ' 'EASTI' space.
estr_add_ipath 'EVBS' 'EHAU' space.
************************************************************************
WHEN co_objtype_account.
* contract account found
ifkkvkp-vkont = objkey.
APPEND ifkkvkp.
* set path for structure reader
estr_add_ipath 'FKKVKP' 'EKUN' space.
estr_add_ipath 'FKKVKP' 'EVER' space.
estr_add_ipath 'EVER' 'EANL' space.
estr_add_ipath 'EANL' 'EASTL' space.
estr_add_ipath 'EANL' 'EVBS' space.
estr_add_ipath 'EANL' 'EASTS' space.
estr_add_ipath 'EASTL' 'EGER' space.
estr_add_ipath 'EGER' 'EGPL' space.
estr_add_ipath 'EGER' 'EZUG' '1'.
estr_add_ipath 'EGER' 'EZUG' '2'.
estr_add_ipath 'EGER' 'ETDZ' space.
estr_add_ipath 'EGPL' 'EHAU' space.
estr_add_ipath 'ETDZ' 'EZUZ' space.
estr_add_ipath 'ETDZ' 'EASTI' space.
estr_add_ipath 'EVBS' 'EHAU' space.
************************************************************************
WHEN co_objtype_contract.
* contract found
iever-vertrag = objkey.
APPEND iever.
* set path for structure reader
estr_add_ipath 'EVER' 'FKKVKP' space.
estr_add_ipath 'FKKVKP' 'EKUN' space.
estr_add_ipath 'EVER' 'EANL' space.
estr_add_ipath 'EANL' 'EASTL' space.
estr_add_ipath 'EANL' 'EVBS' space.
estr_add_ipath 'EANL' 'EASTS' space.
estr_add_ipath 'EASTL' 'EGER' space.
estr_add_ipath 'EGER' 'EGPL' space.
estr_add_ipath 'EGER' 'EZUG' '1'.
estr_add_ipath 'EGER' 'ETDZ' space.
estr_add_ipath 'EGPL' 'EHAU' space.
estr_add_ipath 'ETDZ' 'EZUZ' space.
estr_add_ipath 'ETDZ' 'EASTI' space.
estr_add_ipath 'EVBS' 'EHAU' space.
************************************************************************
WHEN co_objtype_connobj.
* connection object found
iehau-haus = objkey.
APPEND iehau.
* set path for structure reader
estr_add_ipath 'EHAU' 'EGPL' space.
estr_add_ipath 'EHAU' 'EVBS' space.
estr_add_ipath 'EGPL' 'EGER' space.
estr_add_ipath 'EVBS' 'EANL' space.
estr_add_ipath 'EANL' 'EASTL' space.
estr_add_ipath 'EANL' 'EASTS' space.
estr_add_ipath 'EANL' 'EVER' space.
estr_add_ipath 'EASTL' 'EGER' space.
estr_add_ipath 'EGER' 'EGPL' space.
estr_add_ipath 'EGER' 'EZUG' '1'.
estr_add_ipath 'EGER' 'EZUG' '2'.
estr_add_ipath 'EGER' 'ETDZ' space.
estr_add_ipath 'ETDZ' 'EZUZ' space.
estr_add_ipath 'ETDZ' 'EASTI' space.
estr_add_ipath 'EVER' 'FKKVKP' space.
estr_add_ipath 'FKKVKP' 'EKUN' space.
************************************************************************
WHEN co_objtype_premises.
* premise object found
ievbs-vstelle = objkey.
APPEND ievbs.
* set path for structure reader
estr_add_ipath 'EVBS' 'EANL' space.
estr_add_ipath 'EVBS' 'EHAU' space.
estr_add_ipath 'EHAU' 'EGPL' space.
estr_add_ipath 'EGPL' 'EGER' space.
estr_add_ipath 'EANL' 'EASTL' space.
estr_add_ipath 'EANL' 'EASTS' space.
estr_add_ipath 'EANL' 'EVER' space.
estr_add_ipath 'EASTL' 'EGER' space.
estr_add_ipath 'EGER' 'EGPL' space.
estr_add_ipath 'EGER' 'EZUG' '1'.
estr_add_ipath 'EGER' 'EZUG' '2'.
estr_add_ipath 'EGER' 'ETDZ' space.
estr_add_ipath 'ETDZ' 'EZUZ' space.
estr_add_ipath 'ETDZ' 'EASTI' space.
estr_add_ipath 'EVER' 'FKKVKP' space.
estr_add_ipath 'FKKVKP' 'EKUN' space.
************************************************************************
WHEN co_objtype_instln.
* installation object found
ieanl-anlage = objkey.
APPEND ieanl.
* set path for structure reader
estr_add_ipath 'EANL' 'EASTL' space.
estr_add_ipath 'EANL' 'EVBS' space.
estr_add_ipath 'EANL' 'EASTS' space.
estr_add_ipath 'EANL' 'EVER' space.
estr_add_ipath 'EASTL' 'EGER' space.
estr_add_ipath 'EGER' 'EGPL' space.
estr_add_ipath 'EGER' 'EZUG' '1'.
estr_add_ipath 'EGER' 'EZUG' '2'.
estr_add_ipath 'EGER' 'ETDZ' space.
estr_add_ipath 'EGPL' 'EHAU' space.
estr_add_ipath 'ETDZ' 'EZUZ' space.
estr_add_ipath 'ETDZ' 'EASTI' space.
estr_add_ipath 'EVBS' 'EHAU' space.
estr_add_ipath 'EVER' 'FKKVKP' space.
estr_add_ipath 'FKKVKP' 'EKUN' space.
************************************************************************
WHEN co_objtype_device.
* device object found
ieger-equnr = objkey.
APPEND ieger.
* set path for structure reader
estr_add_ipath 'EGER' 'EGPL' space.
estr_add_ipath 'EGER' 'EASTL' space.
estr_add_ipath 'EGER' 'EZUG' '1'.
estr_add_ipath 'EGER' 'EZUG' '2'.
estr_add_ipath 'EGER' 'EZUZ' space.
estr_add_ipath 'EGER' 'ETDZ' space.
estr_add_ipath 'EGPL' 'EHAU' space.
estr_add_ipath 'EASTL' 'EANL' space.
estr_add_ipath 'EANL' 'EVBS' space.
estr_add_ipath 'EVBS' 'EHAU' space.
estr_add_ipath 'ETDZ' 'EASTS' space.
estr_add_ipath 'ETDZ' 'EZUZ' space.
estr_add_ipath 'ETDZ' 'EASTI' space.
estr_add_ipath 'EANL' 'EVER' space.
estr_add_ipath 'EANL' 'EVBS' space.
estr_add_ipath 'EVBS' 'EHAU' space.
estr_add_ipath 'EVER' 'FKKVKP' space.
estr_add_ipath 'FKKVKP' 'EKUN' space.
************************************************************************
WHEN co_objtype_pod.
"Zählpunkt
SELECT * FROM euitrans INTO @DATA(ls_euitrans)
WHERE ext_ui = @objkey
AND dateto BETWEEN @sy-datum AND '99991231'.
objkey = ls_euitrans-int_ui.
SELECT * FROM euiinstln INTO @DATA(ls_euiinstln)
WHERE int_ui = @ls_euitrans-int_ui
AND datefrom <= @ls_euitrans-dateto
AND dateto >= @ls_euitrans-datefrom
AND dateto >= @sy-datum.
lv_tmp_objkey = ls_euiinstln-anlage.
PERFORM read_data USING check_view co_objtype_instln lv_tmp_objkey check_dev check_pod_rel gt_data space gr_util_f.
lv_stop_readness = 'X'.
ENDSELECT.
ENDSELECT.
ENDCASE.
CHECK lv_stop_readness IS INITIAL.
* call the structure reader
CALL FUNCTION 'ISU_STRUCTURE_READ'
EXPORTING
x_is_complete = co_flag_notmarked
x_actual = co_flag_notmarked
x_structure = co_flag_marked
x_ab = sy-datum
x_bis = '99991231'
x_text = co_flag_marked
x_language = sy-langu
x_progress_display = co_flag_marked
TABLES
xt_path = ipath
yt_struc = istruc
t_bcont = ibcont
t_eabl = ieabl
t_eablg = ieablg
t_eabp = ieabp
t_eadz = ieadz
t_eanl = ieanl
t_easti = ieasti
t_eastih = ieastih
t_eastl = ieastl
t_easts = ieasts
t_eaus = ieaus
t_eausv = ieausv
t_eein = ieein
t_eeinv = ieeinv
t_eger = ieger
t_egpl = iegpl
t_ehau = iehau
t_ekun = iekun
t_etdz = ietdz
t_etins = ietins
t_ettif = iettif
t_evbs = ievbs
t_ever = iever
t_ezug = iezug
t_ezuz = iezuz
t_fkkvkp = ifkkvkp
t_te420 = ite420
t_te422 = ite422
EXCEPTIONS
path_invalid = 1
date_invalid = 2
selection_failed = 3
OTHERS = 4.
IF sy-subrc <> 0.
* structure reader error
* leave form
EXIT.
ENDIF.
if objtype = co_objtype_device and ieger[] is INITIAL.
CALL METHOD gr_util_f->insert_message(
EXPORTING
iv_view = check_view
iv_object = co_objtype_device
iv_objkey = objkey
iv_refobj = co_objtype_device
iv_refkey = objkey
iv_msgty = 'E'
iv_msgid = '/DESO/'
iv_msgtxt = 'FEHLER BEIM LESEN DER DATEN ZUM OBJEKT!'
CHANGING
is_data = ls_mess_data ).
exit.
endif.
IF add_data IS INITIAL.
APPEND INITIAL LINE TO gt_data ASSIGNING FIELD-SYMBOL(<ls_data>).
<ls_data>-ieanl[] = ieanl[].
<ls_data>-ieasti[] = ieasti[].
<ls_data>-ieastl[] = ieastl[].
<ls_data>-ieasts[] = ieasts[].
<ls_data>-ieger[] = ieger[].
<ls_data>-iegpl[] = iegpl[].
<ls_data>-iehau[] = iehau[].
<ls_data>-iekun[] = iekun[].
<ls_data>-ietdz[] = ietdz[].
<ls_data>-ievbs[] = ievbs[].
<ls_data>-iever[] = iever[].
<ls_data>-iezug[] = iezug[].
<ls_data>-iezuz[] = iezuz[].
<ls_data>-ifkkvkp[] = ifkkvkp[].
ELSE.
DEFINE add_ls_data.
APPEND LINES OF &1[] TO <ls_data>-&1[].
SORT <ls_data>-&1[].
DELETE ADJACENT DUPLICATES FROM <ls_data>-&1[].
END-OF-DEFINITION.
IF NOT <ls_data> IS ASSIGNED.
READ TABLE gt_data INDEX lines( gt_data ) ASSIGNING <ls_data>.
ENDIF.
add_ls_data ieanl.
add_ls_data ieasti.
add_ls_data ieastl.
add_ls_data ieasts.
add_ls_data ieger.
add_ls_data iegpl.
add_ls_data iehau.
add_ls_data iekun.
add_ls_data ietdz.
add_ls_data ievbs.
add_ls_data iever.
add_ls_data iezug.
add_ls_data iezuz.
add_ls_data ifkkvkp.
ENDIF.
IF <ls_data> IS ASSIGNED AND NOT <ls_data>-ieanl[] IS INITIAL.
SELECT * FROM euiinstln INTO ls_euiinstln
FOR ALL ENTRIES IN <ls_data>-ieanl[]
WHERE anlage = <ls_data>-ieanl-anlage
AND dateto BETWEEN sy-datum AND '99991231'.
APPEND ls_euiinstln TO <ls_data>-ieuiinstln[].
SELECT * FROM euitrans INTO ls_euitrans
WHERE int_ui = ls_euiinstln-int_ui
AND dateto >= ls_euiinstln-datefrom
AND datefrom <= ls_euiinstln-dateto
AND dateto >= sy-datum.
APPEND ls_euitrans TO <ls_data>-ieuitrans[].
ENDSELECT.
ENDSELECT.
SORT <ls_data>-ieuiinstln[].
DELETE ADJACENT DUPLICATES FROM <ls_data>-ieuiinstln[].
SORT <ls_data>-ieuitrans[].
DELETE ADJACENT DUPLICATES FROM <ls_data>-ieuitrans[].
lt_tmp_euiinstln[] = <ls_data>-ieuiinstln[].
LOOP AT lt_tmp_euiinstln ASSIGNING FIELD-SYMBOL(<fs_euiinstln>).
SELECT * FROM (lv_pod_rel_tabname) INTO CORRESPONDING FIELDS OF ls_pod_rel
WHERE int_ui1 = <fs_euiinstln>-int_ui
AND dateto >= <fs_euiinstln>-datefrom
AND datefrom <= <fs_euiinstln>-dateto
AND dateto >= sy-datum.
APPEND ls_pod_rel TO <ls_data>-ipod_rel.
ENDSELECT.
SELECT * FROM (lv_pod_rel_tabname) INTO CORRESPONDING FIELDS OF ls_pod_rel
WHERE int_ui2 = <fs_euiinstln>-int_ui
AND dateto >= <fs_euiinstln>-datefrom
AND datefrom <= <fs_euiinstln>-dateto
AND dateto >= sy-datum.
APPEND ls_pod_rel TO <ls_data>-ipod_rel.
ENDSELECT.
SORT <ls_data>-ipod_rel.
DELETE ADJACENT DUPLICATES FROM <ls_data>-ipod_rel.
ENDLOOP.
ENDIF.
IF NOT check_pod_rel IS INITIAL AND <ls_data> IS ASSIGNED.
estr_refresh_all.
lt_tmp_pod_rel[] = <ls_data>-ipod_rel[].
LOOP AT lt_tmp_pod_rel ASSIGNING FIELD-SYMBOL(<fs_pod_rel>).
READ TABLE <ls_data>-ieuiinstln WITH KEY int_ui = <fs_pod_rel>-int_ui1 TRANSPORTING NO FIELDS.
IF sy-subrc NE 0.
SELECT anlage FROM euiinstln INTO TABLE lt_tmp_objkey
WHERE int_ui = <fs_pod_rel>-int_ui1
AND dateto >= sy-datum
AND datefrom <= <fs_pod_rel>-dateto
AND dateto >= <fs_pod_rel>-datefrom.
IF sy-subrc EQ 0.
LOOP AT lt_tmp_objkey INTO lv_tmp_objkey.
READ TABLE <ls_data>-ieanl WITH KEY anlage = lv_tmp_objkey TRANSPORTING NO FIELDS.
CHECK sy-subrc NE 0.
IF objtype NE co_objtype_instln OR objkey NE lv_tmp_objkey.
PERFORM read_data USING check_view co_objtype_instln lv_tmp_objkey check_dev check_pod_rel gt_data 'X' gr_util_f.
ELSE.
CALL METHOD gr_util_f->insert_message(
EXPORTING
iv_view = check_view
iv_object = co_objtype_instln
iv_objkey = lv_tmp_objkey
iv_refobj = co_objtype_instln
iv_refkey = lv_tmp_objkey
iv_msgty = 'E'
iv_msgid = '/DESO/'
iv_msgtxt = 'FEHLER BEIM LESEN DER DATEN ZUM OBJEKT!'
CHANGING
is_data = ls_mess_data ).
ENDIF.
ENDLOOP.
ENDIF.
ENDIF.
READ TABLE <ls_data>-ieuiinstln WITH KEY int_ui = <fs_pod_rel>-int_ui2 TRANSPORTING NO FIELDS.
IF sy-subrc NE 0.
SELECT anlage FROM euiinstln INTO TABLE lt_tmp_objkey
WHERE int_ui = <fs_pod_rel>-int_ui2
AND dateto >= sy-datum
AND datefrom <= <fs_pod_rel>-dateto
AND dateto >= <fs_pod_rel>-datefrom.
IF sy-subrc EQ 0.
LOOP AT lt_tmp_objkey INTO lv_tmp_objkey.
READ TABLE <ls_data>-ieanl WITH KEY anlage = lv_tmp_objkey TRANSPORTING NO FIELDS.
CHECK sy-subrc NE 0.
IF objtype NE co_objtype_instln OR objkey NE lv_tmp_objkey.
PERFORM read_data USING check_view co_objtype_instln lv_tmp_objkey check_dev check_pod_rel gt_data 'X' gr_util_f.
ELSE.
CALL METHOD gr_util_f->insert_message(
EXPORTING
iv_view = check_view
iv_object = co_objtype_instln
iv_objkey = lv_tmp_objkey
iv_refobj = co_objtype_instln
iv_refkey = lv_tmp_objkey
iv_msgty = 'E'
iv_msgid = '/DESO/'
iv_msgtxt = 'FEHLER BEIM LESEN DER DATEN ZUM OBJEKT!'
CHANGING
is_data = ls_mess_data ).
ENDIF.
ENDLOOP.
ENDIF.
ENDIF.
ENDLOOP.
ENDIF.
IF NOT check_dev IS INITIAL AND <ls_data> IS ASSIGNED.
estr_refresh_all.
lt_tmp_ezug[] = <ls_data>-iezug[]." DEV-Zuordnung
CLEAR lt_tmp_objkey[].
LOOP AT lt_tmp_ezug ASSIGNING FIELD-SYMBOL(<fs_ezug>).
READ TABLE <ls_data>-ieger[] WITH KEY logiknr = <fs_ezug>-logiknr TRANSPORTING NO FIELDS.
IF sy-subrc NE 0.
SELECT equnr FROM egerh APPENDING TABLE lt_tmp_objkey
WHERE logiknr = <fs_ezug>-logiknr
AND ab <= <fs_ezug>-bis
AND bis >= <fs_ezug>-ab
AND bis >= sy-datum.
ENDIF.
READ TABLE <ls_data>-ieger[] WITH KEY logiknr = <fs_ezug>-logiknr2 TRANSPORTING NO FIELDS.
IF sy-subrc NE 0.
SELECT equnr FROM egerh APPENDING TABLE lt_tmp_objkey
WHERE logiknr = <fs_ezug>-logiknr2
AND ab <= <fs_ezug>-bis
AND bis >= <fs_ezug>-ab
AND bis >= sy-datum.
ENDIF.
ENDLOOP.
SORT lt_tmp_objkey.
DELETE ADJACENT DUPLICATES FROM lt_tmp_objkey.
LOOP AT lt_tmp_objkey INTO lv_tmp_objkey.
READ TABLE <ls_data>-ieger WITH KEY equnr = lv_tmp_objkey TRANSPORTING NO FIELDS.
CHECK sy-subrc NE 0.
IF objtype NE co_objtype_device OR objkey NE lv_tmp_objkey.
PERFORM read_data USING check_view co_objtype_device lv_tmp_objkey check_dev check_pod_rel gt_data 'X' gr_util_f.
ELSE.
CALL METHOD gr_util_f->insert_message(
EXPORTING
iv_view = check_view
iv_object = co_objtype_device
iv_objkey = lv_tmp_objkey
iv_refobj = co_objtype_device
iv_refkey = lv_tmp_objkey
iv_msgty = 'E'
iv_msgid = '/DESO/'
iv_msgtxt = 'FEHLER BEIM LESEN DER DATEN ZUM OBJEKT!'
CHANGING
is_data = ls_mess_data ).
ENDIF.
ENDLOOP.
lt_tmp_ezuz[] = <ls_data>-iezuz[]." ZW-Zuordnung
CLEAR lt_tmp_objkey[].
LOOP AT lt_tmp_ezuz ASSIGNING FIELD-SYMBOL(<fs_ezuz>).
READ TABLE <ls_data>-ietdz[] WITH KEY logikzw = <fs_ezuz>-logikzw TRANSPORTING NO FIELDS.
IF sy-subrc NE 0.
SELECT equnr FROM etdz APPENDING TABLE lt_tmp_objkey
WHERE logikzw = <fs_ezuz>-logikzw
AND ab <= <fs_ezuz>-bis
AND bis >= <fs_ezuz>-ab
AND bis >= sy-datum.
ENDIF.
READ TABLE <ls_data>-ieger[] WITH KEY logiknr = <fs_ezuz>-logiknr2 TRANSPORTING NO FIELDS.
IF sy-subrc NE 0.
SELECT equnr FROM egerh APPENDING TABLE lt_tmp_objkey
WHERE logiknr = <fs_ezuz>-logiknr2
AND ab <= <fs_ezuz>-bis
AND bis >= <fs_ezuz>-ab
AND bis >= sy-datum.
ENDIF.
ENDLOOP.
SORT lt_tmp_objkey.
DELETE ADJACENT DUPLICATES FROM lt_tmp_objkey.
LOOP AT lt_tmp_objkey INTO lv_tmp_objkey.
READ TABLE <ls_data>-ieger WITH KEY equnr = lv_tmp_objkey TRANSPORTING NO FIELDS.
CHECK sy-subrc NE 0.
IF objtype NE co_objtype_device OR objkey NE lv_tmp_objkey.
PERFORM read_data USING check_view co_objtype_device lv_tmp_objkey check_dev check_pod_rel gt_data 'X' gr_util_f.
ELSE.
CALL METHOD gr_util_f->insert_message(
EXPORTING
iv_view = check_view
iv_object = co_objtype_device
iv_objkey = lv_tmp_objkey
iv_refobj = co_objtype_device
iv_refkey = lv_tmp_objkey
iv_msgty = 'E'
iv_msgid = '/DESO/'
iv_msgtxt = 'FEHLER BEIM LESEN DER DATEN ZUM OBJEKT!'
CHANGING
is_data = ls_mess_data ).
ENDIF.
ENDLOOP.
lt_tmp_eger[] = <ls_data>-ieger[]. "Gerätegruppe
DELETE lt_tmp_eger WHERE devgrp IS INITIAL.
SORT lt_tmp_eger BY devgrp.
DELETE ADJACENT DUPLICATES FROM lt_tmp_eger COMPARING devgrp.
CLEAR lt_tmp_objkey[].
LOOP AT lt_tmp_eger ASSIGNING FIELD-SYMBOL(<fs_eger>).
SELECT equnr FROM egerh INTO lv_tmp_equnr
WHERE devgrp = <fs_eger>-devgrp
AND ab <= <fs_eger>-bis
AND bis >= <fs_eger>-ab
AND bis >= sy-datum.
READ TABLE <ls_data>-ieger[] WITH KEY equnr = lv_tmp_equnr TRANSPORTING NO FIELDS.
IF sy-subrc NE 0.
lv_tmp_objkey = lv_tmp_equnr.
APPEND lv_tmp_objkey TO lt_tmp_objkey.
ENDIF.
ENDSELECT.
ENDLOOP.
SORT lt_tmp_objkey.
DELETE ADJACENT DUPLICATES FROM lt_tmp_objkey.
LOOP AT lt_tmp_objkey INTO lv_tmp_objkey.
READ TABLE <ls_data>-ieger WITH KEY equnr = lv_tmp_objkey TRANSPORTING NO FIELDS.
CHECK sy-subrc NE 0.
IF objtype NE co_objtype_device OR objkey NE lv_tmp_objkey.
PERFORM read_data USING check_view co_objtype_device lv_tmp_objkey check_dev check_pod_rel gt_data 'X' gr_util_f.
ELSE.
CALL METHOD gr_util_f->insert_message(
EXPORTING
iv_view = check_view
iv_object = co_objtype_device
iv_objkey = lv_tmp_objkey
iv_refobj = co_objtype_device
iv_refkey = lv_tmp_objkey
iv_msgty = 'E'
iv_msgid = '/DESO/'
iv_msgtxt = 'FEHLER BEIM LESEN DER DATEN ZUM OBJEKT!'
CHANGING
is_data = ls_mess_data ) .
ENDIF.
ENDLOOP.
ENDIF.
* sort the connection table istruc by tabto, indto, tabfrom
* this is important for binary search later !
SORT istruc BY tabto indto tabfrom.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form init_all
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
*FORM init_all .
* REFRESH ipath . CLEAR ipath .
* REFRESH istruc . CLEAR istruc .
*
* REFRESH ibcont . CLEAR ibcont .
* REFRESH ieabl . CLEAR ieabl .
* REFRESH ieablg . CLEAR ieablg .
* REFRESH ieabp . CLEAR ieabp .
* REFRESH ieadz . CLEAR ieadz .
* REFRESH ieanl . CLEAR ieanl .
* REFRESH ieasti . CLEAR ieasti .
* REFRESH ieastih . CLEAR ieastih .
* REFRESH ieastl . CLEAR ieastl .
* REFRESH ieasts . CLEAR ieasts .
* REFRESH ieaus . CLEAR ieaus .
* REFRESH ieausv . CLEAR ieausv .
* REFRESH ieein . CLEAR ieein .
* REFRESH ieeinv . CLEAR ieeinv .
* REFRESH ieger . CLEAR ieger .
* REFRESH iegpl . CLEAR iegpl .
* REFRESH iehau . CLEAR iehau .
* REFRESH iekun . CLEAR iekun .
* REFRESH ietdz . CLEAR ietdz .
* REFRESH ietins . CLEAR ietins .
* REFRESH iettif . CLEAR iettif .
* REFRESH ievbs . CLEAR ievbs .
* REFRESH iever . CLEAR iever .
* REFRESH iezug . CLEAR iezug .
* REFRESH iezuz . CLEAR iezuz .
* REFRESH ifkkvkp . CLEAR ifkkvkp .
* REFRESH ite420 . CLEAR ite420 .
* REFRESH ite422 . CLEAR ite422 .
* REFRESH gt_data .
*ENDFORM.