JOINING KNA1 TO VBRK

Hi everyone,
I am SAP ECC 6.0 and I am trying to create a query with KNA1 and VBRK and VBPA . I join the tables together and proceed to test, when I click execute  immediately I receive a message "no data selected". I am trying to get invoiced sales by State, City and Ship-to . What could I be doing wrong?

I am trying to use Quickviewer to create a report... total sales dollars for ship to addresses in a city,  I select the fields I need then generate the report, input the information into selection screen and click execute and immediately it returns "NO DATA SELECTED". The funny thing is before we upgraded to ECC 6.10, I did not have this problem. I know to join the tables, so that's not it. It seems as if the two tables do not work together what so ever.
The tables are KNA1 and VBRK and VBPA..
Edited by: Tia Garrison on Mar 20, 2009 7:43 PM

Similar Messages

  • Link field between kna1 and vbrk

    Hi All,
    how to link KNA1 and VBRK ?
    i need to get customer number KUNNR using Billing document number VBELN.
    reply asap.
    Regards,
    Booma Ganesan.

    Hi,
    VBRK-KUNWE will have the KUNNR value. Otherwise take the VGBEL and VGPOS value from VBRK and use that in LIKP as VBELN = VGBEL, select the KUNNR number. Use that in KNA1.
    Reward if useful..
    Thanks,
    Muthu.

  • How to join KNA1 table with SOOD, SOST or SOES table?

    Hi,
    I am creating an infoset and I cant join KNA1 with any of the following tables: SOST, SOES or SOOD.
    I am looking to get the following fields from the following table:
    KNA1 - KUNNR: Customer Number
    SOES - STATUS: Status
    SOOD- OBJNAM : Send Method
    SOOD - OBJDES : Document Title
    SOOD - CRONAM : Created by
    SOES- MSGV1 : Recipient
    SOST - STAT - DATE : Send date
    SOST - STAT - TIME : Send time
    I tried adding knvp table to find a common field but cant seem to join them. SOST, SOES and SOOD are easily joined with each other but KNA1 or KNVP cannot be joined, is there any intermediate table that I should use to join these tables to get the customer number against them or is there any other solution. kindly help.
    Regards,
    Moaz

    Hi,
    please try to connect KNA1 with SOOD using
    CALL METHOD cl_binary_relation=>read_links
       EXPORTING
         is_object           = ls_lpor
         it_relation_options = lt_relat
       IMPORTING
         et_links            = lt_links.
    where ls_por-instid = kna1-kunnr, ls_por-typeid = 'KNA1' and ls_por-catid = 'BO'
    and  lt_relat contains a line option 'I' 'EQ' 'NOTE'.
    Regards,
    Klaus

  • I want to join the table vbrk,vbrp,konv and fields are vbeln, knumv.

    i want to join the table vbrk,vbrp,konv and fields are vbeln, knumv is possible .
    if it isn't possible. what is the another method output is doc. no.(vbrp-vbeln) condition doc. no.(vbrk-knumv) , condition(konv-kschl), tax rate(konv-mwsk1), quantitty(vbrp-fkimg) .reply pls... as soon as possible..

    Hi..
    This is the Join :
    SELECT VBAKVBELN VBRKKNUMV
                 VBRP~FKIMG
                 KONV-KSCHL  KONV~MWSK`
           FROM VBRK
           INNER JOIN VBRP
           ON VBRKVBELN = VBRPVBELN
           INNER JOIN KONV
           ON KONVKNUMV = VBRKKNUMV
           INTO TABLE <ITAB>
    WHERE <CONDITION>.
    REWARD IF HELPFUL.

  • I want to join the table vbrk,vbrp,konv but konv is cluster table .

    Hi
       konv is the cluster table . so   I  want to join the table vbrk,vbrp,konv and fields are vbeln, knumv is possible .
    if it isn't possible. what is the another method output is doc. no.(vbrp-vbeln) condition doc. no.(vbrk-knumv) , condition(konv-kschl), tax rate(konv-mwsk1), quantitty(vbrp-fkimg) .reply pls... as soon as possible..

    hi
    good
    1) Open
        Select
               Mard~matnr
               Makt~maktx
          From Makt
          Inner Join Mard
          on    Maktmatnr = Mardmatnr
          Where Makt~Spras = SY-LANGU
    2) Native Oracle
          SELECT Mard.matnr,
                 Makt.maktx
          From Makt, Mard
          Where Makt.mandt = Mard.mandt
            And Makt.matnr = Mard.matnr
            And Makt.mandt = :SY-MANDT
            And Makt.spras = :SY-LANGU
    3) KONV is Cluster - BAD LUCK!
        Select VBRK~VBELN
               VBRP~POSNR
               KONV~KSCHL
               KONV~KWERT    
          From ( VBRK Inner Join VBRP
                 On VBRKVBELN = VBRPVBELN )
               Inner Join KONV
                 On  VBRKKNUMV = KONVKNUMV
                 And VBRPPOSNR = KONVKPOSN
    4) KONV is Cluster - BAD LUCK!
        Select KONV~KNUMV
               KONV~KPOSN
               KONV~KSCHL
               KONV~KWERT    
          From KONV
          Where KONV~KNUMV in (
               Select VBRK~KNUMV
                 From VBRK Inner Join VBRP
                 On VBRKVBELN = VBRPVBELN
                Where VBRKKNUMV = KONVKNUMV
                  And VBRPPOSNR = KONVKPOSN
    5) Open
             Select VBRP~MATNR
                    Sum( VBRP~NETWR )
              From VBRP
              Group By VBRP~MATNR 
    6) Native Oracle        
             Select VBRP.MATNR ,
                    Sum( VBRP.NETWR )
              From VBRP
              Where mandt = :sy-mandt
              Group By VBRP.MATNR         
    7) Native Oracle
             Select VBRP.MATNR ,
                    Count( VBRP.NETWR ),
                    Sum( VBRP.NETWR )
              From VBRP
              Where mandt = :sy-mandt
              Group By VBRP.MATNR    
    8) Open
             Select VBRP~MATNR
                    makt~maktx
                    Sum( VBRP~NETWR )
              From VBRP inner Join MAKT
                On VBRPMATNR = MAKTMATNR
              Where MAKT~SPRAS = SY-LANGU
              Group By VBRPMATNR maktmaktx      
    9) Native Oracle         
             Select VBRP.MANDT,
                    VBRP.MATNR,
                    MAKT.MAKTX,
                    Sum( VBRP.NETWR )
              From VBRP , MAKT
             Where  VBRP.MANDT = MAKT.MANDT
               And  VBRP.MATNR = MAKT.MATNR
               And  MAKT.SPRAS = :SY-LANGU
              Group By VBRP.MANDT, VBRP.MATNR, MAKT.MAKTX   
    10) Open          
         SELECT EKET~EBELN 
                EKET~EINDT 
                EKET~WAMNG 
                EKET~WEMNG 
          From  ( ekko INNER JOIN ekpo
                  ON  ekkomandt = ekpomandt
                  AND ekkoebeln = ekpoebeln
                INNER JOIN eket
                ON  ekpomandt = eketmandt
                AND ekpoebeln = eketebeln
                AND ekpoebelp = eketebelp
                AND EKET~WAMNG > 0
                AND EKETWAMNG <> EKETWEMNG
         Where EKPO~MATNR = 'NB220'
           And EKPO~WERKS  In ('P001', 'P004', 'L004')
           And EKKO~BSTYP = 'F'
           And EKKO~BSART = 'UB'
           And EKPO~ELIKZ <> 'X'
           And EKKO~LOEKZ <> 'X'     
    11) Native Oracle      
         SELECT EKET.EBELN, 
                EKET.EINDT, 
                EKET.WAMNG, 
                EKET.WEMNG 
          FROM  ( ekko INNER JOIN ekpo
                  ON  ekko.mandt = ekpo.mandt
                  AND ekko.ebeln = ekpo.ebeln
                INNER JOIN eket
                ON  ekpo.mandt = eket.mandt
                AND ekpo.ebeln = eket.ebeln
                AND ekpo.ebelp = eket.ebelp
                AND EKET.WAMNG > 0
                AND EKET.WAMNG <> EKET.WEMNG
         Where EKPO.MATNR = 'NB220'
           And EKPO.WERKS  In ('P001', 'P004', 'L004')
           And EKKO.BSTYP = 'F'
           And EKKO.BSART = 'UB'
           And EKPO.ELIKZ <> 'X'
           And EKKO.LOEKZ <> 'X'
    thanks
    mrutyun^

  • Print smartform from background

    Dear Experts,
    I have requirement to create delivery then create bill automatically so i open background job from program (A) and submit the creating program for bill (B) via this job what happened is the delivery creating is ok, the delivery printing is ok and the billing creation is ok but the billing printing program (C) is not ok where the spool is creating with status waiting so can any body help how to print from background job??
    program (A) (Create backgroundjob and submit program via it)
    FORM USEREXIT_SAVE_DOCUMENT.
    DATA: jobcount TYPE tbtcjob-jobcount,
          new_time type TBTCJOB-SDLSTRTTM.
    data : p_vbeln TYPE likp-vbeln.
    DATA : v_JOB_WAS_RELEASED LIKE  BTCH0000-CHAR1.
    break rurik.
    if T180-TRTYP = 'H'
      and ( likp-lfart = 'ZDCF'
    or    likp-lfart = 'ZDCI'
      or    likp-lfart = 'ZDCO'
      or    likp-lfart = 'ZDCP'
      or    likp-lfart = 'ZDCR'
      or    likp-lfart = 'ZDOB'
      or    likp-lfart = 'ZDOT'
      or    likp-lfart = 'ZDQT'
    or    likp-lfart = 'ZDRE' - Ian
      or    likp-lfart = 'ZDSO').
    CALL FUNCTION 'JOB_OPEN'
      EXPORTING
        jobname               = 'SD_AUTOMATION'
      SDLSTRTDT             = NO_DATE
      SDLSTRTTM             = NO_TIME
      JOBCLASS              =
    IMPORTING
       JOBCOUNT               = jobcount
    CHANGING
      RET                   =
    EXCEPTIONS
       CANT_CREATE_JOB        = 1
       INVALID_JOB_DATA       = 2
       JOBNAME_MISSING        = 3
       OTHERS                 = 4.
    SUBMIT zsd_create_billing_document
            with vbeln EQ LIKP-VBELN
            AND RETURN
            VIA JOB 'SD_AUTOMATION'
            NUMBER jobcount.
    new_time = sy-uzeit + 10.  "short delay
    CALL FUNCTION 'JOB_CLOSE'
      EXPORTING
        jobcount                         = jobcount
        jobname                          = 'SD_AUTOMATION'
       STRTIMMED                       = 'X'
        SDLSTRTDT                        = sy-datum
        SDLSTRTTM                        = new_time
    IMPORTING
        JOB_WAS_RELEASED                 = v_JOB_WAS_RELEASED
    EXCEPTIONS
       CANT_START_IMMEDIATE              = 1
       INVALID_STARTDATE                 = 2
       JOBNAME_MISSING                   = 3
       JOB_CLOSE_FAILED                  = 4
       JOB_NOSTEPS                       = 5
       JOB_NOTEX                         = 6
       LOCK_FAILED                       = 7
       INVALID_TARGET                    = 8
       OTHERS                            = 9
    ENDIF.
    ENDFORM.
    Program B (Creat bill)
    REPORT zsd_create_billing_document
           NO STANDARD PAGE HEADING LINE-SIZE 255.
    TABLES: vbup, vbak, vbuk.
    DATA:   bdcdata LIKE bdcdata    OCCURS 0 WITH HEADER LINE.
    DATA done(1).
    PARAMETERS vbeln TYPE likp-vbeln.
    DATA  sal_vbeln TYPE vbeln..
    DATA  messtab LIKE TABLE OF bdcmsgcoll WITH HEADER LINE.
    DATA   billing_doc TYPE vbeln.
    DATA  messagetext(200).
    MESSAGE s002(zsd).
    WRITE: / vbeln.
    DATA :  v_print TYPE i.
    CALL FUNCTION 'ENQUEUE_EVVBLKE'
    EXPORTING
      MODE_LIKP            = 'E'
      MANDT                = SY-MANDT
       vbeln                = vbeln
      X_VBELN              = ' '
      _SCOPE               = '2'
        _wait                = 'X'
    " _wait                 = space
      _COLLECT             = ' '
    EXCEPTIONS
       foreign_lock         = 1
       system_failure       = 2
       OTHERS               = 3
    MESSAGE s005(zsd).
    *In case ZSOT automatic billing once we create delivery and post goods issue manual.
    SELECT SINGLE vbelv
      FROM vbfa
      INTO sal_vbeln
      WHERE vbeln = vbeln
      AND   vbtyp_v = 'C'.
    SELECT SINGLE *
      FROM vbak
      WHERE vbeln = sal_vbeln.
    import v_print to v_print FROM MEMORY id 'PRINTFLAG'.
    IF vbak-auart EQ 'ZSOT'.
    IF v_print eq '1'.
        PERFORM create_document USING vbeln
                              CHANGING sy-subrc.
    ENDIF.
    ELSE.
    *Other than ZSOT Post Goods issue from ZPGI2 and from there automatic billing.
    ENDIF.
    *&      Form  CREATE_DOCUMENT
          text
         -->P_VBELN    text
    FORM create_document USING p_vbeln
                         CHANGING sysubrc.
      PERFORM bdc_dynpro      USING 'SAPMV60A' '0102'.
      PERFORM bdc_field       USING 'BDC_CURSOR'
                                    'KOMFK-VBELN(01)'.
      PERFORM bdc_field       USING 'BDC_OKCODE'
                                    '/00'.
      PERFORM bdc_field       USING 'KOMFK-VBELN(01)'
                                    p_vbeln."'1130010202'.
      PERFORM bdc_dynpro      USING 'SAPMV60A' '0104'.
      PERFORM bdc_field       USING 'BDC_CURSOR'
                                    'VBRK-FKART'.
      PERFORM bdc_field       USING 'BDC_OKCODE'
                                    '=SICH'.
      CALL FUNCTION 'DEQUEUE_EVVBLKE'
       EXPORTING
          MODE_LIKP       = 'E'
          MANDT           = SY-MANDT
            vbeln           = vbeln
          X_VBELN         = ' '
          _SCOPE          = '3'
          _SYNCHRON       = ' '
          _COLLECT        = ' '
      CALL TRANSACTION 'VF01' USING bdcdata
                       MODE   'N'
                       UPDATE 'S'
                       MESSAGES INTO messtab.
      READ TABLE messtab WITH KEY msgtyp = 'E'.
      IF sy-subrc EQ 0.
        sysubrc = 4.
      ELSE.
        sysubrc = 0.
      ENDIF.
      LOOP AT messtab.
        sy-msgty = messtab-msgtyp.
        sy-msgid = messtab-msgid.
        sy-msgno = messtab-msgnr.
        sy-msgv1 = messtab-msgv1.
        sy-msgv2 = messtab-msgv2.
        sy-msgv3 = messtab-msgv3.
        sy-msgv4 = messtab-msgv4.
        CALL FUNCTION '/SAPTRX/GET_MESSAGE_TEXT'
          EXPORTING
            msgid                = sy-msgid
            msgno                = sy-msgno
            msgv1                = sy-msgv1
            msgv2                = sy-msgv2
            msgv3                = sy-msgv3
            msgv4                = sy-msgv4
          IMPORTING
            messagetext          = messagetext
          EXCEPTIONS
            no_message_retrieved = 1
            OTHERS               = 2.
        WRITE: / messagetext.
        CLEAR messagetext.
      ENDLOOP.
    *... refresh tables
      REFRESH: messtab, bdcdata.
    ENDFORM.                    "CREATE_DOCUMENT
    *&      Form  BDC_DYNPRO
          text
         -->PROGRAM    text
         -->DYNPRO     text
    FORM bdc_dynpro USING program dynpro.
      CLEAR bdcdata.
      bdcdata-program  = program.
      bdcdata-dynpro   = dynpro.
      bdcdata-dynbegin = 'X'.
      APPEND bdcdata.
    ENDFORM.                    "BDC_DYNPRO
           Insert field                                                  *
    FORM bdc_field USING fnam fval.
      CLEAR bdcdata.
      bdcdata-fnam = fnam.
      bdcdata-fval = fval.
      APPEND bdcdata.
    ENDFORM.                    "BDC_FIELD
    *&      Form  change_status
          text
    -->  p1        text
    <--  p2        text
    FORM change_status .
    *Change status if delivery and the billing document has been created
      SELECT  *
        FROM vbup
        WHERE vbeln = vbeln
        AND   fksta NE 'C'.
        vbup-fksta = 'C'.
       vbup-gbsta = 'C'.
        MODIFY vbup.
      ENDSELECT.
      UPDATE vbuk
      SET fkstk = 'C'
         gbstk = 'C'
      WHERE vbeln = vbeln.
    ENDFORM.                    " change_status
    Program C (Print Bill)
    REPORT  z_sdps_invoice.
    *&    <Module>:  SD Smart Forms.
    *& Type       : Executable
    *& Request No.:
    *& Author/Co. : Ahmed Al Eryani
    *& Created On : 26.02.2007
    *& Finished   : 24.2007
    *& Description:
    *&                    MODIFICATION LOG
    *& Modified by  :
    *& Request No.  :
    *& Dev. Class   :
    *& Date Modified:
    *& Description  :
    TABLES: vbrk, kna1, vbrp, makt, konv, vbkd.
    SELECTION-SCREEN BEGIN OF BLOCK a.
    PARAMETER: p_vbeln LIKE vbrp-vbeln OBLIGATORY MATCHCODE OBJECT vmcf. "Billing document No
    "SELECT-OPTIONS s_bukrs FOR bkpf-bukrs. "Company Code
    SELECTION-SCREEN END OF BLOCK a.
    *itab is object of our smart form structre
    DATA: itab TYPE zsd_invoice OCCURS 0 WITH HEADER LINE.
    DATA: wa_footer TYPE zsd_invv1.
    DATA: t_items TYPE zsd_inv WITH HEADER LINE,
          w_items TYPE LINE OF zsd_inv,
          it_footer TYPE zsd_inv1,
          w_footer TYPE LINE OF zsd_inv1.
    DATA: amountspell LIKE spell.
    DATA: g_fm_name TYPE rs38l_fnam.
    DATA: mnumvflag(10) TYPE c.
    DATA: coun TYPE i,
          totalforitems TYPE kwert,
          lasttotal(8) TYPE p DECIMALS 2,
          lasttotalc(11) TYPE c,
          firstpart(11) TYPE c,
          secondpart(2) TYPE c.
    DATA: currency TYPE waerk.
    DATA: currtxet(50) TYPE c.
    *Header internal table
    DATA: BEGIN OF t_header OCCURS 0,
      vbeln LIKE vbrk-vbeln,"Document no
      name1 LIKE kna1-name1,"Customer Name
      adrnr LIKE kna1-adrnr,"Customer Address
      bstkd LIKE vbkd-bstkd,"
      kunnr LIKE kna1-kunnr,"Customer Account no
      waerk LIKE vbrk-waerk, "currency key
      aubel LIKE vbrp-aubel,
      kunrg LIKE vbrk-kunrg,
      street LIKE adrc-street,
      fkart LIKE vbrk-fkart,
      lgort LIKE lips-lgort,"Stord bin
      lgobe LIKE t001l-lgobe,
      ktokd LIKE kna1-ktokd,
      PSTYV LIKE vbrp-PSTYV,
      orgbil LIKE vbfa-vbelv,
    END OF t_header.
    *detail internal table
    DATA: BEGIN OF t_items1 OCCURS 0,
      matnr LIKE vbrp-matnr,"Material Number
      posnr LIKE vbrp-posnr,
      vgpos LIKE vbrp-vgpos,
      maktx LIKE makt-maktx,"Material Description
      lgort LIKE vbrp-lgort,"Storage location
      fkimg LIKE vbrp-fkimg,"
      knumv LIKE vbrk-knumv,"
      unitprice LIKE konv-kawrt,
      total LIKE konv-kawrt,
      waers LIKE konv-waers,
      kkurs LIKE konv-kkurs,
      vgbel LIKE vbrp-vgbel,
      lgpbe LIKE lips-lgpbe,
      vgtyp LIKE vbrp-vgtyp,
    END OF t_items1.
    DATA: v_belnr TYPE belnr_d.
    *Unit price internal table
    DATA: BEGIN OF t_untprice OCCURS 0,
      kschl LIKE konv-kschl,"condition type
      kawrt LIKE konv-kawrt,"unit price
    END OF t_untprice.
    *Condition(spcial deduction)
    DATA: BEGIN OF t_spcialcnd OCCURS 0,
      kschl LIKE konv-kschl,"condition type
      kwert LIKE konv-kwert,"Deduction value
    END OF t_spcialcnd.
    DATA: t_tax LIKE TABLE OF t_spcialcnd WITH HEADER LINE,
          v_tax LIKE konv-kwert.
    DATA: BEGIN OF t_curtxt OCCURS 0,
      ltext LIKE tcurt-ltext,
    END OF t_curtxt.
    DATA :return_code TYPE i," VALUE 999,
          us_screen TYPE c. "VALUE 'X'.
    declaration of data
    INCLUDE rlb_invoice_data_declare.
    definition of forms
    INCLUDE rlb_invoice_form01.
    INCLUDE rlb_print_forms.
    START-OF-SELECTION.
      "IF p_vbeln IS NOT INITIAL.
        PERFORM entry USING return_code us_screen.
      "ENDIF.
          FORM ENTRY
    FORM entry USING return_code us_screen.
      DATA: lf_retcode TYPE sy-subrc.
      CLEAR retcode.
      xscreen = us_screen.
    perform processing using us_screen
                        changing lf_retcode.
    if lf_retcode ne 0.
       return_code = 1.
    else.
       return_code = 0.
    endif.
      IF p_vbeln IS INITIAL.
        p_vbeln = nast-objky.
      ENDIF.
      "get header data
      SELECT SINGLE vbrk~vbeln vbrk~waerk vbrp~aubel vbrk~kunrg vbrk~fkart vbrp~lgort vbrp~PSTYV
      INTO (t_header-vbeln, t_header-waerk, t_header-aubel, t_header-kunrg, t_header-fkart,
        t_header-lgort, t_header-PSTYV)
      FROM vbrk JOIN vbrp ON vbrp~vbeln = vbrk~vbeln
                JOIN kna1 ON vbrk~kunrg = kna1~kunnr
      WHERE vbrk~vbeln = p_vbeln.
      IF t_header-PSTYV = 'ZREN'.
        SELECT SINGLE VBELV
          INTO t_header-orgbil
          FROM vbfa
          WHERE vbeln = p_vbeln
          and VBTYP_V = 'M'.
      ENDIF.
      SELECT SINGLE t001l~lgobe
        INTO t_header-lgobe
        FROM t001l
        WHERE t001l~lgort = t_header-lgort.
      SELECT SINGLE kna1~name1 kna1~adrnr kna1~kunnr kna1~ktokd
        INTO (t_header-name1, t_header-adrnr, t_header-kunnr, t_header-ktokd)
      FROM  kna1 "ON vbrk~kunrg = kna1~kunnr
      WHERE kna1~kunnr = t_header-kunrg
        AND spras = 'AR'.
      IF t_header-name1 IS INITIAL.
        SELECT SINGLE kna1~name1 kna1~adrnr kna1~kunnr kna1~ktokd
          INTO (t_header-name1, t_header-adrnr, t_header-kunnr, t_header-ktokd)
        FROM  kna1 "ON vbrk~kunrg = kna1~kunnr
        WHERE kna1~kunnr = t_header-kunrg
          AND spras = 'EN'.
      ENDIF.
      IF t_header-ktokd = 'ZONE'.
        SELECT SINGLE belnr
          INTO v_belnr
        FROM bkpf
        WHERE xblnr = p_vbeln.
        SELECT SINGLE name1
        INTO t_header-name1
        FROM bsec
        WHERE belnr = v_belnr.
      ENDIF.
      SELECT SINGLE adrc~street
        INTO t_header-street
        FROM adrc
        WHERE addrnumber = t_header-adrnr
        AND langu = 'AR'.
      IF t_header-street IS INITIAL.
        SELECT SINGLE adrc~street
          INTO t_header-street
          FROM adrc
          WHERE addrnumber = t_header-adrnr
          AND langu = 'EN'.
      ENDIF.
      "get details data
      SELECT vbrp~matnr vbrp~posnr vbrp~vgpos vbrp~fkimg
             vbrk~knumv vbrp~matnr vbrp~vgbel vbrp~vgtyp"makt~maktx
      INTO CORRESPONDING FIELDS OF TABLE t_items1
      FROM vbrp "JOIN makt ON vbrp~matnr = makt~matnr
                JOIN vbrk ON vbrp~vbeln = vbrk~vbeln
                "join konv on vbrk~knumv = konv~knumv
      WHERE vbrp~vbeln = p_vbeln
        AND vbrp~fkimg NE '0.000'.
      "AND makt~spras = 'E'.
      break arasmy.
      LOOP AT t_items1.
        SELECT SINGLE lips~lgpbe
          INTO t_items1-lgpbe
          FROM lips
          WHERE vbeln = t_items1-vgbel
          AND posnr = t_items1-vgpos.
        SELECT SINGLE makt~maktx
        INTO  t_items1-maktx
        FROM  makt
        WHERE matnr = t_items1-matnr
        AND   makt~spras = 'EN'.
        SELECT SINGLE konv~kbetr konv~kwert konv~waers konv~kkurs
          INTO (t_items1-unitprice, t_items1-total, t_items1-waers,
          t_items1-kkurs)
        FROM konv
        WHERE konv~kschl = 'NETW'"'ZSPC'                               "'ZSP1'
        AND   konv~knumv = t_items1-knumv
        AND   kposn      = t_items1-posnr.
        t_items1-unitprice = ( t_items1-total / t_items1-fkimg ) * t_items1-kkurs.
        MODIFY t_items1.
        mnumvflag = t_items1-knumv."Number of the document condition
      ENDLOOP.
    *get the deduction value for the document condiotion no
      SELECT konvkschl konvkwert
      INTO CORRESPONDING FIELDS OF TABLE t_spcialcnd
      FROM konv
      WHERE konv~kschl IN ('ZSSD', 'ZSCD', 'ZSDD', 'ZSPD', 'ZSWD', 'ZMW1', 'ZSGS', 'ZMW2')
      AND  konv~knumv = mnumvflag.
    Get tax 10%
        SELECT konvkschl konvkwert
        APPENDING CORRESPONDING FIELDS OF TABLE t_tax
        FROM konv
        WHERE konv~kschl = 'MWST'
        AND  konv~knumv = mnumvflag.
      itab-invn  = t_header-vbeln.
      itab-orgbil  = t_header-orgbil.
      itab-cusna = t_header-name1.
      itab-addr  = t_header-street.
      itab-custn = t_header-kunrg.
      itab-sord  = t_header-aubel.
      itab-fkart = t_header-fkart.
      itab-lgort = t_header-lgort.
      itab-lgobe = t_header-lgobe.
      itab-PSTYV = t_header-PSTYV.
      currency   = t_header-waerk.
      LOOP AT t_items1.
        w_items-matn   = t_items1-matnr.
        w_items-matdes = t_items1-maktx.
        w_items-stloc  = t_items1-lgpbe."lgort.
        w_items-qunt   = t_items1-fkimg.
        w_items-total  = t_items1-total.
        totalforitems  = totalforitems + w_items-total.
        COLLECT w_items INTO t_items.
      endloop.
      LOOP AT t_items1.
        LOOP AT t_items WHERE matn = t_items1-matnr.
          t_items-prc = t_items1-unitprice.
          MODIFY t_items.
        ENDLOOP.
      ENDLOOP.
      LOOP AT t_items.
          coun = coun + 1.
          t_items-itmn = coun.
          MODIFY t_items.
      ENDLOOP.
        w_footer-totalforitems = totalforitems.
        LOOP  AT t_spcialcnd.
          CASE t_spcialcnd-kschl.
            WHEN 'ZSSD'.
              w_footer-spdisc    = w_footer-spdisc      + t_spcialcnd-kwert.
            WHEN 'ZSCD'.
              w_footer-comdisc   = w_footer-comdisc     + t_spcialcnd-kwert.
            WHEN 'ZSDD'.
              w_footer-DIFMAT    = w_footer-DIFMAT      + t_spcialcnd-kwert.
            when 'ZSPD'.
              w_footer-trgtdisc  = w_footer-trgtdisc    + t_spcialcnd-kwert.
            WHEN 'ZMW2'.
              w_footer-comindisc = w_footer-comindisc   + t_spcialcnd-kwert.
            WHEN 'ZSWD'.
              w_footer-cshdisc   = w_footer-cshdisc     + t_spcialcnd-kwert.
            WHEN 'ZSGS'.
              w_footer-stampsdisc = w_footer-stampsdisc + t_spcialcnd-kwert.
          ENDCASE.
          w_footer-ttldisc = w_footer-spdisc + w_footer-comdisc + w_footer-trgtdisc
                           + w_footer-cshdisc + w_footer-DIFMAT + w_footer-stampsdisc.
        ENDLOOP.
        w_footer-aftrdiscnts = w_footer-totalforitems + w_footer-ttldisc.
        LOOP AT t_tax WHERE kwert NE '0.00'.
          w_footer-saltax = w_footer-saltax + t_tax-kwert.
        ENDLOOP.
        w_footer-totalaftrtax = w_footer-aftrdiscnts + w_footer-saltax.
        w_footer-total = w_footer-totalaftrtax + w_footer-comindisc.
        lasttotal = w_footer-total.
      APPEND w_footer TO it_footer.
      SELECT tcurt~ltext
      INTO CORRESPONDING FIELDS OF TABLE t_curtxt
      FROM   tcurt
      WHERE tcurt~spras = 'AR'
      AND   tcurt~waers = currency.
      LOOP AT  t_curtxt.
        currtxet = t_curtxt-ltext.
      ENDLOOP.
      itab[] = t_header[].
      lasttotalc = lasttotal.
      SPLIT lasttotalc AT '.' INTO firstpart secondpart.
      lasttotal = firstpart / 100.
      CALL FUNCTION 'SPELL_AMOUNT'
        EXPORTING
          amount    = lasttotal
          currency  = ''"CURRENCY
          filler    = space
          language  = 'A'
        IMPORTING
          in_words  = amountspell
        EXCEPTIONS
          not_found = 1
          too_large = 2
          OTHERS    = 3.
      IF sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    --split amount--
    BREAK radha.
      CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
      EXPORTING
        formname                 = 'Z_INVOICE_PARTS2'
    VARIANT                  = ' '
    DIRECT_CALL              = ' '
       IMPORTING
         fm_name                  = g_fm_name
       EXCEPTIONS
         no_form                  = 1
         no_function_module       = 2
         OTHERS                   = 3
      IF sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
      DATA : control_parameters    TYPE  ssfctrlop,
             print_options         TYPE  ssfcompop.
      DATA : document_output_info  TYPE  ssfcrespd,
             job_output_info       TYPE  ssfcrescl,
             job_output_options    TYPE  ssfcresop.
      DATA : count TYPE i.
      control_parameters-langu = 'AR'.
      control_parameters-no_dialog = 'X'."Don't show Dialog
    print_options-tdarmod = '1'.
    print_options-tdcopies = '001'.
    print_options-tddest = 'LP02'.
    print_options-tdprinter = 'ZARSWIN'.
       print_options-tdimmed = 'X'.
    print_options-tddelete = 'X'.
    print_options-tdlifetime = '8'.
       print_options-tddest = 'LP03'."nast-ldest.
      "print_options-tddest = nast-ldest.
      "print_options-tdcopies = pv_copies.
    print_options-tddelete = 'X'.
      print_options-tdfinal = 'X'.
    print_options-tdnewid = 'X'.
    WHILE count ne 1.
       IF job_output_info-outputdone ne 'X'.
         CALL FUNCTION g_fm_name
          EXPORTING
        ARCHIVE_INDEX             =
        ARCHIVE_INDEX_TAB         =
        ARCHIVE_PARAMETERS        =
           control_parameters       = control_parameters
        MAIL_APPL_OBJ             =
        MAIL_RECIPIENT            =
        MAIL_SENDER               =
            output_options          = print_options
            user_settings           = space
            header                  = itab
            amountspell             = amountspell
            currtxt                 = currtxet
            secondpart              = secondpart
         wa_footer                = w_footer
       IMPORTING
         DOCUMENT_OUTPUT_INFO       = document_output_info
         JOB_OUTPUT_INFO            = job_output_info
         JOB_OUTPUT_OPTIONS         = job_output_options
          TABLES
            it_items                = t_items
            it_footer               = it_footer
       EXCEPTIONS
         formatting_error           = 1
         internal_error             = 2
         send_error                 = 3
         user_canceled              = 4
         OTHERS                     = 5
        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.                    "ENTRY

    Hi,
    lw_control_param-device = 'PRINTER'.
    lw_control_param-getotf = c_x.
    lw_control_param-no_dialog = c_x.
    lw_composer_param-tdnoprev = c_x.
    <b>*lw_composer_param-tddest = 'LONSC0P310'.</b>
    <b>lw_composer_param-tddest = 'XXXX'.</b> <b>"Four digits</b>
    <i>lw_composer_param-tdnewid = c_x.
    lw_composer_param-tdfinal = c_x.</i> --> Not required
    In place of 'XXXX', replace it by a 4 digit value. It would be available in transaction SPAD->Output Devices->Double click your output device. On the right hand side there would be a field Short Name. Replace 'XXXX' with that value.
    Best regards,
    Prashant

  • Report for Monthly Quantiy sold by Customer (SOLD TO PARTY)

    Hi Gurus
    I had asked this question many times but no answer I got from the forum , I want to create a report which should show quantity , uom sold to customer(sold to party) by each month and plant (werks).
    I want to display monthly sales in the report when plant and delivery date is selected ( month = jan,feb,mar,apr,may......) and each quantity must display under jan,feb,mar,apr respectively.
    Can anyone help me please , I am still struggling with this stuff.
    Thanks in advanced
    Regards
    PE

    Hi Aatish
    I have developed the report for monthlywise quantity sold to party
    but it is giving some trouble in the calculation where there is zero value it is taking the above value and displaying in the report but when I search individually with sold to party it is comming correctly
    can you check my source and comment on it please
    REPORT soldtoparty
    line-size  170
    line-count 65 no standard page heading.
    TABLES : kna1,VBRP,vbrk.
    DATA:BEGIN OF itab OCCURS 0,
    kunag like VBRK-KUNAG,
    name1  like kna1-name1,
    werks LIKE vbrp-werks,
    vbeln LIKE vbrp-vbeln,
    fkdat LIKE VBRK-FKDAT,
    vrkme LIKE vbrp-vrkme,
    fkimg LIKE vbrp-fkimg,
    total like vbrp-fkimg,
    END OF itab.
    DATA: BEGIN OF itab1 OCCURS 0,
    fkdat(2) TYPE c,
    kunag like VBRK-KUNAG,
    name1  like kna1-name1,
    werks LIKE vbrp-werks,
    vbeln LIKE vbrp-vbeln,
    vrkme LIKE vbrp-vrkme,
    fkimg LIKE vbrp-fkimg,
    total like vbrp-fkimg,
    END OF itab1.
    DATA : BEGIN OF itab2 OCCURS 0 ,
    fkdat like VBRK-FKDAT,
    fkimg like vbrp-fkimg,
    kunag like VBRK-KUNAG,
    name1  like kna1-name1,
    vrkme  like vbrp-vrkme,
    jan LIKE vbrp-fkimg,
    feb LIKE vbrp-fkimg,
    mar LIKE vbrp-fkimg,
    apr LIKE vbrp-fkimg,
    may LIKE vbrp-fkimg,
    jun LIKE vbrp-fkimg,
    jul LIKE vbrp-fkimg,
    aug LIKE vbrp-fkimg,
    sep LIKE vbrp-fkimg,
    oct LIKE vbrp-fkimg,
    nov LIKE vbrp-fkimg,
    dec LIKE vbrp-fkimg,
    TOTAL like vbrp-fkimg,
    END OF itab2.
    TOP-OF-PAGE.
      WRITE:/50(40) ' CUSTOMER SOLD BY QUANTITY' CENTERED   ,2 'Page', SY-PAGNO.
      WRITE:/50(40) '----
    ' CENTERED .
      FORMAT INTENSIFIED on.
      WRITE:/2 SY-DATUM COLOR 3, SY-UZEIT .
       "WRITE:/1 S903-SPMON ."p_yearf.
      ULINE.
      "CENTERED.
      skip.
      "FORMAT COLOR COL_HEADING.
      ULINE.
      FORMAT COLOR 3.
      WRITE:/1 SY-VLINE,
        0 'PARTY' ,10 SY-VLINE,
        11 'NAME' ,40 SY-VLINE,
        41 'JAN' centered  , 50 SY-VLINE,
        51 'FEB',60 SY-VLINE,
        61 'MAR',70 SY-VLINE,
        71 'APR',80 SY-VLINE,
        81 'MAY',90 SY-VLINE,
        91 'JUN',100 SY-VLINE,
        101 'JUL',110 SY-VLINE,
        111 'AUG',120 SY-VLINE,
        121 'SEP',130 SY-VLINE,
        131 'OCT',140 SY-VLINE,
        141 'NOV',150 SY-VLINE,
        151 'DEC',160 SY-VLINE,
        161'TOTAL',170 SY-VLINE.
      FORMAT COLOR 3 on.
      ULINE.
    END-OF-PAGE.
    data wa_itab1 like itab1.
    DATA : mm(2) TYPE c,
    value type p decimals 2,
    total type p decimals 2,
    sum1 type p decimals 1,sum2 type p decimals 1,sum3 type p decimals 1,
    sum4 type p decimals 1,sum5 type p decimals 1,sum6 type p decimals 1,
    sum7 type p decimals 1,sum8 type p decimals 1,sum9 type p decimals 1,
    sum10 type p decimals 1,sum11 type p decimals 1,sum12 type p decimals 1,
    sum13 type p decimals 1,
    t_s LIKE vbrp-fkimg.
    "g_total like vbrp-fkimg.
    SELECTION-SCREEN BEGIN OF BLOCK blk WITH FRAME.
    SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME TITLE text-001.
    PARAMETERS: p_yearf TYPE SPMON,
    p_yeart type SPMON.
    SELECT-options:
                    p_kunag for VBRK-KUNAG , "no-extension no intervals,
                    s_werks for vbrp-werks no-extension no intervals obligatory,
                    s_vrkme for vbrp-vrkme no-extension no intervals obligatory.
    "p_matnr for vbrp-matnr no-extension no intervals,
    "p_augru for vbrp-augru_auft no-extension no intervals,
    "p_vbeln for vbrk-vbeln no-extension no intervals.
    RANGES : p_fkdat FOR sy-datum.
    RANGES: r_date FOR sy-datum.
    SELECTION-SCREEN END OF BLOCK blk1.
    SELECTION-SCREEN BEGIN OF BLOCK blk2 WITH FRAME TITLE text-002.
    PARAMETERS: NRW RADIOBUTTON GROUP g1,
    MWD RADIOBUTTON GROUP g1,
    RWS RADIOBUTTON GROUP g1,
    EDU RADIOBUTTON GROUP g1,
    Standard RADIOBUTTON GROUP g1 default 'X'.
    SELECTION-SCREEN END OF BLOCK blk2.
    SELECTION-SCREEN END OF BLOCK blk.
    start-of-selection.
    break developer.
    case 'X'.
    when mwd.
    CONCATENATE p_yearf(4) p_yearf+4(2) '01' INTO p_fkdat-low.
    concatenate p_yeart(4) p_yeart+4(2) '01' into p_fkdat-high.
    p_fkdat-sign = 'I'.
    p_fkdat-option = 'BT'.
    CALL FUNCTION 'RE_LAST_DAY_OF_MONTH'
    EXPORTING
    i_datum = p_fkdat-high
    IMPORTING
    e_tt = p_fkdat-high+6(2).
    APPEND p_fkdat.
    *start-of-selection.
    SELECT *
    from VBRK
    INNER JOIN vbrp ON vbrk~vbeln = vbrp~vbeln
    INNER JOIN kna1 on vbrk~kunag = kna1~kunnr
    INTO corresponding fields of TABLE itab
    where
    vbrp~werks in s_werks and
    VBRK~KUNAG in p_kunag and
    VBRP~vrkme in s_vrkme and " 'M3' and
    VBRK~fkdat in p_fkdat order by KUNAG.
    *left outer join kna1
    **from S903 INNER JOIN kna1
    *ON VBRKKUNAG = kna1kunnr
    *INTO corresponding fields of TABLE itab
    *where
    *"vbrp~werks in s_werks and
    *VBRK~KUNAG in p_kunag and
    *VBRP~vrkme in s_vrkme and " 'M3' and
    *VBRK~fkdat in p_fkdat order by KUNAG.
    LOOP AT itab.
    mm = itab-fkdat+4(2). " Monthly for Ageing
    clear itab2.
    Read table itab2 with key KUNAG = itab-KUNAG.
    *IF SY-SUBRC EQ 0.                      " Record for Customer exists so modify existing record updating the quantities
         PERFORM itab2_rec USING 'M' mm.
      ELSE.                                  " Record for Cusotmer does not exist so Append a new record for Customer
         PERFORM itab2_rec USING 'A' mm.
      ENDIF.
    itab1-fkdat = itab-fkdat+4(2).
    *itab1-vrkme = itab-vrkme.
    itab1-KUNAG = itab-KUNAG.
    itab1-name1 = itab-name1.
    itab1-fkimg = itab-fkimg.
    APPEND itab1.
    clear itab1.
    ENDLOOP.
    SORT itab1 BY KUNAG fkdat name1.
    "delete adjacent duplicates from itab1.
    LOOP AT itab1.
    move itab1 to wa_itab1.
    AT NEW KUNAG.
    t_s = 0  .
    ENDAT.
    t_s = t_s + itab1-fkimg .
    AT END OF KUNAG.
    mm = itab1-fkdat.
    "break angle.
      IF SY-SUBRC = 0.                     " Record for Customer exists so modify existing record updating the quantities
    CASE mm.
                         " Record for customer does not exit so append a new record for customer
      WHEN '01'.
      itab2-jan = t_s  .
      itab2-KUNAG = wa_itab1-KUNAG.
      itab2-name1 = wa_itab1-name1.
      itab2-total = wa_itab1-total.
        sum2 = sum2 + itab2-jan.
      APPEND itab2.
      WHEN '02'.
      itab2-feb = t_s  .
      itab2-KUNAG = wa_itab1-KUNAG.
      itab2-name1 = wa_itab1-name1.
      itab2-total = wa_itab1-total.
        sum2 = sum2 + itab2-feb.
      APPEND itab2.
      WHEN '03'.
      itab2-mar = t_s .
      itab2-KUNAG = wa_itab1-KUNAG.
      itab2-name1 = wa_itab1-name1.
      itab2-total = wa_itab1-total.
        sum3 = sum3 + itab2-mar.
      APPEND itab2.
      WHEN '04'.
      itab2-apr = t_s  .
      itab2-KUNAG = wa_itab1-KUNAG.
      itab2-name1 = wa_itab1-name1.
      itab2-total = wa_itab1-total.
        sum4 = sum4 + itab2-apr.
      APPEND itab2.
      WHEN '05'.
      itab2-may = t_s.
      itab2-KUNAG = wa_itab1-KUNAG.
      itab2-name1 = wa_itab1-name1.
      itab2-total = wa_itab1-total.
       sum5 = sum5 + itab2-may.
      APPEND itab2.
      WHEN '06'.
      itab2-jun = t_s .
      itab2-KUNAG = wa_itab1-KUNAG.
      itab2-name1 = wa_itab1-name1.
      itab2-total = wa_itab1-total.
      sum6 = sum6 + itab2-jun.
      APPEND itab2.
      WHEN '07'.
      itab2-jul = t_s .
      itab2-KUNAG = wa_itab1-KUNAG.
      itab2-name1 = wa_itab1-name1.
      itab2-total = wa_itab1-total.
        sum7 = sum7 + itab2-jul.
      APPEND itab2.
      WHEN '08'.
      itab2-aug = t_s .
      itab2-KUNAG = wa_itab1-KUNAG.
      itab2-name1 = wa_itab1-name1.
      itab2-total = wa_itab1-total.
      sum8 = sum8 + itab2-aug.
      APPEND itab2.
      WHEN '09'.
      itab2-sep = t_s .
      itab2-KUNAG = wa_itab1-KUNAG.
      itab2-name1 = wa_itab1-name1.
      itab2-total = wa_itab1-total.
        sum9 = sum9 + itab2-sep.
      APPEND itab2.
      WHEN '10'.
      itab2-oct = t_s .
      itab2-KUNAG = wa_itab1-KUNAG.
      itab2-name1 = wa_itab1-name1.
      itab2-total = wa_itab1-total.
        sum10 = sum10 + itab2-oct.
      APPEND itab2.
      WHEN '11'.
      itab2-nov = t_s .
      itab2-KUNAG = wa_itab1-KUNAG.
      itab2-name1 = wa_itab1-name1.
      itab2-total = wa_itab1-total.
      sum11 = sum11 + itab2-nov.
      APPEND itab2.
      WHEN '12'.
      itab2-dec = t_s.
      itab2-KUNAG = wa_itab1-KUNAG.
      itab2-name1 = wa_itab1-name1.
      itab2-total = wa_itab1-total.
      sum12 = sum12 + itab2-dec.
      APPEND itab2.
    itab2-total = itab2-jan + itab2-feb + itab2-mar + itab2-apr + itab2-may + itab2-jun + itab2-jul + itab2-aug + itab2-sep
    + itab2-oct + itab2-nov + itab2-dec .
    total = sum1 + sum2 + sum3 + sum4 + sum5 + sum6 + sum7 + sum8 + sum9 + sum10 + sum11 + sum12.
    IF MM = 'A'.  " Mode for Append
        APPEND itab2.
    ELSE.             " Mode for Modify
        itab2-KUNAG = itab1-KUNAG.
        itab2-name1 = itab2-name1.
        "MODIFY itab2 WHERE kunag = itab1-kunag.
    ENDIF.
    "loop at itab2  .
    on change of itab2-KUNAG." ,itab2-name1,itab2-jan,itab2-feb,itab2-mar,itab2-apr,itab2-may,itab2-jun,itab2-jul,itab2-aug,itab2-sep,itab2-oct.
              WRITE:/1 SY-VLINE,
                itab2-KUNAG   under   'PARTY' LEFT-JUSTIFIED ,0  SY-VLINE COLOR 2,
                itab2-name1   under     'NAME' LEFT-JUSTIFIED ,10 SY-VLINE,
                itab2-jan DECIMALS 1  under    'JAN' LEFT-JUSTIFIED,40 SY-VLINE,
                itab2-feb DECIMALS 1 under    'FEB' LEFT-JUSTIFIED,50 SY-VLINE,
                itab2-mar DECIMALS 1  under    'MAR' LEFT-JUSTIFIED,60 SY-VLINE,
                itab2-apr DECIMALS 1 under    'APR' LEFT-JUSTIFIED,70 SY-VLINE,
                itab2-may DECIMALS 1 under    'MAY' LEFT-JUSTIFIED,80 SY-VLINE,
                itab2-jun DECIMALS 1 under    'JUN' LEFT-JUSTIFIED,90 SY-VLINE,
                itab2-jul DECIMALS 1 under    'JUL' LEFT-JUSTIFIED,100 SY-VLINE,
                itab2-aug DECIMALS 1 under    'AUG' LEFT-JUSTIFIED,110 SY-VLINE,
                itab2-sep DECIMALS 1 under    'SEP' LEFT-JUSTIFIED,120 SY-VLINE,
                itab2-oct DECIMALS 1 under    'OCT' LEFT-JUSTIFIED,130 SY-VLINE,
                itab2-nov DECIMALS 1 under    'NOV' LEFT-JUSTIFIED,140 SY-VLINE,
                itab2-dec DECIMALS 1 under    'DEC' LEFT-JUSTIFIED,150 SY-VLINE,
                itab2-Total DECIMALS 1 under  'TOTAL' LEFT-JUSTIFIED,160 SY-VLINE COLOR 3,
                170 SY-VLINE COLOR 3.
                uline.
      "itab2-total = itab2-jan +value itab2-febitab3-maritab2-apritab2-mayitab2-junitab3-julitab2-augitab2-sepitab2-octitab3-nov+itab2-dec).
    "itab2-total = sum(itab2-jan)  .
    endon.
    "endloop.
    ENDCASE.
    ENDIF.
    "ENDFORM.
    ENDAT.
    ENDLOOP.
    ENDCASE.
    write:  sum1 DECIMALS 1  under    'JAN' LEFT-JUSTIFIED,40 SY-VLINE,
             sum2 DECIMALS 1 under    'FEB' LEFT-JUSTIFIED,50 SY-VLINE,
             sum3 DECIMALS 1  under    'MAR' LEFT-JUSTIFIED,60 SY-VLINE,
             sum4 DECIMALS 1 under    'APR' LEFT-JUSTIFIED,70 SY-VLINE,
             sum5  DECIMALS 1 under    'MAY' LEFT-JUSTIFIED,80 SY-VLINE,
             sum6 DECIMALS 1 under    'JUN' LEFT-JUSTIFIED,90 SY-VLINE,
             sum7 DECIMALS 1 under    'JUL' LEFT-JUSTIFIED,100 SY-VLINE,
             sum8 DECIMALS 1 under    'AUG' LEFT-JUSTIFIED,110 SY-VLINE,
             sum9 DECIMALS 1 under    'SEP' LEFT-JUSTIFIED,120 SY-VLINE,
             sum10 DECIMALS 1 under    'OCT' LEFT-JUSTIFIED,130 SY-VLINE,
             sum11 DECIMALS 1 under    'NOV' LEFT-JUSTIFIED,140 SY-VLINE,
             sum12 DECIMALS 1 under    'DEC' LEFT-JUSTIFIED,150 SY-VLINE,
             sum13 DECIMALS 1 under  'TOTAL' LEFT-JUSTIFIED,160 SY-VLINE COLOR 1.
    uline.
    regards
    Piroz

  • Customer list who have NEVER been invoiced during a year

    Our Finance division wants to have a look at the customer list in SAP for customer who have not been issued even a single invoice during a fiscal year. Can you please suggest a t-code.

    I dont think a standard transaction code is there to meet this requirement.  You have to table join KNA1 to VBRK in SQVI and check.
    thanks
    G. Lakshmipathi

  • Inner joins on the tables VAKPA , VBAP and KNA1

    HI ,
    I have one performance issue.please see the below select query..In order to improve the performance i need to change this select query with out changing the functionality.Can any one of you please suggest me .
       SELECT vakpakunde vakpaparvw kna1kunnr kna1name1 kna1~ktokd
               vbapvbeln vbapposnr vbaparktx vbapzzclass
               vbapmvgr2 vbapmvgr3 vbapmvgr5 vbapzzcanvas_year
               vbapmatnr vbapmatkl
         FROM  vakpa
         INNER JOIN  vbap ON
               vakpavbeln = vbapvbeln
         INNER JOIN kna1 ON
               vakpakunnr = kna1kunnr
         INTO CORRESPONDING FIELDS OF TABLE gt_vbap
         WHERE vakpa~kunde IN so_kunnr
         AND   vakpa~parvw = 'AG'
         AND   vakpa~vkorg IN so_vkorg
         AND ( vbap~zzad_line_status = 'PR' OR
               vbap~zzad_line_status = 'RE' )
         AND   vbap~mvgr5         IN r_ctf
         AND   vbap~matkl         IN so_matkl
         AND   vbap~matnr         IN so_matnr
         AND   vbap~zzcanvas_year IN so_year.
      ENDIF.

    Use FOR ALL ENTRIES statement instead of joints.
    or
    and Remove INTO CORRESPONDING FIELDS by selecting the fields in the orderstored in table
    Edited by: kalandar on Dec 4, 2009 7:43 AM

  • Printing the header of a report  and checking the join statement...

    Hi All,
    This report of mne is working fine but there are things that i want to include: when i print this report i want it to display heading of which is in the html_top_of_page but it does not print it, i am not familiar with smart forms so i won't be able to use smart forms.If anyone can help me out i will really appreciated and will immediately reward points......please help me guys as the due date is very close...and please check the joins on the select statement, not sure whether i've joined the tables properly!
    REPORT  Z_ORDER_AUDIT_NEW.
    TYPE-POOLS: SLIS.
                   LIST OF TABLES
    Tables: vbak, likp, vbrk, kna1, vbrp, nast.
                         DEFINITION OF FIELDS                               *
    DATA: itb_fieldcat TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE,
          w_fieldcat TYPE slis_fieldcat_alv.
    DATA: w_cnt LIKE sy-tabix.
    DATA: lv_layout TYPE slis_layout_alv,
          lv_tab_group TYPE slis_t_sp_group_alv,
          lv_repid LIKE sy-repid,
          lv_events TYPE slis_t_event,
          lv_print  TYPE slis_print_alv,
          lv_user   TYPE slis_formname VALUE 'USER_COMMAND'.
             SELECTION SCREEN                                                 *
    SELECT-OPTIONS:
      s_lfdat FOR likp-lfdat,
      s_imwrk FOR likp-imwrk.
                 DEFINITION OF AN INTERNAL TABLE                              *
    DATA: Begin of i_ordertab occurs 0,
             audat  LIKE vbak-audat,
             vbeln  LIKE vbak-vbeln,
             lfdat  LIKE likp-lfdat,
             erdat  LIKE likp-erdat,
             vbeln1 LIKE likp-vbeln,
             vbeln2 LIKE vbrk-vbeln,
             erdat1 LIKE vbrk-erdat,
             kunrg  LIKE vbrk-kunrg,
             name1  LIKE kna1-name1,
             regio  LIKE vbrk-regio,
             inco1  LIKE vbrk-inco1,
             vrkme  LIKE vbrp-vrkme,
             ntgew  LIKE vbrp-ntgew,
             gewei  LIKE vbrp-gewei,
             volum  LIKE vbrp-volum,
             voleh  LIKE vbrp-voleh,
             netwr  LIKE vbrk-netwr,
           End of i_ordertab.
                   READ THE DATA                                               *
      SELECT vbakaudat vbakvbeln likplfdat likperdat likpvbeln vbrkvbeln
             vbrkerdat vbrkkunrg kna1name1 vbrkregio vbrkinco1 vbrpvrkme
             vbrpntgew vbrpgewei vbrpvolum vbrpvoleh vbrk~netwr
             FROM likp join kna1 on likpkunnr EQ kna1kunnr
                       join vbrk on kna1kunnr EQ vbrkkunrg
                       join vbrp on vbrkvbeln EQ vbrpvbeln
                       join vbak on kna1kunnr EQ vbakkunnr
             INTO i_ordertab
             WHERE likp~lfdat IN s_lfdat
             AND   likp~imwrk IN s_imwrk.
             APPEND i_ordertab.
      ENDSELECT.
                         PERFORM STATEMENTS                                   *
    PERFORM build_fieldcatalog.
    PERFORM build_layout.
    PERFORM build_event.
    PERFORM build_print.
    PERFORM display_alv_report.
    FORM build_fieldcatalog.
      w_cnt = 1.
      itb_fieldcat-fieldname = 'AUDAT'.
      itb_fieldcat-seltext_m = 'Document date'.
      itb_fieldcat-col_pos   = w_cnt.
      itb_fieldcat-emphasize = 'X'.
      itb_fieldcat-key       = 'X'.
      APPEND itb_fieldcat TO itb_fieldcat.
      CLEAR itb_fieldcat.
      w_cnt = w_cnt + 1.
      itb_fieldcat-fieldname = 'VBELN'.
      itb_fieldcat-seltext_m = 'S/O number'.
      itb_fieldcat-col_pos   = w_cnt.
      itb_fieldcat-emphasize = 'X'.
      APPEND itb_fieldcat TO itb_fieldcat.
      CLEAR itb_fieldcat.
      w_cnt = w_cnt + 1.
      itb_fieldcat-fieldname = 'LFDAT'.
      itb_fieldcat-seltext_m = 'Deliv. date'.
      itb_fieldcat-col_pos   = w_cnt.
      itb_fieldcat-emphasize = 'X'.
      APPEND itb_fieldcat TO itb_fieldcat.
      CLEAR itb_fieldcat.
      w_cnt = w_cnt + 1.
      itb_fieldcat-fieldname = 'ERDAT'.
      itb_fieldcat-seltext_m = 'Del. Crt Date'.
      itb_fieldcat-col_pos   = w_cnt.
      itb_fieldcat-emphasize = 'X'.
      APPEND itb_fieldcat TO itb_fieldcat.
      CLEAR itb_fieldcat.
      w_cnt = w_cnt + 1.
      itb_fieldcat-fieldname = 'VBELN1'.
      itb_fieldcat-seltext_m = 'Delivery No.'.
      itb_fieldcat-col_pos   = w_cnt.
      itb_fieldcat-emphasize = 'X'.
      APPEND itb_fieldcat TO itb_fieldcat.
      CLEAR itb_fieldcat.
      w_cnt = w_cnt + 1.
      itb_fieldcat-fieldname = 'VBELN2'.
      itb_fieldcat-seltext_m = 'Invoice No.'.
      itb_fieldcat-col_pos   = w_cnt.
      itb_fieldcat-emphasize = 'X'.
      APPEND itb_fieldcat TO itb_fieldcat.
      CLEAR itb_fieldcat.
      w_cnt = w_cnt + 1.
      itb_fieldcat-fieldname = 'ERDAT1'.
      itb_fieldcat-seltext_m = 'Invoice Date'.
      itb_fieldcat-col_pos   = w_cnt.
      itb_fieldcat-emphasize = 'X'.
      APPEND itb_fieldcat TO itb_fieldcat.
      CLEAR itb_fieldcat.
      w_cnt = w_cnt + 1.
      itb_fieldcat-fieldname = 'KUNRG'.
      itb_fieldcat-seltext_m = 'Payer'.
      itb_fieldcat-col_pos   = w_cnt.
      itb_fieldcat-emphasize = 'X'.
      APPEND itb_fieldcat TO itb_fieldcat.
      CLEAR itb_fieldcat.
      w_cnt = w_cnt + 1.
      itb_fieldcat-fieldname = 'NAME1'.
      itb_fieldcat-seltext_m = 'Payer-Description'.
      itb_fieldcat-col_pos   = w_cnt.
      itb_fieldcat-emphasize = 'X'.
      APPEND itb_fieldcat TO itb_fieldcat.
      CLEAR itb_fieldcat.
      w_cnt = w_cnt + 1.
      itb_fieldcat-fieldname = 'REGIO'.
      itb_fieldcat-seltext_m = 'Region'.
      itb_fieldcat-col_pos   = w_cnt.
      itb_fieldcat-emphasize = 'X'.
      APPEND itb_fieldcat TO itb_fieldcat.
      CLEAR itb_fieldcat.
      w_cnt = w_cnt + 1.
      itb_fieldcat-fieldname = 'INCO1'.
      itb_fieldcat-seltext_m = 'Incoterms'.
      itb_fieldcat-col_pos   = w_cnt.
      itb_fieldcat-emphasize = 'X'.
      APPEND itb_fieldcat TO itb_fieldcat.
      CLEAR itb_fieldcat.
      w_cnt = w_cnt + 1.
      itb_fieldcat-fieldname = 'VRKME'.
      itb_fieldcat-seltext_m = 'Billed Quantity'.
      itb_fieldcat-col_pos   = w_cnt.
      itb_fieldcat-emphasize = 'X'.
      APPEND itb_fieldcat TO itb_fieldcat.
      CLEAR itb_fieldcat.
      w_cnt = w_cnt + 1.
      itb_fieldcat-fieldname = 'NTGEW'.
      itb_fieldcat-seltext_m = 'Net weight'.
      itb_fieldcat-col_pos   = w_cnt.
      itb_fieldcat-emphasize = 'X'.
      APPEND itb_fieldcat TO itb_fieldcat.
      CLEAR itb_fieldcat.
      w_cnt = w_cnt + 1.
      itb_fieldcat-fieldname = 'GEWEI'.
      itb_fieldcat-seltext_m = 'Weight Unit'.
      itb_fieldcat-col_pos   = w_cnt.
      itb_fieldcat-emphasize = 'X'.
      APPEND itb_fieldcat TO itb_fieldcat.
      CLEAR itb_fieldcat.
      w_cnt = w_cnt + 1.
      itb_fieldcat-fieldname = 'VOLUM'.
      itb_fieldcat-seltext_m = 'Volume'.
      itb_fieldcat-col_pos   = w_cnt.
      itb_fieldcat-emphasize = 'X'.
      APPEND itb_fieldcat TO itb_fieldcat.
      CLEAR itb_fieldcat.
      w_cnt = w_cnt + 1.
      itb_fieldcat-fieldname = 'VOLEH'.
      itb_fieldcat-seltext_m = 'VOLUME UNIT'.
      itb_fieldcat-col_pos   = w_cnt.
      itb_fieldcat-emphasize = 'X'.
      APPEND itb_fieldcat TO itb_fieldcat.
      CLEAR itb_fieldcat.
      w_cnt = w_cnt + 1.
      itb_fieldcat-fieldname = 'NETWR'.
      itb_fieldcat-seltext_m = 'Net Value'.
      itb_fieldcat-col_pos   = w_cnt.
      itb_fieldcat-emphasize = 'X'.
      itb_fieldcat-ref_tabname  = 'VBRK' .
      itb_fieldcat-ref_fieldname = 'NETWR' .
      itb_fieldcat-do_sum = 'X' .
      APPEND itb_fieldcat TO itb_fieldcat.
      CLEAR itb_fieldcat.
    ENDFORM.
    FORM build_layout.
        lv_layout-no_input           = 'X'.
        lv_layout-colwidth_optimize  = 'X'.
        lv_layout-totals_text        = 'Totals'(201).
        lv_layout-detail_popup       = 'X'.
    ENDFORM.
    FORM build_event.
      DATA i_event TYPE slis_alv_event.
      CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
         EXPORTING
           i_list_type = 0
         IMPORTING
           et_events   = lv_events[].
       READ TABLE lv_events WITH KEY name = slis_ev_user_command
                            INTO i_event.
       if sy-subrc = 0.
         MOVE lv_user TO i_event-form.
         APPEND i_event TO lv_events.
       endif.
    ENDFORM.
    FORM build_print.
         lv_print-reserve_lines = '2'.
         lv_print-no_coverpage  = 'X'.
    ENDFORM.
    *&          FUNCTION ALV DISPLAY
    FORM display_alv_report.
    lv_repid = sy-repid.
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
      EXPORTING
       I_CALLBACK_PROGRAM             = lv_repid
       I_CALLBACK_USER_COMMAND        = slis_ev_user_command
       I_CALLBACK_HTML_TOP_OF_PAGE    = 'HTML_TOP_OF_PAGE' " see FORM
       I_CALLBACK_HTML_END_OF_LIST    = 'END_OF_LIST_HTML'   "see FORM
       IS_LAYOUT                      = lv_layout
       IT_FIELDCAT                    = itb_fieldcat[]
       IT_SPECIAL_GROUPS              = lv_tab_group
       I_SAVE                         = 'X'
       IT_EVENTS                      = lv_events
       IS_PRINT                       = lv_print
      TABLES
        t_outtab                      = i_ordertab
      EXCEPTIONS
        PROGRAM_ERROR                 = 1
        OTHERS                        = 2.
    IF sy-subrc <> 0.
    ENDIF.
    ENDFORM.
    *&      Form  html_top_of_page
    FORM html_top_of_page USING document TYPE REF TO cl_dd_document.
      DATA: text TYPE sdydo_text_element.
      CALL METHOD document->add_gap
        EXPORTING
          width = 100.
      text =  'Cadbury: Daily Audit of Orders'.
      CALL METHOD document->add_text
        EXPORTING
          text      = text
          sap_style = 'HEADING'.
      CALL METHOD document->new_line.
      CALL METHOD document->new_line.
      CALL METHOD document->new_line.
      text = 'User Name : '.
      CALL METHOD document->add_text
        EXPORTING
          text         = text
          sap_emphasis = 'Strong'.
      CALL METHOD document->add_gap
        EXPORTING
          width = 6.
      text = sy-uname.
      CALL METHOD document->add_text
        EXPORTING
          text      = text
          sap_style = 'Key'.
      CALL METHOD document->add_gap
        EXPORTING
          width = 50.
      text = 'Date : '.
      CALL METHOD document->add_text
        EXPORTING
          text         = text
          sap_emphasis = 'Strong'.
      CALL METHOD document->add_gap
        EXPORTING
          width = 6.
      text = sy-datum.
      CALL METHOD document->add_text
        EXPORTING
          text      = text
          sap_style = 'Key'.
      CALL METHOD document->add_gap
        EXPORTING
          width = 50.
      text = 'Time : '.
      CALL METHOD document->add_text
        EXPORTING
          text         = text
          sap_emphasis = 'Strong'.
      CALL METHOD document->add_gap
        EXPORTING
          width = 6.
      text = sy-uzeit.
      CALL METHOD document->add_text
        EXPORTING
          text      = text
          sap_style = 'Key'.
    ENDFORM.
    FORM end_of_list_html USING end TYPE REF TO cl_dd_document.
    DATA: ls_text TYPE sdydo_text_element,
        l_grid TYPE REF TO cl_gui_alv_grid,
        f(14) TYPE c VALUE 'SET_ROW_HEIGHT',
        w_lines type i,
        w_lines1(9) type n.
    DESCRIBE TABLE i_ordertab LINES w_lines.
    w_lines1 = w_lines.
    concatenate: 'TOTAL NUMBER OF RECORDS SELECTED:  ' w_lines1 INTO ls_text
                                  SEPARATED BY space.
    adds test (via variable)
       CALL METHOD end->add_text
      EXPORTING
        text = ls_text
        sap_emphasis = 'strong'.
    adds new line (start new line)
       CALL METHOD end->new_line.
    *set height of this section
       CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
        IMPORTING
         e_grid = l_grid.
        CALL METHOD l_grid->parent->parent->(f)
        EXPORTING
          id = 3
          height = 14.
    ENDFORM. "end_of_list_html.
    --END OF THE REPORT--

    Hi
    1. first remove the ENDSELECT..use INTO table itab or INTO CORRESPONDING fields, Since you are joining the  more tables this will take lot of time.
    2. You are just using two fields from LIKP as selection screen  fields to fetch the so much data.
    see the table linkings apartfrom KUNNR between the tables
    LIKP-VBELN = LIPS-VBELN
    LIPS-VGBEL = VBAK-VBELN and  LIPS-VGPOS = VBAP-POSNR
    and
    VBRP-AUBEL = VBAK-VBELN and VBRP-AUPOS = VBAP-POSNR and
    VBRP-VGBEL = LIKP-VBELN  and VBRP-VGPOS = LIPS-POSNR
    use the above links and code again.
    <b>Reward points for useful Answers</b>
    Regards
    Anji

  • List Report ( Join Query )

    I am developing list report and in that i have to use approximately 8-9 inner joins and according  to SAP we can use only 2-3 joins so is there any alternative of fetching data from multiple table without effecting performance, i am listing my query below for proper understanding of the situation.
    SELECT  vbrk~vbeln vbrk~kunag vbrk~vtweg vbrk~vkorg
              vbrp~fkimg vbrp~matnr vbrp~werks vbrp~vkbur
              j_1iexchdr~exnum j_1iexchdr~exdat
              kna1~stceg kna1~name1 kna1~regio
              t005u~bezei
              adrc~street adrc~str_suppl1 adrc~str_suppl2
              t023t~wgbez
              likp~traid
              zmm_deliv_badi~lr_number zmm_deliv_badi~lr_date zmm_deliv_badi~manual_no
              zmm_deliv_badi~curr_num zmm_deliv_badi~manual_no1 zmm_deliv_badi~curr_num1
              mara~spart
         FROM vbrk INNER JOIN vbrp       ON vbrp~vbeln = vbrk~vbeln
                   INNER JOIN j_1iexchdr ON j_1iexchdr~rdoc = vbrk~vbeln
                   INNER JOIN kna1       ON kna1~kunnr = vbrk~kunag
                   INNER JOIN t005u      ON t005u~bland = kna1~regio
                                             AND t005u~spras = 'EN'
                                             AND t005u~land1 = 'IN'
                   INNER JOIN adrc       ON adrc~addrnumber = kna1~adrnr
                   INNER JOIN t023t      ON  t023t~matkl = vbrp~matkl
                   INNER JOIN likp       ON  likp~vbeln =  vbrp~vgbel
                   INNER JOIN zmm_deliv_badi ON zmm_deliv_badi~vbeln =  vbrp~vgbel
                   INNER JOIN mara           ON mara~matnr =  vbrp~matnr
              INTO CORRESPONDING FIELDS OF TABLE lit_st
         WHERE vbrk~vtweg IN ('03','04','06')
           AND vbrk~fkdat IN so_date
           AND vbrp~werks IN p_werks
           AND j_1iexchdr~status = 'C'
           AND vbrk~vkorg IN p_vkorg
           AND vbrk~kunag NOT IN ('0000001130','0000001150','0000001220','0000001240').
    What is the other alternative of apart from using joins , making views is not the solution as it will increase database objects and it is also not recommended and ranges and for all entries in will also decrease performance and for that we have to make lots of temporary objects
    So , please advice.
    Thanks .
    Ankesh Jindal

    >
    Ankesh Jindal wrote:
    > What is the other alternative of apart from using joins , making views is not the solution as it will increase database objects and it is also not recommended and ranges and for all entries in will also decrease performance and for that we have to make lots of temporary objects
    If you are saying neither Views nor for all entries nor Joins would work with aspect of performance, than I'm Sorry to say that we have no option left now.
    BTW you are misleading with your assumption for join. You can use Join in this case.
    Cheers,
    Amit.

  • Inner Join Built?

    Hi Experts,
    I need to build a inner join between 4 tbls, like, in such a way that, the user gives his choices in selection screen as SELECT OPTIONS / Range values,
    1 - KUNNR-VBAK
    2 - KVGR2 - VBAK
    3 - BZIRK(dist) - KNVV-BZIRK
    4- MATNR-VBAP
    5 - ANGDT-VBAK - Valid from date
    6- BNDDT-VBAK - Valid to date
    7- BNAME-VBAK (name)
    8 - PARNR-VBPA (AP type)
    So,  Pls- let me know,
    1 - Which r higher level fields/tbls, I mean, In What order I hv to choose in WHERE clause?
    2 - How to join second tbl to third tbl like, VBELN-VBPA and KNVV-BZIRK?
    3 - It wuld b greate, if u provide the code!
    4 - Guess, for SELECT clause, I can write in any order, I mean, need to worry the higher level filtering!
    ThanQ.
    Message was edited by:
            Sridhar

    Hi,
    Check this one.
    TABLES: vbrk,vbrp,makt,kna1,t001.
    SELECT-OPTIONS:
                s_vkorg FOR vbrk-vkorg,
                s_vbeln FOR vbrk-vbeln.
      SELECT vbrkvbeln vbrkfkdat vbrkzterm vbrkinco1 vbrk~inco2
             vbrkwaerk vbrkbukrs
             vbrpmatnr vbrpfkimg vbrpvrkme vbrpnetwr
             maktmaktg kna1name1 t001butxt kna1adrnr
                   INTO CORRESPONDING FIELDS OF TABLE itab
             FROM  ( ( ( ( vbrk INNER JOIN vbrp ON vbrkvbeln = vbrpvbeln )
                          INNER JOIN makt ON vbrpmatnr = maktmatnr )
                          INNER JOIN kna1 ON vbrkkunag = kna1kunnr )
                          INNER JOIN t001 ON vbrkbukrs = t001bukrs )
                  WHERE  vbrk~vkorg IN s_vkorg AND
                         vbrk~vbeln IN s_vbeln.
    Thanks.

  • Performance over join..

    me using these three select
    this taking hell lot of time.. any ways to improve these..
    for all entries taking more then tht.. so please dont suggest tht.
    its critial issue help me out..
    SELECT BWERKS AVBELN B~MATNR
               AFKDAT ASPART AVTWEG AERDAT A~ERZET
               BVGBEL BAUBEL
               A~FKART              "Added by Arun pandey 08/05/2007
               BNETWR BFKIMG B~MWSBP
               FROM VBRP AS B
               JOIN VBRK AS A ON AVBELN = BVBELN INTO TABLE IT_INV
               WHERE A~FKART IN S_FKART
                 AND ( ASPART IN S_SPART AND ASPART <> 'ST' )
                 AND A~FKDAT IN S_FKDAT
                 AND ( AVTWEG IN S_VTWEG AND AVTWEG <> 'ST' )
                 AND A~FKSTO <> 'X'
                 AND A~KUNAG IN S_CUST
                 AND B~WERKS = S_WERKS.
    SELECT AVBELN BPOSNR BMATNR BVGBEL AKUNNR AERDAT A~ERZET
               ALFDAT BLFIMG
               FROM LIKP AS A JOIN LIPS AS B ON AVBELN = BVBELN
               INTO TABLE IT_DELV
               FOR ALL ENTRIES IN IT_INV
               WHERE A~VBELN = IT_INV-VGBEL
               AND B~MATNR = IT_INV-MATNR.
    SELECT AVBELN ABSTNK AAUART AKUNNR
                 AVKBUR AVKGRP BNAME1 BORT01
                 FROM VBAK AS A JOIN KNA1 AS B ON AKUNNR = BKUNNR
                 INTO TABLE IT_ORDER
                 FOR ALL ENTRIES IN IT_DELVHEAD
                 WHERE A~VBELN = IT_DELVHEAD-VGBEL.

    Hi,
    Check for not initial condition of internal tables before your select statements which use "For all entries in" , else if its initial, its going to pick up the complete table entries.
    Shruthi

  • 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.}

  • Regarding join statement

    SELECT  vbrkvbeln vbfavbelv
              vbrkfkdat vbrkkunag
              vbrpwerks kna1name1
                  FROM vbrk
                  INNER JOIN vbrp ON vbrkvbeln = vbrpvbeln
                  INNER JOIN vbfa ON vbfavbeln = vbrkvbeln
                  INNER JOIN kna1 ON kna1kunnr = vbrkkunag
                  INTO CORRESPONDING FIELDS OF TABLE INVTAB
                  WHERE vbrp~werks IN s_werks
                  AND vbrk~fkdat IN s_fkdat
                  AND vbrk~kunag IN s_kunag
                  AND vbrk~fkart IN ('ZF2','FVAT')
                  AND vbrk~fksto <> 'X'
                  AND vbrk~rfbsk = 'C'
                  AND vbrk~sfakn = ''
                  AND vbrk~inco1 = 'TWO'
                  AND VBRK~VKORG NE '5000'
                  AND vbfa~vbtyp_n = 'M'
                  AND vbfa~vbtyp_v = 'J'.
    i am writng this join statement
    but when displaying i am getting multiple records for a particular entry
    say for a particular documnet number if it is having N no. of line itmes and when searching in vbfa thenumber of preeecig documents are M then the resords that it is disp;laying is N*M.
    but in some cases it is showing records more than this
    can you please help me why it is showing more records.
    and in if you can explain me with an example with a dummy no of records how it will fetch record that will be a great help.

    Hi Ashish,
    please chk the following links for inner and outer join ,
    http://help.sap.com/saphelp_erp2004/helpdata/en/cf/21ec77446011d189700000e8322d00/frameset.htm
    http://www.sap-img.com/abap/several-nested-inner-join-statements-can-be-inefficient.htm
    http://www.thespot4sap.com/Articles/SAPABAPPerformanceTuning_InnerJoinStatement.asp
    now how to write join statements
    SELECT
    a~ebeln
    a~ebelp
    a~matnr
    a~txz01
    a~menge
    a~meins
    a~netpr
    a~brtwr
    a~netwr
    a~mwskz
    a~navnw
    a~effwr
    a~werks
    b~eindt
    FROM
    ekpo AS a
    INNER JOIN
    eket AS b
    ON
    aebeln = bebeln
    INTO
    TABLE t_ekpo
    WHERE
    a~ebeln = t_ekko_temp-ebeln
    AND b~ebeln = t_ekko_temp-ebeln.
    Think there are 2 tables . a right hand table and a left hand table.
    in inner join : only those fields having coresponding values in the left hand side table are selected.
    in outer join all the fields on the left hand side table are selected and the fields which have no corresponding values in the right hand side table are displayed as null values..
    Reward points if helpful
    Regards ,
    Amber S

Maybe you are looking for