不是自创的,群里大神分享的,应该是QA32,QA16等程序里都有的。
*&---------------------------------------------------------------------* *& Report ZLYTEST_SCREEN *& *&---------------------------------------------------------------------* *& *& *&---------------------------------------------------------------------* REPORT ZLYTEST_SCREEN. DATA: LV_SELECTION_ID TYPE RSDYNSEL-SELID, LT_TABLES_TAB TYPE STANDARD TABLE OF RSDSTABS, LS_TABLES_TAB TYPE RSDSTABS. DATA: LT_FIELDS_TAB TYPE STANDARD TABLE OF RSDSFIELDS, LT_WHERE_CLAUSES TYPE RSDS_TWHERE, GS_WHERE_CLAUSES LIKE LINE OF LT_WHERE_CLAUSES. DATA:GT_ZTSD_LSXY TYPE TABLE OF ZTSD_LSXY. DATA:LV_TABNAME TYPE TABNAME VALUE ‘ZTSD_LSXY‘. "可以多个表,字段等 LS_TABLES_TAB-PRIM_TAB = LV_TABNAME. APPEND LS_TABLES_TAB TO LT_TABLES_TAB. CALL FUNCTION ‘FREE_SELECTIONS_INIT‘ EXPORTING KIND = ‘T‘ IMPORTING SELECTION_ID = LV_SELECTION_ID TABLES TABLES_TAB = LT_TABLES_TAB EXCEPTIONS FIELDS_INCOMPLETE = 1 FIELDS_NO_JOIN = 2 FIELD_NOT_FOUND = 3 NO_TABLES = 4 TABLE_NOT_FOUND = 5 EXPRESSION_NOT_SUPPORTED = 6 INCORRECT_EXPRESSION = 7 ILLEGAL_KIND = 8 AREA_NOT_FOUND = 9 INCONSISTENT_AREA = 10 KIND_F_NO_FIELDS_LEFT = 11 KIND_F_NO_FIELDS = 12 TOO_MANY_FIELDS = 13 DUP_FIELD = 14 FIELD_NO_TYPE = 15 FIELD_ILL_TYPE = 16 DUP_EVENT_FIELD = 17 NODE_NOT_IN_LDB = 18 AREA_NO_FIELD = 19 OTHERS = 20. IF SY-SUBRC EQ 0. CALL FUNCTION ‘FREE_SELECTIONS_DIALOG‘ EXPORTING SELECTION_ID = LV_SELECTION_ID TITLE = ‘选择‘ FRAME_TEXT = ‘查询条件‘ AS_WINDOW = ‘X‘ IMPORTING WHERE_CLAUSES = LT_WHERE_CLAUSES TABLES FIELDS_TAB = LT_FIELDS_TAB EXCEPTIONS INTERNAL_ERROR = 1 NO_ACTION = 2 SELID_NOT_FOUND = 3 ILLEGAL_STATUS = 4 OTHERS = 5. IF SY-SUBRC EQ 0. CLEAR GS_WHERE_CLAUSES. ENDIF. ENDIF. "根据不同的查询表,将查询参数一次加入各个表 READ TABLE LT_WHERE_CLAUSES INTO GS_WHERE_CLAUSES WITH KEY TABLENAME = LV_TABNAME. IF SY-SUBRC = 0. SELECT * INTO CORRESPONDING FIELDS OF TABLE GT_ZTSD_LSXY FROM ZTSD_LSXY WHERE ZJLH <> ‘‘ AND (GS_WHERE_CLAUSES-WHERE_TAB) . ENDIF. CALL FUNCTION ‘REUSE_ALV_GRID_DISPLAY‘ EXPORTING I_CALLBACK_PROGRAM = SY-REPID I_STRUCTURE_NAME = ‘ZTSD_LSXY‘ TABLES T_OUTTAB = GT_ZTSD_LSXY EXCEPTIONS PROGRAM_ERROR = 1 OTHERS = 2. IF SY-SUBRC <> 0. ENDIF.
时间: 2024-11-03 22:45:27