Vous êtes sur la page 1sur 7

Business Process:Impairment of Fixed Assets

Objectives:The impairment of fixed assets is not configured in our SAP system.


Without this configuration we are unable to properly impair Fixed Assets.

Justifications:To properly impair Fixed Assets according to GAAP.

************************************************************************
* *
* Program Name: ZFI_EVALUATE_ASSET_LIFE *
* *
* Description: A Report to extract the Asset values for business *
* *
* Date/Author: 01/20/2016 *
* MXG03 / Mohammed Gouse *
* WR#29581 / D00K929191 *
* *
************************************************************************
************************************************************************
* M O D I F I C A T I O N L O G *
* *
* Date Programmer Transport WR#Description *
*----------------------------------------------------------------------*
* *
*----------------------------------------------------------------------*

REPORT zfi_evaluate_asset_life message-id 00.

************************************************************************
* T Y P E - P O O L S *
************************************************************************

TYPE-POOLS : slis.

************************************************************************
* T A B L E S *
************************************************************************

TABLES : anlb,anlc.

************************************************************************
* T Y P E S *
************************************************************************

TYPES : BEGIN OF ty_anlb,


bukrs TYPE anlb-bukrs,
anln1 TYPE anlb-anln1,
anln2 TYPE anlb-anln2,
afabe TYPE anlb-afabe,
ndjar TYPE anlb-ndjar,
ndper TYPE anlb-ndper,
END OF ty_anlb,

BEGIN OF ty_anlc,
bukrs TYPE anlc-bukrs,
anln1 TYPE anlc-anln1,
anln2 TYPE anlc-anln2,
gjahr TYPE anlc-gjahr,
afabe TYPE anlc-afabe,
ndabj TYPE anlc-ndabj,
ndabp TYPE anlc-ndabp,
END OF ty_anlc,

BEGIN OF ty_final,
bukrs TYPE anlb-bukrs,
anln1 TYPE anlb-anln1,
anln2 TYPE anlb-anln2,
gjahr TYPE anlc-gjahr,
afabe TYPE anlb-afabe,
plnyrs TYPE anlb-ndjar,
plnmons TYPE anlb-ndper,
expyrs TYPE anlb-ndjar,
expmons TYPE anlb-ndper,
balyrs TYPE anlb-ndjar,
balmons TYPE anlb-ndper,
END OF ty_final.

************************************************************************
* I N T E R N A L - T A B L E S *
************************************************************************

DATA : i_anlb TYPE TABLE OF ty_anlb,


w_anlb TYPE ty_anlb,
i_anlc TYPE TABLE OF ty_anlc,
w_anlc TYPE ty_anlc,
i_final TYPE TABLE OF ty_final,
w_final TYPE ty_final,
i_fieldcat TYPE slis_t_fieldcat_alv,
w_fieldcat TYPE LINE OF slis_t_fieldcat_alv,
w_layout TYPE slis_layout_alv.

************************************************************************
* V A R I A B L E S *
************************************************************************

DATA : l_plnmons TYPE i,


l_expmons TYPE i,
l_balmons TYPE i,
l_balyrs TYPE i,
l_calcyrs TYPE p DECIMALS 2.

************************************************************************
* S E L E C T I O N - S C R E E N *
************************************************************************

SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.


SELECT-OPTIONS : s_bukrs FOR anlb-bukrs OBLIGATORY,
s_anln1 FOR anlb-anln1,
s_anln2 FOR anlb-anln2.

PARAMETERS: p_afabe TYPE anlb-afabe OBLIGATORY DEFAULT '01',


p_gjahr TYPE anlc-gjahr OBLIGATORY DEFAULT sy-datum+0(4).

SELECTION-SCREEN: END OF BLOCK b1.

************************************************************************
* A T S E L E C T I O N - S C R E E N *
************************************************************************
AT SELECTION-SCREEN.
Perform auth_check.

************************************************************************
* S T A R T - O F - S E L E C T I O N *
************************************************************************
START-OF-SELECTION.
PERFORM get_data.
PERFORM process_data.
PERFORM display_data.

*&---------------------------------------------------------------------*
*& Form GET_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM get_data .

SELECT bukrs
anln1
anln2
afabe
ndjar
ndper FROM anlb INTO TABLE i_anlb WHERE bukrs IN s_bukrs AND
anln1 IN s_anln1 AND
anln2 IN s_anln2 AND
afabe = p_afabe.

IF i_anlb[] IS NOT INITIAL.


