Wednesday, March 18, 2015

Creating a Basic SAP Search Help and explanation




The following steps show you how to create a basic SAP search help which allows you to provide the user with a selection help for a specific input field. A search help in its simplest form will just display a list of values from a single database table or view (selection method), which the user can select an option from. The value they select will then be entered into the input field the search help was requested from. 

Step1 - Create Search help 
Execute transaction SE11 and create a new search help called 'ZSHELP'. Please note this can be anything starting with Z that fits in the box but in some older SAP systems must be less than 5 characters long to be used as matchcode) 
 

Select Elementary search help 
 


Step2 - Enter basic details 
Enter a short description and PA0002 into the selection method field, this is basically the table the search help gets it data from 
 


Step3 - Enter search help parameters 
The next step is to add the fields that are going to be used by this search help as parameters i.e. those that appear in the output list or selection screen. To do this click the dropdown option of the first search help parameter 
 

Then select the appropriate field from the list (PERNR) 
 

Repeat this for fields NCHMC and VNAMC 
 
IMP - Import values from the screen/field to the search help 

EXP - Export value back to the input field(s) 

LPOS - Position on the output list the user selects from 

SPOS - Position on the selection screen if your search help to have select options which the user can enter to restrict further the search help value list by. 

Default - Add a default value the field is populated with 


Step4 - Save, activate and test 
Enter LPos values as follows (3,1,2) and tick the EXP column for the pernr field. This is the field who's value you want to be returned when the user selects an option/row. 
 

Save and activate the search help and press the test button, a screen will appear showing how the search help will appear on a pernr field. Press the search help button at the end of the field 
 

The search help output will now look like this with the fields in the order you specified then in the LPOS field 
 


Step5 - Change output order 
Now enter LPos values as follows (1,2,3) 
 

If you save, activate and test the search help again you will see that the output order has changed 
 


Step6 - Add selection options 
Now enter 1 and 2 against parameters NCHMC and VNAME within the SPos column 
 

Now if you save, activate and test the search help again you will see that you have the 2 parameters available on the search help to further restrict the value list. You may need to expand the view using the little arrow to see this additional options. 
 

Enter values in the additional parameters and notice how the hit list is restricted 
 


Step7 - Change Dialog behaviour 
Just to demonstrate what this option does, ensuring you still have values within the SPos column change the dialog behaviour from 'Display values immediately' to 'Dialog with value restriction' 
 

Now when you test it you should notice that the parameter restriction fields are display before you see the value results list. You could also add defaults to these fields using the default column. This option may be usful if the search help returns lots of values as it gives the user an option to restrict further before the data is retrieved and displayed. 
 

Step 8 - Assign matchcode to report parameter 
If you have created your search help to be matchcode compatible (i.e. less than 5 chars long) you can add the following line of ABAP code into your program: 

PARAMETER p_prog LIKE trdir-name MATCHCODE OBJECT zsh. 

alternatively see other methods of adding a search help.


SAP Search helps can be implemented in a variety of ways:
Add to Table fieldAdded via SE11: Place cursor on desired field within database and select menu path  Goto->Search help->for fieldEffect: If field used to create screen field, search help will be called when user executes F4/drop down input help. All fields on screen will be populated if appropriate fields exist in search help and screen.
Add to TableAdded via SE11: Place cursor on desired field within database and select menu path  Goto->Search help->for table
Add to Data elementAdded via SE11: Select desired data element (double click), enter search help name and parameters in appropriate fields on screen. Will be applied to all fields associated with that data element
Add to Screen fieldAdded via screen painter: One of field attributes is search help. Will only populate the one screen field.
Add to Sel. screen parameter (MATCHCODE)Added using 'matchcode' addition for parameters declaration: Search help name must be no more than 5 characters long.

e.g. PARAMETER p_prog LIKE trdir-name MATCHCODE OBJECT zsh.




How to create a Search Help with an Exit

