0% found this document useful (0 votes)
52 views31 pages

ROW COLOR REPORT Program

This report contains code for calculating employee payroll data such as salary, allowances, deductions, taxes, and annual compensation. It retrieves employee master data from database tables, performs calculations on the values, and stores the results in internal tables for output. The calculations include determining monthly and annual salary, provident fund, ESIC, tax amounts, and net compensation.

Uploaded by

mohamed Fareedh
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
52 views31 pages

ROW COLOR REPORT Program

This report contains code for calculating employee payroll data such as salary, allowances, deductions, taxes, and annual compensation. It retrieves employee master data from database tables, performs calculations on the values, and stores the results in internal tables for output. The calculations include determining monthly and annual salary, provident fund, ESIC, tax amounts, and net compensation.

Uploaded by

mohamed Fareedh
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 31

*&---------------------------------------------------------------------*

*& Report  ZROW_COLO
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  ZHR_ANNUAL_CTC_RP_COPY.

INCLUDE zhr_master_top1.

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-001.
*SELECT-OPTIONS : s_banfn FOR eban-banfn,
PARAMETERS: S_amt TYPE pa0008-ansal.
PARAMETERS: S_amt1 TYPE pa0008-BET01.
PARAMETERS: s_pernr TYPE pa0000-pernr.
PARAMETERS: s_ename TYPE pa0001-ename.

**PARAMETERS:s_werks TYPE pa0001-werks OBLIGATORY DEFAULT '2000'.
*PARAMETERS:    s_btrtl TYPE pa0001-btrtl.
SELECT-OPTIONS:s_endda FOR pa0000-endda.
**SELECT-OPTIONS:s_persk FOR pa0001-persk.

SELECTION-SCREEN : END OF BLOCK b1.

START-OF-SELECTION.

  PERFORM get_data.
  PERFORM field_cat.
*  PERFORM field_cat1.
  PERFORM display_data.

*&---------------------------------------------------------------------*
*&      Form  get_data
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM get_data.

  SELECT
      pernr
      subty
      begda
      endda
      stat2 FROM pa0000 INTO TABLE it_pa0000 WHERE pernr EQ s_pernr and end
da = '99991231'.

  SORT it_pa0000 BY pernr begda.

  DELETE ADJACENT DUPLICATES FROM it_pa0000 COMPARING pernr .
*  IF it_pa0000 IS NOT INITIAL.
*    SELECT DISTINCT pernr, schkz FROM pa0007
*           FOR ALL ENTRIES IN @it_pa0000
*           WHERE pernr = @it_pa0000-pernr and  endda = '99991231'
*           INTO TABLE @gt_pa0007.
*  ENDIF.

  SELECT
  pernr
  subty
  bukrs
  werks
  persg
  persk
  vdsk1
  gsber
  btrtl
  juper
  abkrs
  ansvh
  kostl
  orgeh
  plans
  stell
  mstbr
  sname
  ename
  otype FROM pa0001 INTO TABLE it_pa0001 FOR ALL ENTRIES IN it_pa0000 WHERE 
pernr = it_pa0000-pernr and  endda = '99991231'.

*&---------------------------------------------------------------------*
*&      Form  get_data
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
  sno = sno + 1.
  wa_final-sno = sno.
*---------------------------------------------------------------------
SALARY CALCULATION--------------------------------------------------------
---------------------------*
  wa_final-m_tot = ( s_amt * 50 ) / 100.
  wa_final-m_base1 = ( wa_final-m_tot * 50 ) / 100.
  wa_final-m_base2 =  ( wa_final-m_tot * 12 ) .
  wa_final-m_base3 =  ( wa_final-m_base1 * 12 ) .
*---------------------------------------------------------------------PF C
ALCULATION-----------------------------------------------------------------
-----------------------------*
  wa_final1-field1 = 'PF Deduction'.
  wa_final1-field2 = '12%'.
  wa_final-m_tot2 = ( wa_final-m_tot * 12 ) / 100.
  wa_final-m_tot3 = ( wa_final-m_tot2 * 12 ).
*-------------------------------------------------------------------SPECIAL 
ALLOWANCE------------------------------------------------------------------
---------------------------*
  wa_final-m_tot13 = wa_final-m_tot + wa_final-m_base1 + wa_final-m_tot2.
*-------------Employer ESIC-----------*
  wa_final-m_tot14 = s_amt - wa_final-m_tot13.
  wa_final-m_tot15 = ( wa_final-m_tot14 * 8441 ) / 10000 .
  wa_final-m_tot1 = ( wa_final-m_tot14 * 1559 ) / 10000 .
  wa_final-m_tot4 = ( wa_final-m_tot15 * 12 ).

  wa_final-m_tot7 = wa_final-m_tot2 + wa_final-m_tot1.

  wa_final-m_tot8 = wa_final-m_tot + wa_final-m_base1 + wa_final-m_tot15.

  if wa_final-m_tot8 => 21000.
    wa_final-m_tot15 = wa_final-m_tot14.
    wa_final-m_tot8 =  wa_final-m_tot + wa_final-m_base1 + wa_final-m_tot15 
.
    clear wa_final-m_tot1.
  ELSE .
    wa_final-m_tot15 = ( wa_final-m_tot14 * 8441 ) / 10000 .
    wa_final-m_tot8 =  wa_final-m_tot + wa_final-m_base1 + wa_final-m_tot15 
.
*    wa_final-m_tot1 = 0.
  ENDIF.
*-------------Employee PF--------*
  wa_final-m_tot9 = ( wa_final-m_tot * 12 ) / 100.
*-------------Employee ESIC-----------*
  wa_final-m_tot10 = ( wa_final-m_tot8 * 75 ) / 10000.

  if wa_final-m_tot8 => 21000.
*   wa_final-m_tot10 = wa_final-m_tot14.
    wa_final-m_tot8 =  wa_final-m_tot + wa_final-m_base1 + wa_final-m_tot15 
.
    clear wa_final-m_tot10.
  ELSE .
    wa_final-m_tot10 = ( wa_final-m_tot8 * 75 ) / 10000 .
    wa_final-m_tot8 =  wa_final-m_tot + wa_final-m_base1 + wa_final-m_tot15 
.
*    wa_final-m_tot1 = 0.
  ENDIF.

*--------------------------------------------------------------------TAX C
ALCULATION-----------------------------------------------------------------
-----------------------------*
  wa_final-field1 = 'TAX CALCULATION'.
*        wa_final1-field2 = '12%'.
  wa_final-m_tot6 = ( wa_final-m_tot8 * 6 ).
  CONDENSE wa_final-m_tot6.
  IF wa_final-m_tot6 < 21000 .
    wa_final-m_tot6 = '000'.
  ELSEIF wa_final-m_tot6 > 21001  AND wa_final-m_tot6 <= 30000.
    wa_final-m_tot6 = '135'.
  ELSEIF wa_final-m_tot6 > 30001  AND wa_final-m_tot6 <= 45000.
    wa_final-m_tot6 = '315'.
  ELSEIF wa_final-m_tot6 > 45001  AND wa_final-m_tot6 <= 60000.
    wa_final-m_tot6 = '690'.
  ELSEIF wa_final-m_tot6 > 60001  AND wa_final-m_tot6 <= 75000.
    wa_final-m_tot6 = '1025'.
  ELSEIF wa_final-m_tot6 > 75001.
    wa_final-m_tot6 = '1250'.
  ENDIF.

*--------------------------------------------------------------------
Deduction Employee Contribution-------------------------------------------
---------------------------------------------*
  wa_final-m_tot13 = wa_final-M_TOT9 + wa_final-M_TOT10 + wa_final-m_tot6 .

  wa_final-m_tot16 = wa_final-m_tot7 + wa_final-m_tot13.

  wa_final-m_tot17 = s_amt - wa_final-m_tot16.

  wa_final-m_tot18 = ( wa_final-m_tot8 * 12 ).

  wa_final-m_tot19 = ( wa_final-m_tot1 * 12 ).

  wa_final-m_tot20 = ( wa_final-m_tot7 * 12 ).

*-------------------------------------------------------------------Final 
CTC------------------------------------------------------------------------
-----------------------------*
  wa_final-m_tot11 = s_amt .
  wa_final-m_tot12 = wa_final-m_tot11 * 12.

*------------------------------------------------------------------
CALCULATION FOR ANNUAL CTC------------------------------------------------
-------------------------------------*
  wa_final-m_tot21 = s_amt1.
  wa_final-m_tot22 = ( s_amt1 / 12 ). " anuual slary converted into monthl
y
  wa_final-m_tot23 = ( wa_final-m_tot22 * 50 ) / 100. "monthly to basic
  wa_final-m_tot24 = ( wa_final-m_tot23 * 50 ) / 100. "monthly  HRA
  wa_final-m_tot25 =  wa_final-m_tot23 * 12. " basic monthly to annual bas
