ITPUB论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
更多
查看: 3553|回复: 13

SAP 查表程序(通过字段,元素,表名,描述)查表 [复制链接]

精华贴数
0
技术积分
357
社区积分
7
注册时间
2007-2-11
论坛徽章:
2
ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:442009新春纪念徽章
日期:2009-01-04 14:52:28
发表于 2008-5-16 14:40:41 |显示全部楼层
对于对SAP不是很熟悉的人来说,查表是件痛苦的事,对于ABAPER菜鸟来说更是痛苦,为些我写了一个查表程序,大多数情况下我是用它来找表的。

*&***************************************************************
*& Finding the table thru a field or field description , tables
*& description,Element,etc.
*& Creation Date: 2008-01-24
*& Created BY   : Michael Chow
*&****************************************************************
REPORT  ZKFTB.

PARAMETERS:  p_tb        LIKE DD02L-TABNAME,                           "Table Name
             p_tbTx      LIKE DD02T-DDTEXT,                            "Table Name
             p_fld       LIKE DD03L-FIELDNAME,                         "Field Name
             P_fldTx     LIKE DD04T-DDTEXT,
             p_cls       LIKE DD02L-TABCLASS DEFAULT 'TRANSP',         "Table category
             p_ROLL      LIKE DD03L-ROLLNAME,                          "Element
             P_value(80) TYPE C,                                       "Field Value
             p_lang      LIKE DD02T-DDLANGUAGE DEFAULT 'EN'.           "Language

TYPE-POOLS: SLIS.
DATA: WA_LINE TYPE SLIS_FIELDCAT_ALV.
DATA: IT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV .
DATA: WA_LAYOUT TYPE SLIS_LAYOUT_ALV.
DATA: IT_SORT TYPE SLIS_T_SORTINFO_ALV WITH HEADER LINE.


DATA:  BEGIN OF IT_Tab OCCURS 0,
            TABNAME     LIKE DD02L-TABNAME,
            TABCLASS    LIKE DD02L-TABCLASS,
            TABTEXT     LIKE DD02T-DDTEXT,
            FIELDNAME   LIKE DD03L-FIELDNAME,
            DATATYPE    LIKE DD03L-DATATYPE,
            ROLLNAME    LIKE DD04T-ROLLNAME,
            FILDTEXT    LIKE DD04T-DDTEXT,
            DEL_IND(1)  TYPE C.               "Deleted indicator.

DATA:       END OF IT_Tab.

DATA: g_command_form TYPE slis_formname VALUE 'USER_COMMAND',
      it_event TYPE slis_t_event,
      wa_event TYPE slis_alv_event,
      g_repid LIKE sy-repid.

INITIALIZATION.

g_repid = sy-repid.

START-OF-SELECTION.

PERFORM PERFORMSQL.
PERFORM ALV_FIELDS.
PERFORM Dispaly_ALV.

END-OF-SELECTION.

*e+ Delete reducing Informaton from Internal Table
FORM Clean_DATA.

*DATA: v_value TYPE REF TO DATA,
*      V_INDEX like sy-tabix.
*
*FIELD-SYMBOLS <FS> TYPE ANY.
*
*
*if ( p_value is not initial )
*  AND ( p_fld  is not initial )
*  AND LINES( IT_TAB ) > 0.
*  Loop at it_tab where Fieldname = p_fld.
*    V_INDEX = SY-TABIX.
*    if sy-subrc NE 0.
*      it_tab-del_ind = 'X'.
*      modify it_tab index v_index.
*    else.
*      ASSIGN it_tab-FIELDNAME TO <FS>.
*
*





ENDFORM.



