Download as txt, pdf, or txt
Download as txt, pdf, or txt
You are on page 1of 22

PROGRAM trans_routine.

*---------------------------------------------------------------------*
*
CLASS routine DEFINITION
*---------------------------------------------------------------------*
*
*---------------------------------------------------------------------*
CLASS lcl_transform DEFINITION.
PUBLIC SECTION.
* Attributs
DATA:
*Rule context
p_curr_rule
TYPE cl_rstran_runtime_exe=>ty_s_rule_context READ-ONLY,
p_check_master_data_exist
TYPE RSODSOCHECKONLY READ-ONLY,
*Instance for getting request runtime attributs;
*
Available information: Refer to methods of
*
interface 'if_rsbk_request_admintab_view'
p_r_request
TYPE REF TO if_rsbk_request_admintab_view READ-ONLY.
PRIVATE SECTION.
TYPE-POOLS: rsd, rstr.
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*

Rule specific types


TYPES:
BEGIN OF _ty_s_SC_1,
InfoObject: 0FISCPER Fiscal year / period.
FISCPER
TYPE /BI0/OIFISCPER,
InfoObject: 0FISCVARNT Fiscal year variant.
FISCVARNT
TYPE /BI0/OIFISCVARNT,
InfoObject: 0FISCYEAR Fiscal year.
FISCYEAR
TYPE /BI0/OIFISCYEAR,
InfoObject: 0FISCPER3 Posting period.
FISCPER3
TYPE /BI0/OIFISCPER3,
InfoObject: 0CURRENCY Currency key.
CURRENCY
TYPE /BI0/OICURRENCY,
InfoObject: 0UNIT Unit of measure.
UNIT
TYPE /BI0/OIUNIT,
InfoObject: 0COSTCENTER Cost Center.
COSTCENTER
TYPE /BI0/OICOSTCENTER,
InfoObject: 0COSTELMNT Cost Element.
COSTELMNT
TYPE /BI0/OICOSTELMNT,
InfoObject: 0CO_AREA Controlling area.
CO_AREA
TYPE /BI0/OICO_AREA,
InfoObject: 0CURTYPE Currency Type.
CURTYPE
TYPE /BI0/OICURTYPE,
InfoObject: 0METYPE Key Figure Type.
METYPE
TYPE /BI0/OIMETYPE,
InfoObject: 0VERSION Version.
VERSION
TYPE /BI0/OIVERSION,
InfoObject: 0VTDETAIL Detailing the value type.
VTDETAIL
TYPE /BI0/OIVTDETAIL,
InfoObject: 0VTYPE Value Type for Reporting.

*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*

VTYPE
TYPE /BI0/OIVTYPE,
InfoObject: 0DB_CR_IND Sender/Receiver Indicator.
DB_CR_IND
TYPE /BI0/OIDB_CR_IND,
InfoObject: 0VALUATION Valuation view.
VALUATION
TYPE /BI0/OIVALUATION,
InfoObject: 0PIOBJSV Partner Object Type.
PIOBJSV
TYPE /BI0/OIPIOBJSV,
InfoObject: 0PIOVALUE Partner object.
PIOVALUE
TYPE /BI0/OIPIOVALUE,
InfoObject: 0VTSTAT Statistics indicator for value type.
VTSTAT
TYPE /BI0/OIVTSTAT,
InfoObject: 0PART_ACTTY Activity Type of Partner Cost Center.
PART_ACTTY
TYPE /BI0/OIPART_ACTTY,
InfoObject: 0PART_CCTR Partner Cost Center.
PART_CCTR
TYPE /BI0/OIPART_CCTR,
InfoObject: 0PART_COORD Partner Order.
PART_COORD
TYPE /BI0/OIPART_COORD,
InfoObject: 0CHRT_ACCTS Chart of accounts.
CHRT_ACCTS
TYPE /BI0/OICHRT_ACCTS,
InfoObject: 0CREDITOR Account number of supplier/vendor.
CREDITOR
TYPE /BI0/OICREDITOR,
InfoObject: 0DEBITOR Customer Number.
DEBITOR
TYPE /BI0/OIDEBITOR,
InfoObject: 0GL_ACCOUNT G/L Account.
GL_ACCOUNT
TYPE /BI0/OIGL_ACCOUNT,
InfoObject: 0PART_WBSEL Partner WBS Element.
PART_WBSEL
TYPE /BI0/OIPART_WBSEL,
InfoObject: 0PART_ABCPR Partner Business Process.
PART_ABCPR
TYPE /BI0/OIPART_ABCPR,
InfoObject: 0DATAORIGIN Data Source.
DATAORIGIN
TYPE /BI0/OIDATAORIGIN,
InfoObject: 0CO_REPLINE Report Row (Cost Element).
CO_REPLINE
TYPE /BI0/OICO_REPLINE,
InfoObject: 0FM_AREA Financial Management Area.
FM_AREA
TYPE /BI0/OIFM_AREA,
InfoObject: 0FUND Fund.
FUND
TYPE /BI0/OIFUND,
InfoObject: 0FUNC_AREA Functional area.
FUNC_AREA
TYPE /BI0/OIFUNC_AREA,
InfoObject: 0GRANT_NBR Grant.
GRANT_NBR
TYPE /BI0/OIGRANT_NBR,
InfoObject: 0PFUNC_AREA Partner Functional Area.
PFUNC_AREA
TYPE /BI0/OIPFUNC_AREA,
InfoObject: 0PFUND Partner Fund.
PFUND
TYPE /BI0/OIPFUND,
InfoObject: 0PGRANT_NBR Partner Grant.
PGRANT_NBR
TYPE /BI0/OIPGRANT_NBR,
InfoObject: 0AMOUNT Amount.
AMOUNT
TYPE /BI0/OIAMOUNT,
InfoObject: 0QUANTITY Quantity.
QUANTITY
TYPE /BI0/OIQUANTITY,
InfoObject: 0PU_BDGTID Budget Period.
PU_BDGTID
TYPE /BI0/OIPU_BDGTID,
InfoObject: 0PBDGTID Partner Budget Period.
PBDGTID
TYPE /BI0/OIPBDGTID,
Field: RECORD.
RECORD
TYPE RSARECORD,
END OF _ty_s_SC_1.
TYPES:
_ty_t_SC_1
TYPE STANDARD TABLE OF _ty_s_SC_1

*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*

WITH NON-UNIQUE DEFAULT KEY.


