将结构的组件分配给指针ASSIGN COMPONENT

93 篇文章 0 订阅
本文详细介绍了如何在ABAP程序中使用ASSIGNCOMPONENT指令,包括通过组件名分配结构变量和通过索引动态访问结构成员,以及利用结构描述符进行字段信息获取。
摘要由CSDN通过智能技术生成

将结构的组件分配给指针ASSIGN COMPONENT

程序

*&---------------------------------------------------------------------*
*& Report Z_ASSIGN_COMPONENT
*&---------------------------------------------------------------------*
*& Description:测试ASSIGN COMPONENT
*& Create On:2024.4.24
*& Creater:Liuhongyu
*&---------------------------------------------------------------------*
REPORT z_assign_component.

*&-------------------------Variable------------------------------------*
FIELD-SYMBOLS:<f1> TYPE any,
              <f2> TYPE any.
TYPES: BEGIN OF gty_data,
  werks TYPE marc-werks,
  matnr TYPE marc-matnr,
  bwtty TYPE marc-bwtty,
  END OF gty_data.

DATA: gs_data TYPE gty_data,
      gt_data TYPE TABLE OF gty_data.
DATA: gs_fieldcat TYPE lvc_s_fcat,
      gt_fieldcat TYPE lvc_t_fcat.

*&-----------------------------Logic-----------------------------------*
gs_data = VALUE #( werks = '1010' matnr = 'gs_data的物料' bwtty = '1' ).
gt_data = VALUE #( ( werks = '1710' matnr = 'RM2_CP' bwtty = '1' )
( werks = '1710' matnr = '000000000000001480' bwtty = '2' )
( werks = '1710' matnr = '000000000000002181' bwtty = '3' ) ).

DATA: lo_tabdescr TYPE REF TO cl_abap_structdescr.
DATA: ls_field_in TYPE dfies,
      lt_dfies    TYPE ddfields.

DATA: ls_dfies LIKE LINE OF lt_dfies.
lo_tabdescr ?= cl_abap_structdescr=>describe_by_data( gs_data ).
CALL METHOD cl_salv_data_descr=>read_structdescr
  EXPORTING
    r_structdescr   = lo_tabdescr
  RECEIVING
    t_dfies         = lt_dfies.

LOOP AT lt_dfies INTO ls_dfies.
  ASSIGN COMPONENT ls_dfies-fieldname OF STRUCTURE gs_data TO <f1>. "根据组件的名称,将这个组价分配给F1这个指针
  ASSIGN COMPONENT sy-tabix OF STRUCTURE gs_data TO FIELD-SYMBOL(<fs_temp>)."临时定义指针,通过索引动态的访问结构成员
  IF <f1> IS ASSIGNED.
    gs_fieldcat-fieldname = ls_dfies-fieldname. "字段名
    gs_fieldcat-coltext = ls_dfies-scrtext_l. "字段描述
    APPEND gs_fieldcat TO gt_fieldcat.
  ENDIF.
ENDLOOP.

cl_demo_output=>display( gt_data ).

可以通过组件名访问组件

ASSIGN COMPONENT ls_dfies-fieldname OF STRUCTURE gs_data TO . "根据组件的名称,将这个组价分配给F1这个指针

在这里插入图片描述

通过下标来访问组件

ASSIGN COMPONENT sy-tabix OF STRUCTURE gs_data TO FIELD-SYMBOL(<fs_temp>)."临时定义指针,通过索引动态的访问结构成员
在这里插入图片描述

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值