SELECT bukrs
anln1
anln2
gjahr
afabe
ndabj
ndabp FROM anlc INTO TABLE i_anlc FOR ALL ENTRIES IN i_anlb
WHERE bukrs = i_anlb-bukrs AND
anln1 = i_anlb-anln1 AND
anln2 = i_anlb-anln2 AND
afabe = i_anlb-afabe AND
gjahr = p_gjahr.

ENDIF.

ENDFORM. " GET_DATA


*&---------------------------------------------------------------------*
*& Form PROCESS_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM process_data .
SORT i_anlb BY bukrs anln1 anln2 afabe.
SORT i_anlc BY bukrs anln1 anln2 afabe gjahr.

LOOP AT i_anlb INTO w_anlb.

w_final-bukrs = w_anlb-bukrs.
w_final-anln1 = w_anlb-anln1.
w_final-anln2 = w_anlb-anln2.
w_final-afabe = w_anlb-afabe.
w_final-plnyrs = w_anlb-ndjar.
w_final-plnmons = w_anlb-ndper.

CLEAR w_anlc.
READ TABLE i_anlc INTO w_anlc WITH KEY bukrs = w_final-bukrs
anln1 = w_final-anln1
anln2 = w_final-anln2
afabe = w_final-afabe
gjahr = p_gjahr BINARY SEARCH.
IF sy-subrc EQ 0.
w_final-gjahr = w_anlc-gjahr.
w_final-expyrs = w_anlc-ndabj.
w_final-expmons = w_anlc-ndabp.
ENDIF.

IF w_final-plnyrs GT w_final-expyrs.
IF w_final-plnmons IS INITIAL AND w_final-expmons IS INITIAL.
w_final-balyrs = w_final-plnyrs - w_final-expyrs.
ELSEIF w_final-plnmons IS NOT INITIAL AND w_final-expmons IS INITIAL..
w_final-balyrs = w_final-plnyrs - w_final-expyrs.
w_final-balmons = w_final-plnmons.
ELSE.
CLEAR: l_plnmons, l_expmons, l_balmons, l_balyrs.
l_plnmons = ( w_final-plnyrs * 12 ) + w_final-plnmons.
l_expmons = ( w_final-expyrs * 12 ) + w_final-expmons.
l_balmons = l_plnmons - l_expmons.
l_calcyrs = l_balmons / 12.
l_balyrs = FLOOR( l_calcyrs ).
l_balmons = l_balmons - ( l_balyrs * 12 ).

w_final-balyrs = l_balyrs.
w_final-balmons = l_balmons.

ENDIF.
ELSEIF w_final-plnyrs EQ w_final-expyrs AND w_final-plnmons GE w_final-expmons.
w_final-balmons = w_final-plnmons - w_final-expmons.
ENDIF.
APPEND w_final TO i_final.
CLEAR w_final.
ENDLOOP.

ENDFORM. " PROCESS_DATA


*&---------------------------------------------------------------------*
*& Form DISPLAY_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM display_data .

REFRESH : i_fieldcat.
CLEAR: w_layout.

* To create field catalog for ALV


PERFORM f_create_field_catalog.

w_layout-zebra = 'X'.
w_layout-colwidth_optimize = 'X'.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'


EXPORTING
i_callback_program = sy-repid
it_fieldcat = i_fieldcat
is_layout = w_layout
i_grid_title = 'Asset Life Evaluation Report'
i_save = 'A'
TABLES
t_outtab = i_final[]
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sy-subrc NE 0.
MESSAGE e001 WITH 'Error in ALV Display'(010).
ENDIF.

ENDFORM. " DISPLAY_DATA


*&---------------------------------------------------------------------*
*& Form F_CREATE_FIELD_CATALOG
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM f_create_field_catalog .

DATA : v_col_pos TYPE i.

v_col_pos = v_col_pos + 1.
w_fieldcat-col_pos = v_col_pos.
w_fieldcat-fieldname = 'BUKRS'.
w_fieldcat-tabname = 'I_FINAL'.
w_fieldcat-seltext_m = 'Company Code'.
w_fieldcat-key = 'X'.
APPEND w_fieldcat TO i_fieldcat.
CLEAR : w_fieldcat.