TYPES:
BEGIN OF _ty_s_TG_1,
InfoObject: 0CHNGID Change run ID.
CHNGID
TYPE /BI0/OICHNGID,
InfoObject: 0RECORDTP Record type.
RECORDTP
TYPE /BI0/OIRECORDTP,
InfoObject: 0REQUID Request ID.
REQUID
TYPE /BI0/OIREQUID,
InfoObject: 0CUSTOMER Customer number.
CUSTOMER
TYPE /BI0/OICUSTOMER,
InfoObject: 0COMP_CODE Company code.
COMP_CODE
TYPE /BI0/OICOMP_CODE,
InfoObject: 0COORDER Order Number.
COORDER
TYPE /BI0/OICOORDER,
InfoObject: 0CO_AREA Controlling area.
CO_AREA
TYPE /BI0/OICO_AREA,
InfoObject: 0CURTYPE Currency Type.
CURTYPE
TYPE /BI0/OICURTYPE,
InfoObject: 0DISTR_CHAN Distribution Channel.
DISTR_CHAN
TYPE /BI0/OIDISTR_CHAN,
InfoObject: 0DIVISION Division.
DIVISION
TYPE /BI0/OIDIVISION,
InfoObject: 0DOC_NUMBER Sales document.
DOC_NUMBER
TYPE /BI0/OIDOC_NUMBER,
InfoObject: 0G_AVV111 Pendapatan.
G_AVV111
TYPE /BI0/OIG_AVV111,
InfoObject: 0G_AVV112 Retur.
G_AVV112
TYPE /BI0/OIG_AVV112,
InfoObject: 0G_AVV113 Potongan.
G_AVV113
TYPE /BI0/OIG_AVV113,
InfoObject: 0G_AVV211 BPL Pegawai.
G_AVV211
TYPE /BI0/OIG_AVV211,
InfoObject: 0G_AVV212 BPL Pem.Ak.Tttp.
G_AVV212
TYPE /BI0/OIG_AVV212,
InfoObject: 0CURRENCY Currency key.
CURRENCY
TYPE /BI0/OICURRENCY,
InfoObject: 0FISCPER Fiscal year / period.
FISCPER
TYPE /BI0/OIFISCPER,
InfoObject: 0FISCVARNT Fiscal year variant.
FISCVARNT
TYPE /BI0/OIFISCVARNT,
InfoObject: 0FISCYEAR Fiscal year.
FISCYEAR
TYPE /BI0/OIFISCYEAR,
InfoObject: 0G_AVV213 BPL Persediaan.
G_AVV213
TYPE /BI0/OIG_AVV213,
InfoObject: 0G_AVV214 BPL Sewa.
G_AVV214
TYPE /BI0/OIG_AVV214,
InfoObject: 0G_AVV215 BPL Umum.
G_AVV215
TYPE /BI0/OIG_AVV215,
InfoObject: 0G_AVV216 BPL Peny.Piutang.
G_AVV216
TYPE /BI0/OIG_AVV216,
InfoObject: 0G_AVV217 BPL Peny.Ak.Tttp.
G_AVV217
TYPE /BI0/OIG_AVV217,
InfoObject: 0G_AVV218 BPL Amortisasi.
G_AVV218
TYPE /BI0/OIG_AVV218,
InfoObject: 0G_AVV219 BPL Lain.
G_AVV219
TYPE /BI0/OIG_AVV219,
InfoObject: 0G_AVV221 BPTL Pegawai.
G_AVV221
TYPE /BI0/OIG_AVV221,
InfoObject: 0G_AVV222 BPTL Pem.Ak.Tttp.

*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*

G_AVV222
InfoObject:
G_AVV223
InfoObject:
G_AVV224
InfoObject:
G_AVV225
InfoObject:
G_AVV226
InfoObject:
G_AVV227
InfoObject:
G_AVV228
InfoObject:
G_AVV229
InfoObject:
G_AVV311
InfoObject:
G_AVV312
InfoObject:
G_AVV313
InfoObject:
G_AVV314
InfoObject:
G_AVV315
InfoObject:
G_AVV316
InfoObject:
G_AVV410
InfoObject:
G_AVV411
InfoObject:
G_AVV412
InfoObject:
G_AVV413
InfoObject:
G_AVV414
InfoObject:
G_CWW001
InfoObject:
G_CWW002
InfoObject:
G_CWW003
InfoObject:
G_CWW004
InfoObject:
G_CWW005
InfoObject:
G_CWW006
InfoObject:
G_CWW007
InfoObject:
G_CWW008
InfoObject:
G_CWW009
InfoObject:
G_QVV100
InfoObject:
G_UVV100
InfoObject:

TYPE /BI0/OIG_AVV222,
0G_AVV223 BPTL Persediaan.
TYPE /BI0/OIG_AVV223,
0G_AVV224 BPTL Sewa.
TYPE /BI0/OIG_AVV224,
0G_AVV225 BPTL Umum.
TYPE /BI0/OIG_AVV225,
0G_AVV226 BPTL Peny.Piutang.
TYPE /BI0/OIG_AVV226,
0G_AVV227 BPTL Peny.Ak.Ttp.
TYPE /BI0/OIG_AVV227,
0G_AVV228 BPTL Amortisasi.
TYPE /BI0/OIG_AVV228,
0G_AVV229 BPTL Lain.
TYPE /BI0/OIG_AVV229,
0G_AVV311 GA Pegawai.
TYPE /BI0/OIG_AVV311,
0G_AVV312 GA Pem. Aset.
TYPE /BI0/OIG_AVV312,
0G_AVV313 GA Persediaan.
TYPE /BI0/OIG_AVV313,
0G_AVV314 GA Sewa.
TYPE /BI0/OIG_AVV314,
0G_AVV315 GA Umum.
TYPE /BI0/OIG_AVV315,
0G_AVV316 GA Peny Aset & Amort.
TYPE /BI0/OIG_AVV316,
0G_AVV410 Overhead Ktr Pusat.
TYPE /BI0/OIG_AVV410,
0G_AVV411 Pendapatan Lain.
TYPE /BI0/OIG_AVV411,
0G_AVV412 Beban Lain.
TYPE /BI0/OIG_AVV412,
0G_AVV413 Income/Expense Tax.
TYPE /BI0/OIG_AVV413,
0G_AVV414 Beban Project.
TYPE /BI0/OIG_AVV414,
0G_CWW001 ZChannel.
TYPE /BI0/OIG_CWW001,
0G_CWW002 ZBusiness Unit.
TYPE /BI0/OIG_CWW002,
0G_CWW003 ZBusiness Product.
TYPE /BI0/OIG_CWW003,
0G_CWW004 ZBusiness Line.
TYPE /BI0/OIG_CWW004,
0G_CWW005 ZConcession line.
TYPE /BI0/OIG_CWW005,
0G_CWW006 ZLocation ID.
TYPE /BI0/OIG_CWW006,
0G_CWW007 ZTipe Pesawat.
TYPE /BI0/OIG_CWW007,
0G_CWW008 ZFlight Number.
TYPE /BI0/OIG_CWW008,
0G_CWW009 ZFrom_To.
TYPE /BI0/OIG_CWW009,
0G_QVV100 Jumlah Produksi.
TYPE /BI0/OIG_QVV100,
0G_UVV100 Un Jumlah Produksi.
TYPE /BI0/OIG_UVV100,
0MATERIAL Material.

*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*

