列出请求号中包含的Query

来源:互联网 发布:linux redis 远程访问 编辑:程序博客网 时间:2024/06/06 21:39

看到这些东东是不是很烦,根本不知是什么,打包一个QUERY就会往请求号里添加无数个这样的元素

其实 打开QueryDesigner,选中任意一个元素,看高级选项那页,都会有这样一个ID号,包括Query本身的技术名 也对应着一个ID

这样看起来稍微有点关系了,但光凭一个ID号去判断他是哪个Query里的哪个元素,就比较费事,这里也先不多说了,还是简单粗暴点

逻辑基础:

RSRREPDIR 表中存放Query以及他们的ID号

RSZELTTXT表中存放各个元素的文本描述

E071表中存放请求号直接包含的所有对象

看效果

上代码:

同样,复制之后需要从FunctionGroup KKBL中复制一个 STANDARD_FULLSCREEN 状态条过来


REPORT  ZREPDIR.
TABLES E070 E071 RSZELTTXTRSRREPDIR .

TYPE-POOLSslis.
DATAgt_fieldcat TYPE slis_t_fieldcat_alv WITH HEADER LINE,
"定义ALV显示的字段列及其描述等属性
      gs_layout TYPE slis_layout_alv,
"定义ALV显示的整体布局控制
      gs_print  TYPE slis_print_alv,
"ALV打印格式
      g_repid LIKE sy-repid.
"用于保存当前运行的程序名,"用来让ALV调用后返回主程序
DATAv_stru_disvar TYPE disvariant,
"ALV显示格式
      it_sort TYPE slis_t_sortinfo_alv WITH HEADER LINE,
"ALV排序内表
      git_events TYPE slis_t_event,                   "ALV 事件
      git_listheader  TYPE slis_t_listheader.          "ALV 表头
DATA l_tmp TYPE lvc_title.

DATABEGIN OF it_e070 OCCURS 0.
        INCLUDE STRUCTURE e070.
DATAEND OF it_e070.

DATABEGIN OF it_e071 OCCURS 0,
        TRKORR LIKE E071-TRKORR,
        AS4POS LIKE E071-AS4POS,
        PGMID LIKE E071-PGMID,
        OBJECT LIKE E071-OBJECT,
        OBJ_NAME LIKE RSRREPDIR-COMPUID,
        OBJFUNC LIKE E071-OBJFUNC,
        LOCKFLAG LIKE E071-LOCKFLAG,
        GENNUM LIKE E071-GENNUM,
        LANG LIKE E071-LANG,
        ACTIVITY LIKE E071-ACTIVITY,
   END OF it_e071.

DATABEGIN OF it_RSRREPDIR OCCURS 0,
        COMPUID LIKE RSRREPDIR-COMPUID,
        OBJVERS LIKE RSRREPDIR-OBJVERS,
        INFOCUBE LIKE RSRREPDIR-INFOCUBE,
        COMPID LIKE RSRREPDIR-COMPID,
        TXTLG like RSZELTTXT-TXTLG,
        TRKORR LIKE E071-TRKORR,

END OF it_RSRREPDIR.

DATABEGIN OF IT_RSZELTTXT OCCURS 0,
        ELTUID LIKE RSZELTTXT-ELTUID,
        OBJVERS LIKE RSZELTTXT-OBJVERS,
        LANGU LIKE RSZELTTXT-LANGU,
        TXTLG LIKE RSZELTTXT-TXTLG,
      END OF IT_RSZELTTXT.

SELECTION-SCREEN BEGIN OF BLOCK bk1 WITH FRAME TITLE text-001.

SELECT-OPTIONS P_USER FOR e070-AS4USER ."DEFAULT sy-uname.
SELECT-OPTIONS P_STS FOR e070-TRSTATUS ."DEFAULt 'D'.
SELECT-OPTIONS P_RST FOR E070-TRKORR .
SELECT-OPTIONS P_VSN FOR RSRREPDIR-OBJVERS DEFAULT 'A'.

SELECTION-SCREEN END OF BLOCK bk1.

INITIALIZATION.
  FREEit_RSRREPDIR ,IT_RSZELTTXTIT_E070 IT_E071 .

