
动态报表
-
2023年3月19日发(作者:世纪金榜教学资源网)ABAP--如何创建动态结构的报表
1、使⽤cl_alv_table_create=>create_dynamic_table
REPORTzmaschl_create_data_dynamic.
TYPE-POOLS:slis.
DATA:it_fcatTYPEslis_t_fieldcat_alv,
is_fcatLIKELINEOFit_fcat.
DATA:it_fieldcatTYPElvc_t_fcat,
is_fieldcatLIKELINEOFit_fieldcat.
DATA:new_tableTYPEREFTOdata.
DATA:new_lineTYPEREFTOdata.
FIELD-SYMBOLS:TYPEANYTABLE,
TYPEANY,
TYPEANY.
*Buildfieldcat
CALLFUNCTION'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_structure_name='SYST'
CHANGING
ct_fieldcat=it_fcat[].
LOOPATit_fcatINTOis_fcatWHERENOTreptext_ddicISinitial.
MOVE-CORRESPONDINGis_fcatTOis_fieldcat.
is_fieldcat-fieldname=is_fcat-fieldname.
is_fieldcat-ref_field=is_fcat-fieldname.
is_fieldcat-ref_table=is_fcat-ref_tabname.
APPENDis_fieldcatTOit_fieldcat.
ENDLOOP.
*CreateanewTable
CALLMETHODcl_alv_table_create=>create_dynamic_table
EXPORTING
it_fieldcatalog=it_fieldcat
IMPORTING
ep_table=new_table.
*CreateanewLinewiththesamestructureofthetable.
ASSIGNnew_table->*TO.
CREATEDATAnew_lineLIKELINEOF.
ASSIGNnew_line->*TO.
*Testit...
DO30TIMES.
ASSIGNCOMPONENT'SUBRC'OFSTRUCTURETO.
=sy-index.
INSERTINTOTABLE.
ENDDO.
LOOPATASSIGNING.
ASSIGNCOMPONENT'SUBRC'OFSTRUCTURETO.
WRITE.
ENDLOOP.
2、使⽤动态创建临时程序generatesubroutinepoolcodenameprog
messagemsg
linelin
wordwrd
offsetoff.并调。