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_it0002 TYPE TABLE OF /bic/ahaj002d100,
      lt_it0004 TYPE TABLE OF /bic/ahaj004d100,
      lt_it0006 TYPE TABLE OF /bic/ahaj006d100,

      ls_it0002 LIKE LINE OF lt_it0002,
      ls_it0004 LIKE LINE OF lt_it0004,
      ls_it0006 LIKE LINE OF lt_it0006,

      lv_val0002(1) TYPE c,
      lv_val0004(1) TYPE c,
      lv_val0006(1) TYPE c,

      lv_tabname_0002 TYPE tabname,
      lv_tabname_0004 TYPE tabname,
      lv_tabname_0006 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_it0002.
FREE lt_it0004.
FREE lt_it0006.

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

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

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

* Selektiere dynamisch und schreibe in int. Tabellen
SELECT * FROM (lv_tabname_0002) INTO TABLE lt_it0002
   ORDER BY /bic/hrc_perso /bic/hrc_begda ASCENDING.

SELECT * FROM (lv_tabname_0004) INTO TABLE lt_it0004
   ORDER BY /bic/hrc_perso /bic/hrc_begda ASCENDING.

SELECT * FROM (lv_tabname_0006) INTO TABLE lt_it0006
   WHERE /bic/hrc_anssa = '0001'
   ORDER BY /bic/hrc_perso /bic/hrc_begda ASCENDING.

* Lsche duplikative Eintrge in IT0006
DELETE ADJACENT DUPLICATES FROM lt_it0006 
   COMPARING /bic/hrc_perso /bic/hrc_begda
             /bic/hrc_endda /bic/hrc_anssa.

* Datenpaket bearbeiten
LOOP AT SOURCE_PACKAGE ASSIGNING <source_fields>.

   PROVIDE FIELDS * FROM lt_it0002 INTO ls_it0002 VALID lv_val0002
                    BOUNDS /bic/hrc_begda AND /bic/hrc_endda
                    WHERE /bic/hrc_perso =
                          <source_fields>-/bic/hrc_perso
           FIELDS * FROM lt_it0004 INTO ls_it0004 VALID lv_val0004
                    BOUNDS /bic/hrc_begda AND /bic/hrc_endda
                    WHERE /bic/hrc_perso =
                          <source_fields>-/bic/hrc_perso
           FIELDS * FROM lt_it0006 INTO ls_it0006 VALID lv_val0006
                    BOUNDS /bic/hrc_begda AND /bic/hrc_endda
                    WHERE /bic/hrc_perso =
                           <source_fields>-/bic/hrc_perso
           BETWEEN '10000101' and '99991231'.

      CLEAR RESULT_FIELDS.

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

******************************************************************
*** INFOTYP 0002
******************************************************************
      IF lv_val0002 IS NOT INITIAL.
         RESULT_FIELDS-/bic/hrc_inits = ls_it0002-/bic/hrc_inits.
         RESULT_FIELDS-/bic/hrc_nachn = ls_it0002-/bic/hrc_nachn.          
         RESULT_FIELDS-/bic/hrc_gname = ls_it0002-/bic/hrc_gname.
         RESULT_FIELDS-/bic/hrc_nach2 = ls_it0002-/bic/hrc_nach2.
         RESULT_FIELDS-/bic/hrc_vname = ls_it0002-/bic/hrc_vname.
         RESULT_FIELDS-/bic/hrc_titel = ls_it0002-/bic/hrc_titel.
         RESULT_FIELDS-/bic/hrc_titl2 = ls_it0002-/bic/hrc_titl2.
         RESULT_FIELDS-/bic/hrc_namzu = ls_it0002-/bic/hrc_namzu.
         RESULT_FIELDS-/bic/hrc_vorsw = ls_it0002-/bic/hrc_vorsw.
         RESULT_FIELDS-/bic/hrc_vors2 = ls_it0002-/bic/hrc_vors2.
         RESULT_FIELDS-/bic/hrc_rname = ls_it0002-/bic/hrc_rname.
         RESULT_FIELDS-/bic/hrc_mname = ls_it0002-/bic/hrc_mname.
         RESULT_FIELDS-/bic/hrc_anred = ls_it0002-/bic/hrc_anred.
         RESULT_FIELDS-/bic/hrc_gesch = ls_it0002-/bic/hrc_gesch.
         RESULT_FIELDS-/bic/hrc_gbdat = ls_it0002-/bic/hrc_gbdat. 
         RESULT_FIELDS-/bic/hrc_gblnd = ls_it0002-/bic/hrc_gblnd.
         RESULT_FIELDS-/bic/hrc_bland = ls_it0002-/bic/hrc_bland.       
         RESULT_FIELDS-/bic/hrc_gbort = ls_it0002-/bic/hrc_gbort.
         RESULT_FIELDS-/bic/hrc_natio = ls_it0002-/bic/hrc_natio.
         RESULT_FIELDS-/bic/hrc_nati2 = ls_it0002-/bic/hrc_nati2.
         RESULT_FIELDS-/bic/hrc_nati3 = ls_it0002-/bic/hrc_nati3.
         RESULT_FIELDS-/bic/noc_count = ls_it0002-/bic/noc_count.
         RESULT_FIELDS-/bic/hrc_famst = ls_it0002-/bic/hrc_famst.
         RESULT_FIELDS-/bic/hrc_famdt = ls_it0002-/bic/hrc_famdt.
         RESULT_FIELDS-/bic/hrc_fnamk = ls_it0002-/bic/hrc_fnamk.
         RESULT_FIELDS-/bic/hrc_fnamr = ls_it0002-/bic/hrc_fnamr.
         RESULT_FIELDS-/bic/hrc_lnamr = ls_it0002-/bic/hrc_lnamr.
         RESULT_FIELDS-/bic/hrc_nabik = ls_it0002-/bic/hrc_nabik.
         RESULT_FIELDS-/bic/hrc_nabir = ls_it0002-/bic/hrc_nabir.
         RESULT_FIELDS-/bic/hrc_nickk = ls_it0002-/bic/hrc_nickk.
         RESULT_FIELDS-/bic/hrc_nickr = ls_it0002-/bic/hrc_nickr.
      ENDIF.