ic
  wa_final-m_tot26 =  wa_final-m_tot24 * 12. " monthly hra to annual hra

  wa_final-m_tot27 = ( wa_final-m_tot23 * 12 ) / 100. "PF calculation
  wa_final-m_tot43 = ( wa_final-m_tot27 * 12 )." annual pf

  wa_final-m_tot29 = wa_final-m_tot23 + wa_final-m_tot24 + wa_final-
m_tot27.
*-------------Employer ESIC-----------*
  wa_final-m_tot28 =  wa_final-m_tot22 - wa_final-m_tot29.
  wa_final-m_tot29 = ( wa_final-m_tot28 * 8441 ) / 10000 .
  wa_final-m_tot30 = ( wa_final-m_tot28 * 1559 ) / 10000 .
  wa_final-m_tot31 = ( wa_final-m_tot29 * 12 ).

  wa_final-m_tot32 = wa_final-m_tot27 + wa_final-m_tot30.

  wa_final-m_tot33 = wa_final-m_tot23 + wa_final-m_tot24 + wa_final-
m_tot29.

  if wa_final-m_tot33 => 21000.
    wa_final-m_tot29 = wa_final-m_tot28.
    wa_final-m_tot33 =  wa_final-m_tot23 + wa_final-m_tot24 + wa_final-
m_tot29 .
    clear wa_final-m_tot30.
  ELSE .
    wa_final-m_tot29 = ( wa_final-m_tot28 * 8441 ) / 10000 .
    wa_final-m_tot33 =  wa_final-m_tot23 + wa_final-m_tot24 + wa_final-
m_tot29 .
*    wa_final-m_tot1 = 0.
  ENDIF.

*-------------Employee PF--------*
  wa_final-m_tot34 = ( wa_final-m_tot23 * 12 ) / 100.
*-------------Employee ESIC-----------*
  wa_final-m_tot35 = ( wa_final-m_tot33 * 75 ) / 10000.

  if wa_final-m_tot33 => 21000.
*   wa_final-m_tot10 = wa_final-m_tot14.
    wa_final-m_tot33 =  wa_final-m_tot23 + wa_final-m_tot24 + wa_final-
m_tot29 .
    clear wa_final-m_tot35.
  ELSE .
    wa_final-m_tot35 = ( wa_final-m_tot33 * 75 ) / 10000 .
    wa_final-m_tot33 =  wa_final-m_tot23 + wa_final-m_tot24 + wa_final-
m_tot29 .
*    wa_final-m_tot1 = 0.
  ENDIF.

*  wa_final-field1 = 'TAX CALCULATION'.
*        wa_final1-field2 = '12%'.
  wa_final-m_tot36 = ( wa_final-m_tot33 * 6 ).
  CONDENSE wa_final-m_tot36.
  IF wa_final-m_tot36 < 21000 .
    wa_final-m_tot36 = '000'.
  ELSEIF wa_final-m_tot36 > 21001  AND wa_final-m_tot36 <= 30000.
    wa_final-m_tot6 = '135'.
  ELSEIF wa_final-m_tot36 > 30001  AND wa_final-m_tot36 <= 45000.
    wa_final-m_tot36 = '315'.
  ELSEIF wa_final-m_tot36 > 45001  AND wa_final-m_tot36 <= 60000.
    wa_final-m_tot36 = '690'.
  ELSEIF wa_final-m_tot36 > 60001  AND wa_final-m_tot36 <= 75000.
    wa_final-m_tot36 = '1025'.
  ELSEIF wa_final-m_tot36 > 75001.
    wa_final-m_tot36 = '1250'.

  ENDIF.

  wa_final-m_tot37 = wa_final-M_TOT34 + wa_final-M_TOT35 + wa_final-m_tot36 
.

  wa_final-m_tot38 = wa_final-m_tot32 + wa_final-m_tot37.

  wa_final-m_tot39 = wa_final-m_tot22 - wa_final-m_tot38.

  wa_final-m_tot40 = ( wa_final-m_tot33 * 12 ).

  wa_final-m_tot41 = ( wa_final-m_tot30 * 12 ).

  wa_final-m_tot42 = ( wa_final-m_tot32 * 12 ).
*-------------------------------------------------------------------Final 
CTC------------------------------------------------------------------------
-----------------------------*
*  wa_final-m_tot11 = wa_final-m_tot23 .
*  wa_final-m_tot12 = wa_final-m_tot11 * 12.

  wa_final-pernr = s_pernr.
  wa_final-endda = s_endda.
  wa_final-ename = s_ename.

  APPEND : wa_final TO it_final.
  CLEAR:wa_final,
  wa_pa0001,
  wa_pa0002,
  wa_pa0008,
  wa_pa0587,
  wa_pa0588,
  wa_pa0185,
  wa_pa0000.

*  ENDLOOP.

*ENDFORM.                    "get_data

LOOP AT IT_FINAL INTO WA_FINAL .
*  READ TABLE it_final INTO wa_final INDEX 1.
  IF SY-SUBRC = 0.

    Wa_final_m-txt = 'Basic Salary'.
    WA_FINAL_M-SNO  = 1.
    Wa_final_m-pernr = wa_final-pernr.
    wa_final_m-ename = wa_final-ename.
    wa_final_m-endda = wa_final-endda.
    Wa_final_M-amount1 = wa_final-m_tot.
    Wa_final_M-amount2 = wa_final-M_BASE2.
    Wa_final_M-amount3 = wa_final-m_tot23.
    Wa_final_M-amount4 = wa_final-m_tot25.
    Append wa_final_m to it_final_M.
    Clear wa_final_m.

    Wa_final_m-txt = 'House Rent Allowance'.
    WA_FINAL_M-SNO  = 2.
    Wa_final_m-pernr = wa_final-pernr.
    Wa_final_M-amount1 = wa_final-M_BASE1.
    Wa_final_M-amount2 = wa_final-M_BASE3.
    Wa_final_M-amount3 = wa_final-m_tot24.
    Wa_final_M-amount4 = wa_final-m_tot26.
    Append wa_final_m to it_final_M.
    Clear wa_final_m.

    Wa_final_m-txt = 'Special Allowance'.
    WA_FINAL_M-SNO  = 3.
    Wa_final_m-pernr = wa_final-pernr.
    Wa_final_M-amount1 = wa_final-M_TOT15.
    Wa_final_M-amount2 = wa_final-M_TOT4.
    Wa_final_M-amount3 = wa_final-M_TOT29.
    Wa_final_M-amount4 = wa_final-M_TOT31.
    Append wa_final_m to it_final_M.
    Clear wa_final_m.

AT END OF PERNR.
    Wa_final_m-txt = 'Monthly-Fixed Gross Salary-A'.
    WA_FINAL_M-SNO  = 4.
    Wa_final_m-pernr = wa_final-pernr.
       wa_final_m-line_color = 'C310'.
    Wa_final_M-amount1 = wa_final-M_TOT8.
    Wa_final_M-amount2 = wa_final-M_TOT18.
    Wa_final_M-amount3 = wa_final-M_TOT33.
    Wa_final_M-amount4 = wa_final-m_tot40.
    Append wa_final_m to it_final_M.
    Clear wa_final_m.
    ENDAT.

    Wa_final_m-txt = 'Employer PF'.
    WA_FINAL_M-SNO  = 5.
    Wa_final_m-pernr = wa_final-pernr.
    Wa_final_M-amount1 = wa_final-M_TOT2.
    Wa_final_M-amount2 = wa_final-M_TOT3.
    Wa_final_M-amount3 = wa_final-M_TOT27.
    Wa_final_M-amount4 = wa_final-M_TOT43.
    Append wa_final_m to it_final_M.
    Clear wa_final_m.

    Wa_final_m-txt = 'Employer ESIC'.
    WA_FINAL_M-SNO  = 6.
    Wa_final_m-pernr = wa_final-pernr.
    Wa_final_M-amount1 = wa_final-M_TOT1.
    Wa_final_M-amount2 = wa_final-M_TOT19.
    Wa_final_M-amount3 = wa_final-M_TOT30.
    Wa_final_M-amount4 = wa_final-M_TOT41.
    Append wa_final_m to it_final_M.
    Clear wa_final_m.

    Wa_final_m-txt = 'Retirals-Employer Contribution-B'.
    WA_FINAL_M-SNO  = 7.
    Wa_final_m-pernr = wa_final-pernr.
    Wa_final_M-amount1 = wa_final-M_TOT7.
    Wa_final_M-amount2 = wa_final-M_TOT20.
    Wa_final_M-amount3 = wa_final-M_TOT32.
    Wa_final_M-amount4 = wa_final-M_TOT42.
    Append wa_final_m to it_final_M.
    Clear wa_final_m.

