Skip to Content
0
Former Member
Mar 06, 2009 at 08:50 PM

Eliminate multiple line items

63 Views

Hi , I have a scenerio to extarct the billing plan items in my report. When I run the report it gives me the required output but with multiple line items . I am not sure if my sleection is bring in data from both billing plan header as well as billing plan item data . I just need to bring in the data from the item level which will resolve the issue of multiple line items showing up in the report, my selection is as follows , please comment if I am selecting form both the header as well as item level,

  IF  p_rental = 'X' .

    SELECT a~vbeln a~ktext a~erdat a~ernam a~audat a~vbtyp a~auart a~vkorg
     a~vtweg a~spart a~vkbur a~guebg a~gueen a~kunnr a~kvgr4
     b~posnr b~matnr b~charg b~matkl b~arktx b~pstyv b~zmeng
     b~zieme b~kdmat b~werks b~lgort b~vstel b~netpr b~kpein
     b~vkaus b~aufnr b~kmein b~shkzg b~oid_extbol b~oid_miscdl b~netwr
     b~oidrc b~oid_ship AS kunwe b~zzwprofid c~datbi c~datab b~route
     e~fkdat e~nfdat e~fakwr e~fksaf e~afdat
     f~fpart f~bedat f~endat f~horiz g~bezei
       INTO CORRESPONDING FIELDS OF TABLE gt_sel
       FROM vbak AS a
           INNER JOIN vbap AS b ON a~vbeln = b~vbeln
           INNER JOIN vbkd AS d ON a~vbeln = d~vbeln
           INNER JOIN fplt AS e ON d~fplnr = e~fplnr
           INNER JOIN fpla AS f ON e~fplnr = f~fplnr
           LEFT OUTER JOIN tvlvt AS g ON b~vkaus = g~abrvw
                                        AND g~spras = 'E'
           LEFT OUTER JOIN zsdsched AS c ON b~vbeln = c~vbeln
                                        AND b~posnr = c~posnr
         WHERE a~vbeln IN s_vbeln
         AND a~ktext IN s_ktext
         AND a~erdat IN s_erdat
         AND a~vbtyp = gc_g
         AND a~ernam IN s_ernam
         AND a~vkorg IN s_vkorg
         AND a~vtweg IN s_vtweg
         AND a~spart IN s_spart
         AND a~vkbur IN s_vkbur
         AND a~guebg IN s_guebg
         AND a~gueen IN s_gueen
         AND a~auart IN s_auart
         AND a~kunnr IN s_kunnr
         AND b~oid_ship IN s_kunwe
         AND b~werks IN s_werks
         AND b~lgort IN s_lgort
         AND b~vstel IN s_vstel
         AND b~route in s_route
         AND b~matnr IN s_matnr
         AND e~afdat IN s_afdat
         AND e~fksaf IN s_fksaf
         AND b~pstyv in s_pstyv.
    SORT gt_sel.
    IF NOT gt_sel[] IS INITIAL.
**   Get Bill-to Party's for Item Lines
      SELECT vbeln posnr parvw kunnr INTO CORRESPONDING FIELDS OF TABLE gt_vbpa
          FROM vbpa
          FOR ALL ENTRIES IN gt_sel
          WHERE vbeln = gt_sel-vbeln
            AND parvw = gc_re.
    ENDIF.
*   Loop through captured data for additional information
    LOOP AT gt_sel INTO gs_report.

*   Find the bill-to party
      READ TABLE gt_vbpa INTO gs_vbpa WITH KEY vbeln = gs_report-vbeln
                                               posnr = gs_report-posnr
                                               parvw = gc_re.
      IF sy-subrc <> 0.
        READ TABLE gt_vbpa INTO gs_vbpa WITH KEY vbeln = gs_report-vbeln
                                                 parvw = gc_re.
        CHECK sy-subrc = 0 AND gs_vbpa-kunnr IN s_kunre.
      ELSE.
        CHECK gs_vbpa-kunnr IN s_kunre.
      ENDIF.
      if sy-subrc = 0.
        gs_report-kunre = gs_vbpa-kunnr.
      endif.
*  Get the Customer's Name
      gs_report-kunnrt = zcl_kna1=>get_name1( itp_kunnr = gs_report-kunnr ).
      gs_report-kunwet = zcl_kna1=>get_name1( itp_kunnr = gs_report-kunwe ).
      gs_report-kunret = zcl_kna1=>get_name1( itp_kunnr = gs_report-kunre ).
      APPEND gs_report TO gt_report.
      ENDLOOP.
     DELETE ADJACENT DUPLICATES FROM  gt_report .

Thanks