DATA:GT_NODE_TAB TYPE TREEV_NTAB,
GT_ITEM_TAB TYPE STANDARD TABLE OF DEMO_ITEM, GT_ZFIT1011 TYPE TABLE OF ZFIT1011, GT_TAB TYPE TT_TAB , WT_TAB TYPE TT_TAB , GS_TAB TYPE TY_TAB, WS_TAB TYPE TY_TAB .
FIELD-SYMBOLS:
DATA:GT_TCJ_DOCUMENTS TYPE TCJ_DOCUMENTS OCCURS 0 WITH HEADER LINE, GT_TCJ_TRANSACTIONS TYPE TCJ_TRANSACTIONS OCCURS 0 WITH HEADER LINE ,
GT_TCJ_TRANS_NAMES TYPE TCJ_TRANS_NAMES OCCURS 0 WITH HEADER LINE ,
GT_BNKA TYPE BNKA OCCURS 0 WITH HEADER LINE .
*----------------------------------------------------------------------*
* ALV related
*-----------------------------------------------------------------------*
DATA: GT_SUB_FIELDCAT TYPE LVC_T_FCAT. DATA: GT_FIELDCAT TYPE LVC_T_FCAT, IT_FIELDCAT TYPE LVC_T_FCAT, IS_FIELDCAT TYPE LVC_S_FCAT,
IT_EVENTS TYPE SLIS_T_EVENT WITH HEADER LINE, IT_SUB_EVENTS TYPE SLIS_T_EVENT WITH HEADER LINE, GS_LAYOUT TYPE LVC_S_LAYO,
IT_SORT TYPE SLIS_T_SORTINFO_ALV, IT_PRINT TYPE SLIS_PRINT_ALV, G_GRID TYPE REF TO CL_GUI_ALV_GRID. DATA: G_REPID LIKE SY-REPID, GT_LAYOUT_ALV TYPE LVC_S_LAYO.
DATA: WA_SORT TYPE SLIS_SORTINFO_ALV, GT_SORT TYPE LVC_T_SORT, GS_T012K TYPE T012K.
DATA: LR_GRID TYPE REF TO CL_GUI_ALV_GRID.
DATA: G_LAYOUT TYPE SLIS_LAYOUT_ALV, TITLE TYPE LVC_TITLE, IVARIANT LIKE DISVARIANT.
DATA FNAME(20).
*--------------------------------------------------------------------*
* FIELD symbols
*--------------------------------------------------------------------*
FIELD-SYMBOLS:
FIELD-SYMBOLS:
*&---------------------------------------------------------------------*
*& 包含 ZFIR_1026_CLS
*&---------------------------------------------------------------------*
*----------------------------------------------------------------------*
* INCLUDE BCALV_TOOLBAR_EVENT_RECEIVER *
*----------------------------------------------------------------------*
CLASS LCL_EVENT_RECEIVER DEFINITION.
PUBLIC SECTION. METHODS:
CONSTRUCTOR IMPORTING HANDLE TYPE REF TO CL_GUI_COLUMN_TREE CB_NODE_DOUBLE_CLICK TYPE RS38L_FNAM,
HANDLE_ITEM_DOUBLE_CLICK FOR EVENT ITEM_DOUBLE_CLICK OF CL_GUI_COLUMN_TREE
IMPORTING NODE_KEY ITEM_NAME.
PRIVATE SECTION.
DATA: TREE_HANDLE TYPE REF TO CL_GUI_COLUMN_TREE. DATA: TREE_CB_NODE_DOUBLE_CLICK TYPE RS38L_FNAM.
ENDCLASS. \ *----------------------------------------------------------------------*
* CLASS LCL_EVENT_RECEIVER IMPLEMENTATION
*----------------------------------------------------------------------* *
*--------------------------------------------------------------------
--*
CLASS LCL_EVENT_RECEIVER IMPLEMENTATION . METHOD CONSTRUCTOR. TREE_HANDLE = HANDLE.
TREE_CB_NODE_DOUBLE_CLICK = CB_NODE_DOUBLE_CLICK. ENDMETHOD. \ METHOD HANDLE_ITEM_DOUBLE_CLICK. DATA:LV_NODID TYPE ZFINODID . DATA:LV_ITEM_NAME TYPE NAME1 .
DATA:LS_TCJ_POSITIONS LIKE LINE OF GT_TCJ_POSITIONS . DATA:LS_SUB_ALV LIKE LINE OF GT_SUB_ALV . DATA:LV_1 TYPE STRING , LV_2 TYPE STRING , LV_3 TYPE STRING , LV_4 TYPE STRING .
* BREAK AB_LUOFY.
CLEAR :LV_NODID,LV_ITEM_NAME. LV_NODID = NODE_KEY . LV_ITEM_NAME = ITEM_NAME .
READ TABLE GT_TAB WITH KEY NODID = LV_NODID TRANSPORTING NO FIELDS.
IF SY-SUBRC = 0.
CLEAR: GT_SUB_ALV ,GS_TAB. REFRESH:WT_TAB ,GT_SUB_ALV.
PERFORM FRM_GET_CLICK_DATA USING LV_NODID . \使用递归找寻下级数据
LOOP AT WT_TAB INTO GS_TAB .
LOOP AT GT_TCJ_POSITIONS INTO LS_TCJ_POSITIONS WHERE COMP_CODE = GS_TAB-BUKRS \公司代码
AND HBKID = GS_TAB-HBKID \银行CODE
AND CAJO_NUMBER = GS_TAB-BCJNR . \银行描述 IF GS_TAB-RCFLG = 'X'.
CHECK LS_TCJ_POSITIONS-NODID IS NOT INITIAL . ELSE.
CHECK LS_TCJ_POSITIONS-NODID IS INITIAL . ENDIF.
IF LV_ITEM_NAME = 'ZHJ' OR LV_ITEM_NAME = 'NODID'. \合计项不做限制
ELSE.
SPLIT LV_ITEM_NAME AT '_' INTO LV_1 LV_2 . \分割出资金类别,资金类别明细
SPLIT LS_TCJ_POSITIONS-CLASS AT '_' INTO LV_3 LV_4 . \
分割出资金类别,资金类别明细
CONDENSE:LV_1,LV_2,LV_3,LV_4 NO-GAPS . CHECK LV_1 = LV_3 . \检查出资金类别 IF LV_2 = 'XJ' . ELSE.
CHECK LV_2 = LV_4 . ENDIF. ENDIF.
GS_TAB-NODID = LS_TCJ_POSITIONS-NODID . \区域中心标识. MOVE-CORRESPONDING LS_TCJ_POSITIONS TO LS_SUB_ALV . APPEND LS_SUB_ALV TO GT_SUB_ALV . CLEAR LS_SUB_ALV. ENDLOOP. ENDLOOP.
SORT GT_SUB_ALV BY COMP_CODE CAJO_NUMBER FISC_YEAR POSTING_NUMBER POSITION_NUMBER.
DELETE ADJACENT DUPLICATES FROM GT_SUB_ALV COMPARING COMP_CODE CAJO_NUMBER FISC_YEAR POSTING_NUMBER POSITION_NUMBER.
IF GT_SUB_ALV[] IS NOT INITIAL. PERFORM FRM_SUB_FIELDCAT . PERFORM FRM_SUB_EVENTS . PERFORM FRM_SUB_ALV . ENDIF.
ENDIF.
ENDMETHOD. \ ENDCLASS. \ DATA:GO_APPLICATION TYPE REF TO LCL_EVENT_RECEIVER.
*----------------------------------------------------------------------*
* --> p1 参数:1 列 2 行 3 值
* <-- p2 作用:填充excel
*----------------------------------------------------------------------*
DEFINE HFILL-CELL. ITAB-COL = &1. ITAB-ROW = &2. IF &4 = 'X'.
IF &3 < 0 . CLEAR G_VALUE. G_VALUE = ABS( &3 ).
CONCATENATE '-' G_VALUE INTO G_VALUE . CONDENSE G_VALUE NO-GAPS . MOVE G_VALUE TO ITAB-VALUE. ELSE.
MOVE &3 TO ITAB-VALUE. ENDIF. ELSE.
MOVE &3 TO ITAB-VALUE. ENDIF.
APPEND ITAB. CLEAR ITAB. END-OF-DEFINITION.
*&---------------------------------------------------------------------*
*& 包含 ZFIR_1026_SEL
*&---------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK BLK1 WITH FRAME TITLE K1.
SELECT-OPTIONS: S_BUKRS FOR BKPF-BUKRS OBLIGATORY,
S_BUDAT FOR ISELLIST-BDATE DEFAULT SY-DATUM OBLIGATORY NO INTERVALS NO-EXTENSION.
SELECTION-SCREEN END OF BLOCK BLK1.
START-OF-SELECTION. REFRESH GT_T012K[]. EV_REGCT = 'GI' .
SELECT * INTO TABLE GT_ZFIT1011 FROM ZFIT1011 WHERE BUKRS IN S_BUKRS
OR NODID = 'GI'. IF S_BUKRS IS NOT INITIAL.
LOOP AT GT_ZFIT1011 ASSIGNING
IF GT_ZFIT1011[] IS INITIAL .
MESSAGE '请先维护资金ZFIT1011' TYPE 'S' DISPLAY LIKE 'E' . LEAVE LIST-PROCESSING .
层
次
维
护
表
: