SAMPLE CLASS Amdp
SAMPLE CLASS Amdp
public
final
create public .
public section.
TYPES: BEGIN OF y_s_zmtch_a05,
FISCPER TYPE /BI0/OIFISCPER,
FISCVARNT TYPE /BI0/OIFISCVARNT,
INFOPROV TYPE RSINFOPROV,
WBS_ELEMT TYPE /BI0/OIWBS_ELEMT,
ZADJFL TYPE /BIC/OIZADJFL,
ZCCTR TYPE /BIC/OIZCCTR,
ZCH_ACCT TYPE /BIC/OIZCH_ACCT,
ZCOA_AREA TYPE /BIC/OIZCOA_AREA,
ZDATASO TYPE /BIC/OIZDATASO,
ZGL_ACCT TYPE /BIC/OIZGL_ACCT,
ZMCCTR TYPE /BIC/OIZMCCTR,
ZMCMP_CDE TYPE /BIC/OIZMCMP_CDE,
ZMCOAREA TYPE /BIC/OIZMCOAREA,
ZMEMP TYPE /BIC/OIZMEMP,
ZMVERSION TYPE /BIC/OIZMVERSION,
ZMYEAR TYPE /BIC/OIZMYEAR,
ZM_SCEN TYPE /BIC/OIZM_SCEN,
ZOWNR_ACT TYPE /BIC/OIZOWNR_ACT,
ZSECINCAT TYPE /BIC/OIZSECINCAT,
CURRENCY TYPE /BI0/OICURRENCY,
LOC_CURRC2 TYPE /BI0/OILOC_CURRC2,
AMOUNT TYPE /BI0/OIAMOUNT,
DEB_CRE_L2 TYPE /BI0/OIDEB_CRE_L2,
ZFY2021 TYPE /BIC/OIZFY2021,
END OF y_s_zmtch_a05.
*test*
* ...
*
protected section.
private section.
ENDCLASS.
METHOD IF_RSPLFA_SRVTYPE_IMP_EXEC~EXECUTE.
ENDMETHOD.
METHOD IF_RSPLFA_SRVTYPE_IMP_EXEC~FINISH_EXECUTION.
ENDMETHOD.
METHOD IF_RSPLFA_SRVTYPE_IMP_EXEC~INIT_EXECUTION.
ENDMETHOD.
METHOD if_rsplfa_srvtype_trex_exec~init_and_check.
e_trex_supported = 'X'.
ENDMETHOD.
METHOD if_rsplfa_srvtype_trex_exec~trex_execute.
DATA: l_r_sql_script TYPE REF TO if_rspls_sql_script,
l_procedure_name TYPE string,
l_t_iobj_param TYPE if_rsr_pe_adapter=>tn_t_iobj_param.
l_r_sql_script =
cl_rspls_session_store_manager=>get_sql_script_instance( i_r_store = i_r_store ).
* The method if_rspls_sql_script~get_parameter_values returns a table of
parameters
* with the values given in the function definition
l_r_sql_script->get_parameter_values(
EXPORTING
i_r_param_set = i_r_param_set
i_para_name_for_procedure = 'HANA_PROCEDURE_NAME'
IMPORTING
e_procedure_name = l_procedure_name
e_t_iobj_param = l_t_iobj_param ).
* The function parameter given mehtod paramenter i_para_name_for_procedure
* will not be returned in the table e_t_iobj_param but the value of this
* function parameter will be returned int the mehtod parameter e_procedure_name
* This mechanisme can e.g. be used to define function specific SAP-HANA-procedure
names.
* Other examples to get the name of the SAP-HANA-procedure name which will be
called can be
* - you use the technical name of the planning function type:
* - or you simply give the SAP-HANA procedure name in a string:
* l_procedure_name = 'ZCL_MT_COPY_DRIVERS=>MY_HANA_PROCEDURE'.
* r_s_view-view = l_r_sql_script->execute_sql_script(
* i_view = i_view
* i_t_iobj_param = l_t_iobj_param
* i_proc_name = l_procedure_name
**********************************************************************
i_r_msg = i_r_msg ).
l_procedure_name = 'ZCL_MT_PLAN_VIEW_D=>ZFT_MTHR_DRV_COPY'.
r_s_view-view = l_r_sql_script->execute_sql_script(
i_view = i_view
i_t_iobj_param = l_t_iobj_param
i_proc_name = l_procedure_name
i_r_msg = i_r_msg ).
ENDMETHOD.
METHOD ZFT_MTHR_DRV_COPY BY
DATABASE PROCEDURE
FOR HDB LANGUAGE SQLSCRIPT
* For
Options and declarations check the AMDP documentiation (ABAP Managed Database
Procedure)
OPTIONS READ-ONLY
USING /BIC/MZMVERSION
/BIC/MZMCCTR
/BIC/MZOWNR_ACT
/BIC/AZMT_O10600
.
*
OPTIONS SUPPRESS SYNTAX ERRORS READ-ONLY. "
* USING
db_entities "
*aaa
DECLARE CFY NVARCHAR(4);
DECLARE NFYP1 NVARCHAR(7);
DECLARE VER NVARCHAR(10);
DECLARE DTE1 DATE;
DECLARE TME1 TIME;
DECLARE DTE NVARCHAR( 8 );
DECLARE TME NVARCHAR( 8 );
DECLARE USER1 NVARCHAR( 5000 );
DECLARE USID INTEGER;
DECLARE USERSD INTEGER;
DECLARE USERD VARCHAR( 60 );
NFYP1 = :CFY||'000';
EMP_ID = SELECT "/BIC/ZMT_EMP","/BIC/ZMT_EID" FROM "/BIC/AZMT_O10600";
PLAN_VIEW1 = SELECT
FISCPER,
FISCVARNT,
ZOWNR_ACT,
WBS_ELEMT,
ZMEMP,
CURRENCY,
SUM(AMOUNT) AS AMOUNT FROM :I_VIEW WHERE INFOPROV = 'ZMT_O105' GROUP BY
FISCPER,
FISCVARNT,
ZOWNR_ACT,
WBS_ELEMT,
ZMEMP,
CURRENCY;
PLAN_VIEW = SELECT
FISCPER,
FISCVARNT,
ZOWNR_ACT,
WBS_ELEMT,
ZMEMP,
CURRENCY,
SUM(AMOUNT) AS AMOUNT FROM :I_VIEW WHERE INFOPROV = 'ZMT_O105' GROUP BY
FISCPER,
FISCVARNT,
ZOWNR_ACT,
WBS_ELEMT,
ZMEMP,
CURRENCY;
PLAN_VIEW_ALL = SELECT
FISCPER,
FISCVARNT,
ZOWNR_ACT,
ZMEMP,
CURRENCY,
SUM(AMOUNT) AS AMOUNT FROM :PLAN_VIEW WHERE WBS_ELEMT LIKE '%A%' OR WBS_ELEMT LIKE
'%A' OR WBS_ELEMT LIKE '%X%' OR WBS_ELEMT LIKE '%X' GROUP BY
FISCPER,
FISCVARNT,
ZOWNR_ACT,
ZMEMP,
CURRENCY;
PLAN_VIEW_CAPEX = SELECT
FISCPER,
FISCVARNT,
ZOWNR_ACT,
ZMEMP,
CURRENCY,
SUM(AMOUNT) AS AMOUNT FROM :PLAN_VIEW WHERE WBS_ELEMT LIKE '%A%' OR WBS_ELEMT LIKE
'%A' GROUP BY
FISCPER,
FISCVARNT,
ZOWNR_ACT,
ZMEMP,
CURRENCY;
PLAN_VIEW_OPEX = SELECT
FISCPER,
FISCVARNT,
ZOWNR_ACT,
ZMEMP,
CURRENCY,
SUM(AMOUNT) AS AMOUNT FROM :PLAN_VIEW WHERE WBS_ELEMT NOT LIKE '%A%' OR WBS_ELEMT
NOT LIKE '%A' GROUP BY
FISCPER,
FISCVARNT,
ZOWNR_ACT,
ZMEMP,
CURRENCY;
PLAN_VIEW_OPEX_E = SELECT
FISCPER,
FISCVARNT,
ZMEMP,
CURRENCY,
SUM(AMOUNT) AS AMOUNT FROM :PLAN_VIEW_OPEX GROUP BY
FISCPER,
FISCVARNT,
ZMEMP,
CURRENCY;
PLAN_VIEW_CAPEX_E = SELECT
FISCPER,
FISCVARNT,
ZMEMP,
CURRENCY,
SUM(AMOUNT) AS AMOUNT FROM :PLAN_VIEW_CAPEX GROUP BY
FISCPER,
FISCVARNT,
ZMEMP,
CURRENCY;
HR_DATA_PER = SELECT
"0FISCPER" AS FISCPER,
"0FISCVARNT" AS FISCVARNT,
ZMCCTR,
ZMEMP,
CASE WHEN ZOWNR_ACT IS NULL THEN '' ELSE ZOWNR_ACT END AS ZOWNR_ACT,
ZMCMP_CDE,
SUM(VALUE_AV) AS VALUE_AV
FROM "_SYS_BIC"."PK_MCKESSON.SPEND_ANALYSIS/ZCV_MT_HEADCOUNT_WOD_RPT" WHERE ZMYEAR
= CFY AND ZMHPDRIV = 'STAT_HC' AND ZM_SCEN = 'FINAL' AND ZMCOAREA = 'MCK1' AND
ZMVERSION = :VER
AND ZMCMP_CDE IN ( '9079','9078','7211', '8271', '9077', '9662' ) AND VALUE_AV <> 0
AND ZADJFL = ''
GROUP BY
"0FISCPER",
"0FISCVARNT",
ZMCCTR,
ZMEMP,
ZOWNR_ACT,
ZMCMP_CDE
;
PLAN_VIEW_OPEX_REV_DATA = SELECT
A.FISCPER,
A.FISCVARNT,
'ZM_PLAN' AS INFOPROV,
'' AS WBS_ELEMT,
'PV' AS ZADJFL,
B.ZMCCTR AS ZCCTR,
'MCK1' AS ZCH_ACCT,
'MCK1' AS ZCOA_AREA,
'HR' AS ZDATASO,
'0000060296' AS ZGL_ACCT,
B.ZMCCTR,
(SELECT "/BIC/ZMCMP_CDE" FROM "/BIC/MZMCCTR" WHERE "/BIC/ZMCCTR" = B.ZMCCTR AND
"/BIC/ZMCOAREA" = 'MCK1' AND OBJVERS = 'A') AS ZMCMP_CDE,
'MCK1' AS ZMCOAREA,
'' AS ZMEMP,
:VER AS ZMVERSION,
:CFY AS ZMYEAR,
'FINAL' AS ZM_SCEN,
B.ZOWNR_ACT,
(SELECT "/BIC/ZSEC_INC" FROM "/BIC/MZOWNR_ACT" WHERE "/BIC/ZOWNR_ACT" = B.ZOWNR_ACT
AND OBJVERS = 'A') AS ZSECINCAT,
A.CURRENCY,
'' AS LOC_CURRC2,
0 AS AMOUNT,
0 AS DEB_CRE_L2,
(-1 * (A.AMOUNT * B.VALUE_AV)) AS ZFY2021 FROM :PLAN_VIEW_OPEX_E AS A INNER
JOIN :HR_DATA_PER AS B ON
A.FISCPER||A.ZMEMP = B.FISCPER||B.ZMEMP;
PLAN_VIEW_CAPEX_REV_DATA = SELECT
A.FISCPER,
A.FISCVARNT,
'ZM_PLAN' AS INFOPROV,
'' AS WBS_ELEMT,
'PV' AS ZADJFL,
B.ZMCCTR AS ZCCTR,
'MCK1' AS ZCH_ACCT,
'MCK1' AS ZCOA_AREA,
'HR' AS ZDATASO,
'0000060296' AS ZGL_ACCT,
B.ZMCCTR,
(SELECT "/BIC/ZMCMP_CDE" FROM "/BIC/MZMCCTR" WHERE "/BIC/ZMCCTR" = B.ZMCCTR AND
"/BIC/ZMCOAREA" = 'MCK1' AND OBJVERS = 'A') AS ZMCMP_CDE,
'MCK1' AS ZMCOAREA,
'' AS ZMEMP,
:VER AS ZMVERSION,
:CFY AS ZMYEAR,
'FINAL' AS ZM_SCEN,
B.ZOWNR_ACT,
(SELECT "/BIC/ZSEC_INC" FROM "/BIC/MZOWNR_ACT" WHERE "/BIC/ZOWNR_ACT" = B.ZOWNR_ACT
AND OBJVERS = 'A') AS ZSECINCAT,
A.CURRENCY,
'' AS LOC_CURRC2,
0 AS AMOUNT,
0 AS DEB_CRE_L2,
(-1 * (A.AMOUNT * B.VALUE_AV)) AS ZFY2021 FROM :PLAN_VIEW_CAPEX_E AS A INNER
JOIN :HR_DATA_PER AS B ON
A.FISCPER||A.ZMEMP = B.FISCPER||B.ZMEMP;
HR_DATA_PER_CCEMP = SELECT
FISCPER,
ZMCCTR,
ZMEMP,
FISCPER||ZMEMP AS F_EMP FROM :HR_DATA_PER GROUP BY
FISCPER,
ZMCCTR,
ZMEMP;
PLAN_VIEW_CAPEX_OPEX_DATA = SELECT
A.FISCPER,
A.FISCVARNT,
'ZM_PLAN' AS INFOPROV,
'' AS WBS_ELEMT,
'PV' AS ZADJFL,
B.ZMCCTR AS ZCCTR,
'MCK1' AS ZCH_ACCT,
'MCK1' AS ZCOA_AREA,
'HR' AS ZDATASO,
'0000060296' AS ZGL_ACCT,
B.ZMCCTR,
(SELECT "/BIC/ZMCMP_CDE" FROM "/BIC/MZMCCTR" WHERE "/BIC/ZMCCTR" = B.ZMCCTR AND
"/BIC/ZMCOAREA" = 'MCK1' AND OBJVERS = 'A') AS ZMCMP_CDE,
'MCK1' AS ZMCOAREA,
'' AS ZMEMP,
:VER AS ZMVERSION,
:CFY AS ZMYEAR,
'FINAL' AS ZM_SCEN,
A.ZOWNR_ACT,
(SELECT "/BIC/ZSEC_INC" FROM "/BIC/MZOWNR_ACT" WHERE "/BIC/ZOWNR_ACT" = A.ZOWNR_ACT
AND OBJVERS = 'A') AS ZSECINCAT,
A.CURRENCY,
'' AS LOC_CURRC2,
0 AS AMOUNT,
0 AS DEB_CRE_L2,
A.AMOUNT AS ZFY2021 FROM :PLAN_VIEW_ALL AS A INNER JOIN :HR_DATA_PER_CCEMP AS B ON
A.FISCPER||A.ZMEMP = B.F_EMP;
PLAN_VIEW_CAPEX_DATA = SELECT
A.FISCPER,
A.FISCVARNT,
'ZM_PLAN' AS INFOPROV,
'' AS WBS_ELEMT,
'PV' AS ZADJFL,
B.ZMCCTR AS ZCCTR,
'MCK1' AS ZCH_ACCT,
'MCK1' AS ZCOA_AREA,
'HR' AS ZDATASO,
'0000060290' AS ZGL_ACCT,
B.ZMCCTR,
(SELECT "/BIC/ZMCMP_CDE" FROM "/BIC/MZMCCTR" WHERE "/BIC/ZMCCTR" = B.ZMCCTR AND
"/BIC/ZMCOAREA" = 'MCK1' AND OBJVERS = 'A') AS ZMCMP_CDE,
'MCK1' AS ZMCOAREA,
'' AS ZMEMP,
:VER AS ZMVERSION,
:CFY AS ZMYEAR,
'FINAL' AS ZM_SCEN,
A.ZOWNR_ACT,
(SELECT "/BIC/ZSEC_INC" FROM "/BIC/MZOWNR_ACT" WHERE "/BIC/ZOWNR_ACT" = A.ZOWNR_ACT
AND OBJVERS = 'A') AS ZSECINCAT,
A.CURRENCY,
'' AS LOC_CURRC2,
0 AS AMOUNT,
0 AS DEB_CRE_L2,
(-1 * A.AMOUNT) AS ZFY2021 FROM :PLAN_VIEW_CAPEX AS A INNER JOIN :HR_DATA_PER_CCEMP
AS B ON
A.FISCPER||A.ZMEMP = B.F_EMP;
*aaa
** e_view = select
* aggr_field1
* :i_function_parameter_to as aggr_field2,
* aggr_field3
* ...
* FROM :i_view WHERE aggr_field2 = :i_function_parameter_from;
ENDMETHOD.
ENDCLASS.