METHOD expert_routine.
*=== Segments ===

FIELD-SYMBOLS:
   <SOURCE_FIELDS>    TYPE _ty_s_SC_1.

DATA:
   RESULT_FIELDS      TYPE _ty_s_TG_1.

*$*$ begin of routine - insert your code only below this line        *-*

DATA: lt_it0000 TYPE TABLE OF /bic/ahaj000d100,
      lt_it0001 TYPE TABLE OF /bic/ahaj001d100,
      lt_it0007 TYPE TABLE OF /bic/ahaj007d100,
      lt_it0008 TYPE TABLE OF /bic/ahaj008d100,
      lt_it0013 TYPE TABLE OF /bic/ahaj013d100,
      lt_it0016 TYPE TABLE OF /bic/ahaj016d100,
      lt_it0034 TYPE TABLE OF /bic/ahaj034d100,
      lt_it0521 TYPE TABLE OF /bic/ahaj521d100,

      ls_it0000 LIKE LINE OF lt_it0000,
      ls_it0001 LIKE LINE OF lt_it0001,
      ls_it0007 LIKE LINE OF lt_it0007,
      ls_it0008 LIKE LINE OF lt_it0008,
      ls_it0013 LIKE LINE OF lt_it0013,
      ls_it0016 LIKE LINE OF lt_it0016,
      ls_it0034 LIKE LINE OF lt_it0034,
      ls_it0521 LIKE LINE OF lt_it0521,

      lv_val0000(1) TYPE c,
      lv_val0001(1) TYPE c,
      lv_val0007(1) TYPE c,
      lv_val0008(1) TYPE c,
      lv_val0013(1) TYPE c,
      lv_val0016(1) TYPE c,
      lv_val0034(1) TYPE c,
      lv_val0521(1) TYPE c,

      lv_tabname_0000 TYPE tabname,
      lv_tabname_0001 TYPE tabname,
      lv_tabname_0007 TYPE tabname,
      lv_tabname_0008 TYPE tabname,
      lv_tabname_0013 TYPE tabname,
      lv_tabname_0016 TYPE tabname,
      lv_tabname_0034 TYPE tabname,
      lv_tabname_0521 TYPE tabname,

      ls_source_fields LIKE LINE OF SOURCE_PACKAGE.

CLEAR ls_source_fields.
READ TABLE SOURCE_PACKAGE INDEX 1 INTO ls_source_fields.

* Initialisierungen
FREE lt_it0000.
FREE lt_it0001.
FREE lt_it0007.
FREE lt_it0008.
FREE lt_it0013.
FREE lt_it0016.
FREE lt_it0034.
FREE lt_it0521.

* Erstelle Tabellennamen
CLEAR lv_tabname_0000.
CONCATENATE '/BIC/AH' ls_source_fields-/bic/lsa_domai '000D100' 
   INTO lv_tabname_0000.
CONDENSE lv_tabname_0000 NO-GAPS.

CLEAR lv_tabname_0001.
CONCATENATE '/BIC/AH' ls_source_fields-/bic/lsa_domai '001D100' 
   INTO lv_tabname_0001.
CONDENSE lv_tabname_0001 NO-GAPS.

CLEAR lv_tabname_0007.
CONCATENATE '/BIC/AH' ls_source_fields-/bic/lsa_domai '007D100' 
   INTO lv_tabname_0007.
CONDENSE lv_tabname_0007 NO-GAPS.

CLEAR lv_tabname_0008.
CONCATENATE '/BIC/AH' ls_source_fields-/bic/lsa_domai '008D100' 
   INTO lv_tabname_0008.
CONDENSE lv_tabname_0008 NO-GAPS.

CLEAR lv_tabname_0013.
CONCATENATE '/BIC/AH' ls_source_fields-/bic/lsa_domai '013D100' 
   INTO lv_tabname_0013.
CONDENSE lv_tabname_0013 NO-GAPS.

CLEAR lv_tabname_0016.
CONCATENATE '/BIC/AH' ls_source_fields-/bic/lsa_domai '016D100' 
   INTO lv_tabname_0016.
CONDENSE lv_tabname_0016 NO-GAPS.

CLEAR lv_tabname_0034.
CONCATENATE '/BIC/AH' ls_source_fields-/bic/lsa_domai '034D100' 
   INTO lv_tabname_0034.
CONDENSE lv_tabname_0034 NO-GAPS.

CLEAR lv_tabname_0521.
CONCATENATE '/BIC/AH' ls_source_fields-/bic/lsa_domai '521D100' 
   INTO lv_tabname_0521.
CONDENSE lv_tabname_0521 NO-GAPS.

* Selektiere dynamisch und schreibe in int. Tabellen
SELECT * FROM (lv_tabname_0000) INTO TABLE lt_it0000
   ORDER BY /bic/hrc_pernr /bic/hrc_begda ASCENDING.

SELECT * FROM (lv_tabname_0001) INTO TABLE lt_it0001
   ORDER BY /bic/hrc_pernr /bic/hrc_begda ASCENDING.

SELECT * FROM (lv_tabname_0007) INTO TABLE lt_it0007
   ORDER BY /bic/hrc_pernr /bic/hrc_begda ASCENDING.

SELECT * FROM (lv_tabname_0008) INTO TABLE lt_it0008
   WHERE /bic/hrc_subty = '0000'
   ORDER BY /bic/hrc_pernr /bic/hrc_begda ASCENDING.

SELECT * FROM (lv_tabname_0013) INTO TABLE lt_it0013
   ORDER BY /bic/hrc_pernr /bic/hrc_begda ASCENDING.

SELECT * FROM (lv_tabname_0016) INTO TABLE lt_it0016
   ORDER BY /bic/hrc_pernr /bic/hrc_begda ASCENDING.

SELECT * FROM (lv_tabname_0034) INTO TABLE lt_it0034
   ORDER BY /bic/hrc_pernr /bic/hrc_begda ASCENDING.

SELECT * FROM (lv_tabname_0521) INTO TABLE lt_it0521
   ORDER BY /bic/hrc_pernr /bic/hrc_begda.

* Eindeutigkeit herstellen (LGART, SVATT entfernen)
DELETE ADJACENT DUPLICATES FROM lt_it0008
   COMPARING /bic/hrc_pernr /bic/hrc_begda /bic/hrc_endda.

DELETE ADJACENT DUPLICATES FROM lt_it0013
   COMPARING /bic/hrc_pernr /bic/hrc_begda /bic/hrc_endda.

* Datenpaket bearbeiten
LOOP AT SOURCE_PACKAGE ASSIGNING <source_fields>.

   PROVIDE FIELDS * FROM lt_it0000 INTO ls_it0000 VALID lv_val0000
                    BOUNDS /bic/hrc_begda AND /bic/hrc_endda
                    WHERE /bic/hrc_pernr =
                          <source_fields>-/bic/hrc_pernr
           FIELDS * FROM lt_it0001 INTO ls_it0001 VALID lv_val0001
                    BOUNDS /bic/hrc_begda AND /bic/hrc_endda
                    WHERE /bic/hrc_pernr =
                          <source_fields>-/bic/hrc_pernr
           FIELDS * FROM lt_it0007 INTO ls_it0007 VALID lv_val0007
                    BOUNDS /bic/hrc_begda AND /bic/hrc_endda
                    WHERE /bic/hrc_pernr =
                          <source_fields>-/bic/hrc_pernr
           FIELDS * FROM lt_it0008 INTO ls_it0008 VALID lv_val0008
                    BOUNDS /bic/hrc_begda AND /bic/hrc_endda
                    WHERE /bic/hrc_pernr =
                          <source_fields>-/bic/hrc_pernr
           FIELDS * FROM lt_it0013 INTO ls_it0013 VALID lv_val0013
                    BOUNDS /bic/hrc_begda AND /bic/hrc_endda
                    WHERE /bic/hrc_pernr =
                          <source_fields>-/bic/hrc_pernr
           FIELDS * FROM lt_it0016 INTO ls_it0016 VALID lv_val0016
                    BOUNDS /bic/hrc_begda AND /bic/hrc_endda
                    WHERE /bic/hrc_pernr =
                          <source_fields>-/bic/hrc_pernr
           FIELDS * FROM lt_it0034 INTO ls_it0034 VALID lv_val0034
                    BOUNDS /bic/hrc_begda AND /bic/hrc_endda
                    WHERE /bic/hrc_pernr =
                          <source_fields>-/bic/hrc_pernr
           FIELDS * FROM lt_it0521 INTO ls_it0521 VALID lv_val0521
                    BOUNDS /bic/hrc_begda AND /bic/hrc_endda
                    WHERE /bic/hrc_pernr =
                    <source_fields>-/bic/hrc_pernr
           BETWEEN '10000101' AND '99991231'.

      CLEAR RESULT_FIELDS.

