You are on page 1of 7

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

*& Report ZFI_TRAVELLING_EXPENSES


*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT zfi_travelling_expenses.

** +----------------------------------------------------------------+ **
** + Confidential and Proprietary + **
** + Copyright 2017.KSCL + **
** + All Rights Reserved + **
** +----------------------------------------------------------------+ **
** + Object Name.........: ZFI_TRAVELLING_EXPENSES + **
** + Object Type.........: Report + **
** + Database Status.....: NA + **
** + Transaction Code....: + **
** + Developer...........: T M S Gupta + **
** + Creation Date.......: 09 NOV 2017 + **
** + Reference...........: + **
** + Transport Numbers...: KHDK900471 + **
** +----------------------------------------------------------------+ **
** + Contract Accounting : Travelling Expenses + **
** +----------------------------------------------------------------+ **

*/ +------------------------------------------------------------------+\
*/ + Description : Travelling Expenses +\
*/ +------------------------------------------------------------------+\

TABLES: acdoca.

*----------------------------------------------------------------*
* Selection Screen
*----------------------------------------------------------------*

SELECTION-SCREEN BEGIN OF BLOCK out_scr WITH FRAME TITLE TEXT-001.


SELECT-OPTIONS: s_bukrs FOR acdoca-rbukrs DEFAULT '1000',
" Company Code
s_lifnr FOR acdoca-lifnr,
" Employee ID
s_budat FOR acdoca-budat NO-EXTENSION OBLIGATORY,
" Fiscal Year
s_loc FOR acdoca-zzwerks.
" Location

PARAMETERS : p_r1 RADIOBUTTON GROUP g1 DEFAULT 'X',


" Line Wise
p_r2 RADIOBUTTON GROUP g1.
" Total Wise
SELECTION-SCREEN END OF BLOCK out_scr.

*&---------------------------------------------------------------------*
* Types Declaration
*&---------------------------------------------------------------------*

TYPES : BEGIN OF gty_final,


bukrs TYPE bseg-bukrs, " Company Code
emp_id TYPE lifnr, " Employee ID
name1 TYPE lfa1-name1, " Employee Name
sortl TYPE lfa1-sortl, " Designation
mcod1 TYPE lfa1-mcod1, " Department
hq TYPE char11, " Head Quarter
ort01 TYPE lfa1-ort01, " City
bezei TYPE bezei20, " State
gjahr TYPE bseg-gjahr, " Year
hkont TYPE bseg-hkont, " G/L
txt50 TYPE skat-txt50, " G/L Text
jan TYPE bseg-dmbtr, " Jan
feb TYPE bseg-dmbtr, " Feb
mar TYPE bseg-dmbtr, " Mar
apr TYPE bseg-dmbtr, " Apr
may TYPE bseg-dmbtr, " May
jun TYPE bseg-dmbtr, " Jun
jul TYPE bseg-dmbtr, " Jul
aug TYPE bseg-dmbtr, " Aug
sep TYPE bseg-dmbtr, " Sep
oct TYPE bseg-dmbtr, " Oct
nov TYPE bseg-dmbtr, " Nov
dec TYPE bseg-dmbtr, " Dec
total TYPE bseg-dmbtr, " Total
END OF gty_final.
*&---------------------------------------------------------------------*
* Declaration
*&---------------------------------------------------------------------*
DATA : it_final TYPE TABLE OF gty_final,
it_fcat TYPE slis_t_fieldcat_alv,
it_line TYPE TABLE OF tline,
wa_final TYPE gty_final,
wa_fcat TYPE slis_fieldcat_alv.

DATA : lv_name TYPE thead-tdname.

RANGES : s_belnr FOR bseg-belnr,


s_gjahr FOR bseg-gjahr,
s_docln FOR bseg-buzei,
s_hkont FOR bseg-hkont.

*&---------------------------------------------------------------------*
* At Selection Screen
*&---------------------------------------------------------------------*
AT SELECTION-SCREEN.
SELECT SINGLE *
FROM zfi_travel_ex
INTO @DATA(lwa_ex).
IF lwa_ex IS INITIAL.
MESSAGE 'Maintain the G/L in Travel Expense Table' TYPE 'E'.
ENDIF.
*&---------------------------------------------------------------------*
* Start Of Selection
*&---------------------------------------------------------------------*
START-OF-SELECTION.

PERFORM get_and_fill.
PERFORM display.

