Brief introduction of J2EE

un Microsystems, Inc. in 1996 launched a new pure object-oriented programming language, called Java. Java technology has become the software industry appears one of the most important technology, this platform has nothing to do with the emergence of the programming language, immediately set off a revolution in the software industry, the Internet is now the most popular programming language . Java is a way to explain through the implementation of the language, characterized as: a simple, object-oriented, not dependent on the structure of machines, with portability, robustness, security, and provided with a mechanism and the modern network The perfect combination of technology. At present, in accordance with the Sun Microsystems Web site (http://java.sun.com) announced the standards, depending on the Java language applications will be divided into three platforms:
Java 2 Platform Micro Edition as J2ME, Java 2 Platform Micro Edition. For the development of handheld computers, mobile phones and other mobile communications equipment for use on embedded systems.
Java 2 Platform Standard Edition as J2SE, Java 2 Platform Standard Edition. Mainly used for the development of general desktop applications.
Java 2 Platform Enterprise Edition called J2EE, Java 2 Enterprise Edition platform, To be used for rapid design, development, deployment and management of enterprise-class software system.
J2EE is to use Java to develop a set of extended enterprise norms, it provides component-based design, development, deployment and management of enterprise application solutions. J2EE standards must be based on the J2SE platform, which not only consolidated the Standard Edition of the many advantages, For example, "a compiler, run everywhere" cross-platform features, convenient and efficient database technology to provide seamless connectivity JDBC (Java Data Base Connectivity, Java database connectivity), in Internet applications to ensure data integrity of the security model and support multi - Threading technology, At the same time also against Servlet / JSP, EJB, JMS, JTS / JTA, JCAT and XML technology to provide a comprehensive support. J2EE has been able to establish a set of enterprise-class software application development, shorten the product development cycle structure of the standard system.
In fact, J2EE has become the industrial development of enterprise-class standards and mainstream platform. J2EE for the establishment of a high-availability, high scalability, easy maintenance of enterprise-class system provides the perfect mechanism and the framework model. In J2EE to provide the unified development platform, can greatly reduce development costs and the application of multi-storey complex, the need for high-availability, high security and high scalability software services and the lack of funding for businesses, J2EE the middle Integrated framework of the competent and fully meet their requirements. At the same time, J2EE itself with the comprehensive directory services support and a high degree of security mechanisms and efficient performance show, and many other advantages, for the smooth integration of enterprise application systems have played an enormous role.
J2EE-based enterprise applications, without any particular operating system, network environment, the shackles of hardware platforms.Applications can be developed and deployed in the heterogeneous environment, and to ensure that the system of portability. Therefore, as long as the J2EE development of a standardized system can be deployed to various operating system platforms and network platforms. J2EE as a long-term stable performance, enterprise-class applications platform, to protect 7 ? 24 hours of uninterrupted services to meet customers, partners, the needs of enterprises is an ideal platform for the operation of Internet globalization is an inevitable requirement for the development of the objective. J2EE high scalability features in today's "on demand" (IBM Corporation to the end of 2002) the popularity of e-commerce strategies of the times, made an outstanding contribution. J2EE using load-balancing strategy, the system software and hardware resources to maximize utilization and performance, eliminate bottlenecks in the system. Allow the deployment of integrated multiple servers, and can be highly scalable systems, the preservation of existing enterprise IT assets to reduce repetitive investment in the future but also to meet the needs of business applications.
J2EE Technical
In J2EE platforms, including a large number of technology, in order to provide developers with more comprehensive support.
Servlet Technology Servlet Web application development is the foundation. It is entirely in Java language development is the Java platform on the CGI technology. It runs on the server-side J2EE containers, with high efficiency, to dynamically load and dynamically generate Web pages. Servlet Specializes in process control and conduct of business, the expansion of services for enterprise development strategy tailored and flexible.
JSP technology Its essence is still Servlet, only to create two different ways. JSP documents from HTML files, Java and JSP label procedures constitute a fragment. JSP will be the first through the analyzer generates the Servlet source files, and then compile this document Servlet running. JSP Servlet and, with very high operating efficiency.
JNDI technology Java Naming and Directory Interface, as JNDI. J2EE application components are usually located in different physical address of the machine, so the need for a mechanism to facilitate client users to find and use J2EE components and enterprise system resources. In J2EE system, the use of JNDI technical positioning various objects, including EJB objects, database-driven targets, JDBC data source object and connect information, and other objects. JNDI functions for the application to provide a unified interface to complete the standard definition of directory operations, such as through the object properties to find the target and positioning.

Very hard to read. OP needs to work on his grammar. Not especially accurate either.
When, inevitably, people start arriving here and asking "pls send me teh intro 2 jeee" I suggest they read this link instead:
[http://java.sun.com/developer/technicalArticles/J2EE/Intro/|http://java.sun.com/developer/technicalArticles/J2EE/Intro/]
(They won't of course...)

Similar Messages

  • Brief Introduction of Business objects

    I am looking for an overview powerpoint about the brief introduction of Business objects, connection with BI, roadmap...
    Does anyone know the link to those information? Thanks.

    Hi,
    Please refer the below PPT link...
    https://www.sdn.sap.com/irj/scn/elearn?rid=/library/uuid/10abbfac-f598-2b10-8d89-842fb1a09905&overridelayout=true
    Hope this might help you..
    Regards
    Sindhu

  • Brief introduction SAP Modules

    Hi, I know that there are 64 modules in SAP. Can any one mention the brief introduction (main functions) of each module including technical modules? thx in advance.

    If u do not know some thing, u should be calm. Pls do not mention such stupid answers.
    Some people don't understand that this is a discussion forum and not a "Do my job for me" or a "I can't be bodered to google it" forum.
    If you don't do minimal research on your own don't expect people to spoon feed you... this is not what the forums are for.
    Have a bit of respect for the job you do and dedicate a few minutes to educate yourself before posting.
    Regards
    Juan

  • Give me some brief introduction on ABAP

    Hi all
    Give me some brief introduction on ABAP

    Hi
    Welcome to SDN
    ABAP is one of many application-specific fourth-generation languages (4GLs) first developed in the 1980s. It was originally the report language for SAP R/2, a platform that enabled large corporations to build mainframe business applications for materials management and financial and management accounting. ABAP used to be an abbreviation of Allgemeiner Berichtsaufbereitungsprozessor, the German meaning of "generic report preparation processor", but was later renamed to Advanced Business Application Programming. ABAP was one of the first languages to include the concept of Logical Databases (LDBs), which provides a high level of abstraction from the basic database level.
    The ABAP programming language was originally used by SAP developers to develop the SAP R/3 platform. It was also intended to be used by SAP customers to enhance SAP applications – customers can develop custom reports and interfaces with ABAP programming. The language is fairly easy to learn for programmers but it is not a tool for direct use by non-programmers. Good programming skills, including knowledge of relational database design and preferably also of object-oriented concepts, are required to create ABAP programs.
    ABAP remains the language for creating programs for the client-server R/3 system, which SAP first released in 1992. As computer hardware evolved through the 1990s, more and more of SAP's applications and systems were written in ABAP. By 2001, all but the most basic functions were written in ABAP. In 1999, SAP released an object-oriented extension to ABAP called ABAP Objects, along with R/3 release 4.6.
    SAP's most recent development platform, NetWeaver, supports both ABAP and Java.
    Implementation
    Where does the ABAP Program Run?
    All ABAP programs reside inside the SAP database. They are not stored in separate external files like Java or C++ programs. In the database all ABAP code exists in two forms: source code, which can be viewed and edited with the ABAP workbench, and "compiled" code ("generated" code is the more correct technical term), which is loaded and interpreted by the ABAP runtime system. Code generation happens implicitly when a unit of ABAP code is first invoked. If the source code is changed later or if one of the data objects accessed by the program has changed (e.g. fields were added to a database table), then the code is automatically regenerated.
    ABAP programs run in the SAP application server, under control of the runtime system, which is part of the SAP kernel. The runtime system is responsible for processing ABAP statements, controlling the flow logic of screens and responding to events (such as a user clicking on a screen button). A key component of the ABAP runtime system is the Database Interface, which turns database-independent ABAP statements ("Open SQL") into statements understood by the underlying DBMS ("Native SQL"). The database interface handles all the communication with the relational database on behalf of ABAP programs; it also contains extra features such as buffering of frequently accessed data in the local memory of the application server.
    Basis
    Basis sits between ABAP/4 and Operating system.Basis is like an operating system for R/3. It sits between the ABAP/4 code and the computer's operating system. SAP likes to call it middleware because it sits in the middle, between ABAP/4 and the operating system. Basis sits between ABAP/4 and the operating system. ABAP/4 cannot run directly on an operating system. It requires a set of programs (collectively called Basis) to load, interpret, and buffer its input and output. Basis, in some respects, is like the Windows environment. Windows starts up, and while running it provides an environment in which Windows programs can run. Without Windows, programs written for the Windows environment cannot run. Basis is to ABAP/4 programs as Windows is to Windows programs. Basis provides the runtime environment for ABAP/4 programs. Without Basis, ABAP/4 programs cannot run. When the operator starts up R/3, you can think of him as starting up Basis. Basis is a collection of R/3 system programs that present you with an interface. Using this interface the user can start ABAP/4 programs. To install Basis, an installer runs the program r3inst at the command-prompt level of the operating system. Like most installs, this creates a directory structure and copies a set of executables into it. These executables taken together as a unit form Basis.
    To start up the R/3 system, the operator enters the startsap command. The Basis executables start up and stay running, accepting requests from the user to run ABAP/4 programs.
    ABAP/4 programs run within the protective Basis environment; they are not executables that run on the operating system. Instead, Basis reads ABAP/4 code and interprets it into operating system instructions. ABAP/4 programs do not access operating system functions directly. Instead, they use Basis functions to perform file I/O and display data in windows. This level of isolation from the operating system enables ABAP/4 programs to be ported without modification to any system that supports R/3. This buffering is built right into the ABAP/4 language itself and is actually totally transparent to the programmer.
    Basis makes ABAP/4 programs portable. The platforms that R/3 can run on are shown in Table. For example, if you write an ABAP/4 program on Digital UNIX with an Informix database and an OSF/Motif interface, that same program should run without modification on a Windows NT machine with an Oracle database and a Windows 95 interface. Or, it could run on an AS/400 with a DB2 database using OS/2 as the front-end.
    SAP also provides a suite of tools for administering the Basis system. These tools perform tasks such as system performance monitoring, configuration, and system maintenance. To access the Basis administration tools from the main menu, choose the path Tools->Administration.
    Platforms and Databases Supported by R/3
    Operating Systems Supported Hardware Supported Front-Ends Supported Databases
    AIX SINIX IBM SNI SUN Win 3.1/95/NT DB2 for AIX
    SOLARIS HP-UX Digital HP OSF/Motif Informix-Online
    Digital-UNIX Bull OS/2 Oracle 7.1
    Windows NT AT&T Compaq Win 3.1/95/NT Oracle 7.1
    Bull/Zenith OSF/Motif SQL Server 6.0
    HP (Intel) SNI OS/2 ADABAS D
    OS/400 AS/400 Win95 OS/2 DB2/400
    SAP Systems and Landscapes
    All SAP data exists and all SAP software runs in the context of an SAP system. A system consists of a central relational database and one or more application servers ("instances") accessing the data and programs in this database. A SAP system contains at least one instance but may contain more, mostly for reasons of sizing and performance. In a system with multiple instances, load balancing mechanisms ensure that the load is spread evenly over the available application servers.
    Installations of the Web Application Server (landscapes) typically consist of three systems: one for development, one for testing and quality assurance, and one for production. The landscape may contain more systems, e.g. separate systems for unit testing and pre-production testing, or it may contain fewer, e.g. only development and production, without separate QA; nevertheless three is the most common configuration. ABAP programs are created and undergo first testing in the development system. Afterwards they are distributed to the other systems in the landscape. These actions take place under control of the Change and Transport System (CTS), which is responsible for concurrency control (e.g. preventing two developers from changing the same code at the same time), version management and deployment of programs on the QA and production systems.
    The Web Application Server consists of three layers: the database layer, the application layer and the presentation layer. These layers may run on the same or on different physical machines. The database layer contains the relational database and the database software. The application layer contains the instance or instances of the system. All application processes, including the business transactions and the ABAP development, run on the application layer. The presentation layer handles the interaction with users of the system. Online access to ABAP application servers can go via a proprietary graphical interface, the SAPGUI, or via a Web browser.
    Transactions
    We call an execution of an ABAP program using a transaction code a transaction. There are dialog, report, parameter, variant, and as of release 6.10, OO transactions. A transaction is started by entering the transaction code in the input field on the standard toolbar, or by means of the ABAP statements CALL TRANSACTION or LEAVE TO TRANSACTION. Transaction codes can also be linked to screen elements or menu entries. Selecting such an element will start the transaction.
    A transaction code is simply a twenty-character name connected with a Dynpro, another transaction code, or, as of release 6.10, a method of an ABAP program. Transaction codes linked with Dynpros are possible for executable programs, module pools, and function groups. Parameter transactions and variant transactions are linked with other transaction codes. Transaction codes that are linked with methods are allowed for all program types that can contain methods. Transaction codes are maintained in transaction SE93.
    So, a transaction is nothing more than the SAP way of program execution—but why is it called “transaction”? ABAP is a language for business applications and the most important features of business applications were and still are are transactions. Since in the early days of SAP, the execution of a program often meant the same thing as carrying out a business transaction, the terms transaction and transaction code were chosen for program execution. But never mix up the technical meaning of a transaction with business transactions. For business transactions, it is the term LUW (Logical Unit of Work) that counts. And during one transaction (program execution), there can be many different LUW’s.
    Let’s have a look at the different kind of transactions:
    Dialog Transaction
    These are the most common kind of transactions. The transaction code of a dialog transaction is linked to a Dynpro of an ABAP program. When the transaction is called, the respective program is loaded and the Dynpro is called. Therefore, a dialog transaction calls a Dynpro sequence rather than a program. Only during the execution of the Dynpro flow logic are the dialog modules of the ABAP program itself are called. The program flow can differ from execution to execution. You can even assign different dialog transaction codes to one program.
    Parameter Transaction
    In the definition of a parameter transaction code, a dialog transaction is linked with parameters. When you call a parameter transaction, the input fields of the initial Dynpro screen of the dialog transaction are filled with parameters. The display of the initial screen can be inhibited by specifying all mandatory input fields as parameters of the transaction.
    Variant Transaction
    In the definition of a variant transaction code, a dialog transaction is linked with a transaction variant. When a variant transaction is accessed, the dialog transaction is called and executed with the transaction variant. In transaction variants, you can assign default values to the input fields on several Dynpro screens in a transaction, change the attributes of screen elements, and hide entire screens. Transaction variants are maintained in transaction SHD0.
    Report Transaction
    A report transaction is the transaction code wrapping for starting the reporting process. The transaction code of a report transaction must be linked with the selection screen of an executable program. When you execute a report transaction, the runtime environment internally executes the ABAP statement SUBMIT—more to come on that.
    OO Transaction
    A new kind of transaction as of release 6.10. The transaction code of an OO transaction is linked with a method of a local or global class. When the transaction is called, the corresponding program is loaded, for instance methods an object of the class is generated and the method is executed.
    Types of ABAP programs
    In ABAP, there are two different types of programs:
    Report programs(Executable pools)
    A Sample ReportReport programs AKA Executable pools follow a relatively simple programming model whereby a user optionally enters a set of parameters (e.g. a selection over a subset of data) and the program then uses the input parameters to produce a report in the form of an interactive list. The output from the report program is interactive because it is not a passive display; instead it enables the user, through ABAP language constructs, to obtain a more detailed view on specific data records via drill-down functions, or to invoke further processing through menu commands, for instance to sort the data in a different way or to filter the data according to selection criteria. This method of presenting reports has great advantages for users who must deal with large quantities of information and must also have the ability to examine this information in highly flexible ways, without being constrained by the rigid formatting or unmanageable size of "listing-like" reports. The ease with which such interactive reports can be developed is one of the most striking features of the ABAP language.
    The term "report" is somewhat misleading in the sense that it is also possible to create report programs that modify the data in the underlying database instead of simply reading it.
    A customized screen created using Screen Painter,which is one of the tool available in ABAP workbench(T-code = SE51).
    Online programs
    Online programs (also called module pools) do not produce lists. These programs define more complex patterns of user interaction using a collection of screens. The term “screen” refers to the actual, physical image that the users sees. Each screen also has a “flow logic”; this refers to the ABAP code invoked by the screens, i.e. the logic that initializes screens, responds to a user’s requests and controls the sequence between the screens of a module pool. Each screen has its own Flow Logic, which is divided into a "PBO" (Process Before Output) and "PAI" (Process After Input) section. In SAP documentation the term “dynpro” (dynamic program) refers to the combination of the screen and its Flow Logic.
    Online programs are not invoked directly by their name, but are associated with a transaction code. Users can then invoke them through customizable, role-dependent, transaction menus.
    Apart from reports and online programs, it is also possible to develop sharable code units such as class libraries, function libraries and subroutine pools.
    Subroutine Pools
    Subroutine pools, as the name implies, were created to contain selections of subroutines that can be called externally from other programs. Before release 6.10, this was the only way subroutine pools could be used. But besides subroutines, subroutine pools can also contain local classes and interfaces. As of release 6.10, you can connect transaction codes to methods. Therefore, you can now also call subroutine pools via transaction codes. This is the closest to a Java program you can get in ABAP: a subroutine pool with a class containing a method – say – main connected to a transaction code!
    Type Pools
    Type pools are the precursors to general type definitions in the ABAP Dictionary. Before release 4.0, only elementary data types and flat structures could be defined in the ABAP Dictionary. All other types that should’ve been generally available had to be defined with TYPES in type pools. As of release 4.0, type pools were only necessary for constants. As of release 6.40, constants can be declared in the public sections of global classes and type pools can be replaced by global classes.
    Class Pools
    Class pools serve as containers for exactly one global class. Besides the global class, they can contain global types and local classes/interfaces to be used in the global class. A class pool is loaded into memory by using one of its components. For example, a public method can be called from any ABAP program or via a transaction code connected to the method. You maintain class pools in the class builder.
    Interface Pools
    Interface pools serve as containers for exactly one global interface—nothing more and nothing less. You use an interface pool by implementing its interface in classes and by creating reference variables with the type of its interface. You maintain interface pools in the class builder.
    ABAP Workbench
    The ABAP Workbench contains different tools for editing Repository objects. These tools provide you with a wide range of assistance that covers the entire software development cycle. The most important tools for creating and editing Repository objects are:
    ABAP Editor for writing and editing program code
    ABAP Dictionary for processing database table definitions and retrieving global types
    Menu Painter for designing the user interface (menu bar, standard toolbar, application toolbar, function key assignment)
    Screen Painter for designing screens (dynamic programs) for user dialogs
    Function Builder for displaying and processing function modules (routines with defined interfaces that are available throughout the system)
    Class Builder for displaying and processing ABAP Objects classes
    The ABAP Dictionary
    Enforces data integrity
    Manages data definitions without redundancy
    Is tightly integrated with the rest of the ABAP/4 Development Workbench.
    Enforcing data integrity is the process of ensuring that data entered into the system is logical, complete, and consistent. When data integrity rules are defined in the ABAP/4 Dictionary, the system automatically prevents the entry of invalid data. Defining the data integrity rules at the dictionary level means they only have to be defined once, rather than in each program that accesses that data.
    The following are examples of data lacking integrity:
    A date field with a month value of 13
    An order assigned to a customer number that doesn’t exist
    An order not assigned to a customer
    Managing data definitions without redundancy is the process of linking similar information to the same data definition. For example, a customer database is likely to contain a customer’s ID number in several places. The ABAP Dictionary provides the capability of defining the characteristics of a customer ID number in only one place. That central definition then can be used for each instance of a customer ID number.
    The ABAP Dictionary’s integration with the rest of the development environment enables ABAP programs to automatically recognize the names and characteristics of dictionary objects.
    Additionally, the system provides easy navigation between development objects and dictionary definitions. For example, as a programmer, you can double-click on the name of a dictionary object in your program code, and the system will take you directly to the definition of that object in the ABAP/4 Dictionary.
    When a dictionary object is changed, a program that references the changed object will automatically reference the new version the next time the program runs. Because ABAP is interpreted, it is not necessary to recompile programs that reference changed dictionary objects.
    ABAP Syntax
    The syntax of the ABAP programming language consists of the following elements:
    Statements
    An ABAP program consists of individual ABAP statements. Each statement begins with a keyword and ends with a period.
    "Hello World" PROGRAM
    WRITE 'Hello World'.
    This example contains two statements, one on each line. The keywords are PROGRAM and WRITE. The program displays a list on the screen. In this case, the list consists of the line "My First Program".
    The keyword determines the category of the statement. For an overview of the different categories, refer to ABAP Statements.
    Formatting ABAP Statements
    ABAP has no format restrictions. You can enter statements in any format, so a statement can be indented, you can write several statements on one line, or spread a single statement over several lines.
    You must separate words within a statement with at least one space. The system also interprets the end of line marker as a space.
    The program fragment
    PROGRAM TEST.
    WRITE 'This is a statement'.
    could also be written as follows:
    PROGRAM TEST. WRITE 'This is a statement'.
    or as follows:
    PROGRAM
    TEST.
    WRITE
    'This is a statement'.
    Use this free formatting to make your programs easier to understand.
    Special Case: Text Literals
    Text literals are sequences of alphanumeric characters in the program code that are enclosed in quotation marks. If a text literal in an ABAP statement extends across more than one line, the following difficulties can occur:
    All spaces between the quotation marks are interpreted as belonging to the text literal. Letters in text literals in a line that is not concluded with quotation marks are interpreted by the editor as uppercase. If you want to enter text literals that do not fit into a single line, you can use the ‘&’ character to combine a succession of text literals into a single one.
    The program fragment
    PROGRAM TEST.
    WRITE 'This
    is
    a statement'.
    inserts all spaces between the quotation marks into the literal, and converts the letters to uppercase.
    This program fragment
    PROGRAM TEST.
    WRITE 'This' &
    ' is ' &
    'a statement'.
    combines three text literals into one.
    Chained Statements
    The ABAP programming language allows you to concatenate consecutive statements with an identical first part into a chain statement.
    To concatenate a sequence of separate statements, write the identical part only once and place a colon ( after it. After the colon, write the remaining parts of the individual statements, separating them with commas. Ensure that you place a period (.) after the last part to inform the system where the chain ends.
    Statement sequence:
    WRITE SPFLI-CITYFROM.
    WRITE SPFLI-CITYTO.
    WRITE SPFLI-AIRPTO.
    Chain statement:
    WRITE: SPFLI-CITYFROM, SPFLI-CITYTO, SPFLI-AIRPTO.
    In the chain, a colon separates the beginning of the statement from the variable parts. After the colon or commas, you can insert any number of spaces.
    You could, for example, write the same statement like this:
    WRITE: SPFLI-CITYFROM,
    SPFLI-CITYTO,
    SPFLI-AIRPTO.
    In a chain statement, the first part (before the colon) is not limited to the keyword of the statements.
    Statement sequence:
    SUM = SUM + 1.
    SUM = SUM + 2.
    SUM = SUM + 3.
    SUM = SUM + 4.
    Chain statement:
    SUM = SUM + : 1, 2, 3, 4.
    Comments
    Comments are texts that you can write between the statements of your ABAP program to explain their purpose to a reader. Comments are distinguished by the preceding signs * (at the beginning of a line) and " (at any position in a line). If you want the entire line to be a comment, enter an asterisk (*) at the beginning of the line. The system then ignores the entire line when it generates the program. If you want part of a line to be a comment, enter a double quotation mark (") before the comment. The system interprets comments indicated by double quotation marks as spaces.
    PROGRAM SAPMTEST *
    WRITTEN BY KARL BYTE, 06/27/1995 *
    LAST CHANGED BY RITA DIGIT, 10/01/1995 *
    TASK: DEMONSTRATION *
    PROGRAM SAPMTEST.
    DECLARATIONS *
    DATA: FLAG " GLOBAL FLAG
    NUMBER TYPE I " COUNTER
    PROCESSING BLOCKS *
    Advantages of ABAP over Contemporary languages
    ABAP OBJECTS
    Object orientation in ABAP is an extension of the ABAP language that makes available the advantages of object-oriented programming, such as encapsulation, interfaces, and inheritance. This helps to simplify applications and make them more controllable.
    ABAP Objects is fully compatible with the existing language, so you can use existing statements and modularization units in programs that use ABAP Objects, and can also use ABAP Objects in existing ABAP programs.
    ABAP Statements – an Overview
    The first element of an ABAP statement is the ABAP keyword. This determines the category of the statement. The different statement categories are as follows:
    Declarative Statements
    These statements define data types or declare data objects which are used by the other statements in a program or routine. The collected declarative statements in a program or routine make up its declaration part.
    Examples of declarative keywords:
    TYPES, DATA, TABLES
    Modularization Statements
    These statements define the processing blocks in an ABAP program.
    The modularization keywords can be further divided into:
    · Defining keywords
    You use statements containing these keywords to define subroutines, function modules, dialog modules and methods. You conclude these processing blocks using the END statements.
    Examples of definitive keywords:
    METHOD ... ENDMETHOD, FUNCTION ... ENDFUNCTION, MODULE ... ENDMODULE.
    · Event keywords
    You use statements containing these keywords to define event blocks. There are no special statements to conclude processing blocks - they end when the next processing block is introduced.
    Examples of event key words:
    AT SELECTION SCREEN, START-OF-SELECTION, AT USER-COMMAND
    Control Statements
    You use these statements to control the flow of an ABAP program within a processing block according to certain conditions.
    Examples of control keywords:
    IF, WHILE, CASE
    Call Statements
    You use these statements to call processing blocks that you have already defined using modularization statements. The blocks you call can either be in the same ABAP program or in a different program.
    Examples of call keywords:
    CALL METHOD, CALL TRANSACTION, SUBMIT, LEAVE TO
    Operational Statements These keywords process the data that you have defined using declarative statements.
    Examples of operational keywords:
    MOVE, ADD
    Unique Concept of Internal Table in ABAP
    Internal tables provide a means of taking data from a fixed structure and storing it in working memory in ABAP. The data is stored line by line in memory, and each line has the same structure. In ABAP, internal tables fulfill the function of arrays. Since they are dynamic data objects, they save the programmer the task of dynamic memory management in his or her programs. You should use internal tables whenever you want to process a dataset with a fixed structure within a program. A particularly important use for internal tables is for storing and formatting data from a database table within a program. They are also a good way of including very complicated data structures in an ABAP program.
    Like all elements in the ABAP type concept, internal tables can exist both as data types and as data objects A data type is the abstract description of an internal table, either in a program or centrally in the ABAP Dictionary, that you use to create a concrete data object. The data type is also an attribute of an existing data object.
    Internal Tables as Data Types
    Internal tables and structures are the two structured data types in ABAP. The data type of an internal table is fully specified by its line type, key, and table type.
    Line type
    The line type of an internal table can be any data type. The data type of an internal table is normally a structure. Each component of the structure is a column in the internal table. However, the line type may also be elementary or another internal table.
    Key
    The key identifies table rows. There are two kinds of key for internal tables - the standard key and a user-defined key. You can specify whether the key should be UNIQUE or NON-UNIQUE. Internal tables with a unique key cannot contain duplicate entries. The uniqueness depends on the table access method.
    If a table has a structured line type, its default key consists of all of its non-numerical columns that are not references or themselves internal tables. If a table has an elementary line type, the default key is the entire line. The default key of an internal table whose line type is an internal table, the default key is empty.
    The user-defined key can contain any columns of the internal table that are not references or themselves internal tables. Internal tables with a user-defined key are called key tables. When you define the key, the sequence of the key fields is significant. You should remember this, for example, if you intend to sort the table according to the key.
    Table type
    The table type determines how ABAP will access individual table entries. Internal tables can be divided into three types:
    Standard tables have an internal linear index. From a particular size upwards, the indexes of internal tables are administered as trees. In this case, the index administration overhead increases in logarithmic and not linear relation to the number of lines. The system can access records either by using the table index or the key. The response time for key access is proportional to the number of entries in the table. The key of a standard table is always non-unique. You cannot specify a unique key. This means that standard tables can always be filled very quickly, since the system does not have to check whether there are already existing entries.
    Sorted tables are always saved sorted by the key. They also have an internal index. The system can access records either by using the table index or the key. The response time for key access is logarithmically proportional to the number of table entries, since the system uses a binary search. The key of a sorted table can be either unique or non-unique. When you define the table, you must specify whether the key is to be unique or not. Standard tables and sorted tables are known generically as index tables.
    Hashed tables have no linear index. You can only access a hashed table using its key. The response time is independent of the number of table entries, and is constant, since the system access the table entries using a hash algorithm. The key of a hashed table must be unique. When you define the table, you must specify the key as UNIQUE.
    Generic Internal Tables
    Unlike other local data types in programs, you do not have to specify the data type of an internal table fully. Instead, you can specify a generic construction, that is, the key or key and line type of an internal table data type may remain unspecified. You can use generic internal tables to specify the types of field symbols and the interface parameters of procedures . You cannot use them to declare data objects.
    Internal Tables as Dynamic Data Objects
    Data objects that are defined either with the data type of an internal table, or directly as an internal table, are always fully defined in respect of their line type, key and access method. However, the number of lines is not fixed. Thus internal tables are dynamic data objects, since they can contain any number of lines of a particular type. The only restriction on the number of lines an internal table may contain are the limits of your system installation. The maximum memory that can be occupied by an internal table (including its internal administration) is 2 gigabytes. A more realistic figure is up to 500 megabytes. An additional restriction for hashed tables is that they may not contain more than 2 million entries. The line types of internal tables can be any ABAP data types - elementary, structured, or internal tables. The individual lines of an internal table are called table lines or table entries. Each component of a structured line is called a column in the internal table.
    Choosing a Table Type
    The table type (and particularly the access method) that you will use depends on how the typical internal table operations will be most frequently executed.
    Standard tables
    This is the most appropriate type if you are going to address the individual table entries using the index. Index access is the quickest possible access. You should fill a standard table by appending lines (ABAP APPEND statement), and read, modify and delete entries by specifying the index (INDEX option with the relevant ABAP command). The access time for a standard table increases in a linear relationship with the number of table entries. If you need key access, standard tables are particularly useful if you can fill and process the table in separate steps. For example, you could fill the table by appending entries, and then sort it. If you use the binary search option with key access, the response time is logarithmically proportional to the number of table entries.
    Sorted tables
    This is the most appropriate type if you need a table which is sorted as you fill it. You fill sorted tables using the INSERT statement. Entries are inserted according to the sort sequence defined through the table key. Any illegal entries are recognized as soon as you try to add them to the table. The response time for key access is logarithmically proportional to the number of table entries, since the system always uses a binary search. Sorted tables are particularly useful for partially sequential processing in a LOOP if you specify the beginning of the table key in the WHERE condition.
    Hashed tables
    This is the most appropriate type for any table where the main operation is key access. You cannot access a hashed table using its index. The response time for key access remains constant, regardless of the number of table entries. Like database tables, hashed tables always have a unique key. Hashed tables are useful if you want to construct and use an internal table which resembles a database table or for processing large amounts of data.
    Advanced Topics
    Batch Input: Concepts
    Processing Sessions
    The above figure shows how a batch input session works.A batch input session is a set of one or more calls to transactions along with the data to be processed by the transactions. The system normally executes the transactions in a session non-interactively, allowing rapid entry of bulk data into an R/3 System.
    A session records transactions and data in a special format that can be interpreted by the R/3 System. When the System reads a session, it uses the data in the session to simulate on-line entry of transactions and data. The System can call transactions and enter data using most of the facilities that are available to interactive users.
    For example, the data that a session enters into transaction screens is subject to the same consistency checking as in normal interactive operation. Further, batch input sessions are subject to the user-based authorization checking that is performed by the system.
    Advantages of ABAP over Contemporary languages
    ABAP Objects offers a number of advantages, even if you want to continue using procedural programming. If you want to use new ABAP features, you have to use object-oriented interfaces anyway.
    Sharing Data: With ABAP shared objects, you can aggregate data once at a central location and the different users and programs can then access this data without the need for copying.
    Exception Handling: With the class-based exception concept of ABAP, you can define a special control flow for a specific error situation and provide the user with information about the error.
    Developing Persistency: For permanent storage of data in ABAP, you use relational database tables by means of database-independent Open SQL, which is integrated in ABAP. However, you can also store selected objects transparently or access the integrated database or other databases using proprietary SQL.
    Connectivity and Interoperability: The Exchange Infrastructure and Web services are the means by which developers can implement a service-oriented architecture. With Web services, you can provide and consume services independently of implementation or protocol. Furthermore, you can do so within NetWeaver and in the communication with other systems. With the features of the Exchange Infrastructure, you can enable, manage, and adapt integration scenarios between systems.
    Making Enhancements: With the Enhancement Framework, you can enhance programs, function modules, and global classes without modification as well as replace existing code. The Switch Framework enables you activate only specific development objects or enhancements in a system.
    Considerable Aspects
    It follows a list of aspects to be considered during development. The list of course is not complete.
    Dynpro persistence
    When implementing dynpros one has to care for himself to read out and persist the necessary fields. Recently it happened to me that I forgot to include a field into the UPDATE-clause which is an error not so easy to uncover if you have other problems to be solved in the same package. Here, tool-support or built-in mechanisms would help.
    The developer could help himself out by creating something like a document containing a cookbook or guide in which parts of a dynpro logic one has to care about persistence. With that at hand, it would be quite easy finding those bugs in short time. Maybe a report scanning for the definition of the dynpro fields to be persisted could scan the code automatically, too.
    Memory Cache
    It should be common-sense that avoiding select-statements onto the database helps reducing the server load. For that the programmer either can resort to function modules if available. This maybe is the case for important tables. Or the programmer needs to implement his own logic using internal tables. Here, the standard software package could provide the developer with a tool or a mechanism auto-generating memory cached tables resp. function modules implementing this.
    Sometimes buffering of database tables could be used, if applicable. But that would require an effort in customizing the system and could drain down system performance overall, especially if a table is involved that has a central role.
    Interfaces
    It should be noticed that some function modules available have an incomplete interface. That means, the interface does not include all parameters evaluated by the logic of the function module. For example, global variables from within the function group could be read out, which cannot be influenced by the general caller. Or memory parameters are used internally to feed the logic with further information.
    One workaround here would be copying the relevant parts of the logic to a newly created function module and then adapt it to the own context. This sometimes is possible, maybe if the copied code is not too lengthy and only a few or no calls to other logic is part of it.
    A modification of the SAP code could be considered, if the modification itself is unavoidable (or another solution would be not justifiable by estimated effort to spend on it) and if the location of the modification seems quite safe against future upgrades or hot fixes. The latter is something that could be evaluated by contacting the SAP hotline or working with OSS message (searching thru existing one, perhaps open a new one).
    Example
    'From SAP NetWeaver:'
    set an exclusive lock at level object-type & object-id
    IF NOT lf_bapi_error = true.
    IF ( NOT istourhd-doc_type IS INITIAL ) AND
    ( NOT istourhd-doc_id IS INITIAL )
    CALL FUNCTION 'ENQUEUE_/DSD/E_HH_RAREF'
    EXPORTING
    obj_typ = istourhd-doc_type
    obj_id = istourhd-doc_id
    EXCEPTIONS
    foreign_lock = 1
    system_failure = 2
    OTHERS = 3.
    IF sy-subrc <> 0.
    terminate processing...
    lf_bapi_error = true.—
    ...and add message to return table
    PERFORM set_msg_to_bapiret2
    USING sy-msgid gc_abort sy-msgno
    sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4
    gc_istourhd gc_enqueue_refdoc space
    CHANGING lt_return.
    ENDIF.
    ENDIF.
    ENDIF. " bapi error
    Example Report(Type - ALV(Advanced List Viewer))
    REPORT Z_ALV_SIMPLE_EXAMPLE_WITH_ITAB .
    *Simple example to use ALV and to define the ALV data in an internal
    *table
    *data definition
    tables:
    marav. "Table MARA and table MAKT
    Data to be displayed in ALV
    Using the following syntax, REUSE_ALV_FIELDCATALOG_MERGE can auto-
    matically determine the fieldstructure from this source program
    Data:
    begin of imat occurs 100,
    matnr like marav-matnr, "Material number
    maktx like marav-maktx, "Material short text
    matkl like marav-matkl, "Material group (so you can test to make
    " intermediate sums)
    ntgew like marav-ntgew, "Net weight, numeric field (so you can test to
    "make sums)
    gewei like marav-gewei, "weight unit (just to be complete)
    end of imat.
    Other data needed
    field to store report name
    data i_repid like sy-repid.
    field to check table length
    data i_lines like sy-tabix.
    Data for ALV display
    TYPE-POOLS: SLIS.
    data int_fcat type SLIS_T_FIELDCAT_ALV.
    select-options:
    s_matnr for marav-matnr matchcode object MAT1.
    start-of-selection.
    read data into table imat
    select * from marav
    into corresponding fields of table imat
    where
    matnr in s_matnr.
    Check if material was found
    clear i_lines.
    describe table imat lines i_lines.
    if i_lines lt 1.
    Using hardcoded write here for easy upload
    write: /
    'No materials found.'.
    exit.
    endif.
    end-of-selection.
    To use ALV, we need a DDIC-structure or a thing called Fieldcatalogue.
    The fieldcatalouge can be generated by FUNCTION
    'REUSE_ALV_FIELDCATALOG_MERGE' from an internal table from any
    report source, including this report.
    Store report name
    i_repid = sy-repid.
    Create Fieldcatalogue from internal table
    CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
    EXPORTING
    I_PROGRAM_NAME = i_repid
    I_INTERNAL_TABNAME = 'IMAT' "capital letters!
    I_INCLNAME = i_repid
    CHANGING
    CT_FIELDCAT = int_fcat
    EXCEPTIONS
    INCONSISTENT_INTERFACE = 1
    PROGRAM_ERROR = 2
    OTHERS = 3.
    *explanations:
    I_PROGRAM_NAME is the program which calls this function
    I_INTERNAL_TABNAME is the name of the internal table which you want
    to display in ALV
    I_INCLNAME is the ABAP-source where the internal table is defined
    (DATA....)
    CT_FIELDCAT contains the Fieldcatalouge that we need later for
    ALV display
    IF SY-SUBRC <> 0.
    write: /
    'Returncode',
    sy-subrc,
    'from FUNCTION REUSE_ALV_FIELDCATALOG_MERGE'.
    ENDIF.
    *This was the fieldcatlogue
    Call for ALV list display
    CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
    EXPORTING
    I_CALLBACK_PROGRAM = i_repid
    IT_FIELDCAT = int_fcat
    TABLES
    T_OUTTAB = imat
    EXCEPTIONS
    PROGRAM_ERROR = 1
    OTHERS = 2.
    *explanations:
    I_CALLBACK_PROGRAM is the program which calls this function
    IT_FIELDCAT (just made by REUSE_ALV_FIELDCATALOG_MERGE) contains
    now the data definition needed for display
    I_SAVE allows the user to save his own layouts
    T_OUTTAB contains the data to be displayed in ALV
    IF SY-SUBRC <> 0.
    write: /
    'Returncode',
    sy-subrc,
    'from FUNCTION REUSE_ALV_LIST_DISPLAY'.
    ENDIF.
    Reward points for useful Answers
    Regards
    Anji

  • Can you giv me a brief introduction regarding selection screen with one eg:

    Hello
    can you giv me a brief introduction regarding selection screen with one eg:

    Hi Ranjith,
    Selection Screens
    Selection screens are one of the three types of screen in the R/3 System, along with dialog screens and lists. You use them whenever you want the user to enter either a single value for a field or fields, or to enter selection criteria.
    Function
    ABAP programs use screens to obtain input from users. The most general type of screen is a dialog screen, which you create using the ABAP Workbench tools Screen Painter and Menu Painter These tools allow you to create screens for data input and output. However, each of these screens requires its own flow logic.
    Defining and Calling Selection Screens
    You often use screens purely for data input . In these cases, you can use a selection screen. Selection screens provide a standardized user interface in the R/3 System.  Users can enter both single values and complex selections.  Input parameters are primarily used to control the program flow, while users can enter selection criteria to restrict the amount of data read from the database. You can create and save predefined sets of input values in the ABAP Editor for any selection screen. These are called variants.  Texts on the selection screen are stored as language-specific selection texts in the program text elements.  If you start an executable report using the SUBMIT statement, the input fields of the selection screen also serve as a data interface.
    Defining and Calling Selection Screens
    You define selection screens using ABAP statements in a program.  Simple statements allow you to create input fields, checkboxes, and radio buttons, and design the screen layout.  If you want to create a screen exclusively for data input, you do not need to create it using the normal dialog programming tools. When you create a selection screen, the system automatically assumes the tasks of the Screen Painter and Menu Painter.
    The rules for calling and defining selection screens in ABAP programs depend on the program type:
    ·         Executable program (type 1) without logical database
    You can use a single standard selection screen and as many user-defined selection screens as you wish. The standard selection screen is called automatically when you start the program.  User-defined selection screens, on the other hand, are called using the CALL SELECTION-SCREEN statement in a program.  The standard selection screen always has the screen number 1000. User-defined selection screens can have any screen number except 1000.
    ·         Executable program (type 1) with logical database
    The standard selection screen for an executable program linked to a logical database is made up of the logical database selections and the program selections.
    ·         Module pools (type M) and function modules (type F)
    You can only use user-defined selection screens in module pools and function modules. These can have any number apart from 1000. You can only call a selection screen from a function module using the CALL SELECTION-SCREEN statement. You can also define selection screens as Subscreens and incorporate them in screens or tabstrip controls.
    Hope this is useful.
    regards
    Ram
    Message was edited by:
            Ramanujan Chitrakootam

  • A brief introductions to the intricacies of Archlinux

    _JeffG_ 's post gave me an idea to start this... i know the developers are busy, so I figured we could start a thread here with the intricasies of how ArchLinux is set up. For example; I've spont a lot of time in /etc/ so here's what I've found out:
    /etc/pacman.conf
    Repositories
    This is the configuration file for pacman. the package manager for achlinux.
    As per default you can only access packages in the 'official' repository.  To gain access to the multitude of packages available in the unofficial repository look around line 48, there will be a section that looks like:
    # Uncomment this block to access the 'unofficial' package set
    [unofficial]
    #Server = ftp://ftp.ibiblio.org/pub/linux/distributions/archlinux/unofficial
    #Server = ftp://ftp.webtrek.com/pub/mirrors/archlinux/unofficial
    #Server = ftp://ftp.archlinux.org/unofficial
    #Server = ftp://ftp.mpi-sb.mpg.de/pub/linux/mirror/ftp.ibiblio.org/pub/Linux/distributions/archlinux/unofficial
    #Server = ftp://ftp.oit.unc.edu/pub/Linux/distributions/archlinux/unofficial
    #Server = ftp://ftp.tu-chemnitz.de/pub/linux/sunsite.unc-mirror/distributions/archlinux/unofficial
    #Server = ftp://ftp.parrswood.net/Mirrors/ftp.archlinux.org/unofficial
    #Server = ftp://gd.tuwien.ac.at/opsys/linux/archlinux/unofficial
    #Server = ftp://saule.mintis.lt/pub/linux/unofficial
    #Server = ftp://ftp.rez-gif.supelec.fr/pub/Linux/distrib/archlinux/unofficial
    Uncomment (remove the # marks) that section to gain access to the unofficial repository.
    Note: there are also 'stable' and 'unstable' repositories as well, read the short documentation in the file for information on those.
    Also Note: User-created packages are available at ftp://ftp.archlinux.org/incoming/.  It is common practice to post here: http://bbs.archlinux.org/viewforum.php?f=25 when a new package is submitted.
    Options
    At the beginning of the /etc/pacman.conf file is the options section, which by default looks like:
    # GENERAL OPTIONS
    [options]
    NoUpgrade = etc/passwd etc/group etc/shadow
    NoUpgrade = etc/fstab etc/rc.conf etc/rc.local
    NoUpgrade = etc/lilo.conf etc/raidtab
    #IgnorePkg = lilo gcc
    It is in this section we can setup a few more options for pacman.  Here is a list of currenty available options:
      DBPath = /path/to/db/dir
             Overrides the default location of the toplevel  database  direc-tory.  The default is /var/lib/pacman.
       IgnorePkg = <package> [package] ...
              Instructs  pacman  to  ignore any upgrades for this package when performing a --sysupgrade.
       NoPassiveFtp
              Disables passive ftp connections when downloading packages. (aka Active Mode)
       NoUpgrade = <file> [file] ...
              All  files  listed  with  a  NoUpgrade  directive  will never be touched during a package install/upgrade.  Note: do not  include the leading slash when specifying files.
    NoUpgrade is what you would use for system critical config files and whatnot.
    How pacman deals with config files
    This is my understanding from experience (and the manpage) with how pacman will handle config files under different cases.
    1) Removing a package
    Pacman creates a backup of the config file with a .pacsave extension.  For example, when i installed metalog and removed syslog, pacman moved /etc/syslog.conf to /etc/syslog.conf.pacsave
    2) Upgrading a package (heres the tricky part)
    pacman uses creates three md5sums to figure out what to do.
    md5sum #1 = original config file in the original package installed before the upgrade
    md5sum #2 = current config file thats actually in use by the system
    md5sum #3 = new config file with the updated package that is not yet installed
    if original == current == new (e.g. all files are the same) then the new one is isntalled
    if (original == current) != new (e.g. original config was not changed, but the new one is different) then install the new one, for it might have new features, bugfixes, etc.
    if (original == new) != current (e.g. the default config file has not changed between the original and new packages, but the user has modified their config) then do nothing (to preserve the users settings)
    if (original != current) && (current != new) && (original != new)   (e.g. all config files are  different) then create a .pacsave of the current and install the new one
    That's all i have to say for tonight.  Maybe tomorrow I'll write something about understanding the startup scripts.

    allright... maybe im not done
    How to set up the correct timezone
    Allright, I like my computer in UTC (even though im in EST/EDT) but some people don't like having to deal with offsets, so here's how to fix it.
    1st step:
    determine what time your hardware clock is.
    easiest method to do this is enter your bios setup and look at the time displayed.  If it's the same as your local time, remember that.  If it isn't figure out if it's UTC from your UTC offset, for instance EST is UTC -500... (EDT is -400... daylight savings).   If that isn't possible, or it's incorrect, just set the clock to your local time.
    2nd step:
    edit /etc/rc.conf on line 12
    this lets the system know how your hardware clock is set up enter "UTC" or "localtime" as per the results of step one
    move to line 11
    now you choose your timezone
    look in /usr/share/zoneinfo/ for your timezone
    when setting this i prefer to use the subdir system: e.g. EST/EDT is America/New_York, etc
    remember what you finally decided on
    3rd step
    make a symlink from /etc/localtime to the zonefile you chose in step 2

  • I am new to J2EE. Need your help

    Hi, everyone,
    I am a new guy to J2EE.
    I have done some readings for J2EE by myself.
    But as its structure is so complex such that I am getting more and more confuse about it, feel like I am walking in the dark and never find a way out.
    Could anyone please tell me what book or reading resources I should read to learn J2EE? I am looking for a book which can give me a glance and clear introduction to J2EE and hence I can find which direction I should follow on. If the book has a lot of explanations with graphs, patterns, diagrams will be better.
    I appreciate any suggestions from you.
    Thank you very much.

    Hi,
    I share the same sentiment. I too am currently in the process of learning and understanding J2EE. I've read books and tutorials about it and like all other newbies, have that feeling of vagueness and not really grasping the concept yet.
    But later on I realized that the best way for me to know J2EE is to see the big picture first. It's like if you're in a new place, the best thing to do is to look at its map so you can see the whole picture, rather than working on one street after the next. Then after you've seen the whole picture, you can set divisions or areas to work on. Later on you'll understand how they relate to each other.
    With J2EE, I tried following the chapters of books starting from Servlets, JSP, to JSF... just getting more tired and wondering how long will it take for me to learn J2EE. I know patience is a virtue but there is also the concept of working smart vs. working hard. So I tried to get some overviews of J2EE first. Understanding that it is all about 3-tier architecture - Client, Server, Database. That's it. Each of those subjects you read from those books belong to one of them, client, server, database. So you can categorize the subjects and plan out what to learn first. And later on you'll be able to make your first simple project run and understand more and more concepts. You'll understand it's strengths and why it's a good technology.
    I know I'm not an expert to be in the authority to teach about j2ee but I just wanna share things from a beginner's eye. Hope this helps.

  • Basic MIB and SNMP understanding using JMX

    Hello
    i am trying to get my head around SNMP using JMX, but i am finding it dificult to know where to start.
    ideally i would love to find some basic code and go through it, so that i can understand it.
    i would love to find some code which just "Gets" one parameter from a mib stored on a seperate PC and displays it on another PC.
    I have looked at advent - to complex for what i want.
    Any help or suggestions - or possibly Code!! would be appreciated.
    Thanks
    Norman

    There is an example code included in the upcoming book "JMX: Managing J2EE with Java Management Extensions" that shows how to retrieve a simple attribute value from an JMX SNMP Adaptor using the Sun JDMK and AdventNet SNMP toolkits. It's a brief introduction to SNMP integration but should get you started.
    http://www.amazon.com/exec/obidos/ASIN/0672322889/104-6670791-7933546
    Unfortunately you still have to wait a week or two to get it.
    Basically the examples show how you can generate the required MBeans from an SNMP MIB definition (in Sun's JDMK this is a tool called MibGen), then register the SNMP Adaptor to the MBean server and associate and register the MBeans that were generated from the MIB to the adaptor. You can then use an SNMP client to connect to the adaptor and manipulate the MBeans through SNMP.
    Hope this is of some help.
    -- Juha

  • ********* WHY EJB? WHEN EJB?? WHICH EJB? ************

    Hi
    Can anyone tell me clearly when do we really think of using ejb in our project ?? why should we use ejb??
    if there is a reason to use ejb's when should i think of session beans and entity beans.
    I would be very thankful if anyone gives me a detail explanation.
    i have gone thru the material but iam really confused.
    tks in advance.

    Following is a brief introduction to EJB that may clear some of your questions.
    Enterprise JavaBeans
    1.     Entity and Session Beans
    Entity Beans represent the data items that are the core of applications.
         Eg Customer, Order, orderItem or product
    Session Beans represent logical operations and usually operate on the entity beans.
         Eg OrderEntry, PaymentAuthorisation
    A session bean is typically the main bean that an application uses although the application might manipulate the entity beans directly. For example an application might create an Order entity bean and an OrderItem entity bean and initialize its values. It would then use the OrderEntry session bean to store the order.
    2.     Containers
    An EJB server may support several virtual servers, and these are referred to as containers. The term container in this context essentially means server.
    3.     Persistence
    Saving and retrieving entity beans is extremely important in an EJB application. EJB persistence comes in two flavors.
    Bean Managed persistence
    With Bean Managed Persistence each entity bean is responsible for saving itself and retrieving itself from the database. It must have methods to insert itself, update itself, read itself and other housekeeping methods.
    Container Managed Persistence
    With Container Managed Persistence the EJB container itself handles the beans persistence. This means that entity and session beans can be written to do business logic and the container handles the database operations.
    4.     Transactions
    Operations in a session bean take place within the scope of a transaction that is managed by the EJB container. An EJB container can be instructed what kind of transaction scope is needed for each session bean method, for example it can be indicated that a particular method is always begins a new transaction or that a method can only be called after a transaction has been started. Transaction housekeeping is left to the EJB container again letting the entity and session beans concentrate on the business logic.
    5.     Connection Pooling.
    The EJB container handles database connection pooling. The container need to be configured so it knows how to create a database connection and it will grab a connection automatically. If a CMP bean is used then you may never have to use the database connection directly. Even with BMP you don�t need to worry about getting a connection and returning it when your done. The EJB container handles this for you.
    6.     Object Pooling
    An EJB server can pool Enterprise JavaBeans. EJB setup can take a lot of time depending on the bean. For beans that are used frequently you can tell the EJB server to keep a pool of the beans handy because you wil need them often.
    7.     How it all fits together
    Enterprise JavaBeans, servlets and Java Server Pages are the three technologies that represent the core of J2EE because they function as servers. The other API�s JDBC, JNDI, RMI, CORBA, JTS, JCA, JAAS and xml help support EJB, servlets and jsp servers.
    With WEB application JSP and servlets interact with the browser and EJB concentrate on back end processing.

  • How to Connect My Printer to The Network

    My printer is LaserJet M1212nf.  According to the brief introduction I should connect the printer to the network first in order to enable its e-printing function.  I'm working at home.  I don't share information with other computers.  Does "network" mean my home internet?  Do I need to use either a cable or a USB to connect it to the home internet?  Or is there another way?  Once it is connected, how can I get an email address from HP for my printer?

    Hi,
    Your printer can be connected to your network to print but it's not an ePrint printer:
          http://www.shopping.hp.com/shopping/pdf/ce841a.pdf
    It has a LAN card, you can connect it to your network and print wirelessly (note: print wirelessly and ePrint are two different things).
         http://h10025.www1.hp.com/ewfrf/wc/document?cc=us&​lc=en&docname=c02272928
    Regards. 
    BH
    **Click the KUDOS thumb up on the left to say 'Thanks'**
    Make it easier for other people to find solutions by marking a Reply 'Accept as Solution' if it solves your problem.

  • Want to open another project from Quiz Results - can't get it to work.

    I have been trying to get my course to open another project (an instruction slide) after the user completes a quiz and it is not working. The course always closes after the quiz results. I have set the Project End Options and the Pass or Fail options to all open another project (the instruction slide), but instead, after the user clicks 'Continue' on the quiz results page, the course always closes. What could I be missing? (Am using Captivate 5.)

    Just finally getting my head above water and am able to respond and update. Yes, I was using a tool called RELOAD to update the imsmanifest file. Actually a great tool that I can recommend now that I worked out the kinks with Captivate. Please see this post for more information. http://www.caddicks.com/blog/2012/02/17/how-to-publish-a-multi-file-captivate-project-as-a -single-scorm-course/#comment-249711
    Here's a quick summary of how I ended up resolving this - I can't even remember all the different options I tried until I settled on this! I never resolved the issue with launching another project from the quiz results page, but found a workaround that works even better.
    The course starts with a brief introduction module. The 'Continue' button on the last slide is set to launch another project, which opens the course's 'main menu.'
    The 'main menu' project has several buttons that launch appropriate sub-topic projects.
    On the last slide of each of the 'sub-topic' projects has the 'Continue' button set to launch the 'main menu' again. Each of these had quiz questions, but feedback was set at the question level only - no quiz results page.
    The last option on the 'main menu' project was a 'Course Completion' button - which launches a project containing the final quiz. (NOTE: This was always the only project that had the "Show score at the end of the quiz" set to display under Preferences / Quiz / Settings. After a lot of hair-pulling, I realized that it wasn't necessary to open another project to accomplish what I wanted to do, which was return the user to some basic instructions before they retook the quiz.)Here is how the last project was set up.
    The first slide is a content slide with instructions for the quiz. When the user clicks the "Back" button from this slide, it will launch the 'main menu' project. 'Next' simply goes to the next slide.
    Slides 2-5 are quiz questions
    Slide 6 is the quiz results slide (turned on under Preferences / Quiz / Settings). Buttons are: Review Quiz and Continue.
    Slide 7 is a content slide with instructions on what to do next. This slide has a text button that I called "Retry" and under Properties / Reporting for the button the "Include in quiz" is NOT checked. The Retry button takes the user back to the first slide in the quiz.

  • Grainy photos in PrE 11 slideshow when burning to DVD. I have read numerous topics but still problem persists. Please help.

    Well, the title pretty much says it all. I have an issue concerning grainy pictures.
    First, let me give a brief introduction on what kind of project we are dealing with here. As I have been reading these forums for hours for the past days I already have a good understanding of what is of importance, so further details below.
    Introduction:
    Video editing started to become a real hobby. I learned to edit using Pinnacle studio, but the numerous bugs and flows forced me to try something else. Adobe to me is 'the real deal' and you only learn to use a program like PrE by just doing it! So for this project I thought I might give it a go:
    I am editing a video of my uncle's funeral. The funeral has been taped for grandchildren-yet-to-come. All (but one clip) has been filmed using the same camera. However, I do not have access to the camera and I am not the camera man. When music was played during the funeral, the camera was not rolling, so I added this music myself and put a slideshow (which was shown on the day itself) during the music.
    During the project I made several quick, medium quality renders to show my cousin (who's dad has passed away) the progress I was making. During these renders, I could not note any photo quality issues. Ofcourse also because of the low quality render settings.
    Anyway. When I finished editing I was pretty happy with the end result. My cousin approved so I decided to burn it onto a DVD so it could be further distributed to the rest of the family. Burning failed initially, but later after a reboot everything worked fine. Then I played to DVD on my TV and found out that the quality of the pictures used in the slideshows was horrible. I could not even recognise faces, it was that grainy!
    First. The 'specs':
    Camera used: Sony DCR55
    Project settings: PAL > Hard disk, flash memory camcorders > Widescreen 48kHz (I live in a PAL region: Netherlands)
    UNchecked: Force selected Project Settings on this project
    Then the photos part:
    All photos JPG
    So, onto the part of 'what I have already tried' (and failed, otherwise I would not have been typing this)
    What I have tried so far after reading dozens of discussions:
    1) Check if the DVD burner was not to blame. So I burned to a folder on my HDD. Similar result as to what I see on my TV when I burn it onto a DVD and play it.
    2) Recheck project settings. Everything seems OK to me. Also when I use right-click on the added clips to check whether settings are still OK. They are. Also for the pictures, which surprised me because the widescreen video clips use non-square pixels and the photos obviously don't. (Thumbs up for Adobe)
    3) Resize pictures to used resolution (720 x 576) before adding them. No improvement, exactly the same.
    4) Turn off 'scale to 'framesize'. No difference.
    Finally, I want to address the term 'quality'. Below you will find a scaled down image to the same resolution as mentioned before, compared to a still of the DVD:
    Upper pic is rescaled using MS paint. Still looks pretty sharp.
    Bottom is a still from the DVD file. Note the 'graining' and the horizontal lines.
    This leaves me with 2 questions:
    1) What can I do to get rid of the poor quality pictures
    2) Why do I lose horizontal pixels (as can be seen in the bottom picture)
    If anyone could help me, it would be greatly appreciated!!!!!

    Dear ATR,
    I apologize for my late response. I was on holiday
    A.T. Romano schreef:
    Question...Your camera is a miniDV camcorder....what did you capture from it and into what....
    Did you do a DV data capture firewire into Premiere Elements Capture Window to get DV.avi Widescreen (any mention of Type 1 or Type 2)
    or
    Did you do HDV data capture firewire into Premiere Elements Capture Window to get HDV (MPEG2.mpg)
    From your description of your video (720 x 576) it would seem your captures gave you DV AVI Widescreen. Is that correct?
    In your run throughs so far, has the video presented as poorly as the jpegs?
    Add On...In those last 3 screenshots, what were the resolutions
    Still resized - 1920 x 1080?
    DVD-VIDEO  screen capture of video? - 720 x 576 16:9 which would display after encoding about 1054 x 576
    MP4 - ?
    First. The camera is not a miniDV camcorder, but a harddisk recorder, which is why I chose that particular preset (PAL > Hard disk, flash memory camcorders > Widescreen 48kHz). source: http://www.sony.lv/support/en/content/cnt-specs/DCR-SR55E/list
    So it's fairly easy. Shoot video's. Connect to PC and just copy paste the video files of the camera onto the computer.
    This gives a resolution of 720x576. With a pixel aspect ratio of 1,4587 (as shown by PrE, when I click on a clip > show properties)
    The video does not really look that bad. Actually there is hardly any noticeable difference between the original un-editted videos and the edited complete version.
    Concerning the 3 screenshots.
    The first is the same as before: a rescaled image using MS Paint. Scaled from original 3264 x 1836 to 1024 x 576
    The second is a capture from the DVD file (which was burned to a folder)
    The third is a capture from a created MP4 video file
    Clearly photo 1 is the best. Photo 3 is still acceptable to me, but photo 2 (DVD) is unacceptable if you ask me.
    Hope this new info helps. Thanks for your efforts so far.

  • How to use variants and/ or adding packages in Ulticap?

    Hi,
    Can anyone please explain me a bit what "Variants" are for in Ultiboard 2001's Ulticap?
    Recently I was rearranging my personal libraries in Ulticap and started to experiment with adding packages to symbols. (in order to reduce the number of seperate shapes).
    In a symbol properties tab you can add Ultiboard packages and set one of those as the default one. Expecting when in Ulticap placing the symbol that I would get a list of the "available packages" with the default one on top. But unfortunately still a one-line dialog stil is shown with the a question mark or the default package already filled in (and ready to be ok-d or re-entered).
    Exporting a schematic from Ulticap to Ultiboard and open the properties dialog of a component that I gave multiple packages in Ulticap still doesn't show the additional packages (to choose from).
    So I started to wonder why we can add packages to shapes in Ulticap. I can't find any useful explanation about it in the binder that came with ultiboard 2001, nor I can find anything useful in docs that came with previous versions.
    Anyway, I also ran into the "Variants" tab when opening the properties dialog of a shape in Ulticap. It might be something useful for my current issue but unfortunately again there's no reasonable explanation to find in the docs about what they are and what they are used for; just "how to add or change" is explained but not the slightest bit of a brief introduction.
    The main goal for me is e.g. having a shape "_ELCO" and on the run select the right package since elco's have a diversity of sizes and I find it unpractical to fill up the library with seperate shapes for elco's of different sizes. Otherwise the lists in the library get too long for browsing through them when placing an other component.
    So a brief explanation of the use of adding packages and what variants are for would be very helpful to me.
    Cheers,
    Roberto

    hi,
      You cannot use the logical and  or condition together at the same time in SQL statement. Sachin is correct while using the and and or in the same condition. You can get the data using or condition in SQL statement, and then use the delete statement of internal table using the end condition. please find the following code for the same.
    select *
      from dtab
    where cond1 eq 'A1'
         or cond2 eq 'A2'.
    if sy-subrc eq 0.
      delete itab where cond1 eq 'A1' and 'A2'.
    endif.
    regards,
    Veeresh

  • [b]Tutorial:[/b] Simplify Developing OLE Automation Code Using VBA

    INTRODUCTION
    Automating Office applications from Oracle Forms can be a tedious, frustrating, and time-consuming process. Because the OLE2 and CLIENT_OLE2 built-ins do not validate the automation commands that they relay, code that compiles without errors often dies at runtime with a not-so-helpful error code. This tutorial will demonstrate how to simplify the development of automation code using a tool that ships with all Microsoft Office editions -- the Visual Basic for Applications (VBA) IDE.
    The VBA IDE, a core Office component, is a full-fledged development environment featuring code completion, basic syntax highlighting, context-driven help and a runtime debugger. Its Object Browser provides a convenient means of browsing the Word object model, as well as searching by keyword.
    For those who may not interested in following this tutorial in detail, I would like to stress the usefulness of the Object Browser as a tool for inspecting the functions supported by OLE server applications and, perhaps more importantly, valid values for function arguments. Whether/not anyone buys the assertion that starting with VBA prototypes is far more productive than pounding out OLE2 code from the very start, they will find the Object Browser invaluable as a reference -- I rely on it exclusively for this sort of documentation.
    A BRIEF INTRODUCTION TO THE VBA IDE & THE OBJECT BROWSER UTILITY
    Try this:
    1. Open Word
    2. Launch the VBA IDE by pressing <Alt><F11>
    3. Open the Object Browser by pressing <F2>
    The Object Browser allows you to visually navigate Word's class hierarchy. Its user interface is a bit crowded, so controls are unlabeled. Hovering the mouse cursor above a control will display a tooltip explaining that control's purpose. The browser's scope can be narrowed by using the Project/Library combo. Typing a keyword or substring in the Search Text combo and clicking on the Search button will cause all classes/members whose name contains the specified search text to be listed in the Search Results pane. Selecting an item from this list will update the two panes below it, showing the selected class, and its members. Beneath the Classes and Members panes is an untitled pane, gray in color, which displays details for the selected class/member, including hyperlinks to relevant information such as arguments, their types and allowable values. If Visual Basic Help is installed, pressing <F1> will display help on a selected class/member. (This feature can be installed from your Office install CD, if necessary.)
    NOTE: While it is possible to cut-and-paste the code examples that follow, I highly recommend that they be typed in by hand. Doing so will provide a better understanding of how the IDE's code completion behaves. Use code completion most efficiently by not using the mouse or <Enter> key when selecting from completion lists. Instead, just type enough letters to select the desired list element, then continue along as if you had typed the entire element, typing the next operator in your statement. It really is slick!
    HELLO WORLD - VBA-STYLE
    1. Open Word
    2. Launch the VBA IDE by pressing <Alt><F11>
    3. Select Module from the Insert menu.
    4. In the blank area that appears, enter the following code:
      Public Sub HelloWorld()
          Documents.Add
          Selection.TypeText ("Hello, world!")
      End Sub5. Press <F5> to run the code.
    If you switch back to Word by pressing <Alt><F11>, there should appear a newly-created document containing the text Hello, world!.
    A MORE AMBITIOUS EXAMPLE
    In this example, we will launch Word, type some text, and alter its formatting. For the purposes of this tutorial, consider it the process we wish to automate from within Forms.
    1. If Word is running, close it.
    2. Open any Office application except Word, such as Excel, Outlook or PowerPoint
    3. Launch the VBA IDE by pressing <Alt><F11>.
    4. Select References from the Tools menu -- a dialog should pop up.
    5. From within this dialog, locate and select Microsoft Word <version> Object Library, then click OK.
    6. Select Module from the Insert menu.
    7. In the blank area that appears, enter the following code:
    Public Sub LaunchWord()
        Dim app As Word.Application
        Set app = CreateObject("Word.Application")
        app.Visible = True                          '!!! IMPORTANT !!!
        app.Documents.Add
        With app.Selection
            .TypeText "This is paragraph 1."
            .TypeParagraph
            .TypeText "This is paragraph 2."
            .TypeParagraph
            .TypeText "This is paragraph 3."
        End With
        With ActiveDocument
            .Paragraphs(1).Range.Words(3).Bold = True
            .Paragraphs(2).Range.Words(3).Italic = True
            .Paragraphs(3).Range.Words(3).Underline = True
        End With
    End Sub8. Press <F5> to run the code.
    A new Word session should have been launched. Switch to it, to view the results of our handiwork!
    TAILORING VBA CODE INTENDED FOR OLE2 CONVERSION
    Now, things get a bit uglier. The code listed above gives a good idea of how concise VBA code can be, but With blocks and chained object references do not translate readily into OLE2 code. Here's the same process, rewritten in a more OLE2-friendly style. Note the numerous intermediate object references that have been declared.
    Public Sub LaunchWord()
        Dim app As Word.Application
        Dim doc As Word.Document
        Dim docs As Word.Documents
        Dim pars As Word.Paragraphs
        Dim par As Word.Paragraph
        Dim wrds As Word.Words
        Dim sel As Word.Selection
        Dim rng As Word.Range
        Set app = CreateObject("Word.Application")
        app.Visible = True                          '!!! IMPORTANT !!!
        Set doc = app.Documents.Add
        Set sel = app.Selection
        sel.TypeText "This is paragraph 1."
        sel.TypeParagraph
        sel.TypeText "This is paragraph 2."
        sel.TypeParagraph
        sel.TypeText "This is paragraph 3."
        Set pars = doc.Paragraphs
        'select third word of first paragraph and make it bold
        Set par = pars.Item(1)
        Set rng = par.Range
        Set wrds = rng.Words
        Set rng = wrds.Item(3)
        rng.Bold = True
        'select third word of second paragraph and italicize it
        Set par = pars.Item(2)
        Set rng = par.Range
        Set wrds = rng.Words
        Set rng = wrds.Item(3)
        rng.Italic = True
        'select third word of second paragraph and underline it
        Set par = pars.Item(3)
        Set rng = par.Range
        Set wrds = rng.Words
        Set rng = wrds.Item(3)
        rng.Underline = True
    End Sub
    TRANSFORMATION: CONVERTING VBA CODE INTO PL/SQL
    Here is the PL/SQL counterpart to our previous VBA routine. Compare printouts of the two and note their similarities. Notice the need for argument lists -- this causes the code to fluff up quite a bit, and really interferes with readability.
    PROCEDURE LAUNCH_WORD IS
      v_app OLE2.OBJ_TYPE;     -- Application
      v_doc OLE2.OBJ_TYPE;     -- Document
      v_docs OLE2.OBJ_TYPE;    -- Documents collection
      v_pars OLE2.OBJ_TYPE;    -- Paragraphs collection
      v_par OLE2.OBJ_TYPE;     -- Paragraph
      v_wrds OLE2.OBJ_TYPE;    -- Words collection
      v_sel OLE2.OBJ_TYPE;     -- Selection
      v_rng OLE2.OBJ_TYPE;     -- Range
      v_args OLE2.LIST_TYPE;   -- OLE2 argument list
    BEGIN
      /* launch Word and MAKE IT VISIBLE!!! */ 
        v_app := OLE2.CREATE_OBJ('Word.Application');
        OLE2.SET_PROPERTY(v_app, 'Visible', TRUE);
      /* initialize key object references */ 
        v_docs := OLE2.GET_OBJ_PROPERTY(v_app, 'Documents');
        v_doc := OLE2.INVOKE_OBJ(v_docs, 'Add');
        v_sel := OLE2.GET_OBJ_PROPERTY(v_app, 'Selection');
      /* type first paragraph */
        v_args := OLE2.CREATE_ARGLIST;
        OLE2.ADD_ARG(v_args, 'This is paragraph 1.');
        OLE2.INVOKE(v_sel, 'TypeText', v_args);
        OLE2.DESTROY_ARGLIST(v_args);
        OLE2.INVOKE(v_sel, 'TypeParagraph');
      /* type second paragraph */
        v_args := OLE2.CREATE_ARGLIST;
        OLE2.ADD_ARG(v_args, 'This is paragraph 2.');
        OLE2.INVOKE(v_sel, 'TypeText', v_args);
        OLE2.DESTROY_ARGLIST(v_args);
        OLE2.INVOKE(v_sel, 'TypeParagraph');
      /* type third paragraph */
        v_args := OLE2.CREATE_ARGLIST;
        OLE2.ADD_ARG(v_args, 'This is paragraph 3.');
        OLE2.INVOKE(v_sel, 'TypeText', v_args);
        OLE2.DESTROY_ARGLIST(v_args);
      /* set reference to Paragraphs collection */
        v_pars := OLE2.GET_OBJ_PROPERTY(v_doc, 'Paragraphs');
      /* select third word of first paragraph and make it bold */
        v_args := OLE2.CREATE_ARGLIST;
        OLE2.ADD_ARG(v_args, 1);
        v_par := OLE2.INVOKE_OBJ(v_pars, 'Item', v_args);
        OLE2.DESTROY_ARGLIST(v_args);
        v_rng := OLE2.GET_OBJ_PROPERTY(v_par, 'Range');
        v_wrds := OLE2.GET_OBJ_PROPERTY(v_rng, 'Words');
        v_args := OLE2.CREATE_ARGLIST;
        OLE2.ADD_ARG(v_args, 3);
        v_rng := OLE2.INVOKE_OBJ(v_wrds, 'Item', v_args);
        OLE2.SET_PROPERTY(v_rng, 'Bold', TRUE);
      /* select third word of second paragraph and italicize it */
        v_args := OLE2.CREATE_ARGLIST;
        OLE2.ADD_ARG(v_args, 2);
        v_par := OLE2.INVOKE_OBJ(v_pars, 'Item', v_args);
        OLE2.DESTROY_ARGLIST(v_args);
        v_rng := OLE2.GET_OBJ_PROPERTY(v_par, 'Range');
        v_wrds := OLE2.GET_OBJ_PROPERTY(v_rng, 'Words');
        v_args := OLE2.CREATE_ARGLIST;
        OLE2.ADD_ARG(v_args, 3);
        v_rng := OLE2.INVOKE_OBJ(v_wrds, 'Item', v_args);
        OLE2.SET_PROPERTY(v_rng, 'Italic', TRUE);
      /* select third word of second paragraph and underline it */
        v_args := OLE2.CREATE_ARGLIST;
        OLE2.ADD_ARG(v_args, 3);
        v_par := OLE2.INVOKE_OBJ(v_pars, 'Item', v_args);
        OLE2.DESTROY_ARGLIST(v_args);
        v_rng := OLE2.GET_OBJ_PROPERTY(v_par, 'Range');
        v_wrds := OLE2.GET_OBJ_PROPERTY(v_rng, 'Words');
        v_args := OLE2.CREATE_ARGLIST;
        OLE2.ADD_ARG(v_args, 3);
        v_rng := OLE2.INVOKE_OBJ(v_wrds, 'Item', v_args);
        OLE2.SET_PROPERTY(v_rng, 'Underline', TRUE);
    END;
    REFACTORING FOR REUSABILITY AND READABILITY
    While the previous procedure runs without errors, it suffers from poor readability which, in turn, makes it difficult to maintain. Here, we address those issues by moving repetetive low-level operations into separate procedures.
      PROCEDURE LAUNCH_WORD IS
        v_app OLE2.OBJ_TYPE;    -- Application
        v_doc OLE2.OBJ_TYPE;    -- Document
        v_docs OLE2.OBJ_TYPE;   -- Documents collection
        v_sel OLE2.OBJ_TYPE;    -- Selection
        v_args OLE2.LIST_TYPE;  -- OLE2 argument list
      BEGIN
        /* launch Word and MAKE IT VISIBLE!!! */ 
          v_app := OLE2.CREATE_OBJ('Word.Application');
          OLE2.SET_PROPERTY(v_app, 'Visible', TRUE);
        /* create a new Word document */ 
          v_docs := OLE2.GET_OBJ_PROPERTY(v_app, 'Documents');
          v_doc := OLE2.INVOKE_OBJ(v_docs, 'Add');
          v_sel := OLE2.GET_OBJ_PROPERTY(v_app, 'Selection');
        /* add a few paragraphs */
          PRINT_PARAGRAPH(v_sel, 'This is paragraph 1.');
          PRINT_PARAGRAPH(v_sel, 'This is paragraph 2.');
          PRINT_PARAGRAPH(v_sel, 'This is paragraph 3.');
        /* apply formatting */
          APPLY_FORMATTING(v_doc, 1, 3, 'Bold', TRUE);
          APPLY_FORMATTING(v_doc, 2, 3, 'Italic', TRUE);
          APPLY_FORMATTING(v_doc, 3, 3, 'Underline', TRUE);
      END;
      PROCEDURE APPLY_FORMATTING(
        v_doc OLE2.OBJ_TYPE,
        v_paragraph_num NUMBER,
        v_word_num NUMBER,
        v_attribute VARCHAR2,
        v_value BOOLEAN) IS
        v_pars OLE2.OBJ_TYPE;   -- Paragraphs collection
        v_par OLE2.OBJ_TYPE;    -- Paragraph
        v_wrds OLE2.OBJ_TYPE;   -- Words collection
        v_rng OLE2.OBJ_TYPE;    -- Range
        v_args OLE2.LIST_TYPE;  -- OLE2 argument list
      BEGIN
        /* set reference to Paragraphs collection */
          v_pars := OLE2.GET_OBJ_PROPERTY(v_doc, 'Paragraphs');
        /* get specified paragraph */   
          v_args := OLE2.CREATE_ARGLIST;
          OLE2.ADD_ARG(v_args, v_paragraph_num);
          v_par := OLE2.INVOKE_OBJ(v_pars, 'Item', v_args);
          OLE2.DESTROY_ARGLIST(v_args);
        /* get words for specified paragraph */
          v_rng := OLE2.GET_OBJ_PROPERTY(v_par, 'Range');
          v_wrds := OLE2.GET_OBJ_PROPERTY(v_rng, 'Words');
        /* apply formatting to word found at specified index */
          v_args := OLE2.CREATE_ARGLIST;
          OLE2.ADD_ARG(v_args, v_word_num);
          v_rng := OLE2.INVOKE_OBJ(v_wrds, 'Item', v_args);
          OLE2.SET_PROPERTY(v_rng, v_attribute, v_value);
      END;
      PROCEDURE PRINT_PARAGRAPH(v_sel OLE2.OBJ_TYPE, v_text VARCHAR2) IS
        v_args OLE2.LIST_TYPE;
      BEGIN
        v_args := OLE2.CREATE_ARGLIST;
        OLE2.ADD_ARG(v_args, v_text);
        OLE2.INVOKE(v_sel, 'TypeText', v_args);
        OLE2.DESTROY_ARGLIST(v_args);
        OLE2.INVOKE(v_sel, 'TypeParagraph');
      END;
    CONCLUSION
    It is my hope that this tutorial, despite it's introductory nature, has demonstrated the value of the VBA IDE, the ease with which automation processes can be prototyped using VBA, the noticeable similarity between VBA automation routines and their Forms PL/SQL counterparts, and the advantages of testing automation processes within the VBA IDE. Please feel free to follow up with any specific questions or concerns you may have.
    Thanks,
    Eric Adamson
    Lansing, Michigan
    FINAL NOTE: These examples use the OLE2 built-in, and will operate correctly when called from forms running in the Form Builder OC4J. Deploying them to an Oracle Application Server will launch Word on the server itself (if available), which is usually not the developer's intent! Automating Word client-side via web forms requires adding WebUtil support. Adapting the code for WebUtil is trivial -- just replace all instances of OLE2 with CLIENT_OLE2. Adapting forms for WebUtil and configuring OLE support into your Oracle Application Server, however, are beyond the scope of this tutorial.
    REVISION HISTORY
    This promises to be something of a 'living document'. I've snuck changes through without comment in the past, but in the future, I'll try to document significant changes here.
    2006-08-21
      * Prefaced boring subject line with text: 'Tutorial:' to clarify purpose
      * Added emphasis on value of Object Browser as a reference

    Thanks James, for your kind words. I do hope this information will help folks out. I honestly believe that tinkering around in the VBA IDE will prove highly gratifying for automation developers. It can be assured that learning to make Word jump through hoops is much more straight-forward in this environment. I'm not one for mottos, but if I were pressed for a cheesy motto, I would say: First, make it work. Then, make it work in Oracle!
    Once the idea has sunk in, that Visual Basic routines for automating Word are exact analogs to their OLE2 counterparts, we can remove keywords like Oracle and PL/SQL from our Google searches on Word automation which, at least in this context, are the proverbial kiss of death. Suddenly we find ourselves liberated by the possibility of steal-, ahem... borrowing ideas from the Visual Basic* community!
    As for links, my link of choice is invariably http://groups.google.com -- if you don't already use it at least ten times a day, you must try it. This is the venerable USENET archive, including the holdings of now-extinct DejaNews. Another possible site of interest is http://word.mvps.org/FAQs/MacrosVBA, which may serve as a good starting point for those who wish to learn how to do fancy tricks with Word using VBA.
    If these links don't prove immediately helpful, please feel free to give specifics on the sort of operations you are interested in automating, and I'll see if I can post an example that addresses it.
    Regards,
    Eric Adamson
    Lansing, Michigan
    PS: I do hope, as people read my posts, with every other acronym being VBA, that they are not mistakenly hearing a call to learn Visual Basic. I say this, not because I believe learning VB would be a Bad Thing, but because I assume that few of us feel we have the time to learn a new programming language. Despite having come to the Oracle camp already knowing VB/VBA, and having acquired a fair bit of experience with automating Office applications as an Access developer, I remain confident that what I am suggesting people attempt does not rise to the level of learning a language. What I am suggesting is that they learn enough of the language to get by.
    *VB vs. VBA
    Just a quick word on this, as readers may wonder why I seem to use these terms interchangeably. Visual Basic (VB) can refer to either a development platform or a programming language. Visual Basic for Applications (VBA) is a language -- more precisely, it is a subset of the Visual Basic language. One purchases VB, usually quite intentionally. VBA is included with Microsoft Office, as is VBA's development environment, the VBA IDE. The key distinction between VB and VBA is that VBA cannot be used to create self-contained executables. Rather, VBA relies on VBA-enabled applications, such as Microsoft Office applications, to serve as a container for VBA code, and to provide a runtime environment for that code. For the purposes of discussing OLE Automation, VB and VBA are quite interchangeable.

  • 49 Service Error - Turn Off then On - LaserJet Pro 200 M276nw

    I was adding to another post for a different printer but didn't want anyone with MY printer to MISS this problem.
    ***UPDATE*** (at least for my LaserJet Pro 200 M276nw)
    I have found the root cause but will need further assistance from someone at HP to "solve" this one....
    My new M276nw keeps throwing a 49 Service Error, chat support yielded alot of power off, power on, wait, try again blah blah blah, fuser problems blah blah. 10 minutes of forum searching put me onto possible wireless networking issues with other printers and SSID's. Anyway after returning one printer to Staples and having the problem come up again on a another brand new one....Tried Forum searching & Tada! at least I got to find a root cause.
    I have a D-Link DIR-825 wireless router. It has dual band (2.4 GHz and 5 GHz).
    Normally I have both enabled for the myriad of devices that people have these days in my home.
    I updated the firmware to the latest update (20121026) then restarted.
    Received the 49 Service Error shortly after restart.
    Then I disabled both bands to test each wireless band independently.
    The printer acted normally so I decided to enable each band seperately.
    When I enable the 2.4 GHz band in the router, the printer immediately throws a 49 Service Error.
    I tested this several times (5 to be exact) and each time during the router reboot the printer indicated the error.
    So I left the 2.4 GHz band disabled and went on to the 5 GHz band.
    I enabled the 5 GHz band 3 times and disabled it and found no effect on the printer (at least within a 5 minute window).
    So now I'm left with only a single band wireless router or a printer that likes to restart itself every 20 minutes or so.
    There is probably a setting (or 2) that can be tweaked in either the router or the printer that can prevent this (I hope).
    I just need to find the right HP person............
    This question was solved.
    View Solution.

    I really wish I could help but I am afraid this is a bit beyond my level of comprehension.  What I took from this was, you have to turn off the duel band feature to get the printer to work without that error message, correct?  The User Guide may help you but when I tried to read it my mind was blown away by just how many settings could be adjusted to fit your needs.  No need to do anything troulbeshooting-wise just yet.  All I need for you to do is look at page 137 on how to set sleep delay and auto power down functions and page 132 for link and duplex settings and let me know if you think it could be something to do with these.  
    As far as a setting within the router, I do not know.  I did find another user guide with very technical information in it. The Software Technical Reference hinted to bi-directional printing which basically turns off or on the print spooler if the printer was so big it was using up network resources but I am not sure of that at all (see Page 59 for an example). Page 89 and on is a brief introduction to the embedded web server but really these are just definitions, nothing new to report there.
    This website hints that it may be a firmware error. Lastly, the only other thing I can offer as you have probably seen it yourself is another HP forum thread regarding your exact error.  I know I won't be of much assistance but some hopefully is better than none. I'm just glad it works partially.  Let me know if I can answer any questions for you but this is just a step out of my league. Good luck!
    Don't forgot to say thanks by giving "Kudos" if I helped solve your problem.
    When a solution is found please mark the post that solves your issue.
    Every problem has a solution!

Maybe you are looking for