Modularization techniques like macros, includes, subroutines, and function modules are used in ABAP to avoid repetitive coding and provide structure, readability, and code reusability. These techniques allow code to be organized, reused, and maintained more easily. Parameters can be passed to subroutines by reference, value, or value and result, and actual parameters in the main program are linked to formal parameters in the subroutine. Typed and generic formal parameters specify how the data types are handled.
As an ABAP Developer, we often have to develop ABAP reports that displays some data from the database. SAP provides a set of ALV (ABAP List Viewer) function modules which can be put into use to embellish the output of a report. Object oriented ALV is more robust and is more advanced when compared to Traditional ALV.
As an ABAP Developer, we often have to develop ABAP reports that displays some data from the database. SAP provides a set of ALV (ABAP List Viewer) function modules which can be put into use to embellish the output of a report. Object oriented ALV is more robust and is more advanced when compared to Traditional ALV.
For regular Updates on SAP ABAP please like our Facebook page:-
Facebook:- https://www.facebook.com/bigclasses/
Twitter:- https://twitter.com/bigclasses
LinkedIn:-https://www.linkedin.com/company/bigclasses/
Google+:https://plus.google.com/+Bigclassesonlinetraining
SAP ABAP Course Page:-https://bigclasses.com/sap-abap-online-training.html
Contact us: - India +91 800 811 4040
USA +1 732 325 1626
Email us at: - info@bigclasses.com
sap abap online training, online sap abap training, sap abap training online, sap abap training, abap online training, sap abap, sap online training, sap abap online training from india, sap abap online training demo, sap, abap, sap abap online classes, sap abap online, sap abap training course, online abap training, abap training online, sap abap online courses, www.bigclasses.com,sap abap training
usa
Sap User Exit for Functional ConsultantAnkit Sharma
The R/3 enhancement concept allows you to add your own functionality to SAP’s standard business applications without having to modify the original applications. SAP creates customer exits for specific programs, screens, and menus within standard R/3 applications.
User Exits is slot provided by SAP in SAP standard program.
User exits (Function module exits) are exits developed by SAP.
Code for the function module is written by ABAP Developer .
Developer does not write code directly in functional module , but in the INCLUDE that is implemented in the functional module.
Free Download - http://sapdocs.info/sap/abap/abap-training-course-for-beginners/
A must document for those don't have any experience about ABAP, never seen code..
study material for beginners of SAP ABAP .
1. Introduction to SAP 06
2. ABAB Data Dictionary 60
3. Introduction to ASAP Programming 89
4. Control Structures 12
5. Strings 6
6. Internal Tables 23
7. Open SQL
8. ABAB Debugging 13
9. Reports 74
10. Modularizing Techniques 44
For regular Updates on SAP ABAP please like our Facebook page:-
Facebook:- https://www.facebook.com/bigclasses/
Twitter:- https://twitter.com/bigclasses
LinkedIn:-https://www.linkedin.com/company/bigclasses/
Google+:https://plus.google.com/+Bigclassesonlinetraining
SAP ABAP Course Page:-https://bigclasses.com/sap-abap-online-training.html
Contact us: - India +91 800 811 4040
USA +1 732 325 1626
Email us at: - info@bigclasses.com
sap abap online training, online sap abap training, sap abap training online, sap abap training, abap online training, sap abap, sap online training, sap abap online training from india, sap abap online training demo, sap, abap, sap abap online classes, sap abap online, sap abap training course, online abap training, abap training online, sap abap online courses, www.bigclasses.com,sap abap training
usa
Sap User Exit for Functional ConsultantAnkit Sharma
The R/3 enhancement concept allows you to add your own functionality to SAP’s standard business applications without having to modify the original applications. SAP creates customer exits for specific programs, screens, and menus within standard R/3 applications.
User Exits is slot provided by SAP in SAP standard program.
User exits (Function module exits) are exits developed by SAP.
Code for the function module is written by ABAP Developer .
Developer does not write code directly in functional module , but in the INCLUDE that is implemented in the functional module.
Free Download - http://sapdocs.info/sap/abap/abap-training-course-for-beginners/
A must document for those don't have any experience about ABAP, never seen code..
study material for beginners of SAP ABAP .
1. Introduction to SAP 06
2. ABAB Data Dictionary 60
3. Introduction to ASAP Programming 89
4. Control Structures 12
5. Strings 6
6. Internal Tables 23
7. Open SQL
8. ABAB Debugging 13
9. Reports 74
10. Modularizing Techniques 44
SAP ABAP Latest Interview Questions with Answers by Garuda TrainingsGaruda Trainings
SAP ABAP Latest Interview Questions with Answers by Garuda Trainings
We, Garuda Trainings are provide SAP ABAP Online Training over globe.
For More:
http://garudatrainings.com/
Mail: garudatrainings@gmail.com
Phone: +1(508)841-6144
C program that prompts user to enter two floating point t.pdfaoneonlinestore1
/**
C program that prompts user to enter two floating point
type values and print the product of two values upt to 3
decimal places
*/
//program1.c
//header files
#include
#include
//main function
int main()
{
//declare two double type variables
double num1;
double num2;
//set a double variable,product=0
double product=0;
printf(\"Enter num1 and num2: \");
//prompt for num1 and num2 values from keyboard
scanf(\"%lf %lf\",&num1,&num2);
//calculate product
product=num1*num2;
//print product of two numbers and limit product to 3 decimal places
printf(\"The product of %lf and %lf is %5.3lf \ \",num1,num2,product);
getch();
return 0;
}
Sample output:
Enter num1 and num2: 2.25 3.25
The product of 2.250000 and 3.250000 is 7.313
------------------------------------------------------------------------------------
//2.
/**
C program that prompts user to enter integer values
until user enters 999 to stop reading. Then prit
number of even and odd to console.
*/
//program2.c
//header files
#include
#include
//main function
int main()
{
//set SENTINAL=999;
int SENTINAL=999;
//declare integer variable
int value;
//set even and odd=0
int even=0;
int odd=0;
printf(\"Enter a vlaue or 999 to stop reading input \");
scanf(\"%d\",&value);
//read until value is not 999
while(value!=SENTINAL)
{
//check if value is even
if(value%2==0)
//increment even by one
even++;
else
//otherwise increment odd by one
odd++;
printf(\"Enter a vlaue or 999 to stop reading input \");
//read a value
scanf(\"%d\",&value);
}
printf(\"Even numbers : %d\ \",even);
printf(\"Odd numbers : %d\ \",odd);
//pause program output on console
getch();
return 0;
}
Sample output:
Enter a vlaue or 999 to stop reading input 1
Enter a vlaue or 999 to stop reading input 2
Enter a vlaue or 999 to stop reading input 3
Enter a vlaue or 999 to stop reading input 4
Enter a vlaue or 999 to stop reading input 5
Enter a vlaue or 999 to stop reading input 6
Enter a vlaue or 999 to stop reading input 7
Enter a vlaue or 999 to stop reading input 8
Enter a vlaue or 999 to stop reading input 9
Enter a vlaue or 999 to stop reading input 10
Enter a vlaue or 999 to stop reading input 999
Even numbers : 5
Odd numbers : 5
------------------------------------------------------------------------------------------------------------
//3.
/**
C program that prompts length in inches and prints the length
in miles, yards, feet to console.
*/
//program3.c
//header files
#include
#include
//function prototype
void measure(int inch,int &m,int &y,int &f, int &i);
//main function
int main()
{
int miles,yards,feet,inches=0;
int len;
printf(\"Enter the length (inches): \");
//prompt for len
scanf(\"%d\",&len);
//calling measure method
measure(len,miles,yards,feet,inches);
//print len
printf(\"Total length : %d\ \", len);
//print miles,yards, feet and inches
printf(\"Miles : %d\ \", miles);
printf(\"Yards : %d\ \", yards);
printf(\"Feet : %d\ \", feet);
printf(\"Inches : %d\ \", inches);
//pause program output on console
getch();
return.
Task #1 Correcting Logic Errors in FormulasCopy and compile the so.pdfinfo706022
Task #1 Correcting Logic Errors in Formulas
Copy and compile the source file NumericTypes.java, run the program, and observe the output.
Some of the output is incorrect. You need to correct logic errors in the average formula and the
temperature conversion formula. The logic errors could be due to conversion between data types,
order of operations, or formula problems. The necessary formulas are
average = (score1+score2) / numberOfScores
C = 5/9 (F-32)
Make sure that the output makes sense before you continue. The average of 95 and 100 should be
97.5 and the temperature that water boils is 100 degrees Celsius
Task #2 Using the Scanner Class for User Input
1. Add an import statement above the class declaration to make the Scanner
class available to your program.
2. In the main method, create a Scanner object and connect it to the System.in
object.
3. Prompt the user to enter his or her first name.
4. Read the name from the keyboard using the nextLine method, and store it into
a variable called firstName (you will need to declare any variables you use).
5. Prompt the user to enter his or her last name.
6. Read the name from the keyboard and store it in a variable called lastName.
7. Concatenate the firstName and lastName with a space between them and
store the result in a variable called fullName.
8. Print out the fullName.
9. Compile, debug, and run, using your name as test data.
10. Since we are adding on to the same program, each time we run the program we
will get the output from the previous tasks before the output of the current task.
Task #3 Working with Strings
1. Use the charAt method to get the first character in firstName and store it in a
variable called firstInitial (you will need to declare any variables that you
use).
2. Print out the user’s first initial.
3. Use the toUpperCase method to change the fullName to uppercase and store
it back into the fullName variable.
4. Add a line that prints out the value of fullName and how many characters
(including the space) are in the string stored in fullName (use the length
method to obtain that information).
5. Compile, debug, and run. The new output added on after the output from the
previous tasks should have your initials and your full name in uppercase
characters.
Task #4 Using Predefined Math Functions
Task #4 UsingPredefined Math Functions
Add a line that prompts the user to enter the diameter of a sphere.
Read in and store the number into a variable called diameter (you will need to declare any
variables that you use).
The diameter is twice as long as the radius, so calculate and store the radius in an appropriately
named variable.
The formula for the volume of a sphere is
r3
Convert the formula to Java and add a line which calculates and stores the value of volume in an
appropriately named variable. Use Math.PI for and Math.pow to cube the radius.
Print your results to the screen with an appropriate message.
Compile, debug, and run using the following test data and record the resu.
Library Functions, User defined functions, Recursion, Function declaration, Local and global variables, Use of array in function, Passing by Value, Passing by Address
https://github.com/ashim888/csit-c
DevOps and Testing slides at DASA ConnectKari Kakkonen
My and Rik Marselis slides at 30.5.2024 DASA Connect conference. We discuss about what is testing, then what is agile testing and finally what is Testing in DevOps. Finally we had lovely workshop with the participants trying to find out different ways to think about quality and testing in different parts of the DevOps infinity loop.
Connector Corner: Automate dynamic content and events by pushing a buttonDianaGray10
Here is something new! In our next Connector Corner webinar, we will demonstrate how you can use a single workflow to:
Create a campaign using Mailchimp with merge tags/fields
Send an interactive Slack channel message (using buttons)
Have the message received by managers and peers along with a test email for review
But there’s more:
In a second workflow supporting the same use case, you’ll see:
Your campaign sent to target colleagues for approval
If the “Approve” button is clicked, a Jira/Zendesk ticket is created for the marketing design team
But—if the “Reject” button is pushed, colleagues will be alerted via Slack message
Join us to learn more about this new, human-in-the-loop capability, brought to you by Integration Service connectors.
And...
Speakers:
Akshay Agnihotri, Product Manager
Charlie Greenberg, Host
Accelerate your Kubernetes clusters with Varnish CachingThijs Feryn
A presentation about the usage and availability of Varnish on Kubernetes. This talk explores the capabilities of Varnish caching and shows how to use the Varnish Helm chart to deploy it to Kubernetes.
This presentation was delivered at K8SUG Singapore. See https://feryn.eu/presentations/accelerate-your-kubernetes-clusters-with-varnish-caching-k8sug-singapore-28-2024 for more details.
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualityInflectra
In this insightful webinar, Inflectra explores how artificial intelligence (AI) is transforming software development and testing. Discover how AI-powered tools are revolutionizing every stage of the software development lifecycle (SDLC), from design and prototyping to testing, deployment, and monitoring.
Learn about:
• The Future of Testing: How AI is shifting testing towards verification, analysis, and higher-level skills, while reducing repetitive tasks.
• Test Automation: How AI-powered test case generation, optimization, and self-healing tests are making testing more efficient and effective.
• Visual Testing: Explore the emerging capabilities of AI in visual testing and how it's set to revolutionize UI verification.
• Inflectra's AI Solutions: See demonstrations of Inflectra's cutting-edge AI tools like the ChatGPT plugin and Azure Open AI platform, designed to streamline your testing process.
Whether you're a developer, tester, or QA professional, this webinar will give you valuable insights into how AI is shaping the future of software delivery.
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Jeffrey Haguewood
Sidekick Solutions uses Bonterra Impact Management (fka Social Solutions Apricot) and automation solutions to integrate data for business workflows.
We believe integration and automation are essential to user experience and the promise of efficient work through technology. Automation is the critical ingredient to realizing that full vision. We develop integration products and services for Bonterra Case Management software to support the deployment of automations for a variety of use cases.
This video focuses on the notifications, alerts, and approval requests using Slack for Bonterra Impact Management. The solutions covered in this webinar can also be deployed for Microsoft Teams.
Interested in deploying notification automations for Bonterra Impact Management? Contact us at sales@sidekicksolutionsllc.com to discuss next steps.
Transcript: Selling digital books in 2024: Insights from industry leaders - T...BookNet Canada
The publishing industry has been selling digital audiobooks and ebooks for over a decade and has found its groove. What’s changed? What has stayed the same? Where do we go from here? Join a group of leading sales peers from across the industry for a conversation about the lessons learned since the popularization of digital books, best practices, digital book supply chain management, and more.
Link to video recording: https://bnctechforum.ca/sessions/selling-digital-books-in-2024-insights-from-industry-leaders/
Presented by BookNet Canada on May 28, 2024, with support from the Department of Canadian Heritage.
Epistemic Interaction - tuning interfaces to provide information for AI supportAlan Dix
Paper presented at SYNERGY workshop at AVI 2024, Genoa, Italy. 3rd June 2024
https://alandix.com/academic/papers/synergy2024-epistemic/
As machine learning integrates deeper into human-computer interactions, the concept of epistemic interaction emerges, aiming to refine these interactions to enhance system adaptability. This approach encourages minor, intentional adjustments in user behaviour to enrich the data available for system learning. This paper introduces epistemic interaction within the context of human-system communication, illustrating how deliberate interaction design can improve system understanding and adaptation. Through concrete examples, we demonstrate the potential of epistemic interaction to significantly advance human-computer interaction by leveraging intuitive human communication strategies to inform system design and functionality, offering a novel pathway for enriching user-system engagements.
"Impact of front-end architecture on development cost", Viktor TurskyiFwdays
I have heard many times that architecture is not important for the front-end. Also, many times I have seen how developers implement features on the front-end just following the standard rules for a framework and think that this is enough to successfully launch the project, and then the project fails. How to prevent this and what approach to choose? I have launched dozens of complex projects and during the talk we will analyze which approaches have worked for me and which have not.
UiPath Test Automation using UiPath Test Suite series, part 3DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 3. In this session, we will cover desktop automation along with UI automation.
Topics covered:
UI automation Introduction,
UI automation Sample
Desktop automation flow
Pradeep Chinnala, Senior Consultant Automation Developer @WonderBotz and UiPath MVP
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
The Art of the Pitch: WordPress Relationships and SalesLaura Byrne
Clients don’t know what they don’t know. What web solutions are right for them? How does WordPress come into the picture? How do you make sure you understand scope and timeline? What do you do if sometime changes?
All these questions and more will be explored as we talk about matching clients’ needs with what your agency offers without pulling teeth or pulling your hair out. Practical tips, and strategies for successful relationship building that leads to closing the deal.
The Art of the Pitch: WordPress Relationships and Sales
SAP Modularization techniques
1.
2. • Modularization techniques is used to avoid repetitive
coding.
• The advantage of modularization is:
1. Readability.
2. Code reusability.
3. Providing structure to our code.
• Organizing ABAP code can be done by using INCLUDE
reports and local MACRO's (DEFINE statement). Typical
examples can be found in Module Pools and Function
Groups with TOP-includes and special includes for PBO
events, PAI events etc.
• Processing blocks that are called from ABAP programs:
1. Subroutines
2. Function modules
3. Methods , using these 3 we can re-use the code.
4. • If you want to reuse the same set of statements more
than once in a program, you can include them in a
macro.
• Syntax :
DEFINE <macro>.
<statements>
END-OF-DEFINITION.
• To use a macro, use the following form:
<macro> [<p1> <p2> ... <p9>].
5. • Ex :
DATA : result TYPE I,
N1 TYPE I VALUE 6,
N2 TYPE I VALUE 5.
DEFINE OPERATION.
RESULT = &1 &2 &3.
OUTPUT &1 &2 &3 RESULT.
END-OF-DEFINITION.
DEFINE OUTPUT.
WRITE :/ ' THE RESULT OF &1 &2 &3 =' , &4.
END-OF-DEFINITION.
OPERATION N2 + N1.
OPERATION N2 - N1.
OPERATION N2 * N1.
6. • Include programs allow you to manage complex
programs in an orderly way. Function groups and module
pools use include programs to store parts of the program
that belong together. The ABAP Workbench supports you
extensively when you create such complex programs by
creating the include programs automatically and by
assigning them unique names.
• Include Programs :
1. These are sub-programs which contains a set of re-
usable statements .
2. These programs can not be executed directly.
3. These include programs must be embedded inside a
main program for execution.
4. These programs dosen`t contain parameter interface,
that is no importing and exporting parameters.
7. • Syntax :
INCLUDE <include name>.
Example:
TYPES : BEGIN OF TY_MARA,
MATNR TYPE MARA-MATNR,
MTART TYPE MARA-MTART,
MEINS TYPE MARA-MEINS,
MBRSH TYPE MARA-MBRSH,
END OF TY_MARA.
DATA : IT_MARA TYPE TABLE OF TY_MARA.
DATA : WA_MARA TYPE TY_MARA.
SELECT MATNR MTART MEINS MBRSH FROM MARA INTO TABLE
IT_MARA.
LOOP AT IT_MARA INTO WA_MARA .
WRITE :/ WA_MARA-MATNR, WA_MARA-MTART, WA_MARA-MEINS,
WA_MARA-MTART.
ENDLOOP.
9. • A subroutine is a block of code introduced by FORM and
concluded by ENDFORM.
• Subroutines are normally called internally, i.e. called from
the same program in which it is defined. But it is also
possible to call a subroutine from an external program.
• A subroutine can be called using PERFORM statement.
• 2 types :
1. External subroutines.
2. Internal subroutines.
10. 1. Internal Subroutines :
Syntax :
PERFORM <subroutine name>.
• A subroutine can be defined using FORM and ENDFORM
statements.
Syntax :
FORM <subroutine name>.
...
ENDFORM.
Ex :
• Ex:
PERFORM sub_display.
FORM sub_display.
WRITE:/ 'Inside Subroutine'.
ENDFORM.
11. • 2. External Subroutine :
• Use to call external program.
• Syntax :
Perform <subroutine name > <program name>.
or
Perform < subroutine name > in program <program name>.
12. Ex:
Zprg1 :
FORM SUB1.
WRITE : ' SUBROUTINE 1'.
ENDFORM.
Zprg2 :
FORM SUB2.
WRITE : / ' SUBROUTINE 2'.
ENDFORM.
Zprg3 :
PERFORM SUB1(ZPRG1).
PERFORM SUB2 IN PROGRAM ZPRG2.
13.
14.
15.
16.
17. • Using , changing and Tables are used to pass the data in
subroutine.
• There are 3 ways of passing variables.
1. Pass by reference: The formal parameter has no
memory of its own. During a subroutine call, only the
address of the actual parameter is transferred to the
formal parameter. The subroutine works with the field
from the calling program. If the value of the formal
parameter changes, the contents of the actual
parameter in the calling program also change.
Syntax:
18. Ex:
DATA : NUM TYPE I VALUE 5,
FAC TYPE I VALUE 0.
PERFORM FACT USING NUM CHANGING FAC.
WRITE : / 'FACTORIAL' , NUM , '=' , FAC.
*&---------------------------------------------------------------------*
*& Form FACT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_NUM text
* <--P_FAC text
*----------------------------------------------------------------------*
form FACT using p_num TYPE I
changing p_fac TYPE I.
p_fac = 1.
WHILE p_NUM GE 1.
p_fac = p_fac * p_NUM.
p_NUM = p_NUM - 1.
ENDWHILE.
endform. " FACT
19. • For calling by reference, USING and CHANGING are
equivalent. For documentation purposes, you should use
USING for input parameters which are not changed in the
subroutine, and CHANGING for output parameters which
are changed in the subroutine.
• To avoid the value of an actual parameter being changed
automatically, you must pass it by value.
20. • Pass by value :
The formal parameter occupies its own memory space.
When you call the subroutine, the value of the actual
parameter is passed to the formal parameter. If the value of
the formal parameter changes, this has no effect on the
actual parameter.
• Syntax : Input parameters that passes the value.
21. • Output parameters that passes value :If the subroutine
concludes successfully, that is, when the ENDFORM
statement occurs, or when the subroutine is terminated
through a CHECK or EXIT statement, the current value
of the formal parameter is copied into the actual
parameter.
• If the subroutine terminates prematurely due to an error
message, no value is passed.
Syntax :
22. Ex:
DATA : NUM TYPE I VALUE 5,
FAC TYPE I VALUE 0.
PERFORM FACT USING NUM CHANGING FAC.
WRITE : / 'FACTORIAL' , NUM , '=' , FAC.
*&---------------------------------------------------------------------*
*& Form FACT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_NUM text
* <--P_FAC text
*----------------------------------------------------------------------*
form FACT using value(p_num) TYPE I
changing p_fac TYPE I.
p_fac = 1.
WHILE p_NUM GE 1.
p_fac = p_fac * p_NUM.
p_NUM = p_NUM - 1.
ENDWHILE.
endform. " FACT
23. • Passing Parameters by Value and Result:
• Pass by value and result is very similar to pass by value.
Like pass by value, a new memory area is allocated and
it holds an independent copy of the variable. It is freed
when the subroutine ends, and that is also when the
difference occurs.
• When the endform statement executes, it copies the
value of the local memory area back into the original
memory area. Changes to the parameter within the
subroutine are reflected in the original, but not until the
subroutine returns.
• The copy always takes place unless you leave the
subroutine by using one of two statements:
• stop
• message ennn
24. • Actual Parameters:
Actual parameters declared in main program.
• Formal Parameters :
Formal parameters declared in subroutine to store the values of
actual parameters.
--------------------------------------------------------------------------------
• Using in internal Subroutine:
Syntax :
Perform <subroutine name > using < actual parameters>.
Form <subroutine name > using <formal parameters>.
---
Endform.
25. • Ex:
DATA: A TYPE I VALUE 100,
B TYPE I VALUE 50,
C TYPE I.
C = A + B.
WRITE : / 'IN MAIN PROGRAM'.
WRITE : / A , '+' , B , '=' , C.
PERFORM SUB1 USING A B.
FORM SUB1 USING E TYPE I
F TYPE I.
DATA : Y TYPE I.
E = E / 2.
F = F / 2.
Y = E + F.
WRITE : / 'IN SUBROUTINE '.
WRITE: / E , '+' , F , '=' , Y.
ENDFORM.
26. • Formal parameters can have any valid ABAP data type.
• We can specify the type of a formal parameter using the TYPE or
LIKE.
• can specify the type either generically or in full.
• Generic type :
If you specify a generic type, the type of the formal parameter is either
partially specified or not specified at all. Any attributes that are not
specified are inherited from the corresponding actual parameter when
the subroutine is called.
• any, c, numeric, or index table.
• The actual parameter need only have the selection of attributes
possessed by the formal parameter. The formal parameter adopts its
remaining unnamed attributes from the actual parameter.
• Note that formal parameters inherit the attributes of their
corresponding actual parameters dynamically at runtime, and so they
cannot be identified in the program code.
27. • types: begin of t_line,
col1 type c,
col2 type c,
end of t_line.
data : wa type t_line,
itab type hashed table of t_line with unique key col1,
key(4) type c value 'col1'.
wa-col1 = 'x'.
wa-col2 = 'k'.
insert wa into table itab.
wa-col1 = 'y'.
wa-col2 = 'm'.
insert wa into table itab.
wa-col1 = 'z'.
wa-col2 = 'n'.
insert wa into table itab.
perform demo using itab.
*&---------------------------------------------------------------------*
*& Form DEMO
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_ITAB text
*----------------------------------------------------------------------*
form DEMO using p_itab type any table.
read table p_itab into wa with table key (key) = 'x'.
write : / wa-col1 , wa-col2.
endform. " DEMO
• Note: The table key is addressed dynamically in the subroutine.
• However, the static address
• READ TABLE p WITH TABLE KEY col1 = 'X' INTO wa.
• is syntactically incorrect, since the formal parameter P does not adopt the key of table itab until runtime.
28. • Type full : If you specify the type fully, all of the technical
attributes of the formal parameter are defined with the
subroutine definition.
• d, f, i, string, t, xstring.
• The technical attributes of the actual parameter must
match the attributes of the formal parameter.
• Typed parameters have three advantages:
• They are more efficient. Less CPU is needed to allocate
memory for a typed parameter than an untyped one.
• They help prevent coding errors. Because you cannot
pass a parameter of an incompatible type, the syntax
checker will point out the error to you if you try to pass an
incompatible parameter.
• They help prevent runtime errors. For example, if your
program accepts an untyped variable and performs an
arithmetic operation on it, it is possible to pass character
data to that subroutine. If this happens at runtime, a short
dump will result.
29. • Using in External Subroutines :
Syntax :
Perform < subroutine name > (program name ) using
<actual parameters>
or
Perform <subroutine name > in program(program name )
using
<actual parameters>
30. • Ex:
Zprg4:
DATA: A TYPE I VALUE 100,
B TYPE I VALUE 50,
C TYPE I.
C = A + B.
WRITE : / 'IN MAIN PROGRAM'.
WRITE : / A , '+' , B , '=' , C.
PERFORM SUB1 USING A B.
PERFORM SUB2 IN PROGRAM ZPRG2 USING A B.
FORM SUB1 USING E TYPE I
F TYPE I.
DATA : Y TYPE I.
E = E / 2.
F = F / 2.
Y = E + F.
WRITE : / 'IN SUBROUTINE '.
WRITE: / E , '+' , F , '=' , Y.
ENDFORM.
31. FORM SUB2 USING H TYPE I
J TYPE I.
DATA : K TYPE I.
H = H / 2.
J = J / 2.
K = H + J.
WRITE : / 'IN EXTERNAL SUBROUTINE : '.
WRITE: / H , '+' , J , '=' , K.
ENDFORM.
32. • You can use one of two methods to pass an internal table
to a subroutine:
1. Pass with header line
2. Pass body only
• If the internal table has a header line, method 1 passes
both the header line and the body to the subroutine.
Method 2 passes only the body to the subroutine.
• If the internal table doesn't have a header line, you can
also use both methods. However, method 1 will behave a
little differently-it will automatically create a header line
for the internal table within the subroutine.
33. • summarizes the effect of each of these methods on
internal tables with and without header lines.
• the syntax for each method of passing an internal table to
a subroutine.
34.
35. • Table with header line.
DATA : ITAB LIKE MAKT OCCURS 5 WITH HEADER LINE .
SELECT * FROM MAKT INTO TABLE ITAB UP TO 5 ROWS ORDER BY MATNR.
PERFORM S1 TABLES ITAB.
LOOP AT ITAB.
WRITE : / ITAB-MATNR , ITAB-SPRAS , ITAB-MAKTX.
ENDLOOP.
form S1 tables p_itab structure MAKT.
"Insert correct name for <...>.
READ TABLE p_itab INDEX 3.
IF SY-SUBRC = 0.
p_itab-MATNR = '000000027'.
MODIFY p_itab INDEX 3.
ENDIF.
endform. " S1
36. • How to Pass an Internal Table Without a Header Line to a Subroutine and
Automatically Create a Header Line.
TABLES : MAKT.
DATA : ITAB LIKE MAKT OCCURS 5 .
SELECT * FROM MAKT INTO TABLE ITAB UP TO 5 ROWS ORDER BY MATNR.
PERFORM S1 TABLES ITAB.
LOOP AT ITAB INTO MAKT.
WRITE : / MAKT-MATNR , MAKT-SPRAS , MAKT-MAKTX.
ENDLOOP.
form S1 tables p_itab structure MAKT.
"Insert correct name for <...>.
READ TABLE p_itab INDEX 3.
IF SY-SUBRC = 0.
p_itab-MATNR = '000000027'.
MODIFY p_itab INDEX 3.
ENDIF.
endform. " S1
37. • How to Pass an Internal Table Without a Header Line to a Subroutine:
TABLES : MAKT.
DATA : ITAB LIKE MAKT OCCURS 5. " INTERNAL TABLES WITHOUT WORK AREA.
SELECT * FROM MAKT UP TO 5 ROWS INTO TABLE ITAB ORDER BY MATNR.
PERFORM : S1 USING ITAB,
S2 USING ITAB,
S3 USING ITAB,
PRINT TABLES ITAB.
END-OF-SELECTION.
WRITE : / 'END OF SELECTION'.
PERFORM PRINT TABLES ITAB.
*&---------------------------------------------------------------------*
*& Form S1
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_ITAB text
*----------------------------------------------------------------------*
form S1 using VALUE(p_itab) LIKE ITAB. " PASS BY VALUE
" ALSO YOU CAN USE LIKE ITAB[]
DATA : WA LIKE LINE OF P_ITAB.
READ TABLE P_ITAB INTO WA INDEX 1.
IF SY-SUBRC = 0.
WA-MATNR = '100'.
MODIFY P_ITAB FROM WA INDEX 1.
ENDIF.
endform. " S1
38. form S2 using p_itab LIKE ITAB. " CALL BY REFERENCE
DATA: WA LIKE LINE OF p_itab.
READ TABLE p_itab INTO WA INDEX 3.
IF SY-SUBRC = 0.
WA-MATNR = '300'.
MODIFY ITAB FROM WA INDEX 3.
ENDIF.
endform. " S2
*&---------------------------------------------------------------------*
*----------------------------------------------------------------------*
form S3 CHANGING VALUE(p_itab) LIKE ITAB. " CALL BY VALUE AND RESULT
DATA : WA LIKE LINE OF P_ITAB.
READ TABLE ITAB INTO WA INDEX 5.
IF SY-SUBRC = 0.
WA-MATNR = '700'.
MODIFY ITAB FROM WA INDEX 5.
ENDIF.
endform. " S3
*&---------------------------------------------------------------------*
*----------------------------------------------------------------------*
form PRINT tables p_itab structure MAKT.
"Insert correct name for <...>.
LOOP AT P_ITAB.
WRITE : / P_ITAB-MATNR , P_ITAB-SPRAS , P_ITAB-MAKTX.
ENDLOOP.
endform. " PRINT
40. TYPES : BEGIN OF T_MARA,
MATNR TYPE MARA-MATNR,
ERSDA TYPE MARA-ERSDA,
ERNAM TYPE MARA-ERNAM,
END OF T_MARA.
DATA: ITAB TYPE TABLE OF T_MARA.
PERFORM FETCH.
PERFORM DISPLAY TABLES ITAB.
41. FORM FETCH .
SELECT MATNR ERSDA ERNAM FROM MARA INTO TABLE ITAB.
ENDFORM.
FORM DISPLAY TABLES P_ITAB LIKE ITAB.
DATA : WA LIKE LINE OF ITAB.
LOOP AT P_ITAB INTO WA.
WRITE : / WA-MATNR , WA-ERSDA , WA-ERNAM.
ENDLOOP.
ENDFORM. " DISPLAY
42. • Passing Internal table to external subroutine :
• Syntax :
Perform <subroutine name>(program name) tables
<internal table name>
or
Perform <subroutine name> in program < program name
>tables <internal table name>
43. • Ex:
TABLES : MAKT.
DATA : ITAB LIKE MAKT OCCURS 5 .
SELECT * FROM MAKT INTO TABLE ITAB UP TO 5 ROWS ORDER BY MATNR.
PERFORM S1 TABLES ITAB.
PERFORM S2(ZPRG2) TABLES ITAB.
LOOP AT ITAB INTO MAKT.
WRITE : / MAKT-MATNR , MAKT-SPRAS , MAKT-MAKTX.
ENDLOOP.
*&---------------------------------------------------------------------*
*& Form S1
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_ITAB text
*----------------------------------------------------------------------*
form S1 tables p_itab structure MAKT.
"Insert correct name for <...>.
READ TABLE p_itab INDEX 3.
IF SY-SUBRC = 0.
p_itab-MATNR = '000000027'.
MODIFY p_itab INDEX 3.
ENDIF.
endform. " S1
------------------------------------------------------------
44. REPORT ZPRG2.
*&---------------------------------------------------------------------*
*& Form S2
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_ITAB text
*----------------------------------------------------------------------*
form S2 tables p_itab structure MAKT.
"Insert correct name for <...>.
READ TABLE p_itab INDEX 5.
IF SY-SUBRC = 0.
P_ITAB-MATNR = '0000'.
MODIFY p_itab INDEX 5.
ENDIF.
endform. " S2
45.
46. • It is very similar to an external subroutine in 3 ways:
1. Both exist within an external program.
2. Both enable parameters to be passed and returned.
3. Parameters can be passed by value, by value and result, or by
reference.
• The major differences between function modules and external
subroutines:
1. Function modules have a special screen used for defining
parameters-parameters are not defined via ABAP/4 statements.
2. tables work areas are not shared between the function module and
the calling program.
3. Different syntax is used to call a function module than to call a
subroutine.
4. Leaving a function module is accomplished via the raise statement
instead of check, exit, or stop.
47. • Transaction code SE37 (Function Builder) .
• Function groups act as containers for function modules
that logically belong together.
• Function modules allow you to encapsulate and reuse
global functions in the SAP System.
• The SAP System contains several predefined functions
modules that can be called from any ABAP program.
• Function modules also play an important role during
updating and in interaction between different SAP
systems, or between SAP systems and remote systems
through remote communications.
48. • Function groups are containers for function modules. You
cannot execute a function group.
49. • Ex :function group name zfungroup .
• Give short description name and save .
• To activate the function group , go to SE38 .
• SAPL<function group name > and click on activate.
• System will create :
1. A main program.
2. A top include .
3. A UXX include .
4. A function module include.
50. • To create function module :
1. SE37
2. Function module and give function group name , short
description.
3. Save .
• To pass parameters to a function module, we must define
a function module interface.
1. Import parameters are variables or field strings that
contain values passed into the function module from the
calling program. These values originate outside of the
function module and they are imported into it.
51. • Export parameters are variables or field strings that
contain values returned from the function module. These
values originate within the function module and they are
exported out of it.
• Changing parameters are variables or field strings that
contain values that are passed into the function module,
changed by the code within the function module, and
then returned. These values originate outside the
function module. They are passed into it, changed, and
passed back.
• Table parameters are internal tables that are passed to
the function module, changed within it, and returned. The
internal tables must be defined in the calling program.
• An exception is a name for an error that occurs within a
function module. Exceptions are described in detail in the
following section.
52. • The methods for passing parameters to function modules
are very similar to those for passing parameters to
external subroutines.
• By default:
1. Import and export parameters are passed by value.
2. Changing parameters are passed by value and result.
3. Internal tables are passed by reference.
53. • We can cause import, export, and changing parameters
to be passed by reference by placing a tickmark in the
Reference check box on the Import/Export Parameters
screen.
54. • 3 types:
1. Normal functional Module: These are works within the
system.
2. Remote-Enabled Module : function module that can be
called from other SAP or non –SAP system. Ex : BAPI.
3. Update Function Module : It is basically used to bundle
distributed updates within different programs spots, to
one place (in FM). Update module in attributes of FM
simply flags the FM not to be executed directly ,
hence can be only be excuted in update work process
(using IN UPDATE TASK addition when calling FM) or
in dialog work process (using SET UPDATE TASK
LOCAL statement).
61. • 5 types.
1. Error message. E
2. Information message. I
3. Status message. S
4. Warning message. W
5. Abort message. A
Syntax:
Message <message id >001(message class name) with ‘
<content>’ .
62. • Message can divide into 4 parts.
• To show values along with message use place holder.
• Ex:
Message E001(zmessage) with p_bzirk.
• In message class add using &.
• Maximum 4 values can display in message.
63. • REPORT ZCUST MESSAGE-ID ZMEESTAB.
• PARAMETERS : CUSTOM TYPE KNA1-KUNNR.
• DATA : ITAB TYPE TABLE OF VBAK,
• WA TYPE VBAK.
• START-OF-SELECTION.
• CALL FUNCTION 'ZTEST_TABLE'
• EXPORTING
• CUST = CUSTOM
• TABLES
• ITAB = ITAB[]
• EXCEPTIONS
• BLANK = 1
• NO_SALES = 2
• OTHERS = 3
• .
• IF SY-SUBRC = 1.
• MESSAGE I000.
• ELSEIF SY-SUBRC = 2.
• MESSAGE E001.
• ENDIF.
• LOOP AT ITAB INTO WA.
• WRITE : / WA-VBELN , WA-KUNNR ,WA-BSTNK, WA-BSTDK.
• ENDLOOP.
64.
65.
66.
67.
68. • tables : vbak.
data : itab type table of vbak.
select-options : k_vbeln for vbak-vbeln.
CALL FUNCTION 'ZTES_SEL'
EXPORTING
s_vbeln = k_vbeln
tables
itab = itab
.
LOOP AT itab into vbak.
write :/ vbak-VBELN , vbak-ERDAT, vbak-ERNAM , vbak-
SUBMI.
ENDLOOP.
•
69. • Field symbols are pointers in C.
• They are used to store the address of variable.
• Used to increase the performance .
• Syntax :
Field symbols <fs> [typing].
• Assigning is the keyword to assign the field symbol to
variable.
• Unassign is the keyword to unassign the field symbol to
variable.
70. • Ex:
tables : kna1.
types : begin of t_kna1,
kunnr type kna1-kunnr,
land1 type kna1-land1,
name1 type kna1-name1,
end of t_kna1.
data : it_kna1 type table of t_kna1.
field-symbols <fs> type t_kna1.
select-options : p_kunnr for kna1-kunnr.
perform fetch.
perform display.
form FETCH .
select kunnr land1 name1 from kna1 into table it_kna1 where kunnr in p_kunnr.
endform. " FETCH
*----------------------------------------------------------------------*
form DISPLAY .
LOOP AT it_kna1 assigning <fs>.
write : / <fs>-kunnr , <fs>-land1 , <fs>-name1.
ENDLOOP.
endform. " DISPLAY