*&---------------------------------------------------------------------*
*& Form GET_AND_FILL
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM get_and_fill .

SELECT *
FROM zfi_travel_ex
INTO TABLE @DATA(lit_gl).
IF lit_gl IS NOT INITIAL.
LOOP AT lit_gl INTO DATA(lwa_gl).
s_hkont-sign = 'I'.
s_hkont-option = 'EQ'.
s_hkont-low = lwa_gl-hkont.
APPEND s_hkont.
ENDLOOP.
ENDIF.

SELECT rldnr,
rbukrs AS bukrs,
gjahr,
belnr,
docln AS buzei,
racct,
wsl,
budat,
lifnr,
koart,
zzwerks
FROM acdoca
INTO TABLE @DATA(lit_bseg)
WHERE rldnr = '0L' AND
rbukrs IN @s_bukrs AND
gjahr IN @s_gjahr AND
belnr IN @s_belnr AND
docln IN @s_docln AND
budat IN @s_budat.

SELECT lifnr,
name1,
ort01,
regio,
sortl,
mcod1,
ktokk
FROM lfa1
INTO TABLE @DATA(lit_lfa1)
WHERE lifnr IN @s_lifnr AND
ktokk = 'ZEMP'.

IF lit_lfa1 IS NOT INITIAL.


SELECT *
FROM t005u
INTO TABLE @DATA(lit_t005u)
FOR ALL ENTRIES IN @lit_lfa1
WHERE spras = @sy-langu AND
land1 = 'IN' AND
bland = @lit_lfa1-regio.
ENDIF.
DATA(lit_bseg1) = lit_bseg.

DELETE lit_bseg WHERE racct NOT IN s_hkont.


DELETE lit_bseg WHERE zzwerks NOT IN s_loc.

DELETE lit_bseg1 WHERE koart NE 'K'.


DELETE lit_bseg1 WHERE lifnr+0(1) NE 'E'.
DELETE lit_bseg1 WHERE lifnr NOT IN s_lifnr.

SORT lit_bseg1 BY belnr lifnr.


SORT lit_bseg BY belnr.

LOOP AT lit_bseg1 INTO DATA(lwa_bseg1).


READ TABLE lit_lfa1 INTO DATA(lwa_lfa1) WITH KEY lifnr = lwa_bseg1-lifnr.
IF lwa_lfa1 IS NOT INITIAL.
wa_final-emp_id = lwa_lfa1-lifnr.
wa_final-name1 = lwa_lfa1-name1.
wa_final-sortl = lwa_lfa1-sortl.
wa_final-mcod1 = lwa_lfa1-mcod1.
READ TABLE lit_t005u INTO DATA(lwa_t005u) WITH KEY bland = lwa_lfa1-regio.
IF lwa_t005u IS NOT INITIAL.
wa_final-bezei = lwa_t005u-bezei.
ENDIF.

CLEAR lv_name.
REFRESH it_line.
lv_name = lwa_lfa1-lifnr.
CALL FUNCTION 'READ_TEXT'
EXPORTING
client = sy-mandt
id = '0001'
language = sy-langu
name = lv_name
object = 'BUT000'
* ARCHIVE_HANDLE = 0
* LOCAL_CAT = ' '
* IMPORTING
* HEADER =
* OLD_LINE_COUNTER =
TABLES
lines = it_line
EXCEPTIONS
id = 1
language = 2
name = 3
not_found = 4
object = 5
reference_check = 6
wrong_access_to_archive = 7
OTHERS = 8.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.

IF it_line IS NOT INITIAL.


READ TABLE it_line INTO DATA(wa_line) INDEX 1.
wa_final-mcod1 = wa_line-tdline.
ENDIF.
ENDIF.
LOOP AT lit_bseg INTO DATA(lwa_bseg) WHERE bukrs = lwa_bseg1-bukrs AND
gjahr = lwa_bseg1-gjahr AND
belnr = lwa_bseg1-belnr.

