About datatransfer technique

which bdc method mostly we use in real time.
Now projects are using bdc or bapi.
Edited by: madhu sudhan on Feb 26, 2008 1:22 PM

>
madhu sudhan wrote:
> which bdc method mostly we use in real time.
> Now projects are using bdc or bapi.
>
> Edited by: madhu sudhan on Feb 26, 2008 1:22 PM
Hi,
Now a days companies are using bdc as well as bapi.
most of the companies are using bdc only.
because bapis are related to oops concept and there is less resources on bapis as compare to bdc.
here iam givina session method and call transaction method procedures.
When you create a batch input session, it remains in the batch input queue until it is explicitly started. Session processing can be started in two ways:
An on-line user can start the session using the batch input menu options. (To access the batch input options, choose System>Services>Batch Input.)
You can submit the background job RSBDCSUB to start a session in background processing. If several sessions have the same name, RSBDCSUB starts them all.
It's possible to coordinate the generation and execution of a session in the background processing system.
You can, for example, schedule both the batch input program and RSBDCSUB in the background. If you designate the batch input job as the predecessor for RSBDCSUB, then RSBDCSUB will be started automatically when the batch input job successfully completes.
Alternatively, you can schedule both the batch input program and RSBDCSUB as job steps in a single background job. In this case, however, RSBDCSUB is started even if the batch input program should terminate abnormally.
For detailed information about processing batch input sessions, see MANAGING BATCH INPUT SESSIONS(B) in the System Services guide. You'll find this guide in the Basis library, system administration section, on the SAP documentation CD-ROM.
(19) USING CALL TRANSACTION USING FOR BATCH INPUT:
Processing batch input data with CALL TRANSACTION USING is the faster of the two recommended batch input methods. In this method, batch input data is processed inline in your batch input program.
Error recovery, restarting, and management of batch input processing are all more comfortable if you use "classical" batch input processing by way of batch input sessions. CALL TRANSACTION USING is therefore recommended only if batch input sessions do not run fast enough to meet your requirements.
For more information on choosing a batch input method, please see Selecting a Batch-Input Method(11) .
A program that uses CALL TRANSACTION USING to submit batch input should perform the following steps:
1. Prepare a BDCDATA structure for the transaction that you wish to run. The requirements for filling the BDCDATA structure are the same as for "classical" batch input using sessions. For more information, please see Using the Batch Input Data Structure(12).
2. With a CALL TRANSACTION USING statement, call the transaction and pass the BDCDATA structure to it as batch input. For example:
CALL TRANSACTION 'SE38' USING BDCDATA
MODE 'A'
UPDATE 'S'.
MESSAGES INTO MESSTAB.
The Mode Parameter
The MODE parameter lets you specify whether the batch input processing should be displayed to you as it happens. You can choose between three modes:
A Display everything.
All screens and the data that goes in them appear when you run your program. This is the default setting for MODE in CALL TRANSACTION USING.
N Display nothing.
All screens are processed invisibly, regardless of whether there are errors or not. Control returns to your program as soon as transaction processing is finished. (Database updates however, may have taken place or may have not have taken place, depending on the value of the UPDATE parameter.)
E Display errors only. The transaction goes into display mode as soon as an error in one of the screens is detected. You can then correct the error.
The display modes are the same as those that are available for processing batch input sessions.
The Update Parameter
The UPDATE parameter lets you specify how updates produced by a transaction should be processed. You can select between these modes:
A Asynchronous updating.
In this mode, the called transaction does not wait for any updates it produces to be completed. It simply passes the updates to the SAP update service.Asynchronous processing therefore usually results in faster execution of your batch input program.
Asynchronous processing is NOT recommended for processing any larger amount of data. This is because the called transaction receives no completion message from the update module in asynchronous updating. The calling batch input program, in turn, cannot determine whether a called transaction ended with a successful update of the database or not.
If you use asynchronous updating, then you will need to use the update management facility (transaction SM12) to check whether updates have been terminated abnormally during session processing. Error analysis and recovery is less convenient than with synchronous updating.
S Synchronous updating.
In this mode, the called transaction waits for any updates that it produces to be completed. Execution is slower than with asynchronous updating because called transactions wait for updating to be completed. However, the called transaction is able to return any update error message that occurs to your program. It's much easier for you to analyze and recover from errors.
L Local updating.
If you update data locally, the update of the database will not be processed in a separate process, but in the process of the calling program. (Refer to the keyword documentation of SET UPDATE TASK LOCAL for more information.)
The Messages Parameter
The MESSAGES specification indicates that all system messages issued during a CALL TRANSACTION USING are written into the internal table . The internal table must have the structure BDCMSGCOLL.
Example
You can have system messages issued by transaction SE38 (bottom of example) collected in table MESSTAB with the following coding:
DATA BEGIN OF BDCDATA OCCURS 100.
INCLUDE STRUCTURE BDCDATA.
DATA END OF BDCDATA.
DATA BEGIN OF MESSTAB OCCURS 10.
INCLUDE STRUCTURE BDCMSGCOLL.
DATA END OF MESSTAB.
DATA REPORT(8).
BDCDATA-PROGRAM = 'SAPMS38M'.
BDCDATA-DYNPRO = '0100'.
BDCDATA-DYNBEGIN = 'X'.
APPEND BDCDATA.
CLEAR BDCDATA.
BDCDATA-FNAM = 'RS38M-PROGRAMM'.
BDCDATA-FVAL = REPORT.
APPEND BDCDATA.
CALL TRANSACTION 'SE38' USING BDCDATA MODE 'N'
MESSAGES INTO MESSTAB.
The following figures show the return codes from CALL TRANSACTION USING and the system fields that contain message information from the called transaction. As the return code chart shows, return codes above 1000 are reserved for batch input.
If you use the MESSAGES INTO option, then you do not need to query the system fields shown below; their contents are automatically written into the message table. You can loop over the message table to write out any messages that were entered into it.
Regards,
swami.