******************************************************************
*** GLOBALE FELDER
******************************************************************
      MOVE-CORRESPONDING <source_fields> TO RESULT_FIELDS.
      RESULT_FIELDS-/bic/hrc_endda = ls_it0000-/bic/hrc_endda.
      RESULT_FIELDS-/bic/hrc_begda = ls_it0000-/bic/hrc_begda.

******************************************************************
*** INFOTYP 0000
******************************************************************
      IF lv_val0000 IS NOT INITIAL.
         RESULT_FIELDS-/bic/hrc_empls = ls_it0000-/bic/hrc_empls.
      ENDIF.

******************************************************************
*** INFOTYP 0001
******************************************************************
      IF lv_val0001 IS NOT INITIAL.
         RESULT_FIELDS-/bic/hrc_bukrs = ls_it0001-/bic/hrc_bukrs.
         RESULT_FIELDS-/bic/hrc_werks = ls_it0001-/bic/hrc_werks.
         RESULT_FIELDS-/bic/hrc_magrp = ls_it0001-/bic/hrc_magrp.
         RESULT_FIELDS-/bic/hrc_makrs = ls_it0001-/bic/hrc_makrs.
         RESULT_FIELDS-/bic/hrc_orgky = ls_it0001-/bic/hrc_orgky.
         RESULT_FIELDS-/bic/hrc_gsber = ls_it0001-/bic/hrc_gsber.
         RESULT_FIELDS-/bic/hrc_btrtl = ls_it0001-/bic/hrc_btrtl.
         RESULT_FIELDS-/bic/hrc_juper = ls_it0001-/bic/hrc_juper.
         RESULT_FIELDS-/bic/hrc_abkrs = ls_it0001-/bic/hrc_abkrs.
         RESULT_FIELDS-/bic/hrc_ansvh = ls_it0001-/bic/hrc_ansvh.
         RESULT_FIELDS-/bic/hrc_kostl = ls_it0001-/bic/hrc_kostl.
         RESULT_FIELDS-/bic/hrc_orgeh = ls_it0001-/bic/hrc_orgeh.
         RESULT_FIELDS-/bic/hrc_plans = ls_it0001-/bic/hrc_plans.
         RESULT_FIELDS-/bic/hrc_carea = ls_it0001-/bic/hrc_carea.
         RESULT_FIELDS-/bic/hrc_stell = ls_it0001-/bic/hrc_stell.
         RESULT_FIELDS-/bic/hrc_mstbr = ls_it0001-/bic/hrc_mstbr.
         RESULT_FIELDS-/bic/hrc_sacha = ls_it0001-/bic/hrc_sacha.
         RESULT_FIELDS-/bic/hrc_sachp = ls_it0001-/bic/hrc_sachp.
         RESULT_FIELDS-/bic/hrc_sachz = ls_it0001-/bic/hrc_sachz.
      ENDIF.

