

*&---------------------------------------------------------------------*
*& REPORT ZRPT_BC_TABFLDS
*&
*&---------------------------------------------------------------------*
*& author ABAP00
*& date 20250520
*& from
*& Tcode
*&---------------------------------------------------------------------*
REPORT zrpt_bc_tabflds.
TABLES: dd02l, dd02t, dd03l, dd04l, dd04t.
SELECTION-SCREEN BEGIN OF BLOCK 001 WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS s_tabnam FOR dd02l-tabname. "表名
SELECT-OPTIONS s_fldnam FOR dd03l-fieldname. "字段名称
SELECT-OPTIONS S_Kflg FOR dd03l-keyflag. "关键字
SELECT-OPTIONS s_tabcls FOR dd02l-tabclass.
"PARAMETERS pAS4VERS LIKE dd02L-AS4VERS DEFAULT 'A'.
SELECTION-SCREEN END OF BLOCK 001.
TYPES:
BEGIN OF typ_data,
tabname TYPE dd02l-tabname, "表名
t2txt TYPE dd02t-ddtext, "表中文描述
fieldname TYPE dd03l-fieldname, "字段名称
keyflag TYPE dd03l-keyflag, "关键字
position TYPE dd03l-position, "位置
domname TYPE dd03l-domname, "域名
memoryid TYPE dd04l-memoryid, "参数ID
headlen TYPE dd04l-headlen, "抬头长度
shlpname TYPE dd04l-shlpname, "搜素帮助
datatype TYPE dd04l-datatype, "数据类型
leng TYPE dd04l-leng, "长度
decimals TYPE dd04l-decimals, "小数长度
outputlen TYPE dd04l-outputlen, "输出长度
lowercase TYPE dd04l-lowercase, "大小写
signflag TYPE dd04l-signflag, "符号
convexit TYPE dd04l-convexit, "转换例程
t4txt TYPE dd04t-ddtext, "字段描述
END OF typ_data.
DATA:
stdatum LIKE sy-datum,
stuzeit LIKE sy-uzeit,
gt_data TYPE TABLE OF typ_data,
gs_data TYPE typ_data,
gt_fieldcat TYPE lvc_t_fcat,
gs_fieldcat TYPE lvc_s_fcat,
gs_layout TYPE lvc_s_layo.
INITIALIZATION.
%_s_tabnam_%_app_%-text = '表名'.
%_S_Fldnam_%_APP_%-text = '字段名称'.
%_S_Kflg_%_APP_%-text = '关键字'.
START-OF-SELECTION.
stdatum = sy-datum.
stuzeit = sy-uzeit.
PERFORM get_data.
PERFORM process_data.
PERFORM writerptrunrecord.
PERFORM display_data.
*&---------------------------------------------------------------------*
*& FORM GET_DATA
*&---------------------------------------------------------------------*
* 获取数据
*----------------------------------------------------------------------*
FORM get_data.
SELECT
l2~tabname "表名
t2~ddtext AS t2txt "表中文描述
l3~fieldname "字段名称
l3~keyflag "关键字
l3~position "位置
l3~domname "域名
l4~memoryid "参数ID
l4~headlen "抬头长度
l4~shlpname "搜素帮助
l4~datatype "数据类型
l4~leng "长度
l4~decimals "小数长度
l4~outputlen "输出长度
l4~lowercase "大小写
l4~signflag "符号
l4~convexit "转换例程
t4~ddtext AS t4txt "字段描述
INTO TABLE gt_data
FROM dd02l AS l2
INNER JOIN dd03l AS l3 ON l3~tabname = l2~tabname AND l3~as4local = l2~as4local AND l3~as4vers = l2~as4vers
INNER JOIN dd04l AS l4 ON l4~rollname = l3~rollname AND l4~as4local = l3~as4local AND l4~as4vers = l3~as4vers
LEFT JOIN dd04t AS t4 ON t4~rollname = l4~rollname AND t4~as4local = l4~as4local AND t4~as4vers = l4~as4vers AND t4~ddlanguage = SY-langu
LEFT JOIN dd02t AS t2 ON t2~tabname = l2~tabname AND t2~as4local = l2~as4local AND t2~as4vers = l2~as4vers AND t2~ddlanguage = SY-langu
WHERE l2~tabname IN s_tabnam AND l2~tabclass IN s_tabcls and L2~AS4VERS = 'A'
AND l3~fieldname IN S_FldNAM
AND l3~keyflag IN S_Kflg.
sort gt_data by tabname position.
ENDFORM. "GET_DATA
*&---------------------------------------------------------------------*
*& FORM WRITERPTRUNRECORD
*&---------------------------------------------------------------------*
* 获取数据
*----------------------------------------------------------------------*
FORM writerptrunrecord.
ENDFORM. "WRITERPTRUNRECORD
*&---------------------------------------------------------------------*
*& FORM PROCESS_DATA
*&---------------------------------------------------------------------*
* 处理数据
*----------------------------------------------------------------------*
FORM process_data.
ENDFORM. "PROCESS_DATA
*&---------------------------------------------------------------------*
*& Form BUILD_FIELDCAT
*&---------------------------------------------------------------------*
* TEXT
*----------------------------------------------------------------------*
FORM build_fieldcat USING p_fieldname TYPE fieldname
p_qfieldname TYPE lvc_qfname
p_cfieldname TYPE lvc_cfname
p_ref_table TYPE lvc_rtname
p_ref_field TYPE lvc_rfname
p_convexit TYPE convexit
p_emphasize TYPE lvc_emphsz
p_scrtext_l TYPE scrtext_l
p_no_zero TYPE xflag.
gs_fieldcat-fieldname = p_fieldname.
gs_fieldcat-qfieldname = p_qfieldname.
gs_fieldcat-cfieldname = p_cfieldname.
gs_fieldcat-ref_table = p_ref_table.
gs_fieldcat-ref_field = p_ref_field.
gs_fieldcat-convexit = p_convexit.
gs_fieldcat-emphasize = p_emphasize.
gs_fieldcat-scrtext_l = p_scrtext_l.
gs_fieldcat-no_zero = p_no_zero.
gs_fieldcat-colddictxt = 'L'.
APPEND gs_fieldcat TO gt_fieldcat.
CLEAR: gs_fieldcat.
ENDFORM. "BUILD_FIELDCAT
*&---------------------------------------------------------------------*
*& FORM DISPLAY_DATA
*&---------------------------------------------------------------------*
* 显示数据
*----------------------------------------------------------------------*
FORM display_data.
PERFORM build_fieldcat USING 'TABNAME' '' '' '' '' '' '' '表名' ''.
PERFORM build_fieldcat USING 'FIELDNAME' '' '' '' '' '' '' '字段名称' ''.
PERFORM build_fieldcat USING 'KEYFLAG' '' '' '' '' '' '' '关键字' ''.
PERFORM build_fieldcat USING 'POSITION' '' '' '' '' '' '' '位置' ''.
PERFORM build_fieldcat USING 'DOMNAME' '' '' '' '' '' '' '域名' ''.
PERFORM build_fieldcat USING 'MEMORYID' '' '' '' '' '' '' '参数ID' ''.
PERFORM build_fieldcat USING 'HEADLEN' '' '' '' '' '' '' '抬头长度' ''.
PERFORM build_fieldcat USING 'SHLPNAME' '' '' '' '' '' '' '搜素帮助' ''.
PERFORM build_fieldcat USING 'DATATYPE' '' '' '' '' '' '' '数据类型' ''.
PERFORM build_fieldcat USING 'LENG' '' '' '' '' '' '' '长度' ''.
PERFORM build_fieldcat USING 'DECIMALS' '' '' '' '' '' '' '小数长度' ''.
PERFORM build_fieldcat USING 'OUTPUTLEN' '' '' '' '' '' '' '输出长度' ''.
PERFORM build_fieldcat USING 'LOWERCASE' '' '' '' '' '' '' '大小写' ''.
PERFORM build_fieldcat USING 'SIGNFLAG' '' '' '' '' '' '' '符号' ''.
PERFORM build_fieldcat USING 'CONVEXIT' '' '' '' '' '' '' '转换例程' ''.
PERFORM build_fieldcat USING 'T4TXT' '' '' '' '' '' '' '字段描述' ''.
gs_layout-cwidth_opt = 'X'.
gs_layout-zebra = 'X'.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
EXPORTING
i_callback_program = sy-repid
" I_CALLBACK_PF_STATUS_SET = 'PF_STATUS_ALV'
i_callback_user_command = 'USER_COMMAND_ALV'
it_fieldcat_lvc = gt_fieldcat
is_layout_lvc = gs_layout
i_default = 'X'
i_save = 'A'
TABLES
t_outtab = gt_data
EXCEPTIONS
OTHERS = 1.
ENDFORM. "DISPLAY_DATA
**&---------------------------------------------------------------------*
**& FORM PF_STATUS_ALV
**&---------------------------------------------------------------------*
** TEXT
**----------------------------------------------------------------------*
*FORM PF_STATUS_ALV USING RT_EXTAB TYPE SLIS_T_EXTAB .
* SET PF-STATUS 'STATUS_ALV' EXCLUDING RT_EXTAB.
*ENDFORM. "PF_STATUS_ALV
*&---------------------------------------------------------------------*
*& FORM USER_COMMAND_ALV
*&---------------------------------------------------------------------*
* TEXT
*----------------------------------------------------------------------*
FORM user_command_alv USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
CASE r_ucomm.
WHEN '&IC1'.
CASE rs_selfield-fieldname.
WHEN ''.
* CHECK RS_SELFIELD-VALUE IS NOT INITIAL.
* SET PARAMETER ID 'MBN' FIELD RS_SELFIELD-VALUE.
* CALL TRANSACTION 'MB03' AND SKIP FIRST SCREEN.
ENDCASE.
ENDCASE.
ENDFORM. "USER_COMMAND_ALV