How to process very large internal tables and stop time limit

Hello Experts,
I am currently having a problem on how to fix a certain report where we process more than 500 thousand
records in the internal table. I can't think of any solution that can make the below code any faster.
I just checked in our prod server and the error time limit exceeded stops in the loop statement. Anyway,
Below is the code. Any input will be appreciated. Thanks guys and take care!
Get sales document and corresponding line item
  SELECT avbeln bposnr a~auart
         avkorg avtweg a~kunnr
         bmatnr bpstyv b~spart
    FROM vbak AS a
   INNER JOIN vbap AS b
      ON avbeln = bvbeln
   APPENDING TABLE lt_vbap
   WHERE a~auart IN lr_auart
     AND a~vbeln IN s_vbeln
     AND a~vbeln IN s_vbill
     AND a~vbtyp EQ p_vbtyp.
  LOOP AT lt_vbap ASSIGNING <wa_vbap>.
    IF <wa_vbap>-auart EQ 'ZUCI' OR
       <wa_vbap>-auart EQ 'ZURV' OR
       <wa_vbap>-auart EQ 'ZUPR'.
    Check ifa delivery document has been created
      CLEAR wa_vbill.
      SELECT SINGLE vbeln
        FROM vbfa
        INTO wa_vbill
       WHERE vbelv = <wa_vbap>-vbeln
         AND ( ( vbtyp_n EQ 'J' AND vbtyp_v = 'C' )
          OR ( vbtyp_n EQ 'T' AND vbtyp_v = 'H' ) ).
      IF sy-subrc <> 0.
        <wa_vbap>-del_ind = 'X'.
        CONTINUE.
      ELSE.
      Check if within selection parameters
        CLEAR wa_likp.
        READ TABLE lt_likp INTO wa_likp WITH KEY vbeln = wa_vbill.
        IF sy-subrc <> 0.
          SELECT SINGLE *
            FROM likp
            INTO wa_likp
           WHERE vbeln = wa_vbill.
          APPEND wa_likp TO lt_likp.
        ENDIF.
        IF NOT wa_likp-wadat_ist IN s_erdat.
          <wa_vbap>-del_ind = 'X'.
          CONTINUE.
        ENDIF.
      ENDIF.
    ELSE.
  Check if this has already been billed
      CLEAR wa_vbill.
      SELECT SINGLE vbeln
        FROM vbfa
        INTO wa_vbill
       WHERE vbelv = <wa_vbap>-vbeln
         AND ( ( vbtyp_n EQ 'M' AND vbtyp_v = 'C' )
          OR ( vbtyp_n EQ 'O' AND vbtyp_v = 'H' ) ).
      IF sy-subrc <> 0.
        <wa_vbap>-del_ind = 'X'.
        CONTINUE.
      ELSE.
      Check if within selection parameters
        CLEAR wa_vbrk.
        READ TABLE lt_vbrk INTO wa_vbrk WITH KEY vbeln = wa_vbill.
        IF sy-subrc <> 0.
          SELECT SINGLE vbeln fkdat
            FROM vbrk
            INTO wa_vbrk
           WHERE vbeln = wa_vbill.
          APPEND wa_vbrk TO lt_vbrk.
        ENDIF.
        IF NOT wa_vbrk-fkdat IN s_erdat.
          <wa_vbap>-del_ind = 'X'.
          CONTINUE.
        ENDIF.
      ENDIF.
    ENDIF.
  Get Material Type and Division
    IF <wa_vbap>-spart IS NOT INITIAL.
      SELECT SINGLE mtart
        FROM mara
        INTO lv_mtart
       WHERE matnr = <wa_vbap>-matnr.
    ELSE.
      SELECT SINGLE mtart spart
        FROM mara
        INTO (lv_mtart,<wa_vbap>-spart)
       WHERE matnr = <wa_vbap>-matnr.
    ENDIF.
  If material division is same as parameter division
    IF <wa_vbap>-spart = p_spart.
  If material is subsidiary-owned
   IF <wa_vbap>-spart in lr_spart.
    If customer is the same as that of parameter division
      IF <wa_vbap>-kunnr NE lr_kunnr OR <wa_vbap>-auart EQ 'ZUDO' OR <wa_vbap>-auart EQ 'ZUS3'.
      If item is a free good, tag order type as 'ZUPR' to treat
      the item the same way as 'ZUPR'
        IF <wa_vbap>-pstyv = 'TANN' OR
           <wa_vbap>-pstyv = 'ZKNF' OR
           <wa_vbap>-pstyv = 'ZKNN' OR
           <wa_vbap>-pstyv = 'ZFLO' OR
           <wa_vbap>-pstyv = 'ZKBF' OR
           <wa_vbap>-pstyv = 'ZKLN' OR
           <wa_vbap>-pstyv = 'ZREN'.
          lv_auart = <wa_vbap>-auart.
          IF lv_auart EQ 'ZUPR'.
            CLEAR <wa_vbap>-pstyv.
          ENDIF.
          <wa_vbap>-auart = 'ZUPR'.
          CLEAR: lv_mtart.
        ENDIF.
      Set Cost of Goods Sold Account
        <wa_vbap>-cogshkont = '0050000010'.
        CASE <wa_vbap>-auart.
          WHEN 'ZUPR'.
            CASE lv_mtart.
              WHEN 'ZUL4'.
                <wa_vbap>-del_ind = 'X'.
                CONTINUE.
              WHEN OTHERS.
              Check if division is defined in mapping table
                READ TABLE lt_ulsub INTO wa_ulsub
                     WITH KEY spart = <wa_vbap>-spart.
                IF sy-subrc = 0.
                  <wa_vbap>-kostl = wa_ulsub-kostlp.
                  <wa_vbap>-bukrs = wa_ulsub-bukrsp.
                  <wa_vbap>-type = 'TP'.
                Set Cost of Goods Sold Account
                  IF lv_auart = 'ZUPR'.
                    <wa_vbap>-cogshkont = '0050000006'.
                  ENDIF.
                ELSE.
                  <wa_vbap>-del_ind = 'X'.
                  CONTINUE.
                ENDIF.
            ENDCASE.
          WHEN 'ZUCI' OR 'ZUDO' OR 'ZURD' OR 'ZUS3'.
        Get cost center from header text
            PERFORM get_cost_center USING <wa_vbap>-vbeln
                                 CHANGING <wa_vbap>-kostl.
*  Change by LGTE 11-02-2006
        Check if Medvale sales
            IF <wa_vbap>-auart EQ 'ZUCI' AND <wa_vbap>-kostl IS INITIAL.
              <wa_vbap>-del_ind = 'X'.
              CONTINUE.
        Check if UL Cost Center
            ELSEIF <wa_vbap>-kostl NE gv_ul_kostl.
           IF <wa_vbap>-kostl NE gv_ul_kostl.
*  End change.
          Get material division and check if subsidiary product
             SELECT SINGLE spart FROM mara INTO <wa_vbap>-spart
             WHERE matnr = <wa_vbap>-matnr.
              READ TABLE lt_ulsub INTO wa_ulsub
                   WITH KEY spart = <wa_vbap>-spart.
              IF sy-subrc = 0.
              Get requestor's company code from cost center data
                SELECT SINGLE bukrs
                  FROM csks
                  INTO <wa_vbap>-bukrs
                 WHERE kokrs =  lc_kokrs
                   AND kostl =  <wa_vbap>-kostl
                   AND datbi GE sy-datum
                   AND datab LE sy-datum.
                IF sy-subrc = 0.
                For donations, only include if a subsidiary company is donating
                  IF <wa_vbap>-auart EQ 'ZUDO' OR <wa_vbap>-auart EQ 'ZUS3'.
                    IF NOT <wa_vbap>-kunnr IN lr_kunnrnt.
                      <wa_vbap>-del_ind = 'X'.
                      CONTINUE.
                    ENDIF.
                   CHECK <wa_vbap>-kunnr IN lr_kunnrnt.
                  ENDIF.
                For ZUCI, if the company code of the costcenter is UL, do not include
                  IF <wa_vbap>-bukrs EQ gc_ul_bukrs.
                    <wa_vbap>-del_ind = 'X'.
                    CONTINUE.
                  ENDIF.
                  IF <wa_vbap>-bukrs = wa_ulsub-bukrsp.
                    <wa_vbap>-type = 'RV'.
                  ELSE.
                    <wa_vbap>-type = 'RV'.
                  ENDIF.
                ELSE.
                Check if customer defined in table ZFI_DONATIONS
                  SELECT SINGLE kunnr FROM zfi_donations INTO <wa_vbap>-kostl
                    WHERE kunnr = <wa_vbap>-kostl.
                  IF sy-subrc <> 0.
                    lv_error = 'X'.
                    CONCATENATE 'Cost center/Customer' <wa_vbap>-kostl
                                'does not exist. Please check Sales Order'
                                <wa_vbap>-vbeln
                                INTO lt_disp-message SEPARATED BY space.
                    lt_disp-type = 'E'.
                    <wa_vbap>-del_ind = 'X'.
                    APPEND lt_disp.
                    CONTINUE.
                  ELSE.
                    <wa_vbap>-type = 'RV'.
                  ENDIF.
                ENDIF.
              ELSE.
                <wa_vbap>-del_ind = 'X'.
                CONTINUE.
              ENDIF.
            ELSE.
              <wa_vbap>-del_ind = 'X'.
              CONTINUE.
            ENDIF.
          WHEN OTHERS.
            <wa_vbap>-del_ind = 'X'.
            CONTINUE.
        ENDCASE.
      ELSE.
        <wa_vbap>-del_ind = 'X'.
        CONTINUE.
      ENDIF.
    ELSE.
      <wa_vbap>-del_ind = 'X'.
      CONTINUE.
    ENDIF.
  Get company code description
    SELECT SINGLE butxt FROM t001 INTO <wa_vbap>-butxt
     WHERE bukrs = <wa_vbap>-bukrs.
    IF sy-subrc <> 0.
      SELECT SINGLE name1 FROM kna1 INTO <wa_vbap>-butxt
       WHERE kunnr = <wa_vbap>-kostl.
    ENDIF.
Change by LGTE on 11-02-2006
Get Transaction Type
    CASE <wa_vbap>-auart.
      WHEN 'ZUPR'. "UL Promo/Samples
        IF <wa_vbap>-pstyv = 'TANN' OR
           <wa_vbap>-pstyv = 'ZKNF' OR
           <wa_vbap>-pstyv = 'ZKNN' OR
           <wa_vbap>-pstyv = 'ZFLO' OR
           <wa_vbap>-pstyv = 'ZKBF' OR
           <wa_vbap>-pstyv = 'ZKLN' OR
           <wa_vbap>-pstyv = 'ZREN'.
          <wa_vbap>-ltext = 'Free Goods'.
        ELSE.
          <wa_vbap>-ltext = 'Product Samples'.
        ENDIF.
      WHEN 'ZUDO'. "Donations - R/3
        <wa_vbap>-ltext = 'Donations - R/3'.
      WHEN 'ZUCI'. "Donations - ZUCI
        <wa_vbap>-ltext = 'Donations - ZUCI'.
      WHEN 'ZURD' OR 'ZUS3'. "UL Returns - Donation
        <wa_vbap>-ltext = 'UL Returns - Donation'.
    ENDCASE.
Get material description
    SELECT SINGLE maktx
      FROM makt
      INTO <wa_vbap>-maktx
     WHERE matnr = <wa_vbap>-matnr
       AND spras = sy-langu.
Get division from material master
   SELECT SINGLE spart FROM mara INTO <wa_vbap>-spart
    WHERE matnr = <wa_vbap>-matnr.
Get division description
    SELECT SINGLE vtext
      FROM tspat
      INTO <wa_vbap>-vtext
     WHERE spras = sy-langu
       AND spart = <wa_vbap>-spart.
Get Valuation Class
    SELECT SINGLE bklas
      FROM mbew
      INTO lv_bklas
     WHERE matnr = <wa_vbap>-matnr.
Determine G/L of FG Based on Valuation Class
    READ TABLE lt_val_cls INTO wa_val_cls WITH TABLE KEY bklas = lv_bklas.
    <wa_vbap>-fghkont = wa_val_cls-hkont.
Determine Cost Center of Cogs Account
    READ TABLE lt_ulsub INTO wa_ulsub WITH TABLE KEY spart = <wa_vbap>-spart.
    <wa_vbap>-cogskostl = wa_ulsub-kostlp.

Hi!
First of all, don't use SELECT SINGLE inside of LOOP,
instead  SELECT all relevated rows before LOOP in intertal tables (using FOR ALL ENTRIES) and then use
READ TABLE WITH KEY BINARY SEARCH.
it will match faster.
for example:
IF NOT lt_vbap[] IS INITIAL.
SELECT vbeln
FROM vbfa
INTO lt_vbill
FOR ALL ENTRIES IN lt_vbap
WHERE vbelv = lt_vbap-vbeln.
ENDIF.
SORT lt_vbap BY vbeln.
READ TABLE lt_vbill WITH KEY vbeln = <wa_vbap>-vbeln
BINARY SEARCH.

