SAP R/3 форум ABAP консультантов
Russian ABAP Developer's Club

Home - FAQ - Search - Memberlist - Usergroups - Profile - Log in to check your private messages - Register - Log in - English
Blogs - Weblogs News

Details of costom objects during creation or change



 
Post new topic   Reply to topic    Russian ABAP Developer's Club Forum Index -> Security and Monitoring
View previous topic :: View next topic  
Author Message
admin
Администратор
Администратор



Joined: 01 Sep 2007
Posts: 1640

PostPosted: Thu Jul 03, 2008 11:20 pm    Post subject: Details of costom objects during creation or change Reply with quote

A simple ALV - Details of Y/Z objects with lists of users/date/time/description during creation or change of the object.

Code:
*&---------------------------------------------------------------------*
*& Report  Z_OBJECT_TRACKER                                            *
*& Author :Swarna.S.
*&---------------------------------------------------------------------*
*&
*& AS:
*& Simple ALV report -- Details of Y or Z objects
*& showing lists of all the users , date ,time and description for creation
*& or changes done on it
*&
*&---------------------------------------------------------------------*
REPORT  z_object_tracker NO STANDARD PAGE HEADING.

*Type pools declaration for ALV.
TYPE-POOLS : slis.

*Structure declaration for TRDIR table
TYPES : BEGIN OF ty_trdir,
        name(120),                    "Name of the the Y/Z program
        cnam TYPE trdir-cnam,         "Author
        cdat TYPE trdir-cdat,         "Created on
        subc TYPE trdir-subc,         "Program type
        END OF ty_trdir.

*Structure declaration for the output in ALV fomrat
TYPES : BEGIN OF ty_output,
        obj_name TYPE e071-obj_name,   "Object Name(Y/Z)
        trkorr  TYPE  e071-trkorr,     "Transport Request
        objtype(20) TYPE c,            "object type
        as4user TYPE e070-as4user,     "User name
        as4date TYPE e070-as4date,     "date
        as4time TYPE e070-as4time,     "time
        as4text TYPE e07t-as4text,     "Short Text Describing R/3 Repository Objects
        END OF ty_output.

*Internal table and work area declarations
*Declaration for TRDIR table
DATA : it_trdir TYPE STANDARD TABLE OF ty_trdir,
       wa_trdir TYPE ty_trdir.

*Declaration for output table
DATA : it_output TYPE STANDARD TABLE OF ty_output,
       wa_output TYPE ty_output.

*DATA Declarations for ALV grid
DATA: c_ccont TYPE REF TO cl_gui_custom_container,
      c_alvgd         TYPE REF TO cl_gui_alv_grid,
      it_fcat            TYPE lvc_t_fcat,
      it_layout          TYPE lvc_s_layo.

* For grid title
DATA : txt1 TYPE string.
DATA : txt2 TYPE string.
DATA : txt3 TYPE string.
DATA : txt4 TYPE string.
DATA : titletext TYPE string.

* Selection screen
SELECTION-SCREEN  BEGIN OF BLOCK blk1 WITH FRAME.
PARAMETERS : p_object LIKE wa_trdir-name.
SELECTION-SCREEN  END OF BLOCK blk1.

*initialization event
INITIALIZATION.   
txt1 = 'Object tracker for'. 
txt3 = 'Type'.

*Start of selection event
START-OF-SELECTION.

*Subroutine to get the user name/date/time 
PERFORM get_object_details.

*Subroutine to print alv output 
PERFORM alv_output.

*End of selection event
END-OF-SELECTION. 

*&---------------------------------------------------------------------*
*&      Form  alv_output
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM alv_output.

*Call the ALV screen with custom container
  CALL SCREEN '0600'.
ENDFORM.                    " alv_output 

*On this statement double click  it takes you to the screen painter SE51.Enter the attributes
*Create a Custom container and name it C_GRID and OK code as OK_CODE.
*Save check and Activate the scren painter.
*NOw a normal screen witn number 600 is created which holds the ALV grid.
* PBO of the actual screen , Here we can give a title and customized menus
*&---------------------------------------------------------------------*
*&      Module  STATUS_0600  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE status_0600 OUTPUT.

*  SET TITLEBAR 'XXXX'.*
*  SET PF-STATUS 'XXXXXXX'.
ENDMODULE.                 " STATUS_0600  OUTPUT

* calling the PBO module SET_GRID.
*&---------------------------------------------------------------------*
*&      Module  SET_GRID  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE set_grid OUTPUT.

* Create object for custom container 
CREATE OBJECT c_ccont
       EXPORTING
          container_name = 'C_GRID'.

* Create object for ALV grid   
CREATE OBJECT c_alvgd
      EXPORTING
        i_parent = c_ccont.

* Set field for ALV 
PERFORM alv_fieldcat.

* Set ALV attributes FOR LAYOUT 
PERFORM alv_layout.   
CHECK NOT c_alvgd IS INITIAL.

* Call ALV GRID 
CALL METHOD c_alvgd->set_table_for_first_display
    EXPORTING
      is_layout                     = it_layout
    CHANGING
      it_outtab                     = it_output
      it_fieldcatalog               = it_fcat
    EXCEPTIONS
      invalid_parameter_combination = 1
      program_error                 = 2
      too_many_lines                = 3
      OTHERS                        = 4.

  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
               WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.
   ENDMODULE.                 " SET_GRID  OUTPUT 

