1 进入ABAP数据字典,查看表sflight的表结构
2 建立内表it_sflight和工作区wa_sflight,数据类型与sflight相同
3 建立选择屏幕,其中carrid字段,要求用户选择一项,connid和fldate字段,用户可以选定一定范围的数据
4 设置carrid字段默认值为AA
5 用户在选择屏幕录入数据后,要求carrid必填,connid和fldate字段至少要填一个
6 将sflight的所有字段用ALV进行输出,要求自动调整列宽
7用SE37 分析功能模块REUSE_ALV_GRID_DISPLAY_LVC
8分析参数IT_FIELDCAT_LVC 的类型和结构
通过给该参数赋值,实现在ALV中只显示
carrid connid fldate price currencyplanetype seatsmax seatsocc
这几个字段
9 重新定义it_sflight 和wa_sflight 增加 occpercent字段,计算百分比
在alv中显示occpercent字段
实例代码:
TYPES:BEGIN OF TY_SFLIGHT,
CARRID TYPE SFLIGHT-CARRID,
CONNID TYPE SFLIGHT-CONNID,
FLDATE TYPE SFLIGHT-FLDATE,
PRICE TYPE SFLIGHT-PRICE,
CURRENCY TYPE SFLIGHT-CURRENCY,
PLANETYPE TYPE SFLIGHT-PLANETYPE,
SEATSMAX TYPE SFLIGHT-SEATSMAX,
SEATSOCC TYPE SFLIGHT-SEATSOCC,
OCCPERCENT TYPE P DECIMALS 2,
END OF TY_SFLIGHT.
DATA:it_sflight TYPE TABLE OF TY_sflight.
DATA wa_sflight TYPE TY_sflight.
DATA connid TYPE sflight-connid.
DATA fldate TYPE sflight-fldate.
DATA:IT_FIELDCAT_LVC TYPE LVC_T_FCAT,
WA_FIELDCAT_LVC TYPE LINE OF LVC_T_FCAT.
PARAMETERS p_car TYPE sflight-carrid.
SELECT-OPTIONS: p_con FOR connid,
p_fld FOR fldate.
LOAD-OF-PROGRAM.
p_car = 'AA'.
AT SELECTION-SCREEN ON P_CAR.
IF p_car is INITIAL .
MESSAGE e000(ZBC3_WJ_MSG).
ENDIF.
AT SELECTION-SCREEN.
IF p_con is INITIAL AND p_fld is INITIAL.
MESSAGE e001(ZBC3_WJ_MSG).
ENDIF.
SELECT *
FROM sflight
INTO CORRESPONDING FIELDS OF TABLE it_sflight
WHERE carrid = p_car
AND connid IN p_con
AND fldate IN p_fld.
LOOP AT it_sflight INTO wa_sflight.
WA_SFLIGHT-OCCPERCENT = WA_SFLIGHT-SEATSOCC / WA_SFLIGHT-SEATSMAX.
MODIFY it_sflight from wa_sflight.
ENDLOOP.
DATA is_layout_lvc TYPE lvc_s_layo.
Is_layout_lvc-cwidth_opt = 'X'.
WA_SFLIGHT-OCCPERCENT = WA_SFLIGHT-SEATSOCC / WA_SFLIGHT-SEATSMAX.
PERFORM SETDATA.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
EXPORTING
* I_INTERFACE_CHECK = ' '
* I_BYPASSING_BUFFER =
* I_BUFFER_ACTIVE =
* I_CALLBACK_PROGRAM = ' '
* I_CALLBACK_PF_STATUS_SET = ' '
* I_CALLBACK_USER_COMMAND = ' '
* I_CALLBACK_TOP_OF_PAGE = ' '
* I_CALLBACK_HTML_TOP_OF_PAGE = ' '
* I_CALLBACK_HTML_END_OF_LIST = ' '
* I_STRUCTURE_NAME = 'sflight'
* I_BACKGROUND_ID = ' '
* I_GRID_TITLE =
* I_GRID_SETTINGS =
IS_LAYOUT_LVC = Is_layout_lvc
IT_FIELDCAT_LVC = IT_FIELDCAT_LVC
* IT_EXCLUDING =
* IT_SPECIAL_GROUPS_LVC =
* IT_SORT_LVC =
* IT_FILTER_LVC =
* IT_HYPERLINK =
* IS_SEL_HIDE =
* I_DEFAULT = 'X'
* I_SAVE = ' '
* IS_VARIANT =
* IT_EVENTS =
* IT_EVENT_EXIT =
* IS_PRINT_LVC =
* IS_REPREP_ID_LVC =
* I_SCREEN_START_COLUMN = 0
* I_SCREEN_START_LINE = 0
* I_SCREEN_END_COLUMN = 0
* I_SCREEN_END_LINE = 0
* I_HTML_HEIGHT_TOP =
* I_HTML_HEIGHT_END =
* IT_ALV_GRAPHICS =
* IT_EXCEPT_QINFO_LVC =
* IR_SALV_FULLSCREEN_ADAPTER =
* IMPORTING
* E_EXIT_CAUSED_BY_CALLER =
* ES_EXIT_CAUSED_BY_USER =
TABLES
T_OUTTAB = it_sflight
* EXCEPTIONS
* PROGRAM_ERROR = 1
* OTHERS = 2
.
IF SY-SUBRC <> 0.
* Implement suitable error handling here
ENDIF.
FORM SETDATA.
CLEAR WA_FIELDCAT_LVC.
WA_SFLIGHT-OCCPERCENT = WA_SFLIGHT-SEATSOCC / WA_SFLIGHT-SEATSMAX.
WA_FIELDCAT_LVC-COL_POS = 1.
WA_FIELDCAT_LVC-FIELDNAME = 'CARRID'.
WA_FIELDCAT_LVC-REPTEXT = 'CARRID'.
APPEND WA_FIELDCAT_LVC TO IT_FIELDCAT_LVC.
WA_FIELDCAT_LVC-COL_POS = 2.
WA_FIELDCAT_LVC-FIELDNAME = 'ONNID'.
WA_FIELDCAT_LVC-REPTEXT = 'CONNID'.
APPEND WA_FIELDCAT_LVC TO IT_FIELDCAT_LVC.
WA_FIELDCAT_LVC-COL_POS = 3.
WA_FIELDCAT_LVC-FIELDNAME = 'FLDATE'.
WA_FIELDCAT_LVC-REPTEXT = 'FLDATE'.
APPEND WA_FIELDCAT_LVC TO IT_FIELDCAT_LVC.
WA_FIELDCAT_LVC-COL_POS = 4.
WA_FIELDCAT_LVC-FIELDNAME = 'PRICE'.
WA_FIELDCAT_LVC-REPTEXT = 'PRICE'.
APPEND WA_FIELDCAT_LVC TO IT_FIELDCAT_LVC.
WA_FIELDCAT_LVC-COL_POS = 5.
WA_FIELDCAT_LVC-FIELDNAME = 'CURRENCY'.
WA_FIELDCAT_LVC-REPTEXT = 'CURRENCY'.
APPEND WA_FIELDCAT_LVC TO IT_FIELDCAT_LVC.
WA_FIELDCAT_LVC-COL_POS = 6.
WA_FIELDCAT_LVC-FIELDNAME = 'PLANETYPE'.
WA_FIELDCAT_LVC-REPTEXT = 'PLANETYPE'.
APPEND WA_FIELDCAT_LVC TO IT_FIELDCAT_LVC.
WA_FIELDCAT_LVC-COL_POS = 7.
WA_FIELDCAT_LVC-FIELDNAME = 'SEATSMAX'.
WA_FIELDCAT_LVC-REPTEXT = 'SEATSMAX'.
APPEND WA_FIELDCAT_LVC TO IT_FIELDCAT_LVC.
WA_FIELDCAT_LVC-COL_POS = 7.
WA_FIELDCAT_LVC-FIELDNAME = 'SEATSOCC'.
WA_FIELDCAT_LVC-REPTEXT = 'SEATSOCC'.
APPEND WA_FIELDCAT_LVC TO IT_FIELDCAT_LVC.
WA_FIELDCAT_LVC-COL_POS = 8.
WA_FIELDCAT_LVC-FIELDNAME = 'OCCPERCENT'.
WA_FIELDCAT_LVC-REPTEXT = 'OCCPERCENT'.
APPEND WA_FIELDCAT_LVC TO IT_FIELDCAT_LVC.
ENDFORM.
运行结果: