Doubts with control break statements on internal table loops (AT/ENDAT)

Hi, i've had a couple of doubts for a long while which I hope someone can clarify today:
1) I know how to use the AT statements, however, i'm not sure I get correctly what this part of help regarding this commands means:
<i>"The control level structure with internal tables is static. It corresponds exactly to the sequence of columns in the internal table (from left to right). In this context, the criteria according to which you sort the internal table are unimportant."</i>
I've always sorted the internal table before the control break and it works that way. For example:
SORT ITAB BY EBELN EBELP.
LOOP AT ITAB.
  AT NEW EBELN.
*   Code for the order header
  ENDAT.
ENDLOOP.
If I <b>don't</b> sort the internal table, it doesn't work! (i get dupplicated processing). In the example, if i have more than one register with the same EBELN and they're not consecutive, the header gets processed twice. I really don't get that part of the help text.
2) I know this: <i>"At the start of a new control level (i.e. immediately after AT), the following occurs in the output area of the current LOOP statement:
All character type fields (on the right) are filled with "*" after the current control level key.
All other fields (on the right) are set to their initial values after the current control level key."</i>
My doubt is: WHY is that this way? Because sometimes (most times) I need those fields INSIDE the statement! So when that happened i've solved it in one of three ways:
LOOP AT ITAB INTO WA_ITAB.
  WA_ITAB_AUX = WA_ITAB.
  AT NEW FIELD.
    WA_ITAB = WA_ITAB_AUX.
*   ...Rest of the code for the first register
  ENDAT.
ENDLOOP.
LOOP AT ITAB INTO WA_ITAB.
  AT NEW FIELD.
    READ TABLE ITAB INDEX SY-TABIX INTO WA_ITAB.
*   ...Rest of the code for the first register
  ENDAT.
ENDLOOP.
* (Without AT)
LOOP AT ITAB INTO WA_ITAB.
  IF WA_ITAB-FIELD <> FIELD_AUX.
    FIELD_AUX = WA_ITAB_FIELD.
*   ...Rest of the code for the first register
  ENDIF.
ENDLOOP.
Is there any problem with this way of coding? Can be done better?
Thank you very much in advance.

Hi..,
1)
See if u sort the table on a field on which u r using AT ENDAT .. then all the records which are having the same value for that field will form a group or those reocrds will be at one place.. so when u sort the table for all the records  AT ENDAT  will get executed onli once..
If u dont sort this table on this field then all these records will be at different places and in between there may be records with different value for this field.. so this AT ENDAT will get executed for each record !!
2)
No u cannot use the Right hand fields of the field in the table .. Because these AT events work as Group based operations... So till that field on which AT ENDAT is working it breaks that record into two groups.. One is the left hand fields including that field.. and right hand fields as another group.. and makes the right hand group as stars ****.  Thats y u can observe that even any one field in the left hand group changes the AT ENDAT will get executed  !!!!
Hope u understood !!!
regards,
sai ramesh