Thanks to this option, it is possible to choose easily an entry without any need for controlling its relevance, since it is automatically supported by the search help functionality.
If you have luck, you would find a standard search help with adequate filters that fulfill your requirement. But, it is not so obvious to find the right search help!
For instance, the standard search help MAT1 contains several tabs with different filters to refine the search for material numbers. Even though, it is not possible to fulfill complex conditions like “Display only materials whose valuation class correspond to a given cost element group”
In such cases, you need to create your own search help and implement the specific conditions on your own, using search help exits.
In this blog, I will explain how to create a search help that fulfills the condition mentioned above:
“Display only materials whose valuation class correspond to a given cost element group”
For those who are not familiar with the concept of valuation classes in MM:
  • Go to transaction MM03 and choose a material number then select the “Accounting 1” view
  • Enter the plant in next popup then confirm.
  • The valuation class could be found under “Current valuation”.
  • The valuation class permits –in combination with other factors- to determine the G/L account on which the stock values have to be posted.
  • G/L accounts are assigned to valuation classes via transaction OBYC.
  • The FI G/L accounts correspond to primary cost elements in CO. Those are categorized into cost element groups that could be visualized using transaction KAH3.
We have now in mind the relationship between valuations classes in MM and cost element groups in CO. Lets create the search help that realizes our requirement.

First step: Create the search help via SE11

In SE11, choose “Search Help” and enter its name, then click on “Create”.
In the next popup, choose the option “Elementary search help” since we will create a single tab in the search help.
Enter a description then fill in the search help parameters:
  • Importing parameters are passed at runtime to the search help. In our example, it concerns information related to a cost element group, i.e. Group name, company code and controlling area.
  • Exporting parameters correspond to the fields displayed in the hit list. These are the material number and description.
  • Further parameters could be added such material type and language. These are filters displayed in the dialog box that enable further restriction of the hit list.
A default value could be assigned to each parameter by filling the column “Default value”. For example, if you want to display only materials with a specific type, you need just to add it as a default value.
Fill in the columns LPOS and SPOS with parameters positions in the hit list and the dialog box respectively.
Keep the dialog type “display values immediately” to display the hit list without going through a dialog box.
The result looks as follows:
It remains only to add the search help exit.
It is a function module with special parameters.
In SE37, create the function module Z_PS_F4_EXIT_MATNR.
It is necessary to add the following parameters. Otherwise the search help could not be activated.
  • Changing parameters
  • Table parameters:
  • Go now back to the search help and activate it

Second step: Implementation of the search help exit.

The search help implementation is structured as follows:
  1. Get importing parameters
  2. Get dialog box parameters
  3. Select material numbers corresponding to a given cost element group
  4. Constitute the result list of the search help
  • Get importing parametersFor this purpose, use parameter SHLP as follows:
  • Get dialog box parameters
    For this purpose, use parameter SHLP-SELOPT as follows:
  • Select material numbers corresponding to the selected cost element group
    This functionality is splitted into several function modules for reusability.
    • Create a function module that builds a range of cost elements belonging to a given group.
    Create a structure…..
    …and table type for the range
    Go to SE37 and create the function module Z_PS_GET_KSTAR_FROM_GROUP with the following parameters:
    Add the following code:
    • Create a function module that returns materials with valuation classes that correspond to a given cost element group.
    Create the following structure which will contain the parameters needed for valuation class selection.
    Create function module Z_PS_GET_RESSOURCE_BY_GRPNAME with following parameters.
Implement now the function module:
  • Call the previously created MF Z_PS_GET_KSTAR_FROM_GROUP to get the range of cost elements belonging to the group in parameter.
  • Use the following tables to find out the relevant material numbers:
    • T030: Get valuation classes corresponding to the previously determined cost elements range
    • MBEW: get materials that have one of the selected valuation classes
The final code looks as follows:
Go back to search help exit Z_PS_F4_EXIT_MATNR and add a call to the function module ‘Z_PS_GET_RESSOURCE_BY_GRPNAME’ :
  • Constitute result list
    Select descriptions of materials found in last step. The dialog box parameters have to be taken into account in the selection.
    Append the result to search help hit list
    To recapitulate, here is the complete code of search help exit Z_PS_F4_EXIT_MATNR

Third step: Test the search help

Create a table with the following zones:
Select zone “MATNR” and click on button “Srch Help”.
Enter the search help name
Mapping between search help parameters and table zones is done automatically. Just confirm the generated proposal.
Generate a maintenance dialog for the table to be able to maintain it via SM30.
Go now to SM30 and add a new entry in the table. Enter group name, company code and controlling area.
Use the search help of zone “Material” to get relevant values. When you execute it, only material numbers corresponding to the group name value are listed.
Change the group name and notice the effect in search help result
You can also display the dialog box to enable more filtering options

