Académique Documents
Professionnel Documents
Culture Documents
DDIC Objects
1. What are the technical properties of a table and explain about them?
Ans:- By specifying technical settings we can control how database tables
are created in the database. The technical settings allows us to - optimize
storage space requirements
There are 7 types of technical properties. They are:
a). Delivery Class: - It is used to control the transport of table data when
installing or upgrading, in a client copy and when transporting between
customer systems.
CLASS A: Application table (Master and Transaction data)
Master data: is data which is frequently read, but rarely updated. Eg.
Customer master, Material master.
Transaction data is data which is frequently updated. Eg. Sales order,
Purchase order.
Logically tables of delivery class A are not transported hence no
CTS is
assigned.
CLASS C: Customizing table.
Customizing data is data which is defined when the system is
initialized and
then rarely changed. E.g. company codes, document types.
In real time we mostly use the delivery class C.
e). Buffering:-
What is Buffering?
Buffering a table improves the performance when accessing the data
records contained in the table. The table buffers reside locally on each
application server in the system. This avoids the time consuming process
of accessing the database.
Full buffering:- All records of the table are loaded into the buffer when
one record of the table is accessed.
Generic buffering When a record of a table is accessed, all the records
having this record in the generic key fields (part of the table key that is
left-justified, identified by specifying a number of key fields) are loaded
into the buffer.
Single-record buffering:- Only the records of the table that are really
accessed are loaded in to the buffer.
In real time we mostly use the mode Buffering not allowed Table
cant be buffered.
- Transaction code SE16 and SE16n can be used directly if you have set
"Display/Maintenance Allowed" within 'Delivery and Maintenance' Tab in t-
code SE11.
- If you make changes in the table then you will have to re-adjust or to re-
create the Table maintenance Generator.
2. Customizing Includes
some of the SAP standard tables contains special include statements
called Customizing includes. In contrast to Append structures,
Note that customizing includes are created by SAP, but the customer
supply the fields for the include.
Customizing includes begin with CI_ and is part of the customer
namespace
One Customizing include can be inserted into more than one table.
It can be inserted at any position in the table.
You can find Customizing includes in SE11 under structures.
Try to take a look at table RKPF which uses the Customizing include
CI_COBL (In an IDES system). Next try to add a field to CI_COBL, and
activate it. If you go back to table RKPF you will see that your new field
has been added.
7. How to identify the standard tables? (indications)
1. The table which does not start with Z or Y.
2. The tables which cant be seen in change mode.
10. How many types of indexes are there and explain about them?
Indexes are used to avoid the duplicate data while accessing the table.
Indexes can also be used for better performance while extracting the data
from the tables.
There are two types of indexes:-
Primary Index:- it is generated by the system using the key fields of the
table. Key fields hold the unique data. Automatically created when table is
created.
The value table is a table attached to the field at domain level, where the
entry to the field can be only from the value table. They are not used in
input help.
The view is derived from one or more tables which is created only with the
required fields from the database table(s). View contains the data at
runtime only.
What are the lock objects and explain about different lock modes?
They are used to control the parallel access for the same data by multiple
users. It avoids the concurrency access of multiple users on the same
data.
The custom lock object name should start with E followed by table name.
It generates two function module ENQUEUE and DEQUEUE.
SM12 is used to list out the locked objects and to delete the locked
objects.
CONVERSION_EXIT_xxxxx_INPUT
CONVERSION_EXIT_xxxxx_OUTPUT
The INPUT module converts from display format to internal format, and
the OUTPUT module converts from internal format to display format.
23. How to find conversion exit?
Go to a table, field for which you want to find the conversion exit.
You can see the conversion exit at domain level ex: MATN1 for MARA-
MATNR field.
Double click on conversion exit, you will find two function modules.
CONVERSION_EXIT_MATN1_INPUT
CONVERSION_EXIT_MATN1_OUTPUT
Uses:
a) Convert Data (I.e. change field lengths and data types etc)
b) Activate Objects
c) Create/Delete/Change of tables and indexes
Approach:
Go to Transaction SE14
The Initial screen of database utility is displayed. Enter Name of either
table/view/Match code/Pool/Cluster tables
I given table name as ZDATA_UTL
Choose Edit button or Enter Key.
Next screen will be displayed as below.
26. I have a Z-table, I want to add one or more fields to the table
without disturbing the previous data, what should I do?
While adjusting database table in SE14, select Save Data Radiobutoon.
Important
BAPI BDC
BAPI is faster than BDC. BDC is relatively slower than BAPI.
BAPI directly updates database. BDC goes through all the screens as
a normal user would do and hence it
is slower.
No such processing options are Background and Foreground
available in BAPI. processing options are available for
BDC.
BAPI would generally used for small BDCs would be preferred for large
data uploads. volumes of data upload since
background processing option is
available.
For processing errors, the Return Errors can be processed in SM35 for
Parameters for BAPI should be session method and in the batch
used.This parameter returns input program for Call Transaction
exception messages or success method.
messages to the calling program.
Macro Subroutine
Macro can be called only in the Subroutine can be called from other
program it is defined. programs also.
Macro can have maximum 9 Can have any number of parameters.
parameters.
Macro can be called only after its This is not true for Subroutine.
definition.
A macro is defined inside: Subroutine is defined inside:
DEFINE FORM ..
. ..
END-OF-DEFINITION. ENDFORM.
Macro is used when same thing is to Subroutine is used for modularization.
be done in a program a number of
times.
Important
Question 8: What is the difference between AT SELECTION-
SCREEN and AT SELECTION-SCREEN OUTPUT?
AT SELECTION-SCREEN is the PAI of the selection screen whereas
AT SELECTION-SCREEN OUTPUT is the PBO of the selection screen.
Changes in SPRO / IMG that define system behavior fall under customizing
requests.
An example would be defining number ranges in SPRO.
When we PASS lv_var by VALUE , the actual value of lv_var is copied into
VAR.
When we PASS lv_var by REFERENCE , the reference or the memory
address of lv_var is passed to the Function module. So VAR and lv_var will
refer to the same memory address and have the same value.
Transaction data keeps on changing and deals with day to day activities
carried out in business.
Transactions done by or with Customers, Vendors, and Materials etc.
generate Transaction Data. So data related to Sales, Purchases, Deliveries,
Invoices etc. represent transaction data
LOAD-OF-PROGRAM:
INITIALIZATION: If you want to initialize some values before selection
screen is called
AT SELECTION SCREEN OUTPUT: PBO for Selection Screen
AT SELECTION SCREEN: PAI for Selection Screen
START-OF-SELECTION
END-OF-SELECTION
TOP-OF-PAGE
END-OF-PAGE
If you want to validate a single field in Module Pool, you use the FIELD
Command.
On error, this single filed is kept open for input.
If you however want to validate multiple fields, you can use the CHAIN
ENDCHAIN command. You specify multiple fields between CHAIN and
ENDCHAIN.
On error, all fields between CHAIN ENDCHAIN are kept open for input.
Question 23: How is the table sorted when you do not specify field name
and Ascending or Descending? On what criteria will the table be sorted?
Do internal table have keys?
Another example is domain MATNR. For this domain the value table is
MARA.
So whenever and wherever, you use this domain the system will force you
to use values for MATNR in table MARA.
Question 26: How do you find BAPI?Approach1:
You can go to Transaction BAPI and then search for your desired object.
Say you want to find a BAPI for creating users in the system, in such case
you can search for the User and find the relevant BAPIs.
Approach2:
Another way is to find a Business Object. Say you want to find a BAPI for
creating Material in SAP and you know the BO for Material is BUS1001006.
You can go to Transaction SWO1 and enter the BO BUS1001006 in the
BOR. Then have a look at the methods for this BO.
Important
Question 27: How do you find BADI?
Approach1:
Go to Class CL_EXITHANDLER in SE24 ---> Put a breakpoint in
methodGET_INSTANCE.Now go and execute your transaction code for
which you want to find BADI.
You will find the BADI in the changing parameter exit_name:
Approach 2:
Go to Tcode SE84 Enhancements BADIs Definitions.
Find the package for the Tcode for which you are finding the BADI.
Enter it as shown and hit execute:
SAP Script
ABAP Scripts Interview Questions
Layout sets contain predefined text modules with space reserved for
variable data. You can use these text modules for different application.
You can use Styles to define the formatting of the text in your
documents. A style
determines text formatting by setting the paragraph and
character formats used in a
document. You can, for example, use a style to highlight
character strings or whole
paragraphs. You can assign a style to any text. Typically,
however, youll use styles
primarily in the main windows of layout sets, where users type or
enter text directly
in documents.
Header data is found in both style and layout set maintenance.
In style maintenance, it is used primarily to present important information
- designed to make it easier for the end user to select a style. The header
data in layout set maintenance, on the other hand, is used for information
and control purposes.
VAR Window with variable contents. The text can vary on each page in
which the window is positioned. Variable windows are formatted for each
page.
Character formats - You can also use character formats to format texts
or paragraphs. Unlike paragraph formats, however, they are used to
format text within a paragraph.
Windows - Windows are names and window types, which are not
physically positioned until they are allocated to pages and units
of measurement are specified.
Pages - Pages are defined to provide the system with a start and end
point in text formatting.
The basic layout of the document is pre-defined , but in many cases, other
data has to be merged with it, such as address data or purchase order
items. This data might be entered manually by a employee, or retrieved
from a database table.
Debug SAPScript
You can debug a SAPScript: Use Tools - Word Processing - Layout Set.
Enter name of layout set and then Utilities - Activate Debugger.
It is of no consequence which layout set you enter when selecting the
SAPscript debugger. (Menu path: Tools-Word-processing - Forms, Utilities -
Activate Debugger) The next layoutset called will invoke the debugger.
This is quite handy when verifying which layoutset is being called
(Verifying customizing settings).
Another way to set the SAPScript debugger is to run program RSTXDBUG.
When a Form is copied from one client to another .And If U try to display
or change the form in the copied client .The possible error message cud
be :
1.Form not found
Try coping again specifing the language .
2.IF IT dispalys an error message saying That the text file is inconsistent .
Then go to SE38 and Run RSTXCHKO .
It will ask for the form name ,then check all the checkboxes and then run
the program.
Note : all Script related problems can be solved using Program RSTX*.
How to take a back up of script layout into Ur hard disk and load
it later
Use Program RSTXSCRP.
Use EXPORT mode, when downloading and IMPORT when uploading a
script. Dont forget to give the form name in the object field. This will
create a script with the same name as that of the original script . If a
script with the same name exists in the same client ,then it will give an
error Object cannot be overwritten .
How do you backup sap script layout sets? Can you download and
upload? How?
SAP script backup :- In transaction SE71 goto Utilities -> Copy from client
-> Give source form name, source client (000 default), Target form name.
Download :- SE71, type form name -> Display -> Utilities -> form info ->
List -> Save to PC file.
Upload :- Create form with page, window, pagewindow with the help of
downloaded PC file. Text elements for Page windows to be copied from PC
file.
Delimiter & must be used immediately before and after the symbol.
The composer received layout information from the layout set specified by
the print program. The documents are formatted according to this layout
information.
The print program controls the completion of thelayout set. Once this is
done, the composer places the completed document in the spool.
We define the window type, Default Paragraph, specify the text elements
or a SAPscript text to be included etc in the Windcow Component.
What are symboles & state their different types with E.g.
A Symbol is a constant, which can be inserted in a document. It saves the
user unnecessary work when replacing sections of text, phrases, etc.
Each symbol has a name which is encloses by &.
Text symbols: You can define a text symbol for any text module. This
symbol is valid only in the text module for which you have defined it. Eg.
Define &Symbol& = value.
Give me couple of methods that I will take standard script layout printout
for different printer.
How u will analysis script program? ( which goes to main and how many
windows etc.)
2. What are the events associated with LDB and their purpose.
GET and GET LAST. GET will be triggered for each record and retrieves a
record. GET LAST will be triggered at end of each record.
13. Can you put a SQL Join statement in ABAP? If yes, How
Through alias (only in 4.0 and above versions)
16. What are different types of internal tables and their usage.
17. One of my users has access to SE38 transaction, and so he
can run the program developed by you. You have attached this
report/transactional program to a particular Z* transaction. To
restrict the users to Execute this program, what you do it from
programming side?
Check for Authorization object S_TCODE with value Z---- in initialization
event.
(Code:
Authority-check object 'S_TCODE'
id 'TCD' field 'ZBC_REQ'.)
What is a report?
Report is a program used to fetch data from the database tables and
display it on the screen. It has 2 screens selection screen(optional) and list
or output screen.
When the TOP-OF-PAGE event does get triggered?
TOP-OF-PAGE event will be triggered when the first ULINE, WRITE or SKIP
statement occurs in a program.
What is the difference between SKIP and RESERVE?
SKIP provides empty space between lines, while RESERVE executes a page
break on the current page if the number of lines between current line and
the page footer is less than the number specified in RESERVE statement.
What is the difference between SKIP and NEW-LINE?
SKIP generates a blank line, while the NEW-LINE causes the control to
move to next line.
What is hotspot?
Hotspot is an area on the list where the mouse pointer turns into an
upright hand symbol. A single click on the hotspot does the same thing as
a double-click.
What does HIDE statement do?
The HIDE statement hides the contents of the line along with the line
numbers in a system defined HIDE area. This is used in interactive
reporting.
What are the events in classical reports?
INITIALIZATION
AT SELECTION-SCREEN
START-OF-SELECTION
END-OF-SELECTION
TOP-OF-PAGE
END-OF-PAGE
How many detail lists can be created in interactive reporting?
20
What is the name of the system variable that holds the contents
of the selected line in interactive reporting?
SY-LISEL
Can we set page headers to details lists?
Yes. Use TOP-OF-PAGE DURING LINE-SELECTION event..
If a table has MANDT field in its key fields then that table is Client-
dependant.
If it doesnt has MANDT field then it is client-independent.
Examples:
Client Dependent: SAPscript and STD texts data
Client Independent: Smart forms, all dictionary objects data and repository
objects data like programs, function modules, tables etc.
Example: DEVK900030
Tasks also use the same naming convention, with 'numbers' consecutive
to the number used in TR containing them.
Import Queue -> is the list of TRs available in the common directory and
are ready to be imported into the target system, this is the SAP
Application View, at the OS level it is also known as Import Buffer.
Import History
We can also check the previous imports that happened in the system as
follows:
Transport logs and return codes
After the transport has been performed, the system administrator
must check whether it was performed properly or not, for that SAP has
provided us with the following type of logs (SE01 -> GOTO -> Transport
Logs):
o Action Log which displays actions that have taken place:
exports, test import, import and so forth.
o Transport Logs which keep a record of the transport log
files.
One of the important information provided by logs are the return
codes:
o 0: The export was successful.
o 4: Warning was issued but all objects were transported
successfully.
o 8: A warning was issued and at least one object could not be
transported successfully.
o 12 or higher: A critical error had occurred, generally not
caused by the objects in the request.
IDOC Types
An I DOC Type, (Basic) defines the structure and format of the business
document that is to be exchanged. An IDOC is an instance of an IDOC
Type , just like the concept of variables and variables types in
programming languages. You can define IDOC types using WE30
Basic IDoc Type Basic IDoc type denes the structure and format of the
business document that is to be exchanged between two systems. Lets
look at an example below for Basic IDoc Type ZOIPRO01.
A basic IDoc type has the following attributes (You can display a Basic
IDoc Type in transaction WE30).
Segments A segment denes the format and structure of a data record.
Segments are reusable components, which means they can be used in
more than one IDoc type. A segment consists of various elds that
represent data in a data record.
Segment Creation WE31
An IDOC is of 2 types:-
1. Basic
2. Extension
SAP provides many a pre-defined Basic IDOC Types which can not be
modified. In case you want to add more data to these restricted basic
type you may use an extension type. Most of the times you will NOT use
extension.
Why do We Need an Extended IDoc?
Standard SAP sends out or receives in data through IDocs using standard
delivered Segments, Message Types and elds. But sometimes, these elds
are not sucient for a specic end-to-end business scenario as far as data
transfer is concerned. So in such scenarios, we can add new segments
with completely new structures to the standard IDoc as an extension. We
create a brand new structure and insert it into existing delivered IDoc
structure creating a whole new IDoc satisfying the requirement. This new
IDoc is called an Extended IDoc.
Message Type
A message represents a specific type of document that is transmitted
between two partners Ex. Orders, orders responses, invoices etc
Port
There are different types of ports. The 2 most commonly used are
the TRFC ports used in ALE and File ports which EDI uses.
For TRFC ports we have to give the name of the logical destination created
using SM59.
Step1: Go to WE19, if you have IDOC no select 'Existing Idoc' radio button
and provide IDOC number, execute.
If you don`t have IDOC number, select 'Basic Type' radio button and
provide 'Basic type' as MATMAS04, execute.
Step2: Now you can see the segments related to MATMAS, double click on
required segments, add data.
Step3: Click on inbound function module button (on toolbar), a popup will
come, provide inbound function module name as 'IDOC_INPUT_MATMAS01'
for MATMAS message type.If you wants to debug IDOC, select 'Call in
debugging mode' check box and enter
Step5:Go to T-code WE09, provide IDOC no, execute, you will find the
status.
Due to this whenever we save the delivery document (which satisfies the
message control configuration) the output type is proposed and the IDocs
are triggered. Even if we have set a breakpoint in the outbound
application IDoc generation program, we do not stop to that break-point.
When we do an F4 on the Date/Time field we find the other 4
light.
Now when we run the program RSNAST00 for the output application
and output type (other parameters can also be specified if we want to be
specific) the program will stop at the break-point in the outbound function
module (IDOC_OUTPUT_DELVRY in this case). We can debug from hereon.
This is how I debug on a regular basis.
Before saving the delivery, enter /h and then save the delivery. As soon
as you enter debug, click Settings in the title bar and then update
debugging. You can then press F8 to go. It will then stop on the
breakpoints that you set in idoc_output_delvry or whatever userexit you
put your breakpoint.
If you dont turn on update debugging, then it is true that you will not hit
your breakpoint.
Question 1: What is the difference between User Exit and
Function Exit?
BAPI BDC
BAPI is faster than BDC. BDC is relatively slower than BAPI.
BAPI directly updates database. BDC goes through all the screens as
a normal user would do and hence it
is slower.
No such processing options are Background and Foreground
available in BAPI. processing options are available for
BDC.
BAPI would generally used for small BDCs would be preferred for large
data uploads. volumes of data upload since
background processing option is
available.
For processing errors, the Return Errors can be processed in SM35 for
Parameters for BAPI should be session method and in the batch
used.This parameter returns input program for Call Transaction
exception messages or success method.
messages to the calling program.
Question 6: What is the difference between macro and
subroutine?
Macro Subroutine
Macro can be called only in the Subroutine can be called from other
program it is defined. programs also.
Macro can have maximum 9 Can have any number of parameters.
parameters.
Macro can be called only after its This is not true for Subroutine.
definition.
A macro is defined inside: Subroutine is defined inside:
DEFINE FORM ..
. ..
END-OF-DEFINITION. ENDFORM.
Macro is used when same thing is to Subroutine is used for modularization.
be done in a program a number of
times.
Important
Question 8: What is the difference between AT SELECTION-
SCREEN and AT SELECTION-SCREEN OUTPUT?
AT SELECTION-SCREEN is the PAI of the selection screen whereas
AT SELECTION-SCREEN OUTPUT is the PBO of the selection screen.
Changes in SPRO / IMG that define system behavior fall under customizing
requests.
An example would be defining number ranges in SPRO.
When we PASS lv_var by VALUE , the actual value of lv_var is copied into
VAR.
When we PASS lv_var by REFERENCE , the reference or the memory
address of lv_var is passed to the Function module. So VAR and lv_var will
refer to the same memory address and have the same value.
Transaction data keeps on changing and deals with day to day activities
carried out in business.
Transactions done by or with Customers, Vendors, and Materials etc.
generate Transaction Data. So data related to Sales, Purchases, Deliveries,
Invoices etc. represent transaction data
Important
Question 14: What will you use SELECT SINGLE or SELECT UPTO 1
ROWS ?
What will you use SELECT SINGLE or SELECT UPTO 1 ROWS ?
There is great confusion over this in the SAP arena.
If you Google, you will see lots of results that will say SELECT SINGLE is
faster and efficient than SELECT UPTO 1 ROWS.
But that is 100% incorrect.
LOAD-OF-PROGRAM:
INITIALIZATION: If you want to initialize some values before selection
screen is called
AT SELECTION SCREEN OUTPUT: PBO for Selection Screen
AT SELECTION SCREEN: PAI for Selection Screen
START-OF-SELECTION
END-OF-SELECTION
TOP-OF-PAGE
END-OF-PAGE
Question 17:
Question 19: A system has two clients 100 and 500 on the same
application server. If you make changes to a SAPSCRIPT on client 100, will
the changes be available in client 500?
If you want to validate a single field in Module Pool, you use the FIELD
Command.
On error, this single filed is kept open for input.
If you however want to validate multiple fields, you can use the CHAIN
ENDCHAIN command. You specify multiple fields between CHAIN and
ENDCHAIN.
On error, all fields between CHAIN ENDCHAIN are kept open for input.
The aim of the Update function module is either to COMMIT all changes to
database at once or to ROLLBACK all the changes. By definition, an update
function module is used to bundle all the updates in your system in one
LUW (logical unit of work).
Question 23: How is the table sorted when you do not specify field name
and Ascending or Descending? On what criteria will the table be sorted?
Do internal table have keys?
Another example is domain MATNR. For this domain the value table is
MARA.
So whenever and wherever, you use this domain the system will force you
to use values for MATNR in table MARA.
Approach2:
Another way is to find a Business Object. Say you want to find a BAPI for
creating Material in SAP and you know the BO for Material is BUS1001006.
You can go to Transaction SWO1 and enter the BO BUS1001006 in the
BOR. Then have a look at the methods for this BO.
Important
Question 27: How do you find BADI?
Approach1:
Go to Class CL_EXITHANDLER in SE24 ---> Put a breakpoint in
method GET_INSTANCE.Now go and execute your transaction code for
which you want to find BADI.
You will find the BADI in the changing parameter exit_name:
Approach 2:
Go to Tcode SE84 Enhancements BADIs Definitions.
Find the package for the Tcode for which you are finding the BADI.
Enter it as shown and hit execute:
Are we done yet ? Definitely not !
Let the questions come and lets keep on updating this blog.
User Exits
Customer Exits
These are one type of enhancements that are available in some specific
programs, screens and menus within standard SAP Applications. These are
Function Modules with a custom empty include program, you can add your
own functionality in these include programs.
Customer Exits are available in all SAP modules, whereas user exits are
only available in SD module.
All customer exits ( Function Modules) starts with CALL CUSTOMER word.
What are the difference between user exit and customer exit in SAP, user
exit v/s customer exit
+-
User Exit Customer Exit
In case of a PERFORM, you have access to You have access only to the
almost all the data. So you have better importing, exporting, changing
control, but more risk of making the and tables parameter of the
system unstable. Function Module. So you have
limited access to data.
User exit is considered a modification and A customer exit is considered
not an enhancement because we are an enhancement because we
changing the existing code. are adding additional
functionality to the existing
one..not changing any thing.
You need Access Key for User Exit. You do not need access key.
Changes are lost in case of an upgrade. Customer exits came later and
they overcome the
shortcomings of User Exit.
User Exit will be activated automatically To activate a function exit, you
when ever you activate the need to create a project in
application(program). CMOD and activate the project.
1. What are the different ways in which you can make changes to
SAP standard software ?
Customizing
Enhancements to the SAP Standard
Modifications to the SAP Standard
Customer Development
2. What is customizing?
Customizing is the setting of system parameters via SAP's own interface.
6. What is SSCR?
SSCR (SAP Software Change Registration) is a procedure, for registering all
manual changes to SAP source coding and SAP Dictionary objects.
Q7: What is the meaning of USER EXITS, how are they written and
which measures do we have to take for prevention?
A7: In the default standards of SAP we can find the user defined
functionalities, we can find a Sap program in which a customer personal
program may be invoked. Unlike customer exits. user exits can permit the
developers to enter and change the parts of the program and also the
objects. When upgrade is made , every user exit has to be verified for
conformation to the standard system. The user exits can use INCLUDES,
case in which Customizing makes the management. We have to search for
those customer enhancements from a specific development class.
Implicit Enhancement:
In implicit they are available at the beginning of subroutines defined in the
standard reports.
Edit-> Enhancement operations->show implicit enhancement options.
This will highlight all the implicit enhancements in the report.
Enhancement Spot:
The enhancement spots are used to manage explicit enhancement
options. Enhancement spots carry information about the positions at
which enhancement options were created. One enhancement spot can
manage several enhancement options of a Repository object.
For example, when editing an ABAP program with the ABAP Editor, you
can define explicit enhancement options in the form of
the ENHANCEMENT-POINT statement
A simple enhancement spot is always assigned to exactly one
enhancement technology (ABAP source code enhancement or BAdI).
Composite enhancement spots are used for the semantic grouping of
simple enhancement spots. A composite enhancement spot contains
either one or more simple enhancement spots and/or one or more
composite enhancement spots of the relevant type. You can use
composite enhancement spots to combine simple enhancement spots into
meaningful units
IMPLICIT ENHANCEMENT:
Implicit enhancement points are basically points within ABAP code where
an enhancement point is implied, and in which case can be created.
Examples of implicit enhancement points are at the beginning and end of
FORMs, at the end of a program, include or function module etc. Below is
a step by step demonstration of how to create and implicit enhancement
point.
On ABAP: Did you set up a workflow ? Are you familiar with all steps for
setting up a workflow ?
Yes.
Execute the Txn SWDD (Creating a new Workflow).
In the header of the Workflow, define the Business Object and Event
you refer to for triggering the Wf.
Create the Steps required for your workflow(Activity).
Inside the Activity, Create the task and assign the Business Object
and the related method for that business object.
Activate the Workflow.
Sub-Workflow :
2.Responsible Agents
The users to whom the work item needs to be sent.
This is set during Step definition. Note that Possible agents are defined
during Task definition. (Org Unit, Position, User, Work Center, Role, Rule,
Container Element)
Note: The work item recipients is determined by intersection of Possible
Agents and Responsible Agents.
3.Actual Agents
Actual user who executed the dialog task
4.Excluded Agents
Users who are not supposed to execute the dialog task (even if they are in
possible agents)
Containers
Workflow Container:
Task Container:
SWC_GET_CONTAINER
SWC_GET_TABLE
SWC_SET_CONTAINER
SWC_SET_TABLE
Event Container:
Method Container:
Rule Container: For resolving rules
Business Objects
Key Fields:
Attributes:
Database: Automatically gets populated by system code
Virtual: You determine the content and use SWC_SET_CONTAINER to
populate
Methods: Can be created using FM, Transaction, Report, Dialog Module,
Other
Synchronous: Finish execution before handling the control back to the
task.
Asynchronous: Return the control back immediately. Cannot have
export parameters. They depend on events to return results back to the
calling program.
Various status of BO
Modeled: Not accessible at runtime
Implemented: Not ready to be used, Internal use only
Released: For customer to use
Obsolete: Dont use anymore
Events:
How to create Events?
HR Tables: SWEHR2/3
ABAP Code user Exit: SWE_EVENT_CREATE
Change Document: SWEC
Status management:
Message Control:
Event Linkage: SWE2
Subtype:
Key field cannot be created. Methods and attributes can be created.
Delegate:
If you want to change the functionality of a method, define a sub type,
redefine the method, delegate the parent business object to child object.
Interface
Interface is a combination of Attributes, Methods and Events, to reduce
the redundancy in definition.
IFSAP: Common interface for all BOs. It has following methods
Method: Display
Method: Existence Check
Attribute; ObjectType
Important Tcodes
Workflow Toolbox: SWUS
Simulate Event: SWU0
Business Object Repository: SW01
Event Trace: SWEL (S)
Workitems per task: SWI2_FREQ
SWUE: Event simulate
SWEL: Event log
SWELS: Set event log ON
SWE2: Linkage between Event and Workflow
SWEHR2: Event linkage in HR
SWU3: Workflow customizing
SWU_OBUF: Synchronize buffers
SWI5: Look into other users SBWP
Workflow experience:
What are the workflows created by you? Worked upon by you?
Cancel Work item: Target WI is logically deleted. Subsequent tasks are not
executed. Precondition is that Process control and the target WI have to be
in different branches of the same fork.
Set Work item to obsolete: The target WI is set to complete, and
processing continues in the branch processing obsolete.
Cancel Workflow: Current workflow is set to Complete. If this is the sub
workflow, then the control goes to super-ordinate workflow.
Complete (terminate) Workflow: Same as above, but the branch of super-
ordinate workflow which contains the current sub-workflow will not be
continued.
Cancel Workflow including all callers: Same as above, but all callers also
will be COMPLETEd.
What is the BO method called for the task which calls UWL WD
screens? Why?
EXTSRV --> PROCESS
Rules in Workflow
Definition:
Workflow rules allow us to define and enforce an issue handling process.
Rules allow us to specify data at runtime according to a template defined
at definition time.
Together with e-mail notifications, workflow rules help us automate the
tracking and management of Issues.
What is the difference between Rules and Roles?
1.Go to Se80 and select web dynpro from dropdown and enter
name of webdynpro component and description, select type as
web dynpro component
2. Create a view and assign the view to window
3. Open view editor and switch to tab 'Context'. Create a context
node in view controller by opening corresponding context menu.
4. Add attributes from structure and give the name of desired
table
5. Than we create User Interface element for context node under
ROOTUIELEMENTCONTAINER
6. Than we create binding for our table with relevant node and
enable binding for all context attributes by activating all
checkboxes
7. Than again right click on the webdynpro component we created
initially and create the web dynpro application by entering our
desired name and give its description
8. Than we activate all objects and test our application
Every Web Dynpro application is structured according to the Model View
Controller programming model
Model:
The model forms the interface to back end system and it enables the Web
Dynpro application access to data. Its kind of act as a proxy that detaches
the Web Dynpro application from the data and functionality found in the
remote system. In other words, the Web Dynpro application doesnt need
to concern with the specific communication technology required to
interact with the back end system.
View:
The view is responsible for the representation of the data in the browser.
View is used to define a client neutral visualization of the business data
Controller:
The controller lies between the view and the model. The controller
formats the model data to be displayed in the view, processes the user
entries made by the user, and returns them to the model.
Note: If you are asked about the Web Dynpro architecture , you should
talk about both the MVC framework and the controllers.
Question 9: Is it true that each controller has its own Context node ?
Yes , Each controller has it's own context , methods , and Events.
Question 12:Are all the hook methods available to all the Controllers?
No . They are specific to controllers. See the details in the image above:
Have a look at how the control passes from component to window and
then to view:
Now view is displayed . Suppose user does some action on the view:
Application is closed.
Question 15: What are PRE POST and OVERWRITE exit methods in web
dynpro?
Whenever a web dynpro component is enhanced , these 3 methods
become available for all methods in Webdynpro. Lets take an example of
these methods for WDDOINIT.
A web dynpro component will have only one assistance class and it is
defined at the component level as per the screenshot below. The
assistance class is automatically instantiated when a component is called.
You can access the instance of this class with the attribute wd_assist,
which is created when you create the assistance class in web dynpro.
Imp*
Question 17: What is Singleton Property of a Context Node?
Understanding Singleton property of a context node and how it works in
conjunction with the lead selection event can be a bit complicated. If you
do not already know what a Singleton set is , I recommend you going
through an example of Cars(Parent node with cardinality 0..n ) and
Customers ( Nested child node with cardinality
0...n ) on Singleton Node by clicking on the link. This is not that tough ,
just spend some time with it and you should be okay.
Question 22: Some important Web Dynpro attributes that you should
know:
Some attribute in webdynpro that are used very frequently and some of
those that you must know are :
Wd_this
Wd_context
Question 25: How do you introduce line break for a UI element in any
layout?
Say if you are using matrix layout, you will say Matrix Head data for the UI
element for which you need a line break.
Yes, you can create a Tcode for webdynpro application. Go to SE93 , create
Tcode, choose the last option and maintain default values as shown in the
screenshot:
Question 29: How do you read parameters passed in the Web Dynpro
URL?
First lets understand how a typical webdynpro application looks like:
When you create a web dynpro application , you can see the link URL
generated by web dynpro.
It will be something
like:http://domainname.com:8000/sap/bc/webdynpro/sap/zdemo_webdynp
ro?sap-language=EN&sap-client=100.
So var1 and var2 are custom webdynpro URL parameters and you can
read them in the HANDLEDEFAULT method of your main window:
Question 30: Can you run a Webdynpro Application in background?
This is a tricky question. It doesnt make sense to run a webdynpro
application in background because in that case you are beating the
purpose of the MVC controller architecture for webdynpro. However, you
can build logic to create background jobs from a Web Dynpro Application.
@Component Level:
@View Level:
3) Use the
methods CREATE_RANGE_TABLE and ADD_SELECTION_FIELD for your
fields on Selection screen.
If you want to get into the details , have a look at the webinar from Chris
Whealy: Understanding the Web Dynpro Phase model.
Important
Question 4: What is OVS? Can you explain the different phases
used in OVS?
First we should understand the difference between Value help and OVS i.e.
object Value Selector.
We use generic Value Help only for the field to which it is bound.
OVS is used when we want to populate multiple fields based on one field
on the screen.
So as per the screenshot , If I select Userid from OVS help, First name and
Last name will be populated automatically. The standard
component WDR_OVS is used for implementing OVS.
OVS works on the PHASE MODEL and different tasks are performed during
different phases.
The current phase is indicated by the parameter PHASE_INDICATOR.
Phase 1:
In this phase you have the possibility to define the texts, if you do not
want to use the defaults: So You can play around with the highlighted
texts in the screenshot below in this phase.
Here we call the method ovs_callback_object->Set_Configuration
Phase 2:
If you do not want the filter fields, you can do that in this phase and the
table will be displayed directly. Refer screenshot below. The table is
displayed directly. I have blurred some results.Here you can call the
method ovs_callback_object->Set_Input_Structure
Phase 3:
In this Phase, You write the select queries that should run as per user
input when the user hits Start Search button and finally set the output
table.You can call the method ovs_callback_object-
>Set_Output_Table for that purpose.
Phase 4:
In this phase , you pass the selected record to the Web dynpro Fields.
i.e. set the attributes using ovs_callback_object->context_element-
>Set_Attribute
Question 5: Briefly explain how will you implement ALV in Web Dynpro?
To implement ALV in Web Dynpro, you need to use the Standard WD
componentSALV_WD_TABLE.
We need to use:
a) the view TABLE of component SALV_WD_TABLE
b) the node DATA of component SALV_WD_TABLE.
Here is the brief process:
@ View Level:
There is a special outbound plug called Exit Plug that can be used for this
purpose.
wd_this->fire_to_exit_plg( url = url close_window = close_window ).
Question: Can you have Totals and Subtotals in Web dynpro ALV ?
How ?
Hint: First get the reference of the ALV. Then get the columns.
By looping at lt_columns , get to the required column.
Once you achieve this, check methods create_aggr_rule and
create_sort_rule of the class
cl_salv_wd_field.
Question: Can you have TOP OF PAGE and END OF PAGE ? How ?
Hint: Check TOP_OF_LIST and END_OF_LIST events.
Question: Can you add custom buttons in Web Dynpro ALV cells ?
How?
Question: Can you add Image / Icons in Web Dynpro ALV cells ?
How?
How do you define and implement action handlers for
them?
How?
SD flow
inquiry : va11 vbak ,vbap
quotation: va21: vbak, vbap: Quotation is sent by vendors to the company
sales order: va01:vbak vbap
delivery vl01 : likp lips, packing ( After sales order is created the items are
delivered to
customer)
shipping VT01, VT02:vtkk, vtpp
billinfg vf01,vf02: vbrk vbrp
MM Flow
Purchase Requisition: sent by inventory dept to purcharsing dept
RFQ: Purchasing Dept shall ask the vendors to give the quotation for the
requested materials by inventory
PO : me21
Order confirmation
Goods recipt: migo: mkpf , mseg
Invoice : miro : bseg, bkpf RBKP---HeaderRSEG--Item
Vendor Payment: account payable fb60
FICO
1. GL Accounting -
related tables are SKA1, SKB1 Master data
BSIS and BSAS are the Transaction Data
2. Account Receivables- related to Customer
All the SD related data when transfered to FI these are created.
Related Tables BSID and BSAD
3. Account Payables - related Vendor
All the MM related documents data when transfered to FI these are
created
Related Tables BSIK and BSAK
All the above six tables data is present in BKPF and BSEG tables
You can link these tables with the hlp of BELNR and GJAHR and with Dates
also.
4. Special Purpose Ledger.. which is rarely used.
5. Asset Managment
In CO there are
1. Profit center Accounting
2. Cost center Accounting
SAP HCM module enhances the work process and data management
within HR department of enterprises. Right from hiring a person to
evaluating ones performance, managing promotions, compensations,
handling payroll and other related activities of an HR is processed using
this module. The task of managing the details and task flow of the most
important resource i.e. human resource is managed using this SAP ERP
HCM module.
FI Finance
CO Controlling
IM Investment Management
TR Treasury
EC Enterprise Controlling
Asset Accounting
Cost elements
Revenue elements
Internal Orders
Product Cost Controlling (Calculates the costs that occur during the
manufacture of a product or provision of a service)
SAP SD is one of the most important modules in SAP. It has a high level of
integration complexity. SAP SD is used by organizations to support sales
and distribution activities of products and services, starting from enquiry
to order and then ending with delivery.
As the name SRM suggests, this module deals with the effective and
efficient transition of products and services between an organization and
its suppliers. The main process covered in this section is procurement of
products like direct materials, indirect materials, and services. This
module can effectively integrate with planning, accounting, and inventory
system.
Shopping Carts
Approval of Shopping Cart
Sourcing of Requirements
Purchase Orders
Purchase Order Approval
Confirm Goods/Services
Confirmation Approval
Process Invoice
Invoice Approval
Customer Relationship Management (CRM)
An employee gets a pay hike at the start of the year. The new salary
must be stored for the relevant date.
The HR system has very strong integration points (where data is passed
back and forth without human intervention) with just about all of the
other SAP modules. In addition, there is very tight integration amongst
the HR sub-modules.
The above illustration highlights some of the basic SAP HR terms as listed
below.