欢迎来到天天文库
浏览记录
ID:13458525
大小:40.00 KB
页数:6页
时间:2018-07-22
《abap 动态生成内表》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、ABAP动态生成内表的几种方法最近要写个程序,既有更新的,也有删除的,需要涉及到很多系统表,如果一个表一个表进行更新或者删除太慢了,于是就想通过创建动态内表来实现这些功能,在网上找了一些资料,经过多次尝试,终于测试成功了。网上讲述的创建动态内表的方法大致有两种。我做了一下测试,源代码附后。在这里提醒大家一点,在做动态更新程序的时候,要注意两点:1.使用modify(p_tabname)from.的时候,一定要确定要更新的字段是不是系统表的关键字段,如果是关键字段的话,需要先删除这条记录,delet
2、e (p_tabname)from.再进行modify,因为modify进行更新的时候如果不存在就新增,这点一定要注意。2.如果使用UPDATE进行更新,对于非主键字段的改变还是可以的,但是对于主键字段,只能用MODIFY了。直接对SAP数据做UPDATE和MODIFY是很危险的,不到万不得已,最好不要做这些操作。如果万一出问题,会很严重的。这里就不用更新和删除程序作为测试程序了,直接做一个动态内表ALV显示的测试程序,道理和更新与删除差不多,希望对有这方面需求的朋友有所帮助!3.最近从同事程序中
3、发现另一种创建动态内表的简便方法,附3中为测试代码。觉得这个方法更简单些……附1:REPORTZCL_TEST026.TYPE-POOLS:abap.PARAMETERSp_nameTYPEtabname.DATAlt_tableTYPETABLEOFdfies."字段结构表DATAls_tableTYPEdfies.DATAlr_strucTYPEREFTOcl_abap_structdescr.DATAlr_tableTYPEREFTOcl_abap_tabledescr.DATAlr_typeTYPEREF
4、TOcl_abap_typedescr.DATAlr_dataTYPEREFTOcl_abap_datadescr.DATAlt_compTYPEabap_component_tab.DATAls_compLIKELINEOFlt_comp.DATAdyn_waTYPEREFTOdata.DATAdyn_tableTYPEREFTOdata.DATAl_stringTYPEstring.FIELD-SYMBOLS:TYPESTANDARDTABLE,TYPEANY.*1.获取
5、表中的字段结构CALLFUNCTION'DDIF_NAMETAB_GET'EXPORTINGtabname=p_nameTABLESdfies_tab=lt_tableEXCEPTIONSnot_found=1OTHERS=2.IFsy-subrc<>0.MESSAGEIDsy-msgidTYPEsy-msgtyNUMBERsy-msgnoWITHsy-msgv1sy-msgv2sy-msgv3sy-msgv4.ENDIF.LOOPATlt_tableINTOls_table.CONCATENATEls_tabl
6、e-tabname'-'ls_table-fieldnameINTOl_string.ls_comp-name=ls_table-fieldname.*读取字段类型CALLMETHODcl_abap_datadescr=>describe_by_nameEXPORTINGp_name=l_stringRECEIVINGp_descr_ref=lr_typeEXCEPTIONStype_not_found=1OTHERS=2.IFsy-subrc<>0.MESSAGEIDsy-msgidTYPEsy-msgtyNU
7、MBERsy-msgnoWITHsy-msgv1sy-msgv2sy-msgv3sy-msgv4.ENDIF.ls_comp-type?=lr_type.APPENDls_compTOlt_comp.CLEARls_comp.ENDLOOP.*根据字段目录创建动态结构类型CALLMETHODcl_abap_structdescr=>createEXPORTINGp_components=lt_compRECEIVINGp_result=lr_struc.*根据动态结构创建动态内表类型CALLMETHODcl_ab
8、ap_tabledescr=>createEXPORTINGp_line_type=lr_strucRECEIVINGp_result=lr_table.*参照动态结构类型和动态内表类型创建内表与工作区CREATEDATAdyn_waTYPEHANDLElr_struc.CREATEDATAdyn_tableTYPEHANDLElr_table.*指定内表与工作区到字段符
此文档下载收益归作者所有