START-OF-SELECTION.

  PERFORM frm_comment_build.       "设置表头
  PERFORM FRM_FETCH_DATA.
  PERFORM frm_get_event.           "设置自定义ALV事件处理程序
  PERFORM init_layout.             "设置ALV输出格式
  PERFORM init_fieldcat.           "设置ALV输出字段
  PERFORM frm_output.              "ALV输出

*&---------------------------------------------------------------------*
*&      Form  frm_comment_build
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM frm_comment_build .
*ALV表头
  DATA l_listheader TYPE slis_listheader.
  DATAv_title(60).

  CLEARgit_listheaderl_listheader.
  l_listheader-typ  'S'."M中号字体,H大号字体,S小号字体

  v_title =  '我的报表清单'.
  l_listheader-info v_title.
  APPEND l_listheader TO git_listheader.

ENDFORM.                    " FRM_COMMENT_BUILD
************************************************************************

*&---------------------------------------------------------------------*
*&      Form  FRM_FETCH_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM FRM_FETCH_DATA.
  SELECT

    b~TRKORR
    b~AS4POS
    b~PGMID
    b~OBJECT
    b~OBJ_NAME
    b~OBJFUNC
    b~LOCKFLAG
    b~GENNUM
    b~LANG
    b~ACTIVITY
    FROM E070 as a
    JOIN  e071 as b
      on a~TRKORR b~TRKORR
    INTO CORRESPONDING FIELDS OF TABLE IT_E071
    WHERE A~TRKORR IN P_RST
    AND a~AS4USER IN P_USER
    AND a~TRSTATUS IN P_STS
*    AND a~TRFUNCTION = 'S'
    AND B~OBJECT 'ELEM'
    ORDER BY b~OBJ_NAME
    .
  IF IT_E071[] is not INITIAL.

    SELECT
      COMPUID
      OBJVERS
      INFOCUBE
*    GENUNIID
*    COMPTYPE
      COMPID
      FROM RSRREPDIR
      INTO CORRESPONDING FIELDS OF TABLE IT_RSRREPDIR
      FOR ALL ENTRIES IN IT_E071
      WHERE COMPUID IT_E071-OBJ_NAME
      AND OBJVERS IN P_VSN .
*    ORDER BY COMPUID
  ENDIF.

  SORT IT_RSRREPDIR BY COMPUID .
*

  IF IT_RSRREPDIR[] is not INITIAL.

    SELECT *
      FROM RSZELTTXT
      INTO CORRESPONDING FIELDS OF TABLE IT_RSZELTTXT
      FOR ALL ENTRIES IN IT_RSRREPDIR
      WHERE ELTUID IT_RSRREPDIR-COMPUID
      AND LANGU 'E'

      .
  ENDIF.
  SORT IT_RSRREPDIR BY COMPID .
  LOOP AT IT_RSRREPDIR.
    READ TABLE IT_RSZELTTXT
    with KEY ELTUID IT_RSRREPDIR-COMPUID
             OBJVERS IT_RSRREPDIR-OBJVERS
    .
    IF sy-subrc 0.
      IT_RSRREPDIR-TXTLG IT_RSZELTTXT-TXTLG .
      modify IT_RSRREPDIR.
    ENDIF.

    READ TABLE it_e071
    with KEY OBJ_NAME IT_RSRREPDIR-COMPUID.
    IF sy-subrc 0.
      IT_RSRREPDIR-TRKORR it_e071-TRKORR .
      modify IT_RSRREPDIR.
    ENDIF.

  ENDLOOP.
ENDFORM.                    " FRM_GET_DATA
*&---------------------------------------------------------------------*
*&      Form  frm_get_event
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM frm_get_event .
  DATA formname_top_of_page TYPE slis_formname VALUE 'FRM_TOP_OF_PAGE'.
  DATA l_events TYPE slis_alv_event.

  CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
    EXPORTING
      i_list_type     0
    IMPORTING
      et_events       git_events
    EXCEPTIONS
      list_type_wrong 1
      OTHERS          2.
  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
           WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.
  CLEAR l_events.
  READ TABLE git_events
    WITH KEY name slis_ev_top_of_page INTO l_events.
  IF sy-subrc 0.
    MOVE 'FRM_TOP_OF_PAGE' TO l_events-form.
    MODIFY git_events FROM l_events INDEX sy-tabix.
  ELSE.
    l_events-form 'FRM_TOP_OF_PAGE'.
    l_events-name slis_ev_top_of_page.
    APPEND l_events TO git_events.
  ENDIF.