v_col_pos = v_col_pos + 1.
w_fieldcat-col_pos = v_col_pos.
w_fieldcat-fieldname = 'ANLN1'.
w_fieldcat-tabname = 'I_FINAL'.
w_fieldcat-seltext_m = 'Main Asset Number'.
w_fieldcat-key = 'X'.
APPEND w_fieldcat TO i_fieldcat.
CLEAR : w_fieldcat.
v_col_pos = v_col_pos + 1.
w_fieldcat-col_pos = v_col_pos.
w_fieldcat-fieldname = 'ANLN2'.
w_fieldcat-tabname = 'I_FINAL'.
w_fieldcat-seltext_m = 'Asset Subnumber'.
w_fieldcat-key = 'X'.
APPEND w_fieldcat TO i_fieldcat.
CLEAR : w_fieldcat.

v_col_pos = v_col_pos + 1.
w_fieldcat-col_pos = v_col_pos.
w_fieldcat-fieldname = 'AFABE'.
w_fieldcat-tabname = 'I_FINAL'.
w_fieldcat-seltext_m = 'Depreciation Area'.
w_fieldcat-key = 'X'.
APPEND w_fieldcat TO i_fieldcat.
CLEAR : w_fieldcat.

v_col_pos = v_col_pos + 1.
w_fieldcat-col_pos = v_col_pos.
w_fieldcat-fieldname = 'GJAHR'.
w_fieldcat-tabname = 'I_FINAL'.
w_fieldcat-seltext_m = 'Fiscal Year'.
w_fieldcat-key = 'X'.
APPEND w_fieldcat TO i_fieldcat.
CLEAR : w_fieldcat.

v_col_pos = v_col_pos + 1.
w_fieldcat-col_pos = v_col_pos.
w_fieldcat-fieldname = 'PLNYRS'.
w_fieldcat-tabname = 'I_FINAL'.
w_fieldcat-seltext_m = 'Useful life(Yr)'.
APPEND w_fieldcat TO i_fieldcat.
CLEAR : w_fieldcat.

v_col_pos = v_col_pos + 1.
w_fieldcat-col_pos = v_col_pos.
w_fieldcat-fieldname = 'PLNMONS'.
w_fieldcat-tabname = 'I_FINAL'.
w_fieldcat-seltext_m = 'Useful life(Per)'.
APPEND w_fieldcat TO i_fieldcat.
CLEAR : w_fieldcat.

v_col_pos = v_col_pos + 1.
w_fieldcat-col_pos = v_col_pos.
w_fieldcat-fieldname = 'EXPYRS'.
w_fieldcat-tabname = 'I_FINAL'.
w_fieldcat-seltext_m = 'Expired life(Yr)'.
APPEND w_fieldcat TO i_fieldcat.
CLEAR : w_fieldcat.

v_col_pos = v_col_pos + 1.
w_fieldcat-col_pos = v_col_pos.
w_fieldcat-fieldname = 'EXPMONS'.
w_fieldcat-tabname = 'I_FINAL'.
w_fieldcat-seltext_m = 'Expired life(Per)'.
APPEND w_fieldcat TO i_fieldcat.
CLEAR : w_fieldcat.
v_col_pos = v_col_pos + 1.
w_fieldcat-col_pos = v_col_pos.
w_fieldcat-fieldname = 'BALYRS'.
w_fieldcat-tabname = 'I_FINAL'.
w_fieldcat-seltext_m = 'Remaining life(Yr)'.
APPEND w_fieldcat TO i_fieldcat.
CLEAR : w_fieldcat.

v_col_pos = v_col_pos + 1.
w_fieldcat-col_pos = v_col_pos.
w_fieldcat-fieldname = 'BALMONS'.
w_fieldcat-tabname = 'I_FINAL'.
w_fieldcat-seltext_m = 'Remaining life(Per)'.
APPEND w_fieldcat TO i_fieldcat.
CLEAR : w_fieldcat.

ENDFORM. " F_CREATE_FIELD_CATALOG


*&---------------------------------------------------------------------*
*& Form AUTH_CHECK
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form AUTH_CHECK .
TYPES : BEGIN OF ty_t001,
bukrs TYPE t001-bukrs,
END OF ty_t001.

DATA : i_t001 TYPE TABLE OF ty_t001,


w_t001 LIKE LINE OF i_t001.

SELECT bukrs FROM T001 INTO TABLE i_t001 WHERE bukrs in s_bukrs.

LOOP AT i_t001 INTO w_t001.


AUTHORITY-CHECK OBJECT 'F_BKPF_BUK'
ID 'BUKRS' FIELD w_t001-bukrs
ID 'ACTVT' FIELD '03'.
IF sy-subrc NE 0.
MESSAGE 'No Authorization for Company Codes' TYPE 'E'.
ENDIF.
ENDLOOP.

endform. " AUTH_CHECK

Vous aimerez peut-être aussi