VBAK,VBRP,VBRK for all entries on I_VRPMA:Please help

Hi,
I need to join 3 tables VBRK,VBAK,VBRP Tables.Actually to improve the performance first i retrieved matnr and belnr(billing records) from VRPMA Table into I_VRPMA where s_vkorg,s_fkdat,s_fkart.(selection screen)
Now i need to fetch billing records from vbrk join with vbrp and join with vbak tables into internal table I_VBRP for all records fetched from I_VRPMA with billing documents.
Key Fields are:sales doc order type-AUART. To join VBRP with VBAK i am using VBRP-AUBEL = VBAK = VBELN.
Fields which will transfer from VBAK are AUART,AUDAT,and AUGRU
Fields which will transfer from VBRK are: FKART,FKDAT,WAERK.
Fields which will tansfer from VBRP are: VBELN,POSNR,FKIMG,VRKME,MEINS,UMVKZ,WAVWR
Please help me how can i write inner join on this one.
Thanks
Shakeer

Shakeer,
I believe it is OK to use VRPMA table as it has VKORG, FKDAT etc in your key which matches your selection-screen.
Select vbeln posnr F2 F3 AUBEL from vbrp into table lt_vbrp
                                      for all entries in VRPMA
                                      where vbeln = VRPMA-vbeln
                                       and posnr = VRPMA-posnr.
select * from vbfa into table lt_vbfa
                     for all entries in lt_vbrp
                     where vbelv = lt_vbrp-aubel
                           and vbeln = lt_vbrp-vbeln
                           and vbtyp_n in ( 'M', 'N', 'O' ....billing types you are using) .
lt_vbfa is a combined table having active links with vbelv as sales order and vbeln as billing docs.
Add more conditions wherever possible for your case.
Regards,
Diwakar

