SAP BC 表结构查询

复制代码
*&---------------------------------------------------------------------*
*& 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
相关推荐
XIAOHEZIcode7 小时前
Linux系统鼠标偏移常见原因以及修复方案
linux·运维·游戏
用户0328472220701 天前
如何搭建本地yum源(上)
运维
大树884 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠4 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质4 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
SM177152118384 天前
NSK紧凑型FA系列丝杠技术详解
经验分享·规格说明书
Inhand陈工4 天前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信
laowangpython4 天前
Photoshop 2025 下载安装全攻略
其他·ui·photoshop
酣大智4 天前
ARP代理--工作原理
运维·网络·arp·arp代理
shushangyun_4 天前
2026年快消品B2B系统推荐:支持终端门店订货、促销政策自动化的工具?
java·运维·网络·数据库·人工智能·spring·自动化