at end of PERNR.
    Wa_final_m-txt = 'Annual Cost to company-c (A+B)'.
    WA_FINAL_M-SNO  = 8.
    Wa_final_m-pernr = wa_final-pernr.
      wa_final_m-line_color = 'C310'.
    Wa_final_M-amount1 = wa_final-m_tot11.
    Wa_final_M-amount2 = wa_final-M_TOT12.
    Wa_final_M-amount4 = wa_final-m_tot21.
    Wa_final_M-amount3 = wa_final-m_tot22.
    Append wa_final_m to it_final_M.
    Clear wa_final_m.
    ENDAT.

    Wa_final_m-txt = 'Employee PF Contribution'.
    WA_FINAL_M-SNO  = 9.
    Wa_final_m-pernr = wa_final-pernr.
    Wa_final_M-amount1 = wa_final-M_TOT9.
    Wa_final_M-amount3 = wa_final-M_TOT34.
    Append wa_final_m to it_final_M.
    Clear wa_final_m.

    Wa_final_m-txt = 'Employee ESIC Contribution'.
    WA_FINAL_M-SNO  = 10.
    Wa_final_m-pernr = wa_final-pernr.
    Wa_final_M-amount1 = wa_final-M_TOT10.
    Wa_final_M-amount3 = wa_final-M_TOT35.
    Append wa_final_m to it_final_M.
    Clear wa_final_m.

    Wa_final_m-txt = 'Professional Tax'.
    WA_FINAL_M-SNO  = 11.
    Wa_final_m-pernr = wa_final-pernr.
    Wa_final_M-amount1 = wa_final-M_TOT6.
    Wa_final_M-amount3 = wa_final-M_TOT36.
    Append wa_final_m to it_final_M.
    Clear wa_final_m.

    Wa_final_m-txt = 'Deduction-Employee Contribution'.
    WA_FINAL_M-SNO  = 12.
    Wa_final_m-pernr = wa_final-pernr.
    Wa_final_M-amount1 = wa_final-M_TOT13.
    Wa_final_M-amount3 = wa_final-M_TOT37.
    Append wa_final_m to it_final_M.
    Clear wa_final_m.
    Wa_final_m-txt = 'Net Salary'.
    WA_FINAL_M-SNO  = 13.
    Wa_final_m-pernr = wa_final-pernr.
    Wa_final_M-amount1 = wa_final-M_TOT17.
    Wa_final_M-amount3 = wa_final-m_tot39.
*    wa_final_m-line_color = 'c410'.
    Append wa_final_m to it_final_M.
    Clear wa_final_m.

*  wa_final_m-txt =  'subtotal'.
*   Wa_final_m-pernr = wa_final-pernr.
*      wa_final_m-line_color = 'C210'.
*      APPEND WA_FINAL_M TO IT_FINAL_M.
*      CLEAR: WA_FINAL_M.
*      ENDAT.
  ENDIF.
  ENDLOOP.
*Populate color variable with colour properties
* Char 1 = C (This is a color property)
* Char 2 = 3 (Color codes: 1 - 7)
* Char 3 = Intensified on/off ( 1 or 0 )
* Char 4 = Inverse display on/off ( 1 or 0 )
*           i.e. wa_ekko-line_color = 'C410'
*  sort it_final_m by pernr descending.
*  describe table it_final_m lines sno.
*read table  it_final_m into wa_final_m index sno.
* if sy-subrc = 0.
*        REFRESH COLOR. CLEAR COLOR.
*        COLOR-FIELDNAME = 'PERNR'.
*        COLOR-COLOR-INT = '1'.
*        COLOR-COLOR-COL = '6'.
*        COLOR-COLOR-INV = '0'.
*APPEND COLOR. CLEAR COLOR.
*it_FINAL_M-colo = color[].
*modify it_FINAL_M index SNO.
*endif.

ENDFORM.                    "

*ENDFORM.                    "get_data

*&---------------------------------------------------------------------*
*&      Form  field_cat
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM field_cat.

  wa_fcat-fieldname = 'SNO'.
  wa_fcat-reptext   = 'SNO'.
  WA_FCAT-COL_POS = '1'.
   APPEND wa_fcat TO it_fcat.
  CLEAR wa_fcat.

  wa_fcat-fieldname = 'PERNR'.
  wa_fcat-reptext   = 'EMPLOYEE ID'.
  WA_FCAT-COL_POS = '1'.
   APPEND wa_fcat TO it_fcat.
  CLEAR wa_fcat.

  wa_fcat-fieldname = 'ENAME'.
  wa_fcat-reptext   = 'EMPLOYEE NAME'.
  WA_FCAT-COL_POS = '1'.
   APPEND wa_fcat TO it_fcat.
  CLEAR wa_fcat.

  wa_fcat-fieldname = 'ENDDA'.
  wa_fcat-reptext   = 'EFFECTIVE DATE'.
  WA_FCAT-COL_POS = '1'.
   APPEND wa_fcat TO it_fcat.
  CLEAR wa_fcat.

  wa_fcat-fieldname = 'TXT'.
  wa_fcat-reptext   = 'COMPONENTS'.
  WA_FCAT-COL_POS = '1'.
   APPEND wa_fcat TO it_fcat.
  CLEAR wa_fcat.

  wa_fcat-fieldname = 'AMOUNT1'.
  wa_fcat-reptext   = 'MONTHLY AMOUNT'.
  WA_FCAT-COL_POS = '1'.
   APPEND wa_fcat TO it_fcat.
  CLEAR wa_fcat.

  wa_fcat-fieldname = 'AMOUNT2'.
  wa_fcat-reptext   = 'ANNUAL AMOUNT'.
  WA_FCAT-COL_POS = '1'.
   APPEND wa_fcat TO it_fcat.
  CLEAR wa_fcat.

  wa_fcat-fieldname = 'AMOUNT3'.
  wa_fcat-reptext   = 'MONTHLY AMOUNT'.
  WA_FCAT-COL_POS = '1'.
   APPEND wa_fcat TO it_fcat.
  CLEAR wa_fcat.

   wa_fcat-fieldname = 'AMOUNT4'.
  wa_fcat-reptext   = 'ANNUAL AMOUNT'.
  WA_FCAT-COL_POS = '1'.
   APPEND wa_fcat TO it_fcat.
  CLEAR wa_fcat.

   wa_fcat-fieldname = 'SEL'.
  wa_fcat-reptext   = 'SELECT'.
  WA_FCAT-COL_POS = '1'.
   APPEND wa_fcat TO it_fcat.
  CLEAR wa_fcat.

*   wa_layout-zebra      = 'X'.
  wa_layout-cwidth_opt = 'X'.
  wa_layout-info_fname = 'LINE_COLOR'.

*  PERFORM genfcat USING 'SNo'                     'SNO'   '1' '' ''.
*  PERFORM genfcat USING 'Employee ID'               'PERNR' '1' '' ''.
*  PERFORM genfcat USING 'Employee Name'               'ENAME' '1' '' '
'.
*  PERFORM genfcat USING 'EFFECTIVE DATE'               'ENDDA' '1' '' 
''.
*  PERFORM genfcat USING 'Components'                     'TXT'   '1' 
'' ''.
*  PERFORM genfcat USING 'Monthly Amount'                     'AMOUNT1' 
  '1' '' ''.
*  PERFORM genfcat USING 'Annual Amount'                     'AMOUNT2'  
 '1' '' ''.
*  PERFORM genfcat USING 'Monthly Amount'                     'AMOUNT3' 
  '1' '' ''.
*  PERFORM genfcat USING 'Annual Amount'                     'AMOUNT4'  
 '1' '' ''.
*  PERFORM genfcat USING 'Select'        'SEL' '1' '' ''.

