Awesome Link with basic FAQs:
http://wiki.scn.sap.com/wiki/display/ABAP/ABAP+Dictionary+FAQT
codesSM37 Job selectionSM59 Maintain RFC destinations SM50 To
cancel a background job SM30 Maintain DB tables (TMG)SM36
Scheduling a background jobSM12 Display / Delete lock entriesSMOD
SAP Enhancement ManagementSM51 List of SAP SystemsSM62 Display /
Maintain events in SAP (also use FM:BP_EVENT_RAISE)
The T codes the starts with suffix M are Maintenance transaction
codes in SAP.
STMS T code to find out which test system my current development
system is connected toSE54 TMG or Utilities -> TMGSE78 T code to
store images (graphics) Why SAP Scripts are client dependent and
smart forms are client independent? Short Answer: Because SAP
Scripts use text symbols to display stuff from driver program and
Smart forms do it via function modules. Smart forms will be
executed through a function module i.e., when a print program calls
a Smart Form, the form itself takes over to produce output, without
any further direction from print program. Unlike text symbols the
FMs are client independent hence the
proof.http://www.saptechnical.com/Tutorials/Smartforms/Client/dependency.htmParallel
processing in
ABAPhttp://sapignite.com/learn-parallel-processing-in-abap/Useful
questions for interview
purposeshttp://scn.sap.com/thread/268618Creating search help
viewsWe can also provide database table or database view name
there, but suppose if we want to get data as outer join then Help
View is provided. It uses left outer join to select the data while
database view uses inner join.SELECT-OPTIONS: so_werks FOR ekpo-
werks MATCHCODE OBJECT
ztest_help.http://saptechnical.com/Tutorials/ABAP/View/Help.htmCreating
view
clusterhttp://www.saptechnical.com/Tutorials/ABAP/Viewcluster/Page4.htmDifference
between select single and select up to 1 row?SELECT SINGLE returns
the first matching record for the given condition and it may not be
unique, if there are more matching records for the given condition.
No End Select required. You need to mention all the key fields of
the table.SELECT ... UP TO 1 ROWS retrieves all the matching
records and applies aggregation and ordering and returns the first
record. End Select is required. You can use if you do not have all
the primary key fields available.
According to SAP Performance course the SELECT UP TO 1 ROWS is
faster than SELECT SINGLE because you are not using all the primary
key fields.Difference between Type and Like?Type direct reference
to the SAP predefined data types (or Data elements) by the data
object.Ex: DATA var1 TYPE i.They do not occupy memory.
Like Indirect reference to SAP predefined data types (or Data
elements) by the source data object for the given target data
object.Ex: DATA var2 LIKE var1.They occupy memory.
What is a field symbol?
Field symbols are place holders or pointers for other fields.
They do not take up any space but they point to its contents. A
field symbol can point to any data object. The data object to which
a field symbol points is assigned to it after it has been declared
in the program.
Get and Set Parameter Example
DATA: var(10) TYPE c.var = 'test'.SET PARAMETER ID 'XYZ' VALUE
var_1.you set the parameter XYZ to the value test in the global
memory.You can then access this value in another program by getting
it out of the memory usingDATA: var(10) TYPE c.GET PARAMETER ID
'XYZ' VALUE var_2.So with this you can pass parameters from program
to program. Check also the F1 help for the set/get parameter
statement. Uses SAP Memory and generally SP is used in PAI, GP is
used in PBO.
Types of function modules
Broadly classified into three types namely: Normal FM, Remote
enabled FM and Update FM
Types of classes Local classes, Global classes, Exception
classes (CX_ROOT, CX_DYNAMIC_CHECK, CX_STATIC_CHECK), Assistance
classes (CL_WD_COMPONENT_ASSISTANCE), Persistence classes, Data
class, Delivery class.
Difference between Standard table, Sorted table and Hashed
table?
Standard Table: These tables have a linear index and can be
accessed using the index or the key. The response time is in linear
relationship with number of table entries. Where this is used?These
tables are useful when user wants to address individual table
entries using the index. (APPEND)
By default TYPE TABLE (it is of type standard table) and TYPE
STANDARD TABLE are the same.
Sorted Table: These tables also have an index and the key. But,
the response time is in logarithmic relationship with number of
table entries, since it uses binary search algorithm instead of
linear search. Where this is used? These tables are useful when
user wants the table to be sorted while additional entries have to
be added. (INSERT)
Hashed Table: These tables have no index, but have the key. The
response time is constant irrespective of number of table entries,
since it uses a Hash algorithm.Where this is used?These tables are
useful when user wants to access the entries with key
only.(INSERT)INSERT wa INTO TABLE hs_itab
Difference between Transparent table, Cluster table and Pooled
table?
Transparent table: It has a one- to- one relationship with a
table in the database Table in the database has the same name as in
the dictionary Transparent tables are used to holdapplication data
Application data is the master data or transaction data used by an
application These tables can be buffered and also secondary indexes
can be created These tables can be accessed using a key field or
without one Examples: MARA (Material Master), EKKO (Purchase order
transactional)
After making changes to a table, in order to reflect the changes
go to transaction SE14 and Choose Edit and then chooseActivate and
Adjust Database.ORYou can directly activate it from the SE11. Go to
Utilities-> Database Object -> Database Utility ->
Activate and Adjust Database.
Pooled table: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. Ex: RFCDOC 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 Itis
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
These tables should be accessed via primary key. They should be
buffered and we cannot create a secondary index for them.Ex: Look
up tables, match codes
Cluster table: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.Ex: CDPOS
These tables can be accessed via primary key or without one but
the catch is without the primary key DB access will be slow. No
secondary indexes can be created (Index disabled in BSEG).
Statistical SQL functions (SUM COUNT MAX AVG MIN etc.) are not
supported. These tables cannot be buffered. Ex: BSEG
Views
Usually functionally depend data spread across multiple tables;
we can be brought together by means of a view. A view is a logical
view on one or more tables i.e., a view is not actually physically
stored, instead being derived from one or more other tables.
Benefits of View are:
Views can hide complexityIf you have a query that requires
joining several tables, or has complex logic or calculations, you
can code all that logic into a view, then select from the view just
like you would a table. Views can be used as a security mechanismA
view can select certain columns and/or rows from a table, and
permissions set on the view instead of the underlying tables. This
allows surfacing only the data that a user needs to see.
Types of Views in SAP
Database View:Database views are implement an inner join, that
is, only records of the primary table (selected via the join
operation) for which the corresponding records of the secondary
tables also exist are fetched. Inconsistencies between primary and
secondary table could, therefore, lead to a reduced selection
set.
In database views, the join conditions can be formulated using
equality relationships between any base fields. In the other types
of view, they must be taken from existing foreign keys. That is,
tables can only be collected in maintenance or help view if they
are linked to one another via foreign keys.
Projection View:Projection views are used to suppress or mask
certain fields in a table (projection), thus minimizing the number
of interfaces. This means that only the data that is actually
required is exchanged when the database is accessed.
A projection view can draw upon only one table. Selection
conditions cannot be specified for projection views.
Help ViewHelp views are used to output additional information
when the online help system is called.When the F4 button is pressed
for a screen field, a check is first made on whether a matchcode is
defined for this field. If this is not the case, the help view is
displayed in which the check table of the field is the primary
table. Thus, for each table no more than one help view can be
created, that is, a table can only be primary table in at most one
help view. Uses left Outer Join
Maintenance ViewMaintenance views enable a business-oriented
approach to looking at data, while at the same time, making it
possible to maintain the data involved. Data from several tables
can be summarized in a maintenance view and maintained collectively
via this view. That is, the data is entered via the view and then
distributed to the underlying tables by the system. Uses Outer
Join
How to display table entries in an adobe form?
Depending upon the structure of the table create that many text
textboxes. Bind these text boxes with table-column and that many
text boxes will get automatically created depending upon the
entries in the internal table. Ex: Internal table itab_person
contains two fields namely name and age, this table consists of 5
entries.Now create two text fields in adobe text_field_1 (choose
multiline)and text_field_2 (choose multiline). Bind the first field
with name and the second with age. On execution of the form, five
entries will get automatically created .
How to display layout based on conditions?
By making use of a special interface object called ALTERNATIVES
and binding the UI elements to either TRUE or FALSE. Based on the
outcome of this parameter the respective UI element gets
displayed.
Hidden fields in DB tables?
They can be enabled by Goto -> Text Table. (Ex: T458A)
Difference between methods and events?
Event Handler: Event handler is a special method that is
designed to be called when a User Interface Action occurs. It gets
parameters that supply more information about the event. For
example when you place a button on the screen, there is an action
for when the button is pressed. The method that responds to this
action is the event handler.
Methods: Method is a normal object oriented construct for
encapsulating programming logic. It is a general term that refers
to different types of groups of code. Both Supply Functions and
Event Handlers are technically methods as well.
Note: We cannot call Form Endform (Subroutine) in a method
because you are mixing up Procedural programing and object oriented
programming. But we can call methods in Form Endform given only
when the class is global.But there is a way in which we can call
this subroutine and that is by using PERFORM IN PROGRAM testprogram
USING....CHANGING .....
FM can be called in subroutines and vice versa is also possible
given that subroutine include is in function group. Methods can be
called inside FM and FM can be called in methods.
FM to pop up dialog box in reports?
FM: POPUP_TO_CONFIRM
Other FMs are POPUP_TO_CONFIRM_WITH_MESSAGE
Difference between customizing and workbench request?Short
Answer:Workbench requests (Client Independent) are those that
involve changes to cross-client customizing and repository objects.
The objects are independent of the client. Hence the requests are
used for transferring and transporting changed repository objects
and changed system settings from cross-client tables. (Ex: code
changes)Customizing requests (Client Dependent) involve changes
recorded to client-specific customizing objects .These client
specific requests are used for copying and transporting changed
system settings from client-specific tables. (Ex: SM30 TMG, SAP
Scripts, OOP Events, SPRO)
http://scn.sap.com/thread/1289150Enhancements Customer exits and
BADIs refer to all modules like MM, SD, PP, FICO etc., where as
User exits generally refer to SD module User Exits: User Exitis an
ABAP form that is called by SAP standard programs. It is identified
with a three character code that tells the SAP system that a custom
chunk of code needs to be executed at a predefined point of a
standard SAP program. The character codes look
likeSXXorUXXwhereXXrepresents a two-digit number. If a code starts
withSletter, it is a standarduser exitdelivered by SAP. If a code
starts withUletter, it is a customuser exitdefined by a user.
Inside auser exitit is possible to read and change almost any data
(local or global) from the host SAP program. Therefore, user exits
give you a lot of flexibility but this flexibility comes at a price
of the higher risk to make a critical error that would lead to an
ABAP dump or inconsistency in database records.User Exits are
subroutine based (i.e, Form End form) and it is not preferred
mainly because when we update the system (Ex: ERP 6.0 to 7.0) then
all these implementations will be lost (or broken), and since we
will directly touch the source code of the standard programs we
will need an Access key to make changes in the system. User exits
are also called MODIFICATIONS and are created in SAP namespace.
Multiple implementations are not possible. USEREXIT_XXXBasic Exit
Name: MV45AFOACustomer Exits: Customer Exitis an ABAP function that
is called by SAP standard programs. It serves the same purpose
asUser Exit: enabling users to add their own functionality to the
standard SAP transactions. There are several types ofCustomer
Exits: Menu Exits, Screen Exits, Function Module Exits, and Field
Exits. UnlikeUser Exits,Customer Exitsare more restrictive in terms
of what you can do with them because inside aCustomer Exityou can
only access and manipulate the parameters specified with keywords
import, export, changing, and tables. At the same time it is much
safer to useCustomer ExitsthanUser Exitsbecause the risk to break
something or create inconsistent database entries is low.Customer
exits on the other hand are completely function module based and
can be upgraded. They are easy to find and implement and you do not
require an access key. They are also called ENHANCEMENTS and are
created in Customer namespace i.e., FM holds the include in
customer namespace and hence standard SAP code is not affected.
Multiple implementations are not possible. CALL CUSTOMER
FUNCTONBADIs (Business Add-In): BADIs (Business Add-Ins)are custom
enhancements to the standard SAP system. You can insert them into
the system to accommodate user requirements that are not very
common and should not be present in the standard configuration of
SAP. For instance, in a particular industry, you may have a
specific requirement in a business process that cannot be covered
by the standard functionality of SAP. This requirement can be
addressed by creating a specialBADIthat will implement the missing
functionality.BADIprovides similar customizing opportunities
asCustomer Exitbut it is more powerful becauseBADIdoes not assume a
two-level infrastructure (SAP system and customer developments)
likeCustomer Exit.BADIallows more complex system infrastructure
that can include SAP, country-specific versions, industry
solutions, customer developments, and so on.
BADIs are powerful and can also have multiple implementations
(execution of these are unknown i.e., not they get executed however
they want, not in order). BADIs have OOPS based and can also have
filters (i.e., we can specify execution conditions ex: if we set
location as ZH then the BADI gets executed only in China)
What is the difference between them and when to use
what?Probably, some differences betweenBADI,BAPI,User Exits,
andCustomer Exitsare already clear based on the descriptions that
we provided above. Nevertheless, let us elaborate a little bit. If
you need to enhance the standard functionality of SAP, you should
be looking atBADI,User Exits, orCustomer Exits. They all are
created with the purpose of enabling a convenient plugging of new
(custom) functions in the standard SAP programs using predefined
hooks. These three enhancement interfaces offer more or less
similar capabilities butBADIis currently the most advanced approach
towards creating custom enhancements in the standard SAP
functionality. On the other hand,BAPIserves more general purpose
and simply provides an interface for accessing data and processes
inside an SAP system. One of the most common applications ofBAPIis
to enable connections between SAP and non-SAP system.Method to Find
out Exits: http://scn.sap.com/docs/DOC-54384Wiki SCN link:
http://wiki.scn.sap.com/wiki/pages/viewpage.action?pageId=189893877Understanding
concepts:http://sap-certification.info/badi-vs-bapi-vs-user-exits-vs-customer-exits/How
to find Customer Exits?http://scn.sap.com/thread/568493Demo on
Screen, Menu, FM exits in once example (all customer
exits)http://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/c062ce36-2478-2c10-6b93-d6f3ec85883f?QuickLink=index&overridelayout=true&44929653158267One
more awesome example for Enhancements
http://sapignite.com/menu-exit-in-sap-abap-with-tutorial/Interactive,
Classical and Module Pool eventsInteractive:AT LINE SELECTIONAT
PFAT PF STATUSAT USER COMMAND
Classical:
LOAD OF PROGRAMINITILIZATIONAT SELECTION-SCREEN OUTPUTAT
SELECTION-SCREEN ON (Can be SO, parameter, radio button etc.)
usually authority check coding, validations, making stuff
visible/invisible etc. can be done here.AT SELECTION-SCREENAT
SELECTION-SCREEN ON VALUE-REQUEST FOR (i.e., parameter)START-OF
SELECTIONEND-OF SELECTION
Module Pool:
PROCESS BEFORE OUTPUT (PBO)PROCESS AFTER INPUT (PAI)PROCESS ON
VALUE REQUEST (POV) F4PROCESS ON HELP (POH) F1
Range Tables
Contains 4 columns namely: Sign, Option, Low and HighSign can be
either E (Exclusive) or I (Inclusive). Option can be GT, LT, BT, EQ
etc
BAPI chain execution is not possible (i.e., multiple BAPI
execution in ONE LUW isnt
possible)http://scn.sap.com/thread/2004950Imagine you are having a
scenario where u will create a PO -> Once PO gets creating
successfully then you create a GR (if GR fails then PO shouldnt be
created -> Once PO, GR gets successfully created then you create
an IV (If IV fails then PO, GR shouldnt be created). In order to
achieve such a scenario: BAPI_PO_CREATE1IF.OK
BAPI_TRANSACTION_COMMIT * Always BAPI COMMIT AND WAIT is a good
practice BAPI_GOODSMVT_CREATE IF OK BAPI_TRANSACTION_COMMIT
BAPI_INCOMINGINVOICE_CREATE IF OK BAPI_TRANSACTION_COMMIT ELSE.*
Cancel material document BAPI_GOODSMVT_CANCEL
BAPI_TRANSACTION_COMMIT* Cancel PO BAPI_PO_CHANGE
BAPI_TRANSACTION_COMMIT ENDIF. ELSE, * Cancel PO BAPI_PO_CHANGE
BAPI_TRANSACTION_COMMIT ENDIF.ENDIF.
Difference between Update task and Background task?
http://scn.sap.com/thread/1476663
Update task No return, asynchronous call i.e., gets called when
COMMIT WORK statement gets encountered, debugging possible by
switching on Update debugging (debugger options), majorly used to
update databases at the end. We can call multiple function modules
with suffix update task and they get executed in sequence.Why do we
use this In Update Task ?The main update technique for bundling
database changes in a singledatabase LUW is to use CALL FUNCTION...
IN UPDATE TASK.How do we Use?A typical R/3 installation contains
dialog work processes and at least one update work process. The
update work processes are responsible for updating the database.
When an ABAP program reaches a COMMIT WORK statement, any function
modules from CALL FUNCTION... IN UPDATE TASK statements are
released for processing in an update work process. The dialog
process does not wait for the update to finish. This kind of update
is called asynchronous update.What is the Use?Asynchronous update
is useful when response time from the transaction is critical, and
the database updates themselves are so complex that they justify
the extra system load
Background task Can return parameters, synchronous call to FM,
debugging can be possible by switching on System debugging
(debugging options), not specific to updating DB tables. FMs can be
CALLED synchronously or asynchronously ONLY. There is no option of
background work process. It will work only with dialog work
process. For background work process, we NECESSARILY have to use a
SEPARATE Z PROGRAM, and inside that call the FM. We can BACKGROUND
a Z Program, not the FM.http://scn.sap.com/thread/1079684Debug
Background Job: http://scn.sap.com/thread/122992SM51,
SM58Difference between COMMIT WORK and ROLLBACK WORK? COMMIT WORK -
The function modules registered for the current SAP LUW are started
at the COMMIT WORK statement in the sequence, in which they were
registered.ROLLBACK WORK - The statement ROLLBACK WORK deletes all
previous registrations of the current SAP LUW.Implicit
EnhancementsWe can achieve this by clicking on the spiral button.
Implicit enhancements are mainly used to overwrite default SAP
standard code which is provided by SAP and but customized code
based on our requirements. Implicit enhancements can be done on
FMs, reports, includes, methods, attributes etc. Sales and
Distribution (SD module)SD module completely runs on the basis of
company code (BUKRS). Now, what is this company code ? For example:
Let us consider Roche Pharma, now this company manufactures drugs
and tablets and in order to manufacture them they need raw
materials. Raw materials should be purchased (procured) from
various other companies and these companies will be maintained by
means of company code in our SAP system. Next thing which we need
to understand is Ship to party and Shipping party, now ship to
party is to whom we are trying to sell our products to (i.e.,
distributors and they will further sell it to retailers) and
shipping party is the one who ships the goods to ship to party. SAP
software stands in the intermediate level between shipping party
and ship to party of any organization.We can get to know Shipping
party, Ship to Party and Sold to party via company codes. Also note
that ship to party can be either customer or distributor but sold
to party is always customer i.e., retailers. For Example: Let us
consider Roche Pharma once again, as a major pharma player roche
has offices and manufacturing units across world like Roche
Austria, Roche UK, Roche India, Roche USA etc. Again each one of
them will have their own associated company codes. If an order for
tablets comes from a distributor in India then the distributor will
create what is called a purchase order (PO) and the company
processes these orders via., background jobs or manually during
some point in a day. Doing so these POs will become sales order
(SO) for Roche India, which contains details like quantity,
shipping date etc. And a quick inventory check happens here and
based on availability goods will be dispatched. In such a scenario
the shipping party is Roche India Sold to party is Distributor
(XYZ). Another good example for understanding purposes would be
Flipkart or Amazon. If they use SAP as a business platform then WS
retail will be shipping party and Naresh will be sold to party in
sales order VA01. SAP will be intermediate between the two.Lets
take a look at some basic definitions:In my example of enhancing
VL01N transaction code requirement was like changing delivery date
to +5 days (display day too using FM: DATE_TO_DAY) than the system
generated date and also to incorporate subsequent document number
in this new tab called details. Delivery mapped to sales order
(VBFA)Inbound delivery:It does not necessarily mean goods receipt.
INBOUND DELIVERY in SAP pertains to all incoming goods, which may
refer to either a vendor delivery or a return of a rejected
delivery to a customer. It may cover the schedules of deliveries
from your vendors/suppliers or even a rejected delivery to a
customer.Outbound delivery: You use this process in order to
support all shipping activities like picking, packing, transport
and goods issue. All information regarding shipping planning is
stored in outbound delivery, the status of shipping activities is
monitored, and data gathered during the course of shipping
processing is recorded. By creating outbound delivery, shipping
activities are started and data is transferred that is generated
during shipping processing.Order: This refers to Sales order in
SAP. A sales order is an electronic document that captures and
records your customers request for goods or services. The sales
order contains all pertinent information to process the customers
request throughout the whole process cycle. This is an external
document.Production Order: Suppose we are producing some product in
house. So when the production department requires the raw material
for production they will raise a production order for the same.
This is an internal document.
Sold to party: Who places an order to supply the materials
treats him as sold to party. Order can be given by only one person.
Can't be given by many persons. So always sold to party will be
only one.Ship to party: Who receives the materials. Goods can be
supplied to many parties.
Take this example:- Your GF asks you for a iPhone and she places
the order online, you receive the invoicesince she is working, the
iPhone is delivered to her mother at homeOnce you receive the
invoice you ask your brother to pay the bill in bankso for one
transaction there are multiple person involvedyou, your GF, her
mother and your brotherthese are called as Business Partners in
SAPGF - Sold to Party as she ordersHer mother - Ship to Party as
she receives the goodsYou - Bill to Party as you receive the
billYour brother - Payer as he pays the bill
Basic SD scenario:Inquiry --> Quotation --> Sales Order
--> Delivery --> BillingVA11 --> VA21 --> VA01 -->
VL01n --> VF01Order --> Delivery --> Billing is called as
OTC (Order to Cash) or O2C cycle Take this Example: In SD it should
be the other side of the table.... Let me say that I need an
iPhoneSo I contact you through mail "Mr. Naresh, do you have
iPhone, with this much quantity"you record this mail and it becomes
your "INQUIRY"you respond to me back saying that "I have 100
iPhones available and I charge 50k per piece"this document is
"QUOTATION"I send you an email "OK.... Bring it on"... this is my
POYou refer your Quotation for price and my PO for number of days
and create "SALES ORDER"Once you create SALES ORDER, your assistant
delivers the pieces, so he creates a delivery document "This piece,
these many days, delivered from this center". This is
"DELIVERY"Once he sends the pieces to me, he has "ISSUED" the
goodsI receive the pieces and you send me "INVOICE" for the pieces
/ service provided a.k.a., "BILLING"I transfer money to you for
your services. This is "ACCOUNT RECEIVABLE" for you but this will
be taken care by your accountant, so receiving money doesnt come in
SD
DB Tables: VBAK VBAP (VA01), LIKP LIPS (VL01), VBRK, VBRP
(VF01)
Basic MM scenario:Purchase Requisition -->Purchase Order
--> Goods Receipt --> InvoiceME51N --> ME21N --> MIGO
--> MIRO
Purchase Requisition: Documentgenerated by auserdepartmentor
storeroom-personnel to notify the purchasing department
ofitemsitneedstoorder, theirquantity, and the timeframe.Purchase
Order: A purchase order is a formal request to a vendor to supply
you with goods or services with the conditions stated in the
purchase order. This is an external document.Goods Receipt: Agoods
receiptis the physical inbound movement of goods or materials into
the warehouse. It is a goods movement that is used to post goods
received from external vendors or from in-plant production. All
goods receipts result in an increase of stock in the
warehouse.Invoice: Invoice is like a bill once all the goods are
delivered to your location.
DB Tables: EBAN (ME51N), EKKO EKPO (ME21N)
One more thing about transport requestsIf two developers (NRN,
MEHRM) have made changes to the same report then their individual
tasks will be logged under one transport requests (IKT90002369).
One case to note down will be F4 help popup and Uploading Excel
sheet or Flat fileThis can be achieved in two ways namely by class
methods or by FMsUpload: Can be done via FM: GUI_UPLOAD, or FM:
TEXT_CONVERT_XLS_TO_SAP or by using class method
cl_gui_frontend_services=>gui_upload. (File type: ASC) data will
be stored in internal table and manually you should parse it w.r.t.
comma , operator. If it doesnt work then change type from .xls to
.xsv.F4 help popup: Can be done via FM: F4_FILENAME or by using
class method cl_gui_frontend_services=>file_open_dialog.How to
display progress bar data in a report?
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR' EXPORTING percentage =
iv_percentage text = iv_text.Top-Of-Page in ALVs?Firstly ALVs can
be called into a report by four ways: REUSE_ALV_LIST_DISPLAY ALV
List, Display only, does not use ActiveX controls
REUSE_ALV_GRID_DISPLAY ALV Grid, Editable, Uses ActiveX controls
CL_GUI_ALV_GRID ALV Grid, we can create more than one ALVs as we
create a screen CL_SALV_TABLE ALV List, Cannot be editable To
display Top-Of-Page in report using CL_SALV_TABLE, the following
are the below steps: Create an object of type cl_salv_table
(lo_table) Call the factory method by passing the table which you
want to display and get the instance of lo_table Use the events
class cl_salv_events_table to method lo_table->get_event( ) to
get the events Then you will set handler for top_of_page for this
created event object Create header object of type
cl_salv_form_layout_grid Using this you can create header
information, label, text etc using row column attributes and in
case if you want to add picture u can do that too
(cl_salv_form_picture) Also implement handler top_of_page with
content (cl_salv_form_element), header (cl_salv_form_layout_grid)
and flow (cl_salv_form_layout_flow) Using r_top_of_page event
parameter (cl_salv_form) set the content using set_content of the
ALV (lo_content = lo_header).Using the main table object (lo_table)
you call method set_top_of_list and pass this header reference into
it
To use a Hot-Spot in a SALV Create an object of type
cl_salv_table (lo_table) Call the method lo_table->get_cloumns
() and save the reference in cl_salv_columns_table Create one more
object of type cl_salv_columns_table and get the column for which
you want to create a hotspot from first reference of
cl_salv_columns_table Set hotpot by calling the method
set_cell_type Then set handler methodFunction Module: You declare
it in the FM and write the Form End Form for the same.CALL FUNCTION
'REUSE_ALV_GRID_DISPLAY' EXPORTING I_CALLBACK_PROGRAM = GD_REPID
I_CALLBACK_TOP_OF_PAGE = 'TOP-OF-PAGE' "see FORM
I_CALLBACK_USER_COMMAND = 'USER_COMMAND' IT_FIELDCAT =
FIELDCATALOG[] I_SAVE = 'X' IS_VARIANT = G_VARIANT TABLES T_OUTTAB
= IT_SFLIGHT EXCEPTIONS PROGRAM_ERROR = 1 OTHERS = 2. IF SY-SUBRC
0.* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO* WITH
SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDIF.
FORM TOP-OF-PAGE.*ALV Header declarations DATA: T_HEADER TYPE
SLIS_T_LISTHEADER, WA_HEADER TYPE SLIS_LISTHEADER, T_LINE LIKE
WA_HEADER-INFO, LD_LINES TYPE I, LD_LINESC(10) TYPE C.* Title
WA_HEADER-TYP = 'H'. WA_HEADER-INFO = 'SFLIGHT Table Report'.
APPEND WA_HEADER TO T_HEADER. CLEAR WA_HEADER.* Date WA_HEADER-TYP
= 'S'. WA_HEADER-KEY = 'Date: '. CONCATENATE SY-DATUM+6(2) '.'
SY-DATUM+4(2) '.' SY-DATUM(4) INTO WA_HEADER-INFO. "todays date
APPEND WA_HEADER TO T_HEADER. CLEAR: WA_HEADER. CALL FUNCTION
'REUSE_ALV_COMMENTARY_WRITE' EXPORTING IT_LIST_COMMENTARY =
T_HEADER.ENDFORM.
ABAP Technical Properties for field (F1 help) When you use watch
points for debugging then use VBKD-BSTKD which is the program field
and not DB field BSTKD i.e., watch points cannot be created for
field data.What is BDC? (Batch Data Communication)When SAP is
implemented, we need data to be migrated from non-SAP system
i.e.,legacy system to SAP system. One way of doing this is via BDC.
There are two methods through which we can implement BDC:1. Session
Method Synchronous processing Can transfer large amount of data
Processing is slower Error log is created Data is not updated until
session is processed2. Transaction Method Asynchronous processing
Can transfer small amount of data Processing is faster Errors need
to be handled explicitly Data is updated automaticallyIn Session
Method following function Modules are
used.BDC_OPEN_GROUPBDC_INSERTBDC_CLOSE_GROUPInBDC we use structure
BDCDATAfor Batch Input, Which has following components.PROGRAM BDC
module poolDYNPROBDC Screen numberDYNBEGINBDC screen startFNAMField
nameFVALBDC field valueBDC modes to be used while doing a call
transaction method is:A Foreground modeN Background modeTo call BDC
using call transaction method: DATA it_messtab TYPE STANDARD TABLE
OF bdcmsgcoll WITH HEADER LINE.CALL TRANSACTION 'CS01' USING
it_bdcdata MODE NUPDATE 'S' MESSAGES INTO it_messtab.
Dynamic Adobe Form creationUse the following FMs i.e.,
FP_FUNCTION_MODULE_NAME, FP_JOB_OPEN, CALL FUNCTION ,
FP_JOB_CLOSE.NAST_PROTOCOL_UPDATEThis FM is generally used in the
Print programs that are attached to an output type in a
transaction. This is used in order to update the processing log .
provide message ID, number, type (I,E,W,S) and text.CHAIN END
CHAINIn PAI if you want to validate group of fields then you put
inchain and End chain statement.You can declare fields in the chain
enchain.
CHAIN.FIELD NUM1.FIELD NUM2.MODULE
USER_COMMAND_0100.ENDCHAIN.
MODULE USER_COMMAND_0100 INPUT.CLEAR okcode.okcode =
sy-ucomm.CASE okcode.WHEN 'ENTER' OR 'EXECUTE'.
IF NUM1 IS INITIAL OR NUM2 IS INITIAL .MESSAGE e398(00) WITH
'PLEASE FILL THE FIELDS'. " Enter
VALUES'ELSE......ENDIF.ENDIF.ENDMODULE.
When an error is found inside a chain, the screen is
re-displayed and all the fields found anywhere in the CHAIN are
input enabled. All non chain fields remain disabled.
Create a global class from a local class
SE24 -> Object Type -> Import -> Local classes in a
program
Control Break Statements
AT FIRST END AT: Will get triggered at the first run of the
loopAT NEW END AT: Will get triggered whenever there is any change
in any of the fields from the left to that of the particular field.
The trigger point will be at the firstoccurrence of the new value
for the field.AT END OF END AT: Will get triggered whenever there
is any change in any of the fields from the left to that of the
particular field. The trigger point will be at the lastoccurrence
of the same value for the field.ON CHANGE OF: Will get triggered
whenever there is any change in the particular field. This
statement can be used outside loop to. AT LAST END AT: Will get
triggered at the last run of the loop
http://www.newtosap.info/2012/07/control-break-statements-in-sap-abap.html
Authorization Object Go to T code: SU21 Select a class from the
list of classes and right click -> create authorization object
Provide the Field name and create a role in T code: PFCG. In
program use syntax, AUTHORITY-CHECK OBJECT 'ZV57REPACC' ID 'ACTVT'
FIELD '01'.Check Table and Value TableThe 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.A value table will become a
check table only when a foreign key relationship is established.
Check table resides at the DB level and value table resides at the
Domain level.
Steps to implement a SAP NOTE Go to T code SNOTE Go to -> SAP
Note Download and enter the note number and execute you will get
.pdf file with correction instructions and manual steps to be
implemented. Make sure that you do the correction instructions
before implementing the note Go to -> SAP Note Browser, enter
note number and execute. Check the status if it says Can be
implemented then proceed by clicking on execute again Lastly after
the note gets implemented do the manual changes Note: You will
require SAP Access key to make CI as well as manual changes.
SAP ScriptWe mainly use three function modules here namely:
OPEN_FORM WRITE_FORM CLOSE_FORMReference program:
http://scn.sap.com/thread/747566
Subroutine Structures used in SAP ScriptITCSY contains two
fields namely name and value. Table Maintenance Generator Mainly
used to create / change DB entries using the SM30 transaction
code.
Standard recording routine creates customizing TR for entries
created in SM30 transaction. These can be moved from development
test production. Auth group by default will be &NC&
(without auth).No, or user, recording routine - does not create any
TR for entries created in SM30 transaction. So what is the
advantage of this is that the entries are maintained only in this
system + client (I57 010 only and no other clients) and hence
cannot be transported to other systems.TMG Events can be accessed
via menu, Environment -> Modifications -> EventsNow click on
F4 which displays all the available events such as: Before saving
data in the DB After saving data in the DB Before deleting the data
displayed After deleting the data displayed Creating new
entriesSingle 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.Disable table entries (SE11)We can disable table entries by
making Table View Maintenance as N i.e., maintenance not allowed. X
is display maintenance allowed, N is maintenance not allowed and
SPACE is allowed with restrictions. So when you go to Utilities
-> Table Contents -> Create entries will be disabled.
What is the difference between a Parameter and a Select Option?
If you remove the Sign, Option & High from a Select Option will
it become a Parameter?No it will not become a parameter because
Select Options are of type internal table. Radio button by default
will be TICKED (only in
reports)Lockshttp://www.erpgreat.com/abap/type-and-uses-of-lock-objects-in-sap.htm
Adobe binding of screen elements Adobe binding is done by
activating the data view (in case if not activated then do it by
Palette -> Data view) this data view will contain the structure
of all the interface elements which are present in context.Now the
last thing left is to start binding these elements into the
corresponding UI elements on the screen. Drag and drop
Interactive Online Adobe CallImportant T Codes: SOA Manager,
WSCONFIG, SICFOn click of Submit button, the following java script
has to be called for the form to get triggered.var sap_usr =
"&sap-user=c5190270&sap-password=initial_1"; var ServerPath
= "ciec3.wdf.sap.corp:50080"; var client = "800";
var Soap_PreServerPort = "http://"; var Soap_PostServerPort =
"/sap/bc/soap/rfc?sap-client="; var SoapAddress =
Soap_PreServerPort + ServerPath + Soap_PostServerPort + client +
sap_usr; var Wsdl_PreServerPort = "http://"; var
Wsdl_PostServerPort1 =
"/sap/bc/soap/wsdl11?services=ZN_VENDOR_CREATE&sap-client=";
var wsdlAddress = Wsdl_PreServerPort + ServerPath +
Wsdl_PostServerPort1 + client + sap_usr ; var conn =
xfa.connectionSet.DataConnection.clone(true);conn.soapAddress.value
= SoapAddress; conn.wsdlAddress.value = wsdlAddress; try{
conn.execute(0); } catch(e) { app.alert(e);}
So RFC connection protocol link to SAP system would actually
look like
this:http://ciec3.wdf.sap.corp:50080/sap/bc/soap/rfc?sap-client=800&sap-user=c5190270&sap-password=initial_1
Connection link to FM via WSDL would look like
this:http://ciec3.wdf.sap.corp:50080/sap/bc/soap/wsdl11?services=ZN_VENDOR_CREATE&sap-client=800&sap-user=c5190270&sap-password=initial_1
The FM that gets executed once the form gets called should
always be remote enabled FM.
Now you should establish data source connection -> new
connection -> connect via WSDL (this contains the FM name along
with import/export parameters) -> Displays all the imports and
exports parameter. Now start binding those parameters to the form
parameters either by dragging and dropping or by choosing data
connection and binding them.
We have to create a web service for ZN_VENDOR_CREATE in order to
get the WSDL link (Utilities -> Create web service -> From
the FM) choose SOAP profile, and check release service for
runtime.In case if it is not released then go to T code: WSCONFIG
to release it.
Go to T code: SOAMANAGER search for your FM name, go to
configuration tab, enter the details there and bottom below you can
get WSDL URL.
Good Example: http://scn.sap.com/docs/DOC-38805WDSL Creation and
Test:
http://saptechnical.com/Tutorials/Others/ABAPWebservices/create.htm
To display based on radio button check in reports
SELECTION-SCREEN BEGIN OF BLOCK a1 WITH FRAME TITLE
text-001.PARAMETERS: p1 RADIOBUTTON GROUP r1 USER-COMMAND flag, p2
RADIOBUTTON GROUP r1 .SELECTION-SCREEN END OF BLOCK a1.
SELECTION-SCREEN BEGIN OF BLOCK a2 WITH FRAME TITLE
text-002.PARAMETERS: emp TYPE char10 MODIF ID m1, desig TYPE char30
MODIF ID m1.SELECTION-SCREEN END OF BLOCK a2.
AT SELECTION-SCREEN OUTPUT.
IF p2 EQ 'X'. LOOP AT SCREEN. if screen-group1 = 'M1'.
screen-active = 0. MODIFY SCREEN. endif. MODIFY SCREEN. ENDLOOP.
ENDIF.
The most important thing to note down here is the keyword
USER-COMMAND, if you miss this then the functionality does not
work. WORKFLOWS
What is a Workflow?
A workflow is a step by step process which includes multiple
stakeholders and assigns work to them, typically a piece of work
passes from initiation to completion.
What is the use of T-Code SWU_OBUF?
This transaction is mainly used to clear the buffers when you
develop a lot of workflows and activate. It can be run as a
background job on a daily basis.
T Codes:
SWDD Standard T Code for Workflow creationSWELS To turn on the
event trace SWEL To see if the event was created for that
particular scenario SWE2 Linkage between the event and the
workflowPFTC Maintaining tasks and agent assignmentSBWP Workflow
Inbox (Work Items)SWU3 SAP WF customization settings SWO6 Delegate
custom business object (created using subtype) to standard one
(i.e., table entry)SWUE Used to trigger the workflow manuallySWIA /
SWI1 Process the work item SOST To check the status of a work
itemSWEC Document change object (i.e., table entry)SCOT Email
configuration
Process to be followed while creating a Z Object: Go to T code
SWO1 Enter the standard object type BUS2032 Click on subtype button
and enter the required fields (ZBUS2032) Go ahead and create the
required events, parameters, methods etc. Save and activate the
ZBUS2032 Go to T code SWO6 in order to delegate your custom Z
object to standard object Go to T code SWEC enter the change
document objectOnce you delegate your custom BO with the standard
BO, you can call your custom methods / events in your workflow
using standard BO (BUS2032 for PO) or custom BO (ZBUS2032) too.
Awesome Example for Wait activity in a
WFhttp://www.an-sap-consultant.com/2014/05/SAP-Business-Workflow-Wait-Step-Type.html
In fork step give number of parallel branches as 2, in one
branch create user decision and in another create wait. WAIT step
is just like start events (CAP button) provide with the business
object name, event name. The fork will execute two or more steps at
the same time without any hassle but if any one WF step gets
completed then the other remaining step will logically be
cancelled.
To raise an event use FM: SWE_EVENT_CREATE (pass BO, object key,
event, and event container table) contains element and value. To
instantiate a BO FM: SWO_CREATE and to call a method FM:
SWO_INVOKE. To start a WF FM: SAP_WAPI_START_WORKFLOW
Please make sure that Terminate if rule resolution has no result
checkbox has been checked
WEBDYNPRO
Dynamic ALVs Add the component SALV_WD_TABLE to your view Create
components table (cl_abap_structdescr) for all the columns which
you want to display Create a structure for this components table.
(components table contain name and type) Create a dynamic root node
(if_wd_context_node_info ~add_new_child_node), give the node name
and structure that you just created for this method Bind the table
containing data against this newly created root node (use the below
interface) Create a component (if_wd_component_usage), create a
model for ALV (cl_salv_wd_config_table) Now last part is to display
it to the view using if_wd_view_controller.In case if you want to
manipulate the column data (Ex: by making fields read only,
invisible etc.) then get the model first by using class
cl_salv_wd_config_table and use class cl_salv_wd_column for further
manipulations. Main interfaces If_wd_context_node,
if_wd_context_element
Send Mail FM: SO_DOCUMENT_SEND_API1
Select Options
Custom Controllers snapshot
How to capture URLs for a given component?
CALLMETHOD cl_wd_utilities=>construct_wd_url EXPORTING
application_name=' IMPORTING out_absolute_url =w_url.
Maintain texts by using T Code SOTR_EDIT for webdynpro
Pass values via outbound plug?
When you fire this plug from first view (MAIN) via., method
action then the fire method is as shown below:
l_ref_main_window->fire_ob_window_plg( p_city =
stru_node_emp1-city p_name = stru_node_emp1-name p_state =
stru_node_emp1-state ).
The corresponding event handler method (HANDLEFROM_MAIN) in
second view (TABLE_DISPLAY) will be given as shown below:data:
lv_name type string.wdevent->get_data( exporting name = 'P_NAME'
importing value = lv_name ).
Note: The event handler method HANDLEFROM_MAIN will get created
automatically. http://scn.sap.com/docs/DOC-27936
What are the different types of layout available in
webdynpro?
There are 4 types of layout namely: Flow Layout Grid Layout
Matrix Layout Row LayoutImportant Interface:
IF_WD_COMPONENTSOTR_EDIT TutorialStep 1: Go to your webdynpro
application, Goto -> Online text repositoryStep 2: Enter the
text for which you want to translate (text field)
Step 3: Click on F4 help and click on the create button
there.Step 4: Enter the alias name which is of format:
package/name
Step 5: Click on tick button (if in case it doesnt show up then
close and click on F4 at text field level)Step 6: Go to T code:
sotr_edit and enter the language in which you created your text
along with alias mentioned above i.e., $TMP/ZNC_OTR_NAME and click
on Display.Step 7: Click on edit -> context -> change, click
on cancel when the pop up appears.Step 8: Now select language as
German from drop down and enter your German text.Step 9: The texts
are maintained in the same alias name change the URL and check, it
works.
Select OptionsUse component WDR_SELECT_OPTIONSMake sure that you
create an attribute of type IF_WD_SELECT_OPTIONSCreate an active
component by using interface if_wd_component_usageUsing this newly
created attribute call method wd_this-> ->
set_global_options( ) which contains some additional functionality
like cancel, check etc.Now create a range table wd_this->
->create_range_table (KUNNR) and add the selection field i.e.,
wd_this-> -> add_selection_field.Create a view container UI
element to add this select options and make sure to embed in
window
Now in order to pull data off of it we will have to create a
field symbol of type ANY TABLE> and an internal table of type
ANYLt_range_table = wd_this-> -> get_range_table_of_sel_field
(id = KUNNR) This lt_range_table will contain the data but itll be
locked and hence has to be de-referencedSo, Assign lt_range_table
->* TO .This field symbol will contain the range table.
Just like Constructors even Supply functions get triggered when
we try to access the Node
Mug it up:
Utilities -> TMGs, Table Contents, function module as
serviceGoto -> OVS,
To display based on radio button check in reports Create a UI
element radio button group index in the layout screen Create a Node
with one attribute with cardinality (0..n), this table will contain
the text names of the radio button Bind this node to the UI element
radio button group index Now on selection of radio button a text
should get displayed. This can be achieved by creating an action
for the radio button group index Put this text in a transparent
container and bind the visibility property with a separate
attribute created separately. In order to read the index of the
radio button use this DATAlv_indexTYPEsy-tabix.lv_index =
lo_nd_radiergummi->get_lead_selection_index( ).
How do you check which view you are on via the WD application?
i.e., given a scenario where the FE has given a snapshot of a view;
how can you find the component name, view name etc. from it? Simple
right click and choose More field help
Code wizard snapshot
http://saptechnical.com/Tutorials/WebDynproABAP/PassingValues/Page1.htm
Prepared By Nirmal Jain- Certified ABAP Developer 9620161251