• 动态选择屏幕


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

  • 相关阅读:
    transition
    Java自增陷阱
    不同编码格式中,字节和字符的关系
    表单重复提交
    source folder和package的区别
    @test 测试案例不能添加参数
    http协议content-type
    jdbc的缺点和mybatis的优点
    ==和equals的区别
    spring IOC和AOP
  • 原文地址:https://www.cnblogs.com/sapSB/p/4815569.html
Copyright © 2020-2023  润新知