MATERIAL
TYPE /BI0/OIMATERIAL,
InfoObject: 0PROFIT_CTR Profit Center.
PROFIT_CTR
TYPE /BI0/OIPROFIT_CTR,
InfoObject: 0REC_TYPE Transaction Type.
REC_TYPE
TYPE /BI0/OIREC_TYPE,
InfoObject: 0VALUATION Valuation view.
VALUATION
TYPE /BI0/OIVALUATION,
InfoObject: 0VERSION Version.
VERSION
TYPE /BI0/OIVERSION,
InfoObject: 0VTYPE Value Type for Reporting.
VTYPE
TYPE /BI0/OIVTYPE,
InfoObject: 0SALESORG Sales Organization.
SALESORG
TYPE /BI0/OISALESORG,
InfoObject: 0CALMONTH Calendar year/month.
CALMONTH
TYPE /BI0/OICALMONTH,
InfoObject: 0CALYEAR Calendar year.
CALYEAR
TYPE /BI0/OICALYEAR,
InfoObject: 0CALQUARTER Calendar year/quarter.
CALQUARTER
TYPE /BI0/OICALQUARTER,
InfoObject: 0CALQUART1 Quarter.
CALQUART1
TYPE /BI0/OICALQUART1,
InfoObject: 0FISCPER3 Posting period.
FISCPER3
TYPE /BI0/OIFISCPER3,
InfoObject: 0CO_DOC_NO CO Document Number.
CO_DOC_NO
TYPE /BI0/OICO_DOC_NO,
InfoObject: ZVV220 BPL Pajak.
/BIC/ZVV220
TYPE /BIC/OIZVV220,
InfoObject: 0COSTELMNT Cost Element.
COSTELMNT
TYPE /BI0/OICOSTELMNT,
InfoObject: 0COSTCENTER Cost Center.
COSTCENTER
TYPE /BI0/OICOSTCENTER,
InfoObject: 0GL_ACCOUNT G/L Account.
GL_ACCOUNT
TYPE /BI0/OIGL_ACCOUNT,
InfoObject: 0CHRT_ACCTS Chart of accounts.
CHRT_ACCTS
TYPE /BI0/OICHRT_ACCTS,
InfoObject: ZREVLINE ZRevenue Line.
/BIC/ZREVLINE
TYPE /BIC/OIZREVLINE,
InfoObject: 0RE_FLW_TP Flow Type.
RE_FLW_TP
TYPE /BI0/OIRE_FLW_TP,
InfoObject: ZSOURCEDT Source AP1.
/BIC/ZSOURCEDT
TYPE /BIC/OIZSOURCEDT,
InfoObject: 0RENTOBJECT Rental Object.
RENTOBJECT
TYPE /BI0/OIRENTOBJECT,
InfoObject: 0RECONTRACT Contract.
RECONTRACT
TYPE /BI0/OIRECONTRACT,
InfoObject: 0BUSENTITY Business Entity.
BUSENTITY
TYPE /BI0/OIBUSENTITY,
InfoObject: ZLUAS01 Luas Unit.
/BIC/ZLUAS01
TYPE /BIC/OIZLUAS01,
InfoObject: 0MAINUSAGE Main Usage Type.
MAINUSAGE
TYPE /BI0/OIMAINUSAGE,
InfoObject: ZPRO_TYPE Property Type.
/BIC/ZPRO_TYPE
TYPE /BIC/OIZPRO_TYPE,
InfoObject: 0USAGETYPE Usage Type of Rental Unit.
USAGETYPE
TYPE /BI0/OIUSAGETYPE,
InfoObject: 0LOCFLOOR Location in Floor.
LOCFLOOR
TYPE /BI0/OILOCFLOOR,
InfoObject: 0PART_BLDG Part of Building.
PART_BLDG
TYPE /BI0/OIPART_BLDG,
InfoObject: 0AC_LEDGER Ledger.

*
*
*
*
*

AC_LEDGER
TYPE /BI0/OIAC_LEDGER,
InfoObject: 0AC_DOC_TYP Document type.
AC_DOC_TYP
TYPE /BI0/OIAC_DOC_TYP,
InfoObject: 0POST_KEY Posting key.
POST_KEY
TYPE /BI0/OIPOST_KEY,
InfoObject: 0HC_PCSCNT Number of Cases (PCS/DRG/LDF, etc.).
HC_PCSCNT
TYPE /BI0/OIHC_PCSCNT,
InfoObject: 0CRMA_IS_IC Indicator Interaction Record.
CRMA_IS_IC
TYPE /BI0/OICRMA_IS_IC,
Field: RECORD.
RECORD
TYPE RSARECORD,
END OF _ty_s_TG_1.
TYPES:
_ty_t_TG_1
TYPE STANDARD TABLE OF _ty_s_TG_1
WITH NON-UNIQUE DEFAULT KEY.

*$*$ begin of global - insert your declaration only below this line *-*
... "insert your code here
*$*$ end of global - insert your declaration only before this line *-*
METHODS
new_record__expert_routine
IMPORTING
log
type ref to cl_rsbm_log_cursor_step
source_segid
type rstran_segid
source_record
type sytabix
target_segid
type rstran_segid
EXPORTING
record_new
type sytabix.
METHODS
expert_routine
IMPORTING
request
datapackid
log
EXPORTING
RESULT_PACKAGE
CHANGING
SOURCE_PACKAGE

type rsrequest
type rsdatapid
type ref to cl_rsbm_log_cursor_step

METHODS
inverse_expert_routine
IMPORTING
i_th_fields_outbound
i_r_selset_outbound
i_r_universe_inbound
CHANGING
c_th_fields_inbound
c_r_selset_inbound
c_exact
ENDCLASS.
"routine

type _ty_t_TG_1
type _ty_t_SC_1.

TYPE rstran_t_field_inv
TYPE REF TO cl_rsmds_set
TYPE REF TO cl_rsmds_universe
TYPE rstran_t_field_inv
TYPE REF TO cl_rsmds_set
TYPE rs_bool.
DEFINITION

*$*$ begin of 2nd part global - insert your code only below this line *
... "insert your code here
*$*$ end of 2nd part global - insert your code only before this line *
*---------------------------------------------------------------------*
*
CLASS routine IMPLEMENTATION
*---------------------------------------------------------------------*
*

*---------------------------------------------------------------------*
CLASS lcl_transform IMPLEMENTATION.
*----------------------------------------------------------------------*
*
Method expert_routine
*----------------------------------------------------------------------*
*
Calculation of result package via expert routine
*----------------------------------------------------------------------*
* -> package of source segments
* <- result package
*----------------------------------------------------------------------*
METHOD expert_routine.
*=== Segments ===
FIELD-SYMBOLS:
<SOURCE_FIELDS>

TYPE _ty_s_SC_1.

DATA:
RESULT_FIELDS

TYPE _ty_s_TG_1.

*$*$ begin of routine - insert


TYPES: BEGIN OF ty_data,
ZFISCPER
TYPE
ZPROFIT_CTR TYPE
ZRE_FLW_TP
TYPE
ZRENTOBJECT TYPE
ZCUSTOMER
TYPE
ZFISCYEAR
TYPE
ZCFORIGIN
TYPE
ZG_CWW001
TYPE
ZG_CWW002
TYPE
ZG_CWW003
TYPE
ZG_CWW004
TYPE
ZG_CWW005
TYPE
ZREVLINE
TYPE
ZCURRENCY
TYPE
ZUNITPROD
TYPE
ZQTYPROD
TYPE
ZVALUE_LC
TYPE
END OF ty_data,
BEGIN OF ty_data2,
ZFISCYEAR
TYPE
ZFISCPER
TYPE
ZPROFIT_CTR TYPE
ZCURTYPE
TYPE
ZVTYPE
TYPE
ZRE_FLW_TP
TYPE
ZCUSTOMER
TYPE
ZG_CWW001
TYPE
ZG_CWW002
TYPE
ZG_CWW003
TYPE
ZG_CWW004
TYPE
ZG_CWW005
TYPE
ZREVLINE
TYPE
ZCURRENCY
TYPE
ZG_UVV100
TYPE
ZG_AVV111
TYPE
ZG_QVV100
TYPE
END OF ty_data2.

your code only below this line


/BI0/OIFISCPER,
/BI0/OIPROFIT_CTR,
/BI0/OIRE_FLW_TP,
/BI0/OIRENTOBJECT,
/BI0/OICUSTOMER,
/BI0/OIFISCYEAR,
/BI0/OICFORIGIN,
/BI0/OIG_CWW001,
/BI0/OIG_CWW002,
/BI0/OIG_CWW003,
/BI0/OIG_CWW004,
/BI0/OIG_CWW005,
/BIC/OIZREVLINE,
/BI0/OICURRENCY,
/BIC/OIZUNITPROD,
/BIC/OIZQTYPROD,
/BI0/OIVALUE_LC,

/BI0/OIFISCYEAR,
/BI0/OIFISCPER,
/BI0/OIPROFIT_CTR,
/BI0/OICURTYPE,
/BI0/OIVTYPE,
/BI0/OIRE_FLW_TP,
/BI0/OICUSTOMER,
/BI0/OIG_CWW001,
/BI0/OIG_CWW002,
/BI0/OIG_CWW003,
/BI0/OIG_CWW004,
/BI0/OIG_CWW005,
/BIC/OIZREVLINE,
/BI0/OICURRENCY,
/BI0/OIG_UVV100,
/BI0/OIG_AVV111,
/BI0/OIG_QVV100,

*-*

TYPES:
BEGIN OF ty_alloc.
INCLUDE TYPE ty_data.
TYPES: COSTCENTER type /BI0/OICOSTCENTER,
KDALLOC
TYPE /BIC/OIZKDALLOC,
AMOUNT
TYPE /BI0/OIAMOUNT,
CURRENCY
TYPE /BI0/OICURRENCY,
COSTELMNT
TYPE /BI0/OICOSTELMNT,
VALFLDCE
TYPE /BIC/OIZVALFLDCE,
COMP_CODE
TYPE /BI0/OICOMP_CODE,
vtype
TYPE /BI0/OIVTYPE,
END OF ty_alloc.
TYPES:

BEGIN OF ty_alloc2.
INCLUDE TYPE ty_data2.
TYPES: COSTCENTER type /BI0/OICOSTCENTER,
KDALLOC
TYPE /BIC/OIZKDALLOC,
AMOUNT
TYPE /BI0/OIAMOUNT,
CURRENCY
TYPE /BI0/OICURRENCY,
COSTELMNT
TYPE /BI0/OICOSTELMNT,
VALFLDCE
TYPE /BIC/OIZVALFLDCE,
COMP_CODE
TYPE /BI0/OICOMP_CODE,
vtype
TYPE /BI0/OIVTYPE,
END OF ty_alloc2.
DATA: ta_source
ta_source2
ta_map1
ta_map2
ta_map3
ta_map4
ta_map5
t_range
t_data
t_data2
ta_alloc
ta_alloc2
ta_urai
ta_urai2
ta_package

TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE

TABLE OF _ty_s_SC_1,
TABLE OF _ty_s_SC_1,
TABLE OF /BIC/AZBWMAP0100,
TABLE OF /BIC/AZBWMAP0200,
TABLE OF /BIC/AZBWMAP0300,
TABLE OF /BIC/AZBWMAP0400,
TABLE OF /BIC/AZBWMAP0500,
rsdri_t_range,
TABLE OF ty_data,
TABLE OF ty_data2,
TABLE OF ty_alloc,
TABLE OF ty_alloc2,
TABLE OF ty_alloc,
TABLE OF ty_alloc2,
_ty_t_tg_1.

DATA: wa_source
wa_source2
wa_map1
wa_map2
wa_map3
wa_map4
wa_map5
wa_rem
wa_copa
wa_alloc
wa_alloc2

TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE

_ty_s_SC_1,
_ty_s_SC_1,
/BIC/AZBWMAP0100,
/BIC/AZBWMAP0200,
/BIC/AZBWMAP0300,
/BIC/AZBWMAP0400,
/BIC/AZBWMAP0500,
TY_DATA,
TY_DATA2,
ty_alloc,
ty_alloc2.

DATA: wl_infoprov
wl_infoprov2
t_th_sfc
t_th_sfk
t_first_call

TYPE
TYPE
TYPE
TYPE
TYPE

RSINFOPROV VALUE 'ZBWREV01',


RSINFOPROV VALUE 'ZCOPAC01',
RSDRI_TH_SFC,
RSDRI_TH_SFK,
RS_BOOL.

DATA: wa_s_sfc
wa_th_sfk
wa_range

TYPE RSDRI_S_SFC,
TYPE RSDRI_S_SFK,
TYPE rsdri_s_range.

DATA: v_year
v_flag1
v_idx
v_idx2
v_qty
v_amount
v_field

TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE

gjahr,
c,
sytabix,
sytabix,
/BI0/OIG_QVV100,
/BI0/OIG_AVV111,
c LENGTH 30.

FIELD-SYMBOLS: <fs_alloc> like LINE OF ta_alloc,


<fs_alloc2> like LINE OF ta_alloc2,
<ls_field> TYPE any.
CONSTANTS: c_COMP_CODE TYPE BUKRS VALUE '1000'.
SELECT *
FROM /BIC/AZBWMAP0100
INTO TABLE ta_map1.
SORT ta_map1 by /BIC/ZCCSENDFR.
SELECT *
from /BIC/AZBWMAP0200
INTO TABLE ta_map2.
SORT ta_map1 by /BIC/ZKDALLOC.
SELECT *
FROM /BIC/AZBWMAP0300
INTO TABLE ta_map3.
delete ta_map3 WHERE /BIC/ZSTATALOC is INITIAL.
SORT ta_map3 by /BIC/ZKDALLOCS.
SELECT *
FROM /BIC/AZBWMAP0400
INTO TABLE ta_map4.
SORT ta_map4 by /BIC/ZKDALLOCS COSTELMNT.
SELECT *
FROM /BIC/AZBWMAP0500
INTO TABLE ta_map5.
delete ta_map5 WHERE /BIC/ZSTAALORL is INITIAL.
SORT ta_map5 by /BIC/ZTYPALORL /BIC/ZKDALLOC.
ta_source[] = SOURCE_PACKAGE[].
SORT ta_source by COSTELMNT.
DELETE ta_source
WHERE COSTELMNT <= 'ZCC000001'
OR COSTELMNT >= 'ZCC999999'.
SORT ta_source by VTYPE.
" hanya data CCA yang actual saja
delete ta_source
WHERE VTYPE <> '10'.

if ta_source[] is not INITIAL.


"Preparing resource data
SORT ta_source by COSTCENTER.
ta_source2[] = ta_source[].
delete ADJACENT DUPLICATES FROM ta_source2
COMPARING COSTCENTER.
sort ta_source2 by COSTCENTER.
READ TABLE ta_source
INDEX 1
INTO wa_source.
v_year = wa_source-FISCYEAR.
SORT ta_source by COSTCENTER.
CLEAR: wa_s_sfc.
wa_s_sfc-chanm = '0FISCPER'.
wa_s_sfc-chaalias = 'ZFISCPER'.
wa_s_sfc-orderby = 0.
INSERT wa_s_sfc INTO TABLE t_th_sfc.
CLEAR: wa_s_sfc.
wa_s_sfc-chanm = '0FISCYEAR'.
wa_s_sfc-chaalias = 'ZFISCYEAR'.
wa_s_sfc-orderby = 0.
INSERT wa_s_sfc INTO TABLE t_th_sfc.
CLEAR: wa_s_sfc.
wa_s_sfc-chanm = '0RENTOBJECT'.
wa_s_sfc-chaalias = 'ZRENTOBJECT'.
wa_s_sfc-orderby = 0.
INSERT wa_s_sfc INTO TABLE t_th_sfc.
CLEAR: wa_s_sfc.
wa_s_sfc-chanm = '0RE_FLW_TP'.
wa_s_sfc-chaalias = 'ZRE_FLW_TP'.
wa_s_sfc-orderby = 0.
INSERT wa_s_sfc INTO TABLE t_th_sfc.
CLEAR: wa_s_sfc.
wa_s_sfc-chanm = '0PROFIT_CTR'.
wa_s_sfc-chaalias = 'ZPROFIT_CTR'.
wa_s_sfc-orderby = 0.
INSERT wa_s_sfc INTO TABLE t_th_sfc.
CLEAR: wa_s_sfc.
wa_s_sfc-chanm = '0CUSTOMER'.
wa_s_sfc-chaalias = 'ZCUSTOMER'.
wa_s_sfc-orderby = 0.
INSERT wa_s_sfc INTO TABLE t_th_sfc.
CLEAR: wa_s_sfc.
wa_s_sfc-chanm = '0G_CWW001'.
wa_s_sfc-chaalias = 'ZG_CWW001'.
wa_s_sfc-orderby = 0.
INSERT wa_s_sfc INTO TABLE t_th_sfc.
CLEAR: wa_s_sfc.
wa_s_sfc-chanm = '0G_CWW002'.

wa_s_sfc-chaalias = 'ZG_CWW002'.
wa_s_sfc-orderby = 0.
INSERT wa_s_sfc INTO TABLE t_th_sfc.
CLEAR: wa_s_sfc.
wa_s_sfc-chanm = '0G_CWW003'.
wa_s_sfc-chaalias = 'ZG_CWW003'.
wa_s_sfc-orderby = 0.
INSERT wa_s_sfc INTO TABLE t_th_sfc.
CLEAR: wa_s_sfc.
wa_s_sfc-chanm = '0G_CWW004'.
wa_s_sfc-chaalias = 'ZG_CWW004'.
wa_s_sfc-orderby = 0.
INSERT wa_s_sfc INTO TABLE t_th_sfc.
CLEAR: wa_s_sfc.
wa_s_sfc-chanm = '0G_CWW005'.
wa_s_sfc-chaalias = 'ZG_CWW005'.
wa_s_sfc-orderby = 0.
INSERT wa_s_sfc INTO TABLE t_th_sfc.
CLEAR: wa_s_sfc.
wa_s_sfc-chanm = 'ZREVLINE'.
wa_s_sfc-chaalias = 'ZREVLINE'.
wa_s_sfc-orderby = 0.
INSERT wa_s_sfc INTO TABLE t_th_sfc.
CLEAR: wa_s_sfc.
wa_s_sfc-chanm = '0CURRENCY'.
wa_s_sfc-chaalias = 'ZCURRENCY'.
wa_s_sfc-orderby = 0.
INSERT wa_s_sfc INTO TABLE t_th_sfc.
CLEAR: wa_s_sfc.
wa_s_sfc-chanm = '0G_UVV100'.
wa_s_sfc-chaalias = 'ZUNITPROD'.
wa_s_sfc-orderby = 0.
INSERT wa_s_sfc INTO TABLE t_th_sfc.
"Qty Prod
CLEAR wa_th_sfk.
wa_th_sfk-kyfnm = '0G_QVV100'.
wa_th_sfk-kyfalias = 'ZQTYPROD'.
wa_th_sfk-aggr = 'SUM'.
INSERT wa_th_sfk INTO TABLE t_th_sfk.
"Amount/Pendapatan
CLEAR wa_th_sfk.
wa_th_sfk-kyfnm = '0G_AVV111'.
wa_th_sfk-kyfalias = 'ZVALUE_LC'.
wa_th_sfk-aggr = 'SUM'.
INSERT wa_th_sfk INTO TABLE t_th_sfk.
wa_range-chanm = '0FISCYEAR'.
wa_range-compop = 'EQ'.
wa_range-sign = 'I'.
wa_range-low = v_year.
APPEND wa_range TO t_range.

" hanya yang non aero


wa_range-chanm = '0G_CWW002'.
wa_range-compop = 'EQ'.
wa_range-sign = 'I'.
wa_range-low = '2000'.
APPEND wa_range TO t_range.
CALL FUNCTION 'RSDRI_INFOPROV_READ'
EXPORTING
I_INFOPROV
= wl_infoprov
I_TH_SFC
= t_th_sfc
I_TH_SFK
= t_th_sfk
I_T_RANGE
= t_range
I_ROLLUP_ONLY
= rs_c_false
I_PACKAGESIZE
= 99999
I_USE_DB_AGGREGATION = rs_c_false
I_USE_AGGREGATES
= rs_c_false
IMPORTING
E_T_DATA
= t_data
CHANGING
C_FIRST_CALL
= t_first_call
EXCEPTIONS
ILLEGAL_INPUT
= 1
ILLEGAL_INPUT_SFC
= 2
ILLEGAL_INPUT_SFK
= 3
ILLEGAL_INPUT_RANGE
= 4
ILLEGAL_INPUT_TABLESEL = 5
NO_AUTHORIZATION
= 6
ILLEGAL_DOWNLOAD
= 7
ILLEGAL_TABLENAME
= 8
TRANS_NO_WRITE_MODE
= 9
INHERITED_ERROR
= 10
X_MESSAGE
= 11
NO_COMMIT_FREE_READ
= 12
OTHERS
= 13.
IF SY-SUBRC <> 0.
* Implement suitable error handling here
ENDIF.
*

BREAK-POINT.
SORT t_data by ZPROFIT_CTR ZFISCPER.
CLEAR: ta_urai[].
LOOP AT ta_source2 INTO wa_source2.
CLEAR: v_flag1.
LOOP AT ta_map1 INTO wa_map1.
IF wa_map1-/BIC/ZCCSENDFR <= wa_source2-COSTCENTER
AND wa_map1-/BIC/ZCCSENDTO >= wa_source2-COSTCENTER.
v_flag1 = 'X'.
exit.
ENDIF.
v_flag1 = ''.
ENDLOOP.
if v_flag1 = 'X'.
READ TABLE ta_map5
INTO wa_map5
with key /BIC/ZTYPALORL = 'A'
/BIC/ZKDALLOC = wa_map1-/BIC/ZKDALLOC
BINARY SEARCH.

if sy-SUBRC = 0.
READ TABLE ta_map3
INTO wa_map3
with key /BIC/ZKDALLOCS = wa_map5-/BIC/ZKDALLOCS
BINARY SEARCH.
if sy-SUBRC = 0.
READ TABLE ta_map2
INTO wa_map2
with key /BIC/ZKDALLOC = wa_map1-/BIC/ZKDALLOC
BINARY SEARCH.
if sy-SUBRC = 0.
READ TABLE ta_source
INTO wa_source
with key COSTCENTER = wa_source2-COSTCENTER
BINARY SEARCH.
if sy-SUBRC = 0.
v_idx = sy-tabix.
LOOP AT ta_source INTO wa_source FROM v_idx.
IF wa_source-COSTCENTER <> wa_source2-COSTCENTER.
EXIT.
ENDIF.
CLEAR: wa_map4.
READ TABLE ta_map4
INTO wa_map4
with KEY /BIC/ZKDALLOCS = wa_map5-/BIC/ZKDALLOCS
COSTELMNT = wa_source-COSTELMNT
BINARY SEARCH.
if sy-SUBRC = 0.
READ TABLE t_data
INTO wa_rem
with KEY ZPROFIT_CTR = wa_map2-PROFIT_CTR
ZFISCPER = wa_source-FISCPER
BINARY SEARCH.
if sy-SUBRC = 0.
v_idx2 = sy-tabix.
CLEAR: ta_alloc[],
v_qty,
v_amount.
LOOP AT t_data INTO wa_rem FROM v_idx2.
IF wa_rem-ZPROFIT_CTR <> wa_map2-PROFIT_CTR
or wa_rem-ZFISCPER <> wa_source-FISCPER.
exit.
ENDIF.
if wa_map2-/BIC/ZFLTYPFR <= wa_rem-zRE_FLW_TP
AND wa_map2-/BIC/ZFLTYPTO >=
wa_rem-zRE_FLW_TP.
CLEAR: wa_alloc.
wa_alloc-VTYPE = wa_source-VTYPE.
wa_alloc-ZFISCPER = wa_rem-ZFISCPER.
wa_alloc-ZFISCYEAR = wa_rem-ZFISCYEAR.
wa_alloc-ZRENTOBJECT = wa_rem-ZRENTOBJECT.
wa_alloc-ZRE_FLW_TP = wa_rem-ZRE_FLW_TP.

