ALV事例.docx
《ALV事例.docx》由会员分享,可在线阅读,更多相关《ALV事例.docx(16页珍藏版)》请在冰豆网上搜索。
ALV事例
AVL树型报表样式[@more@]
*&---------------------------------------------------------------------*
*&包括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:
BEGINOFIT_MZ_INDEXOCCURS10,"XX科目分类
*G_WERKSTYPEWERKS_D,
*ENDOFIT_MZ_INDEX.
*&-------------------------------------------------------------------------------
DATA:
BUTXT LIKE T001-BUTXT. "公司信息.
DATA:
"G_BUKRSTYPEBUKRS,
"G_WERKSTYPEWERKS_D,
"G_LGORTLIKET001L-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,
*GSBERTYPEBSIS-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------------------eventreceiverforALVgrid
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_OBJECTE_INTERACTIVE.
*usercommand
*命令
METHODS HANDLE_USER_COMMAND
FOR EVENT USER_COMMAND OF CL_GUI_ALV_GRID
IMPORTING E_UCOMM.
*doubleclick
*双击
METHODS HANDLE_DOUBLE_CLICK
FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID
IMPORTING E_ROWE_COLUMN.
*contextmenue
*下拉列表
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_RECEIVERDEFINITION
*---------------------------------------------------------------------*
*CLASSCL_EVENT_RECEIVERIMPLEMENTATION
*---------------------------------------------------------------------*
CLASS CL_EVENT_RECEIVER IMPLEMENTATION.
*handleuser_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."插入新行数据
*PERFORMINSERT_LINEUSINGG_BUKRSG_WERKSG_LGORT''''.
WHEN FCODE_DELETE."删除行数据
*PERFORMDELETE_LINE.
WHEN OTHERS.
ENDCASE.
ENDMETHOD. "HANDLE_USER_COMMAND
*handledouble_click
*双击进入显示<右边双击事件>
METHOD HANDLE_DOUBLE_CLICK.
PERFORM DISPLAY_SAPLANE.
ENDMETHOD. "HANDLE_DOUBLE_CLICK
*handletoolbar
METHOD HANDLE_TOOLBAR_SET.
*createownMenubuttonsandToolbarButtons
*appendaseparatortonormaltoolbar
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.
*appenddetailbutton
*向工具栏中加入数据(按钮)
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.
*appendaseparatortonormaltoolbar
*
CLEAR GS_TOOLBAR.
MOVE 3 TO GS_TOOLBAR-BUTN_TYPE.
APPEND GS_TOOLBAR TO E_OBJECT->MT_TOOLBAR.
*appendnewbutton
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
*contextmenue
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.