获取表或结构的字段信息

代码示例:

1.系统数据中存在的表或结构;

  DATAlv_tabnam TYPE ddobjname VALUE 'ZSDS006',
        lt_dfies  TYPE STANDARD TABLE OF dfies,
        ls_dfies  LIKE LINE OF lt_dfies.
  FIELD-SYMBOLS<fv_value> TYPE any,
                 <fv_mvalu> TYPE any.
  CALL FUNCTION 'DDIF_NAMETAB_GET'
    EXPORTING
      tabname   lv_tabnam
    TABLES
      dfies_tab lt_dfies
    EXCEPTIONS
      not_found 1
      OTHERS    2.
  IF sy-subrc <> 0.
  ENDIF.
  LOOP AT lt_dfies INTO ls_dfies.
    UNASSIGN<fv_value><fv_mvalu>.
    ASSIGN COMPONENT ls_dfies-fieldname OF STRUCTURE zsds006 TO <fv_value>.
    CHECK <fv_value> IS ASSIGNED.
    ASSIGN COMPONENT ls_dfies-fieldname OF STRUCTURE es_vbap TO <fv_mvalu>.
    CHECK <fv_mvalu> IS ASSIGNED.
    MOVE <fv_value> TO <fv_mvalu>.
  ENDLOOP.

2.内表或临时定义的结构

  DATA:cl_descr TYPE REF TO cl_abap_structdescr.
  FIELD-SYMBOLS:<fs_comp> TYPE abap_compdescr.
  FIELD-SYMBOLS<fv_value> TYPE any.
LOOP AT gt_itab WHERE type ''.
    CLEAR:gt_zmmt014[].
    SELECT INTO CORRESPONDING FIELDS OF TABLE gt_zmmt014 FROM zmmt014 WHERE mtart gt_itab-mtart
                                                                          AND werks gt_itab-werks.
    IF gt_zmmt014[] IS NOT INITIAL.
      LOOP AT gt_zmmt014.
        SPLIT gt_zmmt014-zfield AT '-' INTO gt_zmmt014-ztable gt_zmmt014-zfname.
        MODIFY gt_zmmt014.
      ENDLOOP.
      cl_descr ?= cl_abap_typedescr=>describe_by_datagt_itab ).
      LOOP AT cl_descr->components ASSIGNING <fs_comp>.
        UNASSIGN <fv_value>.
        ASSIGN COMPONENT <fs_comp>-name OF STRUCTURE gt_itab TO <fv_value>.
        READ TABLE gt_zmmt014 WITH KEY zfname <fs_comp>-name.
        IF sy-subrc 0.
          <fv_value> gt_zmmt014-zvalue.
        ENDIF.
      ENDLOOP.
    ENDIF.
   ENDLOOP.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值