******************************************************************
*** INFOTYP 0007
******************************************************************
      IF lv_val0007 IS NOT INITIAL.
         RESULT_FIELDS-/bic/hrc_schkz = ls_it0007-/bic/hrc_schkz.
         RESULT_FIELDS-/bic/hrc_zterf = ls_it0007-/bic/hrc_zterf.
         RESULT_FIELDS-/bic/hrk_empct = ls_it0007-/bic/hrk_empct.
         RESULT_FIELDS-/bic/hrk_mostd = ls_it0007-/bic/hrk_mostd.
         RESULT_FIELDS-/bic/hrk_wostd = ls_it0007-/bic/hrk_wostd.
         RESULT_FIELDS-/bic/hrk_arbst = ls_it0007-/bic/hrk_arbst.
         RESULT_FIELDS-/bic/hrk_wkwdy = ls_it0007-/bic/hrk_wkwdy.
         RESULT_FIELDS-/bic/hrk_jrstd = ls_it0007-/bic/hrk_jrstd.
         RESULT_FIELDS-/bic/hrc_teilk = ls_it0007-/bic/hrc_teilk.
         RESULT_FIELDS-/bic/hrk_minta = ls_it0007-/bic/hrk_minta.
         RESULT_FIELDS-/bic/hrk_maxta = ls_it0007-/bic/hrk_maxta.
         RESULT_FIELDS-/bic/hrk_minwo = ls_it0007-/bic/hrk_minwo.
         RESULT_FIELDS-/bic/hrk_maxwo = ls_it0007-/bic/hrk_maxwo.
         RESULT_FIELDS-/bic/hrk_minmo = ls_it0007-/bic/hrk_minmo.
         RESULT_FIELDS-/bic/hrk_maxmo = ls_it0007-/bic/hrk_maxmo.
         RESULT_FIELDS-/bic/hrk_minja = ls_it0007-/bic/hrk_minja.
         RESULT_FIELDS-/bic/hrk_maxja = ls_it0007-/bic/hrk_maxja.
         RESULT_FIELDS-/bic/hrc_dysch = ls_it0007-/bic/hrc_dysch.
         RESULT_FIELDS-/bic/hrc_wweek = ls_it0007-/bic/hrc_wweek.
     ENDIF.

******************************************************************
*** INFOTYP 0008
******************************************************************
     IF lv_val0008 IS NOT INITIAL.
         RESULT_FIELDS-/bic/hrc_trfar = ls_it0008-/bic/hrc_trfar.
         RESULT_FIELDS-/bic/hrc_trfgb = ls_it0008-/bic/hrc_trfgb.
         RESULT_FIELDS-/bic/hrc_trfgr = ls_it0008-/bic/hrc_trfgr.
         RESULT_FIELDS-/bic/hrc_trfst = ls_it0008-/bic/hrc_trfst.
         RESULT_FIELDS-/bic/hrk_bsgrd = ls_it0008-/bic/hrk_bsgrd.
         RESULT_FIELDS-/bic/hrc_falgk = ls_it0008-/bic/hrc_falgk.
         RESULT_FIELDS-/bic/hrc_falgr = ls_it0008-/bic/hrc_falgr.
     ENDIF.

******************************************************************
*** INFOTYP 0013
******************************************************************
     IF lv_val0013 IS NOT INITIAL.
         RESULT_FIELDS-/bic/hrc_kvkz1 = ls_it0013-/bic/hrc_kvkz1.
         RESULT_FIELDS-/bic/hrc_avkz1 = ls_it0013-/bic/hrc_avkz1.
         RESULT_FIELDS-/bic/hrc_rvkz1 = ls_it0013-/bic/hrc_rvkz1.
         RESULT_FIELDS-/bic/hrc_rvnum = ls_it0013-/bic/hrc_rvnum.
         RESULT_FIELDS-/bic/hrc_kvsfr = ls_it0013-/bic/hrc_kvsfr.
         RESULT_FIELDS-/bic/hrc_kvgst = ls_it0013-/bic/hrc_kvgst.
         RESULT_FIELDS-/bic/hrc_kvbkl = ls_it0013-/bic/hrc_kvbkl.
         RESULT_FIELDS-/bic/hrc_zuska = ls_it0013-/bic/hrc_zuska.
         RESULT_FIELDS-/bic/hrc_selkv = ls_it0013-/bic/hrc_selkv.
         RESULT_FIELDS-/bic/hrc_selrv = ls_it0013-/bic/hrc_selrv.
         RESULT_FIELDS-/bic/hrc_mitnr = ls_it0013-/bic/hrc_mitnr.
         RESULT_FIELDS-/bic/hrc_pvkz1 = ls_it0013-/bic/hrc_pvkz1.
         RESULT_FIELDS-/bic/hrc_pvbkl = ls_it0013-/bic/hrc_pvbkl.
         RESULT_FIELDS-/bic/hrc_selpv = ls_it0013-/bic/hrc_selpv.
         RESULT_FIELDS-/bic/hrc_auvor = ls_it0013-/bic/hrc_auvor.
         RESULT_FIELDS-/bic/hrc_aumit = ls_it0013-/bic/hrc_aumit.
      ENDIF.