wa_alloc-ZPROFIT_CTR = wa_rem-ZPROFIT_CTR.
wa_alloc-ZCUSTOMER = wa_rem-ZCUSTOMER.
wa_alloc-ZG_CWW001 = wa_rem-ZG_CWW001.
wa_alloc-ZG_CWW002 = wa_rem-ZG_CWW002.
wa_alloc-ZG_CWW003 = wa_rem-ZG_CWW003.
wa_alloc-ZG_CWW004 = wa_rem-ZG_CWW004.
wa_alloc-ZG_CWW005 = wa_rem-ZG_CWW005.
wa_alloc-ZREVLINE = wa_rem-zrevline.
wa_alloc-ZUNITPROD = wa_rem-ZUNITPROD.
wa_alloc-ZQTYPROD = wa_rem-ZQTYPROD.
wa_alloc-COSTCENTER = wa_source-COSTCENTER.
wa_alloc-KDALLOC = wa_map1-/BIC/ZKDALLOC.
wa_alloc-ZCURRENCY = wa_rem-ZCURRENCY.
wa_alloc-ZVALUE_LC = wa_rem-ZVALUE_LC.
wa_alloc-AMOUNT = wa_source-AMOUNT.
wa_alloc-COSTELMNT = wa_source-COSTELMNT.
wa_alloc-COMP_CODE = c_COMP_CODE.
wa_alloc-COSTCENTER = wa_source-COSTCENTER.
COLLECT wa_alloc INTO ta_alloc.
v_qty = v_qty + wa_alloc-ZQTYPROD.
"pakai local amount
v_amount = v_amount +
wa_alloc-ZVALUE_LC.
endif.
ENDLOOP.
LOOP AT ta_alloc ASSIGNING <fs_alloc>.
"rev
if wa_map5-/BIC/ZAFREV is NOT INITIAL.
<fs_alloc>-AMOUNT =
( <fs_alloc>-ZVALUE_LC / v_amount ) *
<fs_alloc>-AMOUNT.
endif.
"production
if wa_map5-/BIC/ZAFPROD is NOT INITIAL.
if wa_map5-/BIC/ZAFPROD = wa_alloc-ZUNITPROD
.
<fs_alloc>-AMOUNT =
( <fs_alloc>-ZQTYPROD / v_qty ) *
<fs_alloc>-AMOUNT.
ELSEIF wa_map5-/BIC/ZAFPROD =
wa_alloc-ZCURRENCY.
<fs_alloc>-AMOUNT =
( <fs_alloc>-ZVALUE_LC / v_amount ) *
<fs_alloc>-AMOUNT.
endif.
endif.
<fs_alloc>-VALFLDCE = wa_map4-/BIC/ZVALFLDCE.
ENDLOOP.
APPEND LINES OF ta_alloc to ta_urai.
endif.
endif.
ENDLOOP.
endif.

endif.
endif.
endif.
endif.
ENDLOOP.
if ta_urai[] is not INITIAL.
LOOP AT ta_urai INTO wa_alloc.
CLEAR: RESULT_FIELDS.
RESULT_FIELDS-/BIC/ZSOURCEDT = 'N3'.
RESULT_FIELDS-CUSTOMER = wa_alloc-ZCUSTOMER.
RESULT_FIELDS-COMP_CODE = wa_alloc-COMP_CODE.
RESULT_FIELDS-CURRENCY = wa_alloc-ZCURRENCY.
RESULT_FIELDS-FISCPER = wa_alloc-ZFISCPER.
RESULT_FIELDS-FISCVARNT = 'K4'.
RESULT_FIELDS-FISCYEAR = wa_alloc-ZFISCPER(4).
RESULT_FIELDS-G_CWW001 = wa_alloc-ZG_CWW001.
RESULT_FIELDS-G_CWW002 = wa_alloc-ZG_CWW002.
RESULT_FIELDS-G_CWW003 = wa_alloc-ZG_CWW003.
RESULT_FIELDS-G_CWW004 = wa_alloc-ZG_CWW004.
RESULT_FIELDS-G_CWW005 = wa_alloc-ZG_CWW005.
RESULT_FIELDS-/BIC/ZREVLINE = wa_alloc-ZREVLINE.
RESULT_FIELDS-PROFIT_CTR = wa_alloc-ZPROFIT_CTR.
RESULT_FIELDS-COSTELMNT = wa_alloc-COSTELMNT.
RESULT_FIELDS-COSTCENTER = wa_alloc-COSTCENTER.
RESULT_FIELDS-RE_FLW_TP = wa_alloc-ZRE_FLW_TP.
RESULT_FIELDS-VTYPE = '10'.
CONCATENATE 'RESULT_FIELDS-G_A' wa_alloc-VALFLDCE
INTO v_field.
ASSIGN (V_field) TO <ls_field>.
<ls_field> = wa_alloc-AMOUNT.
APPEND RESULT_FIELDS TO ta_package.
ENDLOOP.
endif.
endif.
ta_source[] = SOURCE_PACKAGE[].
SORT ta_source by COSTELMNT.
DELETE ta_source
WHERE COSTELMNT <= 'ZCC000001'
OR COSTELMNT >= 'ZCC999999'.
SORT ta_source by VTYPE.
" hanya data CCA yang PLAN saja
delete ta_source
WHERE VTYPE <> '20'.
if ta_source[] is not INITIAL.
CLEAR: t_th_sfc[],
t_th_sfk[],
t_range[],
t_data[].
"Preparing resource data
SORT ta_source by COSTCENTER.

ta_source2[] = ta_source[].
delete ADJACENT DUPLICATES FROM ta_source2
COMPARING COSTCENTER.
sort ta_source2 by COSTCENTER.
READ TABLE ta_source
INDEX 1
INTO wa_source.
v_year = wa_source-FISCYEAR.
SORT ta_source by COSTCENTER.
CLEAR: wa_s_sfc.
wa_s_sfc-chanm = '0FISCYEAR'.
wa_s_sfc-chaalias = 'ZFISCYEAR'.
wa_s_sfc-orderby = 0.
INSERT wa_s_sfc INTO TABLE t_th_sfc.
CLEAR: wa_s_sfc.
wa_s_sfc-chanm = '0FISCPER'.
wa_s_sfc-chaalias = 'ZFISCPER'.
wa_s_sfc-orderby = 0.
INSERT wa_s_sfc INTO TABLE t_th_sfc.
CLEAR: wa_s_sfc.
wa_s_sfc-chanm = '0PROFIT_CTR'.
wa_s_sfc-chaalias = 'ZPROFIT_CTR'.
wa_s_sfc-orderby = 0.
INSERT wa_s_sfc INTO TABLE t_th_sfc.
CLEAR: wa_s_sfc.
wa_s_sfc-chanm = '0CURTYPE'.
wa_s_sfc-chaalias = 'ZCURTYPE'.
wa_s_sfc-orderby = 0.
INSERT wa_s_sfc INTO TABLE t_th_sfc.
CLEAR: wa_s_sfc.
wa_s_sfc-chanm = '0VTYPE'.
wa_s_sfc-chaalias = 'ZVTYPE'.
wa_s_sfc-orderby = 0.
INSERT wa_s_sfc INTO TABLE t_th_sfc.
CLEAR: wa_s_sfc.
wa_s_sfc-chanm = '0RE_FLW_TP'.
wa_s_sfc-chaalias = 'ZRE_FLW_TP'.
wa_s_sfc-orderby = 0.
INSERT wa_s_sfc INTO TABLE t_th_sfc.
CLEAR: wa_s_sfc.
wa_s_sfc-chanm = '0CUSTOMER'.
wa_s_sfc-chaalias = 'ZCUSTOMER'.
wa_s_sfc-orderby = 0.
INSERT wa_s_sfc INTO TABLE t_th_sfc.
CLEAR: wa_s_sfc.
wa_s_sfc-chanm = '0G_CWW001'.
wa_s_sfc-chaalias = 'ZG_CWW001'.
wa_s_sfc-orderby = 0.
INSERT wa_s_sfc INTO TABLE t_th_sfc.

