ITPUB??ì3
ITPUB论坛 » SAP R/3 » 系统开发及跨应用设置 » SAP 查表程序(通过字段,元素,表名,描述)查表


标题: SAP 查表程序(通过字段,元素,表名,描述)查表
离线 Winkchow
Michael Chow


精华贴数 0
个人空间 0
技术积分 170 (10424)
社区积分 6 (13833)
注册日期 2007-2-11
论坛徽章:1
ITPUB新首页上线纪念徽章     
      

发表于 2008-5-16 14:40 
SAP 查表程序(通过字段,元素,表名,描述)查表

对于对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


__________________
Nothing just happens. It is all part of a plan!
只看该作者    顶部
离线 lpp42
煙雨夕陽


精华贴数 0
个人空间 0
技术积分 1082 (1571)
社区积分 1174 (789)
注册日期 2007-8-6
论坛徽章:13
2008北京奥运纪念徽章:柔道2008北京奥运纪念徽章:篮球2008北京奥运纪念徽章:田径2008北京奥运纪念徽章:射箭2008北京奥运纪念徽章:摔跤2008北京奥运纪念徽章:柔道
2008北京奥运纪念徽章:拳击2008北京奥运纪念徽章:曲棍球行业板块每日发贴之星生肖徽章2007版:猴生肖徽章2007版:牛生肖徽章2007版:虎

发表于 2008-5-16 16:24 



__________________
妈妈说人最好不要错过两样东西,最后一班回家的车和一个深爱你的人
只看该作者    顶部
离线 xiangjiao1983



精华贴数 0
个人空间 0
技术积分 35 (34500)
社区积分 0 (1694431)
注册日期 2008-2-19
论坛徽章:0
      
      

发表于 2008-5-16 16:24 
LZ强人!谢谢分享!


只看该作者    顶部
离线 sorrowlich


精华贴数 0
个人空间 0
技术积分 1892 (806)
社区积分 273 (1844)
注册日期 2007-8-1
论坛徽章:5
2008北京奥运纪念徽章:沙滩排球2008北京奥运纪念徽章:沙滩排球2008北京奥运纪念徽章:沙滩排球   
      

发表于 2008-5-16 18:35 



__________________
今夜微风轻轻送,吹散了我的梦……
只看该作者    顶部
离线 tieshou444
忧郁的蓝色


精华贴数 0
个人空间 0
技术积分 937 (1872)
社区积分 157 (2517)
注册日期 2008-3-5
论坛徽章:4
授权会员2008北京奥运纪念徽章:皮划艇静水2008北京奥运纪念徽章:跳水   
      

发表于 2008-5-16 22:39 
up


__________________
SAP & ENGLISH
只看该作者    顶部
离线 sinco_lu
Sinco



精华贴数 0
个人空间 0
技术积分 52 (26108)
社区积分 0 (1368451)
注册日期 2007-10-12
论坛徽章:0
      
      

发表于 2008-5-17 14:21 



__________________
MSN:luxinke@hotmail.com
QQ:46123931
Skype:sinco.lu@163.com
只看该作者    顶部
离线 rosefish



精华贴数 0
个人空间 0
技术积分 3383 (396)
社区积分 1558 (646)
注册日期 2004-9-30
论坛徽章:37
      
      

发表于 2008-5-19 08:28 
se84足矣


只看该作者    顶部
离线 awarecan
Instructor


精华贴数 0
个人空间 0
技术积分 1206 (1372)
社区积分 2 (23435)
注册日期 2003-8-5
论坛徽章:3
授权会员2008北京奥运纪念徽章:击剑生肖徽章2007版:龙   
      

发表于 2008-5-19 12:25 
为啥要重新发明轮子呢

使用Where-used List呀


__________________
7月北京周末班 MM/SD班

博彦科技 SAP授权培训伙伴 北京/上海/天津
010-82826580
021-51311836
只看该作者    顶部
离线 xiangjiao1983



精华贴数 0
个人空间 0
技术积分 35 (34500)
社区积分 0 (1694431)
注册日期 2008-2-19
论坛徽章:0
      
      

发表于 2008-5-20 11:04 
想问LZ个问题,通过字段名找到透明表后我发现很多透明表是没数据的,有没有什么方法把没有数据的透明表排除啊?


只看该作者    顶部
 
    

相关内容


CopyRight 1999-2006 itpub.net All Right Reserved.
北京皓辰广域网络信息技术有限公司. 版权所有
E-mail:Webmaster@itpub.net
京ICP证:010037号 联系我们 法律顾问