******************************************************************
*** INFOTYP 0016
******************************************************************
      IF lv_val0016 IS NOT INITIAL.
         RESULT_FIELDS-/bic/hrc_nbtgk = ls_it0016-/bic/hrc_nbtgk.
         RESULT_FIELDS-/bic/hrc_wttkl = ls_it0016-/bic/hrc_wttkl.
         RESULT_FIELDS-/bic/hrk_lfzfr = ls_it0016-/bic/hrk_lfzfr.
         RESULT_FIELDS-/bic/hre_lfzzh = ls_it0016-/bic/hre_lfzzh.
         RESULT_FIELDS-/bic/hrk_kgzfr = ls_it0016-/bic/hrk_kgzfr.
         RESULT_FIELDS-/bic/hre_kgzzh = ls_it0016-/bic/hre_kgzzh.
         RESULT_FIELDS-/bic/hrk_prbzt = ls_it0016-/bic/hrk_prbzt.
         RESULT_FIELDS-/bic/hre_prbeh = ls_it0016-/bic/hre_prbeh.
         RESULT_FIELDS-/bic/hrc_kdgfr = ls_it0016-/bic/hrc_kdgfr.
         RESULT_FIELDS-/bic/hrc_kdgf2 = ls_it0016-/bic/hrc_kdgf2.
         RESULT_FIELDS-/bic/hrc_arber = ls_it0016-/bic/hrc_arber.
         RESULT_FIELDS-/bic/hrc_eindt = ls_it0016-/bic/hrc_eindt.
         RESULT_FIELDS-/bic/hrc_kondt = ls_it0016-/bic/hrc_kondt.
         RESULT_FIELDS-/bic/hrc_konsl = ls_it0016-/bic/hrc_konsl.
         RESULT_FIELDS-/bic/hrc_cttyp = ls_it0016-/bic/hrc_cttyp.
         RESULT_FIELDS-/bic/hrc_ctedt = ls_it0016-/bic/hrc_ctedt.
         RESULT_FIELDS-/bic/hrc_ctbeg = ls_it0016-/bic/hrc_ctbeg.
      ENDIF.

******************************************************************
*** INFOTYP 0521
******************************************************************
      IF lv_val0521 IS NOT INITIAL.
         RESULT_FIELDS-/bic/hrc_atzmo = ls_it0521-/bic/hrc_atzmo.
         RESULT_FIELDS-/bic/hrc_atzph = ls_it0521-/bic/hrc_atzph.
         RESULT_FIELDS-/bic/hrc_arbam = ls_it0521-/bic/hrc_arbam.
         RESULT_FIELDS-/bic/hrk_atzaz = ls_it0521-/bic/hrk_atzaz.
         RESULT_FIELDS-/bic/hrc_atzsr = ls_it0521-/bic/hrc_atzsr.
      ENDIF.

      APPEND RESULT_FIELDS TO RESULT_PACKAGE.

   ENDPROVIDE.
ENDLOOP.

*$*$ end of routine - insert your code only before this line         *-*
ENDMETHOD.                    "expert_routine
