Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

Filtering- Getting count of distinct doc after filtering

Former Member
0 Kudos
192

HI Gurus!

I have a report that shows the sales order report . In its ALV ouptput I have created a count column which gives me the number of lines in the report and also I have created the top of page in which it gives me the number of distinct sales document numbers count . I.e for a particular selection the count of line items are say 765 and the number of distinct sales documents are 70 which I have printed on the top of the page in the layout. Now if we do some kind of filtering process in the output the number of sales documents printed on top of page remains the same while the coumnt of line items changes a sper the filtering . The count on the top of page for the sales order dosent change as it prints the number from the internal table which is understandable. But is there a possibility that I create another column next to the sales doc number column and at the beginning of each of the new sales document it prints one and for all the other duplicates it prints 0 and then do the sum for it , so that even on filtering it gives me the count that remains after filter while the total number of distinct sale doc remains on top from the internal table.

Is this possible to do so that I get thenumber of sales doc even after filter process?

If so please advice how to get it.

Regards

7 REPLIES 7

Former Member
0 Kudos
122

Hello,

I have run into a similar situation where I wanted to modify the underlying itab that was being displayed

by ALV. (Rich Heilmann helped me with a solution).

This is not exactly what you want to do but maybe it will give you some ideas.

Regards

Greg Kern

0 Kudos
122

Thanks . I somehow am not able to get to the solution where I can get the resulting count of the Documents upon filetering and it still show me the total count whats actually there for a particular selection criteria. Filtering also show the same count . Well is it really possible to get the disticnt count even after filetring the output just like I am getting for the count of total line items changing upon filtering .

0 Kudos
122

Well as of now my report does sommething like this.


*&---------------------------------------------------------------------*
*& Report  ZSD_SALES_ORDERS                                            *
*&         Sales Orders Report (tcode zva05)                           *
*&         i.e. For 'admins'/oil field application                     *
*&---------------------------------------------------------------------*
report  zztest message-id zsd no standard page heading.

* For ALV usage
type-pools: slis.
data: gs_layout   type slis_layout_alv,
      tp_print    type slis_print_alv,
      gt_sort     type slis_t_sortinfo_alv,
      gt_events   type slis_t_event,
      t_fieldcat  type slis_t_fieldcat_alv with header line,
      repid       type syrepid,               " ABAP Program.
      gt_list_top_of_page type slis_t_listheader,     " Top of page text.
      alv_variant   type disvariant.           " Customize Disp. Variant

data: w_field    type slis_fieldcat_alv.

data: gs_list_top_of_page type slis_listheader.

data: l_count type I.

data: count1 type I.

tables: vbak, vbap, vbpa, knvv.

*----------------------------------------------------------------------*
* Definition of selection screen                                       *
*   By plant, storage location, sold-to customers, material and        *
*   posting date of the sales orders                                   *
*----------------------------------------------------------------------*
selection-screen begin of block one with frame title text-001.

parameters:     p_vkorg  type vkorg obligatory memory id vko,"DEVK906677
                p_vtweg  type vtweg obligatory default '01',
                p_spart  type spart obligatory default '01'.
select-options: s_vkbur  for  vbak-vkbur,      " Sales Office     "DEVK906677
                s_kunnr  for  vbak-kunnr.      " Sold-to customer number.
select-options: s_shipto for  vbap-oid_ship,   " Ship-to customer number.
                s_billto for  vbpa-kunnr,      " bill-to from S.O. header.
                s_load   for  vbpa-kunnr,      " Load confirmation contact.
                s_truck  for  vbap-oid_extbol. " Trucking ticket number.

select-options: s_werks for vbap-werks obligatory no intervals. " Plant.
select-options: s_lgort for vbap-lgort.        " Storage location.
select-options: s_matnr for vbap-matnr.        " Material number.
select-options: s_konda for knvv-konda.        " price group

selection-screen skip 1.
select-options: s_vdatu for vbak-vdatu default sy-datum.
selection-screen end of block one.

* ALV display layout
selection-screen begin of block layout with frame title text-003.
parameters: pa_vari type slis_vari default ' '. " Display variant.
selection-screen end of block layout.

selection-screen begin of block two with frame title text-028.
selection-screen comment: /1(79) text-029.
selection-screen comment: /1(79) text-030.
selection-screen comment: /1(79) text-031.
selection-screen comment: /1(79) text-032.
selection-screen comment: /1(79) text-033.
selection-screen comment: /1(79) text-034.
selection-screen comment: /1(79) text-035.
selection-screen comment: /1(79) text-036.
selection-screen end of block two.

*----------------------------------------------------------------------*
* Data Definitions                                                     *
*----------------------------------------------------------------------*
* Storing Extracted Info.
types: begin of t_extract,
         vbeln        type vbeln_va,   " Sales order number.
         augru        type augru,      " order reason
         vdatu        type edatu_vbak, " Requested delivery date.
         kunnr        type kunag,      " Sold-to customer number.
         posnr        type posnr_va,   " Item number.
         matnr        type matnr,      " Material number.
         vrkme        type vrkme,      " Sales UoM.
         mseh3        type mseh3,      " UoM text.
         netwr        type netwr_ap,   " Net value of the order item.
         kwmeng       type p length 13 decimals 1, " Quantity.
         werks        type werks_d,    " Plant.
         lgort        type lgort_d,    " Storage location.
         oid_extbol   type oid_extbol, " External BOL or truck ticker header.
         maktx        type maktx,      " Material description.
         soldto_name  type name1_gp,   " Sold-to name.
         oid_ship     type kunwe,      " Ship-to customer number.
         shipto_name  type name1_gp,   " Ship-to name.
         billto       type kunre,      " Bill-to customer number.
         billto_name  type name1_gp,   " Bill-to name.
         load_contact type kunnr,      " Load confirmation contact.
         load_name    type name1_gp,   " Load confirmation contact name.
         truck        type kunnr,      " Truck company number.
         truck_name   type name1_gp,   " Truck company name.
         bstkd        type bstkd,      " PO number.
         ihrez        type ihrez,      " AFE number per the contract/sales order.
         delivery     type vbeln_vl,   " Delivery number.
         posnr_vl     type posnr_vl,   " Delivery item number.
         bill_vbeln   type vbeln_vf,   " Invoice number.
         bill_posnr   type posnr_vf,   " Invoice item number.
         bill_netwr   type netwr_fp,   " Invoice net value.
         statu        type stats,      " Document status.
         auart        type auart,      " order type
         vkorg        type vkorg,      " sales org.
         vtweg        type vtweg,      " distrbtn channel
         spart        type spart,      " division
         vkbur        like vbak-vkbur, " Sales Office DEVK906677
         konda        type konda,      " price group
         tdline       type tdline,     " text for customer account reference
         count        type I ,
         count1       type I,
       end of t_extract.

data :
      it_extract  type table of t_extract with header line,
      it_extract2 type table of t_extract with header line.

data: it_text type table of tline with header line.

data: w_index type sy-index,
      w_tdname type tdobname.

constants: c_minus1       type netwr_ap value '1.00-'.

*RANGES: r_auart FOR vbak-auart.
data: r_auart type range of t_extract-auart,
      r_auart_line like line of r_auart.

*----------------------------------------------------------------------*
* initialization
*----------------------------------------------------------------------*
initialization.

  gs_layout-colwidth_optimize = 'X'.
  tp_print-no_print_listinfos = 'X'.
  tp_print-no_coverpage = 'X'.
  perform set_fieldcat.
  perform alv_eventtab_build using:
**    Event name     Form to execute     Event internal table
   'TOP_OF_PAGE'  'TOP_OF_PAGE'       gt_events[].

* changed to exclude following order types
  r_auart_line-sign   = 'I'.
  r_auart_line-option = 'EQ'.
  r_auart_line-low    = 'ZEQ'.
  clear r_auart_line-high.
  append r_auart_line to r_auart.

* credit memo
  r_auart_line-sign   = 'I'.
  r_auart_line-option = 'EQ'.
  r_auart_line-low    = 'ZPRC'.
  clear r_auart_line-high.
  append r_auart_line to r_auart.
