Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

Moving data into final internal table

Former Member
0 Likes
2,210

Hi all,

I am having problem moving data into the final internal table.

The requirement is simple.

I am fetching data from PA0002 table.

And then I am fetching data from PA0006 table by using for all entries.

Now, I need to populate the final internal table with data from these 2 two internal table.

Have a look at my code.------

report YEMP_DATA no standard page heading line-size 355.

*********************************

  • TABLES USED *

*********************************

tables: PA0002,

PA0006.

*******************************************

  • DATA DECLARATION *

*******************************************

types: begin of TY_PA0002,

PERNR type PERSNO, "EMPLOYEE NUMBER

NACHN type NACHN, "LAST NAME

VORNA type VORNA, "FIRST NAME

MIDNM type PAD_MIDNM, "MIDDLE NAME

GBDAT type GBDAT , "DATE OF BIRTH

BEGDA type BEGDA, "DATE OF JOINING

PERID type PRDNI, "PERSONNEL ID

GESCH type GESCH, "GENDER KEY

end of TY_PA0002.

types: begin of TY_PA0006,

PERNR type PERSNO, "EMPLOYEE NUMBER

STRAS type STRAS, "STREET AND HOUSE NO.

PSTLZ type PSTLZ, "POSTAL CODE

end of TY_PA0006.

types: begin of TY_FINAL,

PERNR type PERSNO, "EMPLOYEE NUMBER

NACHN type NACHN, "LAST NAME

VORNA type VORNA, "FIRST NAME

MIDNM type PAD_MIDNM, "MIDDLE NAME

GBDAT type GBDAT , "DATE OF BIRTH

BEGDA type BEGDA, "DATE OF JOINING

PERID type PRDNI, "PERSONNEL ID

GESCH type GESCH, "GENDER KEY

STRAS type STRAS, "STREET AND HOUSE NO.

PSTLZ type PSTLZ, "POSTAL CODE

end of TY_FINAL.

******************************************

  • INTERNAL TABLE DECLARATION *

******************************************

data:IT_PA0002 type standard table of TY_PA0002 with header line,

IT_PA0006 type standard table of TY_PA0006 with header line,

IT_FINAL type standard table of TY_FINAL with header line.

**wa declaration**

*data:IT_PA0002 like line of IT_PA0002,

  • IT_PA0006 like line of IT_PA0006,

  • IT_FINAL like line of IT_FINAL.

******************************************

  • SELECTION SCREEN FOR INPUTS *

******************************************

*select-options : S_UNAME for p0002-UNAME.

******************************************

  • START-OF-SELECTION *

******************************************

select PERNR

NACHN

VORNA

MIDNM

GBDAT

BEGDA

PERID

GESCH

from PA0002

into table IT_PA0002

where UNAME = 'REDDYT'.

if not IT_PA0002[] is initial.

sort IT_PA0002 by PERNR.

endif.

loop at IT_PA0002.

IT_FINAL-PERNR = IT_PA0002-PERNR.

IT_FINAL-NACHN = IT_PA0002-NACHN.

IT_FINAL-VORNA = IT_PA0002-VORNA.

IT_FINAL-MIDNM = IT_PA0002-MIDNM.

IT_FINAL-GBDAT = IT_PA0002-GBDAT.

IT_FINAL-BEGDA = IT_PA0002-BEGDA.

IT_FINAL-PERID = IT_PA0002-PERID.

IT_FINAL-GESCH = IT_PA0002-GESCH.

append IT_FINAL.

endloop.

select PERNR

STRAS

PSTLZ

from PA0006

into table IT_PA0006

for all entries in IT_PA0002

where PERNR eq IT_PA0002-PERNR

and SUBTY = '1'.

sort IT_PA0006 by PERNR.

loop at IT_PA0006.

read table IT_PA0006 with key PERNR = IT_PA0002-PERNR binary search.

if SY-SUBRC ne 0.

clear IT_PA0006.

endif.

move IT_PA0006-STRAS to IT_FINAL-STRAS.

move IT_PA0006-PSTLZ to IT_FINAL-PSTLZ.

modify IT_FINAL.

endloop.

if not IT_FINAL[] is initial.

loop at IT_FINAL into IT_FINAL.

write:/10 IT_FINAL-PERNR,

20 IT_FINAL-NACHN,

30 IT_FINAL-VORNA,

40 IT_FINAL-MIDNM,

55 IT_FINAL-GBDAT,

70 IT_FINAL-BEGDA,

85 IT_FINAL-PERID,

100 IT_FINAL-GESCH,

115 IT_FINAL-STRAS,

130 IT_FINAL-PSTLZ.

endloop.

endif.

*************************************************************

Warm regards,

hari

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
1,319

any inputs please..

regards,

Hari

9 REPLIES 9
Read only

Former Member
0 Likes
1,320

any inputs please..

regards,

Hari

Read only

0 Likes
1,319

It would be better to do something like this:

1. Select into internal table it_pa0002 (like you did, but forget the append to IT_FINAL).

2. Select into internal table it_pa0002.

3. Loop at you IT_PA0002 and do a read on IT_PA0006.

4. Move all corresponding fields to IT_FINAL and do the append.

Good luck.

Read only

0 Likes
1,319

not able to understand. wirite only that part of code where u have doubt..

Read only

0 Likes
1,319

ya,

I will try that out.

Read only

0 Likes
1,319

Hi Poonam,

The internal table it_pa0002 has been populated.

The internal table it_pa0006 has also been populated.

Now need to populate the final internal table.

I will try out what Micky has said and get back.

Warm regards,

Hari

Read only

0 Likes
1,319

Micky,

It's working....

here's the code now----

report YEMP_DATA no standard page heading line-size 400.

*********************************

  • TABLES USED *

*********************************

tables: PA0002,

PA0006.

*******************************************

  • DATA DECLARATION *

*******************************************

types: begin of TY_PA0002,

PERNR type PERSNO, "EMPLOYEE NUMBER

NACHN type NACHN, "LAST NAME

VORNA type VORNA, "FIRST NAME

MIDNM type PAD_MIDNM, "MIDDLE NAME

GBDAT type GBDAT , "DATE OF BIRTH

BEGDA type BEGDA, "DATE OF JOINING

PERID type PRDNI, "PERSONNEL ID GESCH type GESCH, "GENDER KEY

end of TY_PA0002.

types: begin of TY_PA0006,

PERNR type PERSNO, "EMPLOYEE NUMBER

STRAS type STRAS, "STREET AND HOUSE NO.

PSTLZ type PSTLZ, "POSTAL CODE

end of TY_PA0006.

types: begin of TY_FINAL,

PERNR type PERSNO, "EMPLOYEE NUMBER

NACHN type NACHN, "LAST NAME

VORNA type VORNA, "FIRST NAME

MIDNM type PAD_MIDNM, "MIDDLE NAME

GBDAT type GBDAT , "DATE OF BIRTH

BEGDA type BEGDA, "DATE OF JOINING

PERID type PRDNI, "PERSONNEL ID

GESCH type GESCH, "GENDER KEY

STRAS type STRAS, "STREET AND HOUSE NO.

PSTLZ type PSTLZ, "POSTAL CODE

end of TY_FINAL.

******************************************

  • INTERNAL TABLE DECLARATION *

******************************************

data:IT_PA0002 type standard table of TY_PA0002 with header line,

IT_PA0006 type standard table of TY_PA0006 with header line,

IT_FINAL type standard table of TY_FINAL with header line.

******************************************

  • START-OF-SELECTION *

******************************************

select PERNR

NACHN

VORNA

MIDNM

GBDAT

BEGDA

PERID

GESCH

from PA0002

into table IT_PA0002

where UNAME = 'REDDYT'.

if not IT_PA0002[] is initial.

sort IT_PA0002 by PERNR.

endif.

select PERNR

STRAS

PSTLZ

from PA0006

into table IT_PA0006

for all entries in IT_PA0002

where PERNR eq IT_PA0002-PERNR

and SUBTY = '1'.

loop at IT_PA0002.

read table IT_PA0006 with key PERNR = IT_PA0002-PERNR binary search.

if SY-SUBRC = 0.

move-corresponding IT_PA0002 to IT_FINAL.

move-corresponding IT_PA0006 to IT_FINAL.

append IT_FINAL.

endif.

endloop.

if not IT_FINAL[] is initial.

loop at IT_FINAL into IT_FINAL.

write:/10 IT_FINAL-PERNR,

20 IT_FINAL-NACHN,

30 IT_FINAL-VORNA,

40 IT_FINAL-MIDNM,

55 IT_FINAL-GBDAT,

70 IT_FINAL-BEGDA,

85 IT_FINAL-PERID,

115 IT_FINAL-GESCH,

130 IT_FINAL-STRAS,

155 IT_FINAL-PSTLZ.

endloop.

endif.

Warm regards,

Hari Kiran

Read only

Former Member
0 Likes
1,319

hi,

you can do this:

select * from PA0002

into table it_PA0002.

select * from PA0006

into table it_PA0006

for all entries in it_PA0002

where condition.

so now u have data in it_PA0006.

Read only

0 Likes
1,319

Poonam ,

Need to move the data to the final internal table called

