效果如下:

实现:
ZREPORT_DEMO
*&---------------------------------------------------------------------* *& Report ZREPORT_DEMO *& *&---------------------------------------------------------------------* *& *& *&---------------------------------------------------------------------* REPORT ZREPORT_DEMO. INCLUDE ZREPORT_DEMO_T01. INCLUDE ZREPORT_DEMO_F01. START-OF-SELECTION. PERFORM GET_ALV_DATA."数据处理 PERFORM FIELD_OUTPUT."调用屏幕显示字段方法 END-OF-SELECTION. PERFORM DATA_OUTPUT."调用屏幕输出设置方法
ZREPORT_DEMO_T01
*&---------------------------------------------------------------------* *& 包括 ZREPORT_DEMO_T01 *&---------------------------------------------------------------------* TABLES:EBAN. TYPE-POOLS:SLIS. TYPES:BEGIN OF TY_TAB, BANFN TYPE EBAN-BANFN, EBAKZ TYPE EBAN-EBAKZ, MATNR TYPE EBAN-MATNR, TXZ01 TYPE EBAN-TXZ01, MEINS TYPE MEINS, END OF TY_TAB. DATA:GT_TAB TYPE TABLE OF TY_TAB, GW_TAB TYPE TY_TAB."创建一个参照TY_TAB的全局工作区 FIELD-SYMBOLS <FS_TAB> TYPE TY_TAB. " 引入宏方式添加屏幕显示字段 DEFINE ADD_FIELD. WA_FIELD-FIELDNAME = &1. WA_FIELD-COLTEXT = &2. * WA_FIELD-EDIT = &3. "设置可编辑 * WA_FIELD-CHECKBOX = &4. "设置是否选择框 APPEND WA_FIELD TO IT_FIELD. END-OF-DEFINITION. " 声明屏幕显示字段需要的变量 DATA: IT_FIELD TYPE LVC_T_FCAT, WA_FIELD TYPE LVC_S_FCAT, STYLELIN TYPE LVC_S_STYL. *----------------------- *选择屏幕 *----------------------- SELECTION-SCREEN: BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001. SELECT-OPTIONS:S_WERKS FOR EBAN-WERKS, S_MATNR FOR EBAN-MATNR, S_BANFN FOR EBAN-BANFN, S_AFNAM FOR EBAN-AFNAM NO INTERVALS, S_BADAT FOR EBAN-BADAT. SELECTION-SCREEN: END OF BLOCK B1. PARAMETERS P_RFQ AS CHECKBOX. "CHECKBOX
ZREPORT_DEMO_F01
*&---------------------------------------------------------------------* *& 包括 ZREPORT_DEMO_F01 *&---------------------------------------------------------------------* *&---------------------------------------------------------------------* *& Form GET_ALV_DATA *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM GET_ALV_DATA . SELECT "DISTINCT EBAN~BANFN EBAN~EBAKZ EBAN~MATNR EBAN~TXZ01 FROM EBAN LEFT JOIN EKET ON EKET~BANFN EQ EBAN~BANFN AND EKET~BNFPO EQ EBAN~BNFPO LEFT JOIN T001W ON T001W~WERKS EQ EBAN~WERKS UP TO 100 ROWS INTO CORRESPONDING FIELDS OF TABLE GT_TAB WHERE EBAN~WERKS IN S_WERKS AND EBAN~MATNR IN S_MATNR AND EBAN~BANFN IN S_BANFN AND EBAN~AFNAM IN S_AFNAM AND EBAN~BADAT IN S_BADAT. IF SY-SUBRC EQ 0. LOOP AT GT_TAB ASSIGNING <FS_TAB>. CALL FUNCTION 'CONVERSION_EXIT_CUNIT_OUTPUT' EXPORTING INPUT = <FS_TAB>-MEINS * LANGUAGE = SY-LANGU IMPORTING * LONG_TEXT = OUTPUT = <FS_TAB>-MEINS * SHORT_TEXT = EXCEPTIONS UNIT_NOT_FOUND = 1 OTHERS = 2 . IF SY-SUBRC <> 0. * Implement suitable error handling here ENDIF. ENDLOOP. ENDIF. ENDFORM. " GET_ALV_DATA *&---------------------------------------------------------------------* *& Form FIELD_OUTPUT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM FIELD_OUTPUT. CLEAR:WA_FIELD,IT_FIELD. ADD_FIELD 'BANFN' '采购申请'. ADD_FIELD 'BNFPO' '申请申请行项'. ADD_FIELD 'EBAKZ' '关闭状态'. ADD_FIELD 'BADAT' '申请日期'. ADD_FIELD 'AFNAM' '申请者'. ENDFORM. "FIELD_OUTPUT *&---------------------------------------------------------------------* *& Form DATA_OUTPUT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM DATA_OUTPUT. "定义ALV输入时宽度自动适应 DATA: WA_LAYOUT TYPE LVC_S_LAYO. "设置输出格式,自适应等 WA_LAYOUT-CWIDTH_OPT = 'X'. "设置宽度自适应 WA_LAYOUT-CWIDTH_OPT = 'X'. "设置宽度自适应 CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC' " 调用函数 EXPORTING IT_FIELDCAT_LVC = IT_FIELD IS_LAYOUT_LVC = WA_LAYOUT " 设置表单格式 I_CALLBACK_PROGRAM = SY-REPID * I_CALLBACK_PF_STATUS_SET = 'PF_STATUS' I_CALLBACK_USER_COMMAND = 'FRM_USER_COMMAND' I_SAVE = 'U' TABLES T_OUTTAB = GT_TAB EXCEPTIONS PROGRAM_ERROR = 1 OTHERS = 2. ENDFORM. "DATA_OUTPUT *&---------------------------------------------------------------------* *& Form PF_STATUS *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->RT_EXTAB text *----------------------------------------------------------------------* FORM PF_STATUS USING RT_EXTAB TYPE SLIS_T_EXTAB. SET PF-STATUS 'STATUS'. ENDFORM. "PF_STATUS *&---------------------------------------------------------------------* *& Form FRM_USER_COMMAND *&---------------------------------------------------------------------* *& text *&---------------------------------------------------------------------* *& --> p1 text *& <-- p2 text *&---------------------------------------------------------------------* FORM FRM_USER_COMMAND USING R_UCOMM LIKE SY-UCOMM"屏幕流 RS_SELFIELD TYPE SLIS_SELFIELD. CALL SCREEN 0100 STARTING AT 80 1. ENDFORM. "FRM_USER_COMMAND *&---------------------------------------------------------------------* *& Module STATUS_0100 OUTPUT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* MODULE STATUS_0100 OUTPUT. SET PF-STATUS 'ZSTATUS_100'. SET TITLEBAR '远程图片查看'. DATA: CTL_PIC01 TYPE SCRFNAME VALUE 'CTL_PIC01', "定义屏幕控件同名变量,custome control区域 GO_CTN_PIC01 TYPE REF TO CL_GUI_CUSTOM_CONTAINER, "用于联接屏幕控件和图片的对象 GO_CGI_PIC01 TYPE REF TO CL_GUI_PICTURE. "图片对象 DATA: GV_URL01 TYPE CNDP_URL VALUE 'http://cn.bing.com//th?id=OHR.SmileySloth_ZH-CN5943980097_1920x1080.jpg&rf=LaDigue_1920x1080.jpg', *DATA: GV_URL01 TYPE CNDP_URL VALUE 'ftp://way:way@192.168.150.50:21/logo.jpg', GV_RETURN02 TYPE I. CREATE OBJECT GO_CTN_PIC01 EXPORTING CONTAINER_NAME = CTL_PIC01. CREATE OBJECT GO_CGI_PIC01 EXPORTING PARENT = GO_CTN_PIC01. CALL METHOD GO_CGI_PIC01->SET_DISPLAY_MODE EXPORTING DISPLAY_MODE = CL_GUI_PICTURE=>DISPLAY_MODE_FIT. CALL METHOD GO_CGI_PIC01->LOAD_PICTURE_FROM_URL_ASYNC EXPORTING URL = GV_URL01. ENDMODULE. " STATUS_0100 OUTPUT *&---------------------------------------------------------------------* *& Module USER_COMMAND_0100 INPUT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* MODULE USER_COMMAND_0100 INPUT. LEAVE TO SCREEN 0. ENDMODULE. " USER_COMMAND_0100 INPUT


网友评论