Tuesday, March 3, 2015

Control Break Statements in SAP ABAP


Control break statements are like events inside the loop. There are 5 control break statements in ABAP. These are used within loop.(Except ON CHANGE OF which can be used outside the loop as well)

  • AT FIRST - ENDAT
  • AT NEW - ENDAT
  • AT END OF - ENDAT
  • AT LAST - ENDAT
  • ON CHANGE OF

Explanation:


AT FIRST : Will trigger at the first run of the loop.

AT LAST: Will trigger at the last run of the loop.

The below 3 events are normally used when the table is sorted.


AT END OF : When we use At end for a field, it will trigger whenever there is any change in any of the fields from the left to that of the particular field. The trigger point will be the at the last occurrence  of the same value for the field.

AT NEW: When we use At new for a field, it will trigger whenever there is any change in any of the fields from the left to that of the particular field.The trigger point will be the at the first occurrence of the new value for the field.

ON CHANGE OF: On change of it triggers only when there is any change in the particular field. 
On change of can be used outside the loop too

Example Program:


Here is an example program which gives you the practical understanding of all control break statements.
Example Program for Control Break Statements
Example Program for Control Break Statements
NOTE: It is important to note that we need a temporary work-area apart from the work-area used in loop for the last 3 control break statements. If we directly use the work-area of the loop, then we will get **** value and not the output we are expecting.
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
*&---------------------------------------------------------------------*
*& Report ZAU_CONTROLBREAK
*&
*&---------------------------------------------------------------------*
*& NEW TO SAP CONTROL BREAK EXAMPLE
*& http://www.newtosap.info
*&
*&---------------------------------------------------------------------*
 
REPORT zau_controlbreak.
TYPES: BEGIN OF ty_marc,
matnr TYPE marc-matnr,
werks TYPE marc-werks,
END OF ty_marc.
 
DATA: it_marc TYPE STANDARD TABLE OF ty_marc,
wa_marc TYPE ty_marc,
wa_temp TYPE ty_marc.
 
SELECT matnr werks FROM marc INTO TABLE it_marc UP TO 10 ROWS WHERE matnr ge 40.
SORT it_marc BY matnr.
FIELD-SYMBOLS : <matnr> type matnr.
 
WRITE:/ 'FULL TABLE'.
LOOP AT it_marc INTO wa_marc.
wa_temp = wa_marc.
WRITE: / sy-tabix , wa_temp-matnr, wa_temp-werks.
ENDLOOP.
 
WRITE:/ 'AT FIRST AND LAST'.
LOOP AT it_marc INTO wa_marc.
wa_temp = wa_marc.
AT FIRST.
WRITE:/ 'First Entry'.
WRITE:/ wa_temp-matnr, wa_temp-werks.
ENDAT.
AT LAST.
WRITE:/ 'Last Entry'.
WRITE:/ wa_temp-matnr, wa_temp-werks.
ENDAT.
ENDLOOP.
 
 
WRITE:/ 'AT END OF'.
LOOP AT it_marc INTO wa_marc.
wa_temp = wa_marc.
AT END OF matnr.
WRITE: / sy-tabix , wa_temp-matnr, wa_temp-werks.
ENDAT.
ENDLOOP.
 
WRITE:/ 'AT NEW'.
 
LOOP AT it_marc INTO wa_marc.
wa_temp = wa_marc.
AT NEW matnr.
WRITE: / sy-tabix , wa_temp-matnr, wa_temp-werks.
ENDAT.
ENDLOOP.
 
WRITE:/ 'ON CHANGE OF'.
LOOP AT it_marc INTO wa_marc.
wa_temp = wa_marc.
ASSIGN wa_marc-matnr TO <matnr>.
ON CHANGE OF wa_marc-matnr.
WRITE: / sy-tabix ,wa_temp-matnr, wa_temp-werks.
ENDON.
ENDLOOP.

What types of objects can be created in the ABAP Dictionary?

  1. Tables - Transparent Table, Pooled Table, Clustered Table
  2. Views - Database View, Projection View, Maintenance View, Help View
  3. Data Types -Data Elements, Data Structures,Table Types
  4. Type Groups
  5. Domains
  6. Search Helps
  7. Lock Objects
  8. Matchcodes

