2021-10-23

这篇博客分享了一个高效的方法,通过编写SAP ABAP程序直接查询后台表DD02T、DD03L和DD04T,获取字段清单及其中文和英文描述。程序实现了输入表名即可输出对应字段的详细信息,方便SAP学习和开发工作。
摘要由CSDN通过智能技术生成

SAP后台表的字段清单及其中英文描述

在学习SAP英文词汇的过程中,去界面里一个一个查词汇太麻烦了!!!

后来我发现了一个方法,直接去后台表里查看字段清单的中文描述和英文描述,
如下图所示:

在这里插入图片描述

后来想了想,有了表的字段清单对于写FS也很有帮助,故作此分享。

于是乎我就写了一个报表,输入表名,输出字段清单、中文描述、英文描述。
如下图所示:

在这里插入图片描述
在这里插入图片描述

程序代码148行,一共涉及3张后台表:DD02T表的描述、DD03L表的字段清单、DD04T元素的描述。

&---------------------------------------------------------------------
REPORT ztest0005.

TABLES:dd03l.
DATA: BEGIN OF gt_out OCCURS 0,
tabname TYPE dd03l-tabname, "表名
fieldname TYPE dd03l-fieldname, "字段名称
rollname TYPE dd03l-rollname, "元素
description_zh TYPE char120, "中文描述
description_en TYPE char120, "英文描述
description1_zh TYPE char120, "表中文描述
description1_en TYPE char120, "表英文描述
END OF gt_out.

DATA gt_dd04t TYPE TABLE OF dd04t WITH HEADER LINE.
DATA gt_dd02t TYPE TABLE OF dd02t WITH HEADER LINE.
DATA gt_dd03l TYPE TABLE OF dd03l WITH HEADER LINE.

DATA : gt_fieldcat TYPE lvc_t_fcat,
gs_fieldcat TYPE lvc_s_fcat,
gs_layout TYPE lvc_s_layo.

SELECTION-SCREEN: BEGIN OF BLOCK bl1 WITH FRAME TITLE text-t01.
SELECT-OPTIONS:
s_tabnam FOR dd03l-tabname DEFAULT ‘MSEG’."表名
SELECTION-SCREEN END OF BLOCK bl1.

START-OF-SELECTION."F8

  • PERFORM frm_auth_check.
    PERFORM frm_process_data.
    PERFORM frm_layout_set.
    PERFORM frm_fieldcat_set.
    PERFORM frm_show_data.

&---------------------------------------------------------------------
&---------------------------------------------------------------------
&---------------------------------------------------------------------
&---------------------------------------------------------------------
&---------------------------------------------------------------------

FORM frm_process_data .

"表的字段清单
SELECT tabname fieldname rollname
FROM dd03l
INTO CORRESPONDING FIELDS OF TABLE gt_out
WHERE tabname IN s_tabnam
AND rollname <> ‘’.

"表的描述
SELECT tabname ddlanguage ddtext
FROM dd02t
INTO CORRESPONDING FIELDS OF TABLE gt_dd02t
WHERE ddlanguage = ‘1’
OR ddlanguage = ‘E’.
SORT gt_dd02t BY tabname ddlanguage.

"元素描述
SELECT rollname ddlanguage ddtext FROM dd04t
INTO CORRESPONDING FIELDS OF TABLE gt_dd04t
WHERE ddlanguage = ‘1’
OR ddlanguage = ‘E’.
SORT gt_dd04t BY rollname ddlanguage.

LOOP AT gt_out.

READ TABLE gt_dd04t WITH KEY rollname = gt_out-rollname ddlanguage = '1' BINARY SEARCH.
IF  sy-subrc = 0.
  gt_out-description_zh = gt_dd04t-ddtext.
ENDIF.

READ TABLE gt_dd04t WITH KEY rollname = gt_out-rollname ddlanguage = 'E' BINARY SEARCH.
IF  sy-subrc = 0.
  gt_out-description_en = gt_dd04t-ddtext.
ENDIF.

READ TABLE gt_dd02t WITH KEY tabname = gt_out-tabname ddlanguage = '1' BINARY SEARCH.
IF  sy-subrc = 0.
  gt_out-description1_zh = gt_dd02t-ddtext.
ENDIF.

READ TABLE gt_dd02t WITH KEY tabname = gt_out-tabname ddlanguage = 'E' BINARY SEARCH.
IF  sy-subrc = 0.
  gt_out-description1_en = gt_dd02t-ddtext.
ENDIF.

MODIFY gt_out.

ENDLOOP.

SORT gt_out BY tabname fieldname.

ENDFORM.

FORM frm_layout_set .
gs_layout-cwidth_opt = ‘X’.
gs_layout-zebra = ‘X’.
ENDFORM.

FORM frm_fieldcat_set .
DEFINE macro_fieldcat_set.
CLEAR gs_fieldcat.
gs_fieldcat-fieldname = &1.
gs_fieldcat-scrtext_m = &2.
gs_fieldcat-no_zero = ‘X’. "去掉前置零
APPEND gs_fieldcat TO gt_fieldcat.
END-OF-DEFINITION.

macro_fieldcat_set:
‘TABNAME’ ‘表名’,
‘FIELDNAME’ ‘字段名称’,
‘ROLLNAME’ ‘元素’,
‘DESCRIPTION_ZH’ ‘元素中文描述’,
‘DESCRIPTION_EN’ ‘元素英文描述’,
‘DESCRIPTION1_ZH’ ‘表中文描述’,
‘DESCRIPTION1_EN’ ‘表英文描述’.
ENDFORM.

FORM frm_show_data .
CALL FUNCTION ‘REUSE_ALV_GRID_DISPLAY_LVC’
EXPORTING
i_callback_program = sy-repid
i_callback_pf_status_set = ‘FRM_ALV_STATUS’
i_callback_user_command = ‘FRM_USER_COMMAND’
is_layout_lvc = gs_layout
it_fieldcat_lvc = gt_fieldcat[]
i_save = ‘U’
TABLES
t_outtab = gt_out[]
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sy-subrc NE 0.
MESSAGE ID sy-msgid
TYPE sy-msgty
NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDFORM.

FORM frm_alv_status USING pt_extab TYPE slis_t_extab.
SET PF-STATUS ‘ZSTANDARD’ .
ENDFORM.

FORM frm_user_command USING r_ucomm TYPE sy-ucomm
p_selfield TYPE slis_selfield.
ENDFORM.

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值