IT_FINAL.

It has fields from both the table.

Have a look at it's structure in my code.

Regards,

Hari

Read only

Former Member
0 Likes
1,319

Hari,

refer this code:

it_final is my final table.

*&---------------------------------------------------------------------*
*& Report  ZPAYROLL
*&
*&---------------------------------------------------------------------*
*& Module: ABAP HR
*& Writer: Amit Gujargoud
*& User: Payroll HR Team
*& Purpose: Update the Zpayroll table from extracting the data with sevral Infotypes
*& Creation Date: 04/10/2008
*& Revision:
*&---------------------------------------------------------------------*

REPORT  zpayroll.
TYPE-POOLS : slis.
TABLES: pernr, t001p.",hrpy_rgdir , hrpy_wpbp .

INFOTYPES: 0000,
           0001,
           0002,
           0006,
           0007,
           0008,
           0032,
           0065,
           0077,
           0041,
           0069.

*************************************************************************
** S E L E C T O P T I O N S
*************************************************************************
*************************************************************************
** P A R A M E T E R S
*************************************************************************
SELECTION-SCREEN : BEGIN OF BLOCK bloc1 WITH FRAME TITLE text-000.
PARAMETERS       : r_test RADIOBUTTON GROUP g1 DEFAULT 'X'.
PARAMETERS       : r_update RADIOBUTTON GROUP g1." DEFAULT 'X'.
PARAMETERS: dataset(132) LOWER CASE DEFAULT
                              '/saplocal/sapedi/out/payroll' NO-DISPLAY.

*SELECT-OPTIONS   : s_aedtm FOR p0000-aedtm OBLIGATORY.
SELECTION-SCREEN : END OF BLOCK bloc1.
************************************************************************
* D A T A
************************************************************************
** Internal Tables **
***** *******************************************************************

* Internal Table for Output

TYPES: BEGIN OF ty_output,
      pernr       TYPE pernr-pernr,        "Employee no
      vorna       TYPE pa0002-vorna,       "First Name
      nachn       TYPE pa0002-nachn,       "Sur name(Last name)
      name1       TYPE t500p-name1,        "Personnel Area text
      btext       TYPE t001p-btext,        "Personnel SubArea Text
      ptext       TYPE t501t-ptext,        "Employee Group text
      ptext_s     TYPE t503t-ptext,        "Employee SubGroup text
      plans_stext TYPE p1000-stext,        "Position Text
      ktext       TYPE cskt-ktext,         "Cost Center Name
      gbdat       TYPE pa0002-gbdat,       "Birth Date
      age(20)     TYPE c,
      hiredt      TYPE p0000-begda,        "Hire Date
      abb_exp(20) TYPE c,                  "ABB Experience
      mgrno       TYPE pernr-pernr,        "Manager emp.no
      END OF ty_output.


DATA: it_output TYPE STANDARD TABLE OF ty_output WITH HEADER LINE,
      wa_output LIKE LINE OF it_output.

DATA : BEGIN OF itab OCCURS 0,
          date LIKE sy-datum,
         END OF itab.
DATA: g_ostext        TYPE p1000-stext,
      g_sstext        TYPE p1000-stext,
      g_hiredt        TYPE d,
      g_flag          TYPE c,
      g_flag1         TYPE c.
DATA: l_days      TYPE num2,
      l_months    TYPE num2,
      l_years     TYPE num2,
      l_birth_dt  TYPE p0002-gbdat,
      l_exp_dt    TYPE p0002-gbdat,
      msg_handler TYPE REF TO if_hrpa_message_handler,
      l_text(60)  TYPE c.


DATA: it_fieldcat     TYPE slis_t_fieldcat_alv,
      wa_fieldcat     TYPE slis_fieldcat_alv,
      wa_layout       TYPE slis_layout_alv,
      g_repid         TYPE sy-repid.

DATA:  it_final TYPE zpayroll OCCURS 0 WITH HEADER LINE,
       t_ppbwla  TYPE STANDARD TABLE OF pbwla WITH HEADER LINE .
DATA:  f_ansal TYPE p0008-ansal.
DATA: BEGIN OF it_itab OCCURS 0,
      pernr TYPE char10,
      updte TYPE char1,
      chgdt TYPE char8,
      beg000 TYPE char8,
      stat1 TYPE char1,
      stat2 TYPE char1,
      stat3 TYPE char1,
      massn TYPE char2,
      massg TYPE char2,
      werks TYPE char4,
      btrtl TYPE char4,
      persg TYPE c,
      persk TYPE char2,
      kostl TYPE char10,
      beg001 TYPE char8,
      abkrs TYPE char2,
      ansvh TYPE char2,
       orgeh TYPE char8,
     orgutexts TYPE char25,
     plans TYPE char8,
     orgptexts TYPE char25,
     stell TYPE char8,
     orgdesc TYPE char25,
     beg002 TYPE char8,
     inits TYPE char10,
     nachn TYPE char40,
     vorna TYPE char40,
     gesch TYPE c,
     gbdat TYPE char8,
     perid TYPE char20,
     famst TYPE c,
     anred TYPE c,
     titel TYPE char15,
     gbort TYPE char40,
     name2 TYPE char40,
       natio TYPE char3,
     gblnd TYPE char3,
     beg006 TYPE char8,
     anssa TYPE char4,
     stras(60),
     locat(60),
     ort01 TYPE char40,
     state TYPE char3,
     pstlz TYPE char10,
     land1 TYPE char3,
     telnr TYPE char14,
     entkm TYPE char3,
     busrt TYPE char3,
     railw TYPE c,
     schkz TYPE char5,
     z_transport_mode TYPE char10,
     empct TYPE char5,
     mostd TYPE char5,
       wostd TYPE char5,
     arbst TYPE char4,
     jrstd TYPE char7,
     beg008 TYPE char8,
     trfar TYPE char2,
     trfgb TYPE char2,
     trfgr TYPE char8,
     trfst TYPE char2,
     ansal TYPE char15,
     lga01 TYPE char4,
     bet01 TYPE char13,
     lga02 TYPE char4,
     bet02 TYPE char13,
     lga03 TYPE char4,
     bet03 TYPE char13,
     lga04 TYPE char4,
     bet04 TYPE char13,
     pnalt TYPE char13,
       beg065 TYPE char8,
     txnum TYPE char5,
     txlet TYPE char2,
     txstk TYPE c,
     txbas TYPE c,
     txrfs TYPE c,
     p45py TYPE char9,
     p45tx TYPE char9,
     txnmb TYPE char6,
     racky TYPE char2,
     dar01 TYPE char2,
     dat01 TYPE char10,
     dar02 TYPE char2,
     dat02 TYPE char10,
     dar03 TYPE char2,
     dat03 TYPE char10,
     dar04 TYPE char2,
     dat04 TYPE char10,
       dar05 TYPE char2,
     dat05 TYPE char10,
     dar06 TYPE char2,
     dat06 TYPE char10,
     dar07 TYPE char2,
     dat07 TYPE char10,
     dar08 TYPE char2,
     dat08 TYPE char10,
     nicat TYPE char2,
  END OF it_itab.

DATA: wa_itab LIKE LINE OF it_itab.
*&---------------------------------------------------------------------
*
*& Initialization                                                      *
*&                                                                     *
*&---------------------------------------------------------------------*
*----------------------------------------------------------------------*
*                      AT SELECTION-SCREEN                             *
*----------------------------------------------------------------------*
AT SELECTION-SCREEN.
*  IF p_exp IS INITIAL AND p_age IS INITIAL.
*    SET CURSOR FIELD 'P_AGE'.
*    MESSAGE text-017 TYPE 'E'.
*  ENDIF.
*&---------------------------------------------------------------------*
*& Start-of Selection                                                  *
*&                                                                     *
*&---------------------------------------------------------------------*
START-OF-SELECTION.
*  CHECK sy-batch = ''.
*  MESSAGE 'Report can only be run in background press F9' TYPE 'I'.
*  LEAVE LIST-PROCESSING.

GET pernr.

  CLEAR it_output.
  CLEAR it_final.

* Read Infotype 0
  rp-provide-from-last p0000 space pn-begda pn-endda.

* Get Hire date of Employee
  CALL FUNCTION 'RP_GET_HIRE_DATE'
    EXPORTING
      persnr          = pernr-pernr
      check_infotypes = '0000'
    IMPORTING
      hiredate        = g_hiredt.
* Read Infotype 1
  rp-provide-from-last p0001 space pn-begda pn-endda.
  PERFORM get_orgtext.
* Read Infotype 2
  rp-provide-from-last p0002 space pn-begda pn-endda.
* Read Infotype 6
  rp-provide-from-last p0006 space pn-begda pn-endda.
* Read Infotype 7
  rp-provide-from-last p0007 space pn-begda pn-endda.
* Read Infotype 8
  rp-provide-from-last p0008 space pn-begda pn-endda.
  CLEAR:t_ppbwla-betrg,
        f_ansal.
  IF p0008-bet01 IS INITIAL.
    PERFORM wege_type.
    it_final-bet01 = t_ppbwla-betrg.
  ELSE.
    it_final-bet01 = p0008-bet01.
  ENDIF.
  IF p0008-ansal IS INITIAL.
    PERFORM get_ansal.
    it_final-ansal = f_ansal.
  ELSE.
    it_final-ansal = p0008-ansal.
  ENDIF.