ENDFORM.                    "frm_get_event
************************************************************************
*&---------------------------------------------------------------------*
*& 子函数    frm_top_of_page。
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

FORM  frm_top_of_page.
  CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
    EXPORTING
      it_list_commentary git_listheader.
ENDFORM.                    "FRM_TOP_OF_PAGE

*&---------------------------------------------------------------------*
*&      Form  init_layout
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM init_layout .
  gs_layout-zebra 'X'.
  gs_layout-f2code '&ETA'.            "ALV双击事件
*  GS_LAYOUT-DETAIL_POPUP = 'X'.
*  GS_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.    "自动调整ALVL列宽
*  gs_layout-box_fieldname = 'TAB'.  "出现选择框
*  GS_LAYOUT-EDIT = 'X'.                "设置ALV可以编辑
*         edit(1) type c,               " for grid only
*         edit_mode(1) type c,          " for grid only
*  GS_LAYOUT-TOTALS_ONLY  = 'X'.
ENDFORM.     " INIT_LAYOUT


************************************************************************
FORM init_fieldcat .

  call function 'REUSE_ALV_FIELDCATALOG_MERGE'
    EXPORTING
      I_PROGRAM_NAME         SY-REPID
     I_INTERNAL_TABNAME     'IT_RSRREPDIR'
*      I_STRUCTURE_NAME       = 'RSRREPDIR'
      I_CLIENT_NEVER_DISPLAY 'X'
      i_inclname             sy-repid
    CHANGING
      CT_FIELDCAT            GT_FIELDCAT[]
    EXCEPTIONS
      INCONSISTENT_INTERFACE 1
      PROGRAM_ERROR          2
      OTHERS                 3.
  if SY-SUBRC <> 0.

*    message id SY-MSGID type SY-MSGTY number SY-MSGNO
*            with SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  endif.

  LOOP AT GT_FIELDCAT.
*    CASE GT_FIELDCAT-FIELDNAME.
*      WHEN 'COMP_CODE'.
*        GT_FIELDCAT-EDIT = 'X'.
*        GT_FIELDCAT-OUTPUTLEN = '8'.
*      WHEN OTHERS.
*    ENDCASE.
*    MODIFY GT_FIELDCAT.
  ENDLOOP.
*

ENDFORM.                    "INIT_FIELDCAT

FORM frm_output .
*ALV输出

  g_repid sy-repid.

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      i_callback_program       g_repid
      is_layout                gs_layout
      it_fieldcat              gt_fieldcat[]
*            I_STRUCTURE_NAME       = 'ZDEFER_OUT'
      i_save                   'X'
      i_callback_user_command  'FRM_USER_COMMAND'
      i_callback_pf_status_set 'FRM_PF_STATUS'
      is_variant               v_stru_disvar
      it_events                git_events[]
*      it_sort                  = it_sort[]   "字段排序后一样缩进
******      is_print                 = gs_print
    TABLES
      t_outtab                 IT_RSRREPDIR[]
    EXCEPTIONS
      program_error            1
      OTHERS                   2.
  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.
ENDFORM.                    " FRM_OUTPUT
*&---------------------------------------------------------------------*
*&      Form  FRM_USER_COMMAND
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->R_UCOMM      text
*      -->RS_SELFIELD  text
*----------------------------------------------------------------------*
form FRM_USER_COMMAND  using R_UCOMM like SY-UCOMM
                        RS_SELFIELD type SLIS_SELFIELD.
*  RS_SELFIELD-refresh = 'X'.
endform.                    "FRM_USER_COMMAND

************************************************************************
FORM frm_pf_status USING rt_extab TYPE slis_t_extab.
  SET PF-STATUS 'STANDARD_FULLSCREEN' .
ENDFORM.                    "frm_pf_status


0 0
原创粉丝点击