QUERY 查询
把程序的变式复制到另一个程序使用SE37:RS_COPY_SELECTION_SETS
表 AQGQCAT SAP 查询: 查询目录 字段 CLAS 存放的时信息集
通过事务码SQ02 转到 查询目录

RASQDEL0

表 AQLSCAT 信息集对应的数据库表
通过函数来获取多张表


RSAQ_IMPORT_USERGROUP_CATALOG 这个函数可以获取
DBBN 这个结果集
里面就是用户组 对于的 账户

写个函数 ,传入用户组,当前用户账号,传出是否有权限 ZTYPE E / S,zmessage 没权限/ 有权限
query 如果执行发现缺少变式,那就直接新建一个同名的变式给这个程序
Code listing for: ZMIGR_TOOLS_QUERY Description: *&---------------------------------------------------------------------* *& Report ZMIGR_TOOLS_QUERY *&---------------------------------------------------------------------* *& Issue : On SAP Query dump created from SQ01 after ECC to S4HANA upgrade. *& Scope : All of query that missing after ECC TO S4HANA upgrade. *& Solution : Use below source to resolve the generated program does not exists. *& Please refer the documents : https://blogs.sap.com/2019/12/02/sap-query-gets-dump-after-ecc-to-s4hana-migration/ *&---------------------------------------------------------------------* REPORT ZMIGR_TOOLS_QUERY. TABLES:AQGQCAT. *&--------------------------------------------------------------------- *& 全局变量 *&--------------------------------------------------------------------- TYPES: BEGIN OF TY_REPORTNAME, REPORTNAME TYPE AQADEF-PGNAME, USERGROUP TYPE AQS_BGNAME, QUERY TYPE AQS_QUNAME, TCODE TYPE TSTC-TCODE, MSG TYPE BAPI_MSG, DELFLAG TYPE C, END OF TY_REPORTNAME, TT_REPORTNAME TYPE TABLE OF TY_REPORTNAME. DATA:GT_REPORTNAME TYPE TT_REPORTNAME. DATA:GS_AQGQCAT TYPE AQGQCAT, GT_AQGQCAT TYPE STANDARD TABLE OF AQGQCAT. FIELD-SYMBOLS:<FS_REPORTNAME> TYPE TY_REPORTNAME. *&--------------------------------------------------------------------- *& 常量 *&--------------------------------------------------------------------- *&--------------------------------------------------------------------- *& SELECT-OPTIONS *&--------------------------------------------------------------------- SELECTION-SCREEN: BEGIN OF BLOCK BLK1 WITH FRAME TITLE TEXT-H01. SELECT-OPTIONS : S_NUM FOR AQGQCAT-NUM, S_QNUM FOR AQGQCAT-QNUM. SELECTION-SCREEN:END OF BLOCK BLK1. *&--------------------------------------------------------------------- *& INITIALIZATION *&--------------------------------------------------------------------- INITIALIZATION. *&--------------------------------------------------------------------- *& START-OF-SELECTION *&--------------------------------------------------------------------- START-OF-SELECTION. *第一 表AQGQCAT存储user group和Query name PERFORM FRM_GETDATA. *第二 利用函数RSAQ_REPORT_NAME获得程序名 PERFORM FRM_GET_PROGRAM CHANGING GT_REPORTNAME. *第三 检查程序在表REPOSRC中是否存在 PERFORM FRM_CHECK_EXSIT CHANGING GT_REPORTNAME. *第四 如果不存在,调用RSAQ_GENERATE_PROGRAM生成程序 PERFORM FRM_CREATE_PROGRAM USING GT_REPORTNAME. "Display result PERFORM FRM_DISPLAY USING GT_REPORTNAME . *&---------------------------------------------------------------------* *& Form getdata *&---------------------------------------------------------------------* FORM FRM_GETDATA. CLEAR GT_AQGQCAT. SELECT * INTO TABLE GT_AQGQCAT FROM AQGQCAT WHERE ( NUM LIKE 'Y%' OR NUM LIKE 'Z%' ) AND NUM IN S_NUM AND QNUM IN S_QNUM. ENDFORM. "getdata *&---------------------------------------------------------------------* *& Form FRM_GET_PROGRAM *&---------------------------------------------------------------------* *& text *&---------------------------------------------------------------------* *& --> p1 text *& <-- p2 text *&---------------------------------------------------------------------* FORM FRM_GET_PROGRAM CHANGING CT_REPORTNAME TYPE TT_REPORTNAME. DATA:LS_REPORTNAME TYPE TY_REPORTNAME. CLEAR CT_REPORTNAME. LOOP AT GT_AQGQCAT INTO GS_AQGQCAT. CALL FUNCTION 'RSAQ_REPORT_NAME' EXPORTING WORKSPACE = 'X' USERGROUP = GS_AQGQCAT-NUM QUERY = GS_AQGQCAT-QNUM IMPORTING REPORTNAME = LS_REPORTNAME-REPORTNAME. LS_REPORTNAME-USERGROUP = GS_AQGQCAT-NUM. LS_REPORTNAME-QUERY = GS_AQGQCAT-QNUM. APPEND LS_REPORTNAME TO CT_REPORTNAME. ENDLOOP. ENDFORM. *&---------------------------------------------------------------------* *& Form FRM_CHECK_EXSIT *&---------------------------------------------------------------------* *& text *&---------------------------------------------------------------------* *& --> p1 text *& <-- p2 text *&---------------------------------------------------------------------* FORM FRM_CHECK_EXSIT CHANGING CT_REPORTNAME TYPE Tt_REPORTNAME. LOOP AT CT_REPORTNAME ASSIGNING <FS_REPORTNAME>. * 判断是否已有对应程序。 SELECT COUNT( * ) FROM REPOSRC WHERE PROGNAME = @<FS_REPORTNAME>-REPORTNAME. IF SY-SUBRC = 0. " 已生成程序 <FS_REPORTNAME>-DELFLAG = 'X'. ELSE. <FS_REPORTNAME>-MSG = '没有生成程序'. "查找对应的T-code SELECT SINGLE TCODE INTO @<FS_REPORTNAME>-TCODE FROM TSTC WHERE PGMNA = @<FS_REPORTNAME>-REPORTNAME. ENDIF. ENDLOOP. DELETE CT_REPORTNAME WHERE DELFLAG = 'X' . "删除已生成程序List SORT CT_REPORTNAME BY TCODE DESCENDING. ENDFORM. *&---------------------------------------------------------------------* *& Form FRM_CREATE_PROGRAM *&---------------------------------------------------------------------* *& text *&---------------------------------------------------------------------* *& --> p1 text *& <-- p2 text *&---------------------------------------------------------------------* FORM FRM_CREATE_PROGRAM CHANGING CT_REPORTNAME TYPE TT_REPORTNAME. LOOP AT CT_REPORTNAME ASSIGNING <FS_REPORTNAME>. * 对没有对应程序的Query 创建程序 CALL FUNCTION 'RSAQ_GENERATE_PROGRAM' EXPORTING I_WORKSPACE = 'X' I_QUERY = <FS_REPORTNAME>-QUERY I_USERGROUP = <FS_REPORTNAME>-USERGROUP * IMPORTING * O_REPORT_NAME = * O_STRUCTURE_NAME = EXCEPTIONS NO_QUERY = 1 NO_INFOSET = 2 QUERY_LOCKED = 3 GENERATION_CANCELLED = 4 GENERATION_ERROR = 5 OTHERS = 6. IF SY-SUBRC <> 0. <FS_REPORTNAME>-MSG = '生成程序失败'. ELSE. <FS_REPORTNAME>-MSG = '生成程序成功'. ENDIF. ENDLOOP. ENDFORM. *&---------------------------------------------------------------------* *& Form FRM_DISPLAY *&---------------------------------------------------------------------* *& text *&---------------------------------------------------------------------* *& --> p1 text *& <-- p2 text *&---------------------------------------------------------------------* FORM FRM_DISPLAY USING IT_REPORTNAME TYPE TT_REPORTNAME. DATA:LS_LAYOUT TYPE LVC_S_LAYO, LT_FIELDCAT TYPE LVC_T_FCAT. * Set fieldcat PERFORM FRM_SET_FIELDCAT CHANGING LT_FIELDCAT. * Set Layout settings LS_LAYOUT-CWIDTH_OPT = 'X'. CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC' EXPORTING I_BUFFER_ACTIVE = 'X' I_CALLBACK_PROGRAM = SY-CPROG IS_LAYOUT_LVC = LS_LAYOUT IT_FIELDCAT_LVC = LT_FIELDCAT I_DEFAULT = 'X' TABLES T_OUTTAB = IT_REPORTNAME EXCEPTIONS PROGRAM_ERROR = 1 OTHERS = 2. IF SY-SUBRC <> 0. MESSAGE ID SY-MSGID TYPE 'S' NUMBER SY-MSGNO WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4 DISPLAY LIKE 'E'. LEAVE LIST-PROCESSING. ENDIF. ENDFORM. *&---------------------------------------------------------------------* *& Form F_SET_IT_FIELDCAT2 *&---------------------------------------------------------------------* * Set fieldcat *----------------------------------------------------------------------* * <--fc_td_fieldcat fieldcat *----------------------------------------------------------------------* FORM FRM_SET_FIELDCAT CHANGING FC_TD_FIELDCAT TYPE LVC_T_FCAT. * Local variable define DATA LTH_FIELDCAT TYPE LVC_S_FCAT. DEFINE BUILD_FIELDCAT. lth_fieldcat-fieldname = &1. lth_fieldcat-scrtext_s = &2. lth_fieldcat-scrtext_m = &2. lth_fieldcat-scrtext_l = &2. lth_fieldcat-col_opt = 'A'. APPEND lth_fieldcat TO fc_td_fieldcat. CLEAR lth_fieldcat. END-OF-DEFINITION. BUILD_FIELDCAT 'REPORTNAME' '程序名' . BUILD_FIELDCAT 'USERGROUP' 'Usergroup' . BUILD_FIELDCAT 'QUERY' 'Query' . BUILD_FIELDCAT 'TCODE' 'TCODE' . BUILD_FIELDCAT 'MSG' 'Message' . ENDFORM. Extracted by Mass Download version 1.5.1 - E.G.Mellodew. 1998-2024. Sap Release 750
posted on 2024-05-07 13:34 TorranceZhao 阅读(52) 评论(0) 收藏 举报
浙公网安备 33010602011771号