* Read Infotype 32
  rp-provide-from-last p0032 space pn-begda pn-endda.
* Read Infotype 65
  rp-provide-from-last p0065 space pn-begda pn-endda.
* Read Infotype 77
  rp-provide-from-last p0077 space pn-begda pn-endda.
* Read Infotype 41
  rp-provide-from-last p0041 space pn-begda pn-endda.
* Read Infotype 69
  rp-provide-from-last p0069 space pn-begda pn-endda.
*****start of calculation of latest change date

  REFRESH itab[].
  itab-date = p0000-aedtm.
  APPEND itab.
  CLEAR itab.

  itab-date = p0001-aedtm.
  APPEND itab.
  CLEAR itab.

  itab-date = p0006-aedtm.
  APPEND itab.
  CLEAR itab.

  itab-date = p0007-aedtm.
  APPEND itab.
  CLEAR itab.

  itab-date = p0008-aedtm.
  APPEND itab.
  CLEAR itab.

  SORT itab BY date DESCENDING.

  READ TABLE itab  INDEX 1.

*write : itab-date.
*****end calculation of latest date
*  IF NOT p_age IS INITIAL.
*    PERFORM calculate_age.
*  ELSE.
*    g_flag = '1'.
*  ENDIF.

*  IF NOT p_exp IS INITIAL.
*    PERFORM calculate_exp.
*  ELSE.
*    g_flag1 = '1'.
*  ENDIF.

* Only consider employees which satisfies selection criteria
*  IF g_flag EQ '1' AND g_flag1 EQ '1'.
* Gather all the required information related to the emp
*  PERFORM get_details.
*  MOVE: pernr-pernr TO it_output-pernr,
*        p0002-vorna TO it_output-vorna,
*        p0002-nachn TO it_output-nachn,
*        p0002-gbdat TO it_output-gbdat,
*        g_sstext    TO it_output-plans_stext,
*        g_hiredt    TO it_output-hiredt.
*  APPEND it_output.
*data from p0000.
  it_final-pernr = p0000-pernr.
  it_final-updte = 'N'.
  it_final-stat1 = p0000-stat1.
  it_final-stat2 = p0000-stat2.
  it_final-stat3 = p0000-stat3.
  it_final-massn = p0000-massn.
  it_final-massg = p0000-massg.
  it_final-beg000 = p0000-begda.
*data from p0001
  it_final-werks = p0001-werks.
  it_final-btrtl = p0001-btrtl.
  it_final-persg = p0001-persg.
  it_final-persk = p0001-persk.
  it_final-kostl = p0001-kostl.
  it_final-abkrs = p0001-abkrs.
  it_final-ansvh = p0001-ansvh.
  it_final-orgeh = p0001-orgeh.
  it_final-plans = p0001-plans.
  it_final-stell = p0001-stell.
  it_final-abkrs = p0001-abkrs.
  it_final-beg001 = p0001-begda.
*  it_final-vorna =  p0001-ename.
*data from p0002
  it_final-inits = p0002-inits.
  it_final-nachn = p0002-nachn.
  it_final-vorna = p0002-vorna.
  it_final-gesch = p0002-gesch.
  it_final-gbdat = p0002-gbdat.
  it_final-perid = p0002-perid.
  it_final-famst = p0002-famst.
  it_final-anred = p0002-anred.
  it_final-titel = p0002-titel.
  it_final-gbort = p0002-gbort.
  it_final-name2 = p0002-name2.
  it_final-natio = p0002-natio.
  it_final-gblnd = p0002-gblnd.
  it_final-beg002 = p0002-begda.
*data from p0006
  it_final-anssa = p0006-anssa.
  it_final-stras = p0006-stras.
  it_final-locat = p0006-locat.
  it_final-ort01 = p0006-ort01.
  it_final-state = p0006-state.
  it_final-pstlz = p0006-pstlz.
  it_final-land1 = p0006-land1.
  it_final-telnr = p0006-telnr.
  it_final-entkm = p0006-entkm.
  it_final-busrt = p0006-busrt.
  it_final-railw = p0006-railw.
  it_final-z_transport_mode  = p0006-z_transp_mode.
  it_final-beg006 = p0006-begda.
*data from p0007
  it_final-schkz = p0007-schkz.
  it_final-empct = p0007-empct.
  it_final-mostd = p0007-mostd.
  it_final-wostd = p0007-wostd.
  it_final-arbst = p0007-arbst.
  it_final-jrstd = p0007-jrstd.
*  it_final-beg007 = p0007-begda.
*data from p0008
  it_final-trfar = p0008-trfar.
  it_final-trfgb = p0008-trfgb.
  it_final-trfgr = p0008-trfgr.
  it_final-trfst = p0008-trfst.
*  it_final-ansal = p0008-ansal."comes from function module
  it_final-lga01 = p0008-lga01.
*  it_final-bet01 = p0008-bet01.
*  it_final-bet01 = t_ppbwla-betrg.
  it_final-lga02 = p0008-lga02.
  it_final-bet02 = p0008-bet02.
  it_final-lga03 = p0008-lga03.
  it_final-bet03 = p0008-bet03.
  it_final-lga04 = p0008-lga04.
  it_final-bet04 = p0008-bet04.
  it_final-beg008 = p0008-begda.
*data from p0032
  it_final-pnalt = p0032-pnalt.
*  it_final-beg032 = p0032-begda.
*data from p0065
  it_final-txnum = p0065-txnum.
  it_final-txlet = p0065-txlet.
  it_final-txstk = p0065-txstk.
  it_final-txbas = p0065-txbas.
  it_final-txrfs = p0065-txrfs.
  it_final-p45py = p0065-p45py.
  it_final-p45tx = p0065-p45tx.
*  it_final-TXRFVTRFAR = p0065-TXRFVTRFAR.
  it_final-txnmb = p0065-txnmb.
  it_final-beg065 = p0065-begda.
*data from p0077
  it_final-racky = p0077-racky.
*  it_final-beg077 = p0077-begda.
*data from p0041
  it_final-dar01 = p0041-dar01.
  it_final-dat01 = p0041-dat01.
  it_final-dar02 = p0041-dar02.
  it_final-dat02 = p0041-dat02.
  it_final-dar03 = p0041-dar03.
  it_final-dat03 = p0041-dat03.
  it_final-dar04 = p0041-dar04.
  it_final-dat04 = p0041-dat04.
  it_final-dar05 = p0041-dar05.
  it_final-dat05 = p0041-dat05.
  it_final-dar06 = p0041-dar06.
  it_final-dat06 = p0041-dat06.
  it_final-dar07 = p0041-dar07.
  it_final-dat07 = p0041-dat07.
  it_final-dar08 = p0041-dar08.
  it_final-dat08 = p0041-dat08.
*  it_final-beg041 = p0041-begda.
*data from p0069
  it_final-nicat = p0069-nicat.
*  it_final-beg069 = p0069-begda.
  IF itab-date BETWEEN pn-begda AND pn-endda."check whether the record exsist between begin and end date.
    APPEND it_final.

    IF p0000-aedtm GT p0000-begda OR p0001-aedtm GT p0001-begda OR p0006-aedtm GT p0006-begda
        OR p0007-aedtm GT p0007-begda OR p0008-aedtm GT p0008-begda.
      it_final-updte = 'U'.
      it_final-chgdt = itab-date.
      MODIFY it_final INDEX sy-tabix.
    ENDIF.

    IF r_update = 'X'.

      INSERT zpayroll FROM  it_final.
*  modify zpayroll FROM  it_final.
      IF sy-subrc = 0.
        COMMIT WORK.
      ELSE.
        UPDATE zpayroll FROM it_final.
        IF sy-subrc = 0.
          COMMIT WORK.
        ENDIF.
      ENDIF.
    ENDIF.
  ENDIF.
  CLEAR it_final.
*  ENDIF.
  CLEAR: it_output, g_ostext, g_sstext, g_hiredt,g_flag,g_flag1.
*&---------------------------------------------------------------------*
*& End-of Selection                                                    *
*&                                                                     *
*&---------------------------------------------------------------------*
END-OF-SELECTION.
  IF r_update = 'X'.
    PERFORM file_write.
  ENDIF.
  PERFORM f_generate_alv.

*&---------------------------------------------------------------------*
*& Forms                                                               *
*&---------------------------------------------------------------------*

