欢迎来到天天文库
浏览记录
ID:12572328
大小:16.70 KB
页数:6页
时间:2018-07-17
《abap 动态生成内表的几种方法》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、ABAP动态生成内表的几种方法1.使用modify(p_tabname)from.的时候,一定要确定要更新的字段是不是系统表的关键字段,如果是关键字段的话,需要先删除这条记录,delete(p_tabname)from.再进行modify,因为modify进行更新的时候如果不存在就新增,这点一定要注意。2.如果使用UPDATE进行更新,对于非主键字段的改变还是可以的,但是对于主键字段,只能用MODIFY了。直接对SAP数据做UPDATE和MODIFY是很危险的,不到万不得已,最好不要
2、做这些操作。如果万一出问题,会很严重的。这里就不用更新和删除程序作为测试程序了,直接做一个动态内表ALV显示的测试程序,道理和更新与删除差不多,希望对有这方面需求的朋友有所帮助!3.最近从同事程序中发现另一种创建动态内表的简便方法,附3中为测试代码。觉得这个方法更简单些……附1:REPORTZCL_TEST026.TYPE-POOLS:abap.PARAMETERSp_nameTYPEtabname.DATAlt_tableTYPETABLEOFdfies."字段结构表DATAls_tableTYPEdfies.D
3、ATAlr_strucTYPEREFTOcl_abap_structdescr.DATAlr_tableTYPEREFTOcl_abap_tabledescr.DATAlr_typeTYPEREFTOcl_abap_typedescr.DATAlr_data TYPEREFTOcl_abap_datadescr.DATAlt_compTYPE abap_component_tab.DATAls_compLIKELINEOF lt_comp.DATAdyn_waTYPEREFTOdata.DATAdyn_tableT
4、YPEREFTOdata.DATAl_stringTYPEstring.FIELD-SYMBOLS:TYPESTANDARDTABLE, TYPEANY.*1.获取表中的字段结构CALLFUNCTION'DDIF_NAMETAB_GET' EXPORTING tabname =p_name TABLES dfies_tab=lt_table EXCEPTIONS not_found=1 OTHERS =2
5、.IFsy-subrc<>0. MESSAGEIDsy-msgidTYPEsy-msgtyNUMBERsy-msgno WITHsy-msgv1sy-msgv2sy-msgv3sy-msgv4.ENDIF.LOOPATlt_tableINTOls_table. CONCATENATEls_table-tabname'-'ls_table-fieldnameINTOl_string. ls_comp-name=ls_table-fieldname.*读取字段类型 CALLMETHODcl_abap_d
6、atadescr=>describe_by_name EXPORTING p_name =l_string RECEIVING p_descr_ref =lr_type EXCEPTIONS type_not_found=1 OTHERS =2. IFsy-subrc<>0. MESSAGEIDsy-msgidTYPEsy-msgtyNUMBERsy-msgno WITHsy-msgv1sy-msgv2sy-m
7、sgv3sy-msgv4. ENDIF. ls_comp-type?=lr_type. APPENDls_compTOlt_comp. CLEARls_comp.ENDLOOP.*根据字段目录创建动态结构类型CALLMETHODcl_abap_structdescr=>create EXPORTING p_components=lt_comp RECEIVING p_result =lr_struc.*根据动态结构创建动态内表类型CALLMETHODcl_abap_tabledescr=>create
8、 EXPORTING p_line_type=lr_struc RECEIVING p_result =lr_table.*参照动态结构类型和动态内表类型创建内表与工作区CREATEDATAdyn_wa TYPEHANDLElr_struc.CREATEDATAdyn_tableTYPEHANDLElr_table.*指定内表与工作区到字段符
此文档下载收益归作者所有