SAP ABAP 查找数据表程序
来源:互联网 发布:oppo手机数据自动关闭 编辑:程序博客网 时间:2024/05/05 13:49
REPORT Z_SEARCH_TABLENAME .
TABLES: DD02L, DD03L, DD02T, DD02V.
*&----------------------------------------------------
*& 屏幕输出
*&-----------------------------------------------------
SELECTION-SCREEN BEGIN OF BLOCK ioc01 WITH FRAME TITLE text-a01.
SELECT-OPTIONS:
TABNAME FOR DD03L-TABNAME,
S-NAME FOR DD03L-FIELDNAME,
TABCLASS FOR DD02V-TABCLASS DEFAULT 'TRANSP', "表类型
ROLLNAME FOR DD03L-ROLLNAME, "数据元素
DOMNAME FOR DD03L-DOMNAME, "域名
INTLEN FOR DD03L-INTLEN. "字段长度
SELECTION-SCREEN END OF BLOCK ioc01.
SELECTION-SCREEN BEGIN OF BLOCK ioc02 WITH FRAME TITLE text-a02.
PARAMETERS PO AS CHECKBOX DEFAULT 'X'.
PARAMETERS DDTEXT LIKE DD02T-DDTEXT.
SELECTION-SCREEN END OF BLOCK ioc02.
TYPE-POOLS: SLIS.
DATA: gt_fieldcat TYPE slis_t_fieldcat_alv, "存放ALV字段描述的表
g_repid LIKE sy-repid.
DATA: fieldcat TYPE slis_fieldcat_alv.
DATA: eventstab TYPE slis_t_event WITH HEADER LINE.
DATA: fieldlayout type slis_layout_alv.
TYPES: BEGIN OF RESULT,
TABNAME LIKE DD03L-TABNAME,
FIELDNAME LIKE DD03L-FIELDNAME,
TABCLASS LIKE DD02V-TABCLASS,
ROLLNAME LIKE DD03L-ROLLNAME,
DOMNAME LIKE DD03L-DOMNAME,
INTLEN LIKE DD03L-INTLEN,
DDTEXT LIKE DD02T-DDTEXT,
END OF RESULT.
DATA: WA TYPE RESULT,
ITAB TYPE RESULT OCCURS 0 WITH HEADER LINE.
DATA PM_TXT LIKE DD02T-DDTEXT.
*************************************************************************
AT SELECTION-SCREEN.
IF PO = 'X'.
IF DDTEXT = SPACE.
MESSAGE '模糊查询时,物料描述不能为空' type 'W'.
ENDIF.
ENDIF.
*************************************************************************
START-OF-SELECTION.
g_repid = sy-repid.
IF PO = 'X'.
MOVE DDTEXT TO PM_TXT.
CONCATENATE '%' PM_TXT '%' INTO PM_TXT.
SELECT DISTINCT a~TABNAME a~FIELDNAME b~TABCLASS a~ROLLNAME a~DOMNAME a~INTLEN c~DDTEXT
FROM DD03L AS a
INNER JOIN DD02V AS b
ON a~TABNAME = b~TABNAME
INNER JOIN DD02T AS c
ON b~TABNAME = c~TABNAME AND
b~DDTEXT = c~DDTEXT
INTO CORRESPONDING FIELDS of WA
WHERE a~TABNAME IN TABNAME AND
a~FIELDNAME IN S-NAME AND
b~TABCLASS IN TABCLASS AND
a~ROLLNAME IN ROLLNAME AND
a~DOMNAME IN DOMNAME AND
a~INTLEN IN INTLEN AND
c~DDTEXT LIKE PM_TXT
ORDER BY a~TABNAME DESCENDING.
APPEND WA TO ITAB.
CLEAR WA.
ENDSELECT.
IF SY-SUBRC <> 0.
MESSAGE '根据输入的信息找不到相关的数据表,请重新输入搜索条件!' type 'S'.
ENDIF.
ELSE.
SELECT DISTINCT a~TABNAME a~FIELDNAME b~TABCLASS a~ROLLNAME a~DOMNAME a~INTLEN c~DDTEXT
FROM DD03L AS a
INNER JOIN DD02V AS b
ON a~TABNAME = b~TABNAME
INNER JOIN DD02T AS c
ON b~TABNAME = c~TABNAME AND
b~DDTEXT = c~DDTEXT
INTO CORRESPONDING FIELDS of WA
WHERE a~TABNAME IN TABNAME AND
a~FIELDNAME IN S-NAME AND
b~TABCLASS IN TABCLASS AND
a~ROLLNAME IN ROLLNAME AND
a~DOMNAME IN DOMNAME AND
a~INTLEN IN INTLEN
ORDER BY a~TABNAME DESCENDING.
APPEND WA TO ITAB.
CLEAR WA.
ENDSELECT.
IF SY-SUBRC <> 0.
MESSAGE '根据输入的信息找不到相关的数据表,请重新输入搜索条件!' type 'S'.
ENDIF.
ENDIF.
DELETE ADJACENT DUPLICATES FROM ITAB COMPARING TABNAME.
PERFORM perpare_gt_fieldcatalog.
PERFORM perpare_layout using fieldlayout.
PERFORM fill_eventstab tables eventstab.
PERFORM display_list.
**************************************************************************************
FORM perpare_gt_fieldcatalog.
CLEAR fieldcat.
fieldcat-fieldname = 'TABNAME'.
fieldcat-reptext_ddic = '表名'.
fieldcat-key = 'X'.
APPEND fieldcat TO gt_fieldcat.
CLEAR fieldcat.
fieldcat-fieldname = 'FIELDNAME'.
fieldcat-reptext_ddic = '字段名'.
fieldcat-key = 'X'.
APPEND fieldcat TO gt_fieldcat.
CLEAR fieldcat.
fieldcat-fieldname = 'TABCLASS'.
fieldcat-reptext_ddic = '表类型'.
APPEND fieldcat TO gt_fieldcat.
CLEAR fieldcat.
fieldcat-fieldname = 'ROLLNAME'.
fieldcat-reptext_ddic = '字段元素'.
APPEND fieldcat TO gt_fieldcat.
CLEAR fieldcat.
fieldcat-fieldname = 'DOMNAME'.
fieldcat-reptext_ddic = '字段域名'.
APPEND fieldcat TO gt_fieldcat.
CLEAR fieldcat.
fieldcat-fieldname = 'INTLEN'.
fieldcat-reptext_ddic = '字段长度'.
APPEND fieldcat TO gt_fieldcat.
CLEAR fieldcat.
fieldcat-fieldname = 'DDTEXT'.
fieldcat-reptext_ddic = '字段描述'.
APPEND fieldcat TO gt_fieldcat.
ENDFORM. "perpare_gt_fieldcatalog
*&---------------------------------------------------------
*& 布局设置
*&----------------------------------------------------------
FORM perpare_layout using fieldlayout type slis_layout_alv.
fieldlayout-zebra = 'X'.
fieldlayout-colwidth_optimize = 'X'. "优化列宽设置
fieldlayout-no_vline = ' '.
fieldlayout-confirmation_prompt = ' '.
fieldlayout-no_colhead = ' '.
ENDFORM. "perpare_layout
*&----------------------------------------------------------------
*& 输出行项目
*&------------------------------------------------------------------
FORM display_list.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = g_repid
i_callback_user_command = 'USER_COMMAND'
is_layout = fieldlayout
it_fieldcat = gt_fieldcat
it_events = eventstab[]
TABLES
t_outtab = ITAB[].
ENDFORM. "display_list
*&---------------------------------------------------------------------*
*& Form fill_eventstab
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_EVENTSTAB text
*----------------------------------------------------------------------*
FORM fill_eventstab tables p_eventstab structure eventstab.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
i_list_type = 0
IMPORTING
et_events = p_eventstab[]
EXCEPTIONS
list-type_wrong = 1
others = 2.
ENDFORM. "fill_eventstab
*&--------------------------------------------------------------------------
*& double click events
*&---------------------------------------------------------------------------
FORM USER_COMMAND USING RF_UCOMM LIKE SY-UCOMM
RS TYPE SLIS_SELFIELD.
if rf_ucomm = '&IC1'.
CLEAR WA.
read table ITAB into WA index rs-tabindex.
if sy-subrc = 0.
set parameter id 'DTB' field WA-TABNAME.
* set parameter id 'DFD' field WA-FIELDNAME.
IF WA-TABNAME <> SPACE.
call transaction 'SE11' and skip first screen.
ELSE.
MESSAGE '不存在此数据信息!' type 'W'.
ENDIF.
endif.
clear WA.
endif.
clear rf_ucomm.
ENDFORM. "USER_COMMAND
- SAP ABAP 查找数据表程序
- SAP ABAP 查找增强程序
- sap abap 查找增强的程序
- SAP ABAP程序性能优化
- SAP ABAP程序性能优化
- SAP ABAP程序优化方法
- SAP ABAP程序性能优化
- SAP ABAP程序优化方法
- SAP-ABAP程序发送邮件
- SAP-ABAP程序发送邮件
- SAP-ABAP程序发送邮件
- abap如何查找SAP示例程序
- SAP ABAP上传下载报表程序
- SAP ABAP图标查找的方法
- ABAP查找用户出口程序
- abap查找增强的程序
- SAP ABAP程序性能优化 2
- sap abap 程序 中使用 FTP
- error: Error parsing XML: not well-formed (invalid token)
- Mac上逆向app步骤
- Android高手进阶——Adapter深入理解与优化
- MAPublisher9.5快速开始指南 第7章 导入GIS栅格数据
- 【BZOJ】【P1342】【Baltic2007】【Sound静音问题】【题解】【map】
- SAP ABAP 查找数据表程序
- Fedora 14下的samba
- BW: Delete Master Data时的注意事项
- 使用Eclipse Memory Analyzer进行内存泄漏分析三部曲
- SAP ABAP 查找增强程序
- linux不同机器下发布程序
- Linux下安装Memcached
- SAP ABAP 表头合并实例
- C语言宏定义技巧——多次包含头文件内容不同