IELDS.
IF SY-SUBRC = 0.
LS_NODE-ISFOLDER = ABAP_TRUE. ELSE.
LS_NODE-ISFOLDER = ABAP_FALSE. ENDIF.
LS_NODE-NODE_KEY = LS_TAB-NODID. LS_NODE-RELATKEY = LS_TAB-UPNOD.
* ls_node-n_image = '@5B@'. * ls_node-exp_image = '@5B@'. APPEND LS_NODE TO CT_NODE. CLEAR:LS_NODE.
*<---构建节点信息表--->
LS_ITEM-ITEM_NAME = 'NODID'. LS_ITEM-NODE_KEY = LS_TAB-NODID.
LS_ITEM-CLASS = 2.\ \ * ls_item-editable = 'X'.
* modify by tianhaiguang on 20130422.
* ls_item-text = ls_tab-nodid && '-' && ls_tab-ndtxt. IF LS_TAB-BANKA IS INITIAL.
CONCATENATE LS_TAB-NODID LS_TAB-NDTXT INTO LS_ITEM-TEXT SEPARATED BY SPACE. ELSE.
LS_ITEM-TEXT = LS_TAB-NDTXT . ENDIF.
* end modify.
COLLECT LS_ITEM INTO CT_ITEM. CLEAR:LS_ITEM.
IF LS_TAB-BCJNR IS INITIAL. CLEAR:LS_TAB-ZJLB,LS_TAB-KHHT. ENDIF.
PERFORM FRM_ADD_DATA USING LS_TAB CHANGING CT_NODE CT_ITEM .
ENDLOOP.
ENDFORM. \
*&---------------------------------------------------------------------*
*& Form FRM_COLLECT_NODE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_EV_REGCT text * <--P_IT_TAB text
*----------------------------------------------------------------------*
FORM FRM_COLLECT_NODE USING P_NODE TYPE ZFIUPNOD CHANGING P_TAB TYPE TT_ZFIT1011 . DATA:LS_TAB TYPE TY_ZFIT1011 .
READ TABLE P_TAB WITH KEY NODID = P_NODE INTO LS_TAB. IF SY-SUBRC = 0. IF GV_FLAG = 'X' .
CLEAR:LS_TAB-NXTND, LS_TAB-UPNOD . ENDIF.
IF LS_TAB-BUKRS IS NOT INITIAL. R_BUKRS-SIGN = 'I' . R_BUKRS-OPTION = 'EQ' . R_BUKRS-LOW = LS_TAB-BUKRS . APPEND R_BUKRS . CLEAR R_BUKRS . ENDIF.
CLEAR GS_TAB .
MOVE-CORRESPONDING LS_TAB TO GS_TAB . APPEND GS_TAB TO GT_TAB .
IF GV_FLAG = 'X' AND LS_TAB-NXTND IS INITIAL . GV_FLAG = '' . ELSE.
* 下一个同级节点
PERFORM FRM_COLLECT_NODE USING LS_TAB-NXTND CHANGING P_TAB . ENDIF.
* 下一级节点
PERFORM FRM_COLLECT_NODE USING LS_TAB-DWNOD CHANGING P_TAB . ENDIF.
ENDFORM. \
*&-------------------------------------------------------------------
--*
*& Form FRM_SUBROUTINES
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text * <-- p2 text
*----------------------------------------------------------------------*
FORM FRM_SUBROUTINES . PERFORM FRM_DATA_GET . PERFORM FRM_DATA_PROCESS .
ENDFORM. \
*&---------------------------------------------------------------------*
*& Form FRM_DATA_GET
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text * <-- p2 text
*----------------------------------------------------------------------*
FORM FRM_DATA_GET .
DATA:LV_DATE TYPE SY-DATUM . DATA:LV_TABIX TYPE SY-TABIX .
REFRESH: GT_TCJ_POSITIONS ,GT_TCJ_DOCUMENTS,GT_TCJ_TRANSACTIONS,GT_TCJ_TRANS_NAMES,GT_BNKA .
* 确定日期
IF S_BUDAT-HIGH IS NOT INITIAL. LV_DATE = S_BUDAT-HIGH . ELSE.
LV_DATE = S_BUDAT-LOW . ENDIF.
IF GT_T001[] IS NOT INITIAL .
SELECT * INTO CORRESPONDING FIELDS OF TABLE GT_TCJ_DOCUMENTS FROM TCJ_DOCUMENTS AS A
INNER JOIN T012K AS
B ON B~BCJNR = A~CAJO_NUMBER AND A~COMP_CODE = B~BUKRS
FOR ALL ENTRIES IN GT_T001
WHERE A~COMP_CODE IN S_BUKRS
AND A~COMP_CODE = GT_T001-BUKRS
AND A~POSTING_DATE <= LV_DATE
* AND a~posting_date IN s_budat
* AND ( a~document_status = 'P'
* OR a~document_status = 'R' ).
AND A~DOCUMENT_STATUS = 'S'.
* AND B~FUNAC IN S_FUNAC
* AND b~hbkid IN s_hbkid. ELSE.
SELECT * INTO CORRESPONDING FIELDS OF TABLE GT_TCJ_DOCUMENTS FROM TCJ_DOCUMENTS AS A
INNER JOIN T012K AS B ON B~BCJNR = A~CAJO_NUMBER AND A~COMP_CODE = B~BUKRS
WHERE A~COMP_CODE IN S_BUKRS
AND A~POSTING_DATE <= LV_DATE
* AND a~posting_date IN s_budat
AND A~DOCUMENT_STATUS = 'S'.
* AND ( a~document_status = 'P'
* OR a~document_status = 'R' ).
* AND B~FUNAC IN S_FUNAC
* AND b~hbkid IN s_hbkid. ENDIF.
IF GT_TCJ_DOCUMENTS[] IS NOT INITIAL .
* SELECT * INTO CORRESPONDING FIELDS OF TABLE gt_tcj_positions FROM tcj_positions \现金日记帐凭证项目
* FOR ALL ENTRIES IN gt_tcj_documents
* WHERE comp_code = gt_tcj_documents-comp_code
* AND cajo_number = gt_tcj_documents-cajo_number
* AND fisc_year = gt_tcj_documents-fisc_year
* AND posting_number = gt_tcj_documents-posting_number
* AND ( transact_type = 'E' OR transact_type = 'R' ).
*-------------代码优化---------------------------------------------------------------------------------------
SELECT * INTO CORRESPONDING FIELDS OF TABLE GT_TCJ_POSITIONS FROM TCJ_POSITIONS \现金日记帐凭证项目
WHERE COMP_CODE IN R_BUKRS
* AND posting_date IN s_budat
AND POSTING_DATE <= LV_DATE
AND ( TRANSACT_TYPE = 'E' OR TRANSACT_TYPE = 'R' ).
IF GT_TCJ_POSITIONS[] IS NOT INITIAL .
* 排除BUKRS(公司代码)=SH01、CJBELNR(Cash Journal Document Number)=A016
的数据*
* LOOP AT gt_tcj_positions WHERE comp_code = 'SH01' . * lv_tabix = sy-tabix .
* IF gt_tcj_positions-posting_number(4) = 'A016'. * DELETE gt_tcj_positions INDEX lv_tabix . * CONTINUE. * ENDIF.
** READ TABLE gt_tcj_documents TRANSPORTING NO FIELDS WITH KEY comp_code = gt_tcj_positions-comp_code \优化
** cajo_number = gt_tcj_positions-cajo_number
**