OO ALV-增加子屏幕控件,选择屏幕OO ALV同屏
在OO ALV-02中新建子屏幕控件,使得查询选择屏幕和OO ALV同屏
1.修改Z_SIMPLE_ALV->屏幕0100布局
- 调整CONTRAINER01大小,留出区域建立SC_9001
2.屏幕状态STATUS_0100,新建查询按钮
3.设置PBO PAI逻辑调用SC_9001屏幕
PROCESS BEFORE OUTPUT.
* MODULE STATUS_0100.
*
MODULE SET_PF_STATUS_0100.
CALL SUBSCREEN: SC_9001 INCLUDING sy-repid DYNNR_9001.
MODULE SHOW_ALV.
PROCESS AFTER INPUT.
* MODULE USER_COMMAND_0100.
CALL SUBSCREEN: SC_9001.
MODULE USER_COMMAND_0100.
4.报表Z_SIMPLE_ALV主代码
*------------------------------------------------------------------* "数据定义
TABLES:SFLIGHT.
DATA: GO_CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER,
GO_GRID TYPE REF TO CL_GUI_ALV_GRID.
CONSTANTS: GC_CNTRNAME TYPE SCRFNAME VALUE 'CONTAINER01',
DYNNR_9001 TYPE CHAR4 VALUE '9001'. "子屏幕号
DATA: GS_DATA LIKE SFLIGHT,
GT_DATA LIKE TABLE OF GS_DATA.
DATA: GS_LAYOUT TYPE LVC_S_LAYO.
DATA: OK_CODE LIKE SY-UCOMM.
*------------------------------------------------------------------* "选择屏幕定义
SELECTION-SCREEN BEGIN OF SCREEN 9001 AS SUBSCREEN.
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS: S_CARRID FOR SFLIGHT-CARRID,
S_CONNID FOR SFLIGHT-CONNID NO-EXTENSION NO INTERVALS.
SELECTION-SCREEN END OF BLOCK B1.
SELECTION-SCREEN END OF SCREEN 9001.
*------------------------------------------------------------------* "报表流逻辑
INITIALIZATION.
START-OF-SELECTION.
CALL SCREEN 100.
*------------------------------------------------------------------* "PBO PAI逻辑流模块
MODULE SET_PF_STATUS_0100 OUTPUT.
SET PF-STATUS 'STATUS_0100'.
ENDMODULE.
MODULE SHOW_ALV OUTPUT.
PERFORM FRM_INIT_DATA.
PERFORM FRM_INIT_CONTAINER.
PERFORM FRM_SET_LAYOUT.
PERFORM FRM_DISPLAY_ALV.
ENDMODULE.
MODULE USER_COMMAND_0100 INPUT.
DATA: SAVE_OK TYPE SY-UCOMM.
SAVE_OK = OK_CODE.
CASE SAVE_OK.
WHEN 'BACK'.
PERFORM EXIT_PROGRAM.
WHEN 'EXIT'.
PERFORM EXIT_PROGRAM.
WHEN 'EXEC'.
PERFORM FRM_REFRESH_ALV.
ENDCASE.
CLEAR SAVE_OK.
ENDMODULE.
*------------------------------------------------------------------* "FORM 定义PBO
FORM FRM_INIT_DATA .
ENDFORM.
FORM FRM_INIT_CONTAINER.
"初始化容器对象
IF GO_CONTAINER IS INITIAL.
CREATE OBJECT GO_CONTAINER
EXPORTING
CONTAINER_NAME = GC_CNTRNAME
EXCEPTIONS
CNTL_ERROR = 1
CNTL_SYSTEM_ERROR = 2
CREATE_ERROR = 3
LIFETIME_ERROR = 4
LIFETIME_DYNPRO_DYNPRO_LINK = 5.
ENDIF.
"初始化GRID ALV对象
IF GO_GRID IS INITIAL.
CREATE OBJECT GO_GRID
EXPORTING
I_PARENT = GO_CONTAINER
EXCEPTIONS
ERROR_CNTL_CREATE = 1
ERROR_CNTL_INIT = 2
ERROR_CNTL_LINK = 3
ERROR_DP_CREATE = 4.
ENDIF.
ENDFORM.
FORM FRM_SET_LAYOUT.
GS_LAYOUT-CWIDTH_OPT = 'X'. "优化列宽
GS_LAYOUT-ZEBRA = 'X'. "斑马纹
ENDFORM.
FORM FRM_DISPLAY_ALV .
CALL METHOD GO_GRID->SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING
* I_BUFFER_ACTIVE =
* I_BYPASSING_BUFFER =
* I_CONSISTENCY_CHECK =
I_STRUCTURE_NAME = 'SFLIGHT'
* IS_VARIANT =
* I_SAVE =
* I_DEFAULT = 'X'
IS_LAYOUT = GS_LAYOUT
* IS_PRINT =
* IT_SPECIAL_GROUPS =
* IT_TOOLBAR_EXCLUDING =
* IT_HYPERLINK =
* IT_ALV_GRAPHICS =
* IT_EXCEPT_QINFO =
* IR_SALV_ADAPTER =
CHANGING
IT_OUTTAB = GT_DATA
* IT_FIELDCATALOG =
* IT_SORT =
* IT_FILTER =
EXCEPTIONS
INVALID_PARAMETER_COMBINATION = 1
PROGRAM_ERROR = 2
TOO_MANY_LINES = 3
OTHERS = 4.
ENDFORM.
*------------------------------------------------------------------* "FORM 定义PAI
FORM EXIT_PROGRAM.
CALL METHOD GO_CONTAINER->FREE.
CALL METHOD CL_GUI_CFW=>FLUSH.
IF SY-SUBRC NE 0.
* add your handling, for example
CALL FUNCTION 'POPUP_TO_INFORM'
EXPORTING
TITEL = SY-REPID
TXT2 = SY-SUBRC
TXT1 = 'Error in Flush'(009).
ENDIF.
LEAVE PROGRAM.
ENDFORM.
FORM FRM_GET_DATA .
SELECT *
FROM SFLIGHT
INTO TABLE GT_DATA
WHERE CARRID IN S_CARRID
AND CONNID IN S_CONNID.
ENDFORM.
FORM FRM_REFRESH_ALV.
PERFORM FRM_GET_DATA.
GO_GRID->REFRESH_TABLE_DISPLAY( ).
ENDFORM.
5.运行效果
post SAP-Garson
原文链接:https://blog.csdn.net/qq_30797051/article/details/119962033文章来自于网络,如果侵犯了您的权益,请联系站长删除!