码迷,mamicode.com
首页 > 其他好文 > 详细

动态选择屏幕

时间:2015-09-17 11:29:52      阅读:170      评论:0      收藏:0      [点我收藏+]

标签:

不是自创的,群里大神分享的,应该是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.

技术分享

动态选择屏幕

标签:

原文地址:http://www.cnblogs.com/sapSB/p/4815569.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!