CLEAR: wa_s_sfc.
wa_s_sfc-chanm = '0G_CWW002'.
wa_s_sfc-chaalias = 'ZG_CWW002'.
wa_s_sfc-orderby = 0.
INSERT wa_s_sfc INTO TABLE t_th_sfc.
CLEAR: wa_s_sfc.
wa_s_sfc-chanm = '0G_CWW003'.
wa_s_sfc-chaalias = 'ZG_CWW003'.
wa_s_sfc-orderby = 0.
INSERT wa_s_sfc INTO TABLE t_th_sfc.
CLEAR: wa_s_sfc.
wa_s_sfc-chanm = '0G_CWW004'.
wa_s_sfc-chaalias = 'ZG_CWW004'.
wa_s_sfc-orderby = 0.
INSERT wa_s_sfc INTO TABLE t_th_sfc.
CLEAR: wa_s_sfc.
wa_s_sfc-chanm = '0G_CWW005'.
wa_s_sfc-chaalias = 'ZG_CWW005'.
wa_s_sfc-orderby = 0.
INSERT wa_s_sfc INTO TABLE t_th_sfc.
CLEAR: wa_s_sfc.
wa_s_sfc-chanm = 'ZREVLINE'.
wa_s_sfc-chaalias = 'ZREVLINE'.
wa_s_sfc-orderby = 0.
INSERT wa_s_sfc INTO TABLE t_th_sfc.
CLEAR: wa_s_sfc.
wa_s_sfc-chanm = '0CURRENCY'.
wa_s_sfc-chaalias = 'ZCURRENCY'.
wa_s_sfc-orderby = 0.
INSERT wa_s_sfc INTO TABLE t_th_sfc.
CLEAR: wa_s_sfc.
wa_s_sfc-chanm = '0G_UVV100'.
wa_s_sfc-chaalias = 'ZG_UVV100'.
wa_s_sfc-orderby = 0.
INSERT wa_s_sfc INTO TABLE t_th_sfc.
"Jumlah Produksi
CLEAR wa_th_sfk.
wa_th_sfk-kyfnm = '0G_QVV100'.
wa_th_sfk-kyfalias = 'ZG_QVV100'.
wa_th_sfk-aggr = 'SUM'.
INSERT wa_th_sfk INTO TABLE t_th_sfk.
"Pendapatan/Revenue
CLEAR wa_th_sfk.
wa_th_sfk-kyfnm = '0G_AVV111'.
wa_th_sfk-kyfalias = 'ZG_AVV111'.
wa_th_sfk-aggr = 'SUM'.
INSERT wa_th_sfk INTO TABLE t_th_sfk.
wa_range-chanm = '0FISCYEAR'.
wa_range-compop = 'EQ'.
wa_range-sign = 'I'.
wa_range-low = v_year.

APPEND wa_range TO t_range.


wa_range-chanm = '0VTYPE'.
wa_range-compop = 'EQ'.
wa_range-sign = 'I'.
wa_range-low = '20'.
APPEND wa_range TO t_range.
wa_range-chanm = '0CURTYPE'.
wa_range-compop = 'EQ'.
wa_range-sign = 'I'.
wa_range-low = 'B0'.
APPEND wa_range TO t_range.
" hanya yang non aero
wa_range-chanm = '0G_CWW002'.
wa_range-compop = 'EQ'.
wa_range-sign = 'I'.
wa_range-low = '2000'.
APPEND wa_range TO t_range.
CALL FUNCTION 'RSDRI_INFOPROV_READ'
EXPORTING
I_INFOPROV
= wl_infoprov2
I_TH_SFC
= t_th_sfc
I_TH_SFK
= t_th_sfk
I_T_RANGE
= t_range
I_ROLLUP_ONLY
= rs_c_false
I_PACKAGESIZE
= 99999
I_USE_DB_AGGREGATION = rs_c_false
I_USE_AGGREGATES
= rs_c_false
IMPORTING
E_T_DATA
= t_data2
CHANGING
C_FIRST_CALL
= t_first_call
EXCEPTIONS
ILLEGAL_INPUT
= 1
ILLEGAL_INPUT_SFC
= 2
ILLEGAL_INPUT_SFK
= 3
ILLEGAL_INPUT_RANGE
= 4
ILLEGAL_INPUT_TABLESEL = 5
NO_AUTHORIZATION
= 6
ILLEGAL_DOWNLOAD
= 7
ILLEGAL_TABLENAME
= 8
TRANS_NO_WRITE_MODE
= 9
INHERITED_ERROR
= 10
X_MESSAGE
= 11
NO_COMMIT_FREE_READ
= 12
OTHERS
= 13.
IF SY-SUBRC <> 0.
* Implement suitable error handling here
ENDIF.
*

BREAK-POINT.
SORT t_data2 by ZPROFIT_CTR ZFISCPER.
CLEAR: ta_urai2[].
LOOP AT ta_source2 INTO wa_source2.
CLEAR: v_flag1.

LOOP AT ta_map1 INTO wa_map1.


IF wa_map1-/BIC/ZCCSENDFR <= wa_source2-COSTCENTER
AND wa_map1-/BIC/ZCCSENDTO >= wa_source2-COSTCENTER.
v_flag1 = 'X'.
exit.
ENDIF.
v_flag1 = ''.
ENDLOOP.
if v_flag1 = 'X'.
READ TABLE ta_map5
INTO wa_map5
with key /BIC/ZTYPALORL = 'P'
/BIC/ZKDALLOC = wa_map1-/BIC/ZKDALLOC
BINARY SEARCH.
if sy-SUBRC = 0.
READ TABLE ta_map3
INTO wa_map3
with key /BIC/ZKDALLOCS = wa_map5-/BIC/ZKDALLOCS
BINARY SEARCH.
if sy-SUBRC = 0.
READ TABLE ta_map2
INTO wa_map2
with key /BIC/ZKDALLOC = wa_map1-/BIC/ZKDALLOC
BINARY SEARCH.
if sy-SUBRC = 0.
READ TABLE ta_source
INTO wa_source
with key COSTCENTER = wa_source2-COSTCENTER
BINARY SEARCH.
if sy-SUBRC = 0.
v_idx = sy-tabix.
LOOP AT ta_source INTO wa_source FROM v_idx.
IF wa_source-COSTCENTER <> wa_source2-COSTCENTER.
EXIT.
ENDIF.
CLEAR: wa_map4.
READ TABLE ta_map4
INTO wa_map4
with KEY /BIC/ZKDALLOCS = wa_map5-/BIC/ZKDALLOCS
COSTELMNT = wa_source-COSTELMNT
BINARY SEARCH.
if sy-SUBRC = 0.
READ TABLE t_data2
INTO wa_copa
with KEY ZPROFIT_CTR = wa_map2-PROFIT_CTR
ZFISCPER = wa_source-FISCPER
BINARY SEARCH.
if sy-SUBRC = 0.
v_idx2 = sy-tabix.
CLEAR: ta_alloc2[],
v_qty,
v_amount.
LOOP AT t_data2 INTO wa_copa FROM v_idx2.
IF wa_copa-ZPROFIT_CTR <> wa_map2-PROFIT_CTR