* debit memo
  r_auart_line-sign   = 'I'.
  r_auart_line-option = 'EQ'.
  r_auart_line-low    = 'ZPRD'.
  clear r_auart_line-high.
  append r_auart_line to r_auart.

  r_auart_line-sign   = 'I'.
  r_auart_line-option = 'EQ'.
  r_auart_line-low    = 'ZDR'.
  clear r_auart_line-high.
  append r_auart_line to r_auart.

* Industry sales order correction
  r_auart_line-sign   = 'I'.
  r_auart_line-option = 'EQ'.
  r_auart_line-low    = 'ZSOC'.
  clear r_auart_line-high.
  append r_auart_line to r_auart.
* oilfield FF correction
  r_auart_line-sign   = 'I'.
  r_auart_line-option = 'EQ'.
  r_auart_line-low    = 'ZOCF'.
  clear r_auart_line-high.
  append r_auart_line to r_auart.
* oilfield WP correction
  r_auart_line-sign   = 'I'.
  r_auart_line-option = 'EQ'.
  r_auart_line-low    = 'ZOCW'.
  clear r_auart_line-high.
  append r_auart_line to r_auart.


*----------------------------------------------------------------------*
* Dropdown list for all created ALV layouts, global or user-specific
*----------------------------------------------------------------------*
at selection-screen on value-request for pa_vari.
  perform alv_variant_f4 changing pa_vari.

*----------------------------------------------------------------------*
* Main BODY of processing logic
*----------------------------------------------------------------------*
start-of-selection.

  perform extract_data.

end-of-selection.

  if not it_extract[] is initial.

* Build headings for report.
    perform build_top_of_page  using gt_list_top_of_page[].
    perform call_alv.

  endif.
*&---------------------------------------------------------------------*
*&      Form  EXTRACT_KEY_DATA
*&---------------------------------------------------------------------*
* Retreive the data for the report.
*----------------------------------------------------------------------*
form extract_data.

  clear: it_extract.  refresh: it_extract.

* orders
  select vbak~vbeln vbak~auart vbak~augru vbak~vkorg vbak~vtweg
         vbak~spart vbak~vdatu vbak~kunnr vbak~vkbur
         vbap~posnr vbap~matnr vbap~vrkme vbap~netwr vbap~kwmeng
         vbap~werks vbap~lgort vbap~oid_extbol vbap~oid_ship
    into corresponding fields of table it_extract
    from vbak inner join vbap
         on  vbak~mandt = vbap~mandt
         and vbak~vbeln = vbap~vbeln where

    vbak~auart not in r_auart and
    vbak~vkorg eq p_vkorg and
    vbak~vtweg eq p_vtweg and
    vbak~spart eq p_spart and
    vbak~vkbur in s_vkbur and                               "DEVK906677
    vbak~vdatu in s_vdatu and
    vbak~kunnr in s_kunnr and
    vbap~matnr in s_matnr and
    vbap~werks in s_werks and
    vbap~lgort in s_lgort and
    vbap~oid_extbol in s_truck and
    vbap~oid_ship in s_shipto .


  if sy-subrc <> 0.
    message i000 with text-002 ' ' ' ' ' '.
  endif.

  sort it_extract by vbeln.

  check sy-subrc = 0.
  loop at it_extract.

* Retrieve and select by load confirmation contacts from header
    select single kunnr from vbpa into it_extract-load_contact
     where vbeln = it_extract-vbeln
       and posnr = '000000'
       and parvw = 'ZB'.

    if it_extract-load_contact in s_load.
      it_extract-load_name = zcl_kna1=>get_name1( it_extract-load_contact ).
    else.
      delete it_extract.
      continue.
    endif.

* Retrieve and select by sales order bill-to on header level
* as well as lookup bill-to customer name/description
    select single kunnr from vbpa into it_extract-billto
     where vbeln = it_extract-vbeln
       and posnr = '000000'
       and parvw = 'RE'.
    if sy-subrc = 0.
      if s_billto is initial.
        it_extract-billto_name = zcl_kna1=>get_name1( it_extract-billto ).
      else.
        if it_extract-billto in s_billto.
          it_extract-billto_name = zcl_kna1=>get_name1( it_extract-billto ).
        else.
          delete it_extract.
          continue.
        endif.
      endif.
    else.
