以编程方式获取表字段描述



我试图通过ERPConnect的ABAP API查询SAP的数据字典。下面的代码可以很好地检索表名和各种字段属性,但无法显示字段描述。有人知道为什么吗?

感谢
REPORT  ZSELECTCOMMAND.
TABLES: DD02L,
    DD03L,
    DD02T, DD04T.
DATA: BEGIN OF tb_meta,
    tabname   TYPE  DD02L-tabname,
    fieldname   TYPE  DD03L-fieldname,
    datatype    TYPE  DD03L-datatype,
    leng        TYPE  DD03L-leng,
    decimals    TYPE  DD03L-decimals,
    position    TYPE  DD03L-position,
desc    TYPE  DD04T-ddtext,
    END OF tb_meta.
DATA utb_meta LIKE STANDARD TABLE OF tb_meta.
DATA: ln_meta LIKE LINE OF utb_meta, m1 TYPE i, m2 TYPE i.
SELECT
    tb~tabname
fld~fieldname
    fld~datatype    fld~leng
    fld~decimals    fld~position
x~ddtext
    INTO CORRESPONDING FIELDS OF TABLE utb_meta
FROM
    dd02L AS tb
INNER JOIN dd03L AS fld
    ON tb~tabname = fld~tabname
INNER JOIN DD04T AS x
ON fld~ROLLNAME = x~ROLLNAME
AND x~DDLANGUAGE = 'EN'
WHERE
    CONTFLAG IN ('A', 'C', 'S')  
    AND 
    APPLCLASS <> '' 
    AND 
    tb~TABNAME NOT LIKE '/%' 
    AND 
    tb~TABNAME NOT LIKE '%_BAK'
    AND
   tb~TABNAME = 'BSAK'.
*GET RUN TIME FIELD m1. 
loop at utb_meta into ln_meta.
    write:/ 
    ln_meta-tabname 
    && '>>' && ln_meta-fieldname 
    && '>>' && ln_meta-datatype
    && '>>' && ln_meta-leng
    && '>>' && ln_meta-decimals
    && '>>' && ln_meta-position
    && '>>' && ln_meta-desc.
endloop.

表字段或结构字段的文本信息可以存储在不同的位置。从DD04T中选择的数据元素文本只是这些文本的一个位置。您可以定义具有内置数据类型而不是字典数据类型的表组件,然后文本将存储在DD03T中(例如)

由于这些原因(DD*表的技术细节),我强烈建议您使用功能模块DDIF_FIELDINFO_GET,而不是滚动自己的DD*选择。只需传递参数TABNAMELANGU,生成的内部表DFIES_TAB将包含您需要的所有信息,包括文本。

除了@rplantiko的建议之外,我建议使用已经启用rfc的RPY_*功能模块,并且可能更容易开箱即用。

最新更新