FORM Dispaly_ALV.
DATA:
         report_name      LIKE sy-repid,
         alvlo_stb        TYPE slis_layout_alv.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      IT_FIELDCAT   = IT_FIELDCAT[]
      IS_LAYOUT     = WA_LAYOUT
      I_callback_program      = g_repid
      i_callback_user_command = g_command_form
      it_events = it_event
      IT_SORT       = IT_SORT[]
     TABLES
      T_OUTTAB      = IT_Tab
    EXCEPTIONS
      PROGRAM_ERROR = 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.

ENDFORM.

DEFINE APPEND_ALV_FIELD.
  CLEAR WA_LINE .
  WA_LINE-FIELDNAME = &1.
  WA_LINE-SELTEXT_L = &2.
  WA_LINE-SELTEXT_M = &2.
  WA_LINE-SELTEXT_S = &2.
  WA_LINE-CFIELDNAME = &3.
  WA_LINE-TECH   = &4.
  WA_LINE-QFIELDNAME = &5.
  WA_LINE-EDIT_MASK  = &6.
  WA_LINE-OUTPUTLEN  = &7.
  WA_LINE-DDICTXT = 'L'.
  APPEND WA_LINE TO IT_FIELDCAT.
END-OF-DEFINITION .

FORM ALV_FIELDS .
  CLEAR IT_FIELDCAT[].
  APPEND_ALV_FIELD 'TABNAME'   TEXT-H01 '' '' ''  '' 10.
  APPEND_ALV_FIELD 'TABCLASS'  TEXT-H02 '' '' ''  '' 10.
  APPEND_ALV_FIELD 'TABTEXT'   TEXT-H03 '' '' ''  '' 30.
  APPEND_ALV_FIELD 'FIELDNAME' TEXT-H04 '' '' ''  '' 15.
  APPEND_ALV_FIELD 'DATATYPE'  TEXT-H08 '' '' ''  '' 10.
  APPEND_ALV_FIELD 'ROLLNAME'  TEXT-H05 '' '' ''  '' 15.
  APPEND_ALV_FIELD 'FILDTEXT'  TEXT-H06 '' '' ''  '' 30.
*  APPEND_ALV_FIELD 'Language'  TEXT-H07 '' '' ''  '' 10.

ENDFORM.                    " ALV_FIELDS


FORM PERFORMSQL.

  DATA: SQLstr(72) TYPE c,
      itabSQL LIKE TABLE OF SQLstr,
      v_text(30) TYPE C.