*&---------------------------------------------------------------------*
*&      Form  f_get_approver_from_HRP1001
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
*FORM f_get_approver_from_hrp1001 .
*
*  DATA: l_sobid1 TYPE sobid,
*        l_sobid2 TYPE sobid,
*        l_sobid3 TYPE sobid.
*
**Get the position of the Employee
*  SELECT SINGLE sobid FROM hrp1001 INTO l_sobid1
*   WHERE otype = 'P'
*   AND   plvar = '01'
*   AND   objid = pernr-pernr
*   AND   endda >= sy-datum
*   AND   begda <= sy-datum
*   AND   rsign = 'B'
*   AND   relat = '008'.
*
*  IF sy-subrc EQ 0.
*
**Get the position of his superior
*    SELECT SINGLE sobid FROM hrp1001 INTO l_sobid2
*      WHERE otype = 'S'
*      AND   plvar = '01'
*      AND   objid = l_sobid1
*      AND   endda >= sy-datum
*      AND   begda <= sy-datum
*      AND   rsign = 'A'
*      AND   relat = '002'.
*
*    IF sy-subrc EQ 0.
**Get the pernr of superior
*      SELECT SINGLE sobid FROM hrp1001 INTO l_sobid3
*        WHERE otype = 'S'
*        AND   plvar = '01'
*        AND   objid = l_sobid2
*        AND   endda >= sy-datum
*        AND   begda <= sy-datum
*        AND   rsign = 'A'
*        AND   relat = '008'.
*
*      IF sy-subrc EQ 0.
**move  ls_sobid3 to empid.
*        it_output-mgrno = l_sobid3.
*      ENDIF.
*    ENDIF.
*  ENDIF.
*ENDFORM.                    " f_get_approver_from_HRP1001

*&---------------------------------------------------------------------*
*&      Form  F_GENERATE_ALV
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM f_generate_alv .

  g_repid = sy-repid.
  PERFORM f_populate_fieldcat.
*  PERFORM fill_zpayroll.
  PERFORM f_call_alv.

ENDFORM.                    " F_GENERATE_ALV


*&---------------------------------------------------------------------*
*&      Form  f_populate_fieldcat
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM f_populate_fieldcat .

  "Employee Number
  CLEAR wa_fieldcat.
  wa_fieldcat-tabname     = it_final.
  wa_fieldcat-fieldname   = 'PERNR'.
  wa_fieldcat-seltext_l   = text-001.
  wa_fieldcat-outputlen   = 15.
  APPEND wa_fieldcat TO it_fieldcat.

  "Update indicator
  CLEAR wa_fieldcat.
  wa_fieldcat-tabname     = it_final.
  wa_fieldcat-fieldname   = 'UPDTE'.
  wa_fieldcat-seltext_l   = 'Update indicator'.
  wa_fieldcat-outputlen   = 15.
  APPEND wa_fieldcat TO it_fieldcat.

  "Date of last update
  CLEAR wa_fieldcat.
  wa_fieldcat-tabname     = it_final.
  wa_fieldcat-fieldname   = 'CHGDT'.
  wa_fieldcat-seltext_l   = 'Date of last update '.
  wa_fieldcat-outputlen   = 15.
  APPEND wa_fieldcat TO it_fieldcat.

  "First Name
  CLEAR wa_fieldcat.
  wa_fieldcat-tabname     = it_final.
  wa_fieldcat-fieldname   = 'STAT1'.
  wa_fieldcat-seltext_l   = 'Company specific Status'.
  wa_fieldcat-outputlen   = 15.
  APPEND wa_fieldcat TO it_fieldcat.

  "Last Name
  CLEAR wa_fieldcat.
  wa_fieldcat-tabname     = it_final.
  wa_fieldcat-fieldname   = 'NACHN'.
  wa_fieldcat-seltext_l   = text-003.
  wa_fieldcat-outputlen   = 15.
  APPEND wa_fieldcat TO it_fieldcat.

  "Personnel Area
  CLEAR wa_fieldcat.
  wa_fieldcat-tabname     = it_final.
  wa_fieldcat-fieldname   = 'STAT2'.
  wa_fieldcat-seltext_l   = 'Employment Status'.
  wa_fieldcat-outputlen   = 15.
  APPEND wa_fieldcat TO it_fieldcat.

  "Personnel Sub Area Text
  CLEAR wa_fieldcat.
  wa_fieldcat-tabname     = it_final.
  wa_fieldcat-fieldname   = 'STAT3'.
  wa_fieldcat-seltext_l   = 'Special payment Status'.
  wa_fieldcat-outputlen   = 15.
  APPEND wa_fieldcat TO it_fieldcat.

  "Employee Group
  CLEAR wa_fieldcat.
  wa_fieldcat-tabname     = it_final.
  wa_fieldcat-fieldname   = 'MASSN'.
  wa_fieldcat-seltext_l   = 'Personnel Action Type'.
  wa_fieldcat-outputlen   = 15.
  APPEND wa_fieldcat TO it_fieldcat.

  "Emp SubGroup
  CLEAR wa_fieldcat.
  wa_fieldcat-tabname     = it_final.
  wa_fieldcat-fieldname   = 'MASSG'.
  wa_fieldcat-seltext_l   = 'Reason for Actions'.
  wa_fieldcat-outputlen   = 15.
  APPEND wa_fieldcat TO it_fieldcat.

  "Position text
  CLEAR wa_fieldcat.
  wa_fieldcat-tabname     = it_final.
  wa_fieldcat-fieldname   = 'WERKS'.
  wa_fieldcat-seltext_l   = 'Personnel Area'.
  wa_fieldcat-outputlen   = 15.
  APPEND wa_fieldcat TO it_fieldcat.

  "Birth Date
  CLEAR wa_fieldcat.
  wa_fieldcat-tabname     = it_final.
  wa_fieldcat-fieldname   = 'BTRTL'.
  wa_fieldcat-seltext_l   = 'Personnel Sub-area'.
  wa_fieldcat-outputlen   = 15.
  APPEND wa_fieldcat TO it_fieldcat.

*  CONCATENATE text-011 '(' s_aedtm-low+6(2) '-' s_aedtm-low+4(2)
*              '-' s_aedtm-low+0(4) ')' INTO l_text.

  "Employee Age
  CLEAR wa_fieldcat.
  wa_fieldcat-tabname     = it_final.
  wa_fieldcat-fieldname   = 'PERSG'.
  wa_fieldcat-seltext_l   = 'Employee Group'.
  wa_fieldcat-outputlen   = 15.
  APPEND wa_fieldcat TO it_fieldcat.
  CLEAR l_text.

  "Hire Date
  CLEAR wa_fieldcat.
  wa_fieldcat-tabname     = it_final.
  wa_fieldcat-fieldname   = 'PERSK'.
  wa_fieldcat-seltext_l   = 'Employee Group'.
  wa_fieldcat-outputlen   = 15.
  APPEND wa_fieldcat TO it_fieldcat.
  CLEAR l_text.

*  CONCATENATE text-009 '(' s_aedtm-low+6(2) '-' s_aedtm-low+4(2)
*              '-' s_aedtm-low+0(4) ')' INTO l_text.

  "ABB Exp (Years)
**  CLEAR wa_fieldcat.
*  wa_fieldcat-tabname     = it_output.
*  wa_fieldcat-fieldname   = 'ABB_EXP'.
*  wa_fieldcat-seltext_l   = l_text.
*  wa_fieldcat-outputlen   = 15.
*  APPEND wa_fieldcat TO it_fieldcat.
*  CLEAR l_text.

  "Manager
  CLEAR wa_fieldcat.
  wa_fieldcat-tabname     = it_final.
  wa_fieldcat-fieldname   = 'KOSTL'.
  wa_fieldcat-seltext_l   = 'Cost Center'.
  wa_fieldcat-outputlen   = 15.
  APPEND wa_fieldcat TO it_fieldcat.

  "Cost Center
  CLEAR wa_fieldcat.
  wa_fieldcat-tabname     = it_final.
  wa_fieldcat-fieldname   = 'ABKRS'.
  wa_fieldcat-seltext_l   = 'Payroll Area'.
  wa_fieldcat-outputlen   = 15.
  APPEND wa_fieldcat TO it_fieldcat.

  CLEAR wa_fieldcat.
  wa_fieldcat-tabname     = it_final.
  wa_fieldcat-fieldname   = 'ANSVH'.
  wa_fieldcat-seltext_l   = 'Work Contract'.
  wa_fieldcat-outputlen   = 15.
  APPEND wa_fieldcat TO it_fieldcat.

  CLEAR wa_fieldcat.
  wa_fieldcat-tabname     = it_final.
  wa_fieldcat-fieldname   = 'ORGEH'.
  wa_fieldcat-seltext_l   = 'Organizational Unit'.
  wa_fieldcat-outputlen   = 15.
  APPEND wa_fieldcat TO it_fieldcat.

  CLEAR wa_fieldcat.
  wa_fieldcat-tabname     = it_final.
  wa_fieldcat-fieldname   = 'ORGUTEXTS'.
  wa_fieldcat-seltext_l   = 'Org. Unit Text'.
  wa_fieldcat-outputlen   = 15.
  APPEND wa_fieldcat TO it_fieldcat.

  CLEAR wa_fieldcat.
  wa_fieldcat-tabname     = it_final.
  wa_fieldcat-fieldname   = 'PLANS'.
  wa_fieldcat-seltext_l   = 'Position'.
  wa_fieldcat-outputlen   = 15.
  APPEND wa_fieldcat TO it_fieldcat.

  CLEAR wa_fieldcat.
  wa_fieldcat-tabname     = it_final.
  wa_fieldcat-fieldname   = 'ORGPTEXTS'.
  wa_fieldcat-seltext_l   = 'Position Text'.
  wa_fieldcat-outputlen   = 15.
  APPEND wa_fieldcat TO it_fieldcat.

  CLEAR wa_fieldcat.
  wa_fieldcat-tabname     = it_final.
  wa_fieldcat-fieldname   = 'STELL'.
  wa_fieldcat-seltext_l   = 'Job'.
  wa_fieldcat-outputlen   = 15.
  APPEND wa_fieldcat TO it_fieldcat.

  CLEAR wa_fieldcat.
  wa_fieldcat-tabname     = it_final.
  wa_fieldcat-fieldname   = 'ORGDESC'.
  wa_fieldcat-seltext_l   = 'Description'.
  wa_fieldcat-outputlen   = 15.
  APPEND wa_fieldcat TO it_fieldcat.

  CLEAR wa_fieldcat.
  wa_fieldcat-tabname     = it_final.
  wa_fieldcat-fieldname   = 'ABKRS'.
  wa_fieldcat-seltext_l   = 'Payroll frequency'.
  wa_fieldcat-outputlen   = 15.
  APPEND wa_fieldcat TO it_fieldcat.

  CLEAR wa_fieldcat.
  wa_fieldcat-tabname     = it_final.
  wa_fieldcat-fieldname   = 'INITS'.
  wa_fieldcat-seltext_l   = 'Initials'.
  wa_fieldcat-outputlen   = 15.
  APPEND wa_fieldcat TO it_fieldcat.

