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
相关推荐
为思念酝酿的痛5 小时前
POSIX信号量
linux·运维·服务器·后端
杨连江6 小时前
仿人脑抑制机制的图像识别网络抗全域异常激活算法研究
经验分享·神经网络
专业白嫖怪6 小时前
什么是docker
运维·docker·容器
芯片智造6 小时前
cmp后清洗的刷子是什么材质?
经验分享
中屹指纹浏览器7 小时前
2026指纹浏览器代理链路适配原理与多线路集群调度方案
经验分享·笔记
人还是要有梦想的7 小时前
linux下用搜狗输入法,中英文切换
linux·运维·服务器
北京智和信通7 小时前
某部队IT基础设施及机房动环统一运维建设实例
运维·网管平台·网管软件·网络管理系统·网络运维平台·网络运维系统
乐维_lwops7 小时前
从 “救火运维” 到 “自动驾驶”:运维智能体到底解决了什么?
运维·人工智能·运维智能体
bush47 小时前
嵌入式linux学习记录二
linux·运维·学习
weixin_468466857 小时前
MoneyPrinterTurbo 短视频自动化生产实战指南
运维·人工智能·自动化·大模型·音视频·moneyprinter