Similar Messages

  • Control break statements in internal tables

    explain the concept of at end of in internal example with siutable example.

    AT END OF f.
    Effect
    f is a sub-field of an internal table or extract dataset (EXTRACT) which is being processed with LOOP, i.e. the variants 1 and 2 only make sense within a LOOP.
    Both "AT NEW f." and "AT END OF f. " introduce processing blocks which are concluded by " ENDAT.".
    These processing blocks are processed whenever the contents of a field f or a sub-field defined before f change as a result of processing with LOOP. "AT NEW f." begins a new group of (table) lines with the same contents as the field f while "AT END OF f." concludes such a group.
    Within the AT ... ENDAT processing of internal tables, all argument fields following f are filled with "*".
    Examples
    1. AT for sub-fields of an internal table
    DATA: BEGIN OF COMPANIES OCCURS 20,
            NAME(30),
            PRODUCT(20),
            SALES TYPE I,
          END   OF COMPANIES.
    LOOP AT COMPANIES.
      AT NEW NAME.
        NEW-PAGE.
        WRITE / COMPANIES-NAME.
      ENDAT.
      WRITE: / COMPANIES-PRODUCT, COMPANIES-SALES.
      AT END OF NAME.
        SUM.
        WRITE: / COMPANIES-NAME, COMPANIES-SALES.
      ENDAT.
    ENDLOOP.
    Check this , this is Quoted from SAP help.
    Regards
    Vijay

  • Doubt in control break statement

    Hi All,
    Is there any way to trigger control break statements at new & at end of for non primary key fields.
    i want to trigger both control break statements for my requirement , not at change of, because i want to trigger at end of also. Please let me know if any possibility. Thanks
    regards
    vishal

    hi vishal,
    Variants:
    1. AT NEW f.
    2. AT END OF f.
    3. AT FIRST.
    4. AT LAST.
    Effect
    In a LOOP which processes an internal table, you can use special control structures for control break processing. All these structures begin with AT and end with ENDAT. The sequence of statements which lies between them is then executed if a control break occurs.
    You can use these key words for control break processing with internal tables only if a loop is actively processing an internal table and reference is to the innermost currently active loop.
    The control level structure with internal tables is static. It corresponds exactly to the sequence of columns in the internal table (from left to right). In this context, the criteria according to which you sort the internal table are unimportant.
    At the start of a new control level (i.e. immediately after AT), the following occurs in the output area of the current LOOP statement:
    All character type fields (on the right) are filled with "*" after the current control level key.
    All other fields (on the right) are set to their initial values after the current control level key.
    Between AT and ENDAT, you can use SUM to insert the appropriate control totals in the numeric fields (see also ABAP Number Types) of the LOOP output area (on the right) after the current control level key. Summing is supported both at the beginning of a control level (AT FIRST, AT NEW f) and also the end of a control level (AT END OF f, AT LAST).
    At the end of the control level processing (i.e. after ENDAT), the old contents of the LOOP output area are restored.
    Notes
    When calculating totals, you must ensure that the totals are inserted into the same sub-fields of the LOOP output area as those where the single values otherwise occur. If there is an overflow, processing terminates with a runtime error.
    If an internal table is processed only in a restricted form (using the additions FROM, TO and/or WHERE with the LOOP statement), you should not use the control structures for control level processing because the interaction of a restricted LOOP with the AT statement is currenly not properly defined.
    With LOOPs on extracts, there are also special control break control structures you can use.
    Note
    Non-Catchable Exceptions:
    SUM_OVERFLOW: Overflow when calculating totals with SUM.
    Variant 1
    AT NEW f.
    Variant 2
    AT END OF f.
    The syntax check performed in an ABAP Objects context is stricter than in other ABAP areas.See Compatible Work Area with Control Level Processing and Field Symbols Not Allowed as Control Level Criterion.
    Effect
    f is a sub-field of an internal table processed with LOOP. The sequence of statements which follow it is executed if the sub-field f or a sub-field in the current LOOP line defined (on the left) before fhas a different value than in the preceding (AT NEW) or subsequent (AT END OF) table line.
    Example
    TYPES: BEGIN OF COMPANIES_TYPE,
            NAME(30),
            PRODUCT(20),
            SALES TYPE I,
          END   OF COMPANIES_TYPE.
    DATA: COMPANIES TYPE STANDARD TABLE OF COMPANIES_TYPE WITH
                         NON-UNIQUE DEFAULT KEY INITIAL SIZE 20,
          WA_COMPANIES TYPE COMPANIES_TYPE.
    LOOP AT COMPANIES INTO WA_COMPANIES.
      AT NEW NAME.
        NEW-PAGE.
        WRITE / WA_COMPANIES-NAME.
      ENDAT.
      WRITE: / WA_COMPANIES-PRODUCT, WA_COMPANIES-SALES.
      AT END OF NAME.
        SUM.
        WRITE: / WA_COMPANIES-NAME, WA_COMPANIES-SALES.
      ENDAT.
    ENDLOOP.
    The AT statements refer to the field COMPANIES-NAME.
    Notes
    If a control break criterion is not known until runtime, you can use AT NEW (name) or AT END OF (name) to specify it dynamically as the contents of the field name. If name is blank at runtime, the control break criterion is ignored and the sequence of statements is not executed. If name contains an invalid component name, a runtime error occurs.
    By defining an offset and/or length, you can further restrict control break criteria - regardless of whether they are specified statically or dynamically.
    A field symbol pointing to the LOOP output area can also be used as a dynamic control break criterion. If the field symbol does not point to the LOOP output area, a runtime error occurs.
    If you use AT within a LOOP with an explicitly-specified output area, the area must be compatible with the line type of the internal table so that it can be initialized properly (as described above) at the start of a new control level.
    You can restrict control break criteria further, regardless of whether they were defined statically or dynamically, by specifying offset and/or length.
    Variant 3
    AT FIRST.
    Variant 4
    AT LAST.
    Effect
    Executes the appropriate sequence of statements once during the first (AT FIRST) or last (AT LAST) loop pass.
    Example
    TYPES: BEGIN OF COMPANIES_TYPE,
            NAME(30),
            PRODUCT(20),
            SALES TYPE I,
          END   OF COMPANIES_TYPE.
    DATA: COMPANIES TYPE STANDARD TABLE OF COMPANIES_TYPE WITH
                         NON-UNIQUE DEFAULT KEY INITIAL SIZE 20,
          WA_COMPANIES TYPE COMPANIES_TYPE.
    LOOP AT COMPANIES INTO WA_COMPANIES.
    AT FIRST.
    SUM.
    WRITE: 'Sum of all SALES:',
    55 WA_COMPANIES-SALES.
    ENDAT.
    WRITE: / WA_COMPANIES-NAME, WA_COMPANIES-PRODUCT,
    55 WA_COMPANIES-SALES.
    ENDLOOP.

  • Control statement in internal tables

    hi experts,
    can any body will provide me the control statement of internal table.
                                                               thank you

    Hi,
    check this link
    http://help.sap.com/saphelp_nw2004s/helpdata/en/9f/db9f1f35c111d1829f0000e829fbfe/content.htm
    Control Break Statements
    Control break statements are used to create statement blocks which process only specific table lines the LOOP – ENDLOOP block.
    You open such a statement block with the control level statement AT and close it with the control level statement ENDAT. The syntax is as follows:
    Table should be sorted when you use control-break statements
    You can break the sequential access of internal tables by using these statements.
    Syntax:
    At first.
    <Statement block>
    Endat.
    This is the first statement to get executed inside the loop (remember control break statements are applicable only inside the loop)
    So in this block you can write or process those statements which you want to get executed when the loop starts.
    At New carrid.
    Write:/ carrid.
    Endat.
    In this case whenever the new carrid is reached, carrid will be written.
    At End of carrid.
    Uline.
    Endat.
    In this case whenever the end of carrid is reached, a line will be drawn.
    At Last.
    Write:/ ‘Last Record is reached’.
    Endat.
    Processing of statements within this block is done when entire processing of entire internal table is over. Usually used to display grand totals.
    You can use either all or one of the above control break statements with in the loop for processing internal table.
    At end of carrid.
    Sum.
    Endat.
    In above case the statement SUM (applicable only within AT-ENDAT) will sum up all the numeric fields in internal table and result is stored in same internal table variable.
    Regards,
    Sruthi

  • Control break statements

    Hi friends,
           pls explain , what is the use of control break statements( at first, at last, at new, at end of, on change of ) ? and practical difference applying at new and on change.
    Pls send me material or links related to control break statements.
    Thanks in advance.
    SR K

    Hello SR K,
    Just go through the following documentation.
    AT - Control breaks with extracts
                  Variants:
                  1. AT NEW f.
                  2. AT END OF f.
                  3. AT FIRST.
                  4. AT LAST.
                  5. AT fg.
    Effect        In a LOOP which processes a dataset created with EXTRACT, you
                  can use special control structures for control break
                  processing. All these structures begin with AT and end with
                  ENDAT. The sequence of statements which lies between is
                  executed whenever a control break occurs.
                  You can use these key words for control break processing with
                  extract datasets only if the active LOOP statement is
                  processing an extract dataset.
                  The control level structure with extract datasets is dynamic.
                  It corresponds exactly to the sort key of the extract dataset,
                  i.e. to the order of fields in the field group HEADER by which
                  the extract dataset was sorted.
                  At the end of a control group (AT END OF, AT LAST), there are
                  two types of control level information between AT and ENDAT:
                  -  If the sort key of the extract dataset contains a
                     non-numeric field h (particularly in the field group
                     HEADER), the field CNT(h) contains the number of control
                     breaks in the (subordinate) control level h.
                  -  For extracted number fields g (see also ABAP Number Types),
                     the fields SUM(g) contain the relevant control totals.
    Notes         1. The fields CNT(h) and SUM(g) can only be addressed after
                     they have been sorted. Otherwise, a runtime error may
                     occur.
                  2. The fields CNT(h) and SUM(g) are filled with the relevant
                     values for a control level at the end of each control group
                     (AT END OF, AT LAST), not at the beginning (AT FIRST, AT
                     NEW).
                  3. When calculating totals with SUM(g), the system
                     automatically chooses the maximum field sizes so that an
                     overflow occurs only if the absolute value area limits are
                     exceeded.
                  4. You can also use special control break control structures
                     with LOOPs on internal tables.
    Variant 1     AT NEW f.
    Variant 2     AT END OF f.
    Effect        f is a field from the field group HEADER. The enclosed
                  sequence of statements is executed if
                  -  the field f occurs in the sort key of the extract dataset
                     (and thus also in the field group HEADER) and
                  -  the field f or a superior sort criterion has a different
                     value in the current LOOP line than in the preceding (AT
                     NEW) or subsequent (AT END OF) record of the extract
                     dataset.
                  If f is not an assigned field symbol, the control break
                  criterion is ignored, and the subsequent sequence of
                  statements is not executed. If a field symbol is assigned, but
                  does not point to the HEADER field group, the system triggers
                  a runtime error.
    Example
                  DATA: NAME(30),
                        SALES TYPE I.
                  FIELD-GROUPS: HEADER, INFOS.
                  INSERT: NAME  INTO HEADER,
                          SALES INTO INFOS.
                  LOOP.
                    AT NEW NAME.
                      NEW-PAGE.
                    ENDAT.
                    AT END OF NAME.
                      WRITE: / NAME, SUM(SALES).
                    ENDAT.
                  ENDLOOP.
    Notes         1. If the extract dataset is not sorted before processing with
                     LOOP, no control level structure is defined and the
                     statements following AT NEW or AT END OF are not executed.
                  2. Fields which stand at hex zero are ignored by the control
                     break check with AT NEW or AT END OF. This corresponds to
                     the behavior of the SORT statement, which always places
                     unoccupied fields (i.e. fields which stand at hex zero)
                     before all occupied fields when sorting extract datasets,
                     regardless of whether the sort sequence is in ascending or
                     descending order.
    Variant 3     AT FIRST.
    Variant 4     AT LAST.
    Effect        Executes the relevant series of statements just once - either
                  on the first loop pass (with AT FIRST) or on the last loop
                   pass (with AT LAST).
    Variant 5     AT fg.
                   Addition:
                   ... WITH fg1
    Effect        This statement makes single record processing dependent on the
                   type of extracted record.
                   The sequence of statements following AT fg are executed
                   whenever the current LOOP record is created with EXTRACT fg
                   (in other words: when the current record is a fg record).
    Addition      ... WITH fg1
    Effect        Executes the sequence of statements belonging to AT fg WITH
                   fg1 only if the record of the field group fg in the dataset is
                   immediately followed by a record of the field group fg1.
    Reward If Helpful
    Regards
    Sasidhar Reddy Matli.

  • How can I use control break statement in my requirement

    Hi ABAPers,
    In my requirement, I have 4 fields in sorted internal table, (audat, prdha, ipnum, netwr). In that i need to do summation of netwr field falling under same prdha(BU) for the same month
    internal table fields :
    audat  prdha  ipnum  netwr
    02      abc     1      100
    02      abc     2      200
    02      xyz     3      300
    03      abc     4      100
    03      xyz     5      300
    03      xyz     6      200
    i need output like this:
    audat  prdha  ipnum  netwr
    02      abc     1,2      300
    02      xyz     3         300
    03      abc     4         100
    03      xyz     5,6      500
    Can anyone suggest me logic for this by using control break statements
    Thanks in advance,
    Ankita
    Moderator Message: Duplciate Post.
    Edited by: kishan P on Apr 14, 2011 3:03 PM

    Hi ABAPers,
    In my requirement, I have 4 fields in sorted internal table, (audat, prdha, ipnum, netwr). In that i need to do summation of netwr field falling under same prdha(BU) for the same month
    internal table fields :
    audat  prdha  ipnum  netwr
    02      abc     1      100
    02      abc     2      200
    02      xyz     3      300
    03      abc     4      100
    03      xyz     5      300
    03      xyz     6      200
    i need output like this:
    audat  prdha  ipnum  netwr
    02      abc     1,2      300
    02      xyz     3         300
    03      abc     4         100
    03      xyz     5,6      500
    Can anyone suggest me logic for this by using control break statements
    Thanks in advance,
    Ankita
    Moderator Message: Duplciate Post.
    Edited by: kishan P on Apr 14, 2011 3:03 PM

  • Control-break statements:value not being displayed.

    Hi all,
    Iam using the control break statement at end of ..., sum.
    value is not being displayed,instead it is showing *********.
    even in the debugging mode the value is not being displayed.
    iam passing the values into a temp IT,but still the values are not being dispalyed.
    here is the following snippet of code.
    what could be the mistake?
    Please give me the suitable answer.
    Thanks in advance.
    LOOP AT FT_ITAB INTO FT_WA.
        FTY_WA-EBELN = FT_WA-EBELN.
        FTY_WA-EBELP = FT_WA-EBELP.
        FTY_WA-NAME1 = FT_WA-NAME1.
        FTY_WA-ZTERM = FT_WA-ZTERM.
        FTY_WA-INCO1 = FT_WA-INCO1.
        FTY_WA-WAERS = FT_WA-WAERS.
        FTY_WA-SUBMI = FT_WA-SUBMI.
    AT END OF EBELN.
        SUM.
        FTY_WA-BRTWR = FT_WA-BRTWR.
        FTY_WA-KTMNG = FT_WA-KTMNG.
        FTY_WA-NETPR = FT_WA-NETPR.
       APPEND FTY_WA TO FTY_ITAB.
       CLEAR FTY_WA.
    ENDAT.

    Abhi,
    i tried as you said values are being diplayed,but they are not gettin totaled,i want the sum of values at the end of line item,I need to pass these valuse to alv.
    here is the complete code.Please tell me how should I proceed.
    TABLES:EKKO,EKPO,LFA1.
    TYPE-POOLS:SLIS.
    DATA:HEADER TYPE SLIS_T_FIELDCAT_ALV,
         WA TYPE SLIS_FIELDCAT_ALV,
         LAYOUT TYPE SLIS_LAYOUT_ALV.
    TYPES:BEGIN OF PH_TY,
            PH_EBELN LIKE EKKO-EBELN,
            PH_AEDAT LIKE EKKO-AEDAT,
            PH_LIFNR LIKE EKKO-LIFNR,
            PH_ZTERM LIKE EKKO-ZTERM,
            PH_EKORG LIKE EKKO-EKORG,
            PH_WAERS LIKE EKKO-WAERS,
            PH_SUBMI LIKE EKKO-SUBMI,
            PH_INCO1 LIKE EKKO-INCO1,
            PO_EBELN LIKE EKPO-EBELN,
            PO_EBELP LIKE EKPO-EBELP,
            PO_BRTWR LIKE EKPO-BRTWR,
            PO_KTMNG LIKE EKPO-KTMNG,
            PO_NETPR LIKE EKPO-NETPR,
          END OF PH_TY.
    TYPES:BEGIN OF PO_TY,
            PO_EBELN LIKE EKPO-EBELN,
            PO_EBELP LIKE EKPO-EBELP,
            PO_BRTWR LIKE EKPO-BRTWR,
            PO_KTMNG LIKE EKPO-KTMNG,
            PO_NETPR LIKE EKPO-NETPR,
          END OF PO_TY.
    TYPES:BEGIN OF VO_TY,
             VO_LIFNR LIKE LFA1-LIFNR,
             VO_NAME1 LIKE LFA1-LIFNR,
          END OF VO_TY.
    TYPES:BEGIN OF FI_TY,
             EBELN LIKE EKKO-EBELN,
           AEDAT LIKE EKKO-AEDAT,
           LIFNR LIKE EKKO-LIFNR,
             ZTERM LIKE EKKO-ZTERM,
           EKORG LIKE EKKO-EKORG,
             WAERS LIKE EKKO-WAERS,
             SUBMI LIKE EKKO-SUBMI,
             INCO1 LIKE EKKO-INCO1,
           EBELN_I LIKE EKPO-EBELN,
             EBELP   LIKE EKPO-EBELP,
             NAME1 LIKE LFA1-LIFNR,
             BRTWR LIKE EKPO-EBELN,
             KTMNG LIKE EKPO-EBELN,
             NETPR LIKE EKPO-EBELN,
           LIFNR1 LIKE LFA1-LIFNR,
          END OF FI_TY.
    TYPES:BEGIN OF FT_TY,
             EBELN LIKE EKKO-EBELN,
             ZTERM LIKE EKKO-ZTERM,
             WAERS LIKE EKKO-WAERS,
             SUBMI LIKE EKKO-SUBMI,
             INCO1 LIKE EKKO-INCO1,
             EBELP LIKE EKPO-EBELP,
             NAME1 LIKE LFA1-LIFNR,
             BRTWR LIKE EKPO-EBELN,
             KTMNG LIKE EKPO-EBELN,
             NETPR LIKE EKPO-EBELN,
          END OF FT_TY.
    DATA: PH_ITAB TYPE STANDARD TABLE OF PH_TY,
          PO_ITAB TYPE STANDARD TABLE OF PO_TY,
          VO_ITAB TYPE STANDARD TABLE OF VO_TY,
          FI_ITAB TYPE STANDARD TABLE OF FI_TY,
          FT_ITAB TYPE STANDARD TABLE OF FT_TY,
          FTY_ITAB TYPE STANDARD TABLE OF FT_TY,
          FTY1_ITAB TYPE STANDARD TABLE OF FT_TY.
    DATA:PH_WA LIKE LINE OF PH_ITAB,
         PO_WA LIKE LINE OF PO_ITAB,
         VO_WA LIKE LINE OF VO_ITAB,
         FI_WA LIKE LINE OF FI_ITAB,
         FT_WA LIKE LINE OF FT_ITAB,
         FT_WA1 LIKE LINE OF FT_ITAB,
         FTY_WA LIKE LINE OF FT_ITAB,
         FTY1_WA LIKE LINE OF FT_ITAB.
    SELECT A~EBELN
           A~AEDAT
           A~LIFNR
           A~ZTERM
           A~EKORG
           A~WAERS
           A~SUBMI
           A~INCO1
           B~EBELN
           B~EBELP
           B~BRTWR
           B~KTMNG
           B~NETPR
           INTO TABLE PH_ITAB FROM EKKO AS A
           INNER JOIN EKPO AS B
           ON AEBELN = BEBELN
           UP TO 25 ROWS.
    CHECK PH_ITAB[] IS NOT INITIAL.
    SELECT LIFNR
           NAME1
           FROM LFA1 INTO TABLE VO_ITAB
           FOR ALL ENTRIES IN PH_ITAB
           WHERE LIFNR = PH_ITAB-PH_LIFNR.
    CHECK VO_ITAB[] IS NOT INITIAL.
    SORT PH_ITAB BY PH_EBELN.
    SORT VO_ITAB BY VO_LIFNR.
    LOOP AT PH_ITAB INTO PH_WA.
      FI_WA-SUBMI = PH_WA-PH_SUBMI.
      FI_WA-EBELN = PH_WA-PH_EBELN.
      FI_WA-ZTERM = PH_WA-PH_ZTERM.
      FI_WA-INCO1 = PH_WA-PH_INCO1.
      FI_WA-WAERS = PH_WA-PH_WAERS.
      FI_WA-EBELP  = PH_WA-PO_EBELP.
      FI_WA-BRTWR  = PH_WA-PO_BRTWR.
      FI_WA-KTMNG  = PH_WA-PO_KTMNG.
      FI_WA-NETPR  = PH_WA-PO_NETPR.
      READ TABLE VO_ITAB INTO VO_WA WITH KEY VO_LIFNR = PH_WA-PH_LIFNR BINARY SEARCH.
      FI_WA-NAME1 = VO_WA-VO_NAME1.
      APPEND FI_WA TO FI_ITAB.
      CLEAR FI_WA.
    ENDLOOP.
    LOOP AT FI_ITAB INTO FI_WA.
        FT_WA-EBELN = FI_WA-EBELN.
        FT_WA-EBELP = FI_WA-EBELP.
        FT_WA-NAME1 = FI_WA-NAME1.
        FT_WA-ZTERM = FI_WA-ZTERM.
        FT_WA-INCO1 = FI_WA-INCO1.
        FT_WA-WAERS = FI_WA-WAERS.
        FT_WA-SUBMI = FI_WA-SUBMI.
        FT_WA-BRTWR = FI_WA-BRTWR.
        FT_WA-KTMNG = FI_WA-KTMNG.
        FT_WA-NETPR = FI_WA-NETPR.
    APPEND FT_WA TO FT_ITAB.
    CLEAR FT_WA.
    ENDLOOP.
    LOOP AT FT_ITAB INTO FT_WA.
    AT END OF EBELN.
    SUM.
        FTY_WA-EBELN = FT_WA-EBELN.
        FTY_WA-EBELP = FT_WA-EBELP.
        FTY_WA-NAME1 = FT_WA-NAME1.
        FTY_WA-ZTERM = FT_WA-ZTERM.
        FTY_WA-INCO1 = FT_WA-INCO1.
        FTY_WA-WAERS = FT_WA-WAERS.
        FTY_WA-SUBMI = FT_WA-SUBMI.
        FTY_WA-BRTWR = FT_WA-BRTWR + FTY_WA-BRTWR.
        FTY_WA-KTMNG = FT_WA-KTMNG + FTY_WA-KTMNG.
        FTY_WA-NETPR = FT_WA-NETPR + FTY_WA-KTMNG.
    ENDAT.
       APPEND FTY_WA TO FTY_ITAB.
       CLEAR FTY_WA.
    ENDLOOP.
    WA-SELTEXT_L = 'ebeln'.
    WA-COL_POS = '1'.
    WA-FIELDNAME = 'EBELN'.
    WA-TABNAME = 'FTY_ITAB'.
    WA-OUTPUTLEN = '15'.
    APPEND WA TO HEADER.
    CLEAR WA.
    WA-SELTEXT_L = 'SUBMI'.
    WA-COL_POS = '2'.
    WA-FIELDNAME = 'SUBMI'.
    WA-TABNAME = 'FTY_ITAB'.
    WA-OUTPUTLEN = '15'.
    APPEND WA TO HEADER.
    CLEAR WA.
    WA-SELTEXT_L = 'NAME1'.
    WA-COL_POS = '3'.
    WA-FIELDNAME = 'NAME1'.
    WA-TABNAME = 'FTY_ITAB'.
    WA-OUTPUTLEN = '15'.
    APPEND WA TO HEADER.
    CLEAR WA.
    WA-SELTEXT_L = 'ZTERM'.
    WA-COL_POS = '4'.
    WA-FIELDNAME = 'ZTERM'.
    WA-TABNAME = 'FTY_ITAB'.
    WA-OUTPUTLEN = '15'.
    APPEND WA TO HEADER.
    CLEAR WA.
    WA-SELTEXT_L = 'INCO1'.
    WA-COL_POS = '5'.
    WA-FIELDNAME = 'INCO1'.
    WA-TABNAME = 'FTY_ITAB'.
    WA-OUTPUTLEN = '15'.
    APPEND WA TO HEADER.
    CLEAR WA.
    WA-SELTEXT_L = 'WAERS'.
    WA-COL_POS = '6'.
    WA-FIELDNAME = 'WAERS'.
    WA-TABNAME = 'FTY_ITAB'.
    WA-OUTPUTLEN = '15'.
    APPEND WA TO HEADER.
    CLEAR WA.
    WA-SELTEXT_L = 'brtwr'.
    WA-COL_POS = '7'.
    WA-FIELDNAME = 'BRTWR'.
    WA-TABNAME = 'FTY_ITAB'.
    WA-OUTPUTLEN = '20'.
    APPEND WA TO HEADER.
    CLEAR WA.
    WA-SELTEXT_L = 'netpr'.
    WA-COL_POS = '8'.
    WA-FIELDNAME = 'NETPR'.
    WA-TABNAME = 'FTY_ITAB'.
    WA-OUTPUTLEN = '20'.
    APPEND WA TO HEADER.
    CLEAR WA.
    WA-SELTEXT_L = 'ktmng'.
    WA-COL_POS = '9'.
    WA-FIELDNAME = 'KTMNG'.
    WA-TABNAME = 'FTY_ITAB'.
    WA-OUTPUTLEN = '20'.
    APPEND WA TO HEADER.
    CLEAR WA.
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
      EXPORTING
        I_CALLBACK_PROGRAM = SY-REPID
        IT_FIELDCAT        = header[]
      TABLES
        T_OUTTAB           = FTY_ITAB[].
    IF SY-SUBRC = 0.
    ENDIF.

  • What happen if i use controll break statement in between select & endselect

    Hi all,
    what happen if i use controll break statement in between select & endselect ?
    Thanks in Advance
    KR

    Hi for reference u can go through this code example
    data:
      fs_tab like sflight.
      data:
       t_tab like standard table of fs_tab.
       select * from sflight into table t_tab.
       loop at t_tab into fs_tab.
         write: / fs_tab-carrid.
       endloop.
       refresh t_tab.
       clear fs_tab.
       select * from sflight into fs_tab.
         at new fs_tab-carrid.
           append fs_tab to t_tab.
         endat.
       endselect.

  • At new control break statement

    hi all,
    I have a requirement where I have to display records for non duplicate matnr.
    I have used this control break statement and got
    stars for all other fields except matn in the outputr.
    code:    at new matnr.
                              write: /10 sy-vline , wa_mara-matnr COLOR 5,
                                      30 sy-vline , wa_mara-ersda COLOR 5 ,
                                      50 sy-vline , wa_mara-ernam COLOR 5 ,
                                      70 sy-vline , wa_mara-laeda COLOR 5 ,
                                      90 sy-vline , wa_mara-mtart COLOR 5 ,
                                      110 sy-vline , wa_mara-matkl COLOR 5 ,
                                      130 sy-vline , wa_mara-meins COLOR 5 ,
                                      150 sy-vline.
                            ENDAT.
    plese do send me solution for this.
    with regards,
    ASHA.

    FAQ. This has been discussed many times in the forum. Please search.

  • Control break-statement: SUM

    Hi All,
    I am woking with Control break-statmens, SUM.
    LOOP AT IT_SELECT.
    AT NEW PSPNR.
    SUM.
    WRITE:/ IT_SELECT-WERKS,
            IT_SELECT-PSPHI,
            IT_SELECT-PSPNR,
            IT_SELECT-VERNA,
            IT_SELECT-KZWI2,
            IT_SELECT-DMBTR.
    ENDAT.
    ENDLOOP.
    WERKS from EKPO type Char & VERNA from PRPS type Char are displaying as ***************.
    How can I get the actual values instead of ********** for the above Char type fields?
    Thanks in advance,
    Kal Chand

    Hi,
    Go throught his link. This is same for all control break statements.
    Re: output not getting properly
    Hope this helps you
    Raj

  • Control break statements in smart forms

    Hi,
    Can we use control break statements(at new,at end of) in smart forms?
    if no why?
    if yes, how?
    Regards,
    Sonika

    you can use control block statements in smartforms by using the SORT events.
    In TABLES go to to the SORT section.Here you can give the field by which you want the table to be sorted.There are two radio buttons available for sort : SORT BEGIN and SORT end.
    On selecting any one sort event are generated automatically and event nodes are created in smartforms.Inside these event nodes you can add text nodes or code nodes and write your code.
    SORT BEGIN works like AT NEW
    SORT END works like AT END OF.

  • Control break statement for more than one fields

    How can I accomodate more than 2 fields in control break statement?
    e.g. if I want to have control on these fields land1 plant , how can I use it in At statement?
    Thanks

    Hey Marcin,
    If you define the table as:
    DATA:
    BEGIN OF ITAB OCCURS 0,
    LAND TYPE LAND1,
    WERKS TYPE WERKS_D,
    END OF ITAB.
    Then AT NEW WERKS will be triggered whenever there is change in either LAND or WERKS:
    LOOP AT ITAB.
    AT NEW WERKS.
    ENDAT.
    ENDLOOP.
    So
    If you want to use both field as one, you will need to create another field and hold there concatenation of LAND1 and PLANT
    is not required.
    Correct me if i am wrong
    BR,
    Suhas
    Edited by: Suhas Saha on Feb 15, 2010 3:14 PM

  • Can we apply select statement on internal table.

    can we apply select statement on internal table.if yes thrn let me know how to do.

    Dear Sachin,
    You cannot use SELECT statement on internal table.
    If you want to select some rows from internal table you can LOOP the table or you can READ the table.
    <u>Please check the following links for your kind reference:</u>
    <b>http://help.sap.com/saphelp_nw04/helpdata/en/fc/eb35de358411d1829f0000e829fbfe/content.htm
    http://www.sap-img.com/ab009.htm
    http://www.itsmarc.com/crs/Clas0302.htm
    http://www.sapdevelopment.co.uk/tips/tips_itab.htm
    http://searchsap.techtarget.com/search/1,293876,sid21,00.html?query=whatisinternaltable&bucket=ALL</b>
    Cheers !
    Moqeeth.

  • Update statement in Internal Table

    Plz tell me the syntax and e.g. of update statement in Internal Table program
    Moderator message: Welcome to SCN, please research yourself before asking basic questions.
    Edited by: Thomas Zloch on Feb 25, 2010 12:47 PM

    Hi,
    Use UPDATE statement , check below description from SAP help.
    UPDATE dbtab FROM TABLE itab. or UPDATE (dbtabname) FROM TABLE itab.
    Effect
    Mass update of several lines in a database table.Here, the primary key for identifying the lines tobe updated and the values to be changed are taken from the lines of theinternal table itab. 
    The system field SY-DBCNT contains the number of updated lines,i.e. the number of lines in the internal table itab which havekey values corresponding to lines in the database table.
    Regards
    L Appana

  • Read MULTIPLE idocs data with all sgmn to my internal table in a single

    Dear SAP Folks!
    I have a question, I know to read SINGLE idoc data with all segments, we have FM IDOC_READ_COMPLETELY but my requirement is to Read MULTIPLE idocs data with all segments to my internal table in a single shot without keeping this FM in loop! since it is performance issue, at a time i may want to read 1000 idocs data!
    Could anyone please let me know is there any way to get this, keeping mind of performance and any other FM?
    Best Regards,
    Srini

    Hi,
    I know idoc numbers and i can write a select Query to DB table EDID4 to get all segments data to my internal table. But i am looking for FM to do this. because i have too many number of idocs and each idoc is having many segments(I am thinking in performance point of view!) The FM IDOC_READ_COMPLETELY can accept only ONE IDOC number as import parameters at a time to get segment data. in similar way do we have any other FM? or other way? except select query to EDID4 table?
    Best Regards,
    Srini

Maybe you are looking for

  • Issue in RRI

    Hi All, I have been facing an issue with RRI which is working fine in Development system. But when i moved it to UAT, it is not working. I have created the RRI between the report and the R/3 transaction. When i try to navigate from the report to the

  • How to automatically activate a third party application upon MAC startup on OSX 10.9.5?

    I am trying to automatically activate a downloaded application upon the startup of the computer.  This particular app is one that works in the background. Thanks for the help

  • How to make a .exe without errors about the costum scaling

    Hello everybody, i'm new with Ni-Labview, i'm trying to make a .exe file of my application, this is working perfect, but if i make costum scales in my Daq Assist options and i make the vi in a .Exe then there are always errors if i open it on another

  • 10.4.10 problem running with lid closed

    Installed 10.4.10 last night, and now I'm having a problem running with the lid closed. Every day at work, I connect my PowerBook G4 1.33GHz to an external display and USB keyboard/mouse (through a USB hub). I have plenty of room on the external disp

  • Macbook Pro to Windows XP SP3 internet sharing via ethernet?

    ive tried everything i can, turned on the internet sharing of course, and ive been putting in all kinds of IPv4 adresses into both computers, but every time i think i have the settings right, it never connects to the internet. can anyone help me out