wa_final-ort01 = lwa_bseg-zzwerks.
wa_final-gjahr = lwa_bseg-gjahr.
wa_final-hq = 'Secundrabad'.
CLEAR lwa_gl.
READ TABLE lit_gl INTO lwa_gl WITH KEY hkont = lwa_bseg-racct.
IF lwa_gl IS NOT INITIAL AND p_r1 IS NOT INITIAL.
wa_final-hkont = lwa_bseg-racct.
wa_final-txt50 = lwa_gl-txt50.
ENDIF.
CASE lwa_bseg-budat+4(2).
WHEN '01'.
wa_final-jan = lwa_bseg-wsl.
WHEN '02'.
wa_final-feb = lwa_bseg-wsl.
WHEN '03'.
wa_final-mar = lwa_bseg-wsl.
WHEN '04'.
wa_final-apr = lwa_bseg-wsl.
WHEN '05'.
wa_final-may = lwa_bseg-wsl.
WHEN '06'.
wa_final-jun = lwa_bseg-wsl.
WHEN '07'.
wa_final-jul = lwa_bseg-wsl.
WHEN '08'.
wa_final-aug = lwa_bseg-wsl.
WHEN '09'.
wa_final-sep = lwa_bseg-wsl.
WHEN '10'.
wa_final-oct = lwa_bseg-wsl.
WHEN '11'.
wa_final-nov = lwa_bseg-wsl.
WHEN '12'.
wa_final-dec = lwa_bseg-wsl.
ENDCASE.
wa_final-total = lwa_bseg-wsl.
COLLECT wa_final INTO it_final.
CLEAR wa_final.
ENDLOOP.
ENDLOOP.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form DISPLAY
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM display .
DEFINE fieldcat.
wa_fcat-fieldname = &1.
wa_fcat-col_pos = &2.
wa_fcat-seltext_m = &3.
wa_fcat-do_sum = &4.
APPEND wa_fcat TO it_fcat.
CLEAR wa_fcat.
END-OF-DEFINITION.

fieldcat 'EMP_ID' '1' 'ID.No' ''.


fieldcat 'NAME1' '2' 'Employee Name' ''.
fieldcat 'SORTL' '3' 'Designation' ''.
fieldcat 'MCOD1' '4' 'Department' ''.
fieldcat 'HQ' '5' 'Head Quaters' ''.
fieldcat 'ORT01' '6' 'Location' ''.
fieldcat 'BEZEI' '7' 'State' ''.
fieldcat 'GJAHR' '8' 'Year' ''.
IF p_r1 IS NOT INITIAL.
fieldcat 'TXT50' '10' 'G/L Description' ''.
ENDIF.
fieldcat 'JAN' '11' 'Jan' 'X'.
fieldcat 'FEB' '12' 'Feb' 'X'.
fieldcat 'MAR' '13' 'Mar' 'X'.
fieldcat 'APR' '14' 'Apr' 'X'.
fieldcat 'MAY' '15' 'May' 'X'.
fieldcat 'JUN' '16' 'Jun' 'X'.
fieldcat 'JUL' '17' 'Jul' 'X'.
fieldcat 'AUG' '18' 'Aug' 'X'.
fieldcat 'SEP' '19' 'Sep' 'X'.
fieldcat 'OCT' '20' 'Oct' 'X'.
fieldcat 'NOV' '21' 'Nov' 'X'.
fieldcat 'DEC' '22' 'Dec' 'X'.
fieldcat 'TOTAL' '23' 'Total' 'X'.

DATA: wa_sort TYPE slis_sortinfo_alv,


wa_layout TYPE slis_layout_alv,
it_sort LIKE TABLE OF wa_sort.

CLEAR wa_sort.
wa_sort-fieldname = 'EMP_ID'.
wa_sort-spos = 1. " sort first on column field1.
wa_sort-up = 'X'. " ascending order.
wa_sort-subtot = 'X'. " display sub-total at change of emp_id
APPEND wa_sort TO it_sort.

wa_layout-colwidth_optimize = 'X'.

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 = ' '
* I_CALLBACK_USER_COMMAND = ' '
* I_CALLBACK_TOP_OF_PAGE = ' '
* I_CALLBACK_HTML_TOP_OF_PAGE = ' '
* I_CALLBACK_HTML_END_OF_LIST = ' '
* I_STRUCTURE_NAME =
* I_BACKGROUND_ID = ' '
* I_GRID_TITLE =
* I_GRID_SETTINGS =
is_layout = wa_layout
it_fieldcat = it_fcat
* IT_EXCLUDING =
* IT_SPECIAL_GROUPS =
it_sort = it_sort
* IT_FILTER =
* IS_SEL_HIDE =
i_default = 'X'
i_save = 'U'
* IS_VARIANT =
* 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
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.

ENDFORM.

You might also like