* Newalta - always has bill-to, following will not occur but included
*           as good programming practice.
      it_extract-billto_name = it_extract-billto.
    endif.

* Retrieve and select by price group of sold-to
    select single konda from knvv into it_extract-konda
     where kunnr = it_extract-kunnr
       and vkorg = it_extract-vkorg
       and vtweg = it_extract-vtweg
       and spart = it_extract-spart.
    if sy-subrc = 0.
      if not ( it_extract-konda in s_konda ).
        delete it_extract.
        continue.
      endif.
    endif.

* Retrieve trucking company customer
    select single kunnr from vbpa into it_extract-truck where
      vbeln = it_extract-vbeln and
      posnr = '000000' and
      parvw = 'ZT'.
    if sy-subrc = 0.
      it_extract-truck_name = zcl_kna1=>get_name1( it_extract-truck ).
    endif.

* Retrieve sold-to name
    it_extract-soldto_name = zcl_kna1=>get_name1( it_extract-kunnr ).

* Retrieve ship-to name
    it_extract-shipto_name = zcl_kna1=>get_name1( it_extract-oid_ship ).


* lookup P.O.
    select single bstkd ihrez from vbkd into (it_extract-bstkd, it_extract-ihrez)
     where vbeln = it_extract-vbeln
       and posnr = '000000'.

* Retreive the material description.
    it_extract-maktx = zcl_material=>get_maktx( it_extract-matnr ).

* cosmetic change of material number, donot display leading zeros.
    shift it_extract-matnr left deleting leading '0'.

* translate unit of measure
    it_extract-mseh3 = it_extract-vrkme.
    select single mseh3 from t006a into it_extract-mseh3
     where spras = sy-langu
       and msehi = it_extract-vrkme.

    w_tdname = it_extract-vbeln.
* read customer account reference which is under 'text'
    call function 'READ_TEXT'
      exporting
        client                        = sy-mandt
        id                            = 'Z010'
        language                      = sy-langu
        name                          = w_tdname
        object                        = 'VBBK'
*   ARCHIVE_HANDLE                = 0
*   LOCAL_CAT                     = ' '
* IMPORTING
*   HEADER                        =
      tables
        lines                         = it_text
      exceptions
        id                            = 1
        language                      = 2
        name                          = 3
        not_found                     = 4
        object                        = 5
        reference_check               = 6
        wrong_access_to_archive       = 7
        others                        = 8.

    if sy-subrc = 0.
      read table it_text index 1.
      if sy-subrc = 0.
        it_extract-tdline = it_text-tdline.
      else.
        clear it_extract-tdline.
      endif.
    else.
      clear it_extract-tdline.

* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

    endif.

* Get the delivery item.
    call method zcl_vbap=>get_delivery
      EXPORTING
        itp_vbeln = it_extract-vbeln
        itp_posnr = it_extract-posnr
      IMPORTING
        etp_vbeln = it_extract-delivery
        etp_posnr = it_extract-posnr_vl.

    if it_extract-delivery is not initial.
      perform process_deliveries.
    else.
      perform invoice_process.
    endif.

    it_extract-count =   1.

    move-corresponding it_extract to it_extract2.
    append it_extract2.

    at new vbeln.
      count1 = count1 +  1.
    endat.
  endloop.