*  CLEAR wa_fieldcat.
*  wa_fieldcat-tabname     = it_final.
*  wa_fieldcat-fieldname   = 'NACHN'.
*  wa_fieldcat-seltext_l   = 'Last name'.
*  wa_fieldcat-outputlen   = 15.
*  APPEND wa_fieldcat TO it_fieldcat.

  CLEAR wa_fieldcat.
  wa_fieldcat-tabname     = it_final.
  wa_fieldcat-fieldname   = 'VORNA'.
  wa_fieldcat-seltext_l   = 'First Name'.
  wa_fieldcat-outputlen   = 15.
  APPEND wa_fieldcat TO it_fieldcat.

  CLEAR wa_fieldcat.
  wa_fieldcat-tabname     = it_final.
  wa_fieldcat-fieldname   = 'GESCH'.
  wa_fieldcat-seltext_l   = 'Gender'.
  wa_fieldcat-outputlen   = 15.
  APPEND wa_fieldcat TO it_fieldcat.

  CLEAR wa_fieldcat.
  wa_fieldcat-tabname     = it_final.
  wa_fieldcat-fieldname   = 'GBDAT'.
  wa_fieldcat-seltext_l   = 'date of Birth'.
  wa_fieldcat-outputlen   = 15.
  APPEND wa_fieldcat TO it_fieldcat.

  CLEAR wa_fieldcat.
  wa_fieldcat-tabname     = it_final.
  wa_fieldcat-fieldname   = 'PERID'.
  wa_fieldcat-seltext_l   = 'Soc/SIN/ID number'.
  wa_fieldcat-outputlen   = 15.
  APPEND wa_fieldcat TO it_fieldcat.

  CLEAR wa_fieldcat.
  wa_fieldcat-tabname     = it_final.
  wa_fieldcat-fieldname   = 'FAMST'.
  wa_fieldcat-seltext_l   = 'Marital Status'.
  wa_fieldcat-outputlen   = 15.
  APPEND wa_fieldcat TO it_fieldcat.

  CLEAR wa_fieldcat.
  wa_fieldcat-tabname     = it_final.
  wa_fieldcat-fieldname   = 'ANRED'.
  wa_fieldcat-seltext_l   = 'Form of Address'.
  wa_fieldcat-outputlen   = 15.
  APPEND wa_fieldcat TO it_fieldcat.

  CLEAR wa_fieldcat.
  wa_fieldcat-tabname     = it_final.
  wa_fieldcat-fieldname   = 'TITEL'.
  wa_fieldcat-seltext_l   = 'TITEL'.
  wa_fieldcat-outputlen   = 15.
  APPEND wa_fieldcat TO it_fieldcat.

  CLEAR wa_fieldcat.
  wa_fieldcat-tabname     = it_final.
  wa_fieldcat-fieldname   = 'GBORT'.
  wa_fieldcat-seltext_l   = 'Birth Place'.
  wa_fieldcat-outputlen   = 15.
  APPEND wa_fieldcat TO it_fieldcat.

  CLEAR wa_fieldcat.
  wa_fieldcat-tabname     = it_final.
  wa_fieldcat-fieldname   = 'NAME2'.
  wa_fieldcat-seltext_l   = 'Birth Name'.
  wa_fieldcat-outputlen   = 15.
  APPEND wa_fieldcat TO it_fieldcat.

  CLEAR wa_fieldcat.
  wa_fieldcat-tabname     = it_final.
  wa_fieldcat-fieldname   = 'NATIO'.
  wa_fieldcat-seltext_l   = 'Nationality'.
  wa_fieldcat-outputlen   = 15.
  APPEND wa_fieldcat TO it_fieldcat.

  CLEAR wa_fieldcat.
  wa_fieldcat-tabname     = it_final.
  wa_fieldcat-fieldname   = 'GBLND'.
  wa_fieldcat-seltext_l   = 'Country of Birth'.
  wa_fieldcat-outputlen   = 15.
  APPEND wa_fieldcat TO it_fieldcat.

  CLEAR wa_fieldcat.
  wa_fieldcat-tabname     = it_final.
  wa_fieldcat-fieldname   = 'ANSSA'.
  wa_fieldcat-seltext_l   = 'Address record type'.
  wa_fieldcat-outputlen   = 15.
  APPEND wa_fieldcat TO it_fieldcat.

  CLEAR wa_fieldcat.
  wa_fieldcat-tabname     = it_final.
  wa_fieldcat-fieldname   = 'STRAS'.
  wa_fieldcat-seltext_l   = 'Address Line 1'.
  wa_fieldcat-outputlen   = 15.
  APPEND wa_fieldcat TO it_fieldcat.

  CLEAR wa_fieldcat.
  wa_fieldcat-tabname     = it_final.
  wa_fieldcat-fieldname   = 'LOCAT'.
  wa_fieldcat-seltext_l   = 'Address Line 2'.
  wa_fieldcat-outputlen   = 15.
  APPEND wa_fieldcat TO it_fieldcat.


  CLEAR wa_fieldcat.
  wa_fieldcat-tabname     = it_final.
  wa_fieldcat-fieldname   = 'ORT01'.
  wa_fieldcat-seltext_l   = 'City'.
  wa_fieldcat-outputlen   = 15.
  APPEND wa_fieldcat TO it_fieldcat.

  CLEAR wa_fieldcat.
  wa_fieldcat-tabname     = it_final.
  wa_fieldcat-fieldname   = 'STATE'.
  wa_fieldcat-seltext_l   = 'State/Province'.
  wa_fieldcat-outputlen   = 15.
  APPEND wa_fieldcat TO it_fieldcat.

  CLEAR wa_fieldcat.
  wa_fieldcat-tabname     = it_final.
  wa_fieldcat-fieldname   = 'PSTLZ'.
  wa_fieldcat-seltext_l   = 'Postal Code/Zip'.
  wa_fieldcat-outputlen   = 15.
  APPEND wa_fieldcat TO it_fieldcat.

  CLEAR wa_fieldcat.
  wa_fieldcat-tabname     = it_final.
  wa_fieldcat-fieldname   = 'LAND1'.
  wa_fieldcat-seltext_l   = 'Country'.
  wa_fieldcat-outputlen   = 15.
  APPEND wa_fieldcat TO it_fieldcat.

  CLEAR wa_fieldcat.
  wa_fieldcat-tabname     = it_final.
  wa_fieldcat-fieldname   = 'TELNR'.
  wa_fieldcat-seltext_l   = 'Telephone'.
  wa_fieldcat-outputlen   = 15.
  APPEND wa_fieldcat TO it_fieldcat.

  CLEAR wa_fieldcat.
  wa_fieldcat-tabname     = it_final.
  wa_fieldcat-fieldname   = 'ENTKM'.
  wa_fieldcat-seltext_l   = 'Distance in km'.
  wa_fieldcat-outputlen   = 15.
  APPEND wa_fieldcat TO it_fieldcat.

  CLEAR wa_fieldcat.
  wa_fieldcat-tabname     = it_final.
  wa_fieldcat-fieldname   = 'BUSRT'.
  wa_fieldcat-seltext_l   = 'Bus Route'.
  wa_fieldcat-outputlen   = 15.
  APPEND wa_fieldcat TO it_fieldcat.

  CLEAR wa_fieldcat.
  wa_fieldcat-tabname     = it_final.
  wa_fieldcat-fieldname   = 'RAILW'.
  wa_fieldcat-seltext_l   = 'Social subscription railway'.
  wa_fieldcat-outputlen   = 15.
  APPEND wa_fieldcat TO it_fieldcat.


  CLEAR wa_fieldcat.
  wa_fieldcat-tabname     = it_final.
  wa_fieldcat-fieldname   = 'Z_TRANSPORT_MODE'.
  wa_fieldcat-seltext_l   = 'Mode of Transport'.
  wa_fieldcat-outputlen   = 15.
  APPEND wa_fieldcat TO it_fieldcat.

  CLEAR wa_fieldcat.
  wa_fieldcat-tabname     = it_final.
  wa_fieldcat-fieldname   = 'SCHKZ'.
  wa_fieldcat-seltext_l   = 'Work Schedule Rule'.
  wa_fieldcat-outputlen   = 15.
  APPEND wa_fieldcat TO it_fieldcat.

  CLEAR wa_fieldcat.
  wa_fieldcat-tabname     = it_final.
  wa_fieldcat-fieldname   = 'EMPCT'.
  wa_fieldcat-seltext_l   = 'Employment %'.
  wa_fieldcat-outputlen   = 15.
  APPEND wa_fieldcat TO it_fieldcat.

  CLEAR wa_fieldcat.
  wa_fieldcat-tabname     = it_final.
  wa_fieldcat-fieldname   = 'MOSTD'.
  wa_fieldcat-seltext_l   = 'Monthly Hours'.
  wa_fieldcat-outputlen   = 15.
  APPEND wa_fieldcat TO it_fieldcat.

  CLEAR wa_fieldcat.
  wa_fieldcat-tabname     = it_final.
  wa_fieldcat-fieldname   = 'WOSTD'.
  wa_fieldcat-seltext_l   = 'Weekly Hours'.
  wa_fieldcat-outputlen   = 15.
  APPEND wa_fieldcat TO it_fieldcat.

  CLEAR wa_fieldcat.
  wa_fieldcat-tabname     = it_final.
  wa_fieldcat-fieldname   = 'ARBST'.
  wa_fieldcat-seltext_l   = 'Daily Working hrs'.
  wa_fieldcat-outputlen   = 15.
  APPEND wa_fieldcat TO it_fieldcat.

  CLEAR wa_fieldcat.
  wa_fieldcat-tabname     = it_final.
  wa_fieldcat-fieldname   = 'JRSTD'.
  wa_fieldcat-seltext_l   = 'Annual Working hrs'.
  wa_fieldcat-outputlen   = 15.
  APPEND wa_fieldcat TO it_fieldcat.

  CLEAR wa_fieldcat.
  wa_fieldcat-tabname     = it_final.
  wa_fieldcat-fieldname   = 'TRFAR'.
  wa_fieldcat-seltext_l   = 'Pay scale type'.
  wa_fieldcat-outputlen   = 15.
  APPEND wa_fieldcat TO it_fieldcat.

  CLEAR wa_fieldcat.
  wa_fieldcat-tabname     = it_final.
  wa_fieldcat-fieldname   = 'TRFGB'.
  wa_fieldcat-seltext_l   = 'Pay Scale Area'.
  wa_fieldcat-outputlen   = 15.
  APPEND wa_fieldcat TO it_fieldcat.

  CLEAR wa_fieldcat.
  wa_fieldcat-tabname     = it_final.
  wa_fieldcat-fieldname   = 'TRFGR'.
  wa_fieldcat-seltext_l   = 'Pay Scale Group'.
  wa_fieldcat-outputlen   = 15.
  APPEND wa_fieldcat TO it_fieldcat.

  CLEAR wa_fieldcat.
  wa_fieldcat-tabname     = it_final.
  wa_fieldcat-fieldname   = 'TRFST'.
  wa_fieldcat-seltext_l   = 'Pay Scale Level'.
  wa_fieldcat-outputlen   = 15.
  APPEND wa_fieldcat TO it_fieldcat.

  CLEAR wa_fieldcat.
  wa_fieldcat-tabname     = it_final.
  wa_fieldcat-fieldname   = 'ANSAL'.
  wa_fieldcat-seltext_l   = 'Annual Salary'.
  wa_fieldcat-outputlen   = 15.
  APPEND wa_fieldcat TO it_fieldcat.

  CLEAR wa_fieldcat.
  wa_fieldcat-tabname     = it_final.
  wa_fieldcat-fieldname   = 'LGA01'.
  wa_fieldcat-seltext_l   = 'LGA01'.
  wa_fieldcat-outputlen   = 15.
  APPEND wa_fieldcat TO it_fieldcat.

  CLEAR wa_fieldcat.
  wa_fieldcat-tabname     = it_final.
  wa_fieldcat-fieldname   = 'BET01'.
  wa_fieldcat-seltext_l   = 'Wage Type Amount for Payments'.
  wa_fieldcat-outputlen   = 15.
  APPEND wa_fieldcat TO it_fieldcat.

  CLEAR wa_fieldcat.
  wa_fieldcat-tabname     = it_final.
  wa_fieldcat-fieldname   = 'LGA02 '.
  wa_fieldcat-seltext_l   = 'Wage Type'.
  wa_fieldcat-outputlen   = 15.
  APPEND wa_fieldcat TO it_fieldcat.

  CLEAR wa_fieldcat.
  wa_fieldcat-tabname     = it_final.
  wa_fieldcat-fieldname   = 'BET02'.
  wa_fieldcat-seltext_l   = 'Wage Type Amount for Payments'.
  wa_fieldcat-outputlen   = 15.
  APPEND wa_fieldcat TO it_fieldcat.

  CLEAR wa_fieldcat.
  wa_fieldcat-tabname     = it_final.
  wa_fieldcat-fieldname   = 'LGA03'.
  wa_fieldcat-seltext_l   = 'Wage Type'.
  wa_fieldcat-outputlen   = 15.
  APPEND wa_fieldcat TO it_fieldcat.

  CLEAR wa_fieldcat.
  wa_fieldcat-tabname     = it_final.
  wa_fieldcat-fieldname   = 'BET03'.
  wa_fieldcat-seltext_l   = 'Wage Type Amount for Payments'.
  wa_fieldcat-outputlen   = 15.
  APPEND wa_fieldcat TO it_fieldcat.

  CLEAR wa_fieldcat.
  wa_fieldcat-tabname     = it_final.
  wa_fieldcat-fieldname   = 'LGA04'.
  wa_fieldcat-seltext_l   = 'Wage Type'.
  wa_fieldcat-outputlen   = 15.
  APPEND wa_fieldcat TO it_fieldcat.

  CLEAR wa_fieldcat.
  wa_fieldcat-tabname     = it_final.
  wa_fieldcat-fieldname   = 'BET04'.
  wa_fieldcat-seltext_l   = 'Wage Type Amount for Payments'.
  wa_fieldcat-outputlen   = 15.
  APPEND wa_fieldcat TO it_fieldcat.

  CLEAR wa_fieldcat.
  wa_fieldcat-tabname     = it_final.
  wa_fieldcat-fieldname   = 'PNALT'.
  wa_fieldcat-seltext_l   = 'Previous Employment Number'.
  wa_fieldcat-outputlen   = 15.
  APPEND wa_fieldcat TO it_fieldcat.

  CLEAR wa_fieldcat.
  wa_fieldcat-tabname     = it_final.
  wa_fieldcat-fieldname   = 'TXNUM'.
  wa_fieldcat-seltext_l   = 'Text number'.
  wa_fieldcat-outputlen   = 15.
  APPEND wa_fieldcat TO it_fieldcat.

  CLEAR wa_fieldcat.
  wa_fieldcat-tabname     = it_final.
  wa_fieldcat-fieldname   = 'TXLET'.
  wa_fieldcat-seltext_l   = 'Tax indicator'.
  wa_fieldcat-outputlen   = 15.
  APPEND wa_fieldcat TO it_fieldcat.

  CLEAR wa_fieldcat.
  wa_fieldcat-tabname     = it_final.
  wa_fieldcat-fieldname   = 'TXSTK'.
  wa_fieldcat-seltext_l   = 'On strike indicator'.
  wa_fieldcat-outputlen   = 15.
  APPEND wa_fieldcat TO it_fieldcat.

  CLEAR wa_fieldcat.
  wa_fieldcat-tabname     = it_final.
  wa_fieldcat-fieldname   = 'TXBAS'.
  wa_fieldcat-seltext_l   = 'Tax basis'.
  wa_fieldcat-outputlen   = 15.
  APPEND wa_fieldcat TO it_fieldcat.

  CLEAR wa_fieldcat.
  wa_fieldcat-tabname     = it_final.
  wa_fieldcat-fieldname   = 'TXRFS'.
  wa_fieldcat-seltext_l   = 'Tax refund indicator'.
  wa_fieldcat-outputlen   = 15.
  APPEND wa_fieldcat TO it_fieldcat.

  CLEAR wa_fieldcat.
  wa_fieldcat-tabname     = it_final.
  wa_fieldcat-fieldname   = 'P45PY'.
  wa_fieldcat-seltext_l   = 'P45 taxable pay'.
  wa_fieldcat-outputlen   = 15.
  APPEND wa_fieldcat TO it_fieldcat.

  CLEAR wa_fieldcat.
  wa_fieldcat-tabname     = it_final.
  wa_fieldcat-fieldname   = 'P45TX'.
  wa_fieldcat-seltext_l   = 'P45 tax paid'.
  wa_fieldcat-outputlen   = 15.
  APPEND wa_fieldcat TO it_fieldcat.

  CLEAR wa_fieldcat.
  wa_fieldcat-tabname     = it_final.
  wa_fieldcat-fieldname   = 'TXNMB'.
  wa_fieldcat-seltext_l   = 'Tax Number'.
  wa_fieldcat-outputlen   = 15.
  APPEND wa_fieldcat TO it_fieldcat.

  CLEAR wa_fieldcat.
  wa_fieldcat-tabname     = it_final.
  wa_fieldcat-fieldname   = 'RACKY'.
  wa_fieldcat-seltext_l   = 'Ethnic origin'.
  wa_fieldcat-outputlen   = 15.
  APPEND wa_fieldcat TO it_fieldcat.

  CLEAR wa_fieldcat.
  wa_fieldcat-tabname     = it_final.
  wa_fieldcat-fieldname   = 'DAR01'.
  wa_fieldcat-seltext_l   = 'Date Type 01'.
  wa_fieldcat-outputlen   = 15.
  APPEND wa_fieldcat TO it_fieldcat.

  CLEAR wa_fieldcat.
  wa_fieldcat-tabname     = it_final.
  wa_fieldcat-fieldname   = 'DAT01'.
  wa_fieldcat-seltext_l   = 'Date 01'.
  wa_fieldcat-outputlen   = 15.
  APPEND wa_fieldcat TO it_fieldcat.

  CLEAR wa_fieldcat.
  wa_fieldcat-tabname     = it_final.
  wa_fieldcat-fieldname   = 'DAR02'.
  wa_fieldcat-seltext_l   = 'Date Type 01'.
  wa_fieldcat-outputlen   = 15.
  APPEND wa_fieldcat TO it_fieldcat.

  CLEAR wa_fieldcat.
  wa_fieldcat-tabname     = it_final.
  wa_fieldcat-fieldname   = 'DAT02'.
  wa_fieldcat-seltext_l   = 'Date 01'.
  wa_fieldcat-outputlen   = 15.
  APPEND wa_fieldcat TO it_fieldcat.

  CLEAR wa_fieldcat.
  wa_fieldcat-tabname     = it_final.
  wa_fieldcat-fieldname   = 'DAR03'.
  wa_fieldcat-seltext_l   = 'Date Type 01'.
  wa_fieldcat-outputlen   = 15.
  APPEND wa_fieldcat TO it_fieldcat.

  CLEAR wa_fieldcat.
  wa_fieldcat-tabname     = it_final.
  wa_fieldcat-fieldname   = 'DAT03'.
  wa_fieldcat-seltext_l   = 'Date 01'.
  wa_fieldcat-outputlen   = 15.
  APPEND wa_fieldcat TO it_fieldcat.

  CLEAR wa_fieldcat.
  wa_fieldcat-tabname     = it_final.
  wa_fieldcat-fieldname   = 'DAR04'.
  wa_fieldcat-seltext_l   = 'Date Type 01'.
  wa_fieldcat-outputlen   = 15.
  APPEND wa_fieldcat TO it_fieldcat.

  CLEAR wa_fieldcat.
  wa_fieldcat-tabname     = it_final.
  wa_fieldcat-fieldname   = 'DAT04'.
  wa_fieldcat-seltext_l   = 'Date 01'.
  wa_fieldcat-outputlen   = 15.
  APPEND wa_fieldcat TO it_fieldcat.

  CLEAR wa_fieldcat.
  wa_fieldcat-tabname     = it_final.
  wa_fieldcat-fieldname   = 'DAR05'.
  wa_fieldcat-seltext_l   = 'Date Type 01'.
  wa_fieldcat-outputlen   = 15.
  APPEND wa_fieldcat TO it_fieldcat.

  CLEAR wa_fieldcat.
  wa_fieldcat-tabname     = it_final.
  wa_fieldcat-fieldname   = 'DAT05'.
  wa_fieldcat-seltext_l   = 'Date 01'.
  wa_fieldcat-outputlen   = 15.
  APPEND wa_fieldcat TO it_fieldcat.

  CLEAR wa_fieldcat.
  wa_fieldcat-tabname     = it_final.
  wa_fieldcat-fieldname   = 'DAR06'.
  wa_fieldcat-seltext_l   = 'Date Type 01'.
  wa_fieldcat-outputlen   = 15.
  APPEND wa_fieldcat TO it_fieldcat.

  CLEAR wa_fieldcat.
  wa_fieldcat-tabname     = it_final.
  wa_fieldcat-fieldname   = 'DAT06'.
  wa_fieldcat-seltext_l   = 'Date 01'.
  wa_fieldcat-outputlen   = 15.
  APPEND wa_fieldcat TO it_fieldcat.

  CLEAR wa_fieldcat.
  wa_fieldcat-tabname     = it_final.
  wa_fieldcat-fieldname   = 'DAR07'.
  wa_fieldcat-seltext_l   = 'Date Type 01'.
  wa_fieldcat-outputlen   = 15.
  APPEND wa_fieldcat TO it_fieldcat.

  CLEAR wa_fieldcat.
  wa_fieldcat-tabname     = it_final.
  wa_fieldcat-fieldname   = 'DAT07'.
  wa_fieldcat-seltext_l   = 'Date 01'.
  wa_fieldcat-outputlen   = 15.
  APPEND wa_fieldcat TO it_fieldcat.

  CLEAR wa_fieldcat.
  wa_fieldcat-tabname     = it_final.
  wa_fieldcat-fieldname   = 'DAR08'.
  wa_fieldcat-seltext_l   = 'Date Type 01'.
  wa_fieldcat-outputlen   = 15.
  APPEND wa_fieldcat TO it_fieldcat.

  CLEAR wa_fieldcat.
  wa_fieldcat-tabname     = it_final.
  wa_fieldcat-fieldname   = 'DAT08'.
  wa_fieldcat-seltext_l   = 'Date 01'.
  wa_fieldcat-outputlen   = 15.
  APPEND wa_fieldcat TO it_fieldcat.