******************************************************************
*** INFOTYP 0004
******************************************************************
      IF lv_val0004 IS NOT INITIAL.
         RESULT_FIELDS-/bic/hrc_sbgru = ls_it0004-/bic/hrc_sbgru.
         RESULT_FIELDS-/bic/hrk_sbpro = ls_it0004-/bic/hrk_sbpro.
         RESULT_FIELDS-/bic/hrc_sbart = ls_it0004-/bic/hrc_sbart.
         RESULT_FIELDS-/bic/hrc_sbfak = ls_it0004-/bic/hrc_sbfak.
         RESULT_FIELDS-/bic/hrc_sbdst = ls_it0004-/bic/hrc_sbdst.
         RESULT_FIELDS-/bic/hrc_sbgsz = ls_it0004-/bic/hrc_sbgsz.
         RESULT_FIELDS-/bic/hrc_sbadt = ls_it0004-/bic/hrc_sbadt.
         RESULT_FIELDS-/bic/hrc_sbaud = ls_it0004-/bic/hrc_sbaud.
         RESULT_FIELDS-/bic/hrc_wegdt = ls_it0004-/bic/hrc_wegdt.
         RESULT_FIELDS-/bic/hrc_dsitz = ls_it0004-/bic/hrc_dsitz.
         RESULT_FIELDS-/bic/hrc_nachw = ls_it0004-/bic/hrc_nachw.
      ENDIF.

******************************************************************
*** INFOTYP 0006
******************************************************************
      IF lv_val0006 IS NOT INITIAL.
         RESULT_FIELDS-/bic/hrc_anssa = ls_it0006-/bic/hrc_anssa.
         RESULT_FIELDS-/bic/hrc_coxxx = ls_it0006-/bic/hrc_coxxx.
         RESULT_FIELDS-/bic/hrc_stras = ls_it0006-/bic/hrc_stras.
         RESULT_FIELDS-/bic/hrc_ort01 = ls_it0006-/bic/hrc_ort01.
         RESULT_FIELDS-/bic/hrc_ort02 = ls_it0006-/bic/hrc_ort02.
         RESULT_FIELDS-/bic/hrc_pstlz = ls_it0006-/bic/hrc_pstlz.
         RESULT_FIELDS-/bic/hrc_land1 = ls_it0006-/bic/hrc_land1.
         RESULT_FIELDS-/bic/hrc_entkm = ls_it0006-/bic/hrc_entkm.
         RESULT_FIELDS-/bic/hrc_wkwng = ls_it0006-/bic/hrc_wkwng.
         RESULT_FIELDS-/bic/hrc_state = ls_it0006-/bic/hrc_state.
         RESULT_FIELDS-/bic/hrc_hsnmr = ls_it0006-/bic/hrc_hsnmr.
         RESULT_FIELDS-/bic/hrc_bldng = ls_it0006-/bic/hrc_bldng.
         RESULT_FIELDS-/BIC/HRC_FLOOR = ls_it0006-/BIC/HRC_FLOOR.
         RESULT_FIELDS-/BIC/NOC_COUNT = ls_it0006-/BIC/NOC_COUNT.
      ENDIF.

      APPEND RESULT_FIELDS TO RESULT_PACKAGE.
   ENDPROVIDE.
ENDLOOP.

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