Start of Content Area

Background documentation Function Module

FUNCTION ZRET00_LOSTEST_GET_VAL .

*"------------------------------------------------------------------

*"*"Local interface:

*" IMPORTING

*" REFERENCE(I_CACSAPPL) TYPE CACSAPPL

*" REFERENCE(I_OBJ_TYPE) LIKE TCACS_LOS_OBJECT-OBJ_TYPE

*" REFERENCE(I_OBJ_ID) LIKE TCACS_LOS_OBJECT-OBJ_ID

*" REFERENCE(I_OBJ_METHOD) TYPE TCACS_LOS_CONNEC-OBJ_METHOD

*" VALUE(I_TECH_TIME) TYPE CACS_TECHTIME_B

*" VALUE(I_BUSI_TIME) TYPE CACS_BUSITIME_B

*" TABLES

*" T_DOCVAM STRUCTURE ZRET00_S_DOCVAM

*" T_DOCHDM STRUCTURE ZRET00_S_DOCHDM

*"------------------------------------------------------------------

 

* Sample function module showing how to do valuation in ABAP.

* Prerequisite: All objects have the same Object ID and

* belongs to the same Object Type Class.

 

* Input:

* I_CACSAPPL : Application. Is used if the Function has params.

* I_OBJ_TYPE : Object Type Class: Identifies the Object Type Class

* of the objects passed in the I_DOCVAM table.

* I_OBJ_ID : Object ID. Identifies the object. In this case

* it is equal to the Valuation Type.

* I_OBJ_METHOD : The method that should be performed on the objects.

* The method belongs to the Object Type Class.

* I_TECH_TIME : Technical valid time.

* I_BUSI_TIME : Business valid time

* T_DOCHDM : Table with Document Headers.

* The valuation objects in T_DOCVAM do

* not have to belong to the same document.

* Changing:

* T_DOCVAM : Valuation objects. The table contains the

* objects that has to be valuated.

 

* --- local definitions -----------------------------------------

DATA: lt_docvam_temp LIKE ZRET00_s_docvam OCCURS 0,

lt_docvam_new LIKE ZRET00_s_docvam OCCURS 0,

lv_wa_docvam LIKE ZRET00_s_docvam,

lv_wa_dochdm LIKE ZRET00_s_dochdm,

 

lv_TOOL LIKE TCACS_LOS_OBJECT-TOOL,

lv_TOOLFUNCTION LIKE TCACS_LOS_FUN-TOOLFUNCTION,

 

lv_PARAM_VIEW_ID LIKE TCACS_LOS_FUN-PARAMVIEWID,

lv_PARAM_VIEW_OD LIKE TCACS_LOS_FUN-PARAMVIEWOD ,

 

lv_strTemp LIKE sy-msgv1,

lv_strInfo LIKE sy-msgv1,

 

lv_Percentage LIKE ztest_los_od-percentage.

 

CONSTANTS:

C_STR_TABLE(12) TYPE C VALUE 'ZTEST_LOS_OD'.

 

DATA: wa_od LIKE ZTEST_LOS_OD,

lt_od LIKE ZTEST_LOS_OD OCCURS 0 WITH HEADER LINE,

lv_tabname type TABNAM.

 

* --- process -----------------------------------------------------

 

* First the percentage by using a parameter view

 

lv_tabname = C_STR_TABLE.

 

CALL FUNCTION 'CACS_LOS_GET_PARAM_OD'

EXPORTING

I_BUSITIME = I_BUSI_TIME

I_TECHTIME = I_TECH_TIME

I_CACSAPPL = I_CACSAPPL

I_OBJ_TYPE = I_OBJ_TYPE

I_OBJ_METHOD = I_OBJ_METHOD

I_OBJ_ID = I_OBJ_ID

I_PARAMTABLENAME = lv_tabname

TABLES

T_PARAMETER = lt_od

EXCEPTIONS

CACS_LOS_NO_PARAM_FOUND = 1

CACS_LOS_NOT_EXPECTED_TABLE = 2

CACS_LOS_VIEW_DOES_NOT_EXISTS = 3

CACS_LOG_NO_VIEW_ASSIGNED = 4

OTHERS = 5.

 

IF SY-SUBRC <> 0.

* We expected a value but none was returned

* Write a message to the log

 

CONCATENATE text-002

lv_wa_docvam-TRI_OBJ_TYPE

':' text-010

INTO lv_strInfo SEPARATED BY SPACE.

 

IF 1 = 0. " Navigation only

MESSAGE I895(CACSBAS) WITH lv_strInfo.

ENDIF.

 

CALL FUNCTION 'MESSAGE_STORE_WITH_DISPLAY'

EXPORTING

arbgb = 'CACSBAS'

msgty = 'I'

msgv1 = lv_strInfo

txtnr = '895'.

EXIT.

 

ENDIF.

 

* Get the percentage

READ table lt_od index 1 INTO WA_OD.

lv_Percentage = wa_od-percentage.

 

* For each document

LOOP AT t_dochdm INTO lv_wa_dochdm.

 

* Get only lines of current document

 

* Reset temporary itab

clear lt_docvam_temp.

refresh lt_docvam_temp.

 

* Find those records that belongs to the current document.

loop at t_docvam into lv_wa_docvam

where doc_id = lv_wa_dochdm-doc_id and

post_year = lv_wa_dochdm-post_year.

 

append lv_wa_docvam to lt_docvam_temp.

 

endloop. "T_DOCVAM

 

* For each valuation object

LOOP AT lt_docvam_temp INTO lv_wa_docvam.

 

* This sample returns the valuation in the dvalue_amnt

* field, but that is depending on what has been

* specified in the customizing.

* Depending on the customizing, one of the following

* fields should be used to return the valuation:

* dvalue_amnt: Differenz valuation.

* value_amnt: Absolut valuation.

 

lv_wa_docvam-dvalue_amnt =

( lv_wa_docvam-ZZJABEIT * lv_Percentage ) / 100.

 

MODIFY lt_docvam_temp FROM lv_wa_docvam.

 

* Write a message to the log.

WRITE: lv_wa_docvam-dvalue_amnt

CURRENCY lv_wa_docvam-VALUE_UNIT TO lv_StrTemp.

 

CONDENSE lv_StrTemp.

 

CONCATENATE text-002

lv_wa_docvam-TRI_OBJ_TYPE

':' lv_StrTemp lv_wa_docvam-VALUE_UNIT

INTO lv_strInfo SEPARATED BY SPACE.

 

IF 1 = 0. " Navigation only

MESSAGE I895(CACSBAS) WITH lv_strInfo.

ENDIF.

 

CALL FUNCTION 'MESSAGE_STORE_WITH_DISPLAY'

EXPORTING

arbgb = 'CACSBAS'

msgty = 'I'

msgv1 = lv_strInfo

txtnr = '895'.

 

ENDLOOP.

 

* Save modified lines

APPEND LINES OF lt_docvam_temp TO lt_docvam_new.

 

ENDLOOP. " T_DOCHDM

 

* Return processed lines

t_docvam[] = lt_docvam_new[].

 

ENDFUNCTION.

End of Content Area