ENDFORM.                    " f_populate_fieldcat
*&---------------------------------------------------------------------*
*&      Form  F_CALL_ALV
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM f_call_alv .

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      i_callback_program     = g_repid
      i_callback_top_of_page = 'TOP-OF-PAGE'
      is_layout              = wa_layout
      it_fieldcat            = it_fieldcat[]
    TABLES
      t_outtab               = it_final
    EXCEPTIONS
      program_error          = 1
      OTHERS                 = 2.
  IF sy-subrc <> 0.
    EXIT.
  ENDIF.

ENDFORM.                    " F_CALL_ALV
*&---------------------------------------------------------------------*
*&      Form  CALCULATE_AGE
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
*FORM calculate_age .
*
*  l_years = p_age.
**Calculate Age of the Employee ( on a given high date)
*  CALL FUNCTION 'HR_ECM_ADD_PERIOD_TO_DATE'
*    EXPORTING
*      orig_date       = p0002-gbdat
*      num_days        = l_days
*      num_months      = l_months
*      num_years       = l_years
*      signum          = '+'
*      message_handler = msg_handler
*    IMPORTING
*      result_date     = l_birth_dt.
*
*  IF l_birth_dt BETWEEN s_aedtm-low AND s_aedtm-high.
** SELECT THIS PERNR FOR THE OUTPUT
*    g_flag = '1'.
*  ELSE.
*    CLEAR g_flag.
*  ENDIF.
*  CLEAR: l_years,l_months,l_days.
*  CLEAR l_birth_dt.
*ENDFORM.                    " CALCULATE_AGE
*
**&---------------------------------------------------------------------*
**&      Form  calculate_exp
**&---------------------------------------------------------------------*
**       text
**----------------------------------------------------------------------*
**  -->  p1        text
**  <--  p2        text
**----------------------------------------------------------------------*
*FORM calculate_exp .
*
*  l_years = p_exp.
** Calculate exp of the Employee
*  CALL FUNCTION 'HR_ECM_ADD_PERIOD_TO_DATE'
*    EXPORTING
*      orig_date       = g_hiredt
*      num_days        = l_days
*      num_months      = l_months
*      num_years       = l_years
*      signum          = '+'
*      message_handler = msg_handler
*    IMPORTING
*      result_date     = l_exp_dt.
*
*  IF l_exp_dt BETWEEN s_aedtm-low AND s_aedtm-high.
** SELECT THIS PERNR FOR THE OUTPUT
*    g_flag1 = '1'.
*  ENDIF.
*
*  CLEAR: l_years,l_months,l_days.
*
*ENDFORM.                    " calculate_exp