What types of tables can be created in the ABAP Dictionary?

  • Transparent Tables: Exist with the same structure both in dictionary and in database exactly with the same data and fields.
  • Pooled Tables: These are logical tables that must be assigned to a table pool when they are defined. Pooled tables are used to store control data. Several pooled tables can be combined in a table pool. The data of these pooled tables is then sorted in a common table in the database. The basic idea of the table pool is the storage of data records from the tables defined in ABAP dictionary that are not dependent on one another. Intersection of key fields of the tables which are combined is empty. Example - RFCDOC
  • Cluster Tables:  Cluster tables are logical tables that must be assigned to a table cluster when they are defined. Cluster tables can be used to store control data.  They can also be used to store temporary data or texts, such as documentation.  The idea of cluster tables is that you store functionally dependent data which is divided among different tables in one database table. Accordingly, the intersection of the key fields of the cluster tables is formed by the key of the table cluster(cluster key). Exaple - CDPOS 
Which field differentiates a table from client-dependent and client-independent?
Client-dependent tables contains a column of type CLNT as the first key field. This field is often named MANDT (and less often CLIENT). Client-independent tables do not have this field. These last can be accessed from any client unlike client-dependent tables.
Unknown macro: {gliffy}
When open SQL ABAP statements apply to a client-dependent table, SAP automatically adds the client selection in the WHERE clause. For example SELECT * FROM mara WHERE matnr LIKE '1%' will be automatically translated into SELECT * FROM mara WHERE mandt = sy-mandt AND matnr LIKE '1%' (where sy-mandt is the client where the program runs). If you try to do client selection yourself, it is ignored, except if you add the CLIENT SPECIFIED keyword.

What is the difference between pooled tables and cluster tables?

Cluster tables and Pooled tables have many to one relationship with the underlying database.
A table pool or table cluster should ideally be used for storing control information such as screen number sequences, small program data and documentation. Data used for business transactions should be stored in transparent tables
A table pool corresponds to a table in the database in which all records from the pooled tables assigned to it are stored.
Several logical data records from different cluster tables can be stored together in one physical record in a table cluster.
  • A pooled table cannot have the name having more than 10 characters.
  • All the key fields of the pooled table must be of character data type.
  • In pooled tables, the maximum length of the key field/data fields should not exceed the length of varkey/vardata of the pool respectively.
  • Pooled tables have 2 key fields tabname(Holds the name of pooled table, its CHAR of length 10) and varkey(Contains all key fields of the corresponding table ,its CHAR max length 110). Tabname and varkey are used to retrieve data.
  • They also have Dataln(Contains length of the content in the field,its INT2 type) and Vardata (This is where actual data of a field is stored)
  • In cluster table the records having the same key are stored in a single key in the cluster.
  • If there is an overflow of the data records a continuation record is created with the same table key.
    Detailed information on pooled and cluster table can be found 
Unknown macro: {gliffy}
A cluster table has the following structure:
Field
Data type
Meaning
CLKEY1
*
First key field
CLKEY2
*
Second key field
...
...
...
CLKEYn
*
nth key field
Pageno
INT2(5)
Number of the continuation record
Timestamp
CHAR(14)
Time stamps
Pagelg
INT2(5)
Length of the string in Vardata
Vardata
RAW
  
Contains the entries from the data fields of the assigned cluster tables as a string, max. length n depends on the database system used

What is the difference between Database tables and Views?

The Table has a physical storage of data whereas views do not have physical storage of data.
The view is derived from one or more tables which is created only with the required fields from the database table(s). It can also be created with table inner joins and specifying conditions for data retrieval.

What are the different types of Views?

  • Projection view - Just retrieves some fields from a single table.
  • Help View - This is used for search help.
  • Database View - This is inner join view of one or more tables
  • Maintenance View - Helps in creating maintaining data of the application object. The data can be distributed among several tables.

Can I use all the views in the ABAP program ?

No. You can use only projection view or database view in your ABAP program.

What is Table Maintenance Generator?

The Table Maintenance Generator is used to create table maintenance program to add, modify or delete records in the database table.A database table can be manipulated by a program or manually.
In SE11 under delivery and maintenance if 'Table maintenance allowed' is selected . We can manually enter entries using SE16 or table maintenance generator screen.
This can be accessed using transaction SE54 or SM30 (Maintain Table Views Initial screen)  in SE11 using the menu Utilities->Table Maintenance Generator.