CONCATENATE SPACE 't2~DDLANGUAGE = ''' p_lang  '''' INTO  SQLstr.
CONCATENATE SPACE 't4~DDLANGUAGE = ''' p_lang  '''' INTO  SQLstr.
APPEND  SQLstr TO  itabSQL.

IF ( p_tb IS NOT INITIAL ).
CONCATENATE SPACE 'AND t1~TABNAME = ''' p_tb  '''' INTO  SQLstr.
APPEND  SQLstr TO  itabSQL.
ENDIF.

IF ( p_tbtx is not initial  ).
clear v_text.
concatenate  p_tbtx '%' into v_text.
CONCATENATE SPACE 'AND t2~DDTEXT Like  ''' v_text  '''' INTO  SQLstr.
APPEND  SQLstr TO  itabSQL.
ENDIF.

IF ( p_fld is not initial ).
CONCATENATE SPACE 'AND t3~FIELDNAME = ''' p_fld '''' INTO  SQLstr.
APPEND  SQLstr TO  itabSQL.
ENDIF.

if ( p_fldtx is not initial ).
clear v_text.
concatenate  P_fldTx  '%' into v_text.
CONCATENATE SPACE 'AND t4~DDTEXT Like  ''' v_text  ''''  INTO  SQLstr.
APPEND  SQLstr TO  itabSQL.
ENDIF.

IF ( p_cls is not initial ).
CONCATENATE SPACE 'AND t1~TABCLASS = ''' p_cls '''' INTO  SQLstr.
APPEND  SQLstr TO  itabSQL.
ENDIF.

IF ( p_ROLL is not initial  ).
clear v_text.
concatenate  p_ROLL '%' into v_text.
CONCATENATE SPACE 'AND t3~ROLLNAME Like  ''' v_text  '''' INTO  SQLstr.
APPEND  SQLstr TO  itabSQL.
ENDIF.


SELECT DISTINCT T1~TABNAME t1~TABCLASS t2~DDTEXT AS TABTEXT
            T3~FIELDNAME t3~DATATYPE t3~ROLLNAME
            t4~DDTEXT as FILDTEXT
            INTO Corresponding fields of table it_tab
            FROM  DD02L AS t1
            INNER JOIN DD02T as t2
            ON t1~TABNAME = t2~TABNAME
            INNER JOIN DD03L AS t3
            ON t2~TABNAME = t3~TABNAME
            INNER JOIN DD04T as t4
            ON t3~ROLLNAME = t4~ROLLNAME
            AND t2~DDLANGUAGE = t4~DDLANGUAGE
            WHERE (itabSQL).

sort it_tab by tabname fieldname.


ENDFORM.

FORM user_command USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
CASE r_ucomm.
WHEN '&IC1'. "doubleclick
READ TABLE it_tab INDEX rs_selfield-tabindex.
IF sy-subrc = 0.
IF rs_selfield-fieldname EQ 'TABNAME' AND
  it_TAB-TABNAME IS NOT INITIAL.
SET PARAMETER ID 'DTB' FIELD it_TAB-TABNAME .
CALL TRANSACTION 'SE11' AND SKIP FIRST SCREEN.
CLEAR r_ucomm.
ENDIF.
ENDIF.
ENDCASE.

ENDFORM. "user_command
If God intended everybody to be the same,He'd have given me a lot of money!

注册会员

煙雨夕陽

精华贴数
0
技术积分
1583
社区积分
1410
注册时间
2007-8-6
论坛徽章:
20
授权会员
日期:2008-02-26 10:16:072009新春纪念徽章
日期:2009-01-04 14:52:282008北京奥运纪念徽章:铁人三项
日期:2008-07-21 10:12:032008北京奥运纪念徽章:柔道
日期:2008-06-25 11:21:312008北京奥运纪念徽章:篮球
日期:2008-06-13 11:08:482008北京奥运纪念徽章:田径
日期:2008-05-06 12:39:242008北京奥运纪念徽章:射箭
日期:2008-04-25 10:30:122008北京奥运纪念徽章:摔跤
日期:2008-04-24 10:00:202008北京奥运纪念徽章:拳击
日期:2008-04-24 10:00:062008北京奥运纪念徽章:曲棍球
日期:2008-04-22 12:45:34行业板块每日发贴之星
日期:2008-02-27 01:06:072010广州亚运会纪念徽章:三项全能
日期:2010-10-17 11:34:04
发表于 2008-5-16 16:24:38 |显示全部楼层
人不要错过两样东西,最后一班回家的车和一个深爱你的人

使用道具 举报

精华贴数
0
技术积分
37
社区积分
0
注册时间
2008-2-19
论坛徽章:
0
发表于 2008-5-16 16:24:58 |显示全部楼层
LZ强人!谢谢分享!

使用道具 举报

精华贴数
0
技术积分
2630
社区积分
348
注册时间
2007-8-1
论坛徽章:
14
授权会员
日期:2008-02-26 09:06:11ITPUB元老
日期:2010-10-04 14:18:26
发表于 2008-5-16 18:35:29 |显示全部楼层

使用道具 举报

注册会员

忧郁的蓝色

精华贴数
0
技术积分
2328
社区积分
169
注册时间
2008-3-5
论坛徽章:
5
授权会员
日期:2008-04-30 13:57:322008北京奥运纪念徽章:跳水
日期:2008-05-05 14:59:102008北京奥运纪念徽章:皮划艇静水
日期:2008-06-10 10:30:11ERP板块每日发贴之星
日期:2008-07-02 01:02:10生肖徽章2007版:羊
日期:2008-12-22 23:12:00
发表于 2008-5-16 22:39:00 |显示全部楼层
up
SAP & ENGLISH

使用道具 举报

精华贴数
0
技术积分
187
社区积分
148
注册时间
2007-10-12
论坛徽章:
3
2010广州亚运会纪念徽章:柔道
日期:2010-09-13 12:01:04ITPUB9周年纪念徽章
日期:2010-10-08 09:31:212010广州亚运会纪念徽章:拳击
日期:2010-11-29 11:16:48
发表于 2008-5-17 14:21:54 |显示全部楼层

使用道具 举报

精华贴数
0
技术积分
9364
社区积分
4111
注册时间
2004-9-30
论坛徽章:
98
ITPUB十周年纪念徽章
日期:2011-09-27 16:30:47咸鸭蛋
日期:2011-11-01 19:01:16ITPUB十周年纪念徽章
日期:2011-11-01 16:20:28鲜花蛋
日期:2012-01-16 20:46:03灰彻蛋
日期:2012-01-18 23:11:112012新春纪念徽章
日期:2012-01-04 11:50:44紫蛋头
日期:2011-11-11 16:01:07萤石
日期:2009-09-07 15:00:02海蓝宝石
日期:2009-09-07 14:00:02蓝锆石
日期:2009-08-31 15:00:02祖母绿
日期:2009-08-20 15:00:02紫水晶
日期:2009-08-19 16:00:03
发表于 2008-5-19 08:28:37 |显示全部楼层
se84足矣

使用道具 举报

注册会员

Instructor

精华贴数
0
技术积分
3432
社区积分
30
注册时间
2003-8-5
论坛徽章:
11
2009新春纪念徽章
日期:2009-01-04 14:52:28ITPUB元老
日期:2009-04-11 21:27:42生肖徽章2007版:牛
日期:2009-06-08 00:31:34
发表于 2008-5-19 12:25:53 |显示全部楼层
为啥要重新发明轮子呢

使用Where-used List呀
很久没碰系统了

使用道具 举报

精华贴数
0
技术积分
37
社区积分
0
注册时间
2008-2-19
论坛徽章:
0
发表于 2008-5-20 11:04:18 |显示全部楼层
想问LZ个问题,通过字段名找到透明表后我发现很多透明表是没数据的,有没有什么方法把没有数据的透明表排除啊?

使用道具 举报

注册会员

花飞雪

精华贴数
1
技术积分
1708
社区积分
6140
注册时间
2007-10-29
论坛徽章:
94
蛋疼蛋
日期:2011-05-27 22:58:15鲜花蛋
日期:2011-06-06 17:49:07IT宝贝
日期:2011-08-15 22:17:21双黄蛋
日期:2011-11-29 10:07:02紫蛋头
日期:2011-09-04 04:38:07蜘蛛蛋
日期:2011-09-09 13:22:542012新春纪念徽章
日期:2012-01-04 11:53:54ITPUB十周年纪念徽章
日期:2011-11-01 16:24:04茶鸡蛋
日期:2011-11-26 11:02:51
发表于 2008-7-26 13:52:27 |显示全部楼层
强人啊


母乳是给孩子37°的恒温母爱!

如果您遇到母乳喂养方面的难题,请来母乳喂养大本营

使用道具 举报

相关内容推荐
您需要登录后才可以回帖 登录 | 注册

TOP技术积分榜 社区积分榜 徽章 电子杂志 团队 统计 邮箱 虎吧 老博客 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档 | IT博客
CopyRight 1999-2011 itpub.net All Right Reserved. 北京皓辰网域网络信息技术有限公司版权所有 联系我们 网站律师 隐私政策 知识产权声明
京ICP证:060528号 北京市公安局海淀分局网监中心备案编号:1101082001 广播电视节目制作经营许可证:编号(京)字第1149号
  
回顶部