*&---------------------------------------------------------------------*
*&      Form  GET_DETAILS
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
*FORM get_details .

* Calucalte Experience from start of selection period
*  CALL FUNCTION 'HRCM_TIME_PERIOD_CALCULATE'
*    EXPORTING
*      begda         = g_hiredt
*      endda         = s_aedtm-low
*    IMPORTING
*      noyrs         = l_years
*      nomns         = l_months
*      nodys         = l_days
*    EXCEPTIONS
*      invalid_dates = 1
*      overflow      = 2
*      OTHERS        = 3.
*
*  CONCATENATE l_years text-014 l_months text-015 INTO
*                it_output-abb_exp SEPARATED BY space.
*
*  CLEAR: l_months,l_years,l_days.
** Calucalte Age from start of selection period
*  CALL FUNCTION 'HRCM_TIME_PERIOD_CALCULATE'
*    EXPORTING
*      begda         = p0002-gbdat
*      endda         = s_aedtm-low
*    IMPORTING
*      noyrs         = l_years
*      nomns         = l_months
*      nodys         = l_days
*    EXCEPTIONS
*      invalid_dates = 1
*      overflow      = 2
*      OTHERS        = 3.

*  CONCATENATE l_years text-014 l_months text-015 INTO
*              it_output-age SEPARATED BY space.
*  CLEAR: l_months,l_years,l_days.
*
**Read Personnel Area Text
*  SELECT SINGLE name1 FROM   t500p INTO it_output-name1
*                WHERE persa EQ p0001-werks.
*
**Read Personnel Subarea text
*  rp-read-t001p p0001-werks p0001-btrtl space.
*  MOVE : t001p-btext TO it_output-btext.
*
**Read Employee Group Text
*  SELECT SINGLE ptext FROM t501t INTO it_output-ptext
*                WHERE sprsl EQ sy-langu
*                AND   persg EQ p0001-persg.
*
**Read Employee SubGroup Text
*  SELECT SINGLE ptext FROM   t503t INTO it_output-ptext_s
*                WHERE sprsl EQ sy-langu
*                AND   persk EQ p0001-persk.
*
**Read Cost Center Text
*  SELECT SINGLE ktext FROM  cskt INTO it_output-ktext
*                WHERE kostl EQ p0001-kostl.
*
** Read Org Unit Text.
*  CALL FUNCTION 'HR_READ_FOREIGN_OBJECT_TEXT'
*    EXPORTING
*      otype                   = 'O'
*      objid                   = p0001-orgeh
*      begda                   = p0001-begda
*      endda                   = p0001-endda
*      reference_date          = p0001-begda
*    IMPORTING
*      object_text             = g_ostext
*    EXCEPTIONS
*      nothing_found           = 1
*      wrong_objecttype        = 2
*      missing_costcenter_data = 3
*      missing_object_id       = 4
*      OTHERS                  = 5.
*  IF sy-subrc <> 0.
*    CLEAR g_ostext.
*  ENDIF.
*
** Read Position Text.
*  CALL FUNCTION 'HR_READ_FOREIGN_OBJECT_TEXT'
*    EXPORTING
*      otype                   = 'S'
*      objid                   = p0001-plans
*      begda                   = p0001-begda
*      endda                   = p0001-endda
*      reference_date          = p0001-begda
*    IMPORTING
*      object_text             = g_sstext
*    EXCEPTIONS
*      nothing_found           = 1
*      wrong_objecttype        = 2
*      missing_costcenter_data = 3
*      missing_object_id       = 4
*      OTHERS                  = 5.
*  IF sy-subrc <> 0.
*    CLEAR g_sstext.
*  ENDIF.

