Goals. Display the options for making customer-specific adjustments to the SAP standard system; Searching for and using enhancements; Correct. No part of this publication may be reproduced or transmitted in any form or for any purpose without the express permission of SAP SE or an SAP affiliate. BC en Col10 (Enhancement - Modifications) - Ebook download as PDF File ( .pdf), Text File .txt) or read book online. SAP BC Enhancement and.
|Language:||English, German, Portuguese|
|ePub File Size:||17.59 MB|
|PDF File Size:||14.19 MB|
|Distribution:||Free* [*Sign up for free]|
BCEnhancements and Modifications - Free download as Powerpoint Presentation .ppt), PDF File .pdf), Text File .txt) or view presentation slides online. SAP AG. C o u rs e O v e rv ie w D ia g ra m. R /3 B u s in e s s A p p lic a tio n s (T. New Age Technologies has been delivering Authorized Training since We offer SAP's full suite of authorized courses including courses pertaining to. BC ENHANCEMENTS AND MODIFICATIONS. Course Version: SAPTEC Fundamentals of SAP NetWeaver Application Server. •. BC ABAP.
Fundamental knowledge of a programming language? Principles and ergonomics of user dialogs? Context menus? BC Developing User Dialogs? Function and use of the Control Framework? Integrate and call controls? Data transport between ABAP programs and controls? Change control attributes? React to actions in the control? Drag and drop functionality? The following are not part of the course: object-oriented modeling, general objectoriented programming and the control of external controls.
The LUW concept?
Use of the SAP locking concept? Database changes from dialog programs using suitable techniques: inline updates, synchronous, asynchronous and local updates in V1 and V2 mode? Knowledge of ABAP dialog programming is very useful. When revising courses, we reserve the right to usemore up-to-date software than specified in the course. Develop new functionality internally within SAP or? The course provides fundamental information about dialog, program logic and service program functionality within the BDT.
In this course the BDT and its enhancement technology are discussed. The enhancement technology includes programming function groups in reserved namespaces and the execution via BDT control tables. Project managers? Display the options for making customer-specific adjustments to the SAP standard system? Searching for and using enhancements? Correct implementation of modifications?
Overview of the options for making customer-specific adjustments to the SAP standard system? Personalization transaction variants?
When revising courses, we reserve the right to use more up-to-date software than specified.
Dictionary administrators? Tables incl. Performance aspects when accessing tables: - Buffering - Indexes? Relationships between tables: - Define and manage foreign keys - Texttables? Views and append views? When revising courses, we reserve the right to usemore up-to-date software than specified. Learn the basic elements of SAPscript and how its components interact? Create and maintain forms? Form elements: windows and pages, paragraph formats, character formats? Text editor: text layout in the PC editor and in the line editor?
Icons and control commands? Print program: functions of the print program and the form processor, important function modules, outputting text elements, processing header lines, functions of the form processor?
Formatting text modules using styles? Modifications: procedure for changing forms and print programs, transporting SAPscript objects? SAPscript font maintenance? It does not give you any application-specific knowledge. General concepts of form printing: windows and pages, main and secondary windows, text and data?
Variables: form interface, global data? Tables: Table Painter, dynamic tables, templates, headers and footers? Smart Styles: Style Builder, paragraph and character formats? SAP Note offers initial information. Also note that from SAP? ERP , PDF-based forms are delivered in addition to the existing forms fromboth older methods or instead of them.
This course discusses the technological aspects of Smart Forms. Create forms for print scenarios with Interactive Forms based on Adobe software? Overview: Architecture? Designer the graphical layout tool? Form structure?
Static elements? Dynamic elements and tables? Standard forms are delivered from SAP? ERP Delivered forms in SAP? See also SAP Note Course BC provides details about print scenarios with these forms. Interactive applications or integration in Web scenarios are not discussed in the course, however. Course BC discusses the technological aspects of the PDF-based forms; it does not give you any application-specific knowledge.
Knowledge of business processes and their disruptive process steps? Knowledge of the use of paper forms within business processes? Knowledge of the way IT supports business processes? Understand the partnership between SAP and Adobe? Understand the possibilities of Interactive Forms? Understand the relationship between Interactive Forms and Business Processes?
Overview of Adobe Software possibilities? Overview of standard Interactive Forms Scenarios? Sales triggers and the way of selling?
Relationship between Interactive Forms and Business Processes? Possible scenarios and the way of implementation? Partnership SAP and Adobe? Course language: Dutch www. Programming experience with Java?
To understand the partnership between SAP and Adobe? Overview of possible scenarios for using Interactive Forms?
Working with the Adobe LiveCycle Designer? Working with the designer within the NetWeaver Development Studio? Implementing an offline and online Interactive Form scenario?
Uploading and Downloading Interactive Forms? Overview of possibilities of Interactive Forms?
Making use of the Adobe Designer? Create a standalone Interactive Form? Developing an offline Interactive Form? Change an existing Interactive Form? Making use of the function modules of the Adobe Document Server? E-mailing an Interactive Form? Developing an online Interactive Form? Making use of Form Scripting? How to extract data from an Interactive Form?
Programming experience with ABAP? BC Enhancements and Modifications? To make us of fonts replacement, signatures and certificates? To understand performance influencing aspects? Implementing tables, dynamic properties and standard SAP library controls? Adding fonts and font replacements within Interactive Forms?
Making use of Digital Signatures and Certificates? Understanding aspects influencing the performance of Interactive Forms? Implementing multi-language Interactive Forms? JA Java Web Dynpro? To understand the architecture of Composite Environment? Developing and understanding composite Forms in Guided Procedures?
Web Dynpro for Java, advanced Interactive Forms topics? Course will be held in Dutch, unless English is necessary www. Web transactions programming model?
Service files and service parameters? HTMLBusiness templates? HTMLBusiness language elements? Layout and design adjustments? ITS Debugger? Input help? You can use the user role examples just as they are delivered with the SAP System. You are able to group together one or more roles to form a composite role.
This can also include roles delivered by SAP. The system takes you to the maintenance screen for roles. You can copy sub-trees and menu entries from: These can be: In order to maintain single entries, you have to maintain the entries in the single roles. The assignment of single authorization objects for a transaction using transaction SU22 provides the basis for this determination. You only have to maintain authorizations marked with the yellow icon. If you do not do so, full authorization is automatically given.
Enter a meaningful description. The profile that was created is automatically assigned to the given users. Each time you change a role, you must update the user master records. Select the standard role most suitable for the particular workplace and assign the corresponding users.
Adjust the user master records. However, these changes are lost during an upgrade. We therefore recommend that you copy the delivered roles and modify your copy. In addition, there are ways to set single transactions to the needs of your enterprise or individual user groups.
In this unit we will see how a transaction can be simplified without being modified. We will discuss the use of GuiXT in more detail later. The transaction variant consists of these screen variants. No new transaction code is required.
SAP ABAP Certification Syllabus
This takes you to the transaction for maintaining transaction variants. The name of the variant must be unique in the system and be in the customer namespace. The system sends another screen in which you can evaluate the fields of the screen. This will be discussed next. The name is constructed as follows: You can set various attributes for the individual fields: You can undo or hide the input status of a field. You can find a detailed list of options in the online documentation about transaction variants.
You can also choose GuiXT files stored on your local machine. You can find more information on the homepage of the GuiXT vendor, http: This is intended primarily for developers who are creating transaction variants. You can navigate there directly from the maintenance screen for the transaction variants. Personalization Topic: Creating a development class For correct development you need a development class.
Creating area menus and roles At the conclusion of this exercise, you will be able to: Create an area menu that you will use as initial screen for the rest of the training course. This area menu will contain all the entries you need for working efficiently during the course. This includes both the transactions specific to this course and all the transactions of the ABAP Workbench. Include the transaction in your list of favorites.
What does your start menu look like when you start a new session? How can you get there quickly? It is not the aim of this training course to fully explain the SAP authorization concept.
In this exercise we will simply create a menu that can be used as a user-specific menu. We therefore do not correctly maintain the profiles. Assign full authorization for the displayed sub-trees. Assign full authorization by selecting the corresponding traffic light icon for the relevant sub-tree. Assign the following authorization here: What options do you now have to start transactions?
The changes take effect immediately. Create a new session to see the changes in the initial menu. Check your user in the user maintenance screen SU Transaction variants At the conclusion of this exercise, you will be able to: Actually you only have to fill in a few fields.
A number of other fields, however, are superfluous. Help your users by simplifying use of the transaction. Include the corresponding transaction in your list of favorites. You should make the following changes: Initialize the first two fields with "DE", "Frankfurt" and cancel the ready for input status. Set column "FLH" of the table control to not visible. Deactivate menu function "BACK". Transaction name: Creating area menus You can create an area menu by choosing the following menu path in the SAP menu: After you confirm your entry, the short text for the transaction is displayed.
Complete the entries. Enter transaction code S and set attribute "Reference". Complete the entry. You can no longer go to the SAP menu. If you choose "SAP Menu", the menu you defined as start menu is displayed. Give it a short description and maintain the description of the role. Choose the appropriate tab title. Choose "Change authorization data". A list with a tree-like structure appears. The individual sub-trees have a yellow traffic light.
Give full authorization for the displayed sub-trees by selecting the traffic light and confirming the next modal dialog box. The object appears in an appropriate sub-tree that now has the attribute "manual". Expand the sub-tree and maintain the field values: Copy the profile name. Generate the profile. Enter your user BC Save your entry. Adjust the user master records by choosing the right pushbutton.
You can now toggle between the user menu and the SAP menu. Transaction SHD0 is started. Enter the name of the variant in field "Variant": Enter the corresponding values in the input fields.
Leave the screen with the appropriate pushbutton and create a screen variant for each of the screens. Assign the first two fields the values "DE" and "Frankfurt". Leave the screen by choosing the appropriate pushbutton. In the next popup window select the checkbox "Copy field values" and the corresponding checkboxes for the screen objects. Give the screen variant a short description: Save the screen variant.
Choose "Copy values" again in the next dialog box. Choose the pushbutton for menu functions and deselect function code "BACK". Leave the screen with the "Save" function.
Deactivate menu function "BACK" as in You can now check your entries again. Save them to finally create the transaction variant. Call it ZBC Proceed as described in the exercise on maintaining area menus. With append structures, customers can add their own fields to any table or structure they want. However, a table can have multiple append structures assigned to it. This ensures consistency in these tables and structures whenever the include is extended. Whenever a table is activated, the system searches for all active append structures for that table and attaches them to the table.
If an append structure is created or changed and then activated, the table it is assigned to is also activated, and all of the changes made to the append structure take effect in the table as well. If you copy a table that has an append structure attached to it, the fields in the append structure become normal fields in the target table.
This protects them from being overwritten at upgrade or during release upgrade. New versions of standard tables are loaded during upgrades.
The fields contained in active append structures are then appended to the new standard tables when these new standard tables are activated for the first time. Therefore, no conversion of the database table is necessary when adding an append structure or inserting fields into an existing one.
The table's definition is changed when it is activated in the ABAP Dictionary and the new field is appended to the database table. You cannot create append structures for pool and cluster tables.
This is because long fields of this kind must always be the last field in their respective tables. No fields from an append structure may be added after them. If you use an append structure to expand an SAP table, the field names in your append structure must be in the customer namespace, that is, they must begin with either YY or ZZ.
This prevents naming conflicts from occuring with any new fields that SAP may insert in the future. Customizing includes. These are often inserted in those standard tables that need to have customer- specific fields added to them. This provides for data consistency throughout the tables and structures affected whenever the include is altered.
This naming convention guarantees that nonexistent Customizing includes do not lead to errors. Some are already part of SAP enhancements and can be created by using project management see the unit on 'Enhancements using Customer Exits'. These names must all begin with either 'YY' or 'ZZ'. Table enhancements At the conclusion of this exercise, you will be able to: You work as a computer specialist for a large travel agency.
They would like more information about a flight, for example the pilot's name or the main meal. You need to add two columns to this table without modifying it. One should contain the pilot's name character string of length 25 and one should contain the meal character string of length Choose the type that you think is most suitable.
You will use these fields later on in a screen. Doing a little more work now will save you work later on. You can work with append structures just like with "normal" structure definitions. They are created from a table or structure. The detailed procedure is described below: Give the append structure a short description and save it under the development class you created.
The field names must begin with YY or ZZ. Ideally you should use forward navigation. Give the data element a short description and an adequate field label. Remember to activate the data element.
If an error occurs, you can find details in the activation log. Customer exits are preplanned by SAP and generally consist of several components.
A management function is provided for this purpose transaction code SMOD. These components include function module exits, menu exits, and screen exits.
SAP Certification Materials
A specific component may be used only once in a single SAP enhancement this guarantees the uniqueness of SAP enhancements. Each individual SAP enhancement may be used only once in a single customer enhancement program this guarantees the uniqueness of a customer project.
Document enhancement project 5. These components are combined in SAP enhancements. Document Document enhancement enhancement project project Activate Activate Activate enhancement Activate enhancement project project 5. This activates all of the project's component parts. You must give your enhancement project a name. SAP recommends that you think up a naming convention for all of your projects. You can, for example, include the project's transaction or module pool in its name.
All enhancement project names must be unique. The system inserts all of the project's other attributes such as created by, created on, or status. Enter the names of the SAP enhancements you want to use on the appropriate screen. From there you can select those enhancements that are of interest to you. After it has been activated successfully, the project has the status active.
After activation, you can see the effect of the enhancements in your application functions. Each of the component pieces include programs, subscreens, menu exits, and so on should be assigned to the same change request. Using the same change request allows you to transport the entire enhancement at the same time. SAP application programmers define where function module exits are inserted and what kind of data they transfer. SAP programmers also create an exit's corresponding function modules complete with short text, interface, and documentation, as well as describing each function module exit's intended purpose in the SAP documentation.
If need be, you can also create your own screens, text elements, and includes for the function group. Function module exits have no effect prior to enhancement project activation.
Within the function module, the user can add functions in the customer namespace using an include. The programmer must also create the function module he wants to call and its related function group. EXIT Name: Name of the program that calls the function module Suffix: Three-digit number The three parts of the name are separated by an underscore. Multiple calls of the same function module are all activated at the same time. There are a number of ways to find the answer to this question.
Use the Find icon and search globally in the program. If your search does not provide any results, you can define a larger search area. Determine the environment for the corresponding program and look for the specific character string in the program environment. These are: CMOD function to edit function modules for function module exits.
It is especially important that you do not alter the interface in any way. This automatically takes you to the editor of the include program, where you can enter your code. The system assigns unique names to the includes for different objects. Some of the include names are simply proposals and some cannot be changed. This include is generated automatically when a function group is created. However, we advie you to accept the proposed names.
You can only edit includes beginning with a 'Z', since they are stored in the customer namespace. They can, however, be created in separate includes, which is explained later. Data declarations made here with DATA are valid locally in this function module.
Documentation is also provided within the SAP enhancement. You can copy the source code from this include into your own customer include program ZXaaaUnn using the project management transaction.
F01 contains subroutines delivered by SAP. E01 contains the events belonging to the X function group. O01 contains PBO modules for screens to be delivered. I01 contains the corresponding PAI modules. This allows you to define a text for the reserved menu entry and add your own logic, often in the form of a related function module exit.
Once you activate menu exits, they become visible in the SAP menu. Whenever this menu option is chosen, the system processes either a function provided by SAP application programmers or your own function that you have implemented in a function module exit.
They do not appear on the screen. The SAP application programmer defines the relevant function codes, assigns them to menus, and often provides a function module exit. You can either display additional information in these areas or input data.
You define the necessary input and output fields on a customer screen subscreen. Fax no. Each subscreen area can be filled with a different screen of type subscreen at runtime. The general syntax is as follows: The name of the subscreen area must be defined without apostrophes. The function group to which the subscreen belongs is defined statically in apostrophes, but the screen number can be kept variable by using fields; it must always have four places. Normally, these function groups also contain function module exits.
At this point, all modules called during the PBO event of the subscreen are also processed. For this reason, SAP application programmers use function module exits to return any data to the calling program that was changed in the subscreen.
The SAP development environment supports creation with forward navigation. You can use these areas to display additional information, or to collect and process data. Customer exits Topic: Function module exit At the conclusion of this exercise, you will be able to: Adjust the program so that there is a warning when a flight in the past is selected.
Try to avoid modifying the program. Choose the enhancement that you can use to implement a supplementary check when you leave the first screen of the transaction. Check that the date that was entered is prior to today's date that is,.
If this is the case, display a warning containing an appropriate text. Menu exit At the conclusion of this exercise, you will be able to: Your co-workers are thrilled with the new functions that you have built into the system.
However, they want more They want you to allow them to display a list of bookings for their current flight from within the flight display transaction. They already use a program that generates this kind of list, but up until now they have always had to call the program separately.
Are there any points in the transaction where you could call another program or perhaps even a menu option that could allow you to call another program? Choose the enhancement with which you can implement a menu enhancement.
Start the specified program by choosing the supplementary menu entry. Note the data provided in the function module exit. Screen exit At the conclusion of this exercise, you will be able to: You accept this new challenge from your co-workers and try to solve the problem without having to modify the transaction.
Specifically, you start looking for a way to add a couple of new fields to the second screen of this transaction screen number TG CUS3: The following should appear: Function module exit You can check if the transaction offers customer exits as follows: The enhancement you were looking for has the name SBC E The documentation for the enhancement shows that it is intended for supplementary checks of the first screen of the transaction.
The source text of the exit function module appears in the Function Builder. Create the include by double-clicking. Your source text could be as follows: Go back to project management and activate your enhancement project. Menu exit Examine the transaction as in the last exercise.
Edit the enhancement's components. Assign a menu text. Edit the function module exit by double-clicking. Create the customer include using forward navigation. Activate the include program. Activate the enhancement project. Screen exits Look at the transaction screens in the Screen Painter.
The name of the enhancement is SBC E Include enhancement SBC E03 in your project. You can create screen by double-clicking on the enhancement component. Make sure that you choose screen type "Subscreen". You have two options for placing a field on the screen for the free places: You can declare a variable in the TOP include of the X function group, generate the program.
You can then place this program field on the screen. Generate the screen. You can enhance your append structure. You should not do this in the exercise since the trainer fills the fields of the append structure with a program.
Enhancing the append structure could result in errors in this program. Create the customer include and enter the following source text example for group TOP include: Activate the programs. Previously, only two parties were involved in the delivery: SAP produced the software, and delivered it to its end-customers. Customers could enhance this standard using customer exits. The last link in the chain is the customer, as before.
This requirement cannot be satisfied by customer exits, which can only be used once. Consequently, SAP developed a new enhancement technique in Release 4. They intervene in the standard process, and return data to the SAP application. In this case, data only flows in one direction - from the SAP application to the additional component. You can deposit additional logic at these points. In this case business transaction events function in much the same manner as customer exits see the unit on "Enhancements using Customer Exits".
This influences the number of additions that can be attached to the interface. If you choose to use this same process interface for one of your own developments, the partner enhancement is dismissed and your own enhancement is processed at runtime instead. The program contains an enhancement in the form of a Business Transaction Event. The program calls a function module that determines and processes the active implementation of the enhancement.
Function modules are implemented in the sequence defined by the internal table. At this point the system also considers the conditions under which the function module will be processed in the customer namespace. For example, you can select the country or application as the condition. These conditions are also shown as filter values. The application program passes data to the service function module using the interface.
SAP developers have already designed the interface. They are then processed in a loop. SAP application programmers determine where to place business transaction events in a task function and what data should be transferred at each point.
They also create sample function modules complete with short texts, an interface, and documentation, and describe the functions possible with the enhancement in the accompanying SAP documentation. These numbers should observe a particular convention. For example, the fifth and sixth digits should be identical with events in the same program.
For example: The number that completes the name of the function module is also the name of the event. You can view the documentation for the event from the list. Documentation Event You can restrict the search by using various parameters. You can then: A product groups together a collection of enhancements. They define a sequence for processing the implementations of a business transaction event.
This allows the user to control which enhancements should be processed and which should not. It also ensures the integrity of the whole enhancement.
SAP Business Framework: The Interface button displays the parameter structure for the interface you have selected. You can also use the documentation to determine what functions each interface allows you to perform. You must not change the interface. Don't forget to activate the function module.
This means that the same event can be used in different clients for different purposes. You will also define a Business Add-In of your own and use it in a program. Customer SAP Cust. Each object only exists while the program is running. In this unit, when we talk about objects, we may actually mean the abstract description the class , depending on the context.
Public components: The public components are those components of the class for example, attributes and methods that are visible externally. All users of the class can use the public components directly. The public components of an object form its interface.
Private components: These components are only visible within an object. Like the public components, the private components can be attributes and methods. Consequently, the data of an object is normally "internal", that is, represented using private attributes. The internal private attributes of a class can only be changed by methods of the class. As a rule, the public components of a class are methods. The methods work with the data in the class and ensure that it is always consistent.
An instance is a real software object. An ABAP program can therefore load instances of different function groups by calling function modules, but only one instance of each function group can exist at a time. For example, suppose a program wanted to manage several independent counters, or several orders at the same time. If we did this using a function group, we would have to program an instance management to differentiate between the instances using numbers, for example.
Data Function Interface Data Interface … … … Consequently, the data is usually in the calling program, and the function modules work with this data. This causes various problems. For example, all of the users have to work with the same data structures as the function group.
If you want to change the internal data structure of a function group, you will affect a lot of users, and the implications of the changes are often hard to predict. Data and functions are defined in classes instead of function groups.
An ABAP program can then work with any number of runtime instances that are based on the same template. Instead of loading a single runtime instance of a function group implicitly when you call a function module, ABAP programs can create runtime instances of classes explicitly.
The individual runtime instances are uniquely identifiable objects, and are addressed using object references. They must provide all of the functions of the interface by implementing its methods. However, you cannot instantiate an interface. The top part of the graphic illustrates the typical delivery process: It no longer merely consists of provider and user.
Instead, it can now contain a whole chain of intermediate providers. Enhancements are made possible by SAP application programs. This requires at least one interface and an adapter class that implements it.
The interface is implemented by the user. Once implemented, a Business Add-In can be reimplemented by other links in the software chain further to the right in the graphic. Attributes DATA: Currently, each Business Add-In can contain the following components: If you implement a filter-dependent Business Add-In, the adapter class ensures that only the relevant implementations are called.
The adapter class calls the active implementations. It enables us to see the possibilities and limitations inherent in Business Add-Ins.
You must declare a reference variable referring to the BAdI interface in the declaration section. We will discuss the precise syntax later on. This generates the conditions for calling methods of program enhancements. In call 2 , the interface method of the adapter class is called. The adapter class searches for all of the implementations of the Business Add-In and calls the implemented methods. Instance of DATA: The numbered circles correspond to the calls from the previous page.
The name of the reference variable does not necessarily have to contain the name of the Business Add-In. This generates an instance of the generated adapter class. Only the methods of the interface can be called with this reference object.
Initial Screen Business Add-Ins: Implementation Maint. Definition Sel. A dialog box appears. Enter the name of the Business Add-In. The maintenance screen for the Business Add-In then appears. The menu contains an entry "Implementation", which you can use to get an overview of the existing implementations.
You can also create new implementations from here. Methods Attrs. However, it is a good idea to observe the proposed naming convention. The suggested name is constructed as follows: The system starts the Class Builder editor. Private Methods Class Builder: Class Builder: You create the private methods including interfaces. Specify a visibility for the method, and implement it. Activation Business Add-Ins: From now on, the methods of the implementation will be executed when the relevant calling program is executed.
However, the corresponding calls in the application program are still processed. The difference is that the instance of the adapter class will no longer find any active implementations.
The same applies to the method call that calls the method of the adapter class. The activation or deactivation must be transported into subsequent systems.
However, only one can be active at any time. However, the following conditions must be met: Which menu entry should be displayed? Having the former without the latter would make no sense. For this reason, it is important that the two enhancement components are combined in a single enhancement - the business add-in. The sequence in which the implementations will be processed is not defined. Even if the business add-in does not support multiple use, you can still have more than one implementation for it.
However, only one implementation can be active at a time. You must specify the filter type in the form of a data element. The value table of the domain used by the data element contains the valid values for the implementation. To do this, enter the program name and function code, and a short description on the relevant tab page. You can, in principle, change the name of the interface to anything you like. However, your BAdI will be easier to understand if you retain the proposed name.
Method Interface Parameters Class Builder: Type Description Importing Exporting Changing 7. For example, you can: Otherwise, you define the interface parameters you need for the enhancement.
SAP ABAP Certification materials download
Activating the Interface Class Builder:Collection framework? Save them to finally create the transaction variant. The program contains an enhancement in the form of a Business Transaction Event.
Formatting text modules using styles? Upgrade program R3up tells you to start the transaction after upgrade has finished.
SAP / ABAP
Classic Business Add-Ins Section: Implementing tables, dynamic properties and standard SAP library controls? Check that the date that was entered is prior to today's date that is,. Publish the instance so that implementing classes can access it.