SAP 查表程序(通过字段,元素,表名,描述)查表

本文介绍了一款用于SAP系统的ABAP程序,该程序能够帮助用户通过字段名或字段描述来查找表信息,包括表名、类别、描述等,简化了SAP表查找的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

<think>我们正在处理用户关于SAP事务码查看对应程序的问题。 根据引用内容,我们可以通过SE16N查看TSTC来获取事务码与程序的关联关系。 此外,我们还可以考虑其他方法,比如使用标准程序或系统函数。 但根据引用,第一种方法(使用SE16N查表TSTC)是最好用的方法,并且需要相应的查表权限。 因此,我们可以给出以下步骤: 步骤1:使用事务码SE16N打开TSTC。 步骤2:在TSTC中,事务码字段为TCODE,程序字段为PGMNA。我们可以通过输入事务码来查询对应的程序,也可以使用通配符(*)进行模糊查询。 步骤3:执行查询,即可得到事务码与程序的关联关系。 注意:如果查询不到数据,说明该事务码没有关联的程序(或者不存在)。 另外,引用中还提到“后面两种方法”,但未具体说明。我们可以补充其他常见方法,比如: - 使用事务码SE93(维护事务码),在事务码的维护界面中可以直接看到所关联的程序。 - 使用系统函数:可以通过函数MODULE_LIST_CALL_DYNPRO来获取事务码对应的程序(但这种方法相对复杂,一般推荐前两种)。 因此,我们可以将方法总结如下: 方法1:通过TSTC(使用SE16N) 方法2:通过事务码SE93(维护事务码) 方法3:通过系统函数(较少用) 下面我们按照要求生成回答,并添加相关问题。</think>### 如何通过SAP事务码查看对应程序SAP系统中,可通过以下方法根据事务码查找关联程序: #### 方法1:通过TSTC查询(推荐) 1. 使用事务码`SE16N`打开通用查看器 2. 在****字段输入`TSTC` 3. 在查询条件中: - **TCODE**字段:输入目标事务码(如`VA01`) - 或使用通配符`*`模糊查询(如`VA*`) 4. 执行后,在结果中查看**PGMNA**字段值即为关联程序 > 示例:事务码`SE38`对应程序`RSABAPED`[^1] #### 方法2:通过事务码维护工具 1. 使用事务码`SE93` 2. 在**事务代码**字段输入目标事务码 3. 点击**显示**,在弹出窗口的**属性**页签查看**程序**字段 #### 方法3:通过系统函数 使用函数模块`TH_POPUP_FOR_TCODE`: ```abap CALL FUNCTION 'TH_POPUP_FOR_TCODE' EXPORTING tcode = 'MM01' " 替换为目标事务码 IMPORTING program = lv_program " 返回程序 dynpro = lv_dynpro. ``` > ⚠️ **注意事项** > - 若查询无结果,说明该事务码未关联程序(如配置型事务码) > - 需要基础查看权限(通常开发/运维角色具备)[^1]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值