式网站,有户型图怎么免费设计装修,南京今天重大新闻事件,南昌建设企业网站很多时候我们的alv报表列是动态的不确定#xff0c;这样的话如果用平时那种办法肯定是不可行的。 最近有个需求刚好是alv动态的报表#xff0c;所以现学现卖#xff0c;总结经验一下#xff1a; 有一般的列是固定的#xff0c;还有一些列是动态的 必须要定义的语法如下 *存…很多时候我们的alv报表列是动态的不确定这样的话如果用平时那种办法肯定是不可行的。 最近有个需求刚好是alv动态的报表所以现学现卖总结经验一下 有一般的列是固定的还有一些列是动态的 必须要定义的语法如下 *存储动态字段DATA: IT_STRUCTURE TYPE LVC_T_FCAT, 存储动态内表列的内表其中的每一行代表动态内表的一列 WA_STRUCTURE TYPE LVC_S_FCAT. lvc_t_fact的工作区 取出数据存储在内表IT_DATA中其中内表IT_DATA中的部分值是动态内表的描述和字段。 这边循环内表IT_DATA把值赋给IT_STRUCTURE loop IT_DATA TRANSLATE IT_DATA-ATNAM TO UPPER CASE. 把字段转换为大写 WA_STRUCTURE-FIELDNAME IT_DATA-ATNAM. 动态字段 WA_STRUCTURE-SCRTEXT_L IT_DATA-ATBEZ. 描述 WA_STRUCTURE-SCRTEXT_M IT_DATA-ATBEZ. 描述 WA_STRUCTURE-SCRTEXT_S IT_DATA-ATBEZ. 描述 WA_STRUCTURE-INTLEN 60 . 字段长度 WA_STRUCTURE-OUTPUTLEN 30 . 字段长度 APPEND WA_STRUCTURE TO IT_STRUCTURE. CLEAR IT_DATA. endloop. ************************************下面是指定 组件COL_POS类似于alv下面的输出列位置 CLEAR WA_STRUCTURE. LOOP AT IT_STRUCTURE INTO WA_STRUCTURE. I_COL I_COL 1. WA_STRUCTURE-COL_POS I_COL. MODIFY IT_STRUCTURE FROM WA_STRUCTURE TRANSPORTING COL_POS. CLEAR WA_STRUCTURE. ENDLOOP. 还有关于固定的那些字段的定义如 CLEAR WA_STRUCTURE. WA_STRUCTURE-FIELDNAME AUFNR. 字段 WA_STRUCTURE-SCRTEXT_L 订单号码. 描述可用于alv显示时候赋给SELTEXT_L WA_STRUCTURE-SCRTEXT_M 订单号码. WA_STRUCTURE-SCRTEXT_S 订单号码. WA_STRUCTURE-ICON . WA_STRUCTURE-REF_TABLE AUFK. 参考数据表 很重要 WA_STRUCTURE-REF_FIELD AUFNR. 参考字段 很重要 这两个如果不写的话 会默认都是字符类型需要定义长度而且alv不会有 汇总按钮 WA_STRUCTURE-COL_POS TEMP. 定义变量用于alv显示时候的输出位置 WA_STRUCTURE-OUTPUTLEN 13. 特别需要注意的是这种生成动态字段的方式如果没有定义长度的时候alv的筛选是没有用的所以需要添加 APPEND WA_STRUCTURE TO IT_STRUCTURE. CLEAR IT_DATA. ************接下来就需要顶用一个类的静态方法实现这个动态内表 DATA: P_TABLE TYPE REF TO DATA. “定义引用 CALL METHOD CL_ALV_TABLE_CREATECREATE_DYNAMIC_TABLE ”调用此静态方法 EXPORTING IT_FIELDCATALOG IT_STRUCTURE “输入值为存了字段的内表 I_LENGTH_IN_BYTE X ”这个不知道 IMPORTING EP_TABLE P_TABLE. “输出该引用 ASSIGN P_TABLE-* TO TABLE. ”接触引用并且把表赋值给指针table *************给内表赋值 DATA:P_LINE TYPE REF TO DATA. “定义引用 LOOP AT GT_TAB INTO GS_TAB. CREATE DATA P_LINE LIKE LINE OF TABLE. 根据内表TABLE.创建行的引用 ASSIGN P_LINE-* TO LINE. 接触引用并且指向指针line. ASSIGN COMPONENT AUFNR OF STRUCTURE LINE TO DY_FIELD. 把结构line中的AUFNR地址指向指针DY_FIELD. DY_FIELD GS_TAB-AUFNR. ”把 GS_TAB-AUFNR赋值给字段符号DY_FIELD 也就是此时说line中的AUFNR的值就是GS_TAB-AUFNR. LOOP AT IT_DATA WHERE AUFNR GS_TAB-AUFNR AND MATNR GS_TAB-MATNR AND CHARG GS_TAB-CHARG. ASSIGN COMPONENT IT_DATA-ATNAM OF STRUCTURE LINE TO DY_FIELD. 循环内表方法同上 DY_FIELD IT_DATA-ATWRT. ENDLOOP. endloop. append line to table 到这一步动态内表已经定义好并赋值完毕 接下来只需要输出alv方法和一般的一样 甚至更简单些 *layout control GS_LAYOUT-ZEBRA X. 显示斑马线 GS_LAYOUT-COLWIDTH_OPTIMIZE X. 自动调整列宽 CLEAR: WA_STRUCTURE,GS_FIELDCAT. LOOP AT IT_STRUCTURE INTO WA_STRUCTURE. MOVE-CORRESPONDING WA_STRUCTURE TO GS_FIELDCAT. GS_FIELDCAT-SELTEXT_L WA_STRUCTURE-SCRTEXT_L. GS_FIELDCAT-SELTEXT_M WA_STRUCTURE-SCRTEXT_M. GS_FIELDCAT-SELTEXT_M WA_STRUCTURE-SCRTEXT_M. IF GS_FIELDCAT-FIELDNAME AUFNR OR GS_FIELDCAT-FIELDNAME ZMATNR OR GS_FIELDCAT-FIELDNAME MATNR. GS_FIELDCAT-NO_ZERO X. ENDIF. APPEND GS_FIELDCAT TO GT_FIELDCAT. CLEAR: WA_STRUCTURE,GS_FIELDCAT. ENDLOOP. GF_REPID SY-REPID. CALL FUNCTION REUSE_ALV_GRID_DISPLAY EXPORTING I_CALLBACK_PROGRAM GF_REPID IS_LAYOUT GS_LAYOUT IT_FIELDCAT GT_FIELDCAT I_SAVE A 保存标准格式和用户特定格式 TABLES T_OUTTAB TABLE EXCEPTIONS PROGRAM_ERROR 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. 转载于:https://www.cnblogs.com/caizjian/p/3312158.html