*  PERFORM genfcat USING 'Emp Code'                'PERNR' '2' '' ''.
*  PERFORM genfcat USING 'Emp Name'                'ENAME' '3' '' ''.
*  PERFORM genfcat USING 'Date of join'            'BEGDA' '3' '' ''.
*  PERFORM genfcat USING 'Date of Birth'            'GBDAT' '3' '' ''.
*  PERFORM genfcat USING 'Emp status'              'STATUS' '3' '' ''.
*  PERFORM genfcat USING 'Personal Area'           'WERKS' '3' '' ''.
*  PERFORM genfcat USING 'Plant Name'               'WERKS_TEXT' '3' '' 
''.
*  PERFORM genfcat USING 'Company Code'            'BUKRS' '3' '' ''.
*  PERFORM genfcat USING 'Emp Group'               'PERSG_TEXT' '3' '' 
''.
*  PERFORM genfcat USING 'Emp Sub Group'           'PERSK_TEXT' '3' '' 
''.
*  PERFORM genfcat USING 'Position'                'PLANS_TEXT' '3' '' 
''.
*  PERFORM genfcat USING 'Work Shedule Rule'       'SCHKZ'  '3' '' ''.
**  PERFORM genfcat USING 'Work Shedule'       'schkz_text'  '3' '' ''.
**  PERFORM genfcat USING 'Personal Sub area'       'BTRTL_TEXT' '3' '' 
''.
*  PERFORM genfcat USING 'Organizational Unit '    'ORGEH_TEXT' '3' '' '
'.
*  PERFORM genfcat USING 'Organizational Key'       'VDSK1' '3' '' ''.
**  PERFORM genfcat USING 'Work Contract'           'ANSVH_TEXT' '3' '' 
''.
*  PERFORM genfcat USING 'Grade'                  'GRADE' '3' '' ''.
*  PERFORM genfcat USING 'Zone'                  'BTRTL_TEXT' '3' '' ''
.
*  PERFORM genfcat USING 'Group'                  'GROUP' '3' '' ''.
*  PERFORM genfcat USING 'Weightage %'                  'WEIGHTAGE' '3' 
'' ''.
*  PERFORM genfcat USING 'Basic Salary'                'BET01' '3' '' '
'.
*  PERFORM genfcat USING 'Basic Salary Annually'               'M_BASE1
' '3' '' ''.
**  PERFORM genfcat USING 'Dearness Allowance'                'BET02' '
3' '' ''.
*
**  PERFORM genfcat USING 'HRA'                     'BET03' '3' '' ''.
**  PERFORM genfcat USING 'City Compensatory Allow' 'BET04' '3' '' ''.
**  PERFORM genfcat USING 'Education Allowance'     'BET05' '3' '' ''.
**  PERFORM genfcat USING 'Washing Allowance'       'BET06' '3' '' ''.
*  PERFORM genfcat USING 'House Rent Allowance'               'BET03' '
3' '' ''.
*  PERFORM genfcat USING 'House Rent Allowance Annually '               
'M_BASE2' '3' '' ''.
*  PERFORM genfcat USING 'Special Allowance'               'BET04' '3' 
'' ''.
*  PERFORM genfcat USING 'Special Allowance Annually'               'M_
BASE4' '3' '' ''.
*  PERFORM genfcat USING 'Employer PF'               'M_TOT2' '3' '' ''
.
*  PERFORM genfcat USING 'Employer PF Annually'               'M_TOT7' 
'3' '' ''.
*  PERFORM genfcat USING 'Employee PF Contribution'               'M_TO
T3' '3' '' ''.
*  PERFORM genfcat USING 'Employee ESIC Contribution'               'M_
TOT4' '3' '' ''.
*  PERFORM genfcat USING 'Employer ESIC'               'M_TOT5' '3' '' 
''.
*  PERFORM genfcat USING 'Employer ESIC Annually'               'M_TOT8
' '3' '' ''.
*  PERFORM genfcat USING 'Retirals Employer Contribution Monthly'        
       'M_TOT9' '3' '' ''.
*  PERFORM genfcat USING 'Retirals Employer Contribution Annually'       
        'M_TOT10' '3' '' ''.
*  PERFORM genfcat USING 'Monthly Fixed Gross Salary'               'M_
TOT' '3' '' ''.
*  PERFORM genfcat USING 'Annual Fixed Gross Salary'               'M_T
OT1' '3' '' ''.
*  PERFORM genfcat USING 'Professional Tax'               'M_TOT6' '3' 
'' ''.
*  PERFORM genfcat USING 'Deduction Employee Contribution'               
'M_TOT12' '3' '' ''.
**  PERFORM genfcat USING 'Other Allowance'               'BET05' '3' '
' ''.
*  PERFORM genfcat USING 'Total CTC'               'M_TOT11' '3' '' ''.
ENDFORM.               "get_data

"field_cat

*&---------------------------------------------------------------------*
*&      Form  genfcat
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->VALUE(P_0122)  text
*      -->VALUE(P_0123)  text
*      -->VALUE(P_0124)  text
*      -->VALUE(P_0125)  text
*      -->VALUE(P_0126)  text
*----------------------------------------------------------------------*
FORM genfcat.  ""USING    VALUE(p_0122)
*      VALUE(p_0123)
*      VALUE(p_0124)
*      VALUE(p_0125)
*      VALUE(p_0126).
*  wa_fieldcat-col_pos    = p_0124.
*  wa_fieldcat-fieldname  = p_0123.
*  wa_fieldcat-seltext_l  = p_0122.
*  wa_fieldcat-lowercase  = 'X'.
*  wa_fieldcat-do_sum  = p_0125.
*  wa_fieldcat-key  = p_0126.
*  wa_fieldcat-no_zero  = 'X'.
*  IF p_0123 = 'SEL'.
*    wa_fieldcat-checkbox = 'X'.
*    wa_fieldcat-edit = 'X'.
*  ENDIF.
**   wa_fieldcat-SP_group  = 'X'.
**  wa_fieldcat-subtotals  = 'X'.
*  APPEND wa_fieldcat TO it_fieldcat.
*  CLEAR wa_fieldcat.

ENDFORM.                    "genfcat
*&---------------------------------------------------------------------*
*&      Form  display_data
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM display_data.
*  wa_layout-zebra = 'X' .
*  WA_LAYOUT-COLWIDTH_OPTIMIZE = 'X' .
*  WA_layout-info_fIELDname = 'LINE_COLOR'.
**  WA_layout-box_fIELDname = 'SEL'.
**  lv-report = sy-repid.
*   wa_layout-zebra      = 'X'.
*  wa_layout-cwidth_opt = 'X'.
*  wa_layout-info_fname = 'LINE_COLOR'.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
 EXPORTING

   I_CALLBACK_PROGRAM                = SY-REPID

*   I_CALLBACK_TOP_OF_PAGE            = ' '

   IS_LAYOUT_LVC                     = WA_LAYOUT
   IT_FIELDCAT_LVC                   = IT_FCAT
  TABLES
    T_OUTTAB                          = IT_FINAL_M
 EXCEPTIONS
   PROGRAM_ERROR                     = 1
   OTHERS                            = 2
          .
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
*  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
*    EXPORTING
**     I_INTERFACE_CHECK  = ' '
**     I_BYPASSING_BUFFER = ' '
**     I_BUFFER_ACTIVE    = ' '
*      i_callback_program = sy-repid
**     I_CALLBACK_PF_STATUS_SET    = 'SET_PF_STATUS'
*     i_callback_pf_status_set    = 'SET_PF_STATUS'
*     i_callback_top_of_page      = 'TOP-OF-PAGE'
*     i_callback_user_command     = 'USER_COMMAND'
**     i_callback_html_top_of_page = 'TOP-OF-PAGE'
**     I_CALLBACK_HTML_END_OF_LIST = ' '
**     I_STRUCTURE_NAME   =
**     I_BACKGROUND_ID    = ' '
**     I_GRID_TIT  LE                      = '               Rupees 
in Lakh'
**     I_GRID_SETTINGS    =
*      is_layout          = WA_layout
*      it_fieldcat        = it_fieldcat
**     IT_EXCLUDING       =
**     IT_SPECIAL_GROUPS  =
*      it_sort            = i_sort
**     IT_FILTER          =
**     IS_SEL_HIDE        =
**      I_DEFAULT          = 'X'
*      i_save             = 'A'
*      is_variant         = lv
**     IT_EVENTS          =
**     IT_EVENT_EXIT      =
**     IS_PRINT           =
**     IS_REPREP_ID       =
**     I_SCREEN_START_COLUMN       = 0
**     I_SCREEN_START_LINE         = 0
**     I_SCREEN_END_COLUMN         = 0
**     I_SCREEN_END_LINE  = 0
**     I_HTML_HEIGHT_TOP  = 0
**     I_HTML_HEIGHT_END  = 0
**     IT_ALV_GRAPHICS    =
**     IT_HYPERLINK       =
**     IT_ADD_FIELDCAT    =
**     IT_EXCEPT_QINFO    =
**     IR_SALV_FULLSCREEN_ADAPTER  =
** IMPORTING
**     E_EXIT_CAUSED_BY_CALLER     =
**     ES_EXIT_CAUSED_BY_USER      =
*    TABLES
*      t_outtab           = it_final_M
** EXCEPTIONS
**     PROGRAM_ERROR      = 1
**     OTHERS             = 2
*    .
*  IF sy-subrc <> 0.
** Implement suitable error handling here
*  ENDIF.
ENDFORM.                    "display_data
*&---------------------------------------------------------------------*
*&      Form  set_pf_status
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->RT_EXTAB   text
*----------------------------------------------------------------------*
FORM set_pf_status USING rt_extab   TYPE  slis_t_extab.
  SET PF-STATUS 'ZSTANDARD' EXCLUDING rt_extab.
ENDFORM.                    "set_pf_status
"display_data

*&---------------------------------------------------------------------*
*&      Form  top_of_page
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM top_of_page.
  DATA: ls_line        TYPE slis_listheader,
        lt_top_of_page TYPE slis_t_listheader,
        l_name         TYPE t001-butxt,
        l_date(60),
        l_date1(10),
        l_date2(10).
  CLEAR ls_line.
  ls_line-typ = 'H'.
  ls_line-info = 'Employee Salary'.
  APPEND ls_line TO lt_top_of_page.
  CLEAR :ls_line,
         l_date.
