废话不多说,直接上傻瓜代码。归根结底,就是要将显示的字段一行一行的放入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表,见下一篇例子。