endform.                    " EXTRACT_DATA
*&---------------------------------------------------------------------*
*&      Form  SET_FIELDCAT
*&---------------------------------------------------------------------*
* Create the field catalogue.
*----------------------------------------------------------------------*
form set_fieldcat .

  clear w_field.
  clear t_fieldcat.  refresh t_fieldcat.

  w_field-col_pos = 1.
  w_field-fieldname = 'VBELN'.
  w_field-tabname = IT_EXTRACT2.
  w_field-seltext_l = 'Document.Nbr'.
  w_field-emphasize = 'X'.
  w_field-hotspot   = 'X'.
  append w_field to t_fieldcat.
  clear w_field.


  w_field-col_pos = 2 .
  w_field-fieldname = 'POSNR'.
  w_field-tabname = IT_EXTRACT2.
  w_field-seltext_l = 'Item'(023).
  append w_field to t_fieldcat.
  clear w_field.

  w_field-col_pos = 3 .
  w_field-fieldname = 'VDATU'.
  w_field-tabname = IT_EXTRACT2.
  w_field-seltext_l = 'Req. Del. Date'(005).
  append w_field to t_fieldcat.

  w_field-col_pos = 4 .
  w_field-fieldname = 'SOLDTO_NAME'.
  w_field-tabname = IT_EXTRACT2.
  w_field-seltext_l = 'Sold-to'(006).
  append w_field to t_fieldcat.

  w_field-col_pos = 5 .
  w_field-fieldname = 'MATNR'.
  w_field-tabname = IT_EXTRACT2.
  w_field-seltext_l = 'Material'(007).
  append w_field to t_fieldcat.

  w_field-col_pos = 6 .
  w_field-fieldname = 'KWMENG'.
  w_field-tabname = IT_EXTRACT2.
  w_field-seltext_l = 'Quantity'(008).
  append w_field to t_fieldcat.

  w_field-col_pos = 7.
  w_field-fieldname = 'MSEH3'.
  w_field-tabname = IT_EXTRACT2.
  w_field-seltext_l = 'UOM'(009).
  append w_field to t_fieldcat.

  w_field-col_pos = 8 .
  w_field-fieldname = 'BILL_VBELN'.
  w_field-tabname = IT_EXTRACT2.
  w_field-seltext_l = 'Invoice #'(010).
  w_field-emphasize = 'X'.
  w_field-hotspot   = 'X'.
  append w_field to t_fieldcat.
  clear w_field.

  w_field-col_pos = 9 .
  w_field-fieldname = 'BILL_NETWR'.
  w_field-tabname = IT_EXTRACT2.
  w_field-seltext_l = 'Values'(011).
  append w_field to t_fieldcat.

  w_field-col_pos = 10.
  w_field-fieldname = 'WERKS'.
  w_field-tabname = IT_EXTRACT2.
  w_field-seltext_l = 'Plant'(012).
  append w_field to t_fieldcat.

  w_field-col_pos = 11.
  w_field-fieldname = 'LGORT'.
  w_field-tabname = IT_EXTRACT2.
  w_field-seltext_l = 'Storage Loc'(013).
  append w_field to t_fieldcat.

  w_field-col_pos = 12 .
  w_field-fieldname = 'MAKTX'.
  w_field-tabname = IT_EXTRACT2.
  w_field-seltext_l = 'Description'(014).
  append w_field to t_fieldcat.

  w_field-col_pos = 13 .
  w_field-fieldname = 'SHIPTO_NAME'.
  w_field-tabname = IT_EXTRACT2.
  w_field-seltext_l = 'Ship-to'(015).
  append w_field to t_fieldcat.

  w_field-col_pos = 14 .
  w_field-fieldname = 'BILLTO_NAME'.
  w_field-tabname = IT_EXTRACT2.
  w_field-seltext_l = 'Bill-to'(016).
  append w_field to t_fieldcat.

  w_field-col_pos = 15 .
  w_field-fieldname = 'LOAD_NAME'.
  w_field-tabname = IT_EXTRACT2.
  w_field-seltext_l = 'Load Contact'(017).
  append w_field to t_fieldcat.

  w_field-col_pos = 16 .
  w_field-fieldname = 'TRUCK_NAME'.
  w_field-tabname = IT_EXTRACT2.
  w_field-seltext_l = 'Truck Comp.'(018).
  append w_field to t_fieldcat.

  w_field-col_pos = 17 .
  w_field-fieldname = 'BSTKD'.
  w_field-tabname = IT_EXTRACT2.
  w_field-seltext_l = 'P.O.'(019).
  append w_field to t_fieldcat.

  w_field-col_pos = 18 .
  w_field-fieldname = 'IHREZ'.
  w_field-tabname = IT_EXTRACT2.
  w_field-seltext_l = 'AFE Nbr'(020).
  append w_field to t_fieldcat.

  w_field-col_pos = 19 .
  w_field-fieldname = 'OID_EXTBOL'.
  w_field-tabname = IT_EXTRACT2.
  w_field-seltext_l = 'Truck Ticket'(021).
  append w_field to t_fieldcat.

  w_field-col_pos = 20.
  w_field-fieldname = 'STATU'.
  w_field-tabname = IT_EXTRACT2.
  w_field-seltext_l = 'Status'(022).
  append w_field to t_fieldcat.

  w_field-col_pos = 21.
  w_field-fieldname = 'AUGRU'.
  w_field-tabname = IT_EXTRACT2.
  w_field-seltext_l = 'Ord.Reason'(024).
  append w_field to t_fieldcat.

  w_field-col_pos = 22.
  w_field-fieldname = 'TDLINE'.
  w_field-tabname = IT_EXTRACT2.
  w_field-seltext_l = 'cstmr.acct.ref.'(027).
  append w_field to t_fieldcat.

  w_field-col_pos = 23 .                                    "DEVK906678
  w_field-fieldname = 'VKBUR'.
  w_field-tabname = IT_EXTRACT2.
  w_field-seltext_l = 'Sales Office'(037).
  append w_field to t_fieldcat.

  w_field-col_pos = 24.
  w_field-fieldname = 'KUNNR'.
  w_field-tabname = IT_EXTRACT2.
  w_field-seltext_l = 'Sold-to Customer'(038).
  append w_field to t_fieldcat.

  w_field-col_pos = 25.
  w_field-fieldname = 'OID_SHIP'.
  w_field-tabname = IT_EXTRACT2.
  w_field-seltext_l = 'Ship-to Customer'(039).
  append w_field to t_fieldcat.

  w_field-col_pos = 26.
  w_field-fieldname = 'BILLTO'.
  w_field-tabname = IT_EXTRACT2.
  w_field-seltext_l = 'Bill-to Customer'(040).
  append w_field to t_fieldcat.

  w_field-col_pos = 27.
  w_field-fieldname = 'COUNT'.
  w_field-tabname = IT_EXTRACT2.
  w_field-seltext_l = 'Count of line items'(042).
  w_field-do_sum = 'X'.
  append w_field to t_fieldcat.



