首页 > 应用开发 > IT综合 > abap_alv 示例程序(二)
*&---------------------------------------------------------------------*
*& 包括 ZFIR025DATA
*&---------------------------------------------------------------------*
INCLUDE
TYPE-POOLS:SLIS.
TABLES:SKAT,SVAL,T001W,T001,T001L,ZTM110.
TABLES:FAGLFLEXT,BSIS,BSAS.
DATA:IT_SVAL LIKE TABLE OF SVAL WITH HEADER LINE.
DATA:WA_SVAL TYPE SVAL.
* 数据定义区域--------------------------------------------------------------------
FIELD-SYMBOLS
FIELD-SYMBOLS
*DATA:BEGIN OF IT_MZ_INDEX OCCURS 10,"XX科目分类
* G_WERKS TYPE WERKS_D,
* END OF IT_MZ_INDEX.
*&-------------------------------------------------------------------------------
DATA:BUTXT LIKE T001-BUTXT. "公司信息.
DATA:"G_BUKRS TYPE BUKRS,
"G_WERKS TYPE WERKS_D,
"G_LGORT LIKE T001L-LGORT,
F_X TYPE I.
DATA: BEGIN OF IT_BUKRS OCCURS 0,
BUKRS LIKE T001-BUKRS,
END OF IT_BUKRS.
DATA: BEGIN OF IT_GSBER OCCURS 0, "业务范围
GSBER LIKE TGSB-GSBER,
END OF IT_GSBER.
DATA:BEGIN OF IT_OPTION_BUKRS OCCURS 100,
SIGN TYPE C,
OPTION(2) TYPE C,
LOW(4) TYPE C,
HIGH(4) TYPE C,
END OF IT_OPTION_BUKRS,
IT_OPTION_WERKS LIKE TABLE OF IT_OPTION_BUKRS
WITH HEADER LINE.
DATA: BEGIN OF IT_DATA OCCURS 0,"右边ALV主数据
SAKNR LIKE SKAT-SAKNR,"科目
XSAKNR LIKE SKAT-SAKNR,"科目
QC TYPE HSLVT12,"期初余额
LDR TYPE HSLVT12,"本期借方
LCR TYPE HSLVT12,"本期货方
LYDR TYPE HSLVT12,"本年借方
LYCR TYPE HSLVT12,"本年贷方
LSUM TYPE HSLVT12,"期末结余
TXT50 LIKE SKAT-TXT50,
CURR1 TYPE FAGL_CURR1,"参照字段
END OF IT_DATA,
IT_SAKNR_TOP LIKE TABLE OF
IT_DATA WITH HEADER LINE,
IT_SAKNR_DETAIL LIKE TABLE OF
IT_DATA WITH HEADER LINE,
IT_SAKNR_DETAILX LIKE TABLE OF
IT_DATA WITH HEADER LINE,
IT_FAGLFLEXT LIKE TABLE OF FAGLFLEXT
WITH HEADER LINE.
DATA: IT_INSERT LIKE TABLE OF ZTM110
WITH HEADER LINE,
IT_UPDATE LIKE TABLE OF ZTM110
WITH HEADER LINE.
DATA:BEGIN OF IT_WERKS OCCURS 1000,
WERKS LIKE T001W-WERKS,"工厂
NAME1 LIKE T001W-NAME1,
END OF IT_WERKS.
DATA:BEGIN OF IT_TABX OCCURS 1000,
SAKNR LIKE SKAT-SAKNR,"科目
TXT50 LIKE SKAT-TXT50,"中文描述
END OF IT_TABX,"---------------------------------以下固定数据定义区域
IT_T179T LIKE TABLE OF IT_TABX " 库存点
WITH HEADER LINE.
DATA:IT_TAB2 LIKE TABLE OF IT_TABX " IT_TAB2左边ALV数据
WITH HEADER LINE,
IT_TAB1 LIKE TABLE OF IT_DATA " IT_TAB1右边ALV数据
WITH HEADER LINE,
IT_LEFT_ALV LIKE TABLE OF IT_TAB2 " 左边ALV数据填充源
WITH HEADER LINE,
IT_LEFT LIKE TABLE OF IT_TAB2,
IT_RIGHT_ALV LIKE TABLE OF IT_TAB1 " 右边ALV数据填充源
WITH HEADER LINE,
IT_RIGHT_DELETE LIKE TABLE OF IT_TAB1
WITH HEADER LINE,
IT_RALV_0200 LIKE TABLE OF IT_TAB1 " 右边ALV数据填充源"SCREEN:0200"
WITH HEADER LINE,
IT_S0100_BOOT LIKE TABLE OF IT_TAB1 " 右边ALV数据填充源"SCREEN:0100,BOOT"
WITH HEADER LINE.
* 架构
DATA: GT_HEADER TYPE TABLE OF SLIS_LISTHEADER"头文件定义,固定.
WITH HEADER LINE,
GT_FIELDCAT_LVC TYPE LVC_T_FCAT
WITH HEADER LINE,
GR_FIELDCAT_LVC TYPE LVC_T_FCAT
WITH HEADER LINE,
GX_FIELDCAT_LVC TYPE LVC_T_FCAT
WITH HEADER LINE,
GT_SORT_GRID TYPE LVC_T_SORT
WITH HEADER LINE,
GT_ROW_TABLE TYPE LVC_T_ROW
WITH HEADER LINE. "行选择数据
* 固定格式
DATA: CONTROLS_CREATED,
DRAGDROP_TREE TYPE REF TO CL_DRAGDROP, "树拖动
DRAGDROP_ALV TYPE REF TO CL_DRAGDROP, "ALV拖动
FLG_NEW,
GRID TYPE REF TO CL_GUI_ALV_GRID, "ALVOO
GRID_DETAIL TYPE REF TO CL_GUI_ALV_GRID, "ALVOO
GS_LAYOUT_ALV TYPE LVC_S_LAYO, "ALV布局
GS_TOOLBAR TYPE STB_BUTTON, "工具栏按钮
G_CUSTOM_CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER, "ALV容器
G_CUSTOM_CONTAINER_D TYPE REF TO CL_GUI_CUSTOM_CONTAINER, "ALV容器
G_CONTAINER_OBJECT TYPE REF TO
CL_GUI_DOCKING_CONTAINER,
G_DROPEFFECT TYPE I,
G_HANDLE_TREE TYPE I,
G_HANDLE_ALV TYPE I,
G_HIERARCHY_HEADER TYPE TREEV_HHDR, "树控制:层次结构表头的属性
G_REPID LIKE SY-REPID,
OK_CODE LIKE SY-UCOMM,
SAVE_OK_CODE LIKE SY-UCOMM,
SELECTED VALUE 'X',
TREE1 TYPE REF TO CL_GUI_ALV_TREE. "树
* 常量定义
CONSTANTS: FCODE_BACK LIKE SY-UCOMM VALUE 'BACK',"返回
FCODE_DISP LIKE SY-UCOMM VALUE 'DISP',"工具栏上的自定按钮
FCODE_END LIKE SY-UCOMM VALUE 'END', "
FCODE_ENTR LIKE SY-UCOMM VALUE 'ENTR',"确定
FCODE_ESC LIKE SY-UCOMM VALUE 'ESC', "取消
FCODE_PLANE LIKE SY-UCOMM VALUE 'FLIGHT',"工具栏上的自定按钮
FCODE_INSERT LIKE SY-UCOMM VALUE 'INSERT_LINE',"插入新行数据
FCODE_DELETE LIKE SY-UCOMM VALUE 'DELETE_LINE'."删除行数据
************************************************************************
* *
* ZFIR010 调用数据定义 *
* *
************************************************************************
DATA: BEGIN OF IT_FAGLFLEXT2 OCCURS 100,
DRCRK TYPE FAGLFLEXT-DRCRK,
HSLVT TYPE FAGLFLEXT-HSLVT,
HSL01 TYPE FAGLFLEXT-HSL01,
HSL02 TYPE FAGLFLEXT-HSL02,
HSL03 TYPE FAGLFLEXT-HSL03,
HSL04 TYPE FAGLFLEXT-HSL04,
HSL05 TYPE FAGLFLEXT-HSL05,
HSL06 TYPE FAGLFLEXT-HSL06,
HSL07 TYPE FAGLFLEXT-HSL07,
HSL08 TYPE FAGLFLEXT-HSL08,
HSL09 TYPE FAGLFLEXT-HSL09,
HSL10 TYPE FAGLFLEXT-HSL10,
HSL11 TYPE FAGLFLEXT-HSL11,
HSL12 TYPE FAGLFLEXT-HSL12,
HSL13 TYPE FAGLFLEXT-HSL13,
HSL14 TYPE FAGLFLEXT-HSL14,
HSL15 TYPE FAGLFLEXT-HSL15,
HSL16 TYPE FAGLFLEXT-HSL16,
END OF IT_FAGLFLEXT2.
DATA: BM_HSLVT TYPE FAGLFLEXT-HSLVT, "上期余额
CM_HSLVT TYPE FAGLFLEXT-HSLVT, "本期合计
CMS_HSLVT TYPE FAGLFLEXT-HSLVT, "本期借方合计
CMH_HSLVT TYPE FAGLFLEXT-HSLVT, "本期贷方合计
CY_HSLVT TYPE FAGLFLEXT-HSLVT, "本年累计
CYS_HSLVT TYPE FAGLFLEXT-HSLVT, "本年借方累计
CYH_HSLVT TYPE FAGLFLEXT-HSLVT. "本年贷方累计
DATA: BEGIN OF IT_BSIS OCCURS 1000,
MONAT TYPE BSIS-MONAT,
GSBER TYPE BSIS-GSBER,
BUDAT TYPE BSIS-BUDAT,
BELNR TYPE BSIS-BELNR,
BUZEI TYPE BSIS-BUZEI,
SHKZG TYPE BSIS-SHKZG,
DMBTR TYPE BSIS-DMBTR,
SGTXT TYPE BSIS-SGTXT,
* GSBER TYPE BSIS-GSBER,
GTEXT LIKE TGSBT-GTEXT,
XNEGP TYPE BSIS-XNEGP,
END OF IT_BSIS.
DATA: BEGIN OF SHOW_DATA OCCURS 1000,
BUDAT TYPE BSIS-BUDAT,
BELNR TYPE BSIS-BELNR,
GSBER TYPE BSIS-GSBER,
GTEXT LIKE TGSBT-GTEXT,
SGTXT TYPE BSIS-SGTXT,
SDMBTR TYPE BSIS-DMBTR,
HDMBTR TYPE BSIS-DMBTR,
SHKZG(4) TYPE C,
YE TYPE FAGLFLEXT-HSL16,
END OF SHOW_DATA.
DATA HKONT_TXT TYPE STRING.
DATA: EXIT_FLAG(1) TYPE C,
S_MONAT LIKE TABLE OF IT_OPTION_BUKRS
WITH HEADER LINE.
DATA:BEGIN OF IT_TGSBT OCCURS 1000,
GSBER LIKE TGSBT-GSBER,
GTEXT LIKE TGSBT-GTEXT,
END OF IT_TGSBT.
DATA:G_DOCKING TYPE REF TO CL_GUI_DOCKING_CONTAINER,
G_SPLITER TYPE REF TO CL_GUI_SPLITTER_CONTAINER,
G_CONTAINER TYPE REF TO CL_GUI_CONTAINER.
DATA: GRID0300 TYPE REF TO CL_GUI_ALV_GRID, "ALVOO
GR_FIELDCAT_LVC0300 TYPE LVC_T_FCAT
WITH HEADER LINE.
DATA: LS_LAYOUT TYPE SLIS_LAYOUT_ALV.
*&---------------------------------------------------------------------*
*& 包括 ZFIR025CLASS
*&---------------------------------------------------------------------*
*1------------------event receiver for ALV grid
CLASS CL_EVENT_RECEIVER DEFINITION.
PUBLIC SECTION.
DATA: UCOMM TYPE SY-UCOMM.
DATA: SELFIELD TYPE SLIS_SELFIELD.
* toolbar
* 工具栏
METHODS HANDLE_TOOLBAR_SET
FOR EVENT TOOLBAR OF CL_GUI_ALV_GRID
IMPORTING E_OBJECT E_INTERACTIVE.
* user command
* 命令
METHODS HANDLE_USER_COMMAND
FOR EVENT USER_COMMAND OF CL_GUI_ALV_GRID
IMPORTING E_UCOMM.
* double click
* 双击
METHODS HANDLE_DOUBLE_CLICK
FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID
IMPORTING E_ROW E_COLUMN.
* context menue
* 下拉列表
METHODS HANDLE_CONTEXT_MENU
FOR EVENT CONTEXT_MENU_REQUEST OF CL_GUI_ALV_GRID
IMPORTING E_OBJECT.
METHODS HANDLE_ONDROP
FOR EVENT ONDROP OF CL_GUI_ALV_GRID
IMPORTING E_ROW
E_COLUMN
E_DRAGDROPOBJ.
PRIVATE SECTION.
ENDCLASS. "CL_EVENT_RECEIVER DEFINITION
*---------------------------------------------------------------------*
* CLASS CL_EVENT_RECEIVER IMPLEMENTATION
*---------------------------------------------------------------------*
CLASS CL_EVENT_RECEIVER IMPLEMENTATION.
* handle user_command
* 命令
METHOD HANDLE_USER_COMMAND.
CASE E_UCOMM. "code:disp,FLIGHT
WHEN FCODE_DISP.
PERFORM DISPLAY_DETAIL."code:disp
WHEN FCODE_PLANE. "code:FLIGHT
PERFORM DISPLAY_SAPLANE.
WHEN FCODE_INSERT."插入新行数据
* PERFORM INSERT_LINE USING G_BUKRS G_WERKS G_LGORT '' ''.
WHEN FCODE_DELETE."删除行数据
* PERFORM DELETE_LINE.
WHEN OTHERS.
ENDCASE.
ENDMETHOD. "HANDLE_USER_COMMAND
* handle double_click
* 双击进入显示<右边双击事件>
METHOD HANDLE_DOUBLE_CLICK.
PERFORM DISPLAY_SAPLANE.
ENDMETHOD. "HANDLE_DOUBLE_CLICK
* handle toolbar
METHOD HANDLE_TOOLBAR_SET.
* create own Menubuttons and ToolbarButtons
* append a separator to normal toolbar
DO 40 TIMES.
DELETE E_OBJECT->MT_TOOLBAR INDEX SY-INDEX.
ENDDO.
* 创建工具栏
CLEAR GS_TOOLBAR. "工具按钮
MOVE 3 TO GS_TOOLBAR-BUTN_TYPE. "具栏按钮类型
APPEND GS_TOOLBAR TO E_OBJECT->MT_TOOLBAR.
* append detail button
* 向工具栏中加入数据(按钮)
CLEAR GS_TOOLBAR.
MOVE FCODE_DISP TO GS_TOOLBAR-FUNCTION. "'CODE'
MOVE ICON_DETAIL TO GS_TOOLBAR-ICON.
MOVE TEXT-005 TO GS_TOOLBAR-QUICKINFO.
MOVE ' ' TO GS_TOOLBAR-DISABLED.
APPEND GS_TOOLBAR TO E_OBJECT->MT_TOOLBAR.
* append a separator to normal toolbar
*
CLEAR GS_TOOLBAR.
MOVE 3 TO GS_TOOLBAR-BUTN_TYPE.
APPEND GS_TOOLBAR TO E_OBJECT->MT_TOOLBAR.
* append new button
CLEAR GS_TOOLBAR.
MOVE FCODE_PLANE TO GS_TOOLBAR-FUNCTION.
MOVE ICON_OVERVIEW TO GS_TOOLBAR-ICON.
MOVE TEXT-002 TO GS_TOOLBAR-QUICKINFO.
MOVE ' ' TO GS_TOOLBAR-DISABLED.
APPEND GS_TOOLBAR TO E_OBJECT->MT_TOOLBAR.
CLEAR GS_TOOLBAR. "工具按钮
MOVE 3 TO GS_TOOLBAR-BUTN_TYPE. "BUTN_TYPE工具栏按钮类型
APPEND GS_TOOLBAR TO E_OBJECT->MT_TOOLBAR.
CLEAR GS_TOOLBAR.
MOVE FCODE_INSERT TO GS_TOOLBAR-FUNCTION. "FCODE_DISP 'CODE'
MOVE ICON_INSERT_ROW TO GS_TOOLBAR-ICON.
MOVE '插入新行' TO GS_TOOLBAR-QUICKINFO.
MOVE ' ' TO GS_TOOLBAR-DISABLED.
APPEND GS_TOOLBAR TO E_OBJECT->MT_TOOLBAR.
CLEAR GS_TOOLBAR.
MOVE 3 TO GS_TOOLBAR-BUTN_TYPE.
APPEND GS_TOOLBAR TO E_OBJECT->MT_TOOLBAR.
CLEAR GS_TOOLBAR.
MOVE FCODE_DELETE TO GS_TOOLBAR-FUNCTION.
MOVE ICON_DELETE_ROW TO GS_TOOLBAR-ICON.
MOVE '删除行数据' TO GS_TOOLBAR-QUICKINFO.
MOVE ' ' TO GS_TOOLBAR-DISABLED.
APPEND GS_TOOLBAR TO E_OBJECT->MT_TOOLBAR.
ENDMETHOD. "HANDLE_TOOLBAR_SET
* context menue
METHOD HANDLE_CONTEXT_MENU.
CALL METHOD E_OBJECT->ADD_FUNCTION
EXPORTING
FCODE = FCODE_DISP
TEXT = TEXT-005.
CALL METHOD E_OBJECT->ADD_FUNCTION
EXPORTING
FCODE = FCODE_PLANE
TEXT = TEXT-002.
ENDMETHOD. "HANDLE_CONTEXT_MENU
* Drag & Drop
METHOD HANDLE_ONDROP.
*
ENDMETHOD. "HANDLE_ONDROP
ENDCLASS. "CL_EVENT_RECEIVER IMPLEMENTATION
DATA: EVENT_RECEIVER TYPE REF TO CL_EVENT_RECEIVER.
*2------------------event receiver for tree
*树事件
CLASS CL_TREE_EVENT_RECEIVER DEFINITION.
PUBLIC SECTION.
* double click item
METHODS HANDLE_DOUBLE_CLICK
FOR EVENT NODE_DOUBLE_CLICK OF CL_GUI_ALV_TREE
IMPORTING NODE_KEY."节点传值
* Drag
METHODS HANDLE_ON_DRAG
FOR EVENT ON_DRAG OF CL_GUI_ALV_TREE
IMPORTING DRAG_DROP_OBJECT
FIELDNAME
NODE_KEY.
PRIVATE SECTION.
ENDCLASS. "CL_TREE_EVENT_RECEIVER DEFINITION
*---------------------------------------------------------------------*
* CLASS CL_TREE_EVENT_RECEIVER IMPLEMENTATION
* 左边值传到右边
*---------------------------------------------------------------------*
CLASS CL_TREE_EVENT_RECEIVER IMPLEMENTATION.
* 左双击事件
METHOD HANDLE_DOUBLE_CLICK.
CHECK NOT NODE_KEY IS INITIAL.
PERFORM DISPLAY_FLIGHTS USING NODE_KEY. "节点传递
ENDMETHOD. "HANDLE_DOUBLE_CLICK
* 左边拖放事件
METHOD HANDLE_ON_DRAG.
CHECK NOT NODE_KEY IS INITIAL.
PERFORM DISPLAY_FLIGHTS USING NODE_KEY."节点传递
CALL METHOD CL_GUI_CFW=>SET_NEW_OK_CODE
EXPORTING
NEW_CODE = FCODE_ENTR.
ENDMETHOD. "HANDLE_ON_DRAG
ENDCLASS. "CL_TREE_EVENT_RECEIVER IMPLEMENTATION
*
DATA: TREE_EVENT_RECEIVER TYPE REF TO CL_TREE_EVENT_RECEIVER.
*3.GRID_DETAIL EVENT
CLASS CL_EVENT_RECEIVER_DETAIL DEFINITION.
PUBLIC SECTION.
* 双击
METHODS HANDLE_DOUBLE_CLICK
FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID
IMPORTING E_ROW E_COLUMN.
PRIVATE SECTION.
ENDCLASS. "CL_TREE_EVENT_RECEIVER DEFINITION
*---------------------------------------------------------------------*
* CLASS CL_TREE_EVENT_RECEIVER IMPLEMENTATION
* 左边值传到右边
*---------------------------------------------------------------------*
CLASS CL_EVENT_RECEIVER_DETAIL IMPLEMENTATION.
* 左双击事件(DOWN)
METHOD HANDLE_DOUBLE_CLICK.
PERFORM DISPLAY_SAPLANE_DETAIL.
ENDMETHOD.
ENDCLASS. "CL_TREE_EVENT_RECEIVER IMPLEMENTATION
*
DATA: EVENT_GRID_DETAIL TYPE REF TO CL_EVENT_RECEIVER_DETAIL.
*-------------------------------------------------------ZFIR010
*4.GRID_DETAIL EVENT
CLASS CL_EVENT_0300 DEFINITION.
PUBLIC SECTION.
* 双击
METHODS HANDLE_DOUBLE_CLICK
FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID
IMPORTING E_ROW E_COLUMN.
PRIVATE SECTION.
ENDCLASS. "CL_TREE_EVENT_RECEIVER DEFINITION
*---------------------------------------------------------------------*
* CLASS CL_TREE_EVENT_RECEIVER IMPLEMENTATION
* 左边值传到右边
*---------------------------------------------------------------------*
CLASS CL_EVENT_0300 IMPLEMENTATION.
* 左双击事件(DOWN)
METHOD HANDLE_DOUBLE_CLICK.
PERFORM DISPLAY_0300.
ENDMETHOD.
ENDCLASS. "CL_TREE_EVENT_RECEIVER IMPLEMENTATION
*
DATA: EVENT_RECEIVER0300 TYPE REF TO CL_EVENT_0300.
*&---------------------------------------------------------------------*
*& 包括 ZFIR025FORMS
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form FRM_0100_GO
*&---------------------------------------------------------------------*
* 调用对话框
*----------------------------------------------------------------------*
FORM FRM_0100_GO .
**载入数据
* REFRESH:IT_SVAL.CLEAR:IT_SVAL.
* WA_SVAL-TABNAME = 'T001'.
* WA_SVAL-FIELDNAME = 'BUKRS'.
* WA_SVAL-VALUE = '1000'.
* APPEND WA_SVAL TO IT_SVAL.
*
* WA_SVAL-TABNAME = 'T001W'.
* WA_SVAL-FIELDNAME = 'WERKS'.
* WA_SVAL-VALUE = '1100'.
* APPEND WA_SVAL TO IT_SVAL.
**对话框
* CALL FUNCTION 'POPUP_GET_VALUES'
* EXPORTING
* NO_VALUE_CHECK = 'X'
* POPUP_TITLE = '选择项目'
* START_COLUMN = '10'
* START_ROW = '5'
** IMPORTING
** RETURNCODE =
* TABLES
* FIELDS = IT_SVAL
* EXCEPTIONS
* ERROR_IN_FIELDS = 1
* OTHERS = 2
* .
* IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
* ENDIF.
*业务界面
* CALL SCREEN 0200.
ENDFORM. " FRM_0100_GO
*&---------------------------------------------------------------------*
*& Form DISPLAY_FLIGHTS 左边与右边的关系
*&---------------------------------------------------------------------*
FORM DISPLAY_FLIGHTS USING P_NODE_KEY TYPE LVC_NKEY.
DATA: LS_SPFLI LIKE IT_TABX,"参照
LT_CHILDREN TYPE LVC_T_NKEY WITH HEADER LINE,
IT_SCR0200_LEFT LIKE TABLE OF IT_RIGHT_ALV
WITH HEADER LINE.
REFRESH IT_RIGHT_ALV.
CALL METHOD TREE1->GET_OUTTAB_LINE
EXPORTING
I_NODE_KEY = P_NODE_KEY
IMPORTING
E_OUTTAB_LINE = LS_SPFLI.
* 如果是全国
IF P_NODE_KEY EQ 1.
REFRESH IT_RIGHT_ALV.
CLEAR IT_RIGHT_ALV.
IT_RIGHT_ALV[] = IT_SAKNR_TOP[].
ELSE.
* 选择三级父节点
IF LS_SPFLI IS INITIAL.
CALL METHOD TREE1->GET_CHILDREN
EXPORTING
I_NODE_KEY = P_NODE_KEY
IMPORTING
ET_CHILDREN = LT_CHILDREN[].
CHECK NOT LT_CHILDREN[] IS INITIAL.
REFRESH IT_RIGHT_ALV.
CLEAR IT_RIGHT_ALV.
LOOP AT LT_CHILDREN.
CALL METHOD TREE1->GET_OUTTAB_LINE
EXPORTING
I_NODE_KEY = LT_CHILDREN
IMPORTING
E_OUTTAB_LINE = LS_SPFLI.
* 1------------------------------------------
LOOP AT IT_SAKNR_TOP WHERE SAKNR = LS_SPFLI-SAKNR.
MOVE-CORRESPONDING IT_SAKNR_TOP TO IT_RIGHT_ALV.
APPEND IT_RIGHT_ALV.
ENDLOOP.
* 1------------------------------------------
ENDLOOP.
ELSE.
* 2------------------------------------------
* FILL DATA TO IT_RIGHT_ALV
REFRESH IT_RIGHT_ALV.
CLEAR IT_RIGHT_ALV.
LOOP AT IT_SAKNR_TOP WHERE SAKNR = LS_SPFLI-SAKNR.
MOVE-CORRESPONDING IT_SAKNR_TOP TO IT_RIGHT_ALV.
APPEND IT_RIGHT_ALV.
ENDLOOP.
* 2------------------------------------------
ENDIF."三级节点
ENDIF."选择全国
* 把数据传给新增加行
IF IT_RIGHT_ALV[] IS INITIAL.
* 如果没有数据则添加一行
MESSAGE I007 WITH '没有找到数据!'.
ELSE.
FLG_NEW = SELECTED.
ENDIF.
ENDFORM. " DISPLAY_FLIGHTS
*&---------------------------------------------------------------------*
*& Form DISPLAY_DETAIL
*& 用户命令(显示明细)
*&---------------------------------------------------------------------*
FORM DISPLAY_DETAIL.
* IT_RIGHT_ALV待显示的数据集,IT_RALV_0200内容
CLEAR IT_RALV_0200."SCREEN:200,DATA
CALL METHOD GRID->GET_SELECTED_ROWS
IMPORTING
ET_INDEX_ROWS = GT_ROW_TABLE[].
* 显示一条的明细
READ TABLE GT_ROW_TABLE INDEX 1.
IF SY-SUBRC = 0.
READ TABLE IT_RIGHT_ALV INDEX GT_ROW_TABLE-INDEX.
IF SY-SUBRC = 0.
MOVE-CORRESPONDING IT_RIGHT_ALV TO IT_RALV_0200.
* Detail screen 200
CALL SCREEN 200 STARTING AT 10 10.
ENDIF.
ELSE.
MESSAGE I000(0K) WITH TEXT-054 SPACE SPACE SPACE.
ENDIF.
ENDFORM. " DISPLAY_DETAIL
*&---------------------------------------------------------------------*
*& Form DISPLAY_SAPLANE
*& SCREEN 0100,BOOT显示
*&---------------------------------------------------------------------*
FORM DISPLAY_SAPLANE.
DATA:IT_RIGHT_WA LIKE LINE OF IT_RIGHT_ALV.
DATA:IT_RIGHT_TEMP LIKE TABLE OF IT_RIGHT_ALV
WITH HEADER LINE.
CLEAR IT_S0100_BOOT."屏幕
CLEAR GT_ROW_TABLE[].
CALL METHOD GRID->GET_SELECTED_ROWS
IMPORTING
ET_INDEX_ROWS = GT_ROW_TABLE[].
CALL METHOD CL_GUI_CFW=>FLUSH.
* 显示行
READ TABLE GT_ROW_TABLE INDEX 1.
IF SY-SUBRC = 0.
* READ TABLE GT_SFLIGHT INDEX GT_ROW_TABLE-INDEX.
READ TABLE IT_RIGHT_ALV INTO IT_RIGHT_WA INDEX GT_ROW_TABLE-INDEX.
* IT_RIGHT_TEMP[] = IT_RIGHT_ALV[].
* CLEAR:IT_RIGHT_ALV.REFRESH:IT_RIGHT_ALV.
CLEAR:IT_RIGHT_DELETE.REFRESH:IT_RIGHT_DELETE.
LOOP AT IT_SAKNR_DETAIL WHERE SAKNR = IT_RIGHT_WA-SAKNR.
MOVE-CORRESPONDING IT_SAKNR_DETAIL TO IT_RIGHT_DELETE.
APPEND IT_RIGHT_DELETE.
ENDLOOP.
CALL METHOD GRID_DETAIL->REFRESH_TABLE_DISPLAY."ALV刷新
ELSE.
MESSAGE I007 WITH '你可以单击行头,然后显示与其相关的数据!'.
ENDIF.
ENDFORM. " DISPLAY_SAPLANE
FORM DISPLAY_SAPLANE_DETAIL.
DATA:IT_RIGHT_WA LIKE LINE OF IT_RIGHT_ALV.
DATA:IT_RIGHT_TEMP LIKE TABLE OF IT_RIGHT_ALV
WITH HEADER LINE,
ANSWER,
MONATL TYPE MONAT,
MONATH TYPE MONAT.
CLEAR IT_S0100_BOOT."屏幕
CLEAR GT_ROW_TABLE[].
CALL METHOD GRID_DETAIL->GET_SELECTED_ROWS
IMPORTING
ET_INDEX_ROWS = GT_ROW_TABLE[].
CALL METHOD CL_GUI_CFW=>FLUSH.
* 显示行
READ TABLE GT_ROW_TABLE INDEX 1.
IF SY-SUBRC = 0.
CALL FUNCTION 'POPUP_TO_DECIDE'
EXPORTING
* DEFAULTOPTION = '1'
TEXTLINE1 = '显示系统标准余额查询[FS10N模式]'
TEXTLINE2 = '显示科目发生额[会计分录模式]'
* TEXTLINE3 = ' '
TEXT_OPTION1 = '选择'
TEXT_OPTION2 = '选择'
* ICON_TEXT_OPTION1 = ' '
* ICON_TEXT_OPTION2 = ' '
TITEL = '选择显示内容'
START_COLUMN = 25
START_ROW = 6
CANCEL_DISPLAY = 'X'
IMPORTING
ANSWER = ANSWER.
CASE ANSWER.
WHEN '1'.
READ TABLE IT_RIGHT_DELETE INTO IT_RIGHT_WA INDEX GT_ROW_TABLE-INDEX.
SET PARAMETER ID 'SAK' FIELD IT_RIGHT_WA-XSAKNR.
SET PARAMETER ID 'BUK' FIELD S_BUKRS-LOW.
SET PARAMETER ID 'GJR' FIELD P_YEAR.
SET PARAMETER ID 'GSB' FIELD S_GSBER-LOW.
CALL TRANSACTION 'FS10N' AND SKIP FIRST SCREEN.
WHEN '2'.
READ TABLE IT_RIGHT_DELETE INTO IT_RIGHT_WA INDEX GT_ROW_TABLE-INDEX.
IF ( ( IT_RIGHT_WA-LDR IS INITIAL ) AND ( IT_RIGHT_WA-LCR IS INITIAL ) ).
MESSAGE I007 WITH '本期没发生,不会被允许查询明细'.
EXIT.
ENDIF.
CLEAR:S_MONAT[].
MONATL = P_RPMAX.
MONATH = P_RPMAX.
S_MONAT-SIGN = 'I'.
S_MONAT-OPTION = 'BT'.
S_MONAT-LOW = MONATL.
S_MONAT-HIGH = MONATH.
APPEND S_MONAT.
* SUBMIT ZFIR010 WITH S_BUKRS IN S_BUKRS
* WITH S_GSBER IN S_GSBER
* WITH P_YEAR = P_YEAR
* WITH S_MONTH IN S_MONAT
* WITH P_HKONT = IT_RIGHT_WA-XSAKNR.
CLEAR:SHOW_DATA.REFRESH:SHOW_DATA.
PERFORM ZFIR010_SUBMIT USING IT_RIGHT_WA-XSAKNR
S_MONAT.
CALL SCREEN 0300.
WHEN 'A'.
MESSAGE I007 WITH '没有选择!'.
WHEN OTHERS.
ENDCASE.
ELSE.
MESSAGE I007 WITH '无法调用:FS10N'.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form CREATE_FIELDCAT 标题填充(LEFT TREE)
*&---------------------------------------------------------------------*
FORM CREATE_FIELDCAT.
PERFORM FRM_FICO_GT_FIELDCAT_LVC.
ENDFORM. " CREATE_FIELDCAT
*&---------------------------------------------------------------------*
*& Form CREATE_HEADER [抬头文本]
*&---------------------------------------------------------------------*
FORM FRM_CREATE_HEADER.
CLEAR GT_HEADER.
GT_HEADER-TYP = 'S'.
GT_HEADER-KEY = '信息:'.
GT_HEADER-INFO = '月台主数据维护界面'.
APPEND GT_HEADER.
CLEAR GT_HEADER.
GT_HEADER-TYP = 'S'.
GT_HEADER-KEY = '会计年度'.
GT_HEADER-INFO = SY-DATUM+0(4).
APPEND GT_HEADER.
ENDFORM. " CREATE_HEADER
*&---------------------------------------------------------------------*
*& Form REGISTER_EVENTS
*&---------------------------------------------------------------------*
FORM REGISTER_EVENTS.
DATA: LT_EVENTS TYPE CNTL_SIMPLE_EVENTS,
L_EVENT TYPE CNTL_SIMPLE_EVENT.
* define the events which will be passed to the backend
CLEAR L_EVENT.
L_EVENT-EVENTID = CL_GUI_COLUMN_TREE=>EVENTID_NODE_DOUBLE_CLICK.
L_EVENT-APPL_EVENT = SELECTED.
APPEND L_EVENT TO LT_EVENTS.
CLEAR L_EVENT.
L_EVENT-EVENTID = CL_GUI_COLUMN_TREE=>EVENTID_EXPAND_NO_CHILDREN.
APPEND L_EVENT TO LT_EVENTS.
CLEAR L_EVENT.
L_EVENT-EVENTID = CL_GUI_COLUMN_TREE=>EVENTID_HEADER_CLICK.
APPEND L_EVENT TO LT_EVENTS.
CLEAR L_EVENT.
* register events
CALL METHOD TREE1->SET_REGISTERED_EVENTS
EXPORTING
EVENTS = LT_EVENTS
EXCEPTIONS
CNTL_ERROR = 1
CNTL_SYSTEM_ERROR = 2
ILLEGAL_EVENT_COMBINATION = 3.
IF SY-SUBRC <> 0.
MESSAGE X534(0K).
ENDIF.
ENDFORM. " REGISTER_EVENTS
*&---------------------------------------------------------------------*
*& Form init_dragdrop
*&---------------------------------------------------------------------*
FORM ZFICO_DRAGDROP.
* set allowed drop effect
G_DROPEFFECT = CL_DRAGDROP=>MOVE.
* Initialize drag & drop descriptions
* -> tree
CREATE OBJECT DRAGDROP_TREE.
CALL METHOD DRAGDROP_TREE->ADD
EXPORTING
FLAVOR = 'LINE'
DRAGSRC = SELECTED
DROPTARGET = ''
EFFECT = G_DROPEFFECT.
CALL METHOD DRAGDROP_TREE->GET_HANDLE
IMPORTING
HANDLE = G_HANDLE_TREE.
* -> ALV grid
CREATE OBJECT DRAGDROP_ALV.
CALL METHOD DRAGDROP_ALV->ADD
EXPORTING
FLAVOR = 'LINE'
DRAGSRC = ''
DROPTARGET = SELECTED
EFFECT = G_DROPEFFECT.
CALL METHOD DRAGDROP_ALV->GET_HANDLE
IMPORTING
HANDLE = G_HANDLE_ALV.
ENDFORM. " init_dragdrop
*&---------------------------------------------------------------------*
*& Form build_hierarchy_header
*&---------------------------------------------------------------------*
FORM FRM_BUILD_HIERARCHY_HEADER.
CLEAR G_HIERARCHY_HEADER.
G_HIERARCHY_HEADER-HEADING = '科 目'.
G_HIERARCHY_HEADER-TOOLTIP = '科 目'.
G_HIERARCHY_HEADER-WIDTH = 30.
G_HIERARCHY_HEADER-WIDTH_PIX = ''.
ENDFORM. " build_hierarchy_header
*&---------------------------------------------------------------------*
*& Form FRM_CREATE_HIERARCHY [层级的定义]
*&---------------------------------------------------------------------*
FORM FRM_CREATE_HIERARCHY.
DATA: L_CARRID_KEY TYPE LVC_NKEY,
VS_CARRID_KEY TYPE LVC_NKEY,
L_LAST_KEY TYPE LVC_NKEY,
FIRST_NODE_KEY TYPE LVC_NKEY,
VLT_ITEM_LAYOUT TYPE LVC_T_LAYI,"顶层LAYOUT
VLS_ITEM_LAYOUT TYPE LVC_S_LAYI,
VLS_NODE_LAYOUT TYPE LVC_S_LAYN,
VTEXT LIKE T179T-VTEXT,
VTEXT_LEN TYPE I,"产品描述长度
PRODH_LEN TYPE I,"产品节点长度
LGORT LIKE T001L-LGORT,"库存地点代码
WERKS LIKE T001W-WERKS."工厂
* 最顶层树
VLS_ITEM_LAYOUT-T_IMAGE = ''. "文件夹'@7T@'
VLS_ITEM_LAYOUT-FIELDNAME = TREE1->C_HIERARCHY_COLUMN_NAME.
APPEND VLS_ITEM_LAYOUT TO VLT_ITEM_LAYOUT.
VLS_N
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/8048153/viewspace-1041611/ ,如需转载,请注明出处,否则将追究法律责任。