DATA:
HIE_INPUT TYPE FMHIE_S_ADDRESS_KEY,
HIE_OUTPUT TYPE FMHIE_S_BUDGET_ATTRIBUTES,
CMM_INPUT TYPE FMDT_CMMT_HIER_KEY,
CMM_OUTPUT TYPE FMHICI,
FCTR_INPUT TYPE FMDT_FCTR_HIER_KEY,
FCTR_OUTPUT FMHISV.
CLEAR: C_S_ADDRESS_SUPPL- ZZB_CHECK.
"将初始的记账址的基金中心和其它相关数据
HIE_INPUT-FM_AREA = I_S_ADDRESS-FM_AREA.
HIE_INPUT-FISC_YEAR = I_S_ADDRESS-FISCYEAR.
HIE_INPUT-LDNR = '9F'. "预算类别分类账9F
HIE_INPUT-FUND = I_S_ADDRESS-FUND.
HIE_INPUT-FUNCAREA = I_S_ADDRESS-FUNCAREA.
HIE_INPUT-MEASURE = I_S_ADDRESS-MEASURE.
FCTR_INPUT-FM_AREA = I_S_ADDRESS-FM_AREA.
FCTR_INPUT-FISC_YEAR = I_S_ADDRESS-FISCYEAR.
FCTR_INPUT-FCVARNT = '0000' . "这里用的标准层次变式0000
CMM_INPUT-FM_AREA = I_S_ADDRESS-FM_AREA.
CMM_INPUT-FISC_YEAR = I_S_ADDRESS-FISCYEAR.
CMM_INPUT-FCVARNT = '000' .”这里用的标准层次变式000
C_S_ADDRESS_SUPPL-ZZB_FUNDSCTR = I_S_ADDRESS-FUNDSCTR.
DO.
C_S_ADDRESS_SUPPL-ZZB_CMMTITEM = I_S_ADDRESS-CMMTITEM.
DO.
"预算是否存在
HIE_INPUT-FUNDSCTR = C_S_ADDRESS_SUPPL-ZZB_FUNDSCTR.
HIE_INPUT-CMMTITEM = C_S_ADDRESS_SUPPL-ZZB_CMMTITEM.
CALL FUNTION 'FMHIE_GET_BUDGET_ATTRIBUTES'
EXPORTING
INPUT = HIE_INPUT
IMPORTING
OUTPUT = HIE_OUTPUT.
"取得预算存在成功
IF SY-SUBRC = 0 AND HIE_OUTPUT-BUDGET_EXISTS = 'X'.
C_S_ADDRESS_SUPPL-ZZB_CHECK = 'X'.
EXIT.
ELSE.
"在本级承诺项目没有取得预算存在,取上一级承诺项目.
CMM_INPUT-CMMT_ITEM = C_S_ADDRESS_SUPPL-ZZB_CMMTITEM.
CALL FUNCTION 'FMDT_READ_HIER_CMMT_ITEM'
EXPORTING
INPUT = CMM_INPUT
IMPORTING
OUTPUT = CMM_OUTPUT.
IF SY-SUBRC = 0 AND CMM_OUTPUT-PARENT_FIP <> ''.
C_S_ADDRESS_SUPPL-ZZB_CMMTITEM = CMM_OUTPUT-PARENT_FIP. "取得上级承诺项
ELSE.
"如果已到根点,找上级承诺项目不成功,退出循环.
C_S_ADDRESS_SUPPL-ZZB_CHECK = ''.
EXIT.
END
ENDIF.
ENDDO.
"在本级基金中心成功取得了预算退出
IF C_S_ADDRESS_SUPPL-ZZB_CHECK = 'X'.
EXIT.
ENDDO.
"在本级基金中心没有成功取得了预算,取上级基金中心
FCTR_INPUT-FUNDS_CTR = C_S_ADDRESS_SUPPL-ZZB_FUNDSCTR.
CALL FUNCTION 'FMDT_READ_HIER_FUNDS_CTR'
EXPORTING
INPUT = FCTR_INPUT
IMPORTING
OUTPUT = FCTR_OUTPUT.
"取出成功且取出的上级基金中心不为空
IF SY-SUBRC = 0 AND FCTR_OUTPUT-PARENT_ST <> '' .
C_S_ADDRESS_SUPPL-ZZB_FUNDSCTR = FCTR_OUTPUT-PARENT_ST.”取得上级基金中心
ELSE.
"已到根节点没有取出数据,退出循环
C_S_ADDRESS_SUPPL-ZZB_CHECK = ''.
C_S_ADDRESS_SUPPL-ZZB_FUNDSCTR = ''.
C_S_ADDRESS_SUPPL-ZZB_CMMTITEM = ''.
EXIT.
ENDIF.
ENDDO.