endform.                    " SET_FIELDCAT
*&---------------------------------------------------------------------*
*&      Form  CALL_ALV
*&---------------------------------------------------------------------*
* Call the ALV Grid function.
*----------------------------------------------------------------------*
form call_alv .

  sort it_extract by lgort vbeln.

* repid is necessary since the ALV F.M. does not work properly with
* sy-repid.
  repid = sy-repid.
  alv_variant-variant  = pa_vari.
  alv_variant-report   = sy-repid.
  alv_variant-username = sy-uname.

  call function 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      i_callback_program      = repid
      i_callback_user_command = 'USER_COMMAND'
      is_layout               = gs_layout
      it_fieldcat             = t_fieldcat[]
      it_sort                 = gt_sort[]
      i_default               = 'X'
      i_save                  = 'A'
      is_variant              = alv_variant
      it_events               = gt_events[]
      is_print                = tp_print
    TABLES
      t_outtab                = IT_EXTRACT2
    EXCEPTIONS
      program_error           = 1
      others                  = 2.

  if sy-subrc ne 0.
    message w000 with text-004 ' ' ' ' ' '.
  endif.

endform.                    " CALL_ALV
*&---------------------------------------------------------------------*
*&      Form  build_top_of_page
*&---------------------------------------------------------------------*
* Build heading for report.                                            *
*----------------------------------------------------------------------*
*      -->P_GT_LIST_TOP_OF_PAGE[]  Header stuff for report
*----------------------------------------------------------------------*
form build_top_of_page using   e04_lt_top_of_page type slis_t_listheader.

  data: ls_line type slis_listheader.  "Header table for top of page