*  WRITE sy-datum TO l_date.
*  IF sy_date-low IS NOT INITIAL.
*    CALL FUNCTION 'CONVERT_DATE_TO_EXTERNAL'
*      EXPORTING
*        date_internal            = sy_date-low
*      IMPORTING
*        date_external            = l_date1
*      EXCEPTIONS
*        date_internal_is_invalid = 1
*        OTHERS                   = 2.
*  ENDIF.
*  IF sy_date-high IS NOT INITIAL.
*    CALL FUNCTION 'CONVERT_DATE_TO_EXTERNAL'
*      EXPORTING
*        date_internal            = sy_date-high
*      IMPORTING
*        date_external            = l_date2
*      EXCEPTIONS
*        date_internal_is_invalid = 1
*        OTHERS                   = 2.
*  ENDIF.
*  ls_line-typ = 'S'.
*  ls_line-key = 'From Date:'.
*  ls_line-info = l_date1.
*  APPEND ls_line TO lt_top_of_page.
*  CLEAR: ls_line.
*  ls_line-typ = 'S'.
*  ls_line-key = 'To Date  :'.
*  ls_line-info = l_date2.
*  APPEND ls_line TO lt_top_of_page.
*  CLEAR :ls_line.
*
  CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
    EXPORTING
      it_list_commentary = lt_top_of_page.
ENDFORM.                    "top_of_page

*PERFORM user_command.

*&---------------------------------------------------------------------*
*&      Form  USER_COMMAND
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM user_command USING r_ucomm LIKE sy-ucomm rs_selfield TYPE slis_selfiel
d.

  DATA: ref1 TYPE REF TO cl_gui_alv_grid.

  CASE r_ucomm.
    WHEN 'BACK'.                 "Back
      LEAVE SCREEN.
    WHEN 'CANCEL'.               "Cancel
      LEAVE SCREEN.
    WHEN 'SELECTALL'.
      DATA:lt_temp       TYPE STANDARD TABLE OF ty_final_M,
           ls_temp       TYPE ty_final_M,
           l_bapireturn  LIKE bapireturn1,
           bapipakey_tab LIKE bapipakey OCCURS 0 WITH HEADER LINE.
      DATA: validitybegin TYPE p0001-begda,
            validityend   TYPE p0001-endda,
            lv_record     TYPE p9001,
            lv_record1     TYPE p0008,
            lv_tabix      TYPE sy-tabix.
      lt_temp = it_final_m.
      LOOP AT lt_temp INTO ls_temp.
        CLEAR wa_final_m.
        lv_tabix = sy-tabix.
        wa_final_m-SNO = ls_temp-SNO.
        wa_final_m-PERNR = ls_temp-PERNR.
        wa_final_m-ENDDA = ls_temp-ENDDA.
        wa_final_m-TXT = ls_temp-TXT.
        wa_final_m-AMOUNT1 = ls_temp-AMOUNT1.
        wa_final_m-AMOUNT2 = ls_temp-AMOUNT2.
        wa_final_m-AMOUNT3 = ls_temp-AMOUNT3.
        wa_final_m-AMOUNT4 = ls_temp-AMOUNT4.
        wa_final_m-sel = 'X'.
        MODIFY it_final_m FROM wa_final_m INDEX lv_tabix TRANSPORTING sel.
      ENDLOOP.
    WHEN 'UPDATE'.
      "For capturing the selected data
      CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
        IMPORTING
          e_grid = ref1.
      CALL METHOD ref1->check_changed_data.
      refresh : lt_output .
      lt_output = it_final_M .
      DELETE lt_output WHERE sel <> 'X'.
      IF lt_output IS INITIAL.
        MESSAGE 'Select atleast one ROW to update' TYPE 'I'.
        EXIT.
      ENDIF.

      read table lt_output into wa_output1 with key sno = 1.
      IF wa_output1-AMOUNT1 IS INITIAL.wa_output1-AMOUNT1 = wa_output1-
AMOUNT3.ENDIF.
      IF wa_output1-AMOUNT2 IS INITIAL.wa_output1-AMOUNT2 = wa_output1-
AMOUNT4.ENDIF.

      read table lt_output into wa_output2 with key sno = 2.
      IF wa_output2-AMOUNT1 IS INITIAL.wa_output2-AMOUNT1 = wa_output2-
AMOUNT3.ENDIF.
      IF wa_output2-AMOUNT2 IS INITIAL.wa_output2-AMOUNT2 = wa_output2-
AMOUNT4.ENDIF.

      read table lt_output into wa_output3 with key sno = 3.
      IF wa_output3-AMOUNT1 IS INITIAL.wa_output3-AMOUNT1 = wa_output3-
AMOUNT3.ENDIF.
      IF wa_output3-AMOUNT2 IS INITIAL.wa_output3-AMOUNT2 = wa_output3-
AMOUNT4.ENDIF.

      read table lt_output into wa_output4 with key sno = 4.
      IF wa_output4-AMOUNT1 IS INITIAL.wa_output4-AMOUNT1 = wa_output4-
AMOUNT3.ENDIF.
      IF wa_output4-AMOUNT2 IS INITIAL.wa_output4-AMOUNT2 = wa_output4-
AMOUNT4.ENDIF.

      read table lt_output into wa_output5 with key sno = 5.
      IF wa_output5-AMOUNT1 IS INITIAL.wa_output5-AMOUNT1 = wa_output5-
AMOUNT3.ENDIF.
      IF wa_output5-AMOUNT2 IS INITIAL.wa_output5-AMOUNT2 = wa_output5-
AMOUNT4.ENDIF.

      read table lt_output into wa_output6 with key sno = 6.
      IF wa_output6-AMOUNT1 IS INITIAL.wa_output6-AMOUNT1 = wa_output6-
AMOUNT3.ENDIF.
      IF wa_output6-AMOUNT2 IS INITIAL.wa_output6-AMOUNT2 = wa_output6-
AMOUNT4.ENDIF.

      read table lt_output into wa_output7 with key sno = 7.
      IF wa_output7-AMOUNT1 IS INITIAL.wa_output7-AMOUNT1 = wa_output7-
AMOUNT3.ENDIF.
      IF wa_output7-AMOUNT2 IS INITIAL.wa_output7-AMOUNT2 = wa_output7-
AMOUNT4.ENDIF.

      read table lt_output into wa_output8 with key sno = 8.
      IF wa_output8-AMOUNT1 IS INITIAL.wa_output8-AMOUNT1 = wa_output8-
AMOUNT3.ENDIF.
      IF wa_output8-AMOUNT2 IS INITIAL.wa_output8-AMOUNT2 = wa_output8-
AMOUNT4.ENDIF.

      read table lt_output into wa_output9 with key sno = 9.
      IF wa_output9-AMOUNT1 IS INITIAL.wa_output9-AMOUNT1 = wa_output9-
AMOUNT3.ENDIF.
      IF wa_output9-AMOUNT2 IS INITIAL.wa_output9-AMOUNT2 = wa_output9-
AMOUNT4.ENDIF.

      read table lt_output into wa_output10 with key sno = 10.
      IF wa_output10-AMOUNT1 IS INITIAL.wa_output10-AMOUNT1 = wa_output10-
AMOUNT3.ENDIF.
      IF wa_output10-AMOUNT2 IS INITIAL.wa_output10-AMOUNT2 = wa_output10-
AMOUNT4.ENDIF.

      read table lt_output into wa_output11 with key sno = 11.
      IF wa_output11-AMOUNT1 IS INITIAL.wa_output11-AMOUNT1 = wa_output11-
AMOUNT3.ENDIF.
      IF wa_output11-AMOUNT2 IS INITIAL.wa_output11-AMOUNT2 = wa_output11-
AMOUNT4.ENDIF.

      read table lt_output into wa_output12 with key sno = 12.
      IF wa_output12-AMOUNT1 IS INITIAL.wa_output12-AMOUNT1 = wa_output12-
AMOUNT3.ENDIF.
      IF wa_output12-AMOUNT2 IS INITIAL.wa_output12-AMOUNT2 = wa_output12-
AMOUNT4.ENDIF.

      read table lt_output into wa_output13 with key sno = 13.
      IF wa_output13-AMOUNT1 IS INITIAL.wa_output13-AMOUNT1 = wa_output13-
AMOUNT3.ENDIF.
      IF wa_output13-AMOUNT2 IS INITIAL.wa_output13-AMOUNT2 = wa_output13-
AMOUNT4.ENDIF.

      IF s_endda-LOW IS NOT INITIAL.

        lv_edate = s_endda-LOW.
      ELSE.
        lv_edate = '20220101'.
      ENDIF.

      IF s_endda-HIGH IS NOT INITIAL.

        validityend = s_endda-HIGH.
      ELSE.
        validityend = '99991231'.
      ENDIF.

      CALL FUNCTION 'HR_EMPLOYEE_ENQUEUE'
        EXPORTING
          number = wa_output1-pernr.
      lv_record-pernr = wa_output1-pernr.
*            lv_record-lgart = 9001.
*            lv_record-waers = 'INR'.
      lv_record-BASM = wa_output1-AMOUNT1. condense lv_record-BASM . " MON
THLY BASIC
      lv_record-BAsy = wa_output1-AMOUNT2. condense lv_record-BASy .  " AN
