REPORT zjcdca_query_role LINE-SIZE 152 NO STANDARD PAGE HEADING LINE-COUNT 000(001). TABLES: tobj, agr_1251, ust12. DATA: BEGIN OF it_output OCCURS 0, agr_name LIKE agr_1251-agr_name, oclss LIKE tobj-oclss, object LIKE agr_1251-object, ttext LIKE tobjt-ttext, auth LIKE agr_1251-auth, field LIKE agr_1251-field, low LIKE agr_1251-low, high LIKE agr_1251-high, END OF it_output. DATA: it_agr_tcodes_tmp LIKE agr_tcodes OCCURS 0. DATA: ws_agr_tcodes LIKE agr_tcodes. DATA: BEGIN OF it_org OCCURS 0, varbl LIKE agr_1252-varbl, low LIKE agr_1252-low, high LIKE agr_1252-high, vtext LIKE usvart-vtext, END OF it_org. DATA: ws_line(255) TYPE c, ws_agr_name LIKE agr_1251-agr_name, ws_object LIKE agr_1251-object, ws_field LIKE agr_1251-field, ws_ttext LIKE tstct-ttext, ws_scrtext_s LIKE dd04t-scrtext_s. SELECTION-SCREEN: BEGIN OF BLOCK prog WITH FRAME TITLE text-001. SELECT-OPTIONS sp$00006 FOR agr_1251-object MEMORY ID xuo. SELECT-OPTIONS sp$00005 FOR agr_1251-field. SELECT-OPTIONS sp$00002 FOR agr_1251-low. SELECT-OPTIONS sp$00001 FOR agr_1251-agr_name. SELECTION-SCREEN SKIP 1. PARAMETERS: sp$00007 AS CHECKBOX DEFAULT 'X'. PARAMETERS: sp$00008 AS CHECKBOX DEFAULT 'X'. PARAMETERS: sp$00009 AS CHECKBOX DEFAULT 'X'. SELECTION-SCREEN: END OF BLOCK prog. START-OF-SELECTION. SELECT agr_1251~agr_name tobj~oclss agr_1251~object tobjt~ttext agr_1251~auth agr_1251~field agr_1251~low agr_1251~high INTO CORRESPONDING FIELDS OF TABLE it_output FROM agr_1251 INNER JOIN ust12 ON ust12~objct = agr_1251~object AND ust12~auth = agr_1251~auth AND ust12~aktps = 'A' AND ust12~field = agr_1251~field AND ust12~von = agr_1251~low AND ust12~bis = agr_1251~high INNER JOIN tobj ON tobj~objct = ust12~objct INNER JOIN tobjt ON tobjt~langu = 'E' AND tobjt~object = tobj~objct WHERE agr_1251~agr_name IN sp$00001 AND agr_1251~object IN sp$00006 AND agr_1251~field IN sp$00005 AND agr_1251~low IN sp$00002. SORT it_output BY agr_name oclss object auth "Add by chenql 20060113 field low high. TOP-OF-PAGE. * Print report title. PERFORM frm_print_report_title. * Print Object detail IF ws_agr_name = it_output-agr_name. PERFORM frm_print_detail. ENDIF. END-OF-SELECTION. LOOP AT it_output. AT NEW agr_name. IF NOT it_output-agr_name IS INITIAL. PERFORM frm_print_tcode. IF sp$00009 = 'X'. NEW-PAGE. ENDIF. ENDIF. ENDAT. IF sp$00009 <> 'X'. continue. ENDIF. IF ws_field <> it_output-field. SELECT dd04t~scrtext_s INTO ws_scrtext_s FROM authx INNER JOIN dd04t ON dd04t~rollname = authx~rollname AND dd04t~ddlanguage = 'E' WHERE authx~fieldname = it_output-field. ENDSELECT. ENDIF. IF ws_object <> it_output-object. SKIP 1. WRITE: /001(006) it_output-oclss NO-GAP, 009(010) it_output-object NO-GAP, 021(060) it_output-ttext NO-GAP, 083(010) it_output-field NO-GAP, 095(010) ws_scrtext_s, 107(020) it_output-low NO-GAP, 129(020) it_output-high NO-GAP. ws_object = it_output-object. ws_field = it_output-field. ELSEIF ws_field <> it_output-field. WRITE: /083(010) it_output-field NO-GAP, 095(010) ws_scrtext_s, 107(020) it_output-low NO-GAP, 129(020) it_output-high NO-GAP. ws_field = it_output-field. ELSE. WRITE: /107(020) it_output-low NO-GAP, 129(020) it_output-high NO-GAP. ENDIF. ENDLOOP. ULINE AT /1(152). SKIP 1. WRITE: /25 '*** END OF REPORT ***'. *&---------------------------------------------------------------------* *& Form FRM_PRINT_REPORT_TITLE *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM frm_print_report_title. CONCATENATE it_output-agr_name '- Reference Document' INTO ws_line. WRITE: /25 ws_line, 78 'DATE:', sy-datum, 96 'TIME:', sy-uzeit, 112 'PAGE:', sy-pagno. SKIP. ENDFORM. " FRM_PRINT_REPORT_TITLE *&---------------------------------------------------------------------* *& Form FRM_PRINT_TCODE *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM frm_print_tcode. * Print Org level information IF sp$00007 = 'X'. SELECT agr_1252~varbl agr_1252~low agr_1252~high usvart~vtext INTO CORRESPONDING FIELDS OF TABLE it_org FROM agr_1252 INNER JOIN usvar ON usvar~varbl = agr_1252~varbl INNER JOIN usvart ON usvart~langu = 'E' AND usvart~varbl = usvar~varbl WHERE agr_1252~agr_name = it_output-agr_name. IF NOT it_org[] IS INITIAL. SKIP. WRITE: /001(040) 'Org. Level' NO-GAP, 042(040) 'From' NO-GAP, 084(040) 'To' NO-GAP. ULINE AT /1(125). LOOP AT it_org. WRITE: /001(040) it_org-vtext NO-GAP, 042(040) it_org-low NO-GAP, 084(040) it_org-high NO-GAP. ENDLOOP. ULINE AT /1(125). ENDIF. ENDIF. * Print Tcode under Role IF sp$00008 = 'X'. CALL FUNCTION 'PRGN_1221_READ_TRANSACTIONS' EXPORTING ACTIVITY_GROUP = IT_OUTPUT-AGR_NAME only_transactions = 'X' TABLES i_agr_tcodes = it_agr_tcodes_tmp EXCEPTIONS no_transactions_found = 1 OTHERS = 2. IF NOT it_agr_tcodes_tmp[] IS INITIAL. SKIP. WRITE: /001(020) 'Tcode' NO-GAP, 022(036) 'Description' NO-GAP. ULINE AT /1(58). LOOP AT it_agr_tcodes_tmp INTO ws_agr_tcodes. SELECT ttext INTO ws_ttext FROM tstc INNER JOIN tstct ON tstct~tcode = tstc~tcode WHERE tstc~tcode = ws_agr_tcodes-tcode. ENDSELECT. WRITE: /001(020) ws_agr_tcodes-tcode NO-GAP, 022(036) ws_ttext NO-GAP. ENDLOOP. ws_agr_name = it_output-agr_name. ULINE AT /1(58). IF sp$00009 = 'X'. NEW-PAGE. ENDIF. ENDIF. ENDIF. ENDFORM. " FRM_PRINT_TCODE *&---------------------------------------------------------------------* *& Form FRM_PRINT_DETAIL *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM frm_print_detail. IF sp$00009 = 'X'. WRITE: /001(006) 'Class' NO-GAP, 009(010) 'Object' NO-GAP, 021(060) 'Object Description' NO-GAP, 083(010) 'Field' NO-GAP, 095(010) 'Field Desc' NO-GAP, 107(020) 'Value From' NO-GAP, 129(020) 'To' NO-GAP. ULINE AT /1(152). ENDIF. ENDFORM. " FRM_PRINT_DETAIL