Similar Messages

  • How to do parallel processing with dynamic internal table

    Hi All,
    I need to implement parallel processing that involves dynamically created internal tables. I tried doing so using RFC function modules (using starting new task and other such methods) but didn't get success this requires RFC enabled function modules and at the same time RFC enabled function modules do not allow generic data type (STANDARD TABLE) which is needed for passing dynamic internal tables. My exact requirement is as follows:
    1. I've large chunk of data in two internal tables, one of them is formed dynamically and hence it's structure is not known at the time of coding.
    2. This data has to be processed together to generate another internal table, whose structure is pre-defined. But this data processing is taking very long time as the number of records are close to a million.
    3. I need to divide the dynamic internal table into (say) 1000 records each and pass to a function module and submit it to run in another task. Many such tasks will be executed in parallel.
    4. The function module running in parallel can insert the processed data into a database table and the main program can access it from there.
    Unfortunately, due to the limitation of not allowing generic data types in RFC, I'm unable to do this. Does anyone has any idea how to implement parallel processing using dynamic internal tables in these type of conditions.
    Any help will be highly appreciated.
    Thanks and regards,
    Ashin

    try the below code...
      DATA: w_subrc TYPE sy-subrc.
      DATA: w_infty(5) TYPE  c.
      data: w_string type string.
      FIELD-SYMBOLS: <f1> TYPE table.
      FIELD-SYMBOLS: <f1_wa> TYPE ANY.
      DATA: ref_tab TYPE REF TO data.
      CONCATENATE 'P' infty INTO w_infty.
      CREATE DATA ref_tab TYPE STANDARD TABLE OF (w_infty).
      ASSIGN ref_tab->* TO <f1>.
    * Create dynamic work area
      CREATE DATA ref_tab TYPE (w_infty).
      ASSIGN ref_tab->* TO <f1_wa>.
      IF begda IS INITIAL.
        begda = '18000101'.
      ENDIF.
      IF endda IS INITIAL.
        endda = '99991231'.
      ENDIF.
      CALL FUNCTION 'HR_READ_INFOTYPE'
        EXPORTING
          pernr           = pernr
          infty           = infty
          begda           = '18000101'
          endda           = '99991231'
        IMPORTING
          subrc           = w_subrc
        TABLES
          infty_tab       = <f1>
        EXCEPTIONS
          infty_not_found = 1
          OTHERS          = 2.
      IF sy-subrc <> 0.
        subrc = w_subrc.
      ELSE.
      ENDIF.

  • How to export internal table and pass the internal table to another screen?

    Hi,
    I have a sql SELECT statement that select data from table into internal table. I would like to export out the internal table and pass to another screen and display the data in ALV list. How to export it out? I try but the error given was " The type of "OUT_SELECT_ITAB" cannot be converted to the type of  "itab_result".
    Another question is, how to pass the internal table that i export out from the function module to another screen?
    Here is the code
    ==============================================================
    FUNCTION ZNEW_SELECT_ZSTUD00.
    ""Local Interface:
    *"  IMPORTING
    *"     REFERENCE(IN_SELECT_YEAR) TYPE  ZSTUD00-EYEAR
    *"  EXPORTING
    *"     REFERENCE(OUT_RESULT) TYPE  CHAR9
    *"     REFERENCE(OUT_SELECT_ITAB) TYPE  ZSTUD00
    *& Global Declarations
    DATA: itab TYPE ZSTUD00,
          itab_result TYPE TABLE OF ZSTUD00.
    *& Processing Blocks called by the Runtime Environment
    itab-eyear = IN_SELECT_YEAR.
    SELECT *
    FROM ZSTUD00
    INTO TABLE itab_result
    WHERE eyear = IN_SELECT_YEAR.
    IF sy-subrc = 0.
      out_result = 'Success'.
      OUT_SELECT_ITAB = itab_result.
    ELSE.
      out_result = 'Fail'.
    ENDIF.
    ENDFUNCTION.
    ===============================================================
    Please advise. Thanks
    Regards,
    Rayden

    Hi Nagaraj,
    I try to change it in Tables tab page but it state that TABLES parameters are obsolete. when i "Enter". I try to "Enter" again. it seem to be ok but it stil give me the same error.
    ================================================================
    FUNCTION ZNEW_SELECT_ZSTUD00.
    ""Local Interface:
    *"  IMPORTING
    *"     REFERENCE(IN_SELECT_YEAR) TYPE  ZSTUD00-EYEAR
    *"  EXPORTING
    *"     REFERENCE(OUT_RESULT) TYPE  CHAR9
    *"  TABLES
    *"      OUT_SELECT_ITAB STRUCTURE  ZSTUD00
    *& Global Declarations
    DATA: itab TYPE ZSTUD00,
          itab_result TYPE TABLE OF ZSTUD00.
    *& Processing Blocks called by the Runtime Environment
    itab-eyear = IN_SELECT_YEAR.
    SELECT *
    FROM ZSTUD00
    INTO TABLE itab_result
    WHERE eyear = IN_SELECT_YEAR.
    IF sy-subrc = 0.
      out_result = 'Success'.
      OUT_SELECT_ITAB = itab_result.
    ELSE.
      out_result = 'Fail'.
    ENDIF.
    ENDFUNCTION.
    ===============================================================
    regards,
    Rayden

  • How to join  fields from different internal tables and display into one int

    hai i have one doubt...
    how to join  fields from different internal tables and display into one internal table..
    if anybody know the ans for this qus tell me......

    hii
    you can read data as per condition and then can join in one internal table using READ and APPEND statement..refer to following code.
    SELECT bwkey                         " Valuation Area
             bukrs                         " Company Code
        FROM t001k
        INTO TABLE i_t001k
       WHERE bukrs IN s_bukrs.
      IF sy-subrc EQ 0.
        SELECT bwkey                       " Valuation Area
               werks                       " Plant
          FROM t001w
          INTO TABLE i_t001w
           FOR ALL ENTRIES IN i_t001k
         WHERE bwkey = i_t001k-bwkey
           AND werks IN s_werks.
        IF sy-subrc EQ 0.
          LOOP AT i_output INTO wa_output.
            READ TABLE i_t001w INTO wa_t001w WITH KEY werks = wa_output-werks.
            READ TABLE i_t001k INTO wa_t001k WITH KEY bwkey = wa_t001w-bwkey.
            wa_output-bukrs = wa_t001k-bukrs.
            MODIFY i_output FROM wa_output.
            CLEAR wa_output.
          ENDLOOP.                         " LOOP AT i_output
        ENDIF.                             " IF sy-subrc EQ 0
    regards
    twinkal

  • Internal Table and Structures

    Hi,
    I am a beginer. I know how to create a structure and how to create an internal table using ABAP/4. My problem is, i don't understand where to use internal table and structure, also i find myself very confused about the explicit work areas.
    Plese someone show me a program by explaining all of this clearly.

    Hi
    Internal tables are the core of ABAP. They are like soul of a body. For any program we use
    internal tables extensively. We can use Internal tables like normal data base tables only, but the
    basic difference is the memory allocated for internal tables is temporary. Once the program is
    closed the memory allocated for internal tables will also be out of memory.
    But while using the internal tables, there are many performance issues to be considered. i.e which
    type of internal table to be used for the program..like standard internal table, hashed internal
    table or sorted internal table etc..
    Internal tables
    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.
    Creating Internal Tables
    Like other elements in the ABAP type concept, you can declare internal tables as abstract data
    types in programs or in the ABAP Dictionary, and then use them to define data objects.
    Alternatively, you can define them directly as data objects. When you create an internal table as a
    data object, you should ensure that only the administration entry which belongs to an internal
    table is declared statically. The minimum size of an internal table is 256 bytes. This is important if an
    internal table occurs as a component of an aggregated data object, since even empty internal
    tables within tables can lead to high memory usage. (In the next functional release, the size of the
    table header for an initial table will be reduced to 8 bytes). Unlike all other ABAP data objects, you
    do not have to specify the memory required for an internal table. Table rows are added to and
    deleted from the table dynamically at runtime by the various statements for adding and deleting
    records.
    You can create internal tables in different types.
    You can create standard internal table and then make it sort in side the program.
    The same way you can change to hashed internal tables also.
    There will be some performance issues with regard to standard internal tables/ hashed internal
    tables/ sorted internal tables.
    Internal table types
    This section describes how to define internal tables locally in a program. You can also define internal tables globally as data types in the
    ABAP Dictionary.
    Like all local data types in programs , you define internal tables using the TYPES statement. If you do not refer to an existing table type
    using the TYPE or LIKE addition, you can use the TYPES statement to construct a new local internal table in your program.
    TYPES <t> TYPE|LIKE <tabkind> OF <linetype> [WITH <key>]
    [INITIAL SIZE <n>].
    After TYPE or LIKE, there is no reference to an existing data type. Instead, the type constructor occurs:
    <tabkind> OF <linetype> [WITH <key>]
    The type constructor defines the table type <tabkind>, the line type <linetype>, and the key <key> of the internal table <t>.
    You can, if you wish, allocate an initial amount of memory to the internal table using the INITIAL SIZE addition.
    Table type
    You can specify the table type <tabkind> as follows:
    Generic table types
    INDEX TABLE
    For creating a generic table type with index access.
    ANY TABLE
    For creating a fully-generic table type.
    Data types defined using generic types can currently only be used for field symbols and for interface parameters in procedures . The generic
    type INDEX TABLE includes standard tables and sorted tables. These are the two table types for which index access is allowed. You cannot
    pass hashed tables to field symbols or interface parameters defined in this way. The generic type ANY TABLE can represent any table. You
    can pass tables of all three types to field symbols and interface parameters defined in this way. However, these field symbols and
    parameters will then only allow operations that are possible for all tables, that is, index operations are not allowed.
    Fully-Specified Table Types
    STANDARD TABLE or TABLE
    For creating standard tables.
    SORTED TABLE
    For creating sorted tables.
    HASHED TABLE
    For creating hashed tables.
    Fully-specified table types determine how the system will access the entries in the table in key operations. It uses a linear search for
    standard tables, a binary search for sorted tables, and a search using a hash algorithm for hashed tables.
    Line type
    For the line type <linetype>, you can specify:
    Any data type if you are using the TYPE addition. This can be a predefined ABAP type, a local type in the program, or a data type from the
    ABAP Dictionary. If you specify any of the generic elementary types C, N, P, or X, any attributes that you fail to specify (field length, number
    of decimal places) are automatically filled with the default values. You cannot specify any other generic types.
    Any data object recognized within the program at that point if you are using the LIKE addition. The line type adopts the fully-specified data
    type of the data object to which you refer. Except for within classes, you can still use the LIKE addition to refer to database tables and
    structures in the ABAP Dictionary (for compatibility reasons).
    All of the lines in the internal table have the fully-specified technical attributes of the specified data type.
    Key
    You can specify the key <key> of an internal table as follows:
    [UNIQUE|NON-UNIQUE] KEY <col1> ... <col n>
    In tables with a structured line type, all of the components <coli> belong to the key as long as they are not internal tables or references,
    and do not contain internal tables or references. Key fields can be nested structures. The substructures are expanded component by
    component when you access the table using the key. The system follows the sequence of the key fields.
    [UNIQUE|NON-UNIQUE] KEY TABLE LINE
    If a table has an elementary line type (C, D, F, I, N, P, T, X), you can define the entire line as the key. If you try this for a table whose line
    type is itself a table, a syntax error occurs. If a table has a structured line type, it is possible to specify the entire line as the key. However,
    you should remember that this is often not suitable.
    [UNIQUE|NON-UNIQUE] DEFAULT KEY
    This declares the fields of the default key as the key fields. If the table has a structured line type, the default key contains all non-numeric
    columns of the internal table that are not and do not contain references or internal tables. If the 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.
    Specifying a key is optional. If you do not specify a key, the system defines a table type with an arbitrary key. You can only use this to
    define the types of field symbols and the interface parameters of procedures . For exceptions, refer to Special Features of Standard Tables.
    The optional additions UNIQUE or NON-UNIQUE determine whether the key is to be unique or non-unique, that is, whether the table can
    accept duplicate entries. If you do not specify UNIQUE or NON-UNIQUE for the key, the table type is generic in this respect. As such, it can
    only be used for specifying types. When you specify the table type simultaneously, you must note the following restrictions:
    You cannot use the UNIQUE addition for standard tables. The system always generates the NON-UNIQUE addition automatically.
    You must always specify the UNIQUE option when you create a hashed table.
    Initial Memory Requirement
    You can specify the initial amount of main memory assigned to an internal table object when you define the data type using the following
    addition:
    INITIAL SIZE <n>
    This size does not belong to the data type of the internal table, and does not affect the type check. You can use the above addition to
    reserve memory space for <n> table lines when you declare the table object.
    When this initial area is full, the system makes twice as much extra space available up to a limit of 8KB. Further memory areas of 12KB each
    are then allocated.
    You can usually leave it to the system to work out the initial memory requirement. The first time you fill the table, little memory is used. The
    space occupied, depending on the line width, is 16 <= <n> <= 100.
    It only makes sense to specify a concrete value of <n> if you can specify a precise number of table entries when you create the table and
    need to allocate exactly that amount of memory (exception: Appending table lines to ranked lists). This can be particularly important for
    deep-structured internal tables where the inner table only has a few entries (less than 5, for example).
    To avoid excessive requests for memory, large values of <n> are treated as follows: The largest possible value of <n> is 8KB divided by the
    length of the line. If you specify a larger value of <n>, the system calculates a new value so that n times the line width is around 12KB.
    Examples
    TYPES: BEGIN OF LINE,
    COLUMN1 TYPE I,
    COLUMN2 TYPE I,
    COLUMN3 TYPE I,
    END OF LINE.
    TYPES ITAB TYPE SORTED TABLE OF LINE WITH UNIQUE KEY COLUMN1.
    The program defines a table type ITAB. It is a sorted table, with line type of the structure LINE and a unique key of the component
    COLUMN1.
    TYPES VECTOR TYPE HASHED TABLE OF I WITH UNIQUE KEY TABLE LINE.
    TYPES: BEGIN OF LINE,
    COLUMN1 TYPE I,
    COLUMN2 TYPE I,
    COLUMN3 TYPE I,
    END OF LINE.
    TYPES ITAB TYPE SORTED TABLE OF LINE WITH UNIQUE KEY COLUMN1.
    TYPES: BEGIN OF DEEPLINE,
    FIELD TYPE C,
    TABLE1 TYPE VECTOR,
    TABLE2 TYPE ITAB,
    END OF DEEPLINE.
    TYPES DEEPTABLE TYPE STANDARD TABLE OF DEEPLINE
    WITH DEFAULT KEY.
    The program defines a table type VECTOR with type hashed table, the elementary line type I and a unique key of the entire table line. The
    second table type is the same as in the previous example. The structure DEEPLINE contains the internal table as a component. The table
    type DEEPTABLE has the line type DEEPLINE. Therefore, the elements of this internal table are themselves internal tables. The key is the
    default key - in this case the column FIELD. The key is non-unique, since the table is a standard table.
    Internal table objects
    Internal tables are dynamic variable data objects. Like all variables, you declare them using the DATA statement. You can also declare static
    internal tables in procedures using the STATICS statement, and static internal tables in classes using the CLASS-DATA statement. This
    description is restricted to the DATA statement. However, it applies equally to the STATICS and CLASS-DATA statements.
    Reference to Declared Internal Table Types
    Like all other data objects, you can declare internal table objects using the LIKE or TYPE addition of the DATA statement.
    DATA <itab> TYPE <type>|LIKE <obj> [WITH HEADER LINE].
    Here, the LIKE addition refers to an existing table object in the same program. The TYPE addition can refer to an internal type in the
    program declared using the TYPES statement, or a table type in the ABAP Dictionary.
    You must ensure that you only refer to tables that are fully typed. Referring to generic table types (ANY TABLE, INDEX TABLE) or not
    specifying the key fully is not allowed (for exceptions, refer to Special Features of Standard Tables).
    The optional addition WITH HEADER line declares an extra data object with the same name and line type as the internal table. This data
    object is known as the header line of the internal table. You use it as a work area when working with the internal table (see Using the
    Header Line as a Work Area). When you use internal tables with header lines, you must remember that the header line and the body of the
    table have the same name. If you have an internal table with header line and you want to address the body of the table, you must indicate
    this by placing brackets after the table name (<itab>[]). Otherwise, ABAP interprets the name as the name of the header line and not of the
    body of the table. You can avoid this potential confusion by using internal tables without header lines. In particular, internal tables nested
    in structures or other internal tables must not have a header line, since this can lead to ambiguous expressions.
    TYPES VECTOR TYPE SORTED TABLE OF I WITH UNIQUE KEY TABLE LINE.
    DATA: ITAB TYPE VECTOR,
    JTAB LIKE ITAB WITH HEADER LINE.
    MOVE ITAB TO JTAB. <- Syntax error!
    MOVE ITAB TO JTAB[].
    The table object ITAB is created with reference to the table type VECTOR. The table object JTAB has the same data type as ITAB. JTAB also
    has a header line. In the first MOVE statement, JTAB addresses the header line. Since this has the data type I, and the table type of ITAB
    cannot be converted into an elementary type, the MOVE statement causes a syntax error. The second MOVE statement is correct, since
    both operands are table objects.
    Declaring New Internal Tables
    You can use the DATA statement to construct new internal tables as well as using the LIKE or TYPE addition to refer to existing types or
    objects. The table type that you construct does not exist in its own right; instead, it is only an attribute of the table object. You can refer to
    it using the LIKE addition, but not using TYPE. The syntax for constructing a table object in the DATA statement is similar to that for defining
    a table type in the TYPES statement.
    DATA <itab> TYPE|LIKE <tabkind> OF <linetype> WITH <key>
    [INITIAL SIZE <n>]
    [WITH HEADER LINE].
    As when you define a table type , the type constructor
    <tabkind> OF <linetype> WITH <key>
    defines the table type <tabkind>, the line type <linekind>, and the key <key> of the internal table <itab>. Since the technical attributes of
    data objects are always fully specified, the table must be fully specified in the DATA statement. You cannot create generic table types (ANY
    TABLE, INDEX TABLE), only fully-typed tables (STANDARD TABLE, SORTED TABLE, HASHED TABLE). You must also specify the key and whether
    it is to be unique (for exceptions, refer to Special Features of Standard Tables).
    As in the TYPES statement, you can, if you wish, allocate an initial amount of memory to the internal table using the INITIAL SIZE addition.
    You can create an internal table with a header line using the WITH HEADER LINE addition. The header line is created under the same
    conditions as apply when you refer to an existing table type.
    DATA ITAB TYPE HASHED TABLE OF SPFLI
    WITH UNIQUE KEY CARRID CONNID.
    The table object ITAB has the type hashed table, a line type corresponding to the flat structure SPFLI from the ABAP Dictionary, and a
    unique key with the key fields CARRID and CONNID. The internal table ITAB can be regarded as an internal template for the database table
    SPFLI. It is therefore particularly suitable for working with data from this database table as long as you only access it using the key.

  • Internal table and work area

    Hi,
           can anybody explain the concepts of Internal table and work area.Thanks in advance.

    hai,
    This may help u.
    WORKAREA is a structure that can hold only one record at a time. It is a collection of fields. We use workarea as we cannot directly read from a table. In order to interact with a table we need workarea. When a Select Statement is executed on a table then the first record is read and put into the header of the table and from there put into the header or the workarea(of the same structure as that of the table)of the internal table and then transferred top the body of the internal table or directly displayed from the workarea.
    Each row in a table is a record and each column is a field.
    While adding or retrieving records to / from internal table we have to keep the record temporarily.
    The area where this record is kept is called as work area for the internal table. The area must have the same structure as that of internal table. An internal table consists of a body and an optional header line.
    Header line is a implicit work area for the internal table. It depends on how the internal table is declared that the itab will have the header line or not.
    e.g.
    data: begin of itab occurs 10,
    ab type c,
    cd type i,
    end of itab. " this table will have the header line.
    data: wa_itab like itab. " explicit work area for itab
    data: itab1 like itab occurs 10. " table is without header line.
    Internal tables are used for storing records which are obtained as a result when we use select statement on database. internal tables are run time entities and doesn't occupy any memory. they are dynamic.
    internal tables are of types.
    1. internal tables with header line. [header and body]
    2. internal tables with out header line. [only body]
    Workarea is the concept which is mainly useful when working with internal tables with out header line.
    at any point of time we can access only one record through header of a internal table. every thing should be done [inserting,modifying, reading ] through header only.
    ex: data: itab like standard table of mara with header line.
    for internal tables with out header line we will create a work area [explicit header] as type of table for storing data into internal table.
    ex: data: itab like mara,
    wa like mara.
    more about internal table types:
    Standard table:
    The key access to a standard table uses a sequential search. The time required for an access is linearly dependent on the number of entries in the internal table.
    You should usually access a standard table with index operations.
    Sorted table:
    The table is always stored internally sorted by its key. Key access to a sorted table can therefore use a binary search. If the key is not unique, the entry with the lowest index is accessed. The time required for an access is logarithmically dependent on the number of entries in the internal table.
    Index accesses to sorted tables are also allowed. You should usually access a sorted table using its key.
    Hash table:
    The table is internally managed with a hash procedure. All the entries must have a unique key. The time required for a key access is constant, that is it does not depend on the number of entries in the internal table.
    You cannot access a hash table with an index. Accesses must use generic key operations (SORT, LOOP, etc.).
    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.
    TYPES VECTOR TYPE HASHED TABLE OF I WITH UNIQUE KEY TABLE LINE.
    TYPES: BEGIN OF LINE,
    COLUMN1 TYPE I,
    COLUMN2 TYPE I,
    COLUMN3 TYPE I,
    END OF LINE.
    DATA ITAB TYPE HASHED TABLE OF SPFLI
    WITH UNIQUE KEY CARRID CONNID.
    with regards,
    B.Sowjanya,
    reward points if helpful.

  • Splitting Large internal tables

    Hi All,
    How to split large internal table into smaller ones of fixed number of lines.
    The total number of lines are not known and is subjected to vary.
    Regards,
    Naba

    I am not sure about your requirements, you try with the below solution
    Itab : contains all entries  let us say 3000
    Itab1 
    itab2
    itab3
    No.of entries to be split based on 3000/n  ( 3000/3)  = 1000
    split_val = 1000
    N_split_from = 1
    N_split_to = 1000
    APPEND LINES OF ITAB1 FROM N_split_from TO N_split TO ITAB1.
    N_split_from = 1 +  split_val
    N_split_to = 1000 + split_val
    APPEND LINES OF ITAB1 FROM N_split_from TO N_split TO ITAB2.
    N_split_from = 1 +  split_val
    N_split_to = 1000 + split_val
    APPEND LINES OF ITAB1 FROM N_split_from TO N_split TO ITAB3.
    Regards
    Sasi

  • Making processing on an internal table generic

    Hi,
    I'm trying to make more generic a processing on an internal table.
    Here's the idea :
    "DELETE FROM TABLE T_VBAP every lines that do not exist IN table T_VBAK USING column VBELN for comparison"
    You can see below the (not generic) version of this function.
    I'd like to make it more generic.
    It would be called this way :
         PERFORM reduire USING t_vbak t_vbap 'VBELN' 'vbak-vbeln'.
    with the following code.
    Here is my question :
    How can I make the last statement generic too ?
      DELETE <table_travail> WHERE (column) NOT IN <fs_tab> won't work...
    Thanks a lot !
    Jessie
    Non-generic version :
    FORM reduire.
      DATA : liste_vbeln type range of vbak-vbeln,
                   line_vbeln TYPE LINE OF liste_vbeln,
                   lt_vbak TYPE TABLE OF ts_vbak,
                   lt_vbap TYPE ts_vbak.
      lt_vbak = t_vbak.
      SORT lt_vbak BY vbeln.
      DELETE ADJACENT DUPLICATES FROM lt_vbak COMPARGIN vbeln.
      line_vbeln-sign = 'I'.
      line_vbeln-option = 'EQ'.
      LOOP AT lt_vbak INTO ls_vbak.
        line_vbeln-low = ls_vbak-vbeln.
        APPEND line_vbeln TO liste_vbeln.
      ENDLOOP.
      IF liste_vbeln IS INITIAL.
         CLEAR t_vbap.
      ELSE.
        DELETE t_vbap WHERE vbeln NOT IN liste_vbeln.
      ENDIF.
    ENDFORM.
    Generic version :
    FORM reduire USING  p_reference STANDARD TABLE
                        p_travail TYPE STANDARD TABLE
                             column TYPE lvc_name
                             column_type TYPE string.
         FIELD-SYMBOLS <table_reference> TYPE STANDARD TABLE.
         FIELD-SYMBOLS <table_reference_copy> TYPE STANDARD TABLE.
         ASSIGN p_reference to <table_reference>.
         FIELD-SYMBOLS <table_travail> TYPE STANDARD TABLE.
         ASSIGN p_travail to <table_travail>.
         FIELD-SYMBOLS <table_reference_fields> TYPE ANY.
         DATA gs_fldname TYPE REF TO DATA.
         CREATE DATA gs_fldname LIKE LINE OF <table_reference>.
         ASSIGN gs_fldname->* TO <table_reference_fields>.
         DATA position TYPE i.
         DATA dyn_table TYPE REF TO DATA.
         DATA wa_fieldcat TYPE lvc_s_fcat.
         DATA it_fieldcat TYPE lvc_t_fcat.
         DATA table_reference_copy_pre TYPE REF TO DATA.
         DATA l_descr_ref TYPE REF TO cl_abap_structdescr.
         FIELD-SYMBOLS <ls_tab> TYPE ANY.
         FIELD-SYMBOLS <field> TYPE ANY.
         FIELD-SYMBOLS <lfs_comp_wa> TYPE abap_compdescr.
         l_descr_ref ?= cl_abap_typedescr=>describe_by_data( <table_reference_fields> ).
         LOOP AT l_descr_ref->components[] ASSIGNING <lfs_comp_wa>.
              IF <lfs_comp_wa>-name = column.
                   position = sy-tabix.
              ENDIF.
              CLEAR wa_fieldcat.
              wa_fieldcat-fieldname = <lfs_comp_wa>-name.
              wa_fieldcat-datatype  = <lfs_comp_wa>-type_kind.
              wa_fieldcat-inttype   = <lfs_comp_wa>-type_kind.
              wa_fieldcat-intlen    = <lfs_comp_wa>-length / 2.
              wa_fieldcat-decimals  = <lfs_comp_wa>-decimals.
              APPEND wa_fieldcat TO it_fieldcat.
         ENDLOOP.
         CALL METHOD cl_alv_table_create=>create_dynamic_table
              EXPORTING
                   it_fieldcatalog = it_fieldcat
              IMPORTING
                   ep_table = table_reference_copy_pre.
         ASSIGN table_reference_copy_pre->* TO <table_reference_copy>.
         <table_reference_copy> = p_reference.
         SORT <table_reference_copy> BY (column).
         DELETE ADJACENT DUPLICATES FROM <table_reference> COMPARING (column).
         DATA :
              gr_structdescr TYPE REF TO cl_abap_structdescr,
              gr_tabledescr TYPE REF TO cl_abap_tabledescr,
              gr_datadescr TYPE REF TO cl_abap_datadescr,
              gr_typedescr TYPE REF TO cl_abap_typedescr,
              gt_components TYPE abap_component_tab,
              gw_component TYPE LINE OF abap_component_tab,
              gr_wa TYPE REF TO DATA,
              gr_tab TYPE REF TO DATA.
         FIELD-SYMBOLS :
              <fs_wa> TYPE ANY,
              <fs_tab> TYPE TABLE.
         MOVE 'SIGN' to gw_component-name.
         gw_component-type ?= cl_abap_elemdescr=>get_c( p_length = 1 ).
         INSERT gw_component INTO TABLE gt_components.
         MOVE 'OPTION' to gw_component-name.
         gw_component-type ?= cl_abap_elemdescr=>get_c( p_length = 2 ).
         INSERT gw_component INTO TABLE gt_components.
         MOVE 'LOW' to gw_component-name.
         gw_component-type ?= cl_abap_elemdescr=>describe_by_name( column_type ).
         INSERT gw_component INTO TABLE gt_components.
         MOVE 'HIGH' to gw_component-name.
         gw_component-type ?= cl_abap_elemdescr=>describe_by_name( column_type ).
         INSERT gw_component INTO TABLE gt_components.
         gr_structdescr ?= cl_abap_structdescr=>create( gt_components ).
         CREATE DATA gr_wa TYPE HANDLE gr_structdescr.
         ASSIGN gr_wa->* to <fs_wa>.
         gr_datadescr ?= gr_structdescr.
         gr_tabledescr ?= cl_abap_tabledescr=>create( gr_datadescr ).
         CREATE DATA gr_tab TYPE HANDLE gr_datadescr.
         ASSIGN gr_tab->* TO <fs_tab>.
         LOOP AT <table_reference> ASSIGNING <ls_tab>.
              ASSIGN COMPONENT position OF STRUCTURE <ls_tab> to <field>.
              CONCATENATE 'IEQ' <field> INTO <fs_wa>.
              APPEND <fs_wa> TO <fs_tab>.
         ENDLOOP.
         DELETE t_vbap WHERE vbeln NOT IN <fs_tab>.
    ENDFORM.

    Hello Jessie,
    Which ABAP Release are you working on? Dynamic WHERE conditions for LOOP AT itab, MODIFY itab, and DELETE itab statements are possible from Release 702.
    Even if you're on 702, the statement DELETE <table_travail> WHERE (column) NOT IN <fs_tab> won't work! You need to change your coding to:
    DATA lv_dyn_cond TYPE string.
    CONCATENATE column `NOT IN` `<FS_TAB>` INTO lv_dyn_cond SEPARATED BY space.
    DELETE <table_travail> WHERE (lv_dyn_cond).
    BR,
    Suhas

  • Internal table and subtotals

    Hi,
    I want  to display report output like below .
    how can i bulid the internal table means can i hardcode the field1.
    how can i do the subtotals and totals i know the doing subtotals and totals in alv based on some field.
    field1                          field2           field3           field4
    Revenues
    product sales             100               1000           2000
    Contract revenue         200               4500          3000
    total Renues               300               5500          5000
    cost and expenses     
    Cost of sales               10000           5000          6000
    Selling  expenses         5000            2000          1000
    Research expenses      2000            2000          3000
    total expenses             17000           9000          10000
    total                             17300          14500         15000
    Please help regarding this,
    Regards,
    Suresh.

    check this example
    REPORT ZBLOCK_ALV.
    CONSTANTS :
      c_x VALUE 'X'.
    Macro definition
    DEFINE m_fieldcat.
      ls_fieldcat-fieldname = &1.
      ls_fieldcat-ref_tabname = &2.
      ls_fieldcat-tabname = &3.
      append ls_fieldcat to lt_fieldcat.
    END-OF-DEFINITION.
    DEFINE m_sort.
      ls_sort-fieldname = &1.
      ls_sort-up        = c_x.
      append ls_sort to lt_sort.
    END-OF-DEFINITION.
    TYPE-POOLS: slis.                      " ALV Global types
    TYPES:
    1st Table
      BEGIN OF ty_kna1,
        kunnr TYPE kna1-kunnr,             " Customer number
        ernam TYPE kna1-ernam,             " Name of Person who Created
        erdat TYPE kna1-erdat,             " Creation date
        name1 TYPE kna1-name1,             " Name 1                    .
      END OF ty_kna1,
    2nd Table
      BEGIN OF ty_mara,
        matnr TYPE mara-matnr,             " Material number
        ernam TYPE mara-ernam,             " Name of Person who Created
        ersda TYPE mara-ersda,             " Creation date
        mtart TYPE mara-mtart,             " Material type
        matkl TYPE mara-matkl,             " Material group
      END OF ty_mara,
    3rd Table
      BEGIN OF ty_vbak,
        vbeln TYPE vbak-vbeln,             " Sales document
        vkorg TYPE vbak-vkorg,             " Sales organization
        vtweg TYPE vbak-vtweg,             " Distribution channel
        kunnr TYPE vbak-kunnr,             " Sold-to party
        erdat TYPE vbak-erdat,             " Creation date
      END OF ty_vbak.
    DATA:
      gs_layout TYPE slis_layout_alv,
      gt_kna1 TYPE TABLE OF ty_kna1,
      gt_mara TYPE TABLE OF ty_mara,
      gt_vbak TYPE TABLE OF ty_vbak.
    SELECTION-SCREEN :
      SKIP, BEGIN OF LINE,COMMENT 5(27) v_1 FOR FIELD p_max.    "#EC NEEDED
    PARAMETERS p_max(2) TYPE n DEFAULT '02' OBLIGATORY.
    SELECTION-SCREEN END OF LINE.
    INITIALIZATION.
      v_1 = 'Maximum of records to read'.
    START-OF-SELECTION.
    Read data
      SELECT kunnr ernam erdat name1
        FROM kna1
       UP TO p_max ROWS
        INTO TABLE gt_kna1.
      SELECT matnr ernam ersda mtart matkl
        FROM mara
       UP TO p_max ROWS
        INTO TABLE gt_mara.
      SELECT vbeln vkorg vtweg kunnr erdat
        FROM vbak
       UP TO p_max ROWS
        INTO TABLE gt_vbak.
    END-OF-SELECTION.
      PERFORM f_display_data.
          FORM USER_COMMAND                                             *
    FORM user_command USING u_ucomm     TYPE sy-ucomm
                            us_selfield TYPE slis_selfield.     "#EC CALLED
      DATA:
        ls_vbak TYPE ty_vbak.
      CASE u_ucomm.
        WHEN '&IC1'.                       " Pick
          CASE us_selfield-tabname.
            WHEN 'GT_MARA'.
            WHEN 'GT_KNA1'.
            WHEN 'GT_VBAK'.
              READ TABLE gt_vbak INDEX us_selfield-tabindex INTO ls_vbak.
              IF sy-subrc EQ 0.
                SET PARAMETER ID 'AUN' FIELD ls_vbak-vbeln.
                CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN.
              ENDIF.
          ENDCASE.
      ENDCASE.
    ENDFORM.                               " USER_COMMAND
          Form  f_display_data
    FORM f_display_data.
      DATA :
        ls_fieldcat TYPE slis_fieldcat_alv,
        lt_fieldcat TYPE slis_t_fieldcat_alv, " Field catalog
        ls_sort     TYPE slis_sortinfo_alv,
        lt_sort     TYPE slis_t_sortinfo_alv, " Sort table
        lt_events   TYPE slis_t_event,
        ls_event    TYPE slis_alv_event.
      gs_layout-group_change_edit = c_x.
      gs_layout-colwidth_optimize = c_x.
      gs_layout-zebra             = c_x.
      gs_layout-detail_popup      = c_x.
      gs_layout-get_selinfos      = c_x.
    Build field catalog and sort table
      m_fieldcat  'KUNNR' 'KNA1' 'GT_KNA1'.
      m_fieldcat  'ERNAM' 'KNA1' 'GT_KNA1'.
      m_fieldcat  'ERDAT' 'KNA1' 'GT_KNA1'.
      m_fieldcat  'NAME1' 'KNA1' 'GT_KNA1'.
      m_sort  'KUNNR'.
    Build Event Table
      MOVE        'TOP_OF_PAGE'        TO ls_event-name.
      MOVE        'TOP_OF_PAGE'        TO ls_event-form.
      APPEND ls_event TO lt_events.
      MOVE        'END_OF_LIST'        TO ls_event-name.
      MOVE        'END_OF_LIST'        TO ls_event-form.
      APPEND ls_event TO lt_events.
      CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
        EXPORTING
          i_callback_program      = sy-cprog
          i_callback_user_command = 'USER_COMMAND'
          it_fieldcat             = lt_fieldcat
          is_layout               = gs_layout
          it_events               = lt_events
          it_sort                 = lt_sort
          i_save                  = 'A'
        TABLES
          t_outtab                = gt_kna1.
    ENDFORM.                               " F_DISPLAY_DATA
          FORM top_of_page                                              *
    FORM top_of_page.                                           "#EC CALLED
      ULINE.
      WRITE : sy-uname, sy-title(56) CENTERED, sy-datum.
      ULINE.
    ENDFORM.                               " TOP_OF_PAGE
          FORM End_of_list                                              *
    FORM end_of_list.                                           "#EC CALLED
      DATA :
        ls_fieldcat TYPE slis_fieldcat_alv,
        lt_fieldcat TYPE slis_t_fieldcat_alv, " Field catalog
        ls_sort     TYPE slis_sortinfo_alv,
        lt_sort     TYPE slis_t_sortinfo_alv, " Sort table
        lt_events   TYPE slis_t_event,
        ls_event    TYPE slis_alv_event.
    Build field catalog and sort table
      m_fieldcat 'MATNR' 'MARA' 'GT_MARA'.
      m_fieldcat 'ERNAM' 'MARA' 'GT_MARA'.
      m_fieldcat 'ERSDA' 'MARA' 'GT_MARA'.
      m_fieldcat 'MTART' 'MARA' 'GT_MARA'.
      m_fieldcat 'MATKL' 'MARA' 'GT_MARA'.
      m_sort 'MATNR'.
    Build Event Table
      MOVE 'END_OF_LIST'   TO ls_event-name.
      MOVE 'END_OF_LIST_2' TO ls_event-form.
      APPEND ls_event TO lt_events.
      gs_layout-list_append = c_x.
      CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
        EXPORTING
          i_callback_program = sy-cprog
          it_fieldcat        = lt_fieldcat
          is_layout          = gs_layout
          it_sort            = lt_sort
          it_events          = lt_events
          i_save             = 'A'
        TABLES
          t_outtab           = gt_mara.
    ENDFORM.                               " END_OF_LIST
          FORM End_of_list_2                                            *
    FORM end_of_list_2.                                         "#EC CALLED
      DATA :
        ls_fieldcat TYPE slis_fieldcat_alv,
        lt_fieldcat TYPE slis_t_fieldcat_alv, " Field catalog
        ls_sort     TYPE slis_sortinfo_alv,
        lt_sort     TYPE slis_t_sortinfo_alv, " Sort table
        lt_events   TYPE slis_t_event,
        ls_event    TYPE slis_alv_event.
    Build field catalog and sort table
      m_fieldcat 'VBELN' 'VBAK' 'GT_VBAK'.
      m_fieldcat 'VKORG' 'VBAK' 'GT_VBAK'.
      m_fieldcat 'VTWEG' 'VBAK' 'GT_VBAK'.
      m_fieldcat 'KUNNR' 'VBAK' 'GT_VBAK'.
      m_fieldcat 'ERDAT' 'VBAK' 'GT_VBAK'.
      m_sort 'VBELN'.
    Build Event Table
      MOVE 'TOP_OF_PAGE' TO ls_event-name.
      MOVE 'TOP_OF_PAGE' TO ls_event-form.
      APPEND ls_event TO lt_events.
      gs_layout-list_append = c_x.
      CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
        EXPORTING
          i_callback_program = sy-cprog
          it_fieldcat        = lt_fieldcat
          is_layout          = gs_layout
          it_sort            = lt_sort
          it_events          = lt_events
          i_save             = 'A'
        TABLES
          t_outtab           = gt_vbak.
    ENDFORM.                               " END_OF_LIST_2

  • ALV - need to sum values of internal table and display in ALV

    I have data in internal table as:
    Material     date     sum1     sum2
    Mat_A     19990101     4     4
    Mat_A     20080501     3     0
    Mat_A     20080601     2     0
    Mat_B     19990101     2     0
    Mat_B     20080601     5     5
    Required output is :
    Material     qty1     qty2     19990101     20080501     20080601
    Mat_A     432     4     4     3     2
    Mat_B     2+5     5     2           5
    Thinking of using ALV to pass the internal table and display as classical report (and also to save as excel spreadsheet).
    Counting your help on the following questions:
    1) How to accomplish the sum in ALV report? Can ALV FM do that or one has to use ABAP to compute the sum from the given internal table?
    2) Mat_A can have more date values. Here it got 3 distinct date values 19990101, 20080601, 20080501. If it has say 5 date values, how to create the ALV date columns (from 3 to 5 date columns) dynamically?
    Thanks for the help.

    for the sum inalv we use generally..
    it_fieldcat-do_sum = 1.
    check this examples...
    http://www.****************/Tutorials/ALV/Subtotals/text.htm
    *& Report  ZTEST_ALV_PERC_13317
    REPORT  ztest_alv_perc_13317.
    TYPE-POOLS: slis.
    DATA: it_fieldcat TYPE slis_t_fieldcat_alv,
          wa_fieldcat TYPE slis_fieldcat_alv,
          it_events TYPE slis_t_event,
          wa_events TYPE slis_alv_event,
          it_sort TYPE slis_t_sortinfo_alv,
          wa_sort TYPE slis_sortinfo_alv,
          l_layout TYPE slis_layout_alv.
    TYPES: BEGIN OF ty_itab,
            field1(10),
            qty1 TYPE i,
            qty2 TYPE i,
            qty3 TYPE i,
            dummy TYPE c,
          END OF ty_itab.
    DATA: itab TYPE STANDARD TABLE OF ty_itab WITH  HEADER LINE,
    itab1 TYPE ty_itab.
    START-OF-SELECTION.
      itab-field1 = 'FIRST'.
      itab-qty1 = 2.
      itab-qty2 = 1.
      itab-qty3 = 5.
      itab-dummy = 10.
      APPEND itab.
      itab-field1 = 'FIRST'.
      itab-qty1 = 2.
      itab-qty2 = 1.
      itab-qty3 = 5.
      itab-dummy = 10.
      APPEND itab.
      itab-field1 = 'FIRST'.
      itab-qty1 = 2.
      itab-qty2 = 1.
      itab-qty3 = 5.
      itab-dummy = 10.
      APPEND itab.
      wa_fieldcat-col_pos = 1.
      wa_fieldcat-fieldname = 'FIELD1'.
      wa_fieldcat-tabname = 'ITAB'.
      APPEND wa_fieldcat TO it_fieldcat.
      wa_fieldcat-col_pos = 2.
      wa_fieldcat-fieldname = 'QTY1'.
      wa_fieldcat-tabname = 'ITAB'.
      wa_fieldcat-do_sum = 'X'.
      APPEND wa_fieldcat TO it_fieldcat.
      wa_fieldcat-col_pos = 3.
      wa_fieldcat-fieldname = 'QTY2'.
      wa_fieldcat-tabname = 'ITAB'.
      wa_fieldcat-do_sum = 'X'.
      APPEND wa_fieldcat TO it_fieldcat.
      wa_fieldcat-col_pos = 4.
      wa_fieldcat-fieldname = 'QTY3'.
      wa_fieldcat-tabname = 'ITAB'.
      wa_fieldcat-do_sum = 'X'.
      APPEND wa_fieldcat TO it_fieldcat.
      wa_fieldcat-col_pos = 5.
      wa_fieldcat-fieldname = 'DUMMY'.
      wa_fieldcat-tabname = 'ITAB'.
      wa_fieldcat-do_sum = 'X'.
      wa_fieldcat-no_out = 'X'.
      APPEND wa_fieldcat TO it_fieldcat.
       CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
        EXPORTING
          i_list_type     = 0
        IMPORTING
          et_events       = it_events
        EXCEPTIONS
          list_type_wrong = 1
          OTHERS          = 2.
      IF sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
      CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
       EXPORTING
         i_callback_program           = sy-repid
         it_fieldcat                    = it_fieldcat
        TABLES
          t_outtab                       = itab
    EXCEPTIONS
       program_error                  = 1
       OTHERS                         = 2
      IF sy-subrc <> 0.
      ENDIF.

  • How to create an dynamic internal table with the structure of a ddic table

    Hi all,
    I want to fill ddic-tables (which I already created) in my abap dictionary with data out of CSV-files (which are located on the CRM-Server).  The ddic tables have different amount of fields.
    I started with creating a table which contains the name of the tables and the path to the matching CSV-file.
    At the beginning I'm filling an internal table with part of this data (the name of the ddic-tables) - after that I am looping at this internal table.
    LOOP AT lt_struc ASSIGNING <lfs_struc>.
         LOOP AT lv_itab1 INTO lv_wa1 WHERE ztab_name = <lfs_struc>.
         lv_feld = lv_wa1-zdat_name.
        ENDLOOP.
        CONCATENATE 'C:\-tmp\Exportierte Tabellen\' lv_feld INTO lv_pfad.
        Do.
        OPEN DATASET lv_pfad FOR INPUT IN TEXT MODE ENCODING NON-UNICODE IGNORING CONVERSION ERRORS.
        READ DATASET lv_pfad INTO lv_rec.
        IF sy-subrc NE 0.
          EXIT.
        ENDIF.
        enddo.
        REPLACE ALL OCCURRENCES OF '"' IN lv_rec WITH ''.
        SPLIT lv_rec AT ';' INTO TABLE lt_str_values.
        INSERT into (<lfs_struc>) values lr_str_value.
        CLOSE DATASET lv_pfad.
    endloop.
    This is not the whole code, but it's working until
    SPLIT lv_rec AT ';' INTO TABLE lt_str_values.
    I want to split all the data of lv_rec into an internal table which has the structure of the current ddic-table, but I didn't find out how to do give the internal table the structure of the ddic-table. In the code I used an internal tyble type string but I should be the structure of the matching tabel.
    If I try to create an internal table by using a fiel symbol, I am told, that the data types are not matching.
    Has anyone an idea?

    Hi Mayari,
    though you were successfull with
    METHOD cl_alv_table_create=>create_dynamic_table
    I must warn you not to use it. The reason is that the number of tables created is limited, the method uses GENERATE SUBROUTINE statement and this triggers an unwanted database commit.
    If you know the DDIC structure, it is (starting with ECC6.0) much easier:
    field-symbols:
      <table> type standard table.
    data:
      lr_data type ref to data.
    Create data lr_data type table of (<DDIC structure>).
    assign lr_data->* to <table>.
    The split code can be simplified gaining speed loosing complexity not loosing functionality.
    field-symbols:<fs_s> type any.
    field-symbols:<fs_t> type any.
    SPLIT lv_rec AT ';' INTO table it_string.
    loop at it_string assigning <fs_s>.
      assign component sy-tabix of wa_string to <fs_t>.
    if sy-subrc = 0.
      <fs_t> = <fs_s>.
    endif.
    at last.
      append <fs_itwa3> to <ft_itab3>.
    endat.
    endloop.
    Though it may work as Keshav.T suggested, there is no need to do that way.     
    Regards,
    Clemens

  • *How can we use the internal table in module pool programming? Clarify plz*

    If we creating a screen using the table having four fields(for e.g.). The screen has the functions of display, modify, delete, save, exit etc for the fields. The front-end of the screen having I/O fields of the table using internal table. How can we declare the internal table in the screen?

    HI,
    Create one WA for your Internal table and then map it to your fields.
    For Example,
    Data : begin of wa,
              name(10),
              age type i,
               end of wa.
    data : it like table of wa with header line.
    Then in screen create input fields with the name, age and ***.
    Then the user entered values are stored in name age and ***.
    then you can manipulate with that values using wa.
    Thanks.

  • Dynamic internal table and dynamic read statements.

    Hi,
    My Scenario :
    I have two dynamic internal tables.
    I am looping at one internal table and trying to read another table.
    In the read statement how do I mention the key dyamically.
    Example code below :
      LOOP AT <dyn_table> ASSIGNING <dyn_wa>.
    read second  dynamic internal table.
      enloop.
    The key which I want use for reading say it is keyed in the selection criteria....
    Also based on the value I read I want to modify the first internal table field value.
    Remember I dont want to explicity mention the key
    How do I do that?
    Thanks
    Krishna.

    Hi
    U need to use the field-symbol, but u can't use a WHERE option, but u need to use the CHECK statament into the second loop:
    LOOP AT <dyn_table> ASSIGNING <dyn_wa>.
        LOOP AT <DYN_TABLE2> ASSIGNING <DYN_WA2>.
            ASSIGN COMPONENT <COMPONENT> OF STRUCTURE   <DYN_WA2> TO <FS>.
            CHECK <FS> IN (=) .......
                ASSIGN COMPONENT <COMPONENT> OF STRUCTURE   <DYN_WA> TO <FS2>.
                <FS2> = .......
                EXIT.
        ENDLOOP.
    ENDLOOP.
    Max

  • How to format data in internal table

    Hi Friendz...
    In a program i have transferred the data from a Excel Spread sheet (.xls file) to an internal table using FM <b>"ALSM_EXCEL_TO_INTERNAL_TABLE"</b>.
    The internal table is like this:
    begin of xl_data occurs 0,
         vendor name
         street
         address
         vat reg no
         bank no
    end of xl_data.
    now i have to include some more fields to this internal table and then i have to download this data to a <b>.txt</b> file.
    could you please tell me how should i do this?

    Please see this sample program.  It will upload from excel into internal table,  move data to another itab with other fields and download to C:\ drive.
    report zrich_0002.
    types: begin of ttab ,
          fld1(30) type c,
          fld2(30) type c,
          fld3(30) type c,
          fld4(30) type c,
          fld5(30) type c,
          end of ttab.
    types: begin of ttab2 ,
          fld1(30) type c,
          fld2(30) type c,
          fld3(30) type c,
          fld4(30) type c,
          fld5(30) type c,
          fld6(30) type c,
          fld7(30) type c,
          end of ttab2.
    data: itab type table of ttab with header line.
    data: itab2 type table of ttab2 with header line.
    selection-screen skip 1.
    parameters: p_file type localfile default
                'C:test.txt'.
    selection-screen skip 1.
    at selection-screen on value-request for p_file.
      call function 'KD_GET_FILENAME_ON_F4'
           exporting
                static    = 'X'
           changing
                file_name = p_file.
    start-of-selection.
      clear itab. refresh itab.
      perform upload_data.
      loop at itab.
        clear itab2.
        move-corresponding itab to itab2.
        itab2-fld6 = 'Another Field'.
        itab2-fld7 = 'No, really last one'.
        append itab2.
      endloop.
      call function 'GUI_DOWNLOAD'
           exporting
                filename = 'C:itab2.txt'
           tables
                data_tab = itab2
           exceptions
                others   = 22.
    * Upload_Data
    form upload_data.
      data: file type  rlgrap-filename.
      data: xcel type table of alsmex_tabline with header line.
      file = p_file.
      call function 'ALSM_EXCEL_TO_INTERNAL_TABLE'
           exporting
                filename                = file
                i_begin_col             = '1'
                i_begin_row             = '1'
                i_end_col               = '200'
                i_end_row               = '5000'
           tables
                intern                  = xcel
           exceptions
                inconsistent_parameters = 1
                upload_ole              = 2
                others                  = 3.
      loop at xcel.
        case xcel-col.
          when '0001'.
            itab-fld1 = xcel-value.
          when '0002'.
            itab-fld2 = xcel-value.
          when '0003'.
            itab-fld3 = xcel-value.
          when '0004'.
            itab-fld4 = xcel-value.
          when '0005'.
            itab-fld5 = xcel-value.
        endcase.
        at end of row.
          append itab.
          clear itab.
        endat.
      endloop.
    endform.
    Regards,
    Rich Heilman

  • How to make copies of internal table with unknown structure?

    Dis is the detailed description of a problem i have and i
    tried all i can to solve it without satisfied results.
    I want to copy an internal table of a type defined in the
    ABAP program itself, not dictionary. I have a function
    that is supposed to accept the internal table as a
    parameter of type 'any table'. The function should create
    the new internal table using the field catalog of the
    passed 'any table' and then create a new internal table
    using "create_dynamic_table" and return the DATA pointer.
    If anyone knows how it is done pls help me out.
    I would like to get the field catalog of the following
    internal table automatically by using some sap function..
    TYPES:
    BEGIN OF MYTYPE,
      NAME TYPE SOMEZTABLE-NAME,
      AGE TYPE SOMEZTABLE-AGE,
    END OF MYTYPE.
    DATA:
    IT_TABLE TYPE TABLE OF MYTABLE INITIAL SIZE 0.
    DATA:
    COPY_OF_IT_TABLE TYPE REF TO DATA.
    SELECT NAME AGE INTO TABLE IT_TABLE FROM S0MEZTABLE.
    PERFORM CREATECOPY USING IT_TABLE CHANGING COPY_OF_IT_TABLE.
    FORM CREATECOPY
      USING
        IT_TABLE <b>TYPE ANY TABLE</b>
      CHANGING
        COPY_OF_IT_TABLE TYPE REF TO DATA.
    <i>[ Here i would like to create a copy the passed
    internal table and return a reference to it. I donot want
    to refer to the same table passed. I guess the use of
    function CREATE_DYNAMIC_TABLE in the CL_ALV_TABLE_CREATE
    clss is required. ]</i>
    ENDFORM.

    Ravi,
    If all you want to do is to copy this into another table, why can't do something like this.
    TYPES:
    BEGIN OF MYTYPE,
      NAME TYPE SOMEZTABLE-NAME,
      AGE TYPE SOMEZTABLE-AGE,
    END OF MYTYPE.
    DATA:
    IT_TABLE TYPE TABLE OF MYTABLE INITIAL SIZE 0.
    DATA: COPY_OF_IT_TABLE TYPE REF TO DATA.
    SELECT NAME AGE INTO TABLE IT_TABLE FROM S0MEZTABLE.
    FIELD-SYMBOLS : <FT_COPY_TABLE> TYPE ANY TABLE.
    Call Method CL_ALV_TABLE_CREATE->CREATE_DYNAMIC_TABLE
    Exporting
    IT_FIELDCATALOG = T_FIELDCAT
    Importing
    EP_TABLE = COPY_OF_IT_TABLE
    ASSIGN COPY_OF_IT_TABLE->* TO <FT_COPY_TABLE>
    However, this is provided you already have a field catalog. Now in this case we have not created a field catalog. So, for that
    data : BEGIN OF MYTABLE OCCURS 0 WITH HEADER LINE
      NAME TYPE SOMEZTABLE-NAME,
      AGE TYPE SOMEZTABLE-AGE,
    END OF MYTABLE.
    Now, create the field catalog.
    CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
    EXPORTING
      I_BUFFER_ACTIVE              =
      I_STRUCTURE_NAME             =
      I_CLIENT_NEVER_DISPLAY       = 'X'
      I_BYPASSING_BUFFER           =
        I_INTERNAL_TABNAME           = 'MYTABLE'
      CHANGING
        CT_FIELDCAT                  = T_FIELDCAT
    EXCEPTIONS
      INCONSISTENT_INTERFACE       = 1
      PROGRAM_ERROR                = 2
      OTHERS                       = 3
    IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    This should create the field catalog.
    Regards,
    Ravi

Maybe you are looking for

  • Inventory Report Based On Posting Date

    Hai All Can any one help me with the subject "Inventory Report Based On Posting Date" Please with regards Shankar

  • Oracle 10g forms URL

    Hi All, When I launch forms application from forms builder, it uses automatically URL as http://administatror:8889/forms/frmservlet . Is there any way to change this URL name? Is this URL specified in any file? Oracle forms uses default browser to la

  • How to read ISO characters???

    Hi, I'm trying to read the headers of an email. In the "subject" section I have some words in french, imagine the subject is "Café" (whith the accented e). The content of the subject header is not "Café" instead it is: =?ISO-8859-1?Q?Caf=E9?=. The th

  • Authorware Screwing up my  screen resolution settings

    Was having problems with my macromedia flash and the website said download this Authorware. Now everytime I click on my web browser FireFox or on the downloaded authorware desktop install icon it resizes my screen. I have gone back to the properties

  • Acrobat 9.1.3 crashing on launch

    We have CS4 Design Premium installed on a bunch of Mac Pros running Snow Leopard and the student accounts that are managed by the server (running OS X Server 10.6) can't use Acrobat 9.1.3. When it launches, it crashes after showing the splash graphic