NUAL BASIC

      lv_record-HRAM = wa_output2-AMOUNT1. condense lv_record-HRAM .
      lv_record-HRAY = wa_output2-AMOUNT2. condense lv_record-HRAY .

      lv_record-SAM = wa_output3-AMOUNT1.  condense lv_record-SAM .
      lv_record-SAY = wa_output3-AMOUNT2. condense lv_record-SAY .

      lv_record-MFGSA = wa_output4-AMOUNT1. condense lv_record-MFGSA .
      lv_record-MFGSB = wa_output4-AMOUNT2. condense lv_record-MFGSB .

      lv_record-ERPFM = wa_output5-AMOUNT1. condense lv_record-ERPFM .
      lv_record-ERPFY = wa_output5-AMOUNT2. condense lv_record-ERPFY .

      lv_record-ERESIM = wa_output6-AMOUNT1. condense lv_record-ERESIM .
      lv_record-ERESIY = wa_output6-AMOUNT2. condense lv_record-ERESIY .

      lv_record-RERCM = wa_output7-AMOUNT1. condense lv_record-RERCM .
      lv_record-RERCY = wa_output7-AMOUNT2. condense lv_record-RERCY .

      lv_record-ACTCM = wa_output8-AMOUNT1. condense lv_record-ACTCM .
      lv_record-ACTCY = wa_output8-AMOUNT2. condense lv_record-ACTCY .

      lv_record-EEPFM = wa_output9-AMOUNT1. condense lv_record-EEPFM .
*            lv_record-BAsy = wa_output1-AMOUNT2. condense lv_record-
BASy .

      lv_record-EEESIM  = wa_output10-AMOUNT1. condense lv_record-EEESIM .
*            lv_record-BAsy = wa_output1-AMOUNT2. condense lv_record-
BASy .

      lv_record-EEPTAXM = wa_output11-AMOUNT1. condense lv_record-EEPTAXM .
      lv_record-BAsy = wa_output1-AMOUNT2. condense lv_record-BASy .

      lv_record-DEECM = wa_output12-AMOUNT1. condense lv_record-DEECM .
*            lv_record-BAsy = wa_output1-AMOUNT2. condense lv_record-
BASy .

      lv_record-NETSALM = wa_output13-AMOUNT1. condense lv_record-NETSALM .
*            lv_record-BAsy = wa_output1-AMOUNT2. condense lv_record-
BASy .

      lv_record-begda = lv_edate.
**-> This FM is used to update the values in Pa30
      CALL FUNCTION 'HR_INFOTYPE_OPERATION'
        EXPORTING
          infty         = '9001'
          number        = wa_output1-pernr
          subtype       = '9001'
          validityend   = validityend
          validitybegin = lv_edate
          recordnumber  = '000'
          record        = lv_record
          operation     = 'INS'
          tclas         = 'A'
          dialog_mode   = '1'
        IMPORTING
          return        = l_bapireturn
          key           = bapipakey_tab.
      IF sy-subrc = 0.
        COMMIT WORK.
*              message 'Record Sucessfully Update' type 'I'.
      ELSE.
      ENDIF.
**->"This code is requred and unlocks the record
      CALL FUNCTION 'BAPI_EMPLOYEE_DEQUEUE'
        EXPORTING
          number = wa_output1-pernr
        IMPORTING
          return = l_bapireturn.
**            endloop.

      CALL FUNCTION 'HR_EMPLOYEE_ENQUEUE'
        EXPORTING
          number = wa_output1-pernr.
      lv_record1-pernr = wa_output1-pernr.
*            lv_record1-lgart = 1001.
*            lv_record1-waers = 'INR'.
      lv_record1-LGA01 = '1001'.
      lv_record1-BET01 = wa_output1-AMOUNT1.
      lv_record1-LGA02 = '1002'.
      lv_record1-BET02 = wa_output2-AMOUNT1.
      lv_record1-LGA03 = '1003'.
      lv_record1-BET03 = wa_output3-AMOUNT1.
      lv_record1-bEGDA = lv_edate.
      lv_record1-TRFGR  = 'STAFF'.
*            lv_record1-TRFAR  = '01'.
*            lv_record1-TRFGB  = '10'.
*            lv_record1-TRFST  = ''.
      lv_record1-BSGRD  = '94.12'.
      lv_record1-DIVGV  = '192'.

**-> This FM is used to update the values in Pa30
      CALL FUNCTION 'HR_INFOTYPE_OPERATION'
        EXPORTING
          infty         = '0008'
          number        = wa_output1-pernr
          subtype       = '0008'
          validityend   = validityend
          validitybegin = lv_edate
          recordnumber  = '000'
          record        = lv_record1
          operation     = 'INS'
          tclas         = 'A'
          dialog_mode   = '1'
        IMPORTING
          return        = l_bapireturn
          key           = bapipakey_tab.
      IF sy-subrc = 0.
        COMMIT WORK.
        message 'Record Sucessfully Update' type 'I'.
      ELSE.
      ENDIF.
**->"This code is requred and unlocks the record
      CALL FUNCTION 'BAPI_EMPLOYEE_DEQUEUE'
        EXPORTING
          number = wa_output1-pernr
        IMPORTING
          return = l_bapireturn.

*      IF p_det = abap_true.
*      SORT lt_output STABLE BY pernr ASCENDING.
*      DELETE ADJACENT DUPLICATES FROM lt_output COMPARING pernr.
*      DATA(lt_update_data) = it_final_M.
*      DATA(lt_pernr_buffer) = it_final_M.
*      SORT lt_pernr_buffer BY pernr ." detcategory.
*      DELETE ADJACENT DUPLICATES FROM lt_pernr_buffer COMPARING pernr.
*      REFRESH lt_update_data.
*      LOOP AT lt_output ASSIGNING FIELD-SYMBOL(<lfs_output>).
*        READ TABLE lt_pernr_buffer ASSIGNING FIELD-SYMBOL(<lfs_buffer>)
*                   WITH KEY pernr = <lfs_output>-pernr BINARY SEARCH.
*        IF sy-subrc IS INITIAL.
*          APPEND <lfs_buffer> TO lt_update_data.
*        ENDIF.
*      ENDLOOP.
**      ENDIF.
*
*
*      DATA(lt_otentries) = lt_output.
*      DELETE lt_otentries WHERE finalot = '00:00'.
*
*      IF gt_info_update IS INITIAL  AND lt_otentries IS INITIAL.
*        MESSAGE 'No records found for update!' TYPE 'S'.
*        EXIT.
*      ENDIF.

*      IF lt_update_data IS NOT INITIAL.
*        PERFORM update_infotypes USING lt_update_data.
*        SORT lt_update_data BY pernr.
*        LOOP AT it_final_M ASSIGNING <lfs_output> WHERE sel = abap_true
.
*          READ TABLE lt_update_data WITH KEY pernr = <lfs_output>-pernr
*                     INTO DATA(ls_output) BINARY SEARCH.
*          IF sy-subrc IS INITIAL AND ls_output-success IS NOT INITIAL.
*            <lfs_output>-remarks = ls_output-remarks.
*            <lfs_output>-linecolor = ls_output-linecolor.
*          ENDIF.
*        ENDLOOP.
*        MESSAGE 'Process Complete! Check Remarks Column!' TYPE 'S'.
*      ENDIF.

*      PERFORM update_personal_data.
  ENDCASE.

  rs_selfield-refresh = abap_true.
ENDFORM.                    " USER_COMMAND

INCLUDE PROGRAM
*&---------------------------------------------------------------------*
*&  Include           ZHR_MASTER_TOP1
*&---------------------------------------------------------------------*

TYPE-POOLS : slis.
TABLES: pa0001,pa0000,adrc,lfb1,lfbk,knvv,knbk,knb1,pa0007,PC207.

TYPES: BEGIN OF ty_pa0000,
         pernr TYPE pa0000-pernr,
         subty TYPE pa0000-subty,
         begda TYPE pa0000-begda,
         endda TYPE  pa0000-endda,
         stat2 TYPE  pa0000-stat2,

       END OF ty_pa0000.

TYPES: BEGIN OF ty_pa0001,
         pernr TYPE pa0001-pernr,
         subty TYPE pa0001-subty,
         bukrs TYPE pa0001-bukrs,
         werks TYPE pa0001-werks,
         persg TYPE pa0001-persg,
         persk TYPE pa0001-persk,
         vdsk1 TYPE pa0001-vdsk1,
         gsber TYPE pa0001-gsber,
         btrtl TYPE pa0001-btrtl,
         juper TYPE pa0001-juper,
         abkrs TYPE pa0001-abkrs,
         ansvh TYPE pa0001-ansvh,
         kostl TYPE pa0001-kostl,
         orgeh TYPE pa0001-orgeh,
         plans TYPE pa0001-plans,
         stell TYPE pa0001-stell,
         mstbr TYPE pa0001-mstbr,
         sname TYPE pa0001-sname,
         ename TYPE pa0001-ename,
         otype TYPE pa0001-otype,

       END OF ty_pa0001.

TYPES: BEGIN OF ty_pa0002,
         pernr TYPE pa0002-pernr,
         subty TYPE pa0002-subty,
         gesch TYPE pa0002-gesch,
         gbdat TYPE pa0002-gbdat,
         gblnd TYPE pa0002-gblnd,
         gbdep TYPE pa0002-gbdep,
         gbort TYPE pa0002-gbort,
         natio TYPE pa0002-natio,
         konfe TYPE pa0002-konfe,
         famst TYPE pa0002-famst,

       END OF ty_pa0002.

