Hi Everyone, I've been trying to export my report to excel. But I have exhausted all possible reasons and I just couldn't figure it out. Can someone please help me. Thanks in advance.
----
PROGRAM NAME : ZADC_PAYSUMNEW
*
----
........ *
----
REPORT ZADC_PAYSUMNEW
NO STANDARD PAGE HEADING
LINE-SIZE 450
LINE-COUNT 65 MESSAGE-ID zmes.
----
TABLE DECLARATION *
----
TABLES: cskt,
csks,
pa0009,
pcl1,
pcl2,
pernr,
t512t,
t549a,
t527x,
zhrprtype.
----
INFOTYPES DECLARATION
----
INFOTYPES: 0001, 0002.
----
INCLUDE DECLARATION
----
INCLUDE: rpc2rx00.
INCLUDE: rpc2rxx0.
INCLUDE: rpppxd00.
----
INTERNAL TABLE DECLARATION
----
DATA: BEGIN OF itab OCCURS 0,
khinr LIKE csks-khinr,
kostl LIKE p0001-kostl,
ltext(40),
p_date LIKE pc261-inper,
basic(7) TYPE p DECIMALS 2,
pera(7) TYPE p DECIMALS 2,
longp(7) TYPE p DECIMALS 2,
trall(6) type p decimals 2,
srvaw(6) TYPE p DECIMALS 2,
chall(7) TYPE p DECIMALS 2,
leave(7) TYPE p DECIMALS 2,
meal(7) TYPE p DECIMALS 2,
saldf(7) TYPE p DECIMALS 2,
sipps(7) TYPE p DECIMALS 2,
sipgs(7) TYPE p DECIMALS 2,
subs(7) TYPE p DECIMALS 2,
hzard(7) TYPE p DECIMALS 2,
lallw(7) TYPE p DECIMALS 2,
medps(7) TYPE p DECIMALS 2,
medgs(7) TYPE p DECIMALS 2,
pcontps(7) TYPE p DECIMALS 2,
pcontgs(7) TYPE p DECIMALS 2,
pagibps(6) TYPE p DECIMALS 2,
pagibgs(6) TYPE p DECIMALS 2,
lwop(7) TYPE p DECIMALS 2,
npay(7) TYPE p DECIMALS 2,
otime(7) TYPE p DECIMALS 2,
ec(7) TYPE p DECIMALS 2,
fr_date like sy-datum,
to_date like sy-datum,
END OF itab.
DATA: BEGIN OF jtab OCCURS 0,
khinr LIKE csks-khinr,
kostl LIKE p0001-kostl,
ltext(40),
basic(7) TYPE p DECIMALS 2,
pera(7) TYPE p DECIMALS 2,
longp(7) TYPE p DECIMALS 2,
trall(6) type p decimals 2,
srvaw(6) TYPE p DECIMALS 2,
chall(7) TYPE p DECIMALS 2,
leave(7) TYPE p DECIMALS 2,
meal(7) TYPE p DECIMALS 2,
saldf(7) TYPE p DECIMALS 2,
sipps(7) TYPE p DECIMALS 2,
sipgs(7) TYPE p DECIMALS 2,
subs(7) TYPE p DECIMALS 2,
hzard(7) TYPE p DECIMALS 2,
lallw(7) TYPE p DECIMALS 2,
medps(7) TYPE p DECIMALS 2,
medgs(7) TYPE p DECIMALS 2,
pcontps(7) TYPE p DECIMALS 2,
pcontgs(7) TYPE p DECIMALS 2,
pagibps(6) TYPE p DECIMALS 2,
pagibgs(6) TYPE p DECIMALS 2,
lwop(7) TYPE p DECIMALS 2,
npay(7) TYPE p DECIMALS 2,
otime(7) TYPE p DECIMALS 2,
ec(7) TYPE p DECIMALS 2,
END OF jtab.
DATA: it_list TYPE STANDARD TABLE OF itab WITH HEADER LINE.
----
CONSTANTS DECLARATION
----
CONSTANTS: basic TYPE pc207-lgart VALUE '0401',
basic2 TYPE pc207-lgart VALUE '0402',
basic3 TYPE pc207-lgart VALUE '0403',
PERA TYPE pc207-lgart VALUE '3104',
PERA2 TYPE pc207-lgart VALUE '3110',
longp TYPE pc207-lgart VALUE '1601',
longp2 TYPE pc207-lgart VALUE '1603',
trall TYPE pc207-lgart VALUE '3109',
srvaw TYPE pc207-lgart VALUE '2117',
leave TYPE pc207-lgart VALUE '2118',
chall TYPE pc207-lgart VALUE '3105',
chall2 TYPE pc207-lgart VALUE '3111',
chall3 TYPE pc207-lgart VALUE '3112',
meal TYPE pc207-lgart VALUE '3102',
saldf TYPE pc207-lgart VALUE '4103',
sipps TYPE pc207-lgart VALUE '/090',
sipps2 TYPE pc207-lgart VALUE '1121',
subs TYPE pc207-lgart VALUE '3101',
hzard TYPE pc207-lgart VALUE '1602',
lallw TYPE pc207-lgart VALUE '3103',
medps TYPE pc207-lgart VALUE '/313',
medgs TYPE pc207-lgart VALUE '/314',
pcontps TYPE pc207-lgart VALUE '/093',
pcontps2 TYPE pc207-lgart VALUE '1327',
pcontps3 TYPE pc207-lgart VALUE '1120',
pagibps TYPE pc207-lgart VALUE '/326',
pagibps2 TYPE pc207-lgart VALUE '1326',
lwop TYPE pc207-lgart VALUE '1102',
otime TYPE pc207-lgart VALUE '0101',
otime2 TYPE pc207-lgart VALUE '0102',
otime3 TYPE pc207-lgart VALUE '0103',
otime4 TYPE pc207-lgart VALUE '0104',
npay TYPE pc207-lgart VALUE '/559'.
----
DATA DECLARATION
----
DATA: BEGIN OF COMMON PART buffer.
INCLUDE: rpppxd10.
DATA: END OF COMMON PART buffer.
*Table data containing directory to PCL2 payroll results file DATA:
DATA: BEGIN OF rgdir OCCURS 100.
INCLUDE STRUCTURE pc261.
DATA: END OF rgdir.
DATA: BEGIN OF evpdir OCCURS 100.
INCLUDE STRUCTURE pc261.
DATA: END OF evpdir.
DATA: country LIKE t001p-molga,
lname LIKE t527x-orgtx,
filename2(128),
p_date LIKE pc261-inper,
w_basic LIKE pc207-lgart,
w_basic2 LIKE pc207-lgart,
w_basic3 LIKE pc207-lgart,
w_pera LIKE pc207-lgart,
w_pera2 LIKE pc207-lgart,
w_longp LIKE pc207-lgart,
w_longp2 LIKE pc207-lgart,
w_trall LIKE pc207-lgart,
w_srvaw LIKE pc207-lgart,
w_leave LIKE pc207-lgart,
w_chall LIKE pc207-lgart,
w_chall2 LIKE pc207-lgart,
w_chall3 LIKE pc207-lgart,
w_meal LIKE pc207-lgart,
w_saldf LIKE pc207-lgart,
w_sipps LIKE pc207-lgart,
w_sipps2 LIKE pc207-lgart,
w_subs LIKE pc207-lgart,
w_hzard LIKE pc207-lgart,
w_lallw LIKE pc207-lgart,
w_medps LIKE pc207-lgart,
w_medgs LIKE pc207-lgart,
w_pcontps LIKE pc207-lgart,
w_pcontps2 LIKE pc207-lgart,
w_pcontps3 LIKE pc207-lgart,
w_pagibps LIKE pc207-lgart,
w_pagibps2 LIKE pc207-lgart,
w_lwop LIKE pc207-lgart,
w_otime LIKE pc207-lgart,
w_otime2 LIKE pc207-lgart,
w_otime3 LIKE pc207-lgart,
w_otime4 LIKE pc207-lgart,
w_npay LIKE pc207-lgart,
tempgs(7) TYPE p DECIMALS 2,
ctr-basic(7) TYPE p DECIMALS 2,
ctr-pera(7) TYPE p DECIMALS 2,
ctr-longp(7) TYPE p DECIMALS 2,
ctr-trall(6) TYPE p DECIMALS 2,
ctr-srvaw(6) TYPE p DECIMALS 2,
ctr-leave(7) TYPE p DECIMALS 2,
ctr-chall(7) TYPE p DECIMALS 2,
ctr-meal(7) TYPE p DECIMALS 2,
ctr-saldf(7) TYPE p DECIMALS 2,
ctr-sipps(7) TYPE p DECIMALS 2,
ctr-sipgs(7) TYPE p DECIMALS 2,
ctr-subs(7) TYPE p DECIMALS 2,
ctr-hzard(7) TYPE p DECIMALS 2,
ctr-lallw(7) TYPE p DECIMALS 2,
ctr-medps(7) TYPE p DECIMALS 2,
ctr-medgs(7) TYPE p DECIMALS 2,
ctr-pcontps(7) TYPE p DECIMALS 2,
ctr-pcontgs(7) TYPE p DECIMALS 2,
ctr-pagibps(6) TYPE p DECIMALS 2,
ctr-pagibgs(6) TYPE p DECIMALS 2,
ctr-lwop(7) TYPE p DECIMALS 2,
ctr-otime(7) TYPE p DECIMALS 2,
ctr-npay(7) TYPE p DECIMALS 2,
ctr-ec(7) TYPE p DECIMALS 2.
DATA: BEGIN OF ph-version.
INCLUDE STRUCTURE pc201_pay. "XTWPH9K008656
DATA: END OF ph-version.
DATA: fr_date LIKE sy-datum,
to_date LIKE sy-datum.
----
SELECT-OPTIONS and PARAMETERS
----
SELECT-OPTIONS: p_status FOR rgdir-srtza DEFAULT 'A'.
DATA: DATE1(15),
mon(9).
----
DEFINITION
----
DEFINE rp-imp-c2-rx2.
clear:
orx-version, "OBJECTS_FOR_CLEAR
rt, rt[].
import
ph-version to orx-version "OBJECTS_FOR_IMPORT
rt
from database pcl2(ph) id rx-key using pcl2_exp_imp.
rp-imp-rx-subrc = sy-subrc.
if sy-subrc eq 0 and orx-version-number ne ph-version-number.
rp-imp-rx-subrc = 8.
endif.
END-OF-DEFINITION.
TYPE-POOLS: slis.
DATA: g_repid LIKE sy-repid,
gt_fieldcat TYPE slis_t_fieldcat_alv,
gt_events TYPE slis_t_event,
gt_top TYPE slis_t_listheader,
gt_eol TYPE slis_t_listheader,
gt_list_top_of_page TYPE slis_t_listheader,
gt_list_end_of_list TYPE slis_t_listheader,
gs_layout TYPE slis_layout_alv,
d_f2code LIKE sy-ucomm VALUE '&ETA'.
CONSTANTS: fn_top TYPE slis_formname VALUE 'TOP_OF_PAGE',
fn_eol TYPE slis_formname VALUE 'END_OF_LIST'.
DATA: it_alv_out TYPE STANDARD TABLE OF itab WITH HEADER LINE.
INITIALIZATION.
g_repid = sy-repid.
PERFORM f_fieldcat_init USING gt_fieldcat[].
PERFORM eventtab_build USING gt_events[].
----
START-OF-SELECTION.
----
START-OF-SELECTION.
fr_date = to_date = pn-endda.
fr_date+6(2) = '01'.
SELECT SINGLE * FROM t549a
WHERE abkrs = pnpxabkr.
GET PERNR.
CLEAR: itab, lname.
PERFORM get_rt_tab.
END-OF-SELECTION.
PERFORM display_grid.
INCLUDE rpppxm00.
USING DATM
----
FORM get_rt_tab *
----
........ *
----
FORM get_rt_tab.
rp_provide_from_last p0001 space pn-begda pn-endda.
rp_provide_from_last p0002 space pn-begda pn-endda.
CALL FUNCTION 'CU_READ_RGDIR'
EXPORTING
persnr = p0001-pernr
IMPORTING
molga = country
TABLES
in_rgdir = rgdir
EXCEPTIONS
no_record_found = 1
OTHERS = 2.
IF sy-subrc = 0.
SELECT single ltext FROM cskt
INTO itab-ltext
WHERE kostl = p0001-kostl
AND datbi = '99991231'.
SELECT SINGLE * FROM csks
WHERE kostl = p0001-kostl
AND kokrs = 'GSIS'
AND datbi = '99991231'.
IF sy-subrc = 0.
MOVE: csks-kostl TO itab-kostl,
csks-khinr TO itab-khinr.
ENDIF.
p_date = pn-paper.
regular payroll run.
CALL FUNCTION 'CD_EVALUATION_PERIODS'
EXPORTING
bonus_date = '00000000'
inper_modif = t549a-permo
inper = p_date
pay_type = ' '
pay_ident = ' '
TABLES
rgdir = rgdir
evpdir = evpdir
EXCEPTIONS
no_record_found = 1
OTHERS = 2.
IF sy-subrc = 0.
LOOP AT evpdir WHERE srtza IN p_status and FPPER eq pn-begda+(6).
rx-key-pernr = p0001-pernr.
rx-key-seqno = evpdir-seqnr.
rp-imp-c2-rx2.
IF rp-imp-rx-subrc = 0.
PERFORM rt_to_itab.
ENDIF.
ENDLOOP.
ENDIF.
ENDIF.
ENDFORM.
----
FORM PRINT_RX *
----
........ *
----
FORM print_rx.
LOOP AT rt.
PERFORM re512t USING country rt-lgart.
ENDLOOP.
ENDFORM.
----
FORM RE512T *
----
........ *
----
--> VALUE(COUNTRY_GROUPING) *
--> VALUE(WTYPE) *
----
FORM re512t USING value(country_grouping)
value(wtype).
CHECK t512t-sprsl NE sy-langu
OR t512t-molga NE country_grouping
OR t512t-lgart NE wtype.
SELECT SINGLE * FROM t512t
WHERE sprsl EQ sy-langu
AND molga EQ country_grouping
AND lgart EQ wtype.
IF sy-subrc NE 0.
CLEAR t512t.
ENDIF.
ENDFORM.
----
FORM rt_to_itab *
----
........ *
----
FORM rt_to_itab.
MOVE: basic TO w_basic,
basic2 TO w_basic2,
basic3 TO w_basic3,
pera TO w_pera,
pera2 TO w_pera2,
longp TO w_longp,
longp2 TO w_longp2,
srvaw TO w_srvaw,
leave TO w_leave,
trall TO w_trall,
chall TO w_chall,
chall2 TO w_chall2,
chall3 TO w_chall3,
meal TO w_meal,
saldf TO w_saldf,
sipps TO w_sipps,
sipps2 TO w_sipps2,
subs TO w_subs,
hzard TO w_hzard,
lallw TO w_lallw,
medps TO w_medps,
medgs TO w_medgs,
pcontps TO w_pcontps,
pcontps2 TO w_pcontps2,
pcontps3 TO w_pcontps3,
pagibps TO w_pagibps,
pagibps2 TO w_pagibps2,
LWOP TO w_lwop,
otime TO w_otime,
otime2 TO w_otime2,
otime3 TO w_otime3,
otime4 TO w_otime4,
npay TO w_npay.
LOOP AT rt WHERE lgart = w_basic or lgart = w_basic2
or lgart = w_basic3.
IF rt-betrg < 0.
rt-betrg = abs( rt-betrg ).
ENDIF.
ADD: rt-betrg TO itab-basic.
itab-ec = rt-betrg / 100.
if itab-ec > 100.
itab-ec = 100.
ENDIF.
ENDLOOP.
LOOP AT rt WHERE lgart = w_pera.
IF rt-betrg < 0.
rt-betrg = abs( rt-betrg ).
ENDIF.
ADD: rt-betrg TO itab-pera.
ENDLOOP.
LOOP AT rt WHERE lgart = w_pera2.
IF rt-betrg < 0.
rt-betrg = abs( rt-betrg ).
ENDIF.
ADD: rt-betrg TO itab-pera.
ENDLOOP.
LOOP AT rt WHERE lgart = w_longp or lgart = w_longp2.
IF rt-betrg < 0.
rt-betrg = abs( rt-betrg ).
ENDIF.
ADD: rt-betrg TO itab-longp.
ENDLOOP.
LOOP AT rt WHERE lgart = w_trall.
if rt-betrg < 0.
rt-betrg = abs( rt-betrg ).
endif.
ADD: rt-betrg TO itab-trall.
ENDLOOP.
LOOP AT rt WHERE lgart = w_srvaw.
IF rt-betrg < 0.
rt-betrg = abs( rt-betrg ).
ENDIF.
ADD: rt-betrg TO itab-srvaw.
ENDLOOP.
LOOP AT rt WHERE lgart = w_leave.
IF rt-betrg < 0.
rt-betrg = abs( rt-betrg ).
ENDIF.
ADD: rt-betrg TO itab-leave.
ENDLOOP.
LOOP AT rt WHERE lgart = w_chall or
lgart = w_chall2 or
lgart = w_chall3.
IF rt-betrg < 0.
rt-betrg = abs( rt-betrg ).
ENDIF.
ADD: rt-betrg TO itab-chall.
ENDLOOP.
LOOP AT rt WHERE lgart = w_meal.
IF rt-betrg < 0.
rt-betrg = abs( rt-betrg ).
ENDIF.
ADD: rt-betrg TO itab-meal.
ENDLOOP.
LOOP AT rt WHERE lgart = w_saldf.
IF rt-betrg < 0.
rt-betrg = abs( rt-betrg ).
ENDIF.
ADD: rt-betrg TO itab-saldf.
ENDLOOP.
LOOP AT rt WHERE lgart = w_sipps or
lgart = w_sipps2.
IF rt-betrg < 0.
rt-betrg = abs( rt-betrg ).
ENDIF.
ADD: rt-betrg TO itab-sipps.
itab-sipgs = itab-sipps / 9 * 12.
ENDLOOP.
LOOP AT rt WHERE lgart = w_subs.
IF rt-betrg < 0.
rt-betrg = abs( rt-betrg ).
ENDIF.
ADD: rt-betrg TO itab-subs.
ENDLOOP.
LOOP AT rt WHERE lgart = w_hzard.
IF rt-betrg < 0.
rt-betrg = abs( rt-betrg ).
ENDIF.
ADD: rt-betrg TO itab-hzard.
ENDLOOP.
LOOP AT rt WHERE lgart = w_lallw.
IF rt-betrg < 0.
rt-betrg = abs( rt-betrg ).
ENDIF.
ADD: rt-betrg TO itab-lallw.
ENDLOOP.
LOOP AT rt WHERE lgart = w_medps.
IF rt-betrg < 0.
rt-betrg = abs( rt-betrg ).
ENDIF.
ADD: rt-betrg TO itab-medps.
ENDLOOP.
LOOP AT rt WHERE lgart = w_medgs.
IF rt-betrg < 0.
rt-betrg = abs( rt-betrg ).
ENDIF.
MOVE: rt-betrg TO tempgs.
itab-medgs = itab-medps.
ENDLOOP.
LOOP AT rt WHERE lgart = w_pcontps OR
lgart = w_pcontps2 OR
lgart = w_pcontps3.
IF rt-betrg < 0.
rt-betrg = abs( rt-betrg ).
ENDIF.
ADD: rt-betrg TO itab-pcontps.
ENDLOOP.
itab-pcontgs = itab-pcontps * 9.
LOOP AT rt WHERE lgart = w_pagibps OR
lgart = w_pagibps2.
IF rt-betrg < 0.
rt-betrg = abs( rt-betrg ).
ENDIF.
ADD: rt-betrg TO itab-pagibps.
ENDLOOP.
LOOP AT rt WHERE lgart = w_pagibps.
IF rt-betrg < 0.
rt-betrg = abs( rt-betrg ).
ENDIF.
ADD: rt-betrg TO itab-pagibgs.
ENDLOOP.
LOOP AT rt WHERE lgart = w_lwop.
IF rt-betrg < 0.
rt-betrg = abs( rt-betrg ).
ENDIF.
ADD: rt-betrg TO itab-lwop.
ENDLOOP.
LOOP AT rt WHERE lgart = w_otime or
lgart = w_otime2 or
lgart = w_otime3 or
lgart = w_otime4.
IF rt-betrg < 0.
rt-betrg = abs( rt-betrg ).
ENDIF.
ADD: rt-betrg TO itab-otime.
ENDLOOP.
LOOP AT rt WHERE lgart = w_npay.
IF rt-betrg < 0.
rt-betrg = abs( rt-betrg ).
ENDIF.
ADD: rt-betrg TO itab-npay.
ENDLOOP.
COLLECT itab.
CLEAR: itab.
REFRESH rt.
ENDFORM. " rt_to_itab
&----
*& Form f_fieldcat_init
&----
text
----
-->P_GT_FIELDCAT[] text
----
FORM f_fieldcat_init USING rt_fieldcat TYPE slis_t_fieldcat_alv.
DATA: ls_fieldcat TYPE slis_fieldcat_alv.
CLEAR ls_fieldcat.
ls_fieldcat-col_pos = 1.
ls_fieldcat-reptext_ddic = ' FXNAL Group'.
ls_fieldcat-fieldname = 'KHINR'.
ls_fieldcat-ref_tabname = 'ITAB'.
ls_fieldcat-outputlen = 12.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-col_pos = 2.
ls_fieldcat-reptext_ddic = ' OFFICE'.
ls_fieldcat-fieldname = 'LTEXT'.
ls_fieldcat-ref_tabname = 'ITAB'.
ls_fieldcat-outputlen = 40.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-col_pos = 3.
ls_fieldcat-reptext_ddic = ' RC #'.
ls_fieldcat-fieldname = 'KOSTL'.
ls_fieldcat-ref_tabname = 'ITAB'.
ls_fieldcat-outputlen = 5.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-col_pos = 4.
ls_fieldcat-reptext_ddic = 'Basic Salary'.
ls_fieldcat-tabname = 'ITAB'.
ls_fieldcat-fieldname = 'BASIC'.
ls_fieldcat-datatype = 'CURR'.
ls_fieldcat-outputlen = 15.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-col_pos = 5.
ls_fieldcat-reptext_ddic = 'PERA Allow'.
ls_fieldcat-tabname = 'ITAB'.
ls_fieldcat-fieldname = 'PERA'.
ls_fieldcat-datatype = 'CURR'.
ls_fieldcat-outputlen = 15.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-col_pos = 6.
ls_fieldcat-reptext_ddic = 'Longevity Pay'.
ls_fieldcat-tabname = 'ITAB'.
ls_fieldcat-fieldname = 'LONGP'.
ls_fieldcat-datatype = 'CURR'.
ls_fieldcat-outputlen = 15.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-col_pos = 7.
ls_fieldcat-reptext_ddic = 'Service Award'.
ls_fieldcat-tabname = 'ITAB'.
ls_fieldcat-fieldname = 'SRVAW'.
ls_fieldcat-datatype = 'CURR'.
ls_fieldcat-outputlen = 15.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-col_pos = 8.
ls_fieldcat-reptext_ddic = 'Child Allowance'.
ls_fieldcat-tabname = 'ITAB'.
ls_fieldcat-fieldname = 'CHALL'.
ls_fieldcat-datatype = 'CURR'.
ls_fieldcat-outputlen = 15.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-col_pos = 9.
ls_fieldcat-reptext_ddic = 'Leave Mone'.
ls_fieldcat-tabname = 'ITAB'.
ls_fieldcat-fieldname = 'LEAVE'.
ls_fieldcat-datatype = 'CURR'.
ls_fieldcat-outputlen = 15.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-col_pos = 10.
ls_fieldcat-reptext_ddic = 'Over-time'.
ls_fieldcat-tabname = 'ITAB'.
ls_fieldcat-fieldname = 'OTIME'.
ls_fieldcat-datatype = 'CURR'.
ls_fieldcat-outputlen = 15.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-col_pos = 11.
ls_fieldcat-reptext_ddic = 'Meal Subsidy'.
ls_fieldcat-tabname = 'ITAB'.
ls_fieldcat-fieldname = 'MEAL'.
ls_fieldcat-datatype = 'CURR'.
ls_fieldcat-outputlen = 15.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-col_pos = 12.
ls_fieldcat-reptext_ddic = 'Salary Diff.'.
ls_fieldcat-tabname = 'ITAB'.
ls_fieldcat-fieldname = 'SALDF'.
ls_fieldcat-datatype = 'CURR'.
ls_fieldcat-outputlen = 15.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-col_pos = 13.
ls_fieldcat-reptext_ddic = 'Subsistence'.
ls_fieldcat-tabname = 'ITAB'.
ls_fieldcat-fieldname = 'SUBS'.
ls_fieldcat-datatype = 'CURR'.
ls_fieldcat-outputlen = 15.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-col_pos = 14.
ls_fieldcat-reptext_ddic = 'Hazard Pay'.
ls_fieldcat-tabname = 'ITAB'.
ls_fieldcat-fieldname = 'HZARD'.
ls_fieldcat-datatype = 'CURR'.
ls_fieldcat-outputlen = 15.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-col_pos = 15.
ls_fieldcat-reptext_ddic = 'Laundry Allow'.
ls_fieldcat-tabname = 'ITAB'.
ls_fieldcat-fieldname = 'LALLW'.
ls_fieldcat-datatype = 'CURR'.
ls_fieldcat-outputlen = 15.
APPEND ls_fieldcat TO rt_fieldcat.
ENDFORM. " f_fieldcat_init
&----
*& Form display_grid
&----
text
----
--> p1 text
<-- p2 text
----
FORM display_grid.
SORT itab BY kostl khinr.
LOOP AT itab.
AT NEW khinr.
MOVE-CORRESPONDING itab TO jtab.
APPEND jtab.
ENDAT.
ENDLOOP.
PERFORM my_top USING gt_top[].
PERFORM build_layout USING gs_layout.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = g_repid
is_layout = gs_layout
it_fieldcat = gt_fieldcat[]
it_events = gt_events[]
TABLES
t_outtab = itab.
ENDFORM. " display_grid
&----
*& Form eventtab_build
&----
text
----
-->P_GT_EVENTS[] text
----
FORM EVENTTAB_BUILD USING my_events TYPE SLIS_T_EVENT.
DATA: ls_event TYPE slis_alv_event.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
i_list_type = 1
IMPORTING
et_events = my_events.
*TOP OF PAGE
READ TABLE my_events
WITH KEY NAME = slis_ev_top_of_page
INTO LS_EVENT.
IF SY-SUBRC = 0.
MOVE fn_top TO ls_event-form.
APPEND ls_event TO my_events.
ENDIF.
CLEAR ls_event.
*END OF LIST
READ TABLE my_events
WITH KEY name = slis_ev_end_of_list
INTO ls_event.
IF sy-subrc = 0.
MOVE fn_eol TO ls_event-form.
APPEND ls_event TO my_events.
ENDIF. " SY-SUBRC for READ TABLE
ENDFORM. " eventtab_build
&----
*& Form top_comment
&----
text
----
-->P_MYTOP[] text
----
FORM top_comment USING my_top_of_page TYPE slis_t_listheader.
DATA: it_t247 LIKE t247 OCCURS 0 WITH HEADER LINE.
DATA: ls_line TYPE slis_listheader,
li_recs TYPE i,
lc_name(60) TYPE c,
lc_from(30) TYPE c,
lc_to(30) TYPE c.
CALL FUNCTION 'MONTH_NAMES_GET'
TABLES
month_names = it_t247.
Company Name
CLEAR ls_line.
ls_line-typ = 'H'.
ls_line-info = TEXT-001.
APPEND ls_line TO my_top_of_page.
CLEAR ls_line.
ls_line-typ = 'S'.
ls_line-info = TEXT-002.
APPEND ls_line TO my_top_of_page.
Date
CLEAR lc_name.
CONCATENATE sy-datum+6(2) ',' INTO lc_name.
READ TABLE it_t247 WITH KEY mnr = sy-datum+4(2).
CONCATENATE text-003 it_t247-ltx lc_name sy-datum(4)
INTO lc_name SEPARATED BY space.
CLEAR ls_line.
ls_line-typ = 'H'.
ls_line-info = lc_name.
APPEND ls_line TO my_top_of_page.
ENDFORM. " top_comment
&----
*& Form build_layout
&----
text
----
-->P_GS_LAYOUT text
----
FORM build_layout USING my_layout TYPE slis_layout_alv.
my_layout-f2code = d_f2code.
my_layout-reprep = 'X'.
my_layout-confirmation_prompt = 'X'.
my_layout-flexible_key = 'X'.
ENDFORM. " build_layout
&----
*& Form TOP_OF_PAGE
&----
Writes comments on top of page
----
FORM top_of_page.
DATA: ls_line TYPE slis_listheader,
lc_name(60) TYPE c.
IF sy-ucomm = '&RNT_PREV'.
READ TABLE gt_top INTO ls_line INDEX 2.
lc_name = ls_line-info.
WRITE 'Page:' TO lc_name+45(5).
WRITE sy-pagno TO lc_name+52(5).
ls_line-typ = 'H'.
ls_line-info = lc_name.
MODIFY gt_top FROM ls_line INDEX 2.
ENDIF.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = gt_top.
ENDFORM. " TOP_OF_PAGE
&----
*& Form my_top
&----
text
----
-->P_GT_TOP[] text
----
FORM my_top USING top TYPE slis_t_listheader.
DATA: it_t247 LIKE t247 OCCURS 0 WITH HEADER LINE.
DATA: ls_line TYPE slis_listheader,
li_recs TYPE i,
lc_name(60) TYPE c,
lc_from(30) TYPE c,
lc_to(30) TYPE c.
CALL FUNCTION 'MONTH_NAMES_GET'
TABLES
month_names = it_t247.
Company Name
CLEAR lc_name.
WRITE text-001 TO lc_name.
CLEAR ls_line.
ls_line-typ = 'H'.
ls_line-info = lc_name.
APPEND ls_line TO top.
**Report Name
CLEAR lc_name.
WRITE text-002 TO lc_name.
CLEAR ls_line.
ls_line-typ = 'H'.
ls_line-info = lc_name.
APPEND ls_line TO top.
Range of date
CLEAR lc_name.
lc_name = p_date+4(2).
READ TABLE it_t247 WITH KEY mnr = p_date+4(2).
CONCATENATE: text-003 it_t247-ltx sy-datum(4)
INTO lc_name SEPARATED BY SPACE.
ls_line-typ = 'H'.
ls_line-info = lc_name.
APPEND ls_line TO top.
ENDFORM. " my_top
&----
*& Form END_OF_LIST
&----
Writes signature line at end of list
----
FORM end_of_list.
IF sy-ucomm = '&RNT_PREV' OR sy-ucomm = 'AUSW'.
REFRESH gt_eol.
PERFORM my_eol USING gt_eol[].
ELSE.
REFRESH gt_eol.
ENDIF.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = gt_eol
i_end_of_list_grid = 'X'.
ENDFORM. " END_OF_LIST
&----
*& Form my_eol
&----
text
----
-->P_GT_EOL[] text
----
FORM my_eol USING eol TYPE slis_t_listheader.
DATA: ls_line TYPE slis_listheader,
lc_name(60) TYPE c.
Signature Line
CLEAR lc_name.
lc_name = '.'.
ls_line-typ = 'H'.
ls_line-info = lc_name.
APPEND ls_line TO eol.
CLEAR lc_name.
ls_line-typ = 'H'.
ls_line-info = lc_name.
APPEND ls_line TO eol.
CLEAR ls_line.
ls_line-typ = 'H'.
WRITE 'Submitted By:' TO lc_name(28).
WRITE 'Noted By:' TO lc_name+30(28).
ls_line-info = lc_name.
APPEND ls_line TO eol.
CLEAR: lc_name, ls_line-key.
lc_name = '.'.
ls_line-typ = 'H'.
ls_line-info = lc_name.
APPEND ls_line TO eol.
CLEAR lc_name. CLEAR ls_line.
WRITE sy-uline(28) TO lc_name(28).
WRITE sy-uline(28) TO lc_name+30(28).
ls_line-typ = 'H'.
ls_line-info = lc_name.
APPEND ls_line TO eol.
ENDFORM. " my_eol