调用CALL FUNCTION 'ZFI22F_JUDGE_CBXM'

&---------------------------------------------------------------------
*& Form U607
&---------------------------------------------------------------------

  • 运维检修费核算科目控制 按照项目类型替代原9*科目到对应成本科目
    ----------------------------------------------------------------------
  • –>KOSTL text
    ----------------------------------------------------------------------
    FORM U607 USING HKONT TYPE BSEG-HKONT.
    DATA: LV_MSG TYPE STRING .
    DATA: IT_DDXZKM TYPE TABLE OF ZMMFW_DDXZHKONT .
    DATA: WA_DDXZKM LIKE LINE OF IT_DDXZKM .
    DATA: LV_PSPEL TYPE AUFK-PSPEL .
    DATA: LV_STORT TYPE AUFK-STORT .
    DATA: LV_PROFL TYPE PROJ-PROFL .
    DATA: LV_HKONT LIKE BSEG-HKONT .
    DATA: WBSNUM LIKE BSEG-PROJK .
    DATA: LV_ISCBXM TYPE C .

"发货替代成本中心 成本项目取成本中心 成本项目成本中心取数
IF SY-TCODE EQ ‘MIGO’
OR SY-TCODE EQ ‘MB1A’
OR SY-TCODE EQ ‘MB1B’
OR SY-TCODE EQ ‘MIGO_GI’
OR SY-TCODE EQ ‘ZMM19001’
OR SY-TCODE EQ ‘MBST’
OR SY-TCODE EQ ‘MBRL’
.

IF ( BSEG-NPLNR IS NOT INITIAL OR BSEG-PROJK NE ‘00000000’ ) .
"按照项目类型替代原9*科目到对应成本科目 add by cxm 20140317
CALL FUNCTION ‘ZFI22F_JUDGE_CBXM’
EXPORTING
IV_PSPNR = BSEG-PROJK
IV_NPLNR = BSEG-NPLNR
IV_GETKOSTL = ‘X’
IV_GETTDKM = ‘WZ’
IMPORTING
EV_ISCBXM = LV_ISCBXM
EV_PROFL = LV_PROFL
EV_HKONT = LV_HKONT.
IF LV_ISCBXM = ‘X’ .
IF LV_HKONT IS NOT INITIAL .
HKONT = LV_HKONT .
BSEG-HKONT = LV_HKONT .
ENDIF.
ENDIF.
ENDIF.
ENDIF.

FUNCTION ZFI22F_JUDGE_CBXM. *se37可查询FUNCTION代码

DATA: lv_objnr TYPE j_objnr .
DATA: lv_aprof TYPE cobra-aprof .
DATA: lv_abrist TYPE tkb1a-abrist .
DATA: lv_psphi TYPE prps-psphi .
DATA: lw_pspel TYPE aufk-pspel .
DATA: lv_pspnr TYPE prps-pspnr .
DATA:
lv_posid TYPE ps_posid,
lw_prart TYPE prps-prart,
lw_psphi TYPE prps-psphi,
lw_profl TYPE proj-profl,
lw_kostl_proj TYPE proj-kostl,
lw_kostl_prps TYPE prps-kostl .
DATA it_xmcbkm TYPE TABLE OF zmm22t_xmcbkm WITH HEADER LINE .
DATA wa_xmcbkm TYPE zmm22t_xmcbkm .

"取WBS属性
IF iv_pspnr IS NOT INITIAL .
SELECT SINGLE pspnr posid psphi prart fkstl
INTO CORRESPONDING FIELDS OF es_prps
FROM prps
WHERE pspnr = iv_pspnr .
ELSEIF iv_posid IS NOT INITIAL .
SELECT SINGLE pspnr posid psphi prart fkstl
INTO CORRESPONDING FIELDS OF es_prps
FROM prps
WHERE posid = iv_posid .
ELSEIF iv_nplnr IS NOT INITIAL .
SELECT SINGLE pspel
INTO lw_pspel
FROM aufk
WHERE aufnr = iv_nplnr .

SELECT SINGLE pspnr posid psphi prart fkstl
INTO CORRESPONDING FIELDS OF es_prps
FROM prps
WHERE pspnr = lw_pspel .
ENDIF.

"取项目定义
SELECT SINGLE pspnr pspid objnr kostl profl
INTO CORRESPONDING FIELDS OF es_proj
FROM proj WHERE pspnr = es_prps-psphi .

CHECK es_proj-objnr IS NOT INITIAL .

SELECT SINGLE aprof INTO lv_aprof FROM cobra
WHERE objnr = es_proj-objnr .
SELECT SINGLE abrist INTO lv_abrist FROM tkb1a
WHERE aprof = lv_aprof .

ev_pspid = es_proj-pspid .
ev_profl = es_proj-profl .
ev_xmlb = es_proj-pspid(2) .

IF lv_abrist EQ ‘2’ .
ev_iscbxm = ‘X’ .
ELSE.
ev_iscbxm = ‘’ .
ENDIF.

select * into table it_xmcbkm from zmm22t_xmcbkm where profl = es_proj-profl .
check it_xmcbkm[] is not initial . "如果项目类型不在 成本项目科目对应表内则不需要取 项目成本中心 及项目对应科目

ev_iscbxm = ‘X’ ."在对应表内就算是需要结算的
IF iv_getkostl EQ ‘X’."取成本项目成本中心
es_prps-posid = es_prps-posid .
lw_kostl_prps = es_prps-fkstl .
IF es_prps-posid IS NOT INITIAL .
IF lw_kostl_prps IS INITIAL .
CONCATENATE es_prps-posid(14) ‘%’ INTO lv_posid.
SELECT SINGLE fkstl
INTO lw_kostl_proj
FROM prps WHERE posid LIKE lv_posid AND stufe = ‘1’ .
IF sy-subrc NE 0 .
CONCATENATE es_prps-posid(12) ‘%’ INTO lv_posid.
SELECT SINGLE fkstl
INTO lw_kostl_proj
FROM prps WHERE posid LIKE lv_posid AND stufe = ‘1’ .
IF sy-subrc NE 0 .
CONCATENATE es_prps-posid(10) ‘%’ INTO lv_posid.
SELECT SINGLE fkstl
INTO lw_kostl_proj
FROM prps WHERE posid LIKE lv_posid AND stufe = ‘1’ .
ENDIF .
ENDIF .

ev_kostl = lw_kostl_proj .
ELSE.
ev_kostl = lw_kostl_prps .

ENDIF .
ENDIF .
ENDIF .

IF iv_gettdkm is not initial ."取成本项目替代科目
"成本项目 物资发货替代,按照项目类型替代原9*科目到对应成本科目
LOOP AT it_xmcbkm INTO wa_xmcbkm WHERE ywlx = iv_gettdkm .
IF wa_xmcbkm-prart IS INITIAL OR wa_xmcbkm-prart = es_proj-pspid(2) .
ev_hkont = wa_xmcbkm-hkont .
ENDIF .
ENDLOOP .
ENDIF.

ENDFUNCTION.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值