TYPES: BEGIN OF ty_t550a,
         motpr TYPE t550a-motpr,
         tprog TYPE t550a-tprog,
         regel TYPE t550a-regel,
         tpkla TYPE t550a-tpkla,
         sollz TYPE t550a-sollz,
         sobeg TYPE t550a-sobeg,
         soend TYPE t550a-soend,
         pamod TYPE t550a-pamod,

       END OF ty_t550a.

TYPES: BEGIN OF ty_t508a,
         zeity TYPE t508a-zeity,
         mofid TYPE t508a-mofid,
         mosid TYPE t508a-mosid,
         schkz TYPE t508a-schkz,

       END OF ty_t508a.

TYPES: BEGIN OF ty_pa0007,
         pernr TYPE p0007-pernr,
         schkz TYPE t508a-schkz,
       END OF ty_pa0007.

TYPES: BEGIN OF ty_t508s,
         schkz TYPE t508s-schkz,
         rtext TYPE t508s-rtext,
       END OF ty_t508s.

*TYPES: BEGIN OF ty_t508s,
*         rtext TYPE t508s-rtext,
*       END OF ty_t508s.
TYPES: BEGIN OF ty_pa0008,
         pernr TYPE pa0008-pernr,
         subty TYPE pa0008-subty,
         lga01 TYPE pa0008-lga01,
         bet01 TYPE pa0008-bet01,
         lga02 TYPE pa0008-lga02,
         bet02 TYPE pa0008-bet02,
         lga03 TYPE pa0008-lga03,
         bet03 TYPE pa0008-bet03,
         lga04 TYPE pa0008-lga04,
         bet04 TYPE pa0008-bet04,
         lga05 TYPE pa0008-lga05,
         bet05 TYPE pa0008-bet05,
         lga06 TYPE pa0008-lga06,
         bet06 TYPE pa0008-bet06,
       END OF ty_pa0008.

TYPES: BEGIN OF ty_pa0587,
         pernr TYPE pa0587-pernr,
         subty TYPE pa0587-subty,
         eepfn TYPE pa0587-eepfn,
         eepnn TYPE pa0587-eepnn,
       END OF ty_pa0587.

TYPES: BEGIN OF ty_pa0588,
         pernr TYPE pa0588-pernr,
         subty TYPE pa0588-subty,
         esino TYPE pa0588-esino,
         ticno TYPE pa0588-ticno,
       END OF ty_pa0588.

TYPES: BEGIN OF ty_pa0185,
         pernr TYPE pa0185-pernr,
         subty TYPE pa0185-subty,
         ictyp TYPE pa0185-ictyp,
         icnum TYPE pa0185-icnum,
       END OF ty_pa0185.

TYPES: BEGIN OF ty_pa0105,
         pernr TYPE pa0105-pernr,
         subty TYPE pa0105-subty,
         usrid TYPE pa0105-usrid,
       END OF ty_pa0105.

TYPES: BEGIN OF ty_PC207,
         BETRG TYPE   PC207-BETRG,
   END OF ty_PC207.

TYPES: BEGIN OF ty_adrc,

         addrnumber TYPE adrc-addrnumber,
         tel_number TYPE adrc-tel_number,
         tel_extens TYPE adrc-tel_extens,
         name1      TYPE adrc-name1,
         name2      TYPE adrc-name2,
         name3      TYPE adrc-name3,
         name4      TYPE adrc-name4,
         city1      TYPE adrc-city1,
         city2      TYPE adrc-city2,
         post_code1 TYPE adrc-post_code1,
         street     TYPE adrc-street,
         house_num1 TYPE adrc-house_num1,
         str_suppl1 TYPE adrc-str_suppl1,
         str_suppl2 TYPE adrc-str_suppl2,
         str_suppl3 TYPE adrc-str_suppl3,
         location   TYPE adrc-location,
         country    TYPE adrc-country,
         region     TYPE adrc-region,
         sort1      TYPE adrc-sort1,

       END OF ty_adrc.

TYPES: BEGIN OF ty_adr6,
         addrnumber TYPE adr6-addrnumber,
         smtp_addr  TYPE adr6-smtp_addr,

       END OF ty_adr6.

TYPES: BEGIN OF ty_final_m,
  pernr        type pa0000-pernr,
  Endda        TYPE pa0000-endda,
  ename        TYPE pa0001-ename,
  color(3) TYPE c,
  sel          TYPE  c,
  sno          TYPE int4,
  txt(100)     TYPE c,
  amount1(10)  TYPE i,
  amount2(10)  TYPE i,
  amount3(10)  TYPE i,
  amount4(10)  TYPE i,
  amount5(10)  TYPE i,
 amount6(10)   TYPE i,
   line_color(4)   TYPE c,
*  COLO TYPE SLIS_T_SPECIALCOL_ALV,

         END OF ty_final_m.

TYPES: BEGIN OF ty_final,
         sel             TYPE c,
         sno     TYPE int4,

         s_amt(10)       TYPE c,
         m_tot(10)          TYPE c,
         m_tot1(10)      TYPE c,
         m_tot2(10)    TYPE c,
         m_tot3(10)      TYPE c,
         m_tot4(10)      TYPE c,
         m_tot5(10)      TYPE c,
         m_tot6(10)      TYPE c,
         m_tot7(10)      TYPE c,
         m_tot8(10)      TYPE c,
         m_tot9(10)      TYPE c,
         m_tot10(10)      TYPE c,
         m_tot11(10)      TYPE c,
         m_tot12(10)      TYPE c,
         m_tot13(10)      TYPE c,
         m_tot14(10)      TYPE C,
         m_tot15(10)      TYPE c,
         m_tot16(10)      TYPE C,
         m_tot17(10)      TYPE C,
         m_tot18(10)      TYPE C,
         m_tot19(10)      TYPE C,
         m_tot20(10)      TYPE C,
         m_tot21(10)      TYPE C,
         m_tot22(10)      TYPE C,
         m_tot23(10)      TYPE C,
         m_tot24(10)      TYPE C,
         m_tot25(10)      TYPE C,
         m_tot26(10)      TYPE C,
         m_tot27(10)      TYPE C,
         m_tot28(10)      TYPE C,
         m_tot29(10)      TYPE c ,
         m_tot30(10)      TYPE C,
         m_tot31(10)      TYPE c,
         m_tot32(10)      TYPE C,
         m_tot33(10)      TYPE C,
         m_tot34(10)      TYPE C,
         m_tot35(10)      TYPE C,
         m_tot36(10)      TYPE C,
         m_tot37(10)      TYPE C,
         m_tot38(10)      TYPE C,
         m_tot39(10)      TYPE C,
         m_tot40(10)      TYPE C,
         m_tot41(10)      TYPE C,
         m_tot42(10)      TYPE C,
         m_tot43(10)      TYPE C,
         m_base1(10)     TYPE c,
         m_base2(10)     TYPE c,
         m_base3(10)     TYPE c,
         m_pf1           TYPE pa0008-bet06,
         txt1(100)       TYPE C,
         txt2(100)       TYPE c,
         txt3(100)       TYPE c,
         txt4(100)       TYPE c,
         txt5(100)       TYPE c,
         amount1(10)     TYPE c,
         amount2(10)     TYPE c,
         amount3(10)     TYPE c,
         amount4(10)     TYPE c,
         amount5(10)     TYPE c,
         amount6(10)     TYPE c,
*         emphasize         TYPE c,
         field1(10)      TYPE c,
         field2(10)      TYPE c,
         round(10)       TYPE c,
         pernr           TYPE pa0000-pernr,
         subty           TYPE pa0000-subty,
         begda           TYPE pa0000-begda,
         endda           TYPE  pa0000-endda,
         stat2           TYPE  pa0000-stat2,
         status(30)      TYPE c,
         bukrs           TYPE pa0001-bukrs,
         werks           TYPE pa0001-werks,
         werks_text(30)  TYPE c,
         persg           TYPE pa0001-persg,
         persk           TYPE pa0001-persk,
         persk_text(20)  TYPE c,
         persg_text(20)  TYPE c,
         vdsk1           TYPE pa0001-vdsk1,
         gsber           TYPE pa0001-gsber,
         btrtl           TYPE pa0001-btrtl,
         juper           TYPE pa0001-juper,
         abkrs           TYPE pa0001-abkrs,
         ansvh           TYPE pa0001-ansvh,
         kostl           TYPE pa0001-kostl,
         orgeh           TYPE pa0001-orgeh,
         plans           TYPE pa0001-plans,
         stell           TYPE pa0001-stell,
         rtext           TYPE t508s-rtext,
         mstbr           TYPE pa0001-mstbr,
         sname           TYPE pa0001-sname,
         ename           TYPE pa0001-ename,
         gesch           TYPE pa0002-gesch,
         gbdat           TYPE pa0002-gbdat,
         gblnd           TYPE pa0002-gblnd,
         gbdep           TYPE pa0002-gbdep,
         gbort           TYPE pa0002-gbort,
         natio           TYPE pa0002-natio,
         address(132)    TYPE c,
         motpr           TYPE t550a-motpr,
         tprog           TYPE t550a-tprog,
         regel           TYPE t550a-regel,
         tpkla           TYPE t550a-tpkla,
         sollz           TYPE t550a-sollz,
         sobeg           TYPE t550a-sobeg,
         soend           TYPE t550a-soend,
         pamod           TYPE t550a-pamod,
         zeity           TYPE t508a-zeity,
         mofid           TYPE t508a-mofid,
         mosid           TYPE t508a-mosid,
