ABAP 反射 测试从内表获取相关字段的类型

87 篇文章 9 订阅

DATA:lt_dfies LIKE TABLE OF dfies.
DATA:ls_dfies LIKE  dfies.
DATA p_name TYPE tabname.
DATA p_fldnm TYPE tabname.
DATA ls_table TYPE zsql_clause_elements.
DATA lr_struc TYPE REF TO cl_abap_structdescr.
DATA lr_table TYPE REF TO cl_abap_tabledescr.
DATA lr_type TYPE REF TO cl_abap_typedescr.
DATA lr_data TYPE REF TO cl_abap_datadescr.
DATA lt_comp TYPE abap_component_tab.
DATA ls_comp LIKE LINE OF lt_comp.
DATA l_string TYPE string.

TYPES: BEGIN OF W_ITAB,
  WERKS LIKE ZFICO_JGHYWH-WERKS,"工厂
  MATNRC LIKE ZFICO_JGHYWH-MATNRC,"电机电控物料代码
  MATNRM LIKE ZFICO_JGHYWH-MATNRM,"成品代码
  PERIOB LIKE ZFICO_JGHYWH-PERIOB,"有效起始期间
  ERDAT LIKE ZFICO_JGHYWH-ERDAT,"创建日期
  CGCBJ LIKE ZFICO_JGHYWH-CGCBJ,"采购成本价
  HYWHJ LIKE ZFICO_JGHYWH-HYWHJ,"还原维护价格
  MAKTXM LIKE ZFICO_JGHYWH-MAKTXM,"成品代码描述
  MAKTXC LIKE ZFICO_JGHYWH-MAKTXC,"电机电控代码描述
  PERIOE LIKE ZFICO_JGHYWH-PERIOE,"有效截止期间
  ERNAM LIKE ZFICO_JGHYWH-ERNAM,"创建人
  LABOR LIKE ZFICO_JGHYWH-LABOR,"电机/ 电控
END OF W_ITAB.
DATA: wtab    TYPE TABLE OF w_itab WITH HEADER LINE.

DATA:cl_descr TYPE REF TO cl_abap_structdescr.
FIELD-SYMBOLS:<fs_comp> TYPE abap_compdescr.
FIELD-SYMBOLS <fs_name> TYPE ANY.
cl_descr ?= cl_abap_typedescr=>describe_by_data( wtab  ).

LOOP AT cl_descr->components ASSIGNING <fs_comp>.
  WRITE: / <fs_comp>-name,             "字段名称
  <fs_comp>-type_kind,        "字段类型
  <fs_comp>-length,           "字段长度
  <fs_comp>-DECIMALS.         "字段小数位
*  APPEND <fs_comp>-name TO gt_field.
ENDLOOP.

可应用场景。Excel上传时,区分各种字段类型。

eg.对千分位进行处理,excel上传时,业务整理数据后还有千分符,就会使得程序dump掉,这个可以判断定义内表是否P类型,P类型的去除千分符 

当然,实际使用中可能内表结构跟表结构一致时 可以用 这个SAP 标准的BAPI  DDIF_FIELDINFO_GET

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

gavin_gxh

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值