*&---------------------------------------------------------------------*
*& 包括 ZXRSAU02
*&---------------------------------------------------------------------*
TABLES: BSIK, BSEG, BSAK, ANLB,ANLA,PROJ .
*break-point.
DATA: I_COUNTER.
data: l_HRMS like HRMS_BIW_IO_OCCUPANCY," 员工主数据0employee_attr提取结构
l_opa1 like ICORDCST,"维护订单: 成本和分配0PM_OM_OPA_1提取结构
l_opa2 like ICORDCSTA1,"维护订单:根据增量提取器方法的实际成本0PM_OM_OPA_2提取结构
l_0PM_ORDER_ATTR like BWE_0PM_ORDER, "工厂维护订单属性提取结构
l_0equipmnt_attr like BWE_EQUI,"设备属性提取结构
add_hrms like HRMS_BIW_IO_OCCUPANCY,
itab_9113 type standard table of hrp9113,
wa_9113 type hrp9113,
pre_9113 type hrp9113,
itab_P0001 type standard table of pa0001,
wa_0001 type pa0001,
pre_0001 type pa0001,
pre_endda type endda,
l_FISTL type FISTL.
* define ZASSET enhancement
data: I_BWFIAA_ASSETMASTER type BWFIAA_ASSETMASTER,
L_TABIX like SY-TABIX,
i_ndjar like anlb-ndjar,
i_ndper like anlb-ndper,
i_afabg like anlb-afabg,
i_menge like anla-menge,
i_meins like anla-meins,
overdat type d.
* define ZPROJECT enhancement
data:I_BIW_PROJ TYPE BIW_PROJ,"项目定义属性提取结构
I_BIW_PRPS like BIW_PRPS,"WBS属性提取结构
I_BIW_NETW like BIW_NETW,"网络属性提取结构
i_plfaz like proj-plfaz,
i_plsez like proj-plsez.
* define 0plant enhancement
data: I_BIW_T001WS type BIW_T001WS.
CASE I_DATASOURCE.
**************************************************
*人事数据源增强
**************************************************
WHEN '0EMPLOYEE_ATTR'.
* 添加岗位属性
select * into table itab_9113 from hrp9113
where plvar = '01'
and otype = 'S'
and istat = '1'."取得所有职位属性主数据
sort itab_9113 by objid begda."根据职位id和起始日期排序
LOOP AT I_T_DATA INTO l_HRMS.
clear wa_9113.
loop at itab_9113 into wa_9113 where objid = l_hrms-plans.
clear pre_9113.
pre_9113 = wa_9113.
if wa_9113-endda < l_hrms-begda.
clear wa_9113.
continue.
else.
if wa_9113-endda < l_hrms-endda.
* 修改原记录
pre_endda = l_hrms-endda.
l_hrms-endda = wa_9113-endda.
l_hrms-sptyp = wa_9113-sptyp.
l_hrms-zzpsspt = wa_9113-zzpsspt.
l_hrms-zzpstyp = wa_9113-zzpstyp.
MODIFY I_T_DATA FROM l_HRMS.
* 分拆出新记录
clear add_hrms.
add_hrms = l_hrms.
add_hrms-begda = wa_9113-endda + 1.
add_hrms-endda = pre_endda.
append add_hrms to i_t_data .
else.
l_hrms-sptyp = wa_9113-sptyp.
l_hrms-zzpsspt = wa_9113-zzpsspt.
l_hrms-zzpstyp = wa_9113-zzpstyp.
MODIFY I_T_DATA FROM l_HRMS.
endif.
clear wa_9113.
exit.
endif.
endloop.
ENDLOOP.
**************************************************
*财务数据源增强
**************************************************
* 给资产子目录属性添加字段--计算逾龄
when '0ASSET_ATTR_TEXT'.
loop at i_t_data into I_BWFIAA_ASSETMASTER.
L_TABIX = SY-TABIX.
clear overdat.
select single * from anlb where bukrs = I_BWFIAA_ASSETMASTER-bukrs
and anln1 = I_BWFIAA_ASSETMASTER-anln1 and AFABE eq 1.
if sy-subrc = 0.
I_BWFIAA_ASSETMASTER-zndjar = anlb-ndjar."资产计划使用年度
I_BWFIAA_ASSETMASTER-zndper = anlb-ndper."资产计划使用期间
I_BWFIAA_ASSETMASTER-zafabg = anlb-afabg."折旧开始日
if anlb-afabg is initial.
I_BWFIAA_ASSETMASTER-zylrq = '99990101'.
else.
overdat = anlb-afabg.
overdat+4(2) = overdat+4(2) + anlb-ndper.
if overdat+4(2) > 12.
overdat+4(2) = overdat+4(2) - 12.
overdat+0(4) = overdat+0(4) + 1.
endif.
overdat+0(4) = overdat+0(4) + anlb-ndjar.
I_BWFIAA_ASSETMASTER-zylrq = overdat.
endif.
modify I_T_DATA from I_BWFIAA_ASSETMASTER index L_TABIX.
endif.
select single * from anla where bukrs = I_BWFIAA_ASSETMASTER-bukrs
and anln1 = I_BWFIAA_ASSETMASTER-anln1.
if sy-subrc = 0.
I_BWFIAA_ASSETMASTER-zmenge = anla-menge."线缆长度
I_BWFIAA_ASSETMASTER-zmeins = anla-meins."单位
modify I_T_DATA from I_BWFIAA_ASSETMASTER index L_TABIX.
endif.
endloop.
**************************************************
*设备数据源增强
**************************************************
* when '0PM_OM_OPA_1'.
* LOOP AT I_T_DATA INTO l_opa1.
* select single EQUNR into l_opa1-equnr from afih
* where AUFNR = l_opa1-aufnr.
* modify i_t_data from l_opa1.
* endloop.
* when '0PM_OM_OPA_2'.
* LOOP AT I_T_DATA INTO l_opa2.
* select single EQUNR into l_opa2-equnr from afih
* where AUFNR = l_opa2-aufnr.
* modify i_t_data from l_opa2.
* endloop.
when '0PM_ORDER_ATTR'.
loop at i_t_data into l_0PM_ORDER_ATTR.
select single loekz into l_0PM_ORDER_ATTR-loekz from aufk
where aufnr = l_0PM_ORDER_ATTR-aufnr.
* clear l_fistl.
* select single target1 into l_FISTL from FMFMOAQAS6000022
* where sour1_from = l_0PM_ORDER_ATTR-KOSTL
* and sour2_from = l_0PM_ORDER_ATTR-AUART.
* if l_fistl is initial.
* select single target1 into l_fistl from FMFMOAQAS6000015
* where sour1_from = l_0PM_ORDER_ATTR-KOSTL.
* endif.
l_0PM_ORDER_ATTR-ZRFUNDSCTR = l_fistl.
modify i_t_data from l_0PM_ORDER_ATTR.
endloop.
when '0EQUIPMENT_ATTR'.
loop at i_t_data into l_0equipmnt_attr.
select single ORD42 into l_0equipmnt_attr-ord42
from anla
where bukrs = l_0equipmnt_attr-bukrs
and anln1 = l_0equipmnt_attr-ANLNR.
select single KANSW into l_0equipmnt_attr-urwrt
from anlc
where bukrs = l_0equipmnt_attr-bukrs
and anln1 = l_0equipmnt_attr-ANLNR
and afabe = 1
and gjahr = sy-datum+0(4).
modify i_t_data from l_0equipmnt_attr.
endloop.
**************************************************
*物料数据源增强
**************************************************
when '0PLANT_ATTR'.
loop at i_t_data into I_BIW_T001WS.
select single bukrs from t001k into I_BIW_T001WS-bukrs
where bwkey = I_BIW_T001WS-werks.
modify i_t_data from I_BIW_T001WS.
endloop.
**************************************************
*工程数据源增强
**************************************************
when '0PROJECT_ATTR'.
loop at I_T_DATA into I_BIW_PROJ.
select single plfaz plsez profl from proj into (I_BIW_PROJ-zplfaz , I_BIW_PROJ-zplsez ,I_BIW_PROJ-zprofl )
where pspid = I_BIW_PROJ-pspid.
modify i_t_data from I_BIW_PROJ.
endloop.
when '0WBS_ELEMT_ATTR'.
loop at I_T_DATA into I_BIW_PRPS.
select single profl from proj into I_BIW_PRPS-zprofl
where pspid = I_BIW_PRPS-pspid.
modify i_t_data from I_BIW_PRPS.
endloop.
when '0NETWORK_ATTR'.
loop at I_T_DATA into I_BIW_NETW.
select single profl from proj into I_BIW_NETW-zprofl
where pspid = I_BIW_NETW-pspid.
modify i_t_data from I_BIW_NETW.
endloop.
WHEN OTHERS.
ENDCASE.
*& 包括 ZXRSAU02
*&---------------------------------------------------------------------*
TABLES: BSIK, BSEG, BSAK, ANLB,ANLA,PROJ .
*break-point.
DATA: I_COUNTER.
data: l_HRMS like HRMS_BIW_IO_OCCUPANCY," 员工主数据0employee_attr提取结构
l_opa1 like ICORDCST,"维护订单: 成本和分配0PM_OM_OPA_1提取结构
l_opa2 like ICORDCSTA1,"维护订单:根据增量提取器方法的实际成本0PM_OM_OPA_2提取结构
l_0PM_ORDER_ATTR like BWE_0PM_ORDER, "工厂维护订单属性提取结构
l_0equipmnt_attr like BWE_EQUI,"设备属性提取结构
add_hrms like HRMS_BIW_IO_OCCUPANCY,
itab_9113 type standard table of hrp9113,
wa_9113 type hrp9113,
pre_9113 type hrp9113,
itab_P0001 type standard table of pa0001,
wa_0001 type pa0001,
pre_0001 type pa0001,
pre_endda type endda,
l_FISTL type FISTL.
* define ZASSET enhancement
data: I_BWFIAA_ASSETMASTER type BWFIAA_ASSETMASTER,
L_TABIX like SY-TABIX,
i_ndjar like anlb-ndjar,
i_ndper like anlb-ndper,
i_afabg like anlb-afabg,
i_menge like anla-menge,
i_meins like anla-meins,
overdat type d.
* define ZPROJECT enhancement
data:I_BIW_PROJ TYPE BIW_PROJ,"项目定义属性提取结构
I_BIW_PRPS like BIW_PRPS,"WBS属性提取结构
I_BIW_NETW like BIW_NETW,"网络属性提取结构
i_plfaz like proj-plfaz,
i_plsez like proj-plsez.
* define 0plant enhancement
data: I_BIW_T001WS type BIW_T001WS.
CASE I_DATASOURCE.
**************************************************
*人事数据源增强
**************************************************
WHEN '0EMPLOYEE_ATTR'.
* 添加岗位属性
select * into table itab_9113 from hrp9113
where plvar = '01'
and otype = 'S'
and istat = '1'."取得所有职位属性主数据
sort itab_9113 by objid begda."根据职位id和起始日期排序
LOOP AT I_T_DATA INTO l_HRMS.
clear wa_9113.
loop at itab_9113 into wa_9113 where objid = l_hrms-plans.
clear pre_9113.
pre_9113 = wa_9113.
if wa_9113-endda < l_hrms-begda.
clear wa_9113.
continue.
else.
if wa_9113-endda < l_hrms-endda.
* 修改原记录
pre_endda = l_hrms-endda.
l_hrms-endda = wa_9113-endda.
l_hrms-sptyp = wa_9113-sptyp.
l_hrms-zzpsspt = wa_9113-zzpsspt.
l_hrms-zzpstyp = wa_9113-zzpstyp.
MODIFY I_T_DATA FROM l_HRMS.
* 分拆出新记录
clear add_hrms.
add_hrms = l_hrms.
add_hrms-begda = wa_9113-endda + 1.
add_hrms-endda = pre_endda.
append add_hrms to i_t_data .
else.
l_hrms-sptyp = wa_9113-sptyp.
l_hrms-zzpsspt = wa_9113-zzpsspt.
l_hrms-zzpstyp = wa_9113-zzpstyp.
MODIFY I_T_DATA FROM l_HRMS.
endif.
clear wa_9113.
exit.
endif.
endloop.
ENDLOOP.
**************************************************
*财务数据源增强
**************************************************
* 给资产子目录属性添加字段--计算逾龄
when '0ASSET_ATTR_TEXT'.
loop at i_t_data into I_BWFIAA_ASSETMASTER.
L_TABIX = SY-TABIX.
clear overdat.
select single * from anlb where bukrs = I_BWFIAA_ASSETMASTER-bukrs
and anln1 = I_BWFIAA_ASSETMASTER-anln1 and AFABE eq 1.
if sy-subrc = 0.
I_BWFIAA_ASSETMASTER-zndjar = anlb-ndjar."资产计划使用年度
I_BWFIAA_ASSETMASTER-zndper = anlb-ndper."资产计划使用期间
I_BWFIAA_ASSETMASTER-zafabg = anlb-afabg."折旧开始日
if anlb-afabg is initial.
I_BWFIAA_ASSETMASTER-zylrq = '99990101'.
else.
overdat = anlb-afabg.
overdat+4(2) = overdat+4(2) + anlb-ndper.
if overdat+4(2) > 12.
overdat+4(2) = overdat+4(2) - 12.
overdat+0(4) = overdat+0(4) + 1.
endif.
overdat+0(4) = overdat+0(4) + anlb-ndjar.
I_BWFIAA_ASSETMASTER-zylrq = overdat.
endif.
modify I_T_DATA from I_BWFIAA_ASSETMASTER index L_TABIX.
endif.
select single * from anla where bukrs = I_BWFIAA_ASSETMASTER-bukrs
and anln1 = I_BWFIAA_ASSETMASTER-anln1.
if sy-subrc = 0.
I_BWFIAA_ASSETMASTER-zmenge = anla-menge."线缆长度
I_BWFIAA_ASSETMASTER-zmeins = anla-meins."单位
modify I_T_DATA from I_BWFIAA_ASSETMASTER index L_TABIX.
endif.
endloop.
**************************************************
*设备数据源增强
**************************************************
* when '0PM_OM_OPA_1'.
* LOOP AT I_T_DATA INTO l_opa1.
* select single EQUNR into l_opa1-equnr from afih
* where AUFNR = l_opa1-aufnr.
* modify i_t_data from l_opa1.
* endloop.
* when '0PM_OM_OPA_2'.
* LOOP AT I_T_DATA INTO l_opa2.
* select single EQUNR into l_opa2-equnr from afih
* where AUFNR = l_opa2-aufnr.
* modify i_t_data from l_opa2.
* endloop.
when '0PM_ORDER_ATTR'.
loop at i_t_data into l_0PM_ORDER_ATTR.
select single loekz into l_0PM_ORDER_ATTR-loekz from aufk
where aufnr = l_0PM_ORDER_ATTR-aufnr.
* clear l_fistl.
* select single target1 into l_FISTL from FMFMOAQAS6000022
* where sour1_from = l_0PM_ORDER_ATTR-KOSTL
* and sour2_from = l_0PM_ORDER_ATTR-AUART.
* if l_fistl is initial.
* select single target1 into l_fistl from FMFMOAQAS6000015
* where sour1_from = l_0PM_ORDER_ATTR-KOSTL.
* endif.
l_0PM_ORDER_ATTR-ZRFUNDSCTR = l_fistl.
modify i_t_data from l_0PM_ORDER_ATTR.
endloop.
when '0EQUIPMENT_ATTR'.
loop at i_t_data into l_0equipmnt_attr.
select single ORD42 into l_0equipmnt_attr-ord42
from anla
where bukrs = l_0equipmnt_attr-bukrs
and anln1 = l_0equipmnt_attr-ANLNR.
select single KANSW into l_0equipmnt_attr-urwrt
from anlc
where bukrs = l_0equipmnt_attr-bukrs
and anln1 = l_0equipmnt_attr-ANLNR
and afabe = 1
and gjahr = sy-datum+0(4).
modify i_t_data from l_0equipmnt_attr.
endloop.
**************************************************
*物料数据源增强
**************************************************
when '0PLANT_ATTR'.
loop at i_t_data into I_BIW_T001WS.
select single bukrs from t001k into I_BIW_T001WS-bukrs
where bwkey = I_BIW_T001WS-werks.
modify i_t_data from I_BIW_T001WS.
endloop.
**************************************************
*工程数据源增强
**************************************************
when '0PROJECT_ATTR'.
loop at I_T_DATA into I_BIW_PROJ.
select single plfaz plsez profl from proj into (I_BIW_PROJ-zplfaz , I_BIW_PROJ-zplsez ,I_BIW_PROJ-zprofl )
where pspid = I_BIW_PROJ-pspid.
modify i_t_data from I_BIW_PROJ.
endloop.
when '0WBS_ELEMT_ATTR'.
loop at I_T_DATA into I_BIW_PRPS.
select single profl from proj into I_BIW_PRPS-zprofl
where pspid = I_BIW_PRPS-pspid.
modify i_t_data from I_BIW_PRPS.
endloop.
when '0NETWORK_ATTR'.
loop at I_T_DATA into I_BIW_NETW.
select single profl from proj into I_BIW_NETW-zprofl
where pspid = I_BIW_NETW-pspid.
modify i_t_data from I_BIW_NETW.
endloop.
WHEN OTHERS.
ENDCASE.