*         schkz           TYPE t508a-schkz,
         schkz           TYPE t508s-schkz,
         lga01           TYPE pa0008-lga01,
         bet01           TYPE pa0008-bet01,
         lga02           TYPE pa0008-lga02,
         bet02           TYPE pa0008-bet02,
         lga03           TYPE pa0008-lga03,
         bet03           TYPE pa0008-bet03,
         lga04           TYPE pa0008-lga04,
         bet04           TYPE pa0008-bet04,
         lga05           TYPE pa0008-lga05,
         bet05           TYPE pa0008-bet05,
         lga06           TYPE pa0008-lga06,
         bet06           TYPE pa0008-bet06,
         ctc             TYPE pa0008-bet06,
         wage            TYPE pa0008-bet06,
         notice          TYPE pa0008-bet06,
         eepfn           TYPE pa0587-eepfn,
         eepnn           TYPE pa0587-eepnn,
         esino           TYPE pa0588-esino,
         ticno          TYPE pa0588-ticno,
         ictyp           TYPE pa0185-ictyp,
         icnum           TYPE pa0185-icnum,
         pan             TYPE pa0587-eepfn,
         aadhar          TYPE pa0587-eepfn,
         tel_number      TYPE adrc-tel_number,
         tel_extens      TYPE adrc-tel_extens,
         name1           TYPE adrc-name1,
         name2           TYPE adrc-name2,
         name3           TYPE adrc-name3,
         name4           TYPE adrc-name4,
         city1           TYPE adrc-city1,
         city2           TYPE adrc-city2,
         post_code1      TYPE adrc-post_code1,
         street          TYPE adrc-street,
         house_num1      TYPE adrc-house_num1,
         str_suppl1      TYPE adrc-str_suppl1,
         str_suppl2      TYPE adrc-str_suppl2,
         str_suppl3      TYPE adrc-str_suppl3,
         location        TYPE adrc-location,
         country         TYPE adrc-country,
         mobile_no(20)   TYPE c,
         amobile_no(20)  TYPE c,
         subtotals(10)   TYPE c,
         region          TYPE adrc-region,
         sort1           TYPE adrc-sort1,
*         bank            TYPE zhr_bank-bank,
*         acno            TYPE zhr_bank-acno,
*        ifcod           TYPE zhr_bank-ifcod,
         fam_mem(30)     TYPE c,
         fam_name(30)    TYPE c,
         heght           TYPE pa0804-heght,
         hunit           TYPE pa0804-hunit,
         weght           TYPE pa0804-weght,
         wunit           TYPE pa0804-wunit,
         ecolr           TYPE pa0804-ecolr,
         hcolr           TYPE pa0804-hcolr,
         bgrup           TYPE pa0804-bgrup,
         schkz_text(40)  TYPE c,
         rtext_text(40)  TYPE c,
         smark           TYPE pa0804-smark,
         btrtl_text(40)  TYPE c,
         vdsk1_text(40)  TYPE c,
         orgeh_text(40)  TYPE c,
         plans_text(40)  TYPE c,
         ansvh_text(40)  TYPE c,
         gender_text(10) TYPE c,
         group(10)       TYPE c,
         weightage(10)   TYPE c,
         grade(2)        TYPE c,
         pf(1)           TYPE c,
         esi(1)          TYPE c,
         nation(10)      TYPE c,
         religion(25)    TYPE c,
         martial(10)     TYPE c,
         usrid(20)       TYPE c,
         payment(10)     TYPE c,
         exp(20)         TYPE c,
         education(20)   TYPE c,
         qualification   TYPE c,
         nominee(40)     TYPE c,
         dom             TYPE pa0000-begda,
*         line_color(4)   TYPE c,
*        COLO TYPE SLIS_T_SPECIALCOL_ALV,

       END OF ty_final.

DATA: it_pa0000 TYPE STANDARD TABLE OF ty_pa0000,
      wa_pa0000 TYPE ty_pa0000,

      it_pa0001 TYPE STANDARD TABLE OF ty_pa0001,
      wa_pa0001 TYPE ty_pa0001,

      it_t508s  TYPE STANDARD TABLE OF ty_t508s,
      wa_t508s  TYPE ty_t508s,

      it_pa0002 TYPE STANDARD TABLE OF ty_pa0002,
      wa_pa0002 TYPE ty_pa0002,

      it_pa0008 TYPE STANDARD TABLE OF ty_pa0008,
      wa_pa0008 TYPE ty_pa0008,

      it_pa0587 TYPE STANDARD TABLE OF ty_pa0587,
      wa_pa0587 TYPE ty_pa0587,

      it_pa0588 TYPE STANDARD TABLE OF ty_pa0588,
      wa_pa0588 TYPE ty_pa0588,

      it_pa0185 TYPE STANDARD TABLE OF ty_pa0185,
      wa_pa0185 TYPE ty_pa0185,

      it_pa0105 TYPE STANDARD TABLE OF ty_pa0105,
      wa_pa0105 TYPE ty_pa0105,

      it_t550a  TYPE STANDARD TABLE OF ty_t550a,
      wa_t550a  TYPE ty_t550a,

      gt_pa0007 TYPE SORTED TABLE OF ty_pa0007 WITH NON-UNIQUE KEY pernr,
*      gt_pa0105 TYPE SORTED TABLE OF ty_pa0105 WITH NON-UNIQUE KEY pern
r,

*      gt_v_tfo8a TYPE SORTED TABLE OF ty_v_tfo8a WITH NON-UNIQUE KEY pe
rnr,

      it_t508a  TYPE STANDARD TABLE OF ty_t508a,
      wa_t508a  TYPE ty_t508a,

      it_adrc   TYPE STANDARD TABLE OF ty_adrc,
      wa_adrc   TYPE ty_adrc,

      it_adr6   TYPE STANDARD TABLE OF ty_adr6,
      wa_adr6   TYPE ty_adr6,
      it_final  TYPE STANDARD TABLE OF ty_final,
      it_final1 TYPE STANDARD TABLE OF ty_final,
      wa_final  TYPE ty_final,
      wa_final1 TYPE ty_final,

      wa_final_m  TYPE ty_final_m,
      it_final_m  TYPE STANDARD TABLE OF ty_final_m,
      lt_output  TYPE STANDARD TABLE OF ty_final_m,
      wa_output1 type ty_final_m,
      wa_output2 type ty_final_m,
      wa_output3 type ty_final_m,
      wa_output4 type ty_final_m,
      wa_output5 type ty_final_m,
      wa_output6 type ty_final_m,
      wa_output7 type ty_final_m,
      wa_output8 type ty_final_m,
      wa_output9 type ty_final_m,
      wa_output10 type ty_final_m,
      wa_output11 type ty_final_m,
      wa_output12 type ty_final_m,
      wa_output13 type ty_final_m,
      amount(13) type c,

      afield    TYPE slis_fieldcat_alv,
      fieldcat  TYPE slis_t_fieldcat_alv,
      layout_in TYPE slis_layout_alv.

*DATA:
*  it_fieldcat  TYPE slis_t_fieldcat_alv,
*  it_fieldcat1 TYPE slis_t_fieldcat_alv,
*  wa_fieldcat  TYPE slis_fieldcat_alv,
*  wa_fieldcat1 TYPE slis_fieldcat_alv,
*  lv           TYPE disvariant,
*  wa_layout1    TYPE slis_layout_alv.

DATA : i_sort TYPE slis_t_sortinfo_alv .
DATA : wa_sort LIKE LINE OF i_sort .
DATA : heading(100) TYPE c.
*
*data:
*      gs_layout type lvc_s_layo,
*      GS_VARIANT TYPE DISVARIANT.
*DATA: color TYPE slis_t_specialcol_alv WITH HEADER LINE .

DATA: wa_fcat   TYPE lvc_s_fcat,
      it_fcat   TYPE lvc_t_fcat,
      wa_layout TYPE lvc_s_layo,
      wa_top    TYPE slis_listheader,
      it_top    TYPE slis_t_listheader.

DATA : sno TYPE int4 .
DATA : MTotal TYPE PAD_AMT7S.
Data:lv_edate type pa2001-begda.

DATA:       l_bapireturn  LIKE bapireturn1,
       bapipakey_tab LIKE bapipakey OCCURS 0 WITH HEADER LINE.
DATA: validitybegin TYPE p0001-begda,
      validityend   TYPE p0001-endda,
      lv_record     TYPE p0015,
      lv_tabix      TYPE sy-tabix.

You might also like