废话不多说,直接上傻瓜代码。归根结底,就是要将显示的字段一行一行的放入fieldcat的表里。
"定义ALV数据变量DATA: IT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV, WA_FIELDCAT TYPE SLIS_FIELDCAT_ALV, WA_LAYOUT TYPE SLIS_LAYOUT_ALV."定义ALV结构字段,使用宏的方式DATA: POS TYPE I.DEFINE ADD1. CLEAR wa_fieldcat. ADD 1 TO POS. WA_FIELDCAT-FIELDNAME = &1. "字段名称 WA_FIELDCAT-TABNAME = &2. "字段所在的表 WA_FIELDCAT-SELTEXT_M = &3."字段描述 APPEND WA_FIELDCAT TO IT_FIELDCAT.END-OF-DEFINITION."透明表取数SELECT AUFNR, AUART, ERNAM INTO TABLE @DATA(AUFK_TAB) FROM AUFK UP TO 10 ROWS.CLEAR:WA_FIELDCAT,IT_FIELDCAT,WA_LAYOUT."增加显示字段ADD1 'AUFNR' 'AUFK_TAB' '销售订单'.ADD1 'AUART' 'AUFK_TAB' '销售类型'.ADD1 'ERNAM' 'AUFK_TAB' '创建者'."ALV格式控制WA_LAYOUT-ZEBRA = 'X'. "呈现颜色交替WA_LAYOUT-COLWIDTH_OPTIMIZE = 'X'. "优化列宽选项是否设置"调用ALV显示函数CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING I_CALLBACK_PROGRAM = SY-REPID IS_LAYOUT = WA_LAYOUT IT_FIELDCAT = IT_FIELDCAT TABLES T_OUTTAB = AUFK_TAB EXCEPTIONS PROGRAM_ERROR = 1 OTHERS = 2.IF SY-SUBRC <> 0.ENDIF.
显示效果:
其中宏的一部分也可变成慢慢的将工作区加入进fieldcat表,见下一篇例子。