批量下载SAP SE11表结构字段列表完整源代码分享
REPORT ZDZ020 NO STANDARD PAGE HEADING.
TABLES: DD02L.
CLASS LCL_APPLICATION DEFINITION DEFERRED.
DATA: GW_SHOW TYPE LVC_S_FCAT,
GT_SHOW TYPE LVC_T_FCAT.
DATA: GW_FACT TYPE LVC_S_FCAT,
GT_FACT TYPE LVC_T_FCAT.
DATA: GV_REPID LIKE SY-REPID,
GV_MAX TYPE I VALUE 100.
DATA: GV_SAVE TYPE C VALUE 'A',
GW_DISVARIANT TYPE DISVARIANT.
DATA: GW_FIELDCAT TYPE LVC_S_FCAT,
GT_FIELDCAT TYPE LVC_T_FCAT.
DATA: GRID1 TYPE REF TO CL_GUI_ALV_GRID.
DATA: GW_LAYOUT TYPE LVC_S_LAYO,
GT_EXCLUDE TYPE UI_FUNCTIONS,
GW_TOOLBAR TYPE STB_BUTTON.
DATA: GW_ROW TYPE LVC_S_ROW,
GT_ROW TYPE LVC_T_ROW,
GW_ROID TYPE LVC_S_ROID,
GT_ROID TYPE LVC_T_ROID.
CLASS LCL_APPLICATION DEFINITION.
PUBLIC SECTION.
CLASS-METHODS:
M_HANDLE_TOOLBAR
FOR EVENT TOOLBAR OF CL_GUI_ALV_GRID
IMPORTING E_OBJECT E_INTERACTIVE,
M_DOUBLE_CLICK
FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID
IMPORTING E_ROW E_COLUMN ES_ROW_NO,
M_HOTSPOT_CLICK
FOR EVENT HOTSPOT_CLICK OF CL_GUI_ALV_GRID
IMPORTING E_ROW_ID E_COLUMN_ID ES_ROW_NO,
M_HANDLE_USER_COMMAND
FOR EVENT USER_COMMAND OF CL_GUI_ALV_GRID
IMPORTING E_UCOMM,
M_HANDLE_DATA_CHANGED
FOR EVENT DATA_CHANGED OF CL_GUI_ALV_GRID
IMPORTING ER_DATA_CHANGED
E_ONF4
E_ONF4_BEFORE
E_ONF4_AFTER
E_UCOMM.
ENDCLASS.
CLASS LCL_APPLICATION IMPLEMENTATION.
METHOD M_HANDLE_TOOLBAR.
* PERFORM F_HANDLE_TOOLBAR USING E_OBJECT->MT_TOOLBAR.
ENDMETHOD.
METHOD M_DOUBLE_CLICK.
PERFORM F_DOUBLE_CLICK USING GRID1 E_ROW E_COLUMN ES_ROW_NO.
ENDMETHOD.
METHOD M_HOTSPOT_CLICK.
ENDMETHOD.
METHOD M_HANDLE_USER_COMMAND.
PERFORM F_HANDLE_USER_COMMAND USING GRID1 E_UCOMM.
ENDMETHOD.
METHOD M_HANDLE_DATA_CHANGED.
ENDMETHOD.
ENDCLASS.
SELECTION-SCREEN:BEGIN OF BLOCK B101 WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS: S_TNAME FOR DD02L-TABNAME OBLIGATORY.
SELECTION-SCREEN END OF BLOCK B101.
SELECTION-SCREEN:BEGIN OF BLOCK B102 WITH FRAME TITLE TEXT-002.
PARAMETERS: P_R1 TYPE C RADIOBUTTON GROUP R1 DEFAULT 'X',
P_R2 TYPE C RADIOBUTTON GROUP R1.
SELECTION-SCREEN END OF BLOCK B102.
INITIALIZATION.
START-OF-SELECTION.
PERFORM FRM_GETDATA.
CALL SCREEN '9001'.
FORM FRM_GETDATA.
DATA: LV_BUFFER_ACTIVE,
LV_STRUCTURE_NAME TYPE DD02L-TABNAME,
LV_CLIENT_NEVER_DISPLAY TYPE SLIS_CHAR_1,
LV_BYPASSING_BUFFER TYPE CHAR01,
LV_INTERNAL_TABNAME TYPE DD02L-TABNAME.
DATA: LW_FIELDCAT TYPE LVC_S_FCAT,
LT_FIELDCAT TYPE LVC_T_FCAT.
DATA: LW_DD02L TYPE DD02L,
LT_DD02L TYPE DD02LTAB.
SELECT DD02L~TABNAME
DD02L~AS4LOCAL
DD02L~AS4VERS
DD02L~TABCLASS
DD02L~AS4USER
DD02L~AS4DATE
DD02L~AS4TIME
INTO CORRESPONDING FIELDS OF TABLE LT_DD02L
FROM DD02L
WHERE DD02L~TABNAME IN S_TNAME
AND DD02L~AS4LOCAL = 'A'.
SORT LT_DD02L BY TABNAME.
LV_CLIENT_NEVER_DISPLAY = 'X'.
LOOP AT LT_DD02L INTO LW_DD02L.
PERFORM BUILD_FIELDCAT1 USING LW_DD02L-TABNAME CHANGING LT_FIELDCAT.
APPEND LINES OF LT_FIELDCAT TO GT_SHOW.
ENDLOOP.
ENDFORM.
MODULE STATUS_9001 OUTPUT.
SET TITLEBAR 'TITLEBAR' WITH '显示字段列表 LVC_FIELDCATALOG_MERGE'.
SET PF-STATUS 'STATUS'.
PERFORM FRM_CREATE_OO_ALV.
ENDMODULE.
MODULE USER_COMMAND_9001 INPUT.
CASE SY-UCOMM.
WHEN '&F03' OR '&F15' OR '&F12' OR 'EXIT' OR 'BACK'.
LEAVE TO SCREEN 0.
WHEN OTHERS.
ENDCASE.
ENDMODULE.
FORM FRM_CREATE_OO_ALV.
IF GRID1 IS INITIAL.
GW_LAYOUT-SEL_MODE = 'A'.
GW_LAYOUT-CWIDTH_OPT = 'X'.
GW_LAYOUT-ZEBRA = 'X'.
PERFORM FRM_CREATE_ALV USING CL_GUI_CUSTOM_CONTAINER=>SCREEN0 CHANGING GRID1.
CLEAR: GW_DISVARIANT.
GW_DISVARIANT-REPORT = SY-REPID.
"CREATE OBJECT G_APPLICATION.
SET HANDLER LCL_APPLICATION=>M_HANDLE_TOOLBAR FOR GRID1.
"SET HANDLER LCL_APPLICATION=>M_HOTSPOT_CLICK FOR GRID1.
SET HANDLER LCL_APPLICATION=>M_DOUBLE_CLICK FOR GRID1.
SET HANDLER LCL_APPLICATION=>M_HANDLE_USER_COMMAND FOR GRID1.
"SET HANDLER LCL_APPLICATION=>M_HANDLE_DATA_CHANGED FOR GRID1.
PERFORM BUILD_FIELDCAT1 USING 'LVC_S_FCAT' CHANGING GT_FIELDCAT.
IF P_R1 = 'X'.
LOOP AT GT_FIELDCAT INTO GW_FIELDCAT.
CASE GW_FIELDCAT-FIELDNAME.
WHEN 'COL_POS' OR
'FIELDNAME' OR
* 'TABNAME' OR
'CONVEXIT' OR
'DATATYPE' OR
'INTTYPE' OR
'INTLEN' OR
'REPTEXT' OR
'DOMNAME' OR
* 'REF_FIELD' OR
'REF_TABLE' OR
'DD_OUTLEN' OR
'DECIMALS' OR
'SCRTEXT_L' OR
'SCRTEXT_M' OR
'SCRTEXT_S'.
WHEN OTHERS.
GW_FIELDCAT-NO_OUT = 'X'.
ENDCASE.
MODIFY GT_FIELDCAT FROM GW_FIELDCAT.
ENDLOOP.
ENDIF.
"PERFORM BUILD_FIELDCAT2 CHANGING GT_FIELDCAT.
PERFORM EXCLUDE_TB_FUNCTIONS CHANGING GT_EXCLUDE.
PERFORM FRM_SHOW_ALV USING GRID1
''
GW_DISVARIANT
'U'
GW_LAYOUT
GT_EXCLUDE
GT_SHOW
GT_FIELDCAT.
ENDIF.
ENDFORM.
FORM F_HANDLE_USER_COMMAND USING LO_GRID TYPE REF TO CL_GUI_ALV_GRID
E_UCOMM TYPE SY-UCOMM.
DATA: LV_TABIX TYPE I.
PERFORM FRM_GET_SELECTED_ROWS USING LO_GRID CHANGING GT_ROW GT_ROID.
IF GT_ROID IS INITIAL.
MESSAGE '请先选定行' TYPE 'I'.
EXIT.
ENDIF.
CASE E_UCOMM.
WHEN 'ZIMPORT'.
WHEN OTHERS.
ENDCASE.
ENDFORM.
FORM F_DOUBLE_CLICK USING LO_GRID TYPE REF TO CL_GUI_ALV_GRID
E_ROW TYPE LVC_S_ROW
E_COLUMN TYPE LVC_S_COL
ES_ROW_NO TYPE LVC_S_ROID.
CLEAR: GW_SHOW.
READ TABLE GT_SHOW INTO GW_SHOW INDEX ES_ROW_NO-ROW_ID.
CASE E_COLUMN-FIELDNAME.
WHEN 'REF_TABLE'.
SET PARAMETER ID: 'DTB' FIELD GW_SHOW-REF_TABLE.
CALL TRANSACTION 'SE11' AND SKIP FIRST SCREEN.
WHEN OTHERS.
ENDCASE.
ENDFORM.
FORM FRM_CREATE_ALV USING LO_PARENT TYPE REF TO CL_GUI_CONTAINER
CHANGING LO_GRID TYPE REF TO CL_GUI_ALV_GRID.
DATA: LV_SHELLSTYLE TYPE I,
LV_LIFETIME TYPE I,
"LO_PARENT TYPE REF TO CL_GUI_CONTAINER,
LV_APPL_EVENTS TYPE CHAR01,
LO_PARENTDBG TYPE REF TO CL_GUI_CONTAINER,
LO_APPLOGPARENT TYPE REF TO CL_GUI_CONTAINER,
LO_GRAPHICSPARENT TYPE REF TO CL_GUI_CONTAINER,
LV_NAME TYPE STRING,
LV_FCAT_COMPLETE TYPE SAP_BOOL.
CREATE OBJECT LO_GRID
EXPORTING
I_SHELLSTYLE = LV_SHELLSTYLE
I_LIFETIME = LV_LIFETIME
I_PARENT = LO_PARENT
I_APPL_EVENTS = LV_APPL_EVENTS
I_PARENTDBG = LO_PARENTDBG
I_APPLOGPARENT = LO_APPLOGPARENT
I_GRAPHICSPARENT = LO_GRAPHICSPARENT
I_NAME = LV_NAME
I_FCAT_COMPLETE = LV_FCAT_COMPLETE
EXCEPTIONS
ERROR_CNTL_CREATE = 1
ERROR_CNTL_INIT = 2
ERROR_CNTL_LINK = 3
ERROR_DP_CREATE = 4
OTHERS = 5.
ENDFORM.
FORM FRM_GET_SELECTED_ROWS USING LO_GRID TYPE REF TO CL_GUI_ALV_GRID
CHANGING LT_ROW TYPE LVC_T_ROW
LT_ROID TYPE LVC_T_ROID.
CALL METHOD LO_GRID->GET_SELECTED_ROWS
IMPORTING
ET_INDEX_ROWS = LT_ROW
ET_ROW_NO = LT_ROID.
ENDFORM.
FORM ADD_BUTTON USING LT_BUTTON TYPE TTB_BUTTON
LV_FUNCTION TYPE UI_FUNC
LV_ICON TYPE ICONNAME
LV_QUICKINFO " TYPE ICONQUICK
LV_BUTN_TYPE TYPE TB_BTYPE
LV_DISABLED TYPE CHAR01
LV_TEXT " TYPE TEXT40
LV_CHECKED TYPE CHAR01.
DATA: LV_ID LIKE ICON-ID.
SELECT SINGLE ICON~ID
INTO LV_ID
FROM ICON
WHERE ICON~NAME = LV_ICON.
CLEAR: GW_TOOLBAR.
GW_TOOLBAR-FUNCTION = LV_FUNCTION.
GW_TOOLBAR-ICON = LV_ID.
GW_TOOLBAR-QUICKINFO = LV_QUICKINFO.
GW_TOOLBAR-BUTN_TYPE = LV_BUTN_TYPE.
GW_TOOLBAR-DISABLED = LV_DISABLED.
GW_TOOLBAR-TEXT = LV_TEXT.
GW_TOOLBAR-CHECKED = LV_CHECKED.
APPEND GW_TOOLBAR TO LT_BUTTON.
ENDFORM.
FORM EXCLUDE_TB_FUNCTIONS CHANGING LT_EXCLUDE TYPE UI_FUNCTIONS.
APPEND CL_GUI_ALV_GRID=>MC_FC_CHECK TO LT_EXCLUDE.
APPEND CL_GUI_ALV_GRID=>MC_FC_LOC_APPEND_ROW TO LT_EXCLUDE.
APPEND CL_GUI_ALV_GRID=>MC_FC_LOC_COPY TO LT_EXCLUDE.
APPEND CL_GUI_ALV_GRID=>MC_FC_LOC_COPY_ROW TO LT_EXCLUDE.
APPEND CL_GUI_ALV_GRID=>MC_FC_LOC_CUT TO LT_EXCLUDE.
APPEND CL_GUI_ALV_GRID=>MC_FC_LOC_DELETE_ROW TO LT_EXCLUDE.
APPEND CL_GUI_ALV_GRID=>MC_FC_LOC_INSERT_ROW TO LT_EXCLUDE.
APPEND CL_GUI_ALV_GRID=>MC_FC_LOC_MOVE_ROW TO LT_EXCLUDE.
APPEND CL_GUI_ALV_GRID=>MC_FC_LOC_PASTE TO LT_EXCLUDE.
APPEND CL_GUI_ALV_GRID=>MC_FC_LOC_PASTE_NEW_ROW TO LT_EXCLUDE.
APPEND CL_GUI_ALV_GRID=>MC_FC_LOC_UNDO TO LT_EXCLUDE.
APPEND CL_GUI_ALV_GRID=>MC_FC_LOC_UNDO TO LT_EXCLUDE.
APPEND CL_GUI_ALV_GRID=>MC_FC_REFRESH TO LT_EXCLUDE.
"APPEND CL_GUI_ALV_GRID=>MC_FC_SORT_ASC TO LT_EXCLUDE.
"APPEND CL_GUI_ALV_GRID=>MC_FC_SORT_DSC TO LT_EXCLUDE.
APPEND CL_GUI_ALV_GRID=>MC_FC_PRINT TO LT_EXCLUDE.
ENDFORM.
FORM F_HANDLE_TOOLBAR USING LT_BUTTON TYPE TTB_BUTTON.
PERFORM ADD_BUTTON USING LT_BUTTON '' '' '' 3 '' '' ''.
PERFORM ADD_BUTTON USING LT_BUTTON 'ZIMPORT' 'ICON_IMPORT' '导入' 0 '' '导入' ''.
ENDFORM.
FORM FRM_SHOW_ALV USING LO_GRID TYPE REF TO CL_GUI_ALV_GRID
LV_BUFFER_ACTIVE TYPE ANY
LW_VARIANT TYPE DISVARIANT
LV_SAVE TYPE CHAR01
LW_LAYOUT TYPE LVC_S_LAYO
LT_TOOLBAR_EXCLUDING TYPE UI_FUNCTIONS
LT_TABLE TYPE STANDARD TABLE
LT_FIELDCATALOG TYPE LVC_T_FCAT.
DATA:
"LV_BUFFER_ACTIVE TYPE C,
LV_BYPASSING_BUFFER TYPE CHAR01,
LV_CONSISTENCY_CHECK TYPE CHAR1,
LV_STRUCTURE_NAME TYPE DD02L-TABNAME,
"LW_VARIANT TYPE DISVARIANT,
"LV_SAVE TYPE CHAR01,
LV_DEFAULT TYPE CHAR01,
"LW_LAYOUT TYPE LVC_S_LAYO,
LW_PRINT TYPE LVC_S_PRNT,
LT_SPECIAL_GROUPS TYPE LVC_T_SGRP,
"LT_TOOLBAR_EXCLUDING TYPE UI_FUNCTIONS,
LT_HYPERLINK TYPE LVC_T_HYPE,
LT_ALV_GRAPHICS TYPE DTC_T_TC,
LT_EXCEPT_QINFO TYPE LVC_T_QINF,
LO_SALV_ADAPTER TYPE REF TO IF_SALV_ADAPTER,
"LT_FIELDCATALOG TYPE LVC_T_FCAT,
LT_SORT TYPE LVC_T_SORT,
LT_FILTER TYPE LVC_T_FILT.
LV_DEFAULT = 'X'.
CALL METHOD LO_GRID->SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING
I_BUFFER_ACTIVE = LV_BUFFER_ACTIVE
I_BYPASSING_BUFFER = LV_BYPASSING_BUFFER
I_CONSISTENCY_CHECK = LV_CONSISTENCY_CHECK
* I_STRUCTURE_NAME = LV_STRUCTURE_NAME
IS_VARIANT = LW_VARIANT
I_SAVE = LV_SAVE
I_DEFAULT = LV_DEFAULT
IS_LAYOUT = LW_LAYOUT
IS_PRINT = LW_PRINT
IT_SPECIAL_GROUPS = LT_SPECIAL_GROUPS
IT_TOOLBAR_EXCLUDING = LT_TOOLBAR_EXCLUDING
IT_HYPERLINK = LT_HYPERLINK
IT_ALV_GRAPHICS = LT_ALV_GRAPHICS
IT_EXCEPT_QINFO = LT_EXCEPT_QINFO
IR_SALV_ADAPTER = LO_SALV_ADAPTER
CHANGING
IT_OUTTAB = LT_TABLE
IT_FIELDCATALOG = LT_FIELDCATALOG
IT_SORT = LT_SORT
IT_FILTER = LT_FILTER
EXCEPTIONS
INVALID_PARAMETER_COMBINATION = 1
PROGRAM_ERROR = 2
TOO_MANY_LINES = 3
OTHERS = 4.
"PERFORM FRM_REFRESH_ALV USING LO_GRID.
ENDFORM.
FORM FRM_REFRESH_ALV USING LO_GRID TYPE REF TO CL_GUI_ALV_GRID.
DATA: LW_STABLE TYPE LVC_S_STBL.
LW_STABLE-ROW = 'X'.
LW_STABLE-COL = 'X'.
CALL METHOD LO_GRID->SET_FRONTEND_LAYOUT
EXPORTING
IS_LAYOUT = GW_LAYOUT.
CALL METHOD LO_GRID->REFRESH_TABLE_DISPLAY
EXPORTING
IS_STABLE = LW_STABLE
I_SOFT_REFRESH = 'X'
EXCEPTIONS
FINISHED = 1
OTHERS = 2.
ENDFORM.
FORM BUILD_FIELDCAT1 USING LV_STRUCTURE_NAME TYPE DD02L-TABNAME
CHANGING LT_FIELDCAT TYPE LVC_T_FCAT.
DATA: LV_BUFFER_ACTIVE,
LV_CLIENT_NEVER_DISPLAY TYPE SLIS_CHAR_1,
LV_BYPASSING_BUFFER TYPE CHAR01,
LV_INTERNAL_TABNAME TYPE DD02L-TABNAME.
LV_CLIENT_NEVER_DISPLAY = 'X'.
REFRESH: LT_FIELDCAT.
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
I_BUFFER_ACTIVE = LV_BUFFER_ACTIVE
I_STRUCTURE_NAME = LV_STRUCTURE_NAME
I_CLIENT_NEVER_DISPLAY = LV_CLIENT_NEVER_DISPLAY
I_BYPASSING_BUFFER = LV_BYPASSING_BUFFER
I_INTERNAL_TABNAME = LV_INTERNAL_TABNAME
CHANGING
CT_FIELDCAT = LT_FIELDCAT
EXCEPTIONS
INCONSISTENT_INTERFACE = 1
PROGRAM_ERROR = 2
OTHERS = 3.
ENDFORM.
FORM BUILD_FIELDCAT2 CHANGING LT_FIELDCAT TYPE LVC_T_FCAT.
DATA: LW_FCAT TYPE LVC_S_FCAT.
PERFORM FRM_ADD_FIELD USING LT_FIELDCAT 'TBNAM' '表格类型' 'DD40L' 'TYPENAME' '' ''.
PERFORM FRM_ADD_FIELD USING LT_FIELDCAT 'TNAME' '表名' 'DD03L' 'TABNAME' '' ''.
PERFORM FRM_ADD_FIELD USING LT_FIELDCAT 'FNAME' '字段名' 'DD03L' 'FIELDNAME' '' ''.
PERFORM FRM_ADD_FIELD USING LT_FIELDCAT 'RNAME' '数据元素' 'DD03L' 'ROLLNAME' '' ''.
PERFORM FRM_ADD_FIELD USING LT_FIELDCAT 'ITYPE' 'ABAP数据类型' 'DD03L' 'INTTYPE' '' ''.
PERFORM FRM_ADD_FIELD USING LT_FIELDCAT 'ILEN' '内部长度' 'DD03L' 'INTLEN' '' ''.
PERFORM FRM_ADD_FIELD USING LT_FIELDCAT 'DTYPE' 'ABAP字典数据类型' 'DD03L' 'DATATYPE' '' ''.
PERFORM FRM_ADD_FIELD USING LT_FIELDCAT 'DLEN' '长度(字符数)' 'DD03L' 'LENG' '' ''.
PERFORM FRM_ADD_FIELD USING LT_FIELDCAT 'DTEXT' '短文本' 'DD40T' 'DDTEXT' '' ''.
"PERFORM FRM_ADD_FIELD USING LT_FIELDCAT 'NAME2' '账簿描述' 'IDCN_GA_COMMONINFO' 'B_DESC' '' ''.
ENDFORM.
FORM FRM_ADD_FIELD USING LT_FIELDCAT TYPE LVC_T_FCAT
LV_FIELDNAME TYPE LVC_FNAME
LV_TEXTL TYPE SCRTEXT_L
LV_TABLE TYPE LVC_RTNAME
LV_FIELD TYPE LVC_RFNAME
LV_ZERO TYPE NO_ZERO
LV_EDIT TYPE LVC_EDIT.
DATA: LW_FCAT TYPE LVC_S_FCAT.
LW_FCAT-FIELDNAME = LV_FIELDNAME.
LW_FCAT-SCRTEXT_L = LV_TEXTL.
LW_FCAT-REF_TABLE = LV_TABLE.
LW_FCAT-REF_FIELD = LV_FIELD.
LW_FCAT-NO_ZERO = LV_ZERO.
LW_FCAT-EDIT = LV_EDIT.
LW_FCAT-COLDDICTXT = 'L'.
APPEND LW_FCAT TO LT_FIELDCAT.
ENDFORM.