* PAI module of the screen created. In case we use an interactive ALV or
*for additional functionalities we can create OK codes and based on the user command
*we can do the coding.
*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_0600  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE user_command_0600 INPUT.
ENDMODULE.                 " USER_COMMAND_0600  INPUT 
*&---------------------------------------------------------------------*
*&      Form  get_object_details
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  Subroutine to fetch the details of the object through the necessary
*  selections in the database.*
*----------------------------------------------------------------------*
FORM get_object_details. 
*Select values from TRDIR 
SELECT name cnam cdat subc FROM trdir INTO TABLE it_trdir
  WHERE name EQ p_object AND  ( name LIKE 'Z%'  OR name LIKE 'Y%' ). 

*Select values from CTS tables 
IF sy-subrc IS INITIAL.
     SELECT a~obj_name a~trkorr b~as4user b~as4date b~as4time c~as4text
    INTO CORRESPONDING FIELDS OF TABLE it_output
    FROM e071 AS a INNER JOIN e070 AS b
    ON a~trkorr = b~trkorr
    INNER JOIN e07t AS c
    ON a~trkorr = c~trkorr
    FOR ALL ENTRIES IN it_trdir
    WHERE a~obj_name = it_trdir-name
    AND c~langu = sy-langu AND
    a~lockflag <> ' '.
    ENDIF.

* Appending the selected values to our output internal table 
LOOP AT it_output INTO wa_output.
     AT NEW obj_name.
      READ TABLE it_trdir INTO wa_trdir WITH KEY name = wa_output-obj_name.
       CASE wa_trdir-subc.
        WHEN '1'.
          wa_output-objtype = 'Executable Program'.
        WHEN 'I'.
          wa_output-objtype = 'Include Program'.
        WHEN 'M'.
          wa_output-objtype = 'Module Pool'.
        WHEN 'F'.
          wa_output-objtype = 'Function group'.
        WHEN 'S'.
          wa_output-objtype = 'Subroutine Pool'.
        WHEN 'J'.
          wa_output-objtype = 'Interface'.
        WHEN 'K'.
          wa_output-objtype = 'Class'.
      ENDCASE.
       MODIFY it_output FROM wa_output
      TRANSPORTING objtype
      WHERE obj_name EQ wa_output-obj_name.
       CLEAR : wa_output , wa_trdir.
    ENDAT.
  ENDLOOP.
   SORT it_output BY obj_name as4date as4time.

*FOR grid TITLE
  TXT4 = wa_output-objTYPE.
  txt2 = wa_output-obj_name.
  CONCATENATE txt1 txt2 TXT3 TXT4 INTO titletext SEPARATED BY space.
 ENDFORM.                    "get_object_details 

*&--------------------------------------------------------------------*
*&      Form  alv_fieldcat
*&--------------------------------------------------------------------*
*       text
*---------------------------------------------------------------------*
FORM alv_fieldcat.
   DATA lv_fldcat TYPE lvc_s_fcat.
     CLEAR lv_fldcat.
   lv_fldcat-row_pos   = '1'.
  lv_fldcat-col_pos   = '1'.
  lv_fldcat-fieldname = 'AS4DATE'.
  lv_fldcat-tabname   = 'IT_OUTPUT'.
  lv_fldcat-outputlen = '20'.
  lv_fldcat-scrtext_m = 'Date'.
  APPEND lv_fldcat TO it_fcat.
   CLEAR lv_fldcat.
    lv_fldcat-row_pos   = '1'.
  lv_fldcat-col_pos   = '2'.
  lv_fldcat-fieldname = 'AS4TIME'.
  lv_fldcat-tabname   = 'IT_OUTPUT'.
  lv_fldcat-outputlen = '20'.
  lv_fldcat-scrtext_m = 'Time'.
  APPEND lv_fldcat TO it_fcat.
   CLEAR lv_fldcat.
   lv_fldcat-row_pos   = '1'.
  lv_fldcat-col_pos   = '3'.
  lv_fldcat-fieldname = 'AS4USER'.
  lv_fldcat-tabname   = 'IT_OUTPUT'.
  lv_fldcat-outputlen = '20'.
  lv_fldcat-scrtext_m = 'Developer'.
  APPEND lv_fldcat TO it_fcat.
   CLEAR lv_fldcat.
   lv_fldcat-row_pos   = '1'.
  lv_fldcat-col_pos   = '4'.
  lv_fldcat-fieldname = 'AS4TEXT'.
  lv_fldcat-tabname   = 'IT_OUTPUT'.
  lv_fldcat-outputlen = '20'.
  lv_fldcat-scrtext_m = 'Object Desc'.
  APPEND lv_fldcat TO it_fcat.
   CLEAR lv_fldcat.
 ENDFORM.                    "ALV_FIELDCAT 

*&--------------------------------------------------------------------*
*&      Form  alv_layout
*&--------------------------------------------------------------------*
*       text
*---------------------------------------------------------------------*
FORM alv_layout.
   it_layout-cwidth_opt = 'X'.
  it_layout-zebra = 'X'.
  it_layout-grid_title = titletext.
 ENDFORM.                    "ALV_LAYOUT   


Steps to be done for creation of a screen 0600 with custom container.
1. Create the screen 0600 for the above program and place a custom container on the same.
2. Create a Custom container and name it C_GRID and OK code as OK_CODE.
3. Name the custom container C_GRID and give ok code as OK_CODE.
4. In the Flow Logic enter a PBO Module as SET_GRID.
5. Activate and Execute the Code.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Russian ABAP Developer's Club Forum Index -> Security and Monitoring All times are GMT + 4 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum


All product names are trademarks of their respective companies. SAPNET.RU websites are in no way affiliated with SAP AG.
SAP, SAP R/3, R/3 software, mySAP, ABAP, BAPI, xApps, SAP NetWeaver and any other are registered trademarks of SAP AG.
Every effort is made to ensure content integrity. Use information on this site at your own risk.