* construct 'top of page' info. to display. In this case, one line.
  data: w_selections(40) type c,
        w_date_from(10) type c,
        w_date_to(10) type c.

  write: s_vdatu-low to w_date_from dd/mm/yyyy.
  if s_vdatu-high is not initial.
    write: s_vdatu-high to w_date_to dd/mm/yyyy.
    clear w_selections.
    concatenate 'Del.Req.Date: ' w_date_from 'To' w_date_to
    into w_selections separated by space.
    clear ls_line.
    ls_line-typ  = 'H'.
    ls_line-info = w_selections.
    append ls_line to e04_lt_top_of_page.

    gs_list_top_of_page-typ = 'S'.
    gs_list_top_of_page-info = ' Total number of Sales Documents :'.
    append gs_list_top_of_page to gt_list_top_of_page.

    gs_list_top_of_page-typ  = 'S'.
    gs_list_top_of_page-info =  count1 .
    append gs_list_top_of_page to gt_list_top_of_page.

  else.
    clear w_date_to.
    concatenate 'Del.Req.Date: ' w_date_from
         into w_selections separated by space.
    clear ls_line.
    ls_line-typ  = 'H'.
    ls_line-info = w_selections.
    append ls_line to e04_lt_top_of_page.
  endif.

endform.                    " build_top_of_page
*&---------------------------------------------------------------------*
*&      Form  alv_eventtab_build
*&---------------------------------------------------------------------*
*     Pass list of events to be triggered by the ALV function module
*----------------------------------------------------------------------*
form alv_eventtab_build using  u_name  type slis_alv_event-name
                               u_form  type slis_alv_event-form
                               alv_lt_events  type slis_t_event.
  data: ls_event type slis_alv_event.   " structure for event handling

  ls_event-name = u_name.
  ls_event-form = u_form.
  append ls_event to alv_lt_events.

endform.                    " alv_eventtab_build
*---------------------------------------------------------------------*
*       FORM TOP_OF_PAGE                                              *
*---------------------------------------------------------------------*
form top_of_page.

  call function 'REUSE_ALV_COMMENTARY_WRITE'
    EXPORTING
      i_logo             = 'LOGO'
      it_list_commentary = gt_list_top_of_page.

endform.                    " TOP_OF_PAGE
*&---------------------------------------------------------------------*
*&      Form  process_deliveries
*&---------------------------------------------------------------------*
* Process the delivery related records.
*----------------------------------------------------------------------*
form process_deliveries .

  data:
    ltp_date  type wadat_ist, " Goods movement date.
    ltp_vbtyp type vbtyp_n,
    ltp_mtart type mtart, " Material type.
    w_lfimg   type lfimg, " Actual quantity delivered (in sales units).
    w_vrkme   type vrkme. " Sales unit of measure.

* Read delivery quantity and uom.
  select single lfimg vrkme into (w_lfimg, w_vrkme)
    from lips where
    vbeln = it_extract-delivery and
    posnr = it_extract-posnr_vl.
* these fields have values from vbap. override with lips values
  if sy-subrc = 0.
    it_extract-kwmeng = w_lfimg.
    it_extract-vrkme  = w_vrkme.
* translate unit of measure
    it_extract-mseh3 = it_extract-vrkme.
    select single mseh3 from t006a into it_extract-mseh3
     where spras = sy-langu
       and msehi = it_extract-vrkme.
  endif.

* Determine STATUS by reading 'service confirmation', R (goods movemt)
* it is possible to have multiple 'service confirmation' records for
* one item. ie. delivery 80010390 in PRD.
* As long as there is at least one 'service confirmation' record,
* status is considered 'complete'.
* Validate the created on date of the goods movement or service confirmation.
  ltp_mtart = zcl_material=>get_mtart( it_extract-matnr ).
*  ltp_date = zcl_lips=>get_goods_movement_date( itp_vbeln = it_extract-delivery
*                           itp_posnr = it_extract-posnr_vl itp_mtart = ltp_mtart ).
  call method zcl_lips=>get_goods_mvt_info
    EXPORTING
      itp_vbeln = it_extract-delivery
      itp_posnr = it_extract-posnr_vl
      itp_mtart = ltp_mtart
    IMPORTING
      rtp_date  = ltp_date
      rtp_vbtyp = ltp_vbtyp.
* 'h' is cancel goods issue
  if ltp_vbtyp = 'h'.
    it_extract-statu = 'Incomplete'(025).
  else.
    if ltp_date is not initial.
      it_extract-statu = 'COMPLETE'(026).
    endif.
  endif.

