合同 制作 网站,手机app免费开发软件,河南住房和城乡建设厅网站,wordpress 背景特效插件BAP中创建动态内表的三种方法 第一种#xff1a; 如果我们需要的动态内表字段或者动态工作区和数据字典中的类型一致#xff0c;可以直接使用CREATE DATA生成,当然也可以是自定义类型。 比如要产生和数据表MARA结构一致的动态内表#xff1a; DATA : DY_TABLE TYPE REF TO D… BAP中创建动态内表的三种方法 第一种 如果我们需要的动态内表字段或者动态工作区和数据字典中的类型一致可以直接使用CREATE DATA生成,当然也可以是自定义类型。 比如要产生和数据表MARA结构一致的动态内表 DATA : DY_TABLE TYPE REF TO DATA, WA_LINE TYPE REF TO DATA. FIELD-SYMBOLS: DYN_TABLE TYPE STANDARD TABLE . CREATE DATA DY_TABLE TYPE TABLE OF MARA. ASSIGN DY_TABLE-* TO DYN_TABLE. CREATE DATA WA_LINE LIKE LINE OF DYN_TABLE.ASSIGN WA_LINE-* TO DYN_WA. 如果在程序中需要动态生成多个不同的动态内表可以将表名设置为变量 CREATE DATA DY_TABLE TYPE TABLE OF tabname. 第二种 如果需要对动态内表进行输出控制输出顺序等属性。可以使用下述方法 CALL FUNCTION LVC_FIELDCATALOG_MERGEEXPORTINGI_CLIENT_NEVER_DISPLAY I_STRUCTURE_NAME TABNAMECHANGINGCT_FIELDCAT IT_STRUCTUREEXCEPTIONSINCONSISTENT_INTERFACE 1PROGRAM_ERROR 2OTHERS 3. 使用该方法创建输入的tabname对应的字段目录 之后根据该字段目录产生与之对应的动态内表结构 CALL METHOD CL_ALV_TABLE_CREATECREATE_DYNAMIC_TABLEEXPORTINGIT_FIELDCATALOG IT_STRUCTURE* I_LENGTH_IN_BYTE XIMPORTINGEP_TABLE DY_TABLE. ASSIGN DY_TABLE-* TO DYN_TABLE. 动态工作区的产生跟第一种一样。 该方法有一种弊端仅能连续使用36次。即改方法产生动态是使用创建子例程的方法当连续使用36次时会出现子例程池溢出的异常以为该方法是针对ALV技术的处理所以用于其它地方的时候需要慎重。 第三种 第三种的基本思路跟第二种是一样的只是使用的类和方法不一样导致输入的数据不一样。 首先产生结构 CALL FUNCTION LVC_FIELDCATALOG_MERGEEXPORTINGI_CLIENT_NEVER_DISPLAY I_STRUCTURE_NAME TABNAMECHANGINGCT_FIELDCAT IT_STRUCTUREEXCEPTIONSINCONSISTENT_INTERFACE 1PROGRAM_ERROR 2OTHERS 3. 根据字段产生的字段目录生成相应的接口参数ZCOMPONENTS DATA ZCOMPONENTS TYPE ABAP_COMPONENT_TAB. 在声明该变量前要声明 TYPE-POOLS:ABAP. ABAP_COMPONENT_TAB这个结构中的字段如下所示 name TYPE string,type TYPE REF TO cl_abap_datadescr,as_include TYPE abap_bool,suffix TYPE string, 所以循环之前产生的字段目录内表 name字段是结构名或者表名 即TABNAME type是一个对象可以使用 CL_ABAP_DATADESCRDESCRIBE_BY_NAME 这个方法得到其中 P_NAME 这个参数是表名或结构名字段名 type 使用符号来获取 P_DESCR_REF 的实例 后两个可以不填 产生结构 CALL METHOD CL_ABAP_STRUCTDESCRCREATEEXPORTINGP_COMPONENTS ZCOMPONENTS RECEIVINGP_RESULT ZRESULT . 产生表 CALL METHOD CL_ABAP_TABLEDESCRCREATEEXPORTINGP_LINE_TYPE ZRESULT RECEIVINGP_RESULT WRESULT. CREATE DATA WA_LINE TYPE HANDLE ZRESULT.CREATE DATA DYN_TABLE TYPE HANDLE WRESULT. 该方法可以避免方法2的弊端。 转载于:https://www.cnblogs.com/yanglikun/p/4177973.html