数据源增强--主数据

来源:互联网 发布:java常用英语词汇 编辑:程序博客网 时间:2024/05/08 21:43
*&---------------------------------------------------------------------*
*&  包括                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.
0 0
原创粉丝点击