您的位置:首页 > 其它

动态内表技术获取字段描述

2021-02-14 20:49 295 查看

需求是这样的:

根据物料+序列号从EQUI和EQBS 表获取对应的特殊库存状态

然后从T156C表获取对应的描述



T156C中有对应的库存状态的描述,但是它是用字段描述来分辨,

使用下图举例,如果是01+ ‘’,那么对应的会在Unrestricted-usestock这个字段打X,我们要获取的就是这一条对应的X所在的列的字段描述


代码:

FUNCTION zatj_gx_get_sobkz_txt.
*"----------------------------------------------------------------------
*"*"Local Interface:
*"  IMPORTING
*"     REFERENCE(IS_DATA) TYPE  T156C
*"  EXPORTING
*"     REFERENCE(EV_TXT)
*"  TABLES
*"      IT_TABLE STRUCTURE  DNTAB OPTIONAL
*"----------------------------------------------------------------------
  DATA : lt_idetails TYPE abap_compdescr_tab WITH HEADER LINE.
  DATA : lr_ref_table_des TYPE REF TO cl_abap_structdescr.
  DATA:ls_table LIKE LINE OF  it_table.

  FIELD-SYMBOLS: <l_field>     TYPE ANY.
  IF it_table IS INITIAL .
    CALL FUNCTION 'NAMETAB_GET'
      EXPORTING
        langu          = sy-langu
        tabname        = 'T156C'
      TABLES
        nametab        = it_table
      EXCEPTIONS
        no_texts_found = 1.
  ENDIF.

**动态得到内表结构  ”全局结构
  lr_ref_table_des ?=
        cl_abap_typedescr=>describe_by_name( 'T156C' ).
  lt_idetails[] = lr_ref_table_des->components[].


  LOOP AT lt_idetails.

    ASSIGN COMPONENT lt_idetails-name OF STRUCTURE is_data TO   <l_field>    .

    IF sy-subrc = 0 AND <l_field> = 'X'.
      READ TABLE it_table INTO ls_table
        WITH KEY fieldname = lt_idetails-name.

      ev_txt = ls_table-fieldtext.
      EXIT.

    ENDIF.


  ENDLOOP.
ENDFUNCTION.


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: