You are on page 1of 3

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

*& Report RA_AREA_USAGE_IND_SET


*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT za_area_usage_ind_set.
SELECTION-SCREEN BEGIN OF BLOCK params WITH FRAME TITLE t_params.
* Chart of depreciation - AFAPL
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT (25) l_afapl FOR FIELD p_afapl.
PARAMETERS p_afapl TYPE afapl OBLIGATORY.
SELECTION-SCREEN END OF LINE.
* Derived area - AFABER
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT (25) l_afaber FOR FIELD p_afaber.
PARAMETERS p_afaber TYPE afaber OBLIGATORY.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK params.
* Area usage indicator - AREA_USAGE_IND
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT (30) l_area_u FOR FIELD p_area_u.
PARAMETERS p_area_u TYPE area_usage_ind VALUE CHECK.
SELECTION-SCREEN END OF LINE.
* Test option
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT (30) l_test FOR FIELD p_test.
PARAMETERS p_test TYPE xfeld AS CHECKBOX DEFAULT 'X'.
SELECTION-SCREEN END OF LINE.
DATA: ls_t093 TYPE t093.
DATA: ld_use_old_calc.
DATA: ld_class TYPE string.

* ---------------------------------------------------------------------*
INITIALIZATION.
PERFORM get_parameter_descr USING 'XSELOPT' 'L' CHANGING t_params.
TRANSLATE t_params TO UPPER CASE.
PERFORM get_parameter_descr USING 'AFAPL' '' CHANGING l_afapl.
PERFORM get_parameter_descr USING 'AFABER' '' CHANGING l_afaber.
PERFORM get_parameter_descr USING 'AREA_USAGE_IND' 'L' CHANGING l_area_u.
PERFORM get_parameter_descr USING 'VVJTEST' '' CHANGING l_test.
AT SELECTION-SCREEN OUTPUT. "AAPO5nn
* check use of old calculation program AFAR is required
TRY.
ld_class = 'CF_FAA_CFG_DEPRKEY'.
CALL METHOD (ld_class)=>use_old_calculation
RECEIVING
rb_old_calculation = ld_use_old_calc.
CATCH cx_sy_dyn_call_illegal_func.
ld_use_old_calc = 'X'.
ENDTRY.
* If old depreciation calculation is active, do not allow to set area_usage_ind
IF NOT ld_use_old_calc IS INITIAL.
MESSAGE E400(AP) WITH 'Report may not be executed.' 'Old depreciation calcul
ation is active.'.
ENDIF.
* ---------------------------------------------------------------------*
START-OF-SELECTION.
SELECT SINGLE * FROM t093 INTO ls_t093 WHERE afapl = p_afapl
AND afaber = p_afaber
AND xstore = space.
IF sy-subrc = 0.
IF p_test IS INITIAL.
WRITE:/ 'PRODUCTION RUN'.
WRITE:/ '=============='.
ELSE.
WRITE:/ 'TEST RUN'.
WRITE:/ '========'.
ENDIF.
WRITE:/ 'AREA_USAGE_IND set to', p_area_u.
WRITE: 'for:'.
WRITE:/ 'Chart of depreciation', p_afapl.
WRITE:/ 'Derived area ', p_afaber.
IF p_test IS INITIAL.
UPDATE t093 SET area_usage_ind = p_area_u WHERE afapl = p_afapl
AND afaber = p_afaber.
COMMIT WORK.
WRITE:/ 'Update performed successfully'.
ENDIF.

ELSE.
WRITE:/ 'Check selection criteria. No entry found to change.'.
ENDIF.

*&---------------------------------------------------------------------*
* Liefert sprachabhängigen Feldbezeichner
*----------------------------------------------------------------------*
* -->U_DELEM Datenelement
* <--C_DESCR Text
*----------------------------------------------------------------------*
FORM get_parameter_descr USING ud_delem TYPE char30
ud_length TYPE c
CHANGING c_descr LIKE l_afapl.
DATA ls_dfies TYPE dfies.
CALL FUNCTION 'DDIF_FIELDINFO_GET'
EXPORTING
tabname = ud_delem
* LANGU = SY-LANGU
all_types = 'X'
IMPORTING
dfies_wa = ls_dfies
EXCEPTIONS
not_found = 1
internal_error = 2
OTHERS = 3
.
CASE ud_length.
WHEN 'L'.
c_descr = ls_dfies-scrtext_l.
WHEN OTHERS.
c_descr = ls_dfies-scrtext_m.
ENDCASE.
ENDFORM. "get_parameter_descr

You might also like