第一范文网 - 专业文章范例文档资料分享平台

ABAP动态内表使用的例子 (7)

来源:用户分享 时间:2020-06-18 本文由柒夏 分享 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

CLEAR J.

LOOP AT IT_STRUCTURE INTO WA_STRUCTURE. J = J + 1.

ASSIGN COMPONENT WA_STRUCTURE-FIELDNAME OF STRUCTURE TO .

* \用指针指向工作区中的一个字段,字段名为WA_STRUCTURE-FIELDNAME. CONCATENATE I J INTO .\给指针指向的字段赋值 ENDLOOP.

APPEND TO . ENDDO.

ENDFORM. \*&---------------------------------------------------------------------* *& Form OUTPUT_DYNTABLE_DATA

*----------------------------------------------------------------------* FORM OUTPUT_DYNTABLE_DATA.

LOOP AT IT_STRUCTURE INTO WA_STRUCTURE. WRITE: WA_STRUCTURE-FIELDNAME(5). ENDLOOP.

LOOP AT INTO . WRITE: / .

LOOP AT IT_STRUCTURE INTO WA_STRUCTURE.

ASSIGN COMPONENT WA_STRUCTURE-FIELDNAME OF STRUCTURE TO .

*用指针指向工作区中的一个字段,字段名为WA_STRUCTURE-FIELDNAME. WRITE : . ENDLOOP. ENDLOOP.

ENDFORM. \

1.使用modify (p_tabname) from . 的时候,一定要确定要更新的字段是不是系统表的关键字段,如果是关键字段的话,需要先删除这条记录,delete(p_tabname) from .再进行modify,因为modify进行更新的时候如果不存在就新增,这点一定要注意。

2.如果使用UPDATE进行更新,对于非主键字段的改变还是可以的,但是对于主键字段,只能用MODIFY了。直接对SAP数据做UPDATE

和MODIFY是很危险的,不到万不得已,最好不要做这些操作。如果万一出问题,会很严重的。这里就不用更新和删除程序作为测试程序了,直接做一个动态内表ALV显示的测试程序,道理和更新与删除差不多,希望对有这方面需求的朋友有所帮助!

3.最近从同事程序中发现另一种创建动态内表的简便方法,附3中为测试代码。觉得这个方法更简单些……

附1:

REPORT ZCL_TEST026.

TYPE-POOLS:abap.

PARAMETERS p_name TYPE tabname.

DATA lt_table TYPE TABLE OF dfies. \字段结构表 DATA ls_table TYPE dfies.

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 dyn_wa TYPE REF TO data. DATA dyn_table TYPE REF TO data. DATA l_string TYPE string.

FIELD-SYMBOLS: TYPE STANDARD TABLE, TYPE ANY. *1.获取表中的字段结构

CALL FUNCTION 'DDIF_NAMETAB_GET' EXPORTING

tabname = p_name TABLES

dfies_tab = lt_table EXCEPTIONS

not_found = 1 OTHERS = 2. IF sy-subrc <> 0.

MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ENDIF.

LOOP AT lt_table INTO ls_table.

CONCATENATE ls_table-tabname '-' ls_table-fieldname INTO l_string. ls_comp-name = ls_table-fieldname. *读取字段类型

CALL METHOD cl_abap_datadescr=>describe_by_name EXPORTING

p_name = l_string RECEIVING

p_descr_ref = lr_type EXCEPTIONS

type_not_found = 1 OTHERS = 2. IF sy-subrc <> 0.

MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ENDIF.

ls_comp-type ?= lr_type. APPEND ls_comp TO lt_comp. CLEAR ls_comp. ENDLOOP.

搜索“diyifanwen.net”或“第一范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,第一范文网,提供最新工程科技ABAP动态内表使用的例子 (7)全文阅读和word下载服务。

ABAP动态内表使用的例子 (7).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/wenku/1083740.html(转载请注明文章来源)
热门推荐
Copyright © 2018-2022 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top