What is One step, two step in Table Maintenance Generator?

This specifies the screens to be created in the Table Maintenance Program.
Single step: Only overview screen is created i.e.
the Table Maintenance Program will have only one screen where you can add, delete or edit records.
Two step: Two screens namely the overview screen and Single screen are created. The user can see the key fields in the first screen and can further go on to edit further details.

How do you activate the database table after making changes to it?

After making changes to the table, in order to reflect the changes go to transaction SE14 and Choose Edit and then choose Activate and Adjust Database.
OR
You can directly activate it from the SE11. Goto Utilities-> Database Object -> Database Utility -> Activate and Adjust Database.

In which table are the programs stored in?

The programs are stored in the table TADIR and the development class packages in TDEVC.

I have recently added a few fields to a custom table. But I don't get these fields in the table maintenance program?

You have to delete and recreate your own existing table maintenance program to see your new fields.
I had faced similar problem, I re-generated the view maintenance and I could see newly added fields in the maintenance program.

What is the difference between INSERT and MODIFY?

Whenever you need to create new records in the database table use INSERT. Whenever using INSERT be sure that a duplicate entry having the same values for the primary key fields are not present. Else it may throw a dump.
When you use MODIFY it makes a check for the matching key field values. If present it modifies the matching record, else it creates a new record in the database table.
Possible syntaxes for INSERT:
  • INSERT INTO dbtab VALUES wa
  • INSERT dbtab FROM wa
  • INSERT dbtab FROM TABLE itab
    Possible syntaxes for MODIFY:
  • MODIFY dbtab FROM wa
  • MODIFY dbtab FROM TABLE itab

What is the difference between Modify and Update?

Update will update the existing records in the table. Whereas Modify will modify/update the existing records and if the record is not found then the record will be inserted.
Possible syntaxes for UPDATE:
  • UPDATE dbtab SET column1 = field1 [column2 = field2, etc.] WHERE logexp
  • UPDATE dbtab FROM wa
  • UPDATE dbtab FROM TABLE itab

How do I create index on a database table?

Go to transaction SE11, open your database table. Choose the menu, Goto->Indexes to create index. Give your index name and choose the fields of the table. Be careful, an additional index may vanish with the next upgrade or hotpackage.

What is the difference between Check Table and Value Table?

The Check Table is the dependent table to which the relationship is defined using foreign keys. The contents of the check table field are shown in the input help for the referenced field.
If you use a check table to check values, only data that is stored in database tables is used in the check. If the allowed values are restricted due to inheritance or dependencies while you are classifying an object, these restrictions are not checked.
The Value table is the table attached to a field at the domain level, where the entry to the field can be only from the value table. They are not used in the Input Help.
When you define a domain that all the table fields or structure components referring to this domain should be checked against a certain table. This information can be stored in the domain by entering a value table. 
The basic difference between value table and check table is check table can be used as a input help for a field on which check table is assigned. Value table contents are never used for input help.

When Value table becomes check table?

While establishing foreign key relation between check table and foreign key table if at the domain level value table is provided then the system will propose that value table as check table if you accept this proposal then value table will becomes check table.

What is the difference between Domain and Data Elements?

The Domain specifies the Technical attributes of the field such as the data type, length and the value range.
A data element describes either an Elementary Type or a Reference Type.
An Elementary Type is defined by the built-in data type, length and possibly the number of decimal places. These type attributes can either be defined directly in the data element or copied from a domain  .

When I create new entries in the table the field values are always in Uppercase. How do I get the data with mixed case?

The reason for this is that the Domain for the field in the table might have Lowercase checkbox unchecked. Check the Lowercase checkbox to preserve the case of your data.

What is the need of reference table and reference field in Currency/Quantity fields?

The reference table and reference field are the fields which specify the currency key or Unit of Measure. Suppose if the user specifies a currency amount say 1000$, the currency amount field would indicate the amount 1000 and the currency key indicates that the currency specified is in Dollars.

Where to find the table of tables?

DD02L is the table which stores all the table names

How to add new fields in standard table ?

Create Z-Structure with the fields needed and append the structure to the standard table by using the option append structure within table display.
We can enhance the standard tables by using Append structures and customizing includes.
Append structures allow you to attach fields to a table without actually having to modify the table itself. Table enhancements using append structures therefore do not have to be planned by SAP developers. An append structure can only belong to exactly one table.
In contrast, includes allow you to use the same structure in multiple tables. The include statement must already exist in the SAP table or structure. Table enhancements using includes do, however, have to be planned by SAP developers.

How to create the Table Maintenance Generator?

After creating the table in the menu click on Utilities -> TMG (or transaction code ). There Enter the authorization group like &NC&. Enter one existing function group. Give package name. Select the radio button One step if you want to display entries in one screen or Two step if you want to display entries in two screens. Click on Find screen numbers button in application tool bar.Select the radio button propose or some thing to assign one screen to your new TMG. Click on create.


In which table can we find the Report Source Code?

Table REPOSRC contains the Report Source Code, but it can be correctly read only by READ REPORT abap statement. 

What is the difference between Transparent tables and Pooled tables?


Transparent tables :
  • It has a one- to- one relationship with a table in the database.
  • Transparent tables are used to hold application data.  Application data is the master data or transaction data used by an application.
  • Example of Master data : Material master (MARA)
  • Example of transaction data : Purchase orders
  • Transparent tables are probably the only type of table we will ever create.
    Pooled tables :
  • It has many-to-one relationship with a table in the database.
  • Used to hold system data, such as System configuration information, or historical and statistical data.
  • It is a database table with a special structure that enables the data of many R/3 tables to be stored within it. It can only hold pooled tables.
  • Pooled tables are primarily used by SAP to hold customizing data.
  • During initial implementation of the system the data in the customizing tables is set up by a functional analyst.
  • A table in the database in which all records from the pooled tables assigned to the table pool are stored corresponds to a table pool.
A pool has the following structure:
Field
Data type
Meaning
Tabname
CHAR(10)
Name of pooled table
Varkey
CHAR ( n )
Contains the entries from all key fields of the pooled table record as a string, max. length for n is 110
Dataln
INT2(5)
Length of the string in Vardata
Vardata
RAW ( n )
Contains the entries from all data fields of the pooled table record as a string, max. length n depends on the database system used
Ø      If a pooled table record is saved, it is stored in the table pool assigned. The name of the pooled table is written to the field Tabname. The contents of all key fields of the pooled table are written as a string to field Varkey and the contents of all data fields as a string to field Vardata. The length of the string stored in Vardata is entered in field Dataln by the database interface.
 

What is a Data Element?

This defines Field label name and Field Label length.
 A data element describes either an elementary type or a reference type.
An elementary type is defined by the built-in data type, length and possibly the number of decimal places.
A reference type  defines the types of reference variables in ABAP programs.

What is a Matchcode?

This is just another kind of search help provided by the ABAP Workbench via ABAP Dictionary. It is defined in ABAP Dictionary. This was replaced by search help from 4.0 above.
Before 4.0 input helps were defined by creating matchcodes and help views, these objects are converted to search helps with the same name.
An elementary search help can be created by using a matchcode ID. And  collective search help is created by using a matchcode object. When Matchcodes are attached to input fields these attachments are converted to the collective search helps to the corresponding screen fields. 

What tables contain DDIC objects?

1. TADIR - Directory of Repository Objects
2. DD01L - Domain
3. DD02L - Tables
4. DD03L - Table Fields
5. DD04L - Data Elements
6. DD06L - Pool/Cluster structures
7. DD07L - Fixed values for Domains
8. DD08L - Relationship definitions
9. DD09L - Technical Settings of tables
10. DD12L - Secondary Indexes
11. DD23L - Matchcode Objects
12. DD25L - Aggregate Header (Views, MC Objects, Lock Objects)
13. DD30L - Search Helps
14. DD40L - Table types (internal tables defined in DD)

What are Lock Objects?

  • A R/3 system allows multiple users to access the same object at a given point of time by lock mechanism. When one person is editing the program/transaction these locks are set and released accordingly by function modules. These function modules are generated automatically by the Lock Object definition in ABAP dictionary.

What is significance of table maintenance attribute?

This attribute of table maintenance decide about whether table records can be created or not using table maintenance generator or whether the entries can be viewed only.This attribute donot have effect on program.Programmatically one can create entries in table having any value for this attribute

Where to find the relationships between different database tables ?

Database Tables like DD08L provide the information about the relationships between different database tables.