* Retrieve the invoice/billing document item.
  call method zcl_lips=>get_invoice
    EXPORTING
      itp_vbeln = it_extract-delivery
      itp_posnr = it_extract-posnr_vl
    IMPORTING
      rtp_vbeln = it_extract-bill_vbeln
      rtp_posnr = it_extract-bill_posnr.

  if it_extract-bill_vbeln is not initial.
* retrieve net value from the invoice.
    clear it_extract-bill_netwr.
    select single netwr into it_extract-bill_netwr from vbrp
     where vbeln = it_extract-bill_vbeln
       and posnr = it_extract-bill_posnr.
  else.
    it_extract-bill_netwr = it_extract-netwr. " Use order net value.
  endif.
endform.                    " process_deliveries
*&---------------------------------------------------------------------*
*&      Form  user_command
*&---------------------------------------------------------------------*
* Process the user command.
*----------------------------------------------------------------------*
*      -->R_UCOMM      User command
*      -->RS_SELFIELD  Field selected
*----------------------------------------------------------------------*
form user_command using r_ucomm     like sy-ucomm
                        rs_selfield type slis_selfield.

  data: ltp_vbeln type vbeln.  " Sales document number.

  case  r_ucomm.
    when '&IC1'.
      if ( rs_selfield-fieldname = 'VBELN'
        or rs_selfield-fieldname = 'BILL_VBELN' )
       and rs_selfield-value is not initial.        " Display sales document.
        ltp_vbeln = rs_selfield-value.
        zcl_sales_doc=>display( ltp_vbeln ).
      endif.
  endcase.
endform.                    "user_command
*&---------------------------------------------------------------------*
*&      Form  invoice_process
*&---------------------------------------------------------------------*
* Process for orders without deliveries.                               *
*----------------------------------------------------------------------*
form invoice_process .

* Translate unit of measure.
  select single mseh3 from t006a into it_extract-mseh3
   where spras = sy-langu
     and msehi = it_extract-vrkme.

* Retrieve the invoice/billing document item.
  call method zcl_vbap=>get_invoice
    EXPORTING
      itp_vbeln = it_extract-vbeln
      itp_posnr = it_extract-posnr
    IMPORTING
      rtp_vbeln = it_extract-bill_vbeln
      rtp_posnr = it_extract-bill_posnr.

  if it_extract-bill_vbeln is not initial.
* retrieve net value from the invoice.
    clear it_extract-bill_netwr.
    select single netwr into it_extract-bill_netwr from vbrp
     where vbeln = it_extract-bill_vbeln
       and posnr = it_extract-bill_posnr.

  else. " If no Invoice, then status becomes 'incomplete'.
    it_extract-bill_netwr = it_extract-netwr. " Use order net value.
    it_extract-statu = 'Incomplete'(025).
  endif.

endform.                    " invoice_process
*&---------------------------------------------------------------------*
*&      Form  alv_variant_f4
*&---------------------------------------------------------------------*
* Get the display variant.
*----------------------------------------------------------------------*
*      <--CTP_VARI  Variant name
*----------------------------------------------------------------------*
form alv_variant_f4 changing ctp_vari type slis_vari.

  alv_variant-report   = sy-repid.             " Report ID
  alv_variant-username = sy-uname.             " User ID

  call function 'REUSE_ALV_VARIANT_F4'
    EXPORTING
      is_variant = alv_variant
      i_save     = 'A'
    IMPORTING
      es_variant = alv_variant
    EXCEPTIONS
      others     = 1.

  if sy-subrc = 0.
    ctp_vari = alv_variant-variant.
  endif.

endform.                    " alv_variant_f4

0 Kudos
122

Any suggestions please.

Regards

Aarav

0 Kudos
122

HI!

I believe I can use either of teh following but not pretty sure how to use it.

SLIS_EV_LIST_MODIFY or SLIS_EV_END_OF_LIST to see what remains in the list after filter but not sure how to use it.

If someone could be kind enough to tell me would be highly appreciated please.

Regards

Aarav

0 Kudos
122

any help on this please.

Thanks

Aarav

Former Member
0 Kudos
122

.