Similar Messages

  • Hi Guys, having trouble remembering all my passwords on all my devices for the many accounts that we all have. Surely there must be a better and more secure way to prove your identity for all these accounts? Please help my head is going to explode.

    Hi all, has anyone come up with a way to access all of your secure websites without having to remember millions of passwords?
    Going nuts trying to remember them all

    Squaddie123 wrote:
    Hi all, has anyone come up with a way to access all of your secure websites without having to remember millions of passwords?
    Going nuts trying to remember them all
    Sure, I have them all written down on scraps of paper about 4"X4"--maybe 50 total--and stored under a loose floorboard beneath the kitchen sink. If they get wet from a drain leak, I can easily dry them out in a warm oven at 200° for several minutes.
    Besides that, I keep some in Keychain, but most are in Firefox saved passwords. I've never felt the need to do anything else. Where it's important, I use long random strings. And I don't let Firefox save passwords for anything that involves purchases from C Cards.
    (Note: I really do have the ones written down on scraps of paper that I don't want to keep  in a browser, but not really under a loose flooboard, etc.)

  • For all entries with 2 internal table

    HI experts.
    How to use  2 for all entries in a select statement.
    Below refer to my below code.
    select vbeln matnr lfimg vgbel posnr from lips into corresponding fields of table
      it_lips for all entries in  it_likp   where
                  vbeln = it_likp-vbeln and
                  matnr = it_mara-matnr.
    I want to add another for all entries it_mara.
    Please help me .Thanks in advanced.

    hi,
    it is possible....
    use this query...
    declare another internal table of the same type as it_lips.
    data : it_lips_final like it_lips.
    select vbeln matnr lfimg vgbel posnr from lips into corresponding fields of table
    it_lips for all entries in it_likp where
    vbeln = it_likp-vbeln .
    loop at it_lips.
      read table it_mara into it_mara with key matnr = it_lips-matnr.
      if sy-subrc = 0.
        append it_lips to it_lips_final.
      endif.
    endloop.
    refresh it_lips[].
    it_lips[] = it_lips_final[]
    what the above code does is selects all the entries of vbeln from lips and filters it in the loop reading it from mara checking for matnr value and finally
    all the entries according to your requirement is there in it_lips_final which we move it to it_lips again...
    this is something similar to writing a for all entries for 2 table.... but in another fashion
    Regards
    Siddarth

  • SD Flow program using For all entries.

    using simple ALV grid: I have the urgent requirement of changing the following program using 'For all entries' instead of joins and I should not use 'TABLES' -- For top-of-page I need to get dynamic fields like if I select company code in the selection screen then I need to get 'This report is base on COMPANY CODE'.
    This program is about sales flow where i shud get only those records that have ebeln in vbak, delivery, invoice.
    The original program is as follows:
    *& Report  ZSD_DOCU_FLOW                                               *
    REPORT  zsd_docu_flow  NO STANDARD PAGE HEADING                    .
    * Program     : ZCOS_SALES                                           *
    * Dev. Class  :  ZSD
    * Functional  :
    * Created on  :                                                        *
    * Project     :
    * CR Number   :
    * Transaction :  ZSDCSUT                                               *
    * Description :   * Sales document life cylce for given customer
    *                  to declaired period displaying the sales document
    *                  details ,with relevant del details and corresponding
    *                  Invocie Details
    *-----------     Tables Declaration      -----------*
    TABLES: vbak,vbap,vbfa,kna1,vbrk,vbrp,likp,lips,t001.
    TYPE-POOLS : slis.
    *-----------    Internal Tables Declaration      -----------*
    *      Internal Table for Sales Order data                   *
    DATA: BEGIN OF it_so OCCURS 0,
            vbeln LIKE vbak-vbeln,
            kunnr LIKE vbak-kunnr,
            posnr LIKE vbap-posnr,
            matnr LIKE vbap-matnr,
            kwmeng LIKE vbap-kwmeng,
            netwr LIKE vbap-netwr,
         END OF it_so.
    *      Internal Table for Delivery Order data                   *
    DATA: BEGIN OF it_del OCCURS 0,
            delnum  LIKE likp-vbeln,
            lfdat LIKE likp-lfdat,
            delitem LIKE lips-posnr,
            lfimg LIKE lips-lfimg,
          END OF it_del.
    *      Internal Table for Invoice data                          *
    DATA: BEGIN OF  it_inv OCCURS 0,
            invnum LIKE vbrk-vbeln,
            invitem LIKE vbrp-posnr,
            fkimg LIKE vbrp-fkimg,
            amount LIKE vbrp-netwr,
         END OF it_inv.
    *      Internal Table for Final data                            *
    DATA: BEGIN OF it_final OCCURS 0,
            vbeln LIKE vbak-vbeln,
            posnr LIKE vbap-posnr,
            kunnr LIKE vbak-kunnr,
            name LIKE kna1-name1,
            matnr LIKE vbap-matnr,
            kwmeng LIKE vbap-kwmeng,
            netwr LIKE vbap-netwr,
            delnum  LIKE likp-vbeln,
            lfdat LIKE likp-lfdat,
            delitem LIKE lips-posnr,
            lfimg LIKE lips-lfimg,
            invnum LIKE vbrk-vbeln,
            invitem LIKE vbrp-posnr,
            fkimg LIKE vbrp-fkimg,
            amount LIKE vbrp-netwr,
         END OF it_final.
    *-----------    Variables Declaration      -----------*
    DATA: v_name LIKE kna1-kunnr," variable for customer name
          v_delnum LIKE likp-vbeln," variable for delivery number
          v_invnum LIKE vbrk-vbeln." variable for invoce number
    DATA : ls_layout TYPE slis_layout_alv,
           it_fcat TYPE slis_t_fieldcat_alv ,
           wa_fcat TYPE slis_fieldcat_alv,
           lh TYPE slis_t_listheader,
           ls TYPE slis_listheader,
           it_events TYPE slis_t_event  ,
           ls_event TYPE slis_alv_event ,
           i_sort     TYPE slis_t_sortinfo_alv,
           w_var TYPE i.
    DATA : l_date(10).
    DATA : l_date1(20).
    DATA : l_repid LIKE trdir-name.
    l_repid = 'ZSD_DOCU_FLOW1'.
    *-----------    Select-options & parameters Declaration  ---*
    SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
    PARAMETERS: p_bukrs LIKE vbak-bukrs_vf,
                 p_vkorg LIKE vbak-vkorg,
                p_vtweg LIKE vbak-vtweg,
                p_spart LIKE vbak-spart.
    SELECT-OPTIONS: s_kunnr FOR vbak-kunnr,
                    s_audat FOR vbak-audat.
    SELECTION-SCREEN END OF BLOCK b1.
    *----------- AT SELECTION-SCREEN  --------------------------*
    AT SELECTION-SCREEN.
      SELECT SINGLE * FROM  t001 INTO t001
                                WHERE bukrs = p_bukrs.
      IF sy-subrc <> 0.
        MESSAGE e000(8i) WITH 'Enter a Valid Company Code'.
      ENDIF.
      SELECT SINGLE * FROM vbak INTO vbak
                              WHERE vkorg = p_vkorg.
      IF sy-subrc <> 0.
        MESSAGE e000(8i) WITH 'Enter a Valid Sales Organization'.
      ENDIF.
      SELECT SINGLE * FROM vbak INTO vbak
                                WHERE vtweg = p_vtweg.
      IF sy-subrc <> 0.
        MESSAGE e000(8i) WITH 'Enter a Valid distribution channel'.
      ENDIF.
      SELECT SINGLE * FROM vbak INTO vbak
                                WHERE spart = p_spart.
      IF sy-subrc <> 0.
        MESSAGE e000(8i) WITH 'Enter a Valid Division'.
      ENDIF.
      SELECT SINGLE * FROM kna1 INTO kna1
                                WHERE kunnr IN s_kunnr.
      IF sy-subrc <> 0.
        MESSAGE e000(8i) WITH 'Enter a Valid Customer Number'.
      ENDIF.
    *----------- START-OF-SELECTION-----------------------------*
    START-OF-SELECTION.
      ls-typ = 'H'.
      ls-info = 'Sales Document Flow'.
      APPEND ls TO lh.
      ls-typ = 'S'.
      WRITE: sy-datum TO l_date USING EDIT MASK '__/__/____'.
      CONCATENATE 'DATE :' l_date INTO l_date1 SEPARATED BY space.
      ls-info = l_date1.
      APPEND ls TO lh.
      PERFORM field_cat.
      PERFORM t_sort_build USING i_sort.
      PERFORM get-data.
    *----------- END-OF-SELECTION-----------------------------*
    END-OF-SELECTION.
    IF it_final[] IS INITIAL.
        MESSAGE i000(8i) WITH 'No data Found'.
        EXIT.
      ENDIF.
    PERFORM print-data.
    *&      Form  get-data
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM get-data .
    *  Accesing Sales Data
      SELECT a~vbeln a~kunnr b~posnr b~matnr b~kwmeng b~netwr
       INTO CORRESPONDING FIELDS OF TABLE it_so
       FROM vbak AS a INNER JOIN vbap AS b
                             ON a~vbeln = b~vbeln
                              WHERE a~bukrs_vf = p_bukrs
                                 AND a~vkorg = p_vkorg
                                 AND  a~vtweg = p_vtweg
                                    AND a~spart = p_spart
                                     AND a~kunnr IN s_kunnr
                                          AND a~audat IN s_audat.
      LOOP AT it_so.
        SELECT SINGLE name1 FROM kna1 INTO v_name
                                         WHERE kunnr = it_so-kunnr.
        SELECT SINGLE vbeln FROM vbfa INTO v_delnum
                                          WHERE vbelv = it_so-vbeln
                                            AND  vbtyp_n = 'J'.
        IF sy-subrc = 0.
          SELECT SINGLE  vbeln FROM vbfa INTO v_invnum
                                WHERE vbelv = v_delnum
                                  AND  vbtyp_n = 'M'.
        ENDIF.
        MOVE-CORRESPONDING it_so TO it_final.
        it_final-name = v_name.
        it_final-delnum = v_delnum.
        it_final-invnum = v_invnum.
        APPEND it_final.
        CLEAR it_final.
        CLEAR v_delnum.
        CLEAR v_invnum.
      ENDLOOP.
      LOOP AT it_final.
        IF it_final-delnum NE ' '.
    * Reading Del Data.
          SELECT SINGLE  a~vbeln  a~lfdat b~posnr b~lfimg   INTO
                    (it_del-delnum, it_del-lfdat, it_del-delitem,
                     it_del-lfimg ) FROM
                        likp AS a INNER JOIN lips AS b ON a~vbeln = b~vbeln
                                   WHERE a~vbeln = it_final-delnum
                                   AND b~posnr = it_final-posnr.
          MOVE-CORRESPONDING it_del TO it_final.
          MODIFY it_final.
        ENDIF.
        IF it_final-invnum NE ' '.
    * Reading Invoice Data.
          SELECT SINGLE vbeln posnr fkimg netwr INTO
         (it_inv-invnum, it_inv-invitem, it_inv-fkimg, it_inv-amount )
                       FROM vbrp  WHERE vbeln = it_final-invnum
                                  AND   posnr = it_final-posnr.
          MOVE-CORRESPONDING it_inv TO it_final.
          MODIFY it_final.
        ENDIF.
      ENDLOOP.
    ENDFORM.                    " get-data
    *&      Form  print-data
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM print-data .
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
      EXPORTING
    *     I_INTERFACE_CHECK                 = ' '
    *     I_BYPASSING_BUFFER                = ' '
    *     I_BUFFER_ACTIVE                   = ' '
         i_callback_program                = l_repid
    *     I_CALLBACK_PF_STATUS_SET          = ' '
    *     I_CALLBACK_USER_COMMAND           = ' '
         i_callback_top_of_page            = 'TOP'
    *     I_CALLBACK_HTML_TOP_OF_PAGE       = ' '
    *     I_CALLBACK_HTML_END_OF_LIST       = ' '
    *     I_STRUCTURE_NAME                  =
    *     I_BACKGROUND_ID                   = ' '
    *     I_GRID_TITLE                      =
    *     I_GRID_SETTINGS                   =
    *     IS_LAYOUT                         =
         it_fieldcat                       = it_fcat
    *     IT_EXCLUDING                      =
    *     IT_SPECIAL_GROUPS                 =
         IT_SORT                           = i_sort[]
    *     IT_FILTER                         =
    *     IS_SEL_HIDE                       =
    *     I_DEFAULT                         = 'X'
    *     I_SAVE                            = ' '
    *     IS_VARIANT                        =
    *     IT_EVENTS                         =
    *     IT_EVENT_EXIT                     =
    *     IS_PRINT                          =
    *     IS_REPREP_ID                      =
    *     I_SCREEN_START_COLUMN             = 0
    *     I_SCREEN_START_LINE               = 0
    *     I_SCREEN_END_COLUMN               = 0
    *     I_SCREEN_END_LINE                 = 0
    *     IT_ALV_GRAPHICS                   =
    *     IT_HYPERLINK                      =
    *     IT_ADD_FIELDCAT                   =
    *     IT_EXCEPT_QINFO                   =
    *     I_HTML_HEIGHT_TOP                 =
    *     I_HTML_HEIGHT_END                 =
    *   IMPORTING
    *     E_EXIT_CAUSED_BY_CALLER           =
    *     ES_EXIT_CAUSED_BY_USER            =
        TABLES
          t_outtab                          = it_final.
    *   EXCEPTIONS
    *     PROGRAM_ERROR                     = 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.
    ENDFORM.                    " print-data
    *&      Form  field_cat
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM field_cat .
      wa_fcat-col_pos = w_var.
      wa_fcat-tabname = 'IT_FINAL'.
      wa_fcat-fieldname = 'VBELN'.
      wa_fcat-key = 'X'.
      wa_fcat-ref_fieldname = 'VBELN'.
      wa_fcat-ref_tabname = 'VBAK'.
      wa_fcat-seltext_m = 'Sales Order NO'.
      APPEND wa_fcat TO it_fcat.
      CLEAR wa_fcat.
      ADD 1 TO w_var.
      wa_fcat-col_pos = w_var.
      wa_fcat-tabname = 'IT_FINAL'.
      wa_fcat-fieldname = 'POSNR'.
      wa_fcat-ref_fieldname = 'POSNR'.
      wa_fcat-ref_tabname = 'VBAP'.
      wa_fcat-seltext_m = 'SalesItemNO'.
      wa_fcat-fix_column = 'X'.
      APPEND wa_fcat TO it_fcat.
      CLEAR wa_fcat.
      ADD 1 TO w_var.
      wa_fcat-col_pos = w_var.
      wa_fcat-tabname = 'IT_FINAL'.
      wa_fcat-fieldname = 'KUNNR'.
      wa_fcat-seltext_m = 'CUSTNUM'.
      APPEND wa_fcat TO it_fcat.
      CLEAR wa_fcat.
      ADD 1 TO w_var.
      wa_fcat-col_pos = w_var.
      wa_fcat-tabname = 'IT_FINAL'.
      wa_fcat-fieldname = 'NAME'.
      wa_fcat-seltext_m = 'CUSTNAME'.
      APPEND wa_fcat TO it_fcat.
      CLEAR wa_fcat.
      ADD 1 TO w_var.
      wa_fcat-col_pos = w_var.
      wa_fcat-tabname = 'IT_FINAL'.
      wa_fcat-fieldname = 'MATNR'.
      wa_fcat-seltext_m = 'MATNUM'.
      APPEND wa_fcat TO it_fcat.
      CLEAR wa_fcat.
      ADD 1 TO w_var.
      wa_fcat-col_pos = w_var.
      wa_fcat-tabname = 'IT_FINAL'.
      wa_fcat-fieldname = 'KWMENG'.
      wa_fcat-seltext_m = 'Sales Quantity'.
      wa_fcat-do_sum = 'X'.
      APPEND wa_fcat TO it_fcat.
      CLEAR wa_fcat.
      ADD 1 TO w_var.
      wa_fcat-col_pos = w_var.
      wa_fcat-tabname = 'IT_FINAL'.
      wa_fcat-fieldname = 'NETWR'.
      wa_fcat-seltext_m = 'Value'.
      wa_fcat-do_sum = 'X'.
      APPEND wa_fcat TO it_fcat.
      CLEAR wa_fcat.
      ADD 1 TO w_var.
      wa_fcat-col_pos = w_var.
      wa_fcat-tabname = 'IT_FINAL'.
      wa_fcat-fieldname = 'DELNUM'.
      wa_fcat-seltext_m = 'DeloveryNum'.
      APPEND wa_fcat TO it_fcat.
      CLEAR wa_fcat.
      ADD 1 TO w_var.
      wa_fcat-col_pos = w_var.
      wa_fcat-tabname = 'IT_FINAL'.
      wa_fcat-fieldname = 'DELITEM'.
      wa_fcat-seltext_m = 'DelItemNO'.
      APPEND wa_fcat TO it_fcat.
      CLEAR wa_fcat.
      ADD 1 TO w_var.
      wa_fcat-col_pos = w_var.
      wa_fcat-tabname = 'IT_FINAL'.
      wa_fcat-fieldname = 'LFDAT'.
      wa_fcat-seltext_m = 'DelDate'.
      APPEND wa_fcat TO it_fcat.
      CLEAR wa_fcat.
      ADD 1 TO w_var.
      wa_fcat-col_pos = w_var.
      wa_fcat-tabname = 'IT_FINAL'.
      wa_fcat-fieldname = 'LFIMG'.
      wa_fcat-seltext_m = 'DelQuantity'.
      wa_fcat-do_sum = 'X'.
      APPEND wa_fcat TO it_fcat.
      CLEAR wa_fcat.
      ADD 1 TO w_var.
      wa_fcat-col_pos = w_var.
      wa_fcat-tabname = 'IT_FINAL'.
      wa_fcat-fieldname = 'INVNUM'.
      wa_fcat-seltext_m = 'InvoiceNum'.
      APPEND wa_fcat TO it_fcat.
      CLEAR wa_fcat.
      ADD 1 TO w_var.
      wa_fcat-col_pos = w_var.
      wa_fcat-tabname = 'IT_FINAL'.
      wa_fcat-fieldname = 'INVITEM'.
      wa_fcat-seltext_m = 'InvoiceItem'.
      APPEND wa_fcat TO it_fcat.
      CLEAR wa_fcat.
      ADD 1 TO w_var.
      wa_fcat-col_pos = w_var.
      wa_fcat-tabname = 'IT_FINAL'.
      wa_fcat-fieldname = 'FKIMG'.
      wa_fcat-seltext_m = 'INVQuantity'.
      wa_fcat-do_sum = 'X'.
      APPEND wa_fcat TO it_fcat.
      CLEAR wa_fcat.
      ADD 1 TO w_var.
      wa_fcat-col_pos = w_var.
      wa_fcat-tabname = 'IT_FINAL'.
      wa_fcat-fieldname = 'AMOUNT'.
      wa_fcat-seltext_m = 'INVvalue'.
      wa_fcat-do_sum = 'X'.
      APPEND wa_fcat TO it_fcat.
      CLEAR wa_fcat.
      ADD 1 TO w_var.
    ENDFORM.     " field_cat
    *&      Form  top
    *       text
    FORM t_sort_build USING l_sort TYPE slis_t_sortinfo_alv.
      DATA: ls_sort TYPE slis_sortinfo_alv.
      ls_sort-fieldname = 'VBELN'.
      ls_sort-spos      = 1.
      ls_sort-up        = 'X'.
      ls_sort-subtot    = 'X'.
      APPEND ls_sort TO l_sort.
      ls_sort-fieldname = 'KUNNR'.
      ls_sort-spos      = 2.
      ls_sort-up        = 'X'.
      APPEND ls_sort TO l_sort.
    ENDFORM.                    "t_sort_bui
    FORM top.
      CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
        EXPORTING
          it_list_commentary       = lh
    *   I_LOGO                   =
    *   I_END_OF_LIST_GRID       =
    ENDFORM.                    "TOP
    ===========================================================================
    I have started the new program but i have trouble with the final internal table. Since i'm using For all entries I have declared internal tables for each table. My incomplete new program is as follows(not sure if the logic is correct till what I have coded):
    *& Report  Z_SDFLOW                                                    *
    REPORT  Z_SDFLOW  NO STANDARD PAGE HEADING.
    ********* TABLES TO BE USED ***********************
    **** VBAK - SALES DOCUMENT HEADER
    * VBAP - SALES ITEM
    * VBFA - SALES DOCUMENT FLOW
    * KNA1- CUSTOMER MASTER
    * VBRK - BILLING DOCUMENT HEADER
    * VBRP - BLLING DOCUMENT ITEM
    * LIKP - DELIVERY HEADER
    * LIPS - DELIVERY ITEM
    * TOO1 - COMPANY CODES
    * SLIS.
    TYPE-POOLS: SLIS.
    ** STRUCTURE DECLARATIONS ********
    **STRUCTURE FOR ENQUIRY.
    **STRUCTURE FOR QUOTATION.
    **STRUCTURE FOR SALES ORDER HEADER- VBAK.
    TYPES: BEGIN OF XT_VBAK,
    VBELN TYPE VBAK-VBELN,     "SALES DOCUMENT NUMBER
    KUNNR TYPE VBAK-KUNNR,     " SOLD-TO-PARTY
    END OF XT_VBAK.
    **STRUCTURE FOR SALES ORDER  ITEM-VBAP
    TYPES: BEGIN OF XT_VBAP,
    POSNR TYPE VBAP-POSNR,     " SALES ITEM NUMBER
    MATNR TYPE VBAP-MATNR,     " MATERIAL NUMBER
    KWMENG TYPE VBAP-KWMENG,   " CUMMULATIVE ORDER QUANTITY IN SALES UNITS
    NETWR TYPE VBAP-NETWR,     " NET VALUE OF THE ORDER ITEM
    END OF XT_VBAP.
    ** STRUCTURE FOR DELIVERY HEADER -LIKP
    TYPES: BEGIN OF XT_LIKP,
    DELVBELN TYPE LIKP-VBELN,           "DELIVERY DOCUMENT NUMBER
    LFDAT TYPE LIKP-LFDAT,           " DELIVERY DATE
    END OF XT_LIKP.
    **STRUCTURE FOR DELIVERY ITEM - LIPS
    TYPES: BEGIN OF XT_LIPS,
    DELPOSNR TYPE LIPS-POSNR,           " DELIVERY ITEM NUMBER
    LFIMG TYPE LIPS-LFIMG,           " ACTUAL QUANTITY DELIVERED
    END OF XT_LIPS.
    **STRUCTURE FOR BILLING DOCUMENT HEADER -VBRK
    TYPES: BEGIN OF XT_VBRK,
    INVVBELN TYPE VBRK-VBELN,          "BILLING DOCUMENT NUMBER
    END OF XT_VBRK.
    **STRUCTURE FOR BILLING DOCUMENT ITEM - VBRP
    TYPES: BEGIN OF XT_VBRP,
    INVPOSNR TYPE VBRP-POSNR,          "BILLING ITEM NUMBER
    FKIMG TYPE VBRP-FKIMG,          "ACTUAL INVOICED QUANTITY
    INVNETWR TYPE VBRP-NETWR,          "NET VALUE OF THE BILLING ITEM
    END OF XT_VBRP.
    **STRUCTURE FOR FINAL INTERNAL TABLE.
    TYPES: BEGIN OF XT_FINAL,
    VBELN TYPE VBAK-VBELN,
    DELVBELN TYPE LIKP-VBELN,
    INVBELN TYPE VBRK-VBELN,
    KUNNR TYPE VBAK-KUNNR,
    POSNR TYPE VBAP-POSNR,
    DELPOSNT TYPE LIPS-POSNR,
    INVPOSNR TYPE VBRP-POSNR,
    MATNR TYPE VBAP-MATNR,
    KWMENG TYPE VBAP-KWMENG,
    NETWR TYPE VBAP-NETWR,
    INVNETWR TYPE VBRP-NETWR,
    LFDAT TYPE LIKP-LFDAT,
    LFIMG TYPE LIPS-LFIMG,
    FKIMG TYPE VBRP-FKIMG,
    NAME1 TYPE KNA1-NAME1,
    END OF XT_FINAL.
    **DATA DECLARATIONS
    DATA: V_NAME1 TYPE KNA1-NAME1,  "#EC *
          V_DELVBELN TYPE LIKP-VBELN,
          V_INVVBELN TYPE VBRK-VBELN,
          V_BUKRS TYPE T001-BUKRS,    "COMPANY CODE "#EC *
          V_AUDAT TYPE VBAK-AUDAT,
          V_VKORG TYPE VBAK-VKORG,
          V_VKGRP TYPE VBAK-VKGRP,
          V_SPART TYPE VBAK-SPART.
    **INTERNAL TABLE DECLARATIONS
    DATA: IT_VBAK TYPE STANDARD TABLE OF XT_VBAK,
          WA_VBAK TYPE XT_VBAK,
          IT_VBAP TYPE STANDARD TABLE OF XT_VBAP,
          WA_VBAP TYPE XT_VBAP,
          IT_LIKP TYPE STANDARD TABLE OF XT_LIKP,
          WA_LIKP TYPE XT_LIKP,
          IT_LIPS TYPE STANDARD TABLE OF XT_LIPS,
          WA_LIPS TYPE XT_LIPS,
          IT_VBRK TYPE STANDARD TABLE OF XT_VBRK,
          WA_VBRK TYPE XT_VBRK,
          IT_VBRP TYPE STANDARD TABLE OF XT_VBRP,
          WA_VBRP TYPE XT_VBRP,
          IT_FINAL TYPE STANDARD TABLE OF XT_FINAL,
          WA_FINAL TYPE XT_FINAL.
    **ALV DECLARATIONS
    DATA: IT_FLDCAT TYPE SLIS_T_FIELDCAT_ALV,
          WA_FLDCAT TYPE SLIS_FIELDCAT_ALV,
          IT_LSTHDR TYPE SLIS_T_LISTHEADER,
          WA_LSTHDR TYPE SLIS_LISTHEADER,
          IT_EVENTS TYPE SLIS_T_EVENT,
          WA_EVENTS TYPE SLIS_ALV_EVENT,
          IT_SORT TYPE SLIS_T_SORTINFO_ALV,
          IT_LAYOUT TYPE SLIS_LAYOUT_ALV.
    SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
    SELECT-OPTIONS: S_BUKRS FOR V_BUKRS NO INTERVALS NO-EXTENSION,
                    S_VBELN FOR WA_VBAK-VBELN,  "SALES DOCUMENT NUMBER
                    S_KUNNR FOR WA_VBAK-KUNNR,  "SOLD-TO-PARTY
                    S_AUDAT FOR V_AUDAT,      "SALES DOCUMENT DATE
                    S_VKORG FOR V_VKORG,      "SALES ORGANISATION
                    S_VKGRP FOR V_VKGRP,      "SALES GROUP
                    S_SPART FOR V_SPART.      "DIVISION
    SELECTION-SCREEN END OF BLOCK b1.
    *****************SCREEN VALIDATION***************
    AT SELECTION-SCREEN.
    SELECT SINGLE BUKRS FROM T001 INTO V_BUKRS WHERE BUKRS IN S_BUKRS."#EC *
    IF SY-SUBRC <> 0.
    MESSAGE E000(Z_SD2) WITH 'ENTER A VALID COMPANY CODE'.
    ENDIF.
    SELECT SINGLE VBELN FROM VBAK INTO
              CORRESPONDING FIELDS OF WA_VBAK WHERE VBELN IN S_VBELN.
    IF SY-SUBRC <> 0.
    MESSAGE E000(Z_SD2) WITH 'ENTER VALID SALES DOCUMENT NUMBER'.
    ENDIF.
    SELECT SINGLE KUNNR FROM VBAK INTO
              CORRESPONDING FIELDS OF WA_VBAK WHERE KUNNR IN S_KUNNR. "EC *
    IF SY-SUBRC <> 0.
    MESSAGE E000(Z_SD2) WITH 'ENTER A VALID CUSTOMER NUMBER'.
    ENDIF.
    SELECT SINGLE AUDAT FROM VBAK INTO V_AUDAT WHERE AUDAT IN S_AUDAT."#EC *
    IF SY-SUBRC <> 0.
    MESSAGE E000(Z_SD2) WITH 'ENTER A VALID SALES DOCUMENT DATE'.
    ENDIF.
    SELECT SINGLE VKORG FROM VBAK INTO V_VKORG WHERE VKORG IN S_VKORG."#EC *
    IF SY-SUBRC <> 0.
    MESSAGE E000(Z_SD2) WITH 'ENTER A VALID SALES ORGANISATION'.
    ENDIF.
    SELECT SINGLE VKGRP FROM VBAK INTO V_VKGRP WHERE VKGRP IN S_VKGRP."#EC *
    IF SY-SUBRC <> 0.
    MESSAGE E000(Z_SD2) WITH 'ENTER A VALID SALES GROUP'.
    ENDIF.
    SELECT SINGLE SPART FROM VBAK INTO V_SPART WHERE SPART IN S_SPART."#EC *
    IF SY-SUBRC <> 0.
    MESSAGE E000(Z_SD2) WITH 'ENTER A VALID SALES DIVISION'.
    ENDIF.
    PERFORM GET_DATA.
    *&      Form  GET_DATA
    FORM GET_DATA .
    SELECT VBELN KUNNR
            INTO TABLE IT_VBAK
            FROM VBAK
            WHERE VBELN IN S_VBELN.
    *        BUKRS_VF IN S_BUKRS AND
    *        VKORG IN S_VKORG AND
    *        VKGRP IN S_VKGRP AND
    *        SPART IN S_SPART AND
    *        KUNNR IN S_KUNNR AND
    *        AUDAT IN S_AUDAT.
    IF IT_VBAK[] IS NOT INITIAL.
    SELECT POSNR MATNR KWMENG NETWR
            INTO TABLE IT_VBAP
            FROM VBAP
            FOR ALL ENTRIES IN IT_VBAK
            WHERE VBELN = IT_VBAK-VBELN.
    ENDIF.
    IF IT_VBAK[] IS NOT INITIAL.
    SELECT VBELN LFDAT
            INTO TABLE IT_LIKP
            FROM LIKP
            FOR ALL ENTRIES IN IT_VBAK
            WHERE VBELN = IT_VBAK-VBELN.
    ENDIF.
    IF IT_VBAP[] IS NOT INITIAL.
    SELECT POSNR LFIMG
            INTO TABLE IT_LIPS
            FROM LIPS
            FOR ALL ENTRIES IN IT_VBAP
            WHERE POSNR = IT_VBAP-POSNR.
    ENDIF.
    IF IT_LIKP[] IS NOT INITIAL.
    SELECT VBELN
            INTO TABLE IT_VBRK
            FROM VBRK
            FOR ALL ENTRIES IN IT_LIKP
            WHERE VBELN = IT_LIKP-DELVBELN.
    ENDIF.
    IF IT_LIPS[] IS NOT INITIAL.
    SELECT POSNR FKIMG NETWR
            INTO TABLE IT_VBRP
            FROM VBRP
            FOR ALL ENTRIES IN IT_LIPS
            WHERE POSNR = IT_LIPS-DELPOSNR.
    ENDIF.
    ENDFORM.                    " GET_DATA
    Edited by: srk s on Jan 29, 2008 7:33 PM
    Edited by: Alvaro Tejada Galindo on Jan 29, 2008 9:49 AM

    Hi Satish,
    I have started the new program but i have trouble with the final internal table. Since i'm using For all entries, I have declared internal tables for each table. My incomplete new program is as follows(not sure if the logic is correct till what I have coded):
    *& Report  Z_SDFLOW                                                    *
    REPORT  Z_SDFLOW  NO STANDARD PAGE HEADING.
    ********* TABLES TO BE USED ***********************
    **** VBAK - SALES DOCUMENT HEADER
    * VBAP - SALES ITEM
    * VBFA - SALES DOCUMENT FLOW
    * KNA1- CUSTOMER MASTER
    * VBRK - BILLING DOCUMENT HEADER
    * VBRP - BLLING DOCUMENT ITEM
    * LIKP - DELIVERY HEADER
    * LIPS - DELIVERY ITEM
    * TOO1 - COMPANY CODES
    * SLIS.
    TYPE-POOLS: SLIS.
    ** STRUCTURE DECLARATIONS ********
    **STRUCTURE FOR ENQUIRY.
    **STRUCTURE FOR QUOTATION.
    **STRUCTURE FOR SALES ORDER HEADER- VBAK.
    TYPES: BEGIN OF XT_VBAK,
    VBELN TYPE VBAK-VBELN,     "SALES DOCUMENT NUMBER
    KUNNR TYPE VBAK-KUNNR,     " SOLD-TO-PARTY
    END OF XT_VBAK.
    **STRUCTURE FOR SALES ORDER  ITEM-VBAP
    TYPES: BEGIN OF XT_VBAP,
    POSNR TYPE VBAP-POSNR,     " SALES ITEM NUMBER
    MATNR TYPE VBAP-MATNR,     " MATERIAL NUMBER
    KWMENG TYPE VBAP-KWMENG,   " CUMMULATIVE ORDER QUANTITY IN SALES UNITS
    NETWR TYPE VBAP-NETWR,     " NET VALUE OF THE ORDER ITEM
    END OF XT_VBAP.
    ** STRUCTURE FOR DELIVERY HEADER -LIKP
    TYPES: BEGIN OF XT_LIKP,
    DELVBELN TYPE LIKP-VBELN,           "DELIVERY DOCUMENT NUMBER
    LFDAT TYPE LIKP-LFDAT,           " DELIVERY DATE
    END OF XT_LIKP.
    **STRUCTURE FOR DELIVERY ITEM - LIPS
    TYPES: BEGIN OF XT_LIPS,
    DELPOSNR TYPE LIPS-POSNR,           " DELIVERY ITEM NUMBER
    LFIMG TYPE LIPS-LFIMG,           " ACTUAL QUANTITY DELIVERED
    END OF XT_LIPS.
    **STRUCTURE FOR BILLING DOCUMENT HEADER -VBRK
    TYPES: BEGIN OF XT_VBRK,
    INVVBELN TYPE VBRK-VBELN,          "BILLING DOCUMENT NUMBER
    END OF XT_VBRK.
    **STRUCTURE FOR BILLING DOCUMENT ITEM - VBRP
    TYPES: BEGIN OF XT_VBRP,
    INVPOSNR TYPE VBRP-POSNR,          "BILLING ITEM NUMBER
    FKIMG TYPE VBRP-FKIMG,          "ACTUAL INVOICED QUANTITY
    INVNETWR TYPE VBRP-NETWR,          "NET VALUE OF THE BILLING ITEM
    END OF XT_VBRP.
    **STRUCTURE FOR FINAL INTERNAL TABLE.
    TYPES: BEGIN OF XT_FINAL,
    VBELN TYPE VBAK-VBELN,
    DELVBELN TYPE LIKP-VBELN,
    INVBELN TYPE VBRK-VBELN,
    KUNNR TYPE VBAK-KUNNR,
    POSNR TYPE VBAP-POSNR,
    DELPOSNT TYPE LIPS-POSNR,
    INVPOSNR TYPE VBRP-POSNR,
    MATNR TYPE VBAP-MATNR,
    KWMENG TYPE VBAP-KWMENG,
    NETWR TYPE VBAP-NETWR,
    INVNETWR TYPE VBRP-NETWR,
    LFDAT TYPE LIKP-LFDAT,
    LFIMG TYPE LIPS-LFIMG,
    FKIMG TYPE VBRP-FKIMG,
    NAME1 TYPE KNA1-NAME1,
    END OF XT_FINAL.
    **DATA DECLARATIONS
    DATA: V_NAME1 TYPE KNA1-NAME1,  "#EC *
          V_DELVBELN TYPE LIKP-VBELN,
          V_INVVBELN TYPE VBRK-VBELN,
          V_BUKRS TYPE T001-BUKRS,    "COMPANY CODE "#EC *
          V_AUDAT TYPE VBAK-AUDAT,
          V_VKORG TYPE VBAK-VKORG,
          V_VKGRP TYPE VBAK-VKGRP,
          V_SPART TYPE VBAK-SPART.
    **INTERNAL TABLE DECLARATIONS
    DATA: IT_VBAK TYPE STANDARD TABLE OF XT_VBAK,
          WA_VBAK TYPE XT_VBAK,
          IT_VBAP TYPE STANDARD TABLE OF XT_VBAP,
          WA_VBAP TYPE XT_VBAP,
          IT_LIKP TYPE STANDARD TABLE OF XT_LIKP,
          WA_LIKP TYPE XT_LIKP,
          IT_LIPS TYPE STANDARD TABLE OF XT_LIPS,
          WA_LIPS TYPE XT_LIPS,
          IT_VBRK TYPE STANDARD TABLE OF XT_VBRK,
          WA_VBRK TYPE XT_VBRK,
          IT_VBRP TYPE STANDARD TABLE OF XT_VBRP,
          WA_VBRP TYPE XT_VBRP,
          IT_FINAL TYPE STANDARD TABLE OF XT_FINAL,
          WA_FINAL TYPE XT_FINAL.
    **ALV DECLARATIONS
    DATA: IT_FLDCAT TYPE SLIS_T_FIELDCAT_ALV,
          WA_FLDCAT TYPE SLIS_FIELDCAT_ALV,
          IT_LSTHDR TYPE SLIS_T_LISTHEADER,
          WA_LSTHDR TYPE SLIS_LISTHEADER,
          IT_EVENTS TYPE SLIS_T_EVENT,
          WA_EVENTS TYPE SLIS_ALV_EVENT,
          IT_SORT TYPE SLIS_T_SORTINFO_ALV,
          IT_LAYOUT TYPE SLIS_LAYOUT_ALV.
    SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
    SELECT-OPTIONS: S_BUKRS FOR V_BUKRS NO INTERVALS NO-EXTENSION,
                    S_VBELN FOR WA_VBAK-VBELN,  "SALES DOCUMENT NUMBER
                    S_KUNNR FOR WA_VBAK-KUNNR,  "SOLD-TO-PARTY
                    S_AUDAT FOR V_AUDAT,      "SALES DOCUMENT DATE
                    S_VKORG FOR V_VKORG,      "SALES ORGANISATION
                    S_VKGRP FOR V_VKGRP,      "SALES GROUP
                    S_SPART FOR V_SPART.      "DIVISION
    SELECTION-SCREEN END OF BLOCK b1.
    *****************SCREEN VALIDATION***************
    AT SELECTION-SCREEN.
    SELECT SINGLE BUKRS FROM T001 INTO V_BUKRS WHERE BUKRS IN S_BUKRS."#EC *
    IF SY-SUBRC <> 0.
    MESSAGE E000(Z_SD2) WITH 'ENTER A VALID COMPANY CODE'.
    ENDIF.
    SELECT SINGLE VBELN FROM VBAK INTO
              CORRESPONDING FIELDS OF WA_VBAK WHERE VBELN IN S_VBELN.
    IF SY-SUBRC <> 0.
    MESSAGE E000(Z_SD2) WITH 'ENTER VALID SALES DOCUMENT NUMBER'.
    ENDIF.
    SELECT SINGLE KUNNR FROM VBAK INTO
              CORRESPONDING FIELDS OF WA_VBAK WHERE KUNNR IN S_KUNNR. "EC *
    IF SY-SUBRC <> 0.
    MESSAGE E000(Z_SD2) WITH 'ENTER A VALID CUSTOMER NUMBER'.
    ENDIF.
    SELECT SINGLE AUDAT FROM VBAK INTO V_AUDAT WHERE AUDAT IN S_AUDAT."#EC *
    IF SY-SUBRC <> 0.
    MESSAGE E000(Z_SD2) WITH 'ENTER A VALID SALES DOCUMENT DATE'.
    ENDIF.
    SELECT SINGLE VKORG FROM VBAK INTO V_VKORG WHERE VKORG IN S_VKORG."#EC *
    IF SY-SUBRC <> 0.
    MESSAGE E000(Z_SD2) WITH 'ENTER A VALID SALES ORGANISATION'.
    ENDIF.
    SELECT SINGLE VKGRP FROM VBAK INTO V_VKGRP WHERE VKGRP IN S_VKGRP."#EC *
    IF SY-SUBRC <> 0.
    MESSAGE E000(Z_SD2) WITH 'ENTER A VALID SALES GROUP'.
    ENDIF.
    SELECT SINGLE SPART FROM VBAK INTO V_SPART WHERE SPART IN S_SPART."#EC *
    IF SY-SUBRC <> 0.
    MESSAGE E000(Z_SD2) WITH 'ENTER A VALID SALES DIVISION'.
    ENDIF.
    PERFORM GET_DATA.
    *&      Form  GET_DATA
    FORM GET_DATA .
    SELECT VBELN KUNNR
            INTO TABLE IT_VBAK
            FROM VBAK
            WHERE VBELN IN S_VBELN.
    *        BUKRS_VF IN S_BUKRS AND
    *        VKORG IN S_VKORG AND
    *        VKGRP IN S_VKGRP AND
    *        SPART IN S_SPART AND
    *        KUNNR IN S_KUNNR AND
    *        AUDAT IN S_AUDAT.
    IF IT_VBAK[] IS NOT INITIAL.
    SELECT POSNR MATNR KWMENG NETWR
            INTO TABLE IT_VBAP
            FROM VBAP
            FOR ALL ENTRIES IN IT_VBAK
            WHERE VBELN = IT_VBAK-VBELN.
    ENDIF.
    IF IT_VBAK[] IS NOT INITIAL.
    SELECT VBELN LFDAT
            INTO TABLE IT_LIKP
            FROM LIKP
            FOR ALL ENTRIES IN IT_VBAK
            WHERE VBELN = IT_VBAK-VBELN.
    ENDIF.
    IF IT_VBAP[] IS NOT INITIAL.
    SELECT POSNR LFIMG
            INTO TABLE IT_LIPS
            FROM LIPS
            FOR ALL ENTRIES IN IT_VBAP
            WHERE POSNR = IT_VBAP-POSNR.
    ENDIF.
    IF IT_LIKP[] IS NOT INITIAL.
    SELECT VBELN
            INTO TABLE IT_VBRK
            FROM VBRK
            FOR ALL ENTRIES IN IT_LIKP
            WHERE VBELN = IT_LIKP-DELVBELN.
    ENDIF.
    IF IT_LIPS[] IS NOT INITIAL.
    SELECT POSNR FKIMG NETWR
            INTO TABLE IT_VBRP
            FROM VBRP
            FOR ALL ENTRIES IN IT_LIPS
            WHERE POSNR = IT_LIPS-DELPOSNR.
    ENDIF.
    ENDFORM.                    " GET_DATA
    Code Formatted by: Alvaro Tejada Galindo on Jan 29, 2008 9:48 AM

  • Regarding select for all entries

    Hi all,
    I want to use select for all entries....
    because i have to club 3 tablese and get the data.
    I can go for inner joins but i cant use because of performmance issues.
    so can anybody help me regarding this.
    thanks and regards,
    giri.

    do this way............
    types: begin of gt_vbrk,
            vbeln type vbrk-vbeln,
            fkart type vbrk-fkart,
            knumv type vbrk-knumv,
            bukrs type vbrk-bukrs,
            waerk type vbrk-waerk,
            netwr type vbrk-netwr,
            end of gt_vbrk,
            begin of gt_vbrp,
            vbeln type vbrp-vbeln,
            posnr type vbrp-posnr,
            fkimg type vbrp-fkimg,
            meins type vbrp-meins,
            gsber type vbrp-gsber,
            netwr type vbrp-netwr,
            aubel type vbrp-aubel,
            aupos type vbrp-aupos,
            end of gt_vbrp,
            begin of gt_vbak,
            vbeln type vbak-vbeln,
            augru type vbak-augru,
            vkgrp type vbak-vkgrp,
            gsber type vbak-gsber,
            end of gt_vbak,
            begin of gt_vbap,
            vbeln type vbap-vbeln,
            posnr type vbap-posnr,
            matnr type vbap-matnr,
            netwr type vbap-netwr,
            end of gt_vbap,
    data : git_vbrk type standard table of gt_vbrk,
          git_vbrp type standard table of gt_vbrp,
          git_vbak type standard table of gt_vbak,
          git_fcode type table of gt_fcode,
          git_vbap type table of gt_vbap.
    data : wa_vbrk type gt_vbrk,
          wa_vbrp type gt_vbrp,
          wa_vbak type gt_vbak,
          wa_fcode type gt_fcode,
          wa_vbap type gt_vbap.
    select  vbeln
              fkart
              knumv
              bukrs
              waerk
              netwr
        from vbrk into table git_vbrk
        where vbeln in s_vbeln.
      if sy-subrc eq 0.
        sort git_vbrk by vbeln.
      endif.
    if not git_vbrk[] is initial.
    clear git_vbrp[].
      select  vbeln
              posnr
              fkimg
              meins
              gsber
              netwr
              aubel
              aupos
         from vbrp into table git_vbrp
         for all entries in git_vbrk
         where vbeln = git_vbrk-vbeln.
      if sy-subrc eq 0.
        sort git_vbrp by vbeln.
      endif.
    select  vbeln
              augru
              vkgrp
              gsber
        from vbak into table git_vbak
        for all entries in git_vbrp
        where vbeln = git_vbrp-aubel.
      if sy-subrc eq 0.
        sort git_vbak by vbeln.
      endif.
    reward points if helpful............

  • Plz change code from inner join to for all entries

    REPORT      : ZSD00009                                               *
    DESCRIPTION : REPORT FOR TRACTOR ON STOCK AGING                      *
    CODED BY    : DINESH AGARWAL                                         *
    SPECS BY    : AJAY KOTHI                                             *
    START DATE  : 07TH JUNE , 2000                                       *
    CHANGED     : MANOJ SINGH 01/02/2001                                 *
    CHANGED     : YOGINDER KAURA 27TH JULY 2001                          *
    REPORT  ZMUSA_SD00009                           .
    TABLES : vbrk,vbrp,vbfa,ser01,objk,knvv,mara,mbew, t005u,
             t171t,kna1,equi,ihpa, cabn, ausp.
    DATA : BEGIN OF itab OCCURS 0,
             bzirk1 LIKE vbrk-bzirk,
             bzirk LIKE KNA1-regio, "added by dhiraj - 23.11.2007
             LAND1 LIKE KNA1-LAND1,
             kunde LIKE equi-kunde,
             vbeln LIKE vbrk-vbeln,
             fkdat LIKE vbrk-fkdat,
             matkl LIKE mara-matkl,
             sernr LIKE objk-sernr,
             equnr LIKE objk-equnr ,
             matnr LIKE vbrp-matnr,
             spart LIKE vbrp-spart,
             vbelv LIKE vbrp-vbelv,
             posnv LIKE vbrp-posnv,
             days1(1) TYPE n ,
             days2(1) TYPE n ,
             days3(1) TYPE n ,
             days4(1) TYPE n ,
             days5(1) TYPE n ,
             werks like vbrp-werks,
           END OF itab.
    DATA : BEGIN OF itab_grp OCCURS 0,
             werks like vbrp-werks,
             matkl LIKE mara-matkl,
             bzirk1 LIKE vbrk-bzirk,
             bzirk LIKE KNA1-regio, "added by dhiraj - 23.11.2007
             kunde LIKE equi-kunde,
             vbeln LIKE vbrk-vbeln,
             fkdat LIKE vbrk-fkdat,
             sernr LIKE objk-sernr,
             equnr LIKE objk-equnr ,
             matnr LIKE vbrp-matnr,
             spart LIKE vbrp-spart,
             vbelv LIKE vbrp-vbelv,
             posnv LIKE vbrp-posnv,
             days1(1) TYPE n ,
             days2(1) TYPE n ,
             days3(1) TYPE n ,
             days4(1) TYPE n ,
             days5(1) TYPE n ,
           END OF itab_grp.
    DATA : BEGIN OF dealer ,
           days1(3) TYPE p ,
           days2(3) TYPE p ,
           days3(3) TYPE p ,
           days4(3) TYPE p ,
           days5(3) TYPE p ,
           END OF dealer .
    DATA : state LIKE dealer .
    DATA : matgr LIKE dealer .
    DATA : plant LIKE dealer .
    DATA :  BEGIN OF us,
           days1(4) TYPE p ,
           days2(4) TYPE p ,
           days3(4) TYPE p ,
           days4(4) TYPE p ,
           days5(4) TYPE p ,
           END OF us .
    DATA : lin TYPE i , check_box(1) ,
           dealer_total TYPE i,state_total  TYPE i,
           matgr_total  TYPE i,plant_total  TYPE i,
           us_total TYPE i .
    DATA  vobjnr(22) .
    DATA  no_of_days TYPE i .
    DATA  flag_fkdat.
    DATA  atinn1 LIKE cabn-atinn.
    DATA  atinn LIKE cabn-atinn.
    DATA : atflv LIKE ausp-atflv.
    DATA : atflv1(8) TYPE n.
    DATA : invdate TYPE sy-datum.
    DATA  invoicenum(10) TYPE n .
    DATA : BEGIN OF it_regio OCCURS 0,
            regio LIKE kna1-regio,
           END OF it_regio.
    data : it001w like table of t001w with header line.
    TABLES  vbpa.
    SELECTION-SCREEN BEGIN OF BLOCK block1 WITH FRAME TITLE text-001.
    SELECT-OPTIONS : werks FOR vbrp-werks,
                     vkorg FOR vbrk-vkorg,
                     vtweg FOR vbrk-vtweg,
                     spart FOR vbrp-spart.
    SELECTION-SCREEN END OF BLOCK block1 .
    SELECTION-SCREEN SKIP.
    SELECTION-SCREEN BEGIN OF BLOCK block2 WITH FRAME TITLE text-002.
    SELECT-OPTIONS : matkl FOR mara-matkl,
                     bzirk FOR vbrk-regio," changed by dhiraj - 23.11.2007
                     kunrg FOR vbrk-kunrg ,
                     fkdat FOR vbrk-fkdat.
    SELECTION-SCREEN END OF BLOCK block2 .
    SELECTION-SCREEN BEGIN OF BLOCK block3 WITH FRAME TITLE text-003.
    PARAMETERS : days1(2) TYPE p OBLIGATORY DEFAULT '90' ,
                 days2(2) TYPE p OBLIGATORY DEFAULT '90',
                 days3(2) TYPE p OBLIGATORY DEFAULT '180',
                 days4(2) TYPE p OBLIGATORY DEFAULT '270',
                 days5(2) TYPE p OBLIGATORY DEFAULT '365'.
    SELECTION-SCREEN END OF BLOCK block3 .
    SELECTION-SCREEN BEGIN OF BLOCK reptype WITH FRAME TITLE text-201 .
    PARAMETERS  : detail RADIOBUTTON GROUP rep ,
                  summary RADIOBUTTON GROUP rep ,
                  grp_summ RADIOBUTTON GROUP rep .
    SELECTION-SCREEN END OF BLOCK reptype .
    *start of code by Kalpana for Authority check for REGIO */
    AT SELECTION-SCREEN .
      SELECT regio FROM kna1 INTO TABLE it_regio
       WHERE regio IN bzirk
       AND   kunnr IN kunrg.
      CLEAR it_regio.
      LOOP AT it_regio.
        AUTHORITY-CHECK OBJECT 'Z:AO_REGIO'
                         ID 'REGIO' FIELD it_regio.
        IF sy-subrc NE 0.
          MESSAGE e173(zma) WITH  it_regio.
        ENDIF.
      ENDLOOP.
    *End of code by Kalpana for Authority check for REGIO */
      IF days1 NE days2 .
        MESSAGE e000(8i) WITH text-004  text-009  text-005.
      ELSEIF days3 LE days2 .
        MESSAGE e000(8i) WITH  text-006  text-010  text-005 .
      ELSEIF days4 LE days3 .
        MESSAGE e000(8i) WITH  text-007  text-010  text-006 .
      ELSEIF days5 LE days4 .
        MESSAGE e000(8i) WITH  text-008  text-010  text-007 .
      ENDIF .
    START-OF-SELECTION .
    select abzirk akunrg avbeln afkdat  b~matnr
            cmatkl dvbelv dposnv fsernr  f~equnr
      into corresponding fields of table itab
      from    ( ( ( ( ( vbrk as a inner join vbrp as b
                                              on avbeln = bvbeln )
                           inner join mara as c on cmatnr = bmatnr )
                           inner join vbfa as d on dvbeln = bvbeln
                                               and dposnn = bposnr )
                           inner join ser01 as e on elief_nr = dvbelv
                                                 and eposnr   = dposnv )
                           inner join objk as f on fobknr = eobknr   )
             where a~vkorg in  vkorg
             and   a~vtweg in  vtweg
             and   a~bzirk in  bzirk
             and   a~fkdat in  fkdat
             and   c~matkl in  matkl
             and   a~kunrg in  kunrg
             and   b~spart in  spart
             and   c~mtart = 'FERT'
             and   d~vbtyp_n =  'M'
             and   a~vbtyp   =  'M'
             and   a~fksto   =  ' '
             and   b~vgtyp   =  'J' .
      REFRESH itab.
      CLEAR itab .
      CLEAR cabn .
      select * from t001w into table it001w where werks in werks.
      SELECT  SINGLE  atinn INTO atinn1 FROM  cabn
             WHERE  atnam  = 'INVOICEDATE'.
    *************************modified by dhiraj - 23.11.2007*****************
    SELECT  kbzirk aatflv ekunde eequnr esernr ematnr m~matkl
             INTO CORRESPONDING FIELDS OF  itab
            FROM ( ( ( equi AS e  INNER JOIN ausp AS a
                 ON eequnr = aobjek  )
                  INNER JOIN mara AS m ON ematnr  = mmatnr )
                  INNER JOIN knvv AS k ON kkunnr  = ekunde
                                       AND kspart = mspart )
                          WHERE m~mtart = 'FERT'
                          AND   m~spart IN spart
                          AND   m~matkl IN matkl
                          AND  e~kunde <> ' '
                          AND  e~kunde IN kunrg
                          AND  k~bzirk IN  bzirk
                          and  a~atinn = atinn1
                          AND  k~vkorg = 'M001'
                          AND  k~vtweg = '90'.
      SELECT  kbzirk nregio nland1 aatflv ekunde eequnr esernr ematnr m~matkl
              INTO CORRESPONDING FIELDS OF itab
             FROM ( ( ( ( equi AS e  INNER JOIN ausp AS a
                  ON eequnr = aobjek  )
                   INNER JOIN mara AS m ON ematnr  = mmatnr )
                   INNER JOIN knvv AS k ON kkunnr  = ekunde
                                        AND kspart = mspart )
                   INNER JOIN kna1 as n ON nkunnr  = kkunnr )
                           WHERE m~mtart = 'FERT'
                           AND   m~spart IN spart
                           AND   m~matkl IN matkl
                           AND  e~kunde <> ' '
                           AND  e~kunde IN kunrg
                           AND  nregio IN bzirk "k-bzirk changed to nregio by dhiraj-23.11.2007
                          and  a~atinn = atinn1
                           AND  k~vkorg = 'F041'
                           AND  k~vtweg = '01'.
       added by krunal for plant as select-option
        clear ausp.
        select single * from cabn where atnam = 'DELIVERINGPLANT'.
        SELECT  SINGLE      * FROM  ausp
               WHERE  objek  = itab-equnr
               AND    atinn  = CABN-ATINN.
       CLEAR CABN.
        read table it001w with key werks = ausp-atwrt.
        if sy-subrc <> 0.
         continue.
        else.
          itab-werks = ausp-atwrt.
        endif.
    *end addition
        CLEAR : ausp, knvv .
        SELECT  SINGLE      * FROM  ausp
               WHERE  objek  = itab-equnr
               AND    atinn  = atinn1 .
        MOVE ausp-atflv   TO atflv1 .
        MOVE atflv1 TO invdate .
        MOVE invdate TO itab-fkdat.
        CLEAR : cabn, ausp, atinn.
        SELECT  SINGLE  atinn INTO atinn FROM  cabn
               WHERE  atnam  = 'INVOICENO' .
        SELECT SINGLE      * FROM  ausp
             WHERE  objek  = itab-equnr
             AND    atinn  = atinn.
        MOVE ausp-atflv TO invoicenum .
        MOVE invoicenum TO itab-vbeln.
        IF NOT fkdat-low IS INITIAL .
          IF invdate GE fkdat-low AND invdate LE fkdat-high .
            APPEND itab.
          ELSE.
            CONTINUE.
          ENDIF.
        ELSE.
          APPEND itab.
        ENDIF.
      ENDSELECT.
      SORT itab BY sernr matnr .
      DELETE ADJACENT DUPLICATES FROM itab COMPARING sernr matnr .
      SORT itab BY equnr .
      LOOP AT itab .
        CONCATENATE 'IE' itab-equnr INTO vobjnr .
        SELECT SINGLE * FROM ihpa  WHERE objnr = vobjnr
                                 AND   parvw = 'RE'
                                 AND   obtyp = 'IEQ'
                                 AND kzloesch EQ space. " Yogi on 27/06/2001
        IF sy-subrc EQ 0 .
          DELETE itab INDEX sy-tabix .
          CONTINUE .
        ELSE .
          no_of_days = sy-datum - itab-fkdat .
          IF no_of_days LE days1 .
            itab-days1 = 1 .
          ELSEIF no_of_days GT days2 AND no_of_days LE days3.
            itab-days2 = 1 .
          ELSEIF no_of_days GT days3 AND no_of_days LE days4.
            itab-days3 = 1 .
          ELSEIF no_of_days GT days4 AND no_of_days LE days5.
            itab-days4 = 1 .
          ELSEIF no_of_days GT days5 .
            itab-days5 = 1 .
          ENDIF .
          MODIFY itab INDEX sy-tabix .
        ENDIF .
      ENDLOOP .
    END-OF-SELECTION .
      DESCRIBE TABLE itab LINES lin .
      IF lin GT 0 .
        SORT itab BY bzirk kunde  vbeln .
        IF detail = 'X' .
          PERFORM disp_list .
        ELSEIF summary = 'X' .
          PERFORM summary_list .
        ELSEIF grp_summ = 'X' .
          PERFORM grp_summ_list .
        ENDIF.
      ELSE .
      MESSAGE i000(8i) WITH 'No Records exist as per Selection Condititon' .
      ENDIF .
    TOP-OF-PAGE .
      WRITE : / text-011 , ' - ' , sy-datum .
    *&      Form  DISP_LIST
          text
    -->  p1        text
    <--  p2        text
    FORM disp_list.
      LOOP AT itab.
    ********changes made by dhiraj - 23.11.2007********************
        AT NEW bzirk.
          SKIP .
         SELECT SINGLE * FROM t171t  WHERE bzirk = itab-bzirk
                                     AND   spras = 'E'   .
          SELECT SINGLE * FROM t005u WHERE spras = sy-langu
                                              AND BLAND = itab-bzirk AND LAND1 = ITAB-LAND1.
          PERFORM list_heading.
          FORMAT COLOR 4 INTENSIFIED ON.
          WRITE :/ 'Sales Region : ',itab-bzirk,30 t005u-BEZEI
                                        ,81 ''.
          ULINE .
        ENDAT.
        AT NEW kunde.
          SELECT SINGLE * FROM kna1 WHERE kunnr = itab-kunde .
          FORMAT COLOR 3 INTENSIFIED ON.
          WRITE :/ 'Dealer         : ',itab-kunde,30(25) kna1-name1,
                 60 'City  : ' ,kna1-ort01, 81 ''.
          ULINE .
        ENDAT.
        AT NEW fkdat .
          FORMAT COLOR OFF INTENSIFIED OFF .
          WRITE : /5 itab-vbeln,
                   20 itab-fkdat .
          CLEAR flag_fkdat .
        ENDAT .
       at new matkl .
         format color 2 intensified on.
         write :/ 'Material Group    : ',itab-matkl, 81 ''.
         skip .
       endat .
       mcnt = mcnt + 1 .
        dealer-days1 = dealer-days1 + itab-days1  .
        dealer-days2 = dealer-days2 + itab-days2  .
        dealer-days3 = dealer-days3 + itab-days3  .
        dealer-days4 = dealer-days4 + itab-days4  .
        dealer-days5 = dealer-days5 + itab-days5  .
        state-days1  = state-days1 + itab-days1  .
        state-days2  = state-days2 + itab-days2  .
        state-days3  = state-days3 + itab-days3  .
        state-days4  = state-days4 + itab-days4  .
        state-days5  = state-days5 + itab-days5  .
        IF flag_fkdat EQ 'Y'  .
          NEW-LINE .
        ENDIF .
        WRITE :    35 itab-matnr, "krunal
                   55 itab-sernr,
                   72 itab-werks, "krunal
                   83 itab-days1 ,
                   93 itab-days2 ,
                   103 itab-days3 ,
                   113 itab-days4 ,
                   123 itab-days5 .
        PERFORM get_musa_ta.
        flag_fkdat = 'Y' .
       at end of matkl .
         skip .
         format color 2 intensified on.
         write :/ 'Total For    : ',itab-matkl, ' - ' , mcnt .
         clear mcnt .
         uline  .
       endat .
        AT END OF kunde.
          dealer_total = dealer-days1 + dealer-days2 + dealer-days3
                                     + dealer-days4 + dealer-days5 .
          FORMAT COLOR 3 INTENSIFIED ON.
          WRITE :/ 'Total for  : ',itab-kunde,' - ' ,
                   79 dealer-days1 ,
                   89 dealer-days2 ,
                   99 dealer-days3 ,
                   109 dealer-days4 ,
                   119 dealer-days5 ,
                   129 dealer_total  .
          CLEAR : dealer_total , dealer .
          ULINE .
        ENDAT.
        AT END OF bzirk.
          state_total = state-days1 + state-days2 + state-days3
                                    + state-days4 + state-days5 .
          FORMAT COLOR 4 INTENSIFIED ON.
          WRITE :/ 'Total for  : ',itab-bzirk,' - ' ,
                   79 state-days1 ,
                   89 state-days2 ,
                   99 state-days3 ,
                   109 state-days4 ,
                   119 state-days5 ,
                   129 state_total  .
          CLEAR : state_total , state .
          ULINE.
        ENDAT.
      ENDLOOP.
    ENDFORM.                               " DISP_LIST
    *&      Form  LIST_HEADING
          text
    -->  p1        text
    <--  p2        text
    FORM list_heading.
      DATA : text1(7) , text2(7) , text3(7) , text4(7) , text5(7),
             text11(4) , text12(4) , text13(4) , text14(4) , text15(4) .
      text11 = days1 .
      text12 = days2 .
      text13 = days3 .
      text14 = days4 .
      text15 = days5 .
      CONCATENATE : '=<' text11 INTO text1 ,
                    '>'  text12 INTO text2 ,
                    '>'  text13 INTO text3 ,
                    '>'  text14 INTO text4 ,
                    '>'  text15 INTO text5 .
      ULINE.
      FORMAT COLOR 1 INTENSIFIED OFF.
      WRITE :/5  'Invoice No.',
              20 'Invoice Dt',
              34 'Material',
              55 'Serial No .' ,
              72 'Plant',
              79  text1 ,
              89  text2 ,
              99  text3 ,
              109  text4 ,
              119  text5 ,
              129 'Floor' ,
              139  'Total'  .
      ULINE.
    ENDFORM.                               " LIST_HEADING
    *&      Form  SUMMARY_LIST
          text
    -->  p1        text
    <--  p2        text
    FORM summary_list.
      CLEAR : us, us_total .
      LOOP AT itab.
        AT FIRST.
          SKIP .
    ******modified by dhiraj- 23.11.2007*******************************
         SELECT SINGLE * FROM t171t  WHERE bzirk = itab-bzirk
                                     AND   spras = 'E'   .
          SELECT SINGLE * FROM t005u WHERE spras = sy-langu
                                              AND BLAND = itab-bzirk AND LAND1 = ITAB-LAND1.
          PERFORM list_heading_summary.
         format color 4 intensified on.
         write :/ 'Sales District : ',itab-bzirk,30 t171t-bztxt
                                       ,81 ''.
          ULINE .
        ENDAT.
        AT NEW kunde.
          SELECT SINGLE * FROM kna1 WHERE kunnr = itab-kunde .
         format color 3 intensified on.
         write :/ 'Dealer         : ',itab-kunde,30(25) kna1-name1,
                60 'City  : ' ,kna1-ort01, 81 ''.
         uline .
        ENDAT.
        AT NEW fkdat .
         format color off intensified off .
         write : /5 itab-vbeln,
                  20 itab-fkdat .
          CLEAR flag_fkdat .
        ENDAT .
       at new matkl .
         format color 2 intensified on.
         write :/ 'Material Group    : ',itab-matkl, 81 ''.
         skip .
       endat .
       mcnt = mcnt + 1 .
        dealer-days1 = dealer-days1 + itab-days1  .
        dealer-days2 = dealer-days2 + itab-days2  .
        dealer-days3 = dealer-days3 + itab-days3  .
        dealer-days4 = dealer-days4 + itab-days4  .
        dealer-days5 = dealer-days5 + itab-days5  .
        state-days1  = state-days1 + itab-days1  .
        state-days2  = state-days2 + itab-days2  .
        state-days3  = state-days3 + itab-days3  .
        state-days4  = state-days4 + itab-days4  .
        state-days5  = state-days5 + itab-days5  .
        us-days1  = us-days1 + itab-days1  .
        us-days2  = us-days2 + itab-days2  .
        us-days3  = us-days3 + itab-days3  .
        us-days4  = us-days4 + itab-days4  .
        us-days5  = us-days5 + itab-days5  .
        IF flag_fkdat EQ 'Y'  .
          NEW-LINE .
        ENDIF .
       write :    42 itab-sernr ,
                  59 itab-days1 ,
                  69 itab-days2 ,
                  79 itab-days3 ,
                  89 itab-days4 ,
                  99 itab-days5 .
        flag_fkdat = 'Y' .
       at end of matkl .
         skip .
         format color 2 intensified on.
         write :/ 'Total For    : ',itab-matkl, ' - ' , mcnt .
         clear mcnt .
         uline  .
       endat .
        AT END OF kunde.
          dealer_total = dealer-days1 + dealer-days2 + dealer-days3
                                     + dealer-days4 + dealer-days5 .
         format color 3 intensified on.
         write :/ 'Total for  : ',itab-kunde,' - ' ,
                  57 dealer-days1 ,
                  67 dealer-days2 ,
                  77 dealer-days3 ,
                  87 dealer-days4 ,
                  97 dealer-days5 ,
                  107 dealer_total  .
          CLEAR : dealer_total , dealer .
         uline .
        ENDAT.
        AT END OF bzirk.
    **************modified by dhiraj - 23.11.2007****************
         SELECT SINGLE * FROM t171t  WHERE bzirk = itab-bzirk
                                     AND   spras = 'E'   .
          SELECT SINGLE * FROM t005u WHERE spras = sy-langu
                                              AND BLAND = itab-bzirk AND LAND1 = ITAB-LAND1.
          state_total = state-days1 + state-days2 + state-days3
                                    + state-days4 + state-days5 .
          FORMAT COLOR 4 INTENSIFIED ON.
          WRITE :/10 t171t-bztxt,   " 'Total for  : ',itab-bzirk,' - ' ,
                   57 state-days1 ,
                   67 state-days2 ,
                   77 state-days3 ,
                   87 state-days4 ,
                   97 state-days5 ,
                   107 state_total  .
          CLEAR : state_total , state .
          ULINE.
        ENDAT.
        us_total = us-days1 + us-days2 + us-days3 + us-days4 + us-days5 .
      ENDLOOP.
      SKIP 2.
      FORMAT COLOR 5 INTENSIFIED ON.
      WRITE :/10 'Total for US : ' ,
                55 us-days1 ,
                65 us-days2 ,
                75 us-days3 ,
                85 us-days4 ,
                95 us-days5 ,
                105 us_total  .
    ENDFORM.                               " SUMMARY_LIST
    *&      Form  LIST_HEADING_SUMMARY
          text
    -->  p1        text
    <--  p2        text
    FORM list_heading_summary.
      DATA : text1(7) , text2(7) , text3(7) , text4(7) , text5(7),
             text11(4) , text12(4) , text13(4) , text14(4) , text15(4) .
      text11 = days1 .
      text12 = days2 .
      text13 = days3 .
      text14 = days4 .
      text15 = days5 .
      CONCATENATE : '=<' text11 INTO text1 ,
                    '>'  text12 INTO text2 ,
                    '>'  text13 INTO text3 ,
                    '>'  text14 INTO text4 ,
                    '>'  text15 INTO text5 .
      ULINE.
      FORMAT COLOR 1 INTENSIFIED OFF.
      WRITE :/10  'State',
              57  text1 ,
              67  text2 ,
              77  text3 ,
              87  text4 ,
              97  text5 ,
              110  'Total'  .
      ULINE.
    ENDFORM.                               " LIST_HEADING_SUMMARY
    *&      Form  LIST_HEADING_SUMMARY
          text
    -->  p1        text
    <--  p2        text
    FORM list_heading_grp_summary.
      DATA : text1(7) , text2(7) , text3(7) , text4(7) , text5(7),
             text11(4) , text12(4) , text13(4) , text14(4) , text15(4) .
      text11 = days1 .
      text12 = days2 .
      text13 = days3 .
      text14 = days4 .
      text15 = days5 .
      CONCATENATE : '=<' text11 INTO text1 ,
                    '>'  text12 INTO text2 ,
                    '>'  text13 INTO text3 ,
                    '>'  text14 INTO text4 ,
                    '>'  text15 INTO text5 .
      ULINE.
      FORMAT COLOR 1 INTENSIFIED OFF.
      WRITE :/10  'Material Group',
              57  text1 ,
              67  text2 ,
              77  text3 ,
              87  text4 ,
              97  text5 ,
              110  'Total'  .
      ULINE.
    ENDFORM.                               " LIST_HEADING_GRP_SUMMARY
    *&      Form  GET_MUSA_TA
          text
    -->  p1        text
    <--  p2        text
    FORM get_musa_ta.
      CLEAR vbpa .
      SELECT SINGLE    * FROM  vbpa
             WHERE  vbeln  = itab-vbeln
             AND    parvw  =  'RE' .
          and    kunnr  = 'TA001' .
      IF sy-subrc = 0 .
        IF vbpa-kunnr = 'TA001' .
          WRITE : 129 'TA ' .
        ELSE.
          WRITE : 129 'MUSA' .
        ENDIF.
      ENDIF.
    ENDFORM.                               " GET_MUSA_TA
    *&      Form  grp_summ_list
          text
    -->  p1        text
    <--  p2        text
    FORM grp_summ_list .
      CLEAR : us, us_total .
    itab_grp[] = itab[] .
    sort itab_grp BY werks matkl.
      LOOP AT itab_grp.
        AT FIRST.
          SKIP .
          PERFORM list_heading_grp_summary.
          ULINE .
        ENDAT.
        matgr-days1  = matgr-days1 + itab_grp-days1  .
        matgr-days2  = matgr-days2 + itab_grp-days2  .
        matgr-days3  = matgr-days3 + itab_grp-days3  .
        matgr-days4  = matgr-days4 + itab_grp-days4  .
        matgr-days5  = matgr-days5 + itab_grp-days5  .
        plant-days1 = plant-days1 + matgr-days1 .
        plant-days2 = plant-days2 + matgr-days2 .
        plant-days3 = plant-days3 + matgr-days3 .
        plant-days4 = plant-days4 + matgr-days4 .
        plant-days5 = plant-days5 + matgr-days5 .
        us-days1  = us-days1 + itab_grp-days1  .
        us-days2  = us-days2 + itab_grp-days2  .
        us-days3  = us-days3 + itab_grp-days3  .
        us-days4  = us-days4 + itab_grp-days4  .
        us-days5  = us-days5 + itab_grp-days5  .
        IF flag_fkdat EQ 'Y'  .
          NEW-LINE .
        ENDIF .
       write :    42 itab-sernr ,
                  59 itab-days1 ,
                  69 itab-days2 ,
                  79 itab-days3 ,
                  89 itab-days4 ,
                  99 itab-days5 .
        flag_fkdat = 'Y' .
        AT END OF matkl.
          matgr_total = matgr-days1 + matgr-days2 + matgr-days3
                                    + matgr-days4 + matgr-days5 .
          FORMAT COLOR 4 INTENSIFIED ON.
          WRITE :/10 itab_grp-matkl,   " 'Total for  : ',itab_grp-matkl,' - ' ,
                   57 matgr-days1 ,
                   67 matgr-days2 ,
                   77 matgr-days3 ,
                   87 matgr-days4 ,
                   97 matgr-days5 ,
                   107 matgr_total  .
          CLEAR : matgr_total , matgr .
          ULINE.
        ENDAT.
        AT END OF werks.
          plant_total = plant-days1 + plant-days2 + plant-days3
                                    + plant-days4 + plant-days5 .
          FORMAT COLOR 4 INTENSIFIED ON.
          WRITE :/10 itab_grp-werks,   " 'Total for  : ',itab_grp-werks,' - ' ,
                   57 plant-days1 ,
                   67 plant-days2 ,
                   77 plant-days3 ,
                   87 plant-days4 ,
                   97 plant-days5 ,
                   107 plant_total  .
          CLEAR : plant_total , plant .
          ULINE.
        ENDAT.
        us_total = us-days1 + us-days2 + us-days3 + us-days4 + us-days5 .
      ENDLOOP.
      SKIP 2.
      FORMAT COLOR 5 INTENSIFIED ON.
      WRITE :/10 'Total  : ' ,
                55 us-days1 ,
                65 us-days2 ,
                75 us-days3 ,
                85 us-days4 ,
                95 us-days5 ,
                105 us_total  .
    ENDFORM.                    " grp_summ_list

    {SELECT OBJEK CUOBJ
      INTO CORRESPONDING FIELDS OF TABLE TAB_INOB
      FROM INOB
    WHERE OBJEK IN R_MATNR.
    SELECT ATWRT OBJEK ATINN
      INTO CORRESPONDING FIELDS OF TABLE TAB_AUSP
      FROM AUSP
       FOR ALL ENTRIES IN TAB_INOB
    WHERE OBJEK = TAB_INOB-CUOBJ.
    SELECT ATNAM
      INTO TABLE TAB_CABN
      FROM CABN
       FOR ALL ENTRIES IN TAB_INOB
    WHERE ATNAM = 'ZCURSEASON'
        OR ATNAM = 'ZCURYEAR'
       AND ATINN = TAB_AUSP-ATINN.
    after this you can gether the data into one internal table.
    Form one inter nal table it_final.
    loop at TAB_INOB.
    it_final-OBJEK = tab_inob-OBJEK.
    it_final-CUOBJ = tab_inob-CUOBJ.
    READ TABLE TAB_CABN  WITH KEY OBJEK = TAB_INOB-CUOBJ.
    IT_FINAL-ATWRT = TAB_CABN-ATWRT.
    IT_FINAL-ATINN = TAB_CABN-ATINN.
    DO SAME FOR THIRD TABLE
    AFFTER DO ALL
    APPEND IT_FINAL.
    ENDLOOP.}

  • Unable to Get the Data Using For All Entries

    Hi everybody, i am using for all entries in a program. but when i am writing a code using for all entries i am getting an error as 
    Where condition does not refers to the FOR ALL ENTRIES tables...
    SELECT KUNNR
           NAME1
           ORT01
           LAND1
       FROM KNA1 INTO TABLE ITAB1 WHERE KUNNR IN S_KUNNR.
    IF NOT ITAB1 IS INITIAL.
    SELECT VBELN
            ERDAT
            KUNNR
       FROM VBAK INTO TABLE ITAB2 FOR ALL ENTRIES IN ITAB1 WHERE KUNNR = IT_KNA1-KUNNR.
    ENDIF.
    can anybody help out in this
    regards
    hyder ali

    The correct one may be like this:
    SELECT KUNNR
    NAME1
    ORT01
    LAND1
    FROM KNA1 INTO TABLE ITAB1 WHERE KUNNR IN S_KUNNR.
    IF NOT ITAB1 IS INITIAL.
    SELECT VBELN
    ERDAT
    KUNNR
    FROM VBAK INTO TABLE ITAB2 FOR ALL ENTRIES IN ITAB1 WHERE KUNNR = ITAB1-KUNNR. "modified here
    ENDIF.
    Edited by: XuJian84 on Mar 9, 2010 4:25 AM

  • What is the usage of for all entries ?

    What is the Usage of read table  after using for all entries ?
    In the following example what exactly it is doing ?
      Usage of 'for all entries' in Select Statement
    FORM data_retrieval.
      DATA: ld_color(1) TYPE c.
      DATA: BEGIN OF T_VBAP OCCURS 0,
            VBELN  LIKE VBAP-VBELN,
            MATNR  LIKE VBAP-MATNR,
            POSNR  LIKE VBAP-POSNR,
            END OF T_VBAP.
      DATA: BEGIN OF T_VBFA OCCURS 0,
            VBELV  LIKE VBFA-VBELV,
            VBELN  LIKE VBFA-VBELN,
            VBTYP_N  LIKE VBFA-VBTYP_N,
            END OF T_VBFA.
      DATA: BEGIN OF T_VBAK OCCURS 0,
            VBELN  LIKE VBAK-VBELN,
            IHREZ  LIKE VBAK-IHREZ,
            END OF T_VBAK.
      DATA: BEGIN OF T_KNA1 OCCURS 0,
            KUNNR  LIKE KNA1-KUNNR,
            NAME1  LIKE KNA1-NAME1,
            END OF T_KNA1.
       DATA: BEGIN OF T_MAKT OCCURS 0,
            MATNR  LIKE MAKT-MATNR,
            MAKTX  LIKE MAKT-MAKTX,
            END OF T_MAKT.
      SELECT likpvbeln likplifex likpbldat likpwadat likpwadat_ist likpkodat likp~lfart
             likpkunnr likpvstel lipsposnv lipslfimg lipsvrkme lipslgmng lips~meins
             lipswerks lipslgort lipscharg lipsvbelv lipsposnr lipsmatnr
             lipsvbeln LIPSVGBEL LIPSVGPOS vbupkosta vbupwbsta vbupposnr vbup~vbeln
              VBAKIHREZ VBAKVBELN VBAP~VBELN
         INTO CORRESPONDING FIELDS OF TABLE  it_itab
        FROM ( likp
               INNER JOIN lips
               ON  lipsvbeln = likpvbeln
               INNER JOIN vbup
               ON  vbupposnr = lipsposnr
               and VBUPVBELN = LIPSVBELN )
              left outer join VBAK
              on  VBAKVBELN = LIPSVGBEL
              inner join VBAP
              on  VBAPVBELN = VBAKVBELN )
             WHERE likp~vbeln IN so_vbeln
               AND likp~lifex IN so_lifex
               AND likp~lfart IN so_lfart
               AND likp~kunnr IN so_kunnr
               AND likp~vstel IN so_vstel
               AND likp~bldat IN so_bldat
               AND likp~wadat_ist IN so_wadat
               AND vbup~kosta IN so_kosta
               AND vbup~wbsta IN so_wbsta
               AND LIPS~LFIMG NE 0.
      SELECT VBELN IHREZ INTO TABLE T_VBAK
      FROM VBAK
      FOR ALL ENTRIES IN  IT_ITAB
      WHERE VBELN = IT_ITAB-VGBEL.
    APPEND T_VBAK.
    ENDSELECT.
      SELECT VBELN MATNR POSNR INTO TABLE T_VBAP
      FROM VBAP
      FOR ALL ENTRIES IN  IT_ITAB
      WHERE VBELN = IT_ITAB-VGBEL AND
            MATNR = IT_ITAB-MATNR AND
            POSNR = IT_ITAB-VGPOS.
    APPEND T_VBAP.
    ENDSELECT.
      SELECT VBELV VBELN VBTYP_N INTO TABLE T_VBFA
      FROM VBFA
      FOR ALL ENTRIES IN  IT_ITAB
      WHERE VBELV = IT_ITAB-VBELN AND
            VBTYP_N = 'M' .
      SELECT KUNNR NAME1 INTO TABLE T_KNA1
      FROM KNA1
      FOR ALL ENTRIES IN IT_ITAB
      WHERE KUNNR = IT_ITAB-KUNNR.
    APPEND T_KNA1.
    ENDSELECT.
      SELECT MATNR MAKTX INTO TABLE T_MAKT
      FROM MAKT
      FOR ALL ENTRIES IN IT_ITAB
      WHERE MATNR = IT_ITAB-MATNR.
    APPEND T_MAKT.
    ENDSELECT.
    *Populate field with color attributes
      LOOP AT it_itab INTO wa_ITAB.
    Populate color variable with colour properties
    Char 1 = C (This is a color property)
    Char 2 = 3 (Color codes: 1 - 7)
    Char 3 = Intensified on/off ( 1 or 0 )
    Char 4 = Inverse display on/off ( 1 or 0 )
    i.e. wa_ekko-line_color = 'C410'
        REFRESH color.
        colourize 'VBELN' 0. " .
        WA_ITAB-farbe = color[].
        ld_color = ld_color + 1.
    Only 7 colours so need to reset color value
        IF ld_color = 3. "8
          ld_color = 1.
        ENDIF.
        CONCATENATE 'C' ld_color '10' INTO wa_ITAB-line_color.
        WA_ITAB-NAME1 = ''.
        WA_ITAB-MAKTX = ''.
        WA_ITAB-IHREZ = ''.
        WA_ITAB-VBELV = ''.
        READ TABLE T_KNA1 WITH KEY KUNNR = WA_ITAB-KUNNR.
        IF SY-SUBRC = 0.
           WA_ITAB-NAME1 = T_KNA1-NAME1.
        ENDIF.
        READ TABLE T_MAKT WITH KEY MATNR = WA_ITAB-MATNR.
        IF SY-SUBRC = 0.
        WA_ITAB-MAKTX = T_MAKT-MAKTX.
        ENDIF.
        READ TABLE T_VBAK WITH KEY VBELN = WA_ITAB-VGBEL.
        IF SY-SUBRC = 0.
        WA_ITAB-IHREZ = T_VBAK-IHREZ.
        ENDIF.
        READ TABLE T_VBFA WITH KEY VBELV = WA_ITAB-VBELN.
        IF SY-SUBRC = 0.
        WA_ITAB-VBELVA = T_VBFA-VBELN.
        ENDIF.
       READ TABLE T_VBAP WITH KEY VBELN = WA_ITAB-VGBEL
                                  POSNR = WA_ITAB-VGPOS
                                  MATNR = WA_ITAB-MATNR.
       IF SY-SUBRC = 0.
       WA_ITAB-IHREZ = T_VBAK-IHREZ.
       ENDIF.
    wa_ekko-line_color = 'C410'.
        MODIFY it_itab FROM wa_itab.
      ENDLOOP.
    ENDFORM. " data_retrieval

    hi Jyotirmoy,
    The explanation below can give u an idea of wat is going in ur code..
    Use of FOR ALL Entries
    Outer join can be created using this addition to the where clause in a select statement. It speeds up the performance tremendously, but the cons of using this variation are listed below
    Duplicates are automatically removed from the resulting data set. Hence care should be taken that the unique key of the detail line items should be given in the select statement.
    If the table on which the For All Entries IN clause is based is empty, all rows are selected into the destination table. Hence it is advisable to check before-hand that the first table is not empty.
    If the table on which the For All Entries IN clause is based is very large, the performance will go down instead of improving. Hence attempt should be made to keep the table size to a moderate level.
    Not Recommended
                Loop at int_cntry.
                 Select single * from zfligh into int_fligh
                 where cntry = int_cntry-cntry.
                 Append int_fligh.
                Endloop.
    Recommended
                Select * from zfligh appending table int_fligh
                For all entries in int_cntry
                Where cntry = int_cntry-cntry.
    Thankyou,
    Regards.

  • Use of for all entries in abap

    Please tell me how to use "for all entries" in linking two
    tables for retrieve informations by using corresponding fields in both the tables.plz send the codings.

    REPORT  YVCHIERSEQ                              .
    TYPE-POOLS:SLIS.
    DATA:T_VBAK TYPE STANDARD TABLE OF VBAK INITIAL SIZE 0,
         T_VBAP TYPE STANDARD TABLE OF VBAP INITIAL SIZE 0,
         W_VBAK TYPE VBAK,
         W_VBAP TYPE VBAP,
         G_VBELN TYPE VBAK-VBELN,
         W_FIELDCAT TYPE SLIS_FIELDCAT_ALV,
         T_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
         W_KEYINFO TYPE SLIS_KEYINFO_ALV.
    SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME.
    SELECT-OPTIONS:S_VBELN FOR G_VBELN.
    SELECTION-SCREEN END OF BLOCK B1.
    INITIALIZATION.
    CLEAR:W_VBAK,
          W_VBAP.
    REFRESH:T_VBAK,
            T_VBAP.
    START-OF-SELECTION.
    PERFORM SUB_GET_VBAK.
    PERFORM SUB_GET_VBAP.
    PERFORM SUB_DISP_OUTPUT.
    FORM SUB_GET_VBAK.
    SELECT * FROM VBAK INTO TABLE T_VBAK WHERE VBELN IN S_VBELN.
    ENDFORM.
    FORM SUB_GET_VBAP.
    SELECT * FROM VBAP INTO TABLE T_VBAP FOR ALL ENTRIES IN T_VBAK WHERE
    VBELN = T_VBAK-VBELN.
    ENDFORM.
    FORM SUB_DISP_OUTPUT.
    W_FIELDCAT-COL_POS = 1.
    W_FIELDCAT-FIELDNAME = 'VBELN'.
    W_FIELDCAT-SELTEXT_M = 'SALESORDER'.
    W_FIELDCAT-TABNAME = 'VBAK'.
    APPEND W_FIELDCAT TO T_FIELDCAT.
    CLEAR W_FIELDCAT.
    W_FIELDCAT-COL_POS = 2.
    W_FIELDCAT-FIELDNAME = 'ERNAM'.
    W_FIELDCAT-SELTEXT_M = 'NAME'.
    W_FIELDCAT-TABNAME = 'VBAK'.
    APPEND W_FIELDCAT TO T_FIELDCAT.
    CLEAR W_FIELDCAT.
    W_FIELDCAT-COL_POS = 3.
    W_FIELDCAT-FIELDNAME = 'VBTYP'.
    W_FIELDCAT-SELTEXT_M = 'SD CATEGORY'.
    W_FIELDCAT-TABNAME = 'VBAK'.
    APPEND W_FIELDCAT TO T_FIELDCAT.
    CLEAR W_FIELDCAT.
    W_FIELDCAT-COL_POS = 4.
    W_FIELDCAT-FIELDNAME = 'KUNNR'.
    W_FIELDCAT-SELTEXT_M = 'SOLD TO PARTY'.
    W_FIELDCAT-TABNAME = 'VBAK'.
    APPEND W_FIELDCAT TO T_FIELDCAT.
    CLEAR W_FIELDCAT.
    W_FIELDCAT-COL_POS = 5.
    W_FIELDCAT-FIELDNAME = 'NETWR'.
    W_FIELDCAT-SELTEXT_M = 'NET VALUE'.
    W_FIELDCAT-TABNAME = 'VBAK'.
    APPEND W_FIELDCAT TO T_FIELDCAT.
    CLEAR W_FIELDCAT.
    W_FIELDCAT-COL_POS = 1.
    W_FIELDCAT-FIELDNAME = 'POSNR'.
    W_FIELDCAT-SELTEXT_M = 'SALES ITEM'.
    W_FIELDCAT-TABNAME = 'VBAP'.
    APPEND W_FIELDCAT TO T_FIELDCAT.
    CLEAR W_FIELDCAT.
    W_FIELDCAT-COL_POS = 2.
    W_FIELDCAT-FIELDNAME = 'MATNR'.
    W_FIELDCAT-SELTEXT_M = 'MATERIAL NO'.
    W_FIELDCAT-TABNAME = 'VBAP'.
    APPEND W_FIELDCAT TO T_FIELDCAT.
    CLEAR W_FIELDCAT.
    W_FIELDCAT-COL_POS = 3.
    W_FIELDCAT-FIELDNAME = 'MATKL'.
    W_FIELDCAT-SELTEXT_M = 'MAT GROUP'.
    W_FIELDCAT-TABNAME = 'VBAP'.
    APPEND W_FIELDCAT TO T_FIELDCAT.
    CLEAR W_FIELDCAT.
    W_FIELDCAT-COL_POS = 4.
    W_FIELDCAT-FIELDNAME = 'NETWR'.
    W_FIELDCAT-SELTEXT_M = 'NET VALUE'.
    W_FIELDCAT-TABNAME = 'VBAP'.
    APPEND W_FIELDCAT TO T_FIELDCAT.
    CLEAR W_FIELDCAT.
    W_KEYINFO-HEADER01 = 'VBELN'.
    W_KEYINFO-ITEM01   = 'VBELN'.
    CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
      EXPORTING
      I_INTERFACE_CHECK              = ' '
        I_CALLBACK_PROGRAM             = SY-CPROG
      I_CALLBACK_PF_STATUS_SET       = ' '
      I_CALLBACK_USER_COMMAND        = ' '
      IS_LAYOUT                      =
        IT_FIELDCAT                    = T_FIELDCAT
      IT_EXCLUDING                   =
      IT_SPECIAL_GROUPS              =
      IT_SORT                        =
      IT_FILTER                      =
      IS_SEL_HIDE                    =
      I_SCREEN_START_COLUMN          = 0
      I_SCREEN_START_LINE            = 0
      I_SCREEN_END_COLUMN            = 0
      I_SCREEN_END_LINE              = 0
      I_DEFAULT                      = 'X'
      I_SAVE                         = ' '
      IS_VARIANT                     =
      IT_EVENTS                      =
      IT_EVENT_EXIT                  =
        i_tabname_header               =   'VBAK'
        i_tabname_item                 = 'VBAP'
      I_STRUCTURE_NAME_HEADER        =
      I_STRUCTURE_NAME_ITEM          =
        is_keyinfo                     = W_KEYINFO
      IS_PRINT                       =
      IS_REPREP_ID                   =
      I_BYPASSING_BUFFER             =
      I_BUFFER_ACTIVE                =
    IMPORTING
      E_EXIT_CAUSED_BY_CALLER        =
      ES_EXIT_CAUSED_BY_USER         =
      tables
        t_outtab_header                = T_VBAK
        t_outtab_item                  = T_VBAP
    EXCEPTIONS
      PROGRAM_ERROR                  = 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.
      ENDFORM.

  • For all entries table handled by Tables parameter of Subroutine!

    Hi....
    See my code...
    Dont leave as it seems very big code... Actually its very small one...
    In sourse code of function module...
    data:itab1  type standard table of <local structure of top include> with header line,
                     itab2 type standrad table of knvp with header line.
    perform routine_data tables  itab1
                          using    p_var
    Subroutine code, saved in F include of that function group...
    form routine_data  tables itab1 type standard table
                               using    p_var
      select * from <db table>
                  into corresponding fields of table itab
                  where <keyfield> = p_var.
    endform.
    Back to source cod eof Function module..
    if sy-subrc is = 0.
        select parvw kunn2 kunnr from knvp
                            into corresponding fields of table itab2 for all entries in itab1
                             where kunnr = itab1-kunnr
                             and ( parvw = 'WE' or parvw = 'RE' or parvw = 'RG').
    endif.
    This code is working fine......
    ==================Now coming to my problem==========================
    In source code of function module...
    data:itab1  type standard table of <local structure of top include> with header line,
                     itab2 type standrad table of knvp with header line.
    perform routine_data tables  itab1
                                   using    p_var
    Subroutine code, saved in F include of that function group...
    form routine_data  tables itab1 type standard table
                               using    p_var
      select * from <db table>
                  into corresponding fields of table itab
                  where <keyfield> = p_var.
    endform.
    Function module source code...
    perform routine2_data tables itab1
                                     itab2.
    F include coding part for above subroutine....
    form routine2_data  tables itab1 type standard table
                                          itab2 type standard table
        select parvw kunn2 kunnr from knvp
                            into corresponding fields of table itab2 for all entries in itab1
                             where kunnr = itab1-kunnr                                         <-----causing error
                             and ( parvw = 'WE' or parvw = 'RE' or parvw = 'RG').
    endform.
    Giving error message....
    >>> The specified type has no structure and therefore no component called 'KUNNR".....
    So here the problem is there is a incorrect way to declare parameters....
    Plz remind that SUBROUTINES OF FUNCTION MODULES SAVING IN INCLUDE PROGRAMS, because they making some deffenrce with normal external subroutines...
    also...
    Here for all entries is mandatory!
    And Two sub routines are mandatory!
    Thanks for your attention...
    Naveen Inuganti.

    Hi ,
    Use the below  syntax to pass the tables as parameters
    *The below perform is in the source code of the F.M
    PERFORM goods_movement_post TABLES itab1
                                       itab2
                                       itab3
                                   USING ls_goodsmvt_header
                                         g_mov_code.
    suppose u are using the itab1 & itab2 tables data to get the itab3 Data 
    And The below code is in the Frms include
    FORM goods_movement_post
                      TABLES
                         pt_itab1 STRUCTURE vbak
                         pt_itab2 STRUCTURE vbap
                         pt_itab3 STRUCTURE bapiret2
                      USING
                         p_ls_goodsmvt_header STRUCTURE bapi2017_gm_head_01
                         p_g_mov_code.
    ENDFORM
    Thanks & Reagrds
    Mallikharjuna Reddy

  • Selecting single value using for all entries.

    Hi Experts,
    I want to know that is it possible to fetch only the first record for a particular condition while using for all entries.
    For ex:
    Suppose i got 10 different vbeln from vbak table into my internal table it_vbak. For a particular vbeln there can be multiple records in vbap table.
    Now i need to fetch only the first record which is getting from vbap table for different vbeln while using 'for all entries in it_vbak where vbeln = it_vbak-vbeln'. Is it possible?
    Thanks in Advance
    Be$t!N
    Moderator message - Moved to the correct forum
    Edited by: Rob Burbank on Nov 17, 2009 9:38 AM

    Hi Rob Burbank,
    Thanks..
    You are correct.. If that is the scenario in their company... Again it depends on the configuration and business process.. But it's possible that they may need to delete first on any line item after creation of sale order..
    In that case below solution will work..
    IF IT_VBAK[] IS NOT INITIAL.
    SELECT * FROM VBAP
    INTO TABLE IT_VBAP
    for all entries in it_vbak
    where vbeln = it_vbak-vbeln.
    ENDIF.
    SORT IT_VBAP BY VBELN POSNR.
    LOOP AT IT_VBAK INTO WA_VBAK.
    READ TABLE IT_VBAP INTO WA_VBAP WITH KEY VBELN = WA_VBAK-VBELN.
    IF SY-SUBRC = 0.
    APPEND WA_VBAP TO IT_VBAP2. " Another Internal table which stores only first record
    ENDIF.
    CLEAR : WA_VBAP.
    ENDLOOP.
    OR
    IT_VBAP3[] = IT_VBAP[].
    SORT IT_VBAP3 BY VBELN POSNR.
    DELETE ADJACENT DUPLICATES FROM IT_VBAP3 COMPARING VBELN.
    Now Table IT_VBAP2 and IT_VBAP3 will be having only first line items for all sales orders..
    Do some little changes in the code as per your requirement.
    Hope it will solve your problem..
    Thanks & Regards
    ilesh 24x7
    ilesh Nandaniya

  • Develop alv using for all entries

    Develop an Sales Document ALV Report .   
         Select the mentioned field from two tables using FOR ALL ENTRIES , display the output in ALV Format.
    Table Name 1     KNA1     General Data in Customer Master
    Fields     KUNNR     
         LAND1     
         ERDAT     
         NAME1     
         ORT01     
         PSTLZ
    Table Name 2     VBAK     Sales Document: Header Data
    Fields     VBELN     
         AUDAT     
         VBTYP     
         TRVOG     
         AUART     
    ALV O / P Format Fields     KUNNR     from KNA1 Table
         LAND1     from KNA1 Table
         ERDAT     from KNA1 Table
         NAME1     from KNA1 Table
         ORT01     from KNA1 Table
         PSTLZ     from KNA1 Table
         VBELN     from VBAK Table
         AUDAT     from VBAK Table
         VBTYP     from VBAK Table
         TRVOG     from VBAK Table
         AUART     from VBAK Table
    Moderator Message: This is not a training forum. Please refrain from using it as one.
    Edited by: kishan P on Jun 6, 2011 2:23 PM

    FOA is for passing one internal table to select statement..
    Press F1 on it, it will give you the details.
    if you really want to pass more than one tables, you can use range tables.. just similar to what we do in case of select-options..
    as in
    select x y z from dbtab
                         where x in s_x
                                  y in s_y.
    hope you understand..

  • Join 3 tables using FOR ALL ENTRIES

    Hi,
    I want to join 3 tables and show their result in a text file delimited by comma.
    ITs a download program.Can someone tell me how to how to join the three table using for all entires instead of inner join.please give step  by step illustration

    Hi,
    Please check below code which downloads records from 3 tables into excel file.
    if you want other file means you can specify other file type in the fm parameter
    REPORT zstemp_qty2_  LINE-SIZE 255 .
    DATA:it_vbak LIKE vbak OCCURS 0 WITH HEADER LINE.
    DATA:v_file1 LIKE rlgrap-filename.
    DATA:v_file2(80) TYPE c.
    DATA:it_vbap LIKE vbap OCCURS 0 WITH HEADER LINE.
    DATA:it_mara LIKE mara OCCURS 0 WITH HEADER LINE.
    START-OF-SELECTION.
      SELECT * FROM vbak INTO TABLE it_vbak UP TO 100 ROWS.
      IF NOT it_vbak[] IS INITIAL.
        SELECT * FROM vbap INTO TABLE it_vbap
        FOR ALL ENTRIES IN it_vbak
        WHERE vbeln = it_vbak-vbeln.
      ENDIF.
      LOOP AT it_vbap.
        CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
             EXPORTING
                  input  = it_vbap-matnr
             IMPORTING
                  output = it_vbap-matnr.
        MODIFY it_vbap TRANSPORTING matnr.CLEAR it_vbap.
      ENDLOOP.
      IF NOT it_vbap[] IS INITIAL.
        SELECT * FROM mara INTO TABLE it_mara
        FOR ALL ENTRIES IN it_vbap
        WHERE matnr = it_vbap-matnr.
      ENDIF.
      CALL FUNCTION 'F4_FILENAME'
       EXPORTING
         program_name        = sy-cprog
         dynpro_number       = sy-dynnr
      FIELD_NAME          = ' '
       IMPORTING
         file_name           = v_file1          .
      v_file2 = v_file1.
      CALL FUNCTION 'WS_DOWNLOAD'
       EXPORTING
      BIN_FILESIZE                  = ' '
      CODEPAGE                      = ' '
         filename                      = v_file2
         filetype                      = 'WK1'
      MODE                          = ' '
      WK1_N_FORMAT                  = ' '
      WK1_N_SIZE                    = ' '
      WK1_T_FORMAT                  = ' '
      WK1_T_SIZE                    = ' '
         col_select                    = '1'
      COL_SELECTMASK                = ' '
      NO_AUTH_CHECK                 = ' '
    IMPORTING
      FILELENGTH                    =
        TABLES
          data_tab                      = it_mara
      FIELDNAMES                    =
    EXCEPTIONS
      FILE_OPEN_ERROR               = 1
      FILE_WRITE_ERROR              = 2
      INVALID_FILESIZE              = 3
      INVALID_TYPE                  = 4
      NO_BATCH                      = 5
      UNKNOWN_ERROR                 = 6
      INVALID_TABLE_WIDTH           = 7
      GUI_REFUSE_FILETRANSFER       = 8
      CUSTOMER_ERROR                = 9
      OTHERS                        = 10
      IF sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
      LOOP AT it_mara.
        WRITE:/ it_mara-matnr.
      ENDLOOP.
    Regds
    Sivaparvathi
    Please reward points if helpful.....

  • Group by with for all entries

    Hi,
       SELECT  max( VBELN ) VGBEL VGPOS POSNR FKIMG VRKME NTGEW  MATNR ARKTX  WERKS MVGR3
           FROM VBRP
           INTO TABLE T_INVIT
           FOR ALL ENTRIES IN T_INVHD
           WHERE  VBELN = T_INVHD-VBELN
           AND    SPART = T_INVHD-SPART
           AND    werks IN swerks
           AND    mvgr3 IN smvgr3
           group by  VBELN VGBEL VGPOS POSNR FKIMG VRKME NTGEW  MATNR ARKTX  WERKS MVGR3.
    i want to (max) invoice no against a delivery i.e vgbel but in this query i am getting error that with for all entries only count *  is allowed.
    regards
    Fozia

    Hi Do this way..
    IF NOT T_INVHD[] is initial.
    LOOP AT T_INVHD
    SELECT max( VBELN ) VGBEL VGPOS POSNR FKIMG VRKME NTGEW MATNR ARKTX WERKS MVGR3
    FROM VBRP
    INTO T_INVIT
    WHERE VBELN = T_INVHD-VBELN
    AND SPART = T_INVHD-SPART
    AND werks IN swerks
    AND mvgr3 IN smvgr3
    group by VGBEL VGPOS POSNR FKIMG VRKME NTGEW MATNR ARKTX WERKS MVGR3.
    IF SY-SUBRC = 0.
    APPEND T_INVIT.
    CLEAR T_INVIT
    ENDIF.
    endselect.
    endloop.
    endif.
    EVEN NO EFFECT ON PERFORMANCE
    RGDS
    RAJESH

  • Problem with FOR ALL ENTRIES statement

    Hi all
    please find the problem in the select statement.
    SELECT vbbe~vbeln
             vbap~vstel
             marc~dispo
             vbbe~matnr
             vbbe~kunnr
             vbbe~werks
             vbbe~mbdat
             vbbe~omeng
      INTO TABLE l_t_dvbeln
      FROM vbbe
      INNER JOIN vbak
      ON
      vbbe~vbeln = vbak~vbeln
      inner join vbap
      on
      vbbe~vbeln = vbap~vbeln and
      vbbe~matnr = vbap~matnr
      inner join marc
      on
      vbbe~matnr = marc~matnr and
      vbbe~werks = marc~werks
      FOR ALL entries IN g_t_stock
      WHERE vbbe~matnr = g_t_stock-matnr
      AND   vbbe~werks = g_t_stock-werks
      AND   vbak~vkorg = g_t_stock-vkorg
      AND   vbak~vtweg = g_t_stock-vtweg
      AND   vbbe~kunnr = g_t_stock-kunnr
      AND   vbbe~mbdat IN r_mbdat.
    g_t_stock is having only one record i.e.,
    g_t_stock-vstel = 'DF01'.
    g_t_stock-dispo = 'DEI'.
    g_t_stock-matnr = '00100833'.
    g_t_stock-maktx = 'SAC (300X400)'.
    g_t_stock-kunnr = '0000600431'.
    g_t_stock-werks = 'PF71'.
    g_t_stock-labst = '7727'.
    g_t_stock-vkorg = 'SF71'.
    g_t_stock-vtweg = 'IC'.
    and r_mbdat has the date range as
    r_mbdat-sign = I
    r_mbdat-option = BT
    r_mbdat-low = 15.05.2008
    r_mbdat-high =  08.06.2008
    In vbak vbap & marc tables i have only one record as per the above selection criteria.
    in VBBE table i have 7 records which satisfies the above criteria. But the select staement retrieves only 5 records.
    if we remove for all entries and hardcode the values in the select statement then it retrieves all 7 records.
    can anybody help me.
    what is the reason it is showing only 5 records.

    Hi all
    actually it has to retrieve the following records
    VBELN      MATNR    KUNNR WERKS  MBDAT    LABST
    30001417     00100833     600431  PF71   15.05.2008   20.000
    30001417     00100833     600431  PF71   15.05.2008   20.000
    30001417     00100833     600431  PF71   22.05.2008   5.000
    30001417     00100833     600431  PF71   22.05.2008   7.000
    30001417     00100833     600431  PF71   27.05.2008  10.000
    30001417     00100833     600431  PF71   27.05.2008  10.000
    30001417     00100833     600431  PF71   29.05.2008  10.000
    But it is retrieving only 5 records as below
    VBELN      MATNR    KUNNR WERKS  MBDAT    LABST
    30001417     00100833     600431  PF71   15.05.2008   20.000
    30001417     00100833     600431  PF71   22.05.2008   5.000
    30001417     00100833     600431  PF71   22.05.2008   7.000
    30001417     00100833     600431  PF71   27.05.2008  10.000
    30001417     00100833     600431  PF71   29.05.2008  10.000
    Please give the reason

Maybe you are looking for