Similar Messages

  • Please tell me about Enhancement Techniques used in SAP Other then BADI/Usr

    Hi Experts .
    Please guide me about Enhancement Techniques used in SAP apart from BADI/User-Exit .
    1.) what is set and how to create it ?
    2.) What is formula is SAP and How to set it for Enhancement Pupose .
    3.) What is BTE (Buisness Transection Events) ? How to create it for Enhancement Pupose ?
    Please Elabarate the reply with step by step procedure .
    Thanx .
    Regards : Rajneesh

    Hi Raj,
                  Check these links
       help.sap.com/saphelp_nw04/helpdata/en/eb/3e7ceb940e11d295df0000e82de14a/content.htm
    https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/207835fb-0a01-0010-34b4-fef1240ba9b7
    Regards,
    Sana.
    reward for useful answers..

  • Please tell me about Enhancement Technique like BTE , SET and Formula

    Hi Experts .
    Please guide me about Enhancement Techniques used in SAP apart from BADI/User-Exit .
    1.) what is set and how to create it ?
    2.) What is formula is SAP and How to set it for Enhancement Pupose .
    3.) What is BTE (Buisness Transection Events) ? How to create it for Enhancement Pupose ?
    Please Elabarate the reply with step by step procedure .
    Thanx .
    Regards : Rajneesh

    Hi rajneesh mittal  ,
    Business Transaction Events
    Business Transaction Events (Open FI) The Open FI enhancement technique was developed in the Financial Accounting component. Open FI is based upon the following principles: Application developers must define their interface in a function module, an assignment table is read in the accompanying (generated) code, and the customer modules assigned are called dynamically. This technique differentiates between enhancements that are only allowed to have one implementation and enhancements that can call multiple implementations in any sequence desired. Both industry-specific and country-specific enhancements may be defined.
    SAP business transaction events are one type of customer enhancements provided by SAP! We can access the business transaction events using FIBF.Next we have to find the process interface for duplicate invoice check!
    check this blog for details on SAP business transaction events
    Business Transaction Events
    Business Transaction Events
    http://fuller.mit.edu/user_exits/business_transaction_event.htm
    FI Enhancement Technique – How-To-Guide on the Usage of Business Transaction Events (BTE)
    https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/207835fb-0a01-0010-34b4-fef1240ba9b7
    Creation of Events via Business Transaction Events
    http://help.sap.com/saphelp_nw04/helpdata/en/3b/7f3e8be57c11d1951f0000e82dec10/content.htm
    In SAP R/3 you must activate the business transaction events (BTEs) for Availability Check Using SAP R/3. To set this indicator in SAP R/3:........
    http://help.sap.com/saphelp_crm40/helpdata/en/b6/de3efc6bbcdc4b948d466857a10323/content.htm
    cheers!
    gyanaraj
    ****Pls reward points if u find this helpful

  • About modularization techniques

    hi,,
       can anybody send me the details about modularization techniques ?
       mainly i want differences between INCLUDES and FUNCTION MODULES.
                                                         MACROS and SUBROUTINES.

    Hi
    Purpose of modularization is: 1) Organizing your ABAP Code 2) Limit maintenance cost by coding every thing only once and making your ABAP code easier to understand.
    Modularization techniques:
    1) Organizing your ABAP code can be done by using INCLUDE reports and local MACRO's (DEFINE statement). Typical examples can be found in Module Pools and Function Groups with TOP-includes and special includes for PBO events, PAI events et cetera. You can discuss if using subroutines, functions or methods is also part of this type of modularization technique. At this moment, most ABAP programmers use subroutines partly as a means to create some sort of main line in their program, thus limiting large chunks of ABAP code. Regarding MACRO's there are some special problems, especially that they don't improve readability of ABAP coding, and you can not debug them.
    2)Here, we are talkin about ABAP PROCEDURES: a) Subroutines, b) Functions and c) Methods
    - 2a) Subroutines: can be used locally and globally (external subroutine calls). Subroutines have a formal interface ( USING, CHANGING, TABLES parameters). The interface parameters can be passed BY VALUE or BY REFERENCE. Data that is defined within a subroutine (FROM ... ENDFORM.) is local: lifetime and visibility is limited to the moment the subroutine is called. External Subroutines are subroutines that are called from another program. Typical example can be found in the way SAPscript and SMARTforms printprograms are called by RSNAST00. External Subroutines can be grouped into Subroutine Pools.
    - 2b) Functions: are part of function groups. They are designed for global use and have a unique name. Function Modules also have a formal interface using IMPORTING, EXPORTING, CHANGING and TABLES parameters. The interface parameters can be passed BY VALUE or BY REFERENCE. Specific EXCEPTIONS can be defined for error handling. A function module can also have local data.
    In theory, a function module can only use data a)from the interface parameters, b) defined locally in the function module and c) defined globally in the function group. However, it is possible to see global data from calling programs using field-symbols.
    Remote Function Modules are function modules that can be called from other SAP or NON-SAP systems. BAPI's are examples of RFC-enabled function modules.
    Function Groups and Function Modules are maintained using transaction SE37 (or SE80).
    - 2c) Methods: are part of CLASSES. Here we are talking about ABAP Objects, supporting inheritance, instantiation, encapsulation, polymorphism, events, Interfaces, visibility sections (PUBLIC, PROTECTED, PRIVATE) and lifetime options STATIC and INSTANCE.
    Classes can be defined locally or globally: a) Local Classes are classes, defined as part of an ABAP program. They can be used only within this program. b) The functionality of Global Classes is identical, but these classes are maintained using the Class Builder (SE24 or SE80).
    The name of a method is not unique; you always need the name of the object to create the unique name. As a result, several classes will have exactly the same method name.
    Methods also have a formal interface using IMPORTING, EXPORTING, CHANGING and RETURNING parameters. The interface parameters can be passed BY VALUE or BY REFERENCE. Specific EXCEPTIONS can be defined for error handling. A method can also have local data.
    In general, using classes is considered a much better alternative to using subroutines and function modules, especially with regards to maintenance costs. Actually, you do not need subroutines anymore. Function Modules are only needed is some cases, for example as RFC's because the classes don't support remote calls.
    One limitation of ABAP Classes is that they do not support dynpro's. This means that you always need a report/module pool/function group if you want to create screens.
    Within methods, several types of obsolete ABAP statements are not allowed like: ON CHANGE OF, TABLES and OCCURS.
    Consider that new tools and options like Web Dynpro, Unit Testing, Shared Objects, Exception Classes can only be understood when having the knowledge of ABAP OO. If you are debugging new SAP transactions, you'll see that they are also programmed using ABAP Objects.
    Processing blocks that are called from ABAP programs:
       1. Subroutines
       2. Function modules
       3. Methods
          Procedures
          Procedures contain a set of statements, and are called from other ABAP programs.
          The processing blocks that you call from ABAP programs are called procedures
          You define procedures in ABAP programs. When the program is generated, they remain as standalone modules. You can call procedures in the program in which they are defined, or from external programs. Procedures have an interface for passing data, and can also contain local data.
          ABAP contains the following kinds of procedures:
    Subroutines
    Subroutines are principally for local modularization, that is, they are generally called from the program in which they are defined. You can use subroutines to write functions that are used repeatedly within a program. You can define subroutines in any ABAP program.
    Function Modules
    Function modules are for global modularization, that is, they are always called from a different program. Function modules contain functions that are used in the same form by many different programs. They are important in the R/3 System for encapsulating processing logic and making it reusable. Function modules must be defined in a function group, and can be called from any program.
    Methods
    Methods describe the functions and behavior of classes and their instances in ABAP Objects. Methods must be defined in classes. When you call them, you must observe certain special rules of object-oriented programming.
    Subroutines
    Subroutines are procedures that you can define in any ABAP program and also call from any program. Subroutines are normally called internally, that is, they contain sections of code or algorithms that are used frequently locally. If you want a function to be reusable throughout the system, use a function module.
    subroutine is a block of code introduced by FORM and concluded by ENDFORM.
    FORM [USING ... [)] ... ] [CHANGING... [)] ... ].
    ENDFORM.
    subroutines cannot be nested. You should therefore place your subroutine definitions at the end of the program
    Calling Subroutines
    PERFORM... .
    Subroutines can call other subroutines (nested calls) and may also call themselves (recursive calls). Once a subroutine has finished running, the calling program carries on processing after the PERFORM statement. You can use the USING and CHANGING additions to supply values to the parameter interface of the subroutine.
    Function Modules
    Function modules are procedures that are defined in function groups (special ABAP programs with type F) and can be called from any ABAP program. Function groups act as containers for function modules that logically belong together.
    Unlike subroutines, you do not define function modules in the source code of your program. Instead, you use the Function Builder. The actual ABAP interface definition remains hidden from the programmer. You can define the input parameters of a function module as optional. You can also assign default values to them. Function modules also support exception handling. This allows you to catch certain errors while the function module is running.
    Function groups are containers for function modules. You cannot execute a function group. When you call an function module, the system loads the whole of its function group into the internal session of the calling program (if it has not already been loaded).
    This is used by the system to create the components of the group (main program and corresponding include programs). When you create a function group or function module in the Function Builder , the main program and include programs are generated automatically.
    The main program SAPL contains nothing but the INCLUDE statements for the following include programs:
    LTOP. This contains the FUNCTION-POOL statement (equivalent for a function group of the REPORT or PROGRAM statement) and global data declarations for the entire function group.
    LUXX. This contains further INCLUDE statements for the include programs
    LU01, LU02, ... These includes contain the actual function modules.
    The include programs LF01, LF02, ... can contain the coding of subroutines that can be called with internal subroutine calls from all function modules of the group.
    All of the function modules in a function group can access the global data of the group. For this reason, you should place all function modules that use the same data in a single function group.
    Function modules can have the following interface parameters:
    Import parameters. These must be supplied with data when you call the function module, unless they are flagged as optional. You cannot change them in the function module.
    Export parameters. These pass data from the function module back to the calling program. Export parameters are always optional. You do not have to receive them in your program.
    Changing parameters. These must be supplied with data when you call the function module, unless they are flagged as optional. They can be changed in the function module. The changed values are then returned to the calling program.
    Tables parameters. You use these to pass internal tables. They are treated like CHANGING parameters. However, you can also pass internal tables with other parameters if you specify the parameter type appropriately.
    You can specify the types of the interface parameters, either by referring to ABAP Dictionary types or elementary ABAP types. When you call a function module, you must ensure that the actual parameter and the interface parameters are compatible.
    Interface parameters are, by default, passed by value. However, they can also be passed by reference. Tables parameters can only be passed by reference. You can assign default values to optional importing and changing parameters. If an optional parameter is not passed in a function module call, it either has an initial value, or is set to the default value.
    Exceptions are used to handle errors that occur in function modules. The calling program checks whether any errors have occurred and then takes action accordingly.
    Calling Function Modules in ABAP
    To call a function module, use the CALL FUNCTION statement:
    CALL FUNCTION [EXCEPTIONS e1 = r 1.... e n = r n ].
    You can specify the name of the function module either as a literal or a variable. Each interface parameter is explicitly assigned to an actual parameter . You can assign a return value to each exception . The assignment always takes the form = . The equals sign is not an assignment operator in this context.
    After EXPORTING, you must supply all non-optional import parameters with values appropriate to their type. You can supply values to optional import parameters if you wish.
    After IMPORTING, you can receive the export parameters from the function module by assigning them to variables of the appropriate type.
    After CHANGING or TABLES, you must supply values to all of the non-optional changing or tables parameters. When the function module has finished running, the changed values are passed back to the actual parameters. You can supply values to optional changing or tables parameters if you wish.
    You can use the EXCEPTIONS option to handle the exceptions of the function module. If an exception is raised while the function module is running, the system terminates the function module and does not pass any values from the function module to the program, except those that were passed by reference. If is specified in the EXCEPTION option, the calling program handles the exception by assigning to SY-SUBRC. must be a numeric literal.
    If you specify of ERROR_MESSAGE in the exception list you can influence the message handling of function modules. Normally, you should only call messages in function modules using the MESSAGE ... RAISING statement. With ERROR_MESSAGE you can force the system to treat messages that are called without the RAISING option in a function module as follows:
    Messages of classes S, I, and W are ignored (but written to the log in a background job).
    Messages of classes E and A stop the function module as if the exception ERROR_MESSAGE had occurred (SY-SUBRC is set to ).
    If you specify OTHERS after EXCEPTIONS, the system assigns a single return code to all other exceptions that you have not specified explicitly in the list.
    You can use the same number for several exceptions.
    You can trigger exceptions in the function module using either the RAISE or the MESSAGE ... RAISING statement. If the calling program handles the exception, both statements return control to the program. The MESSAGE ..... RAISING statement does not display a message in this case. Instead, it sets the following system fields:
       1. Message class ® SY-MSGID
       2. Message type ® SY-MSGTY
       3. Message number ® SY-MSGNO
       4. SY-MSGV1 to SY-MSGV4 (contents of fields to , included in a message).
          You can use the system fields to trigger the message from the calling program.
    Raising Exceptions
    There are two ABAP statements for raising exceptions. They can only be used in function modules:
    RAISE .
    and
    MESSAGE..... RAISING .
    The effect of these statements depends on whether the calling program handles the exception or not. If the name of the exception or OTHERS occurs in the EXCEPTIONS addition of the CALL FUNCTION statement, the exception is handled by the calling program.
    If the calling program does not handle the exception
    The RAISE statement terminates the program and switches to debugging mode.
    The MESSAGE ..... RAISING statement display the specified message. How the processing continues depends on the message type.
    If the calling program handles the exception, both statements return control to the program. No values are transferred. The MESSAGE ..... RAISING statement does not display a message. Instead, it fills the system fields SY-MSGID, SY-MSGTY, SY-MSGNO, and SY-MSGV1 to SY-MSGV4.
    Remote Function Modules
    To implement a remote function module in ABAP, perform the following steps:
    1. Register the module as remotely callable in the RFC server system.
    In the function module Administration screen (transaction code SE37), set the field Can be called via REMOTE CALL. Registering a module as remote causes an RFC stub to be generated for it.
    Asynchronous remote function calls (aRFCs) are similar to transactional RFCs, in that the user does not have to wait for their completion before continuing the calling dialog. There are three characteristics, however, that distinguish asynchronous RFCs from transactional RFCs:
    When the caller starts an asynchronous RFC, the called server must be available to accept the request.
          The parameters of asynchronous RFCs are not logged to the database, but sent directly to the server.
    Asynchronous RFCs allow the user to carry on an interactive dialog with the remote system.
    The calling program can receive results from the asynchronous RFC.
    You can use asynchronous remote function calls whenever you need to establish communication with a remote system, but do not want to wait for the function’s result before continuing processing. Asynchronous RFCs can also be sent to the same system. In this case, the system opens a new session (or window) and allows you to switch back and forth between the calling dialog and the called session.
    To start a remote function call asynchronously, use the following syntax:
    CALL FUNCTION RemoteFunction STARTING NEW TASK taskname
    Destination ...
    EXPORTING...
    TABLES ...
    EXCEPTIONS...
    The following calling parameters are available:
    TABLES
    passes references to internal tables. All table parameters of the function module must contain values.
    EXPORTING
    passes values of fields and field strings from the calling program to the function module. In the function module, the correponding formal parameters are defined as import parameters.
    EXCEPTIONS
    see Using Pre-Defined Exceptions for RFC
    RECEIVE RESULTS FROM FUNCTION func is used within a FORM routine to receive the results of an asynchronous remote function call. The following receiving parameters are available:
       1. IMPORTING
       2. TABLES
       3. EXCEPTIONS
    The addition KEEPING TASK prevents an asynchronous connection from being closed after receiving the results of the processing. The relevant remote context (roll area) is kept for re-use until the caller terminates the connection.
    Call a transaction asynchronally and display it in an amodal window:
    DATA: MSG_TEXT(80) TYPE C. "Message text
    Asynchronous call to transaction SM59 ->
    Create a new session
    CALL FUNCTION ‘ABAP4_CALL_TRANSACTION’ STARTING NEW TASK ‘TEST’
    DESTINATION ‘NONE’
    EXPORTING
    TCODE = ‘SM59’
    EXCEPTIONS
    COMMUNICATION_FAILURE = 1 MESSAGE MSG_TEXT
    SYSTEM_FAILURE = 2 MESSAGE MSG_TEXT
    IF SY-SUBRC NE 0.
    WRITE: MSG_TEXT.
    ELSE.
    WRITE: ‘O.K.’
    ENDIF.
    You must not use IMPORTING when calling aRFCs.
    Transactional Remote Function Calls
        RfcInstallTransactionControlinstalls four functions to control transactional behaviour.
        RFC_ON_CHECK_TIDis called when a local transaction is starting.
        RfcCreateTransID Get a unique transaction-ID for calling an
        ABAP function module using the transactional RFC Interface
        RfcIndirectCall Call an ABAP function module using the
        transactional RFC Interface
        RFC_ON_COMMIT is called when a local transaction ends.
        RFC_ON_CONFIRM_TID is called when a local transaction is
        completed.
        RFC_ON_ROLLBACK is call
    ed when a local transaction ends with
    failure.
    RFC_ONCALL
    INCLUDE AND MACROS:
    When you modularize source code, you place a sequence of ABAP statements in a module. Then, instead of placing all of the statements in your main program, you just call the module.
    Include programs are global R/3 Repository objects. They are solely for modularizing source code, and have no parameter interface.
    They have the following functions:
    Library:Include programs allow you to use the same source code in different programs. For example, this can be useful if you have lengthy data declarations that you want to use in different programs. 
    Order. Include programs allow you to manage complex programs in an orderly way. Function groups and module pools use include programs to store parts of the program that belong together. The ABAP Workbench supports you extensively when you create such complex programs by creating the include programs automatically and by assigning them unique names.
    Creating Your Own Include Programs
    If you create an include program yourself, you must assign it the type I in its program attributes.
    An include program cannot run independently, but must be built into other programs. Include programs can contain other includes.
    The only restrictions for writing the source code of include programs are:
    Include programs cannot call themselves.
    Include programs must contain complete statements.
    The INCLUDE statement has the same effect as copying the source code of the include program into the program. In the syntax check, the contents of the include program are also analyzed. Include programs are not loaded at runtime, but are expanded when the program is generated. Once the program has been generated, the load version contains static versions of all of its includes. If you subsequently change an include program, the programs that use it are automatically regenerated.
    ***INCLUDE STARTTXT.
    WRITE: / 'Program started by', SY-UNAME,/ 'on host', SY-HOST, 'date:', SY-DATUM, 'time:', SY-UZEIT.ULINE.
    We can then include this program in any other ABAP program to display a standard list header.
    PROGRAM SAPMZTST.INCLUDE STARTTXT.
    This could produce the following output:
    Program started by KELLERH
    on host ds0025 date: 03/19/1998 time: 09:00:39
    Macros
    If you want to reuse the same set of statements more than once in a program, you can include them in a macro. For example, this can be useful for long calculations or complex WRITE statements. You can only use a macro within the program in which it is defined, and it can only be called in lines of the program following its definition.
    The following statement block defines a macro :
    DEFINE .
    END-OF-DEFINITION.
    Macros do not belong to the definition part of the program. This means that the DEFINE...END-OF-DEFINITION block is not interpreted before the processing blocks in the program. At the same time, however, macros are not operational statements that are executed within a processing block at runtime. When the program is generated, macro definitions are not taken into account at the point at which they are defined
    A macro definition inserts a form of shortcut at any point in a program and can be used at any subsequent point in the program. As the programmer, you must ensure that the macro definition occurs in the program before the macro itself is used. Particular care is required if you use both macros and include programs, since not all include programs are included in the syntax check (exception: TOP include).
    To use a macro, use the following form:
    When the program is generated, the system replaces by the defined statements and each placeholder &i by the parameter
    . You can use macros within macros. However, a macro cannot call itself.
    DATA: RESULT TYPE I,N1 TYPE I VALUE 5,N2 TYPE I VALUE 6.
    DEFINE OPERATION. RESULT = &1 &2 &3.OUTPUT &1 &2 &3 RESULT.END-OF-DEFINITION.
    DEFINE OUTPUT. WRITE: / 'The result of &1 &2 &3 is', &4.END-OF-DEFINITION.
    OPERATION 4 + 3.OPERATION 2 ** 7.OPERATION N2 - N1.
    The produces the following output:
    The result of 4 + 3 is 7
    The result of 2 ** 7 is 128
    The result of N2 - N1 is 1
    Inserting the macro changes nothing in the generated form of the program.
    Check this link
    http://www.sapbrainsonline.com/FAQs/TECHNICAL/SAP_ABAP_MODULARIZATION_FAQ.html
    http://help.sap.com/saphelp_40b/helpdata/en/9f/db970e35c111d1829f0000e829fbfe/content.htm
    http://help.sap.com/saphelp_40b/helpdata/en/9f/db970e35c111d1829f0000e829fbfe/content.htm
    Regards
    Pavan
    Message was edited by:
            Pavan praveen
    Message was edited by:
            Pavan praveen

  • HELP???Question about the technique RM COPY. Please Help

    PLEASE HELP
    Im wondering if anyone can help me. I recently got a reply to a post that I wrote about deleting duplicated files. Mainly MP3s. I have not done this method yet though. Does it work? I have around 9000 mp3s that Itunes seems to always duplicate and I need to get rid of them. Can I open one of my ex-Harddrives that pretty much hold mp3s and run this command? Im looking for a completely faster method than individually deleting them in Itunes. One last question too. Where do I type this command? How do I access the directorys where my mp3s are in my ex-HD? If anyone can help me Id greatly appreciate it. The reply is below my name
    Jamie
    posternut:
    If none of the original filenames contains the lettering " copy", you can do what you want quite easily.
    Open Terminal, navigate to the folder that contains the files, and enter the following command (exactly as it appears here):
    rm *" copy"*
    That's all there is to it. All 9000 duplicate files will be removed very quickly.
    If you need help "navigating to the folder" or if some of your original filenames contain the lettering “ copy”, then post back here.
    Greg

    Launch Terminal.app
    Type cd followed by a space. Do not hit return key just yet.
    In Finder, navigate to folder containing the files you want to blow away.
    Drag and drop that folder (in the finder) into the Terminal.app window. It'll autofill the path to the directory containing the files you're wanting to blow away. Now hit the return key.
    You could type ls (that's a lower-case ell) and see the directory listing of all the files in your current directory. Probably a good idea to do just to doublecheck that you really are in the directory that you want to blow away all these files from.
    Now do what Greg said.
    Don't get impatient because Terminal is just sitting there and you're not getting an immediate command prompt. It'll take a while to blow away 9000 files.
    For entertainment, instead of rm *" copy"* use rm -v *" copy"* so you can watch all 9000 file names be printed in your terminal window as they are being deleted.
    Will it work? Oh yes .... irreversibly (if it doesn't, that's coz' there are some file ownership and/or file permission issues that need to be looked at, but assuming those are "compatible" with your current Terminal user environment, those guys'll be toast. Any file that's in the working directory where you are in Terminal that has the five characters " copy" in its filename will be history.
    The assumption in Greg's command is that all the files you want to blow away all reside in the one directory that you have navigated to.

  • HELP???Question about the technique RM COPY

    Im wondering if anyone can help me. I recently got a reply to a post that I wrote about deleting duplicated files. Mainly MP3s. I have not done this method yet though. Does it work? I have around 9000 mp3s that Itunes seems to always duplicate and I need to get rid of them. Can I open one of my ex-Harddrives that pretty much hold mp3s and run this command? Im looking for a completely faster method than individually deleting them in Itunes. One last question too. Where do I type this command? If anyone can help me Id greatly appreciate it. The reply is below my name
    Jamie
    posternut:
    If none of the original filenames contains the lettering " copy", you can do what you want quite easily.
    Open Terminal, navigate to the folder that contains the files, and enter the following command (exactly as it appears here):
    rm *" copy"*
    That's all there is to it. All 9000 duplicate files will be removed very quickly.
    If you need help "navigating to the folder" or if some of your original filenames contain the lettering “ copy”, then post back here.
    Greg

    Launch Terminal.app
    Type cd followed by a space. Do not hit return key just yet.
    In Finder, navigate to folder containing the files you want to blow away.
    Drag and drop that folder (in the finder) into the Terminal.app window. It'll autofill the path to the directory containing the files you're wanting to blow away. Now hit the return key.
    You could type ls (that's a lower-case ell) and see the directory listing of all the files in your current directory. Probably a good idea to do just to doublecheck that you really are in the directory that you want to blow away all these files from.
    Now do what Greg said.
    Don't get impatient because Terminal is just sitting there and you're not getting an immediate command prompt. It'll take a while to blow away 9000 files.
    For entertainment, instead of rm *" copy"* use rm -v *" copy"* so you can watch all 9000 file names be printed in your terminal window as they are being deleted.
    Will it work? Oh yes .... irreversibly (if it doesn't, that's coz' there are some file ownership and/or file permission issues that need to be looked at, but assuming those are "compatible" with your current Terminal user environment, those guys'll be toast. Any file that's in the working directory where you are in Terminal that has the five characters " copy" in its filename will be history.
    The assumption in Greg's command is that all the files you want to blow away all reside in the one directory that you have navigated to.

  • About webdynpro techniques!

    I have to read data from reference database(read-only) (SAP) by calling Function to access database then I have to calculate and store it somewhere and other person can access and get this data. I wonder where can I store these data. Does web-dynpro support any techniques to do this?
    Edited by: Dinh Thieu Thien on Jun 26, 2008 11:05 AM

    You can find information at "Component-based development from Database Table to Web Dynpro using NWDI"

  • Question about sort technique

    we have a report that shows a list of contacts and we have an sub-report that displays (1) one field max(history completed date) so we can see that last time the contact was talked to.   The issue is: if we want to have a sort parameter sorts on the max(history completed date) field.  How would we do this?
    1) pass the field value from the sub-report to the main report?
    2) don't created a sub-report, create field value in the main report using sql
    Please comment on the approaches above or any other methods that I might not have thought of.

    Better yet, here's a sample of what your query should look like.
    Insert it into 'Add Command'
    select contact_names,
    (select max(lasttime) from time.table b where a.contactID=b.contactID)
    from table.contacts a
    Enjoy,
    Zack H.

  • Sestio about datatransfer via readControl() in jUSB

    Hi there.
    I have a small question related to the development of a smal java program which is to communicate with a range of USB devices.
    The first problem is that the development have to be done on a windows platform, where jUSB unfortunantly isn't fully functional. Nevertheless it seems that the functions we have to use is present in the windows version but I do have a small question related to the data transfer since the windows version doesn't support bulk transfer it seems that we are forced to use the control transfer mode. But I haven't any decisive information on if it is possible to use the readControl() to transfer small amounts of data from the device - and if so, what is required to do this, do the hardware need to work in a specific way in order to get this to work...Please help, we're desperate :)
    If you need any other information in order to assist, please let me know.
    Yours sincerely
    Christian Rasmussen

    http://sourceforge.net/mail/?group_id=4590

  • Need advice/idea about Image gallery

    Hello to ALL!!!
    I'm trying to make an dynamic image gallery WITH!!! some
    active buttons above (for example: BUTTON1 with function "delete"
    and BUTTON2 with function "update") a picture and some "dataoutput"
    below (for example:Price). So, separate cell must look like:
    BUTTON1 BUTTON2
    <Image>
    PRICE
    For implementation this task I have:
    1) mySQL database "gallery" with table "test" and columns
    "Id", "path to image", "Price"
    2) 2 gifs: BUTTON1, BUTTON2
    Before my first trying I thought that it's simple, and I've
    tried:
    <!---action page---->
    <cfquery name="qTest" datasource="gallery">
    SELECT * FROM test
    </cfquery>
    <div id=imagecont>
    <cfoutput>
    <cfloop query="qTest">
    <img src="../Button1.gif />
    <img src="../Button2.gif /><br>
    <img src="#qTest.path to image#" />
    <p>#qTest.Price#</p>
    </cfloop>
    </cfoutput>
    </div>
    And it worked normal. BUT!!! Looping had a vertical
    direction! And any CSS rules that I've applied to DIV "imagecont"
    (weight, height) hadn't any effect.
    So, what I've get:
    I see all necessary information (on browser), but I don't
    know, how to format it with my dreaweawer cs3 and CSS.
    And I afraid that I've chosen a "wrong method" (I mean my
    code above)
    Please, give me some recommendations or advices.
    How can i archive my needs?
    How to use CSS in div tag, which includes <cfloop>
    code. I've also tried to use CSS with structure like:
    <div id=a>
    <cfoutput>
    <cfloop >
    <div id=b>
    DATA
    </div>
    </cfloop>
    </cfoutput>
    </div>
    But (div a)'s CSS rule HEIGHT take's no effect on <div
    id=b> :(
    And what about useful technique for displaying " action
    buttons" above each image in dynamic image gallery???
    Great THANKS for your answers/comments!!!!

    the css attribute you are looking for is FLOAT.
    see if something like
    http://www.photos-of-laos.org/top-rated.cfm
    is
    what you are after in general images layout terms. feel free
    to check
    the generated html :).
    re general css knowledge i highly recommend the book
    "Bulletproof CSS"
    by Mark Grabinski.
    re the 2 buttons above the image: consider turning them into
    css image
    overlays instead (when the buttons appear OVER [not above]
    the image
    only when a user mouses over) - it looks much better that
    way.
    hth
    Azadi Saryev
    Sabai-dee.com
    http://www.sabai-dee.com/

  • Sorting technique used by oracle for "order by" clause.

    Hi All,
    it could be very help to me if you provide some information about sorting technique used by oracle engine for order by clause.
    Issue i am facing :
    Table : xx
    Line Date
    1 05-06-2013 00:00:00
    2 05-06-2013 00:00:00
    when we query above table using order by date, it is returning line 2 prior to line 1. we would like to know why it is returning line 2 first?
    Regards,
    Ram

    >
    it could be very help to me if you provide some information about sorting technique used by oracle engine for order by clause.
    >
    Well ok - but be warned that many people wind up being sorry they ask that question. Hopefully Hemant's answer is what you really wanted.
    See 'Linguistic Sorting and String Searching' in the Oracle® Database Globalization Support Guide
    http://docs.oracle.com/cd/B28359_01/server.111/b28298/ch5lingsort.htm
    Sorting will be controlled by the settings of NLS_LANGUAGE, NLS_SORT and NLS_COMP.
    Here is the doc page for NLS_SORT
    http://docs.oracle.com/cd/B28359_01/server.111/b28298/ch3globenv.htm#i1008393
    >
    NLS_SORT specifies the type of sort for character data. It overrides the default value that is derived from NLS_LANGUAGE.
    NLS_SORT contains either of the following values:
    NLS_SORT = BINARY | sort_name
    BINARY specifies a binary sort. sort_name specifies a linguistic sort sequence.
    >
    And the one for NLS_COMP
    http://docs.oracle.com/cd/B28359_01/server.111/b28298/ch3globenv.htm#i1008458
    >
    The value of NLS_COMP affects the comparison behavior of SQL operations.
    You can use NLS_COMP to avoid the cumbersome process of using the NLSSORT function in SQL statements when you want to perform a linguistic comparison instead of a binary comparison. When NLS_COMP is set to LINGUISTIC, SQL operations perform a linguistic comparison based on the value of NLS_SORT. A setting of ANSI is for backward compatibility; in general, you should set NLS_COMP to LINGUISTIC when you want to perform a linguistic comparison.

  • Editing techniques podcast

    I watched an interesting MacBreak Studio podcast recently in which Billy Fox talks about his techniques using Final Cut's timeline. You might pick up some project organization ideas.
    Here's a link to MacBreak Studio in iTunes http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=287113664 Look for "The Art of Editing Part 4 - The Feature Editor's Timeline".
    There's a list of Billy Fox's work on IMDB http://www.imdb.com/name/nm0288886/
    Ross Hunter
    Orange, VA

    Ian,
    When the window opens in iTunes you can either highlight the subject podcast and click the 'play' arrow at the top left of the screen (I don't listen to/watch podcasts without downloading, so I just assume it works that way.), or click the 'subscribe' button in the upper part of the window to the right of the "MacBreak Studio" logo. Once you've subscribed, iTunes will download the latest podcast and give you the opportunity to download older ones.
    Choose "Podcasts" in the LIBRARY list at the left side of your screen and you can "get episode" for the timeline editing podcast. Once it downloads, you can "unsubscribe" if you don't want any more episodes.
    The timeline editing episode is 49.4 megs.
    Ross Hunter
    Orange, VA

  • Which is faster -  Member formula or Calculation script?

    Hi,
    I have a very basic question, though I am not sure if there is a definite right or wrong answer.
    To keep the calculation scripts to a minimum, I have put all the calculations in member formula.
    Which is faster - Member formula or calculation scripts? Because, if i am not mistaken, FIX cannot be used in member formulas, so I need to resort to the use of IF, which is not index driven!
    Though in the calculation script,while aggregating members which have member formula, I have tried to FIX as many members as I can.
    What is the best way to optimize member formulas?
    I am using Hyperion Planning and Essbase 11.1.2.1.
    Thanks.

    Re the mostly "free" comment -- if the block is in memory (qualification #1), and the formula is within the block (qualification #2), the the expensive bit was reading the block off of the disk and expanding it into memory. Once that is done, I typically think of the dynamic calcs as free as the amount of data being moved about is very, very, very small. That goes out the window if the formula pulls lots of blocks to value and they get cycled in and out of the cache. Then they are not free and are potentially slower. And yes, I have personally shot myself in the foot with this -- I wrote a calc that did @PRIORS against a bunch of years. It was a dream when I pulled 10 cells. And then I found out that the client had reports that pulled 5,000. Performance when right down the drain at that point. That one was 100% my fault for not forcing the client to show me what they were reporting.
    I think your reference to stored formulas being 10-15% faster than calc script formulas deals with if the Formulas are executed from within the default calc. When the default Calc is used, it precompiles the formulas and handles many two pass calculations in a single pass. Perhaps that is what you are thinking of.^^^I guess that must be it. I think I remember you talking about this technique at one of your Kscope sessions and realizing that I had never tried that approach. Isn't there something funky about not being able to turn off the default calc if a user has calc access? I sort of thing so. I typically assing a ; to the default calc so it can't do anything.
    Regards,
    Cameron Lackpour

  • Page gap in DW CS6 tutorial. Please help!

    I am getting this gap in my page and it started just after I added this <nav> bar. I have done this lesson several times starting from scratch and it still gives me this gap. I am not sure if the book is missing something or it's me. The book shows no gap in the examples. I would greatly appreciate any help. I am a little new to DW. I took HTML in high school about 16 years ago so I understand some code by hand. Thanks for your time.
    <!doctype html>
    <html>
    <head>
    <meta charset="utf-8">
    <title>Untitled Document</title>
    <style type="text/css">
    <!--
    body {
    font: 100%/1.4 Verdana, Arial, Helvetica, sans-serif;
    background-color: #FFF;
    margin: 0;
    padding: 0;
    color: #000;
    /* ~~ Element/tag selectors ~~ */
    ul, ol, dl { /* Due to variations between browsers, it's best practices to zero padding and margin on lists. For consistency, you can either specify the amounts you want here, or on the list items (LI, DT, DD) they contain. Remember that what you do here will cascade to the .nav list unless you write a more specific selector. */
    padding: 0;
    margin: 0;
    h1, h2, h3, h4, h5, h6, p {
    margin-top: 0;  /* removing the top margin gets around an issue where margins can escape from their containing block. The remaining bottom margin will hold it away from any elements that follow. */
    padding-right: 15px;
    padding-left: 15px; /* adding the padding to the sides of the elements within the blocks, instead of the block elements themselves, gets rid of any box model math. A nested block with side padding can also be used as an alternate method. */
    a img { /* this selector removes the default blue border displayed in some browsers around an image when it is surrounded by a link */
    border: none;
    /* ~~ Styling for your site's links must remain in this order - including the group of selectors that create the hover effect. ~~ */
    a:link {
    color: #42413C;
    text-decoration: underline; /* unless you style your links to look extremely unique, it's best to provide underlines for quick visual identification */
    a:visited {
    color: #6E6C64;
    text-decoration: underline;
    a:hover, a:active, a:focus { /* this group of selectors will give a keyboard navigator the same hover experience as the person using a mouse. */
    text-decoration: none;
    /* ~~ This fixed width container surrounds all other blocks ~~ */
    .container {
    width: 950px;
    background-color: #FFFFFF;
    margin: 0 auto; /* the auto value on the sides, coupled with the width, centers the layout */
    border: 2px solid #060;
    /* ~~ The header is not given a width. It will extend the full width of your layout. ~~ */
    header {
    background-color: #090;
    background-image: url(Lessons/images/banner.jpg);
    background-repeat: no-repeat;
    height: 130px;
    /* ~~ These are the columns for the layout. ~~
    1) Padding is only placed on the top and/or bottom of the block elements. The elements within these blocks have padding on their sides. This saves you from any "box model math". Keep in mind, if you add any side padding or border to the block itself, it will be added to the width you define to create the *total* width. You may also choose to remove the padding on the element in the block element and place a second block element within it with no width and the padding necessary for your design.
    2) No margin has been given to the columns since they are all floated. If you must add margin, avoid placing it on the side you're floating toward (for example: a right margin on a block set to float right). Many times, padding can be used instead. For blocks where this rule must be broken, you should add a "display:inline" declaration to the block element's rule to tame a bug where some versions of Internet Explorer double the margin.
    3) Since classes can be used multiple times in a document (and an element can also have multiple classes applied), the columns have been assigned class names instead of IDs. For example, two sidebar blocks could be stacked if necessary. These can very easily be changed to IDs if that's your preference, as long as you'll only be using them once per document.
    4) If you prefer your nav on the left instead of the right, simply float these columns the opposite direction (all left instead of all right) and they'll render in reverse order. There's no need to move the blocks around in the HTML source.
    .sidebar1 {
    float: left;
    width: 180px;
    background-color: #EADCAE;
    padding-bottom: 10px;
    .content {
    padding: 10px 0;
    width: 770px;
    float: right;
    /* ~~ This grouped selector gives the lists in the .content area space ~~ */
    .content ul, .content ol {
    padding: 0 15px 15px 40px; /* this padding mirrors the right padding in the headings and paragraph rule above. Padding was placed on the bottom for space between other elements on the lists and on the left to create the indention. These may be adjusted as you wish. */
    /* ~~ The navigation list styles (can be removed if you choose to use a premade flyout menu like Spry) ~~ */
    ul.nav {
    list-style: none; /* this removes the list marker */
    border-top: 1px solid #666; /* this creates the top border for the links - all others are placed using a bottom border on the LI */
    margin-bottom: 15px; /* this creates the space between the navigation on the content below */
    ul.nav li {
    border-bottom: 1px solid #666; /* this creates the button separation */
    ul.nav a, ul.nav a:visited { /* grouping these selectors makes sure that your links retain their button look even after being visited */
    padding: 5px 5px 5px 15px;
    display: block; /* this gives the link block properties causing it to fill the whole LI containing it. This causes the entire area to react to a mouse click. */
    width: 160px;  /*this width makes the entire button clickable for IE6. If you don't need to support IE6, it can be removed. Calculate the proper width by subtracting the padding on this link from the width of your sidebar container. */
    text-decoration: none;
    background-color: #090;
    color: #FFC;
    ul.nav a:hover, ul.nav a:active, ul.nav a:focus { /* this changes the background and text color for both mouse and keyboard navigators */
    background-color: #ADB96E;
    color: #FFF;
    /* ~~ The footer ~~ */
    footer {
    padding: 10px 0;
    background-color: #CCC49F;
    position: relative;/* this gives IE6 hasLayout to properly clear */
    clear: both; /* this clear property forces the .container to understand where the columns end and contain them */
    /*HTML 5 support - Sets new HTML 5 tags to display:block so browsers know how to render the tags properly. */
    header, section, footer, aside, article, figure {
    display: block;
    #apDiv1 {
    position: absolute;
    width: 170px;
    height: 158px;
    z-index: 1;
    margin-top: 10px;
    margin-left: 30px;
    nav p {
    font-size: 90%;
    color: #FFC;
    text-align: right;
    font-weight: bold;
    background-color: #090;
    padding-top: 5px;
    padding-right: 20px;
    padding-bottom: 5px;
    border-top-width: 2px;
    border-top-style: solid;
    border-top-color: #060;
    -->
    </style><!--[if lt IE 9]>
    <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
    <![endif]--></head>
    <body>
    <div class="container">
      <div id="apDiv1"><img src="Lessons/images/butterfly-ovr.png" width="170" height="158" alt="GreenStart Logo"></div>
      <header></header>
        <div class="sidebar1">
        <ul class="nav">
          <li><a href="#">Green News</a></li>
          <li><a href="#">Green Products</a></li>
          <li><a href="#">Green Events</a></li>
          <li><a href="#">Green Travel</a></li>
          <li><a href="#">Green Tips</a></li>
        </ul>
        <aside>
          <p> The above links demonstrate a basic navigational structure using an unordered list styled with CSS. Use this as a starting point and modify the properties to produce your own unique look. If you require flyout menus, create your own using a Spry menu, a menu widget from Adobe's Exchange or a variety of other javascript or CSS solutions.</p>
          <p>If you would like the navigation along the top, simply move the ul to the top of the page and recreate the styling.</p>
        </aside>
      <!-- end .sidebar1 --></div>
      <article class="content">
        <h1>Instructions</h1>
        <section>
         <h2>How to use this document</h2>
          <p>Be aware that the CSS for these layouts is heavily commented. If you do most of your work in Design view, have a peek at the code to get tips on working with the CSS for the fixed layouts. You can remove these comments before you launch your site. To learn more about the techniques used in these CSS Layouts, read this article at Adobe's Developer Center - <a href="http://www.adobe.com/go/adc_css_layouts.http://www.adobe.com/go/adc_css_layouts">http://www.adobe.com/go/adc_css_layouts</a>.</p>
        </section>
        <section>
          <h2>Clearing Method</h2>
          <p>Because all the columns are floated, this layout uses a clear:both declaration in the footer rule.  This clearing technique forces the .container to understand where the columns end in order to show any borders or background colors you place on the .container. If your design requires you to remove the footer from the .container, you'll need to use a different clearing method. The most reliable will be to add a &lt;br class=&quot;clearfloat&quot; /&gt; or &lt;div  class=&quot;clearfloat&quot;&gt;&lt;/div&gt; after your final floated column (but before the .container closes). This will have the same clearing effect. </p>
        </section>
        <section>
          <h2>Logo Replacement</h2>
          <p>An image placeholder was used in this layout in the header where you'll likely want to place  a logo. It is recommended that you remove the placeholder and replace it with your own linked logo. </p>
          <p> Be aware that if you use the Property inspector to navigate to your logo image using the SRC field (instead of removing and replacing the placeholder), you should remove the inline background and display properties. These inline styles are only used to make the logo placeholder show up in browsers for demonstration purposes. </p>
          <p>To remove the inline styles, make sure your CSS Styles panel is set to Current. Select the image, and in the Properties pane of the CSS Styles panel, right click and delete the display and background properties. (Of course, you can always go directly into the code and delete the inline styles from the image or placeholder there.)</p>
        </section>
        <section>
          <h2>Backgrounds</h2>
          <p>By nature, the background color on any block element will only show for the length of the content. This means if you're using a background color or border to create the look of a side column, it won't extend all the way to the footer but will stop when the content ends. If the .content block will always contain more content, you can place a border on the .content block to divide it from the column.</p>
        </section>
        <!-- end .content --></article>
      <footer>
        <p>This footer contains the declaration position:relative; to give Internet Explorer 6 hasLayout for the footer and cause it to clear correctly. If you're not required to support IE6, you may remove it.</p>
        <address>
          Address Content
        </address>
      </footer>
    <!-- end .container --></div>
    </body>
    </html>

    Sorry about that. I am not exactly sure where the problem is, but I know it takes place after I put the <nav> in (in the html portion). If I understand what I am learning, the CSS at the top will structure my html code so I would have thought the CSS tageting my nav would be the focus. Maybe it is a different section though.
    CSS part:
    nav p {
    font-size: 90%;
    color: #FFC;
    text-align: right;
    font-weight: bold;
    background-color: #090;
    padding-top: 5px;
    padding-right: 20px;
    padding-bottom: 5px;
    border-top-width: 2px;
    border-top-style: solid;
    border-top-color: #060;
    HTML part: (bold italic is the part I added)
    <body>
    <div class="container">
      <div id="apDiv1"><img src="Lessons/images/butterfly-ovr.png" width="170" height="158" alt="GreenStart Logo"></div>
      <header></header>
      <nav>
        <p>Home | About Us | Contact Us</p>
      </nav>
      <div class="sidebar1">
        <ul class="nav">
          <li><a href="#">Green News</a></li>
          <li><a href="#">Green Products</a></li>
          <li><a href="#">Green Events</a></li>
          <li><a href="#">Green Travel</a></li>
          <li><a href="#">Green Tips</a></li>
        </ul>

  • How do I remove NaN values from an array?

    I'm trying to test if the values in an array are less than 0.001. All of them are...BUT the problem is that some of the elements in the array are NaN. I'd like to do one of two things:
    1. Remove the NaN elements from the array and set them to zero to make the test work.
    2. Make the test understand that NaN elements are okay.
    The test results in a boolean array of T/F values. If all of the values of the boolean array are T, it will result in a single boolean value of T. In #2, I am saying that I want it to test if an element of the array is less than 0.001 OR equal to NAN.
    Solved!
    Go to Solution.

    Your statements don't make much sense. It's irrelevant how many NaNs are in the array. A sort will move them all to the bottom. You had said you wanted to find out if all the elements in an array are less than 0.001, and that you've got some NaNs in there. Well, this will do that:
    twolfe13 wrote:
     I did see how to remove NaN once, but couldn't determine a good way to generalize it other than doing a test loop. I thought there might have been a simple function that I overlooked to do this.
    As I noted, there have been several posts in the past about efficient techniques for removing certain elements out of an array. Seek, and ye shall find.
    Joseph Loo wrote:
    Have you look at the coerce function where you can set the lower and upper limit?
    That won't do anything for NaN. Or perhaps I misunderstood what you are suggesting to do?
    Attachments:
    NaN sort.png ‏20 KB
    NaN sort small.png ‏5 KB

Maybe you are looking for

  • Do not have privileges to save and publish on iWeb :(

    I am a newer employee at my company and we publish podcasts. Unfortunately, my iMac account can not publish to iWeb. Here are the messages I recieve when I try to publish... first: SAVE FAILED You do not have permission to make changes to that file T

  • Sharing Mac with two iTunes accounts

    Recently bout an Mac air In our family we have one Mac but two accounts for iTunes Can my wife add her iTunes library to guests without hurtin either her library on her iPod or my library on the Mac? Thanks

  • Context

    hi... what is context? where we have to use the context thanks advance Pasi

  • U110 user guide - Profile your machine

    Profile your machine at http://consumersupport.lenovo.com to keep up to date with current drivers and revisions. This is from the User Guide. What does it mean? And how to do it? I am used to my thinkpad being updated with driver updates and such aut

  • Ipod nano screen is white but music still plays

    I have a second generation nano and a couple of months ago I was in my car and turned on my iPod and it powered on but the screen was white. It still played music but I couldn't see what I was playing. Any ideas on how I might be able to fix this???