*Get Manager Employee no
*  PERFORM f_get_approver_from_hrp1001.
*
*ENDFORM.                    " GET_DETAILS

*-------------------------------------------------------------------*
* Form  TOP-OF-PAGE                                                 *
*-------------------------------------------------------------------*
* ALV Report Header                                                 *
*-------------------------------------------------------------------*
FORM top-of-page.
*ALV Header declarations
  DATA: ty_header TYPE slis_t_listheader,
        wa_header TYPE slis_listheader,
        ty_line LIKE wa_header-info,
        ld_lines TYPE i,
        ld_objects(10) TYPE c.

* Title
  wa_header-typ  = 'H'.
  wa_header-info = text-016.
  APPEND wa_header TO ty_header.
  CLEAR wa_header.

* Date
  wa_header-typ  = 'S'.
  wa_header-key = 'Date: '.
  CONCATENATE  sy-datum+6(2) '.'
               sy-datum+4(2) '.'
               sy-datum(4) INTO wa_header-info.   "todays date
  APPEND wa_header TO ty_header.
  CLEAR: wa_header.

*Time
  wa_header-typ  = 'S'.
  wa_header-key = 'Time: '.
  wa_header-info = sy-uzeit.
  CONCATENATE  sy-uzeit(2) ':'
               sy-uzeit+2(2) ':'
               sy-uzeit+4(2) INTO wa_header-info.   "Time
  APPEND wa_header TO ty_header.
  CLEAR: wa_header.

* User
  wa_header-typ  = 'S'.
  wa_header-key = 'User: '.
  wa_header-info = sy-uname.
  APPEND wa_header TO ty_header.
  CLEAR: wa_header.

* Total No. of Records Selected
  DESCRIBE TABLE it_final LINES ld_lines.
  ld_objects = ld_lines.
  CONCATENATE 'Total No. of Records Selected: ' ld_objects
                    INTO ty_line SEPARATED BY space.
  wa_header-typ  = 'A'.
  wa_header-info = ty_line.
  APPEND wa_header TO ty_header.
  CLEAR: wa_header, ty_line.

  CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
    EXPORTING
      it_list_commentary = ty_header.
ENDFORM.                    "top-of-page
*&---------------------------------------------------------------------*
*&      Form  fill_zpayroll
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
*FORM fill_zpayroll .
*  LOOP AT it_final.
*    INSERT zpayroll FROM it_final.
*    IF sy-subrc = 0.
*      COMMIT WORK.
*    ENDIF.
*  ENDLOOP.
*ENDFORM.                    " fill_zpayroll
*&---------------------------------------------------------------------*
*&      Form  get_text
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM get_orgtext .
  DATA:  pruorgdata TYPE pruorgdata ,
        pruorgtext TYPE pruorgtext.
  pruorgdata-pernr = p0001-pernr.
  pruorgdata-ondat = pn-endda.
  pruorgdata-orgeh = p0001-orgeh.
  pruorgdata-persk = p0001-persk.
  pruorgdata-plans = p0001-plans.
  pruorgdata-otype = p0001-otype.
  pruorgdata-stell = p0001-stell.
  pruorgdata-bukrs = p0001-bukrs.
  pruorgdata-werks = p0001-werks.
  pruorgdata-btrtl = p0001-btrtl.
  pruorgdata-persg = p0001-persg.
  CALL FUNCTION 'HR_RU_GET_ORGTEXTS'
    EXPORTING
      pruorgdata = pruorgdata
      sprsl      = 'E'
    IMPORTING
      pruorgtext = pruorgtext.
  IF sy-subrc = 0.
    it_final-orgutexts = pruorgtext-orgtx_short.
    it_final-orgptexts = pruorgtext-plstx_short.
    it_final-orgdesc   = pruorgtext-stltx_short.
  ENDIF.

ENDFORM.                    " get_text
*&---------------------------------------------------------------------*
*&      Form  get_ansal
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM get_ansal .

  CALL FUNCTION 'RP_ANSAL_FROM_PERNR'
    EXPORTING
      f_date                       = pn-endda
      f_tclas                      = 'A'
      f_pernr                      = p0008-pernr
    IMPORTING
      f_ansal                      = f_ansal
    EXCEPTIONS
      internal_error               = 1
      error_read_0001              = 2
      error_read_0008              = 3
      error_at_indirect_evaluation = 4
      currency_conversion_error    = 5
      OTHERS                       = 6.
  IF sy-subrc = 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
* else.
*    it_final-ansal = f_ansal.
  ENDIF.

ENDFORM.                    " get_ansal
*&---------------------------------------------------------------------*
*&      Form  wege_type
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM wege_type .

  CALL FUNCTION 'RP_FILL_WAGE_TYPE_TABLE'
    EXPORTING
*   APPLI                              = 'E'
     begda                              = p0008-begda
     endda                              = p0008-endda
     infty                              = '0008'
*   OBJPS                              = '  '
*   TCLAS                              = 'A'
      pernr                              = p0008-pernr
*   SEQNR                              = '   '
*   SUBTY                              = '0   '
*   DLSPL                              = 'X'
*   MSGFLG                             = ''
*   NORDCT                             = ''
*   CONV_CURR                          = 'X'
*   FLAG_NO_DB_READ                    =
    TABLES
      ppbwla                             =  t_ppbwla
*   PP0001                             =
*   PP0007                             =
*   PP0008                             =
*   PP0014                             =
*   PP0015                             =
*   PP0052                             =
*   PP0230                             =
*   PP0267                             =
*   PPNNNN_TAB                         =
   EXCEPTIONS
     error_at_indirect_evaluation       = 1
     OTHERS                             = 2
            .
  IF sy-subrc = 0.
    SORT t_ppbwla DESCENDING BY lgart endda.
  ENDIF.
ENDFORM.                    " wege_type
*&---------------------------------------------------------------------*
*&      Form  file_write
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
  • <-- p2 text

----


FORM file_write .

LOOP AT it_final.

MOVE-CORRESPONDING it_final TO it_itab.

APPEND it_itab.

CLEAR it_itab.

ENDLOOP.

OPEN DATASET dataset FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.

LOOP AT it_itab INTO wa_itab.

TRANSFER wa_itab TO dataset.

ENDLOOP.

CLOSE DATASET dataset.

ENDFORM. " file_write