or wa_copa-ZFISCPER <> wa_source-FISCPER.


exit.
ENDIF.
if wa_map2-/BIC/ZFLTYPFR <= wa_copa-zRE_FLW_TP
AND wa_map2-/BIC/ZFLTYPTO >=
wa_copa-zRE_FLW_TP.
CLEAR: wa_alloc2.
wa_alloc2-VTYPE = wa_source-VTYPE.
wa_alloc2-ZFISCPER = wa_copa-ZFISCPER.
wa_alloc2-ZFISCYEAR = wa_copa-ZFISCYEAR.
wa_alloc2-ZRE_FLW_TP = wa_copa-ZRE_FLW_TP.
wa_alloc2-ZPROFIT_CTR = wa_copa-ZPROFIT_CTR.
wa_alloc2-ZCUSTOMER = wa_copa-ZCUSTOMER.
wa_alloc2-ZG_CWW001 = wa_copa-ZG_CWW001.
wa_alloc2-ZG_CWW002 = wa_copa-ZG_CWW002.
wa_alloc2-ZG_CWW003 = wa_copa-ZG_CWW003.
wa_alloc2-ZG_CWW004 = wa_copa-ZG_CWW004.
wa_alloc2-ZG_CWW005 = wa_copa-ZG_CWW005.
wa_alloc2-ZREVLINE = wa_copa-zrevline.
wa_alloc2-ZG_AVV111 = wa_copa-ZG_AVV111.
wa_alloc2-ZG_QVV100 = wa_copa-ZG_QVV100.
wa_alloc2-COSTCENTER = wa_source-COSTCENTER.
wa_alloc2-KDALLOC = wa_map1-/BIC/ZKDALLOC.
wa_alloc2-ZCURRENCY = wa_copa-ZCURRENCY.
wa_alloc2-ZG_UVV100 = wa_copa-ZG_UVV100.
wa_alloc-AMOUNT = wa_source-AMOUNT.
wa_alloc2-COSTELMNT = wa_source-COSTELMNT.
wa_alloc2-COMP_CODE = c_COMP_CODE.
wa_alloc2-COSTCENTER = wa_source-COSTCENTER.
COLLECT wa_alloc2 INTO ta_alloc2.
v_qty = v_qty + wa_alloc2-ZG_QVV100.
v_amount = v_amount + wa_alloc2-ZG_AVV111.
endif.
ENDLOOP.
LOOP AT ta_alloc2 ASSIGNING <fs_alloc2>.
"rev
if wa_map5-/BIC/ZAFREV is NOT INITIAL.
<fs_alloc2>-AMOUNT =
( <fs_alloc2>-ZG_AVV111 / v_amount ) *
<fs_alloc2>-AMOUNT.
endif.
"product
if wa_map5-/BIC/ZAFPROD is NOT INITIAL.
<fs_alloc2>-AMOUNT =
( <fs_alloc2>-ZG_QVV100 / v_qty ) *
<fs_alloc2>-AMOUNT.
endif.
<fs_alloc2>-VALFLDCE = wa_map4-/BIC/ZVALFLDCE.
ENDLOOP.
APPEND LINES OF ta_alloc2 to ta_urai2.
endif.

endif.
ENDLOOP.
endif.
endif.
endif.
endif.
endif.
ENDLOOP.
ENDIF.
if ta_urai2[] is not INITIAL.
LOOP AT ta_urai2 INTO wa_alloc2.
CLEAR: RESULT_FIELDS.
RESULT_FIELDS-/BIC/ZSOURCEDT = 'N4'.
RESULT_FIELDS-CUSTOMER = wa_alloc2-ZCUSTOMER.
RESULT_FIELDS-COMP_CODE = wa_alloc2-COMP_CODE.
RESULT_FIELDS-CURRENCY = wa_alloc2-ZCURRENCY.
RESULT_FIELDS-FISCPER = wa_alloc2-ZFISCPER.
RESULT_FIELDS-FISCVARNT = 'K4'.
RESULT_FIELDS-FISCYEAR = wa_alloc2-ZFISCPER(4).
RESULT_FIELDS-G_CWW001 = wa_alloc2-ZG_CWW001.
RESULT_FIELDS-G_CWW002 = wa_alloc2-ZG_CWW002.
RESULT_FIELDS-G_CWW003 = wa_alloc2-ZG_CWW003.
RESULT_FIELDS-G_CWW004 = wa_alloc2-ZG_CWW004.
RESULT_FIELDS-G_CWW005 = wa_alloc2-ZG_CWW005.
RESULT_FIELDS-/BIC/ZREVLINE = wa_alloc2-ZREVLINE.
RESULT_FIELDS-PROFIT_CTR = wa_alloc2-ZPROFIT_CTR.
RESULT_FIELDS-COSTELMNT = wa_alloc2-COSTELMNT.
RESULT_FIELDS-COSTCENTER = wa_alloc2-COSTCENTER.
RESULT_FIELDS-RE_FLW_TP = wa_alloc2-ZRE_FLW_TP.
RESULT_FIELDS-VTYPE = '20'.
CONCATENATE 'RESULT_FIELDS-G_A' wa_alloc2-VALFLDCE
INTO v_field.
ASSIGN (V_field) TO <ls_field>.
<ls_field> = wa_alloc2-AMOUNT.
APPEND RESULT_FIELDS TO ta_package.
ENDLOOP.
endif.
RESULT_PACKAGE[] = ta_package[].
FREE: ta_source[],
ta_source2[],
ta_map1[],
ta_map2[],
ta_map3[],
ta_map4[],
ta_map5[],
t_range[],
t_data[],
ta_alloc[],
ta_urai[],
t_data2[],
ta_alloc2[],
ta_urai2[],
ta_package[].

*$*$ end of routine - insert your code only before this line
*-*
ENDMETHOD.
"expert_routine
*----------------------------------------------------------------------*
*
Inverse method inverse_expert_routine
*----------------------------------------------------------------------*
*
This subroutine needs to be implemented only for direct access
*
(for better performance) and for the Report/Report Interface
*
(drill through).
*
The inverse routine should transform a projection and
*
a selection for the target to a projection and a selection
*
for the source, respectively.
*
If the implementation remains empty all fields are filled and
*
all values are selected.
*----------------------------------------------------------------------*
*
Customer comment:
*----------------------------------------------------------------------*
METHOD inverse_expert_routine.
*
*
*
*
*
*
*
*
*

IMPORTING
i_r_selset_outbound
i_th_fields_outbound
i_r_selset_outbound_complete
i_r_universe_inbound
CHANGING
c_r_selset_inbound
c_th_fields_inbound
c_exact

TYPE
TYPE
TYPE
TYPE

REF TO
HASHED
REF TO
REF TO

cl_rsmds_set
TABLE
cl_rsmds_set
cl_rsmds_universe

TYPE REF TO cl_rsmds_set


TYPE HASHED TABLE
TYPE rs_bool

*$*$ begin of inverse routine - insert your code only below this line*-*
... "insert your code here
*$*$ end of inverse routine - insert your code only before this line *-*
ENDMETHOD.

"inverse_expert_routine

METHOD new_record__expert_routine.
***** IMPLEMENTATION is only visible in generated program *****
ENDMETHOD.
ENDCLASS.

"routine IMPLEMENTATION

You might also like