Selecting from LIKP, LIPS & VBUK

Will FOR ALL ENTRIES make the below SELECT faster?
  SELECT kvbeln  sposnr  kerdat klfart k~cmfre AS erdat_d02
           khandle ktsegfl k~sdabw
           slfimg  svrkme  svgbel svgpos s~komkz
           ucmgst  svolum  svoleh ktrspg kernam  ktddat
      FROM likp AS k INNER JOIN lips AS s
                     ON kvbeln = svbeln
                     INNER JOIN vbuk AS u
                     ON kvbeln = uvbeln
      INTO TABLE gt_lips
     WHERE k~vbeln IN s_vbelnd
       AND k~lfart IN s_lfart
       AND k~erdat IN s_edtdo
       AND k~vkorg IN s_vkorg
       AND s~vtweg IN s_vtweg
       AND k~kunnr IN s_kunnr
       AND s~kvgr1 IN s_kvgr1
       AND s~vkbur IN s_vkbur
       AND s~vkgrp IN s_vkgrp
       AND s~matnr IN s_matnr
       AND s~werks IN s_werks.
Regards,
KS
Moderator message: please read the sticky threads in this forum and search for previous discussions of the same issue.
Edited by: Thomas Zloch on Jan 9, 2012 2:34 PM

Hi,
Use FOR ALL ENTRIES...
Example..
SELECT VBELN POSNR VGBEL
             FROM LIPS
             INTO TABLE T_LIPS
            WHERE ...
IF NOT T_LIPS IS INITIAL.
  SELECT VBELN VSBED AUART INTO TABLE T_VBAK
                FROM VBAK
                FOR ALL ENTRIES IN T_LIPS
                WHERE VBELN = T_LIPS-VGBEL.
in the internal table T_VBAK..You will have all the order types and VSBED for the corresponding orders..
ENDIF.
Thanks,
Naren

Similar Messages

  • Performance on Select's LIKP, LIPS, VBUK, VBUP..ect..

    Hello Abap guru's...
    I have a performance issue on this select, Please give me good input's!
    SELECT VBELN LFART VKORG LFDAT INCO2 ROUTE    FAKSK KUNNR KUNAG
            WAERK BLDAT VSART ZZINS_FACE ZZDELY_VAL ZZLSCH FROM LIKP
            INTO TABLE ISO_LIKP
            WHERE VBELN IN S_VBELN AND
                  VKORG IN S_VKORG AND
                  LFART IN S_LFART AND   "('ZLF','ZNL','ZRT') AND
                  VSART IN S_VSART AND
                  ROUTE IN S_ROUTE AND
                  KUNNR IN S_KUNNR AND
                  KUNAG IN S_KUNAG.
    SELECT VBELN POSNR ERNAM ERZET ERDAT MATNR MATKL WERKS LGORT CHARG
           LFIMG VBELV POSNV VRKME ARKTX VGBEL VGPOS VTWEG SPART SOBKZ FROM LIPS
           INTO TABLE IST_LIPS
           FOR ALL ENTRIES IN ISO_VBUP
           WHERE VBELN = ISO_VBUP-VBELN AND
                 POSNR = ISO_VBUP-POSNR AND
                 ERNAM IN S_ERNAM AND
                 ERDAT IN S_ERDAT AND
                 MATNR IN S_MATNR AND
                 WERKS IN S_WERKS AND
                 CHARG IN S_CHARG AND
                 VGBEL IN S_VGBEL AND
                 VGPOS IN S_VGPOS AND
                 VTWEG IN S_VTWEG AND
                 SPART IN S_SPART.
    SELECT VBELN LFSTK FKSTK FROM VBUK
               INTO TABLE ISO_VBUK
               FOR ALL ENTRIES IN ISO_LIKP
               WHERE VBELN = ISO_LIKP-VBELN AND  " FKSTK IN S_FKSTK
                     WBSTK <> 'C'.
    SELECT VBELN POSNR LFSTA WBSTA FKSTA KOSTA FROM VBUP
           INTO TABLE ISO_VBUP
           FOR ALL ENTRIES IN ISO_VBUK
           WHERE VBELN = ISO_VBUK-VBELN AND " POSNR = IST_LIPS-POSNR AND
                 LFSTA IN S_LFSTA AND FKSTA IN S_FKSTA AND
                 WBSTA <> 'C'.
    SELECT OBJEK ATINN ATWRT ATFLV FROM AUSP
           INTO TABLE IST_AUSP
           FOR ALL ENTRIES IN ISO_MCH1
           WHERE OBJEK = ISO_MCH1-CUOBJ_BM AND
                 ATINN IN (L_A_NET_WT,L_A_PACK_WT,L_A_PRODUCT_FORM,L_A_SR_GRADE,L_A_THICK_MM,
                           L_A_WIDTH_MM,L_A_LENGTH_MM,L_A_COATING_GSM,L_A_LOCATION).
    <removed_by_moderator>
    Regards,
    Raju
    Edited by: Julius Bussche on Sep 1, 2008 5:50 PM

    Hi
    Check whether the table is empty or not first then only use FOR ALL ENTRIES...
    In worst case if table is empty then it will fetch whole table data and can make worst performance and data problems so be careful about checking whether table is empty or now while u r using FOR ALL ENTRIES...
    Check out below code...
    SELECT VBELN LFART VKORG LFDAT INCO2 ROUTE FAKSK KUNNR KUNAG
    WAERK BLDAT VSART ZZINS_FACE ZZDELY_VAL ZZLSCH FROM LIKP
           INTO TABLE ISO_LIKP
           WHERE VBELN IN S_VBELN AND
           VKORG IN S_VKORG AND
           LFART IN S_LFART AND "('ZLF','ZNL','ZRT') AND
           VSART IN S_VSART AND
           ROUTE IN S_ROUTE AND
           KUNNR IN S_KUNNR AND
           KUNAG IN S_KUNAG.
    IF ISO_VBUP[] IS NOT INITIAL.
      SELECT VBELN POSNR ERNAM ERZET ERDAT MATNR MATKL WERKS LGORT CHARG
      LFIMG VBELV POSNV VRKME ARKTX VGBEL VGPOS VTWEG SPART SOBKZ FROM LIPS
            INTO TABLE IST_LIPS
            FOR ALL ENTRIES IN ISO_VBUP
            WHERE VBELN = ISO_VBUP-VBELN AND
            POSNR = ISO_VBUP-POSNR AND
            ERNAM IN S_ERNAM AND
            ERDAT IN S_ERDAT AND
            MATNR IN S_MATNR AND
            WERKS IN S_WERKS AND
            CHARG IN S_CHARG AND
            VGBEL IN S_VGBEL AND
            VGPOS IN S_VGPOS AND
            VTWEG IN S_VTWEG AND
            SPART IN S_SPART.
    ENDIF.
    IF ISO_LIKP[] IS NOT INITIAL.
      SELECT VBELN LFSTK FKSTK FROM VBUK
            INTO TABLE ISO_VBUK
            FOR ALL ENTRIES IN ISO_LIKP
            WHERE VBELN = ISO_LIKP-VBELN AND " FKSTK IN S_FKSTK
            WBSTK 'C'.
    ENDIF.
    IF ISO_VBUK[] IS NOT INITIAL.
      SELECT VBELN POSNR LFSTA WBSTA FKSTA KOSTA FROM VBUP
            INTO TABLE ISO_VBUP
            FOR ALL ENTRIES IN ISO_VBUK
            WHERE VBELN = ISO_VBUK-VBELN AND " POSNR = IST_LIPS-POSNR AND
            LFSTA IN S_LFSTA AND FKSTA IN S_FKSTA AND
            WBSTA 'C'.
    ENDIF.
    IF ISO_MCH1[] IS NOT INITIAL.
      SELECT OBJEK ATINN ATWRT ATFLV FROM AUSP
           INTO TABLE IST_AUSP
           FOR ALL ENTRIES IN ISO_MCH1
           WHERE OBJEK = ISO_MCH1-CUOBJ_BM AND
           ATINN IN (L_A_NET_WT,L_A_PACK_WT,L_A_PRODUCT_FORM,L_A_SR_GRADE,L_A_THICK_MM,
           L_A_WIDTH_MM,L_A_LENGTH_MM,L_A_COATING_GSM,L_A_LOCATION).
    ENDIF.
    Hope it will solve your problem..
    Thanks & Regards
    ilesh 24x7

  • How to know if the goods issue is posted from LIKP / LIPS

    for a delivery number in LIKP or LIPs, how will I know if the goods issue is posted? Is there any field for this?
    Please give your input.
    Thanks,
    Krishen

    Hi Kirsh,
       U can go and check the sales order status tables.
      VBUK-Header informations
      VBUP-item Informations
    Dont forget to give an point.
    Regards
    Justin

  • BAPI_OUTB_DELIVERY_CHANGE to update Z fields from LIKP

    Hello,
    Im using BAPI_OUTB_DELIVERY_CHANGE bapi to change some fields from LIKP/LIPS table. Now, i have to update also some Z fields from this tables.
    I see that the bapi has Extension1 and Extension2 tables but i don't know how to use them. I have been looking for the forum and i have found you have to fill some structures with the Z fields, but i don't find them for deliveries. Also, i have read that you have to do it through an user exit, but i don't know what user exit and what relation it has with Extension tables.
    Anybody knows how to do it?
    Thx,
    Manel

    Hi,
    For changing the delivery quantity through BAPI_OUTB_DELIVERY_CHANGE you need to pass the following data :
    HEADER_DATA : Delivery no.
    DELIVERY : Delivery no.
    ITEM_DATA : Delivery no,
    item no,
    DLV_QTY quantity(changed),
    FACT_UNIT_NOM ( default to value '1')
    FACT_UNIT_DENOM ( default to value '1')
    ITEM_CONTROL : Delivey no,
    item no,
    CHG_DELQTY ( value "X")
    The import parameter Extension1 and  Extension2 are available for customer enhancements. Extension1 is an unstructured data container that is available for any use.
    Extension2 is a structured data container available for any use.
    For more information, see the function module documentation for BAPI_OUTB_DELIVERY_CHANGE.

  • Creating select option to get wadat from likp to use in the query

    Hi People,
    Urgent Help. I have to make a select-option in my selection screen for date to use the field wadat from likp. Now the after the following code what should I be doing:
    Selection-Screen BEGIN OF BLOCK b with frame Title t1.
    PARAMETERS:
    SELECT-OPTIONS: p_date for likp-wadat.
    SELECTION-SCREEN END OF BLOCK b.
    INITIALIZATION.
    AT SELECTION-SCREEN.
    START-OF-SELECTION.
    <b>SELECT avbeln alfdat awadat akunnr bwerks bspart INTO
    CORRESPONDING FIELDS OF TABLE typ_tab FROM likp as a INNER JOIN lips as b on avbeln = bvbeln where wadat IN p_dat.</b>
    On the selection screen there will be two boxes for the from -to date...How does it work? If I have to make it only for one date or for range of dates. Please help asap. I have to use this value in a report to pull out delivery document details from likp and lips through the query mentioned above.
    Thanks in advance.
    AM

    Hey Nishanth,
    Thanks for the reply. I made the changes as suggested but when I am entering a date which does not exist in the table, the screen does nothing. Can you suggest something for that.
    Here is my code:
    tables: likp.
    SELECTION-SCREEN BEGIN OF BLOCK b_0 WITH FRAME TITLE date.
    SELECT-OPTIONS p_date FOR likp-wadat NO-EXTENSION.
    PARAMETERS p_glAccNo(80) TYPE C.
    SELECTION-SCREEN END OF BLOCK b_0.
    DATA: BEGIN OF typ_likp occurs 0,
                     vbeln LIKE likp-vbeln, " Bill Of Lading Number
                     lfdat LIKE likp-lfdat,
                     wadat LIKE likp-wadat,
          END OF typ_likp.
    AT SELECTION-SCREEN ON p_date.
    if p_date[] is NOT INITIAL.
    SELECT vbeln wadat INTO TABLE typ_likp FROM LIKP WHERE wadat IN p_date.
    IF sy-subrc <> 0.
    WRITE: / 'No Values for this date.'.
    Exit.
    ENDIF.
    ELSE.
    WRITE: 'NO ENTRIES HAVE BEEN MADE'.
    ENDIF.
    START-OF-SELECTION.
    SELECT vbeln lfdat wadat INTO TABLE typ_likp fROM LIKP where
    wadat in p_date.
    LOOP AT typ_likp.
    Write: / typ_likp-vbeln, typ_likp-lfdat, typ_likp-wadat,
           / 'I am here.'.
    ENDLOOP.
    Please reply soon. I need to finish this at the earliest.
    Thanks for your help, regards,
    AM

  • Selection from different tables

    Hello Everyone,
    I have a situation where I have 15 fields in the selection screen.
    The selection is dependent on three or more tables.
    First I have selected from two tables but if the user enters values in the selection screen then how to make the selection.
    Tables dont have common fields between them. LIKP, LIPS, VTTK, VBUK and VEKP are the tables.
    Can you guys guide me.
    Thank you.

    Hi Vinod,
    First I have selected from two tables but if the user enters values in the selection screen then how to make the selection.
    Your query is not so clear. When are you fetching the data from two table whether before selection screen input (Initialization event) or after selection screen?
    Can you please elaborate your query and better if you post your Selection Screen screen-shot.
    Regards,
    VIjay

  • Joining VBRK, VBRP, VBAK, VBAP, LIKP, LIPS

    Hello,
    I just wanted to ask how to join the above subject in one table? Or it isnt possible?
    I read that joining 3 or more tables would degrade the performance But i need to get the data in those tables. Any help would greatly appreciated. Thanks!

    Hi,
    Please take a look at my program below. There you can see how to join the tables that you mentioned. Hope it helps...
    P.S. Please award points if it helps...
    *=====================================================================
    * Program Name : ZSD_ORDERSTAGE_V2
    * Author       : Aris Hidalgo
    * Date Created : June 5, 2007
    * Description  : Display sales orders status for a given customer
    *=====================================================================
    REPORT  zsd_orderstage_v2
            NO STANDARD PAGE HEADING
            MESSAGE-ID zsd.
    * Data Dictionary Table/s                      *
    TABLES: vbak,
            vttp.
    CLASS lcl_event_receiver DEFINITION DEFERRED.
    * Global Data/s                                *
    DATA: gt_fieldcat         TYPE lvc_t_fcat,
          ok_code             TYPE syst-ucomm,
          save_ok             TYPE syst-ucomm,
          g_repid             TYPE syst-repid,
          gs_layout           TYPE lvc_s_layo,
          gv_container        TYPE scrfname VALUE 'CUSTOM_CONTROL',
          grid1               TYPE REF TO cl_gui_alv_grid,
          custom_container    TYPE REF TO cl_gui_custom_container,
          grid2               TYPE REF TO cl_gui_alv_grid,
          dialogbox_container TYPE REF TO cl_gui_dialogbox_container,
          event_receiver      TYPE REF TO lcl_event_receiver.
    * Global Structure/s                           *
    TYPES: BEGIN OF t_output,
            creation_date  TYPE vbak-erdat,
            creation_time  TYPE vbak-erzet,
            sales_doc      TYPE vbak-vbeln,
            cust_code      TYPE vbak-kunnr,
            cust_desc      TYPE kna1-name1,
            ship_to_code   TYPE likp-kunnr,
            ship_to_desc   TYPE kna1-name1,
            po_num         TYPE vbak-bstnk,
            doc_type       TYPE vbak-auart,
            req_dlv_date   TYPE vbak-vdatu,
            so_status(02)  TYPE c,
            created_by     TYPE vbak-ernam,
            del_doc        TYPE likp-vbeln,
            bill_doc       TYPE vbrk-vbeln,
           END OF t_output.
    TYPES: BEGIN OF t_column,
            fname TYPE lvc_fname,
            level TYPE lvc_level,
           END OF t_column.
    * Global Internal Table/s                      *
    DATA: gt_output TYPE STANDARD TABLE OF t_output,
          gt_column TYPE STANDARD TABLE OF t_column.
    * Global Work Area/s                           *
    DATA: wa_output LIKE LINE OF gt_output.
    * SELECTION-SCREEN                             *
    SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
    PARAMETERS:     p_kunnr TYPE vbak-kunnr OBLIGATORY.
    SELECT-OPTIONS: s_vkgrp FOR vbak-vkgrp,
                    s_auart FOR vbak-auart,
                    s_erdat FOR vbak-erdat  OBLIGATORY,
                    s_ernam FOR vbak-ernam.
    SELECTION-SCREEN END OF BLOCK b1.
    */ CLASS DEFINITION/S
    CLASS lcl_process_data DEFINITION DEFERRED.
    *       CLASS lcl_get_data DEFINITION
    CLASS lcl_get_data DEFINITION.
      PUBLIC SECTION.
        TYPES: BEGIN OF t_vbak,
                vbeln TYPE vbak-vbeln,
                erdat TYPE vbak-erdat,
                erzet TYPE vbak-erzet,
                ernam TYPE vbak-ernam,
                auart TYPE vbak-auart,
                vdatu TYPE vbak-vdatu,
                bstnk TYPE vbak-bstnk,
                kunnr TYPE vbak-kunnr,
               END OF t_vbak.
        TYPES: BEGIN OF t_kna1,
                kunnr TYPE kna1-kunnr,
                name1 TYPE kna1-name1,
               END OF t_kna1.
        TYPES: BEGIN OF t_delivery,
                vgbel TYPE lips-vgbel,
                vbeln TYPE likp-vbeln,
                kunnr TYPE likp-kunnr,
               END OF t_delivery.
        TYPES: BEGIN OF t_billing,
                vbelv   TYPE vbfa-vbelv,
                vbtyp_n TYPE vbfa-vbtyp_n,
                vbeln   TYPE vbfa-vbeln,
               END OF t_billing.
        TYPES: BEGIN OF t_status,
                vbeln TYPE vbuk-vbeln,      "Sales and Distribution Document Number
                cmgst TYPE vbuk-cmgst,      "Overall status of credit checks
                lfstk TYPE vbuk-lfstk,      "Delivery status
                kostk TYPE vbuk-kostk,      "Overall picking / putaway status
                fkstk TYPE vbuk-fkstk,      "Billing status
                trsta TYPE vbuk-trsta,      "Transportation planning status
               END OF t_status.
        TYPES: BEGIN OF t_status_do,
                vbeln TYPE vbuk-vbeln,      "Delivery Document Number
                kostk TYPE vbuk-kostk,      "Overall picking / putaway status
                fkstk TYPE vbuk-fkstk,      "Billing status
                trsta TYPE vbuk-trsta,      "Transportation planning status
               END OF t_status_do.
        METHODS: get_sales_docs    FINAL,
                 get_customer_desc FINAL,
                 get_ship_to_desc  FINAL,
                 get_delivery_docs FINAL,
                 get_billing_docs  FINAL,
                 get_so_status     FINAL.
      PROTECTED SECTION.
        CLASS-DATA: gt_vbak            TYPE STANDARD TABLE OF t_vbak,
                    gt_kna1            TYPE HASHED   TABLE OF t_kna1
                                       WITH UNIQUE KEY kunnr,
                    gt_kna2            TYPE HASHED   TABLE OF t_kna1
                                       WITH UNIQUE KEY kunnr,
                    gt_delivery        TYPE STANDARD TABLE OF t_delivery,
                    gt_billing         TYPE STANDARD TABLE OF t_billing,
                    gt_status          TYPE STANDARD TABLE OF t_status,
                    gt_status_do       TYPE STANDARD TABLE OF t_status_do,
                    o_lcl_process_data TYPE REF TO lcl_process_data.
      PRIVATE SECTION.
        CLASS-DATA: wa_status LIKE LINE OF gt_status.
    ENDCLASS.                    "lcl_get_data DEFINITION
    *       CLASS lcl_process_data DEFINITION
    CLASS lcl_process_data DEFINITION INHERITING FROM lcl_get_data.
      PUBLIC SECTION.
        METHODS: combine_data FINAL
                   IMPORTING
                     im_sales_tab LIKE gt_vbak
                     im_cust_tab  LIKE gt_kna1
                     im_desc_tab  LIKE gt_kna2     OPTIONAL
                     im_dlv_tab   LIKE gt_delivery OPTIONAL
                     im_bill_tab  LIKE gt_billing  OPTIONAL
                   EXPORTING
                     ex_output    LIKE gt_output,
                 get_status
                   IMPORTING
                     im_so        TYPE vbak-vbeln
                     im_do        TYPE likp-vbeln   OPTIONAL
                   EXPORTING
                     ex_status    TYPE crmchar2.
      PRIVATE SECTION.
        DATA: lv_vbelv    TYPE vbfa-vbelv,
              lv_bill_doc TYPE vbfa-vbeln,
              lv_kunnr    TYPE vbpa-kunnr,
              lv_name1    TYPE kna1-name1,
              lv_parvw    TYPE vbpa-parvw,
              lv_flag1    TYPE flag.
    ENDCLASS.                    "lcl_process_data DEFINITION
    *       CLASS lcl_alv_routines DEFINITION
    CLASS lcl_alv_routines DEFINITION INHERITING FROM lcl_process_data.
      PUBLIC SECTION.
        TYPES: BEGIN OF t_status_history,
                 cr_hold(50)        TYPE c,
                 cr_rel_on(10)      TYPE c,
                 cr_rel_at(10)      TYPE c,
                 do_created_on(10)  TYPE c,
                 do_created_time(8) TYPE c,
                 picked_on(10)      TYPE c,
                 picked_time(8)     TYPE c,
                 inv_created_on(10) TYPE c,
                 dispatched_on(10)  TYPE c,
                 dispatched_at(10)  TYPE c,
               END OF t_status_history.
        TYPES: BEGIN OF t_confirmation,
                 podat TYPE likp-podat,
                 potim TYPE likp-potim,
               END OF t_confirmation.
        CLASS-DATA: wa_fieldcat       LIKE LINE OF gt_fieldcat,
                    gt_status_history TYPE STANDARD TABLE OF t_status_history,
                    gt_confirmation   TYPE STANDARD TABLE OF t_confirmation,
                    wa_status_history LIKE LINE OF gt_status_history,
                    wa_confirmation   LIKE LINE OF gt_confirmation,
                    wa_column         LIKE LINE OF gt_column,
                    gt_domain_val     TYPE STANDARD TABLE OF dd07v,
                    wa_domain_val     LIKE LINE OF gt_domain_val.
        METHODS: build_fieldcat FINAL,
                 popup_routines
                   IMPORTING
                     im_column LIKE gt_column
                     im_output LIKE wa_output
                   EXPORTING
                     ex_status_history LIKE gt_status_history
                     ex_confirmation   LIKE gt_confirmation,
                 get_domain_values FINAL
                   IMPORTING
                     value(im_tabname)    TYPE ddobjname
                     value(im_fieldname)  TYPE dfies-fieldname
                   EXPORTING
                     value(ex_values_tab) LIKE gt_domain_val.
      PRIVATE SECTION.
        CLASS-DATA: lt_dfies_tab TYPE STANDARD TABLE OF dfies,
                    wa_dfies_tab LIKE LINE OF lt_dfies_tab.
    ENDCLASS.                    "lcl_alv_routines DEFINITION
    *       CLASS lcl_event_receiver DEFINITION
    CLASS lcl_event_receiver DEFINITION INHERITING FROM lcl_alv_routines FINAL.
      PUBLIC SECTION.
        METHODS: handle_double_click
                   FOR EVENT double_click OF cl_gui_alv_grid
                     IMPORTING
                       e_row
                       e_column,
                 handle_close
                   FOR EVENT close OF cl_gui_dialogbox_container
                     IMPORTING
                       sender,
                 handle_hotspot_click
                   FOR EVENT hotspot_click OF cl_gui_alv_grid
                     IMPORTING
                       e_row_id
                       e_column_id
                       es_row_no,
                 create_detail_list
                   IMPORTING
                     im_column         LIKE gt_column
                     im_status         LIKE gt_status_history
                     im_confirmation   LIKE gt_confirmation.
      PRIVATE SECTION.
        CLASS-DATA: o_lcl_alv_routines TYPE REF TO lcl_alv_routines.
    ENDCLASS.                    "lcl_event_receiver DEFINITION
    */ CLASS IMPLEMENTATION/S
    *       CLASS lcl_get_data IMPLEMENTATION
    CLASS lcl_get_data IMPLEMENTATION.
    * METHOD get_sales_docs
      METHOD get_sales_docs.
        SELECT vbeln erdat erzet ernam auart vdatu bstnk kunnr
          FROM vbak
          INTO TABLE gt_vbak
         WHERE erdat IN s_erdat
           AND ernam IN s_ernam
           AND auart IN s_auart
           AND vkgrp IN s_vkgrp
           AND kunnr =  p_kunnr.
        IF NOT gt_vbak[] IS INITIAL.
          CALL METHOD: me->get_customer_desc,
                           get_delivery_docs,
                           get_so_status,
                           get_billing_docs.
          CREATE OBJECT o_lcl_process_data.
          CALL METHOD o_lcl_process_data->combine_data
            EXPORTING
              im_sales_tab = gt_vbak
              im_cust_tab  = gt_kna1
              im_desc_tab  = gt_kna2
              im_dlv_tab   = gt_delivery
              im_bill_tab  = gt_billing
            IMPORTING
              ex_output    = gt_output.
        ELSE.
          MESSAGE i000 WITH text-032.
          LEAVE LIST-PROCESSING.
        ENDIF.
      ENDMETHOD.                    "get_sales_docs
    * METHOD get_customer_desc
      METHOD get_customer_desc.
        SELECT kunnr name1
          FROM kna1
          INTO TABLE gt_kna1
           FOR ALL ENTRIES IN gt_vbak
         WHERE kunnr = gt_vbak-kunnr.
      ENDMETHOD.                    "get_customer_desc
    * METHOD get_ship_to_desc
      METHOD get_ship_to_desc.
        SELECT kunnr name1
          FROM kna1
          INTO TABLE gt_kna2
           FOR ALL ENTRIES IN gt_delivery
         WHERE kunnr = gt_delivery-kunnr.
      ENDMETHOD.                    "get_ship_to_desc
    * METHOD get_delivery_docs
      METHOD get_delivery_docs.
        SELECT lips~vgbel likp~vbeln likp~kunnr
          FROM likp
         INNER JOIN lips
            ON likp~vbeln = lips~vbeln
          INTO TABLE gt_delivery
           FOR ALL ENTRIES IN gt_vbak
         WHERE lips~vgbel = gt_vbak-vbeln.
        IF NOT gt_delivery[] IS INITIAL.
          SORT gt_delivery ASCENDING BY: vgbel vbeln kunnr.
          DELETE ADJACENT DUPLICATES FROM gt_delivery COMPARING vgbel vbeln kunnr.
    *     Get ship-to description
          CALL METHOD me->get_ship_to_desc.
    *     Get status of delivery documents
          SELECT vbeln kostk fkstk trsta
            FROM vbuk
            INTO TABLE gt_status_do
             FOR ALL ENTRIES IN gt_delivery
           WHERE vbeln = gt_delivery-vbeln.
        ENDIF.
      ENDMETHOD.                    "get_delivery_docs
    * METHOD get_billing_docs
      METHOD get_billing_docs.
        SELECT vbelv vbtyp_n vbeln
          FROM vbfa
          INTO TABLE gt_billing
           FOR ALL ENTRIES IN gt_delivery
         WHERE vbelv   = gt_delivery-vbeln
           AND vbtyp_n = 'M'.
        SORT gt_billing ASCENDING BY: vbelv vbtyp_n vbeln.
        DELETE ADJACENT DUPLICATES FROM gt_billing COMPARING vbelv vbtyp_n vbeln.
      ENDMETHOD.                    "get_billing_docs
    * METHOD get_so_status
      METHOD get_so_status.
        DATA: lv_curr_so TYPE vbak-vbeln,
              lv_lines   TYPE i.
        FIELD-SYMBOLS: <fs_status>    LIKE LINE OF gt_status,
                       <fs_delivery>  LIKE LINE OF gt_delivery,
                       <fs_status_do> LIKE LINE OF gt_status_do.
        SELECT vbeln cmgst lfstk
          FROM vbuk
          INTO CORRESPONDING FIELDS OF TABLE gt_status
           FOR ALL ENTRIES IN gt_vbak
         WHERE vbeln = gt_vbak-vbeln.
        SORT gt_status_do BY vbeln ASCENDING.
        DESCRIBE TABLE gt_status LINES lv_lines.
        LOOP AT gt_status ASSIGNING <fs_status>.
          IF sy-tabix > lv_lines.
            EXIT.
          ENDIF.
          LOOP AT gt_delivery ASSIGNING <fs_delivery> WHERE vgbel = <fs_status>-vbeln.
            IF lv_curr_so = <fs_delivery>-vgbel.
              wa_status-vbeln = <fs_status>-vbeln.
              wa_status-cmgst = <fs_status>-cmgst.
              wa_status-lfstk = <fs_status>-lfstk.
              READ TABLE gt_status_do ASSIGNING <fs_status_do> WITH KEY vbeln = <fs_delivery>-vbeln
                                                                                BINARY SEARCH.
              IF sy-subrc = 0.
                wa_status-kostk = <fs_status_do>-kostk.
                wa_status-fkstk = <fs_status_do>-fkstk.
                wa_status-trsta = <fs_status_do>-trsta.
              ENDIF.
              APPEND wa_status TO gt_status.
              CLEAR wa_status.
            ELSE.
              READ TABLE gt_status_do ASSIGNING <fs_status_do> WITH KEY vbeln = <fs_delivery>-vbeln
                                                                                BINARY SEARCH.
              <fs_status>-kostk = <fs_status_do>-kostk.
              <fs_status>-fkstk = <fs_status_do>-fkstk.
              <fs_status>-trsta = <fs_status_do>-trsta.
            ENDIF.
            lv_curr_so = <fs_delivery>-vgbel.
          ENDLOOP.
        ENDLOOP.
      ENDMETHOD.                    "get_do_status
    ENDCLASS.                    "lcl_get_data IMPLEMENTATION
    *       CLASS lcl_process_data IMPLEMENTATION
    CLASS lcl_process_data IMPLEMENTATION.
    * METHOD combine_data
      METHOD combine_data.
        FIELD-SYMBOLS: <fs_sales_tab> LIKE LINE OF im_sales_tab,
                       <fs_cust_tab>  LIKE LINE OF im_cust_tab,
                       <fs_desc_tab>  LIKE LINE OF im_desc_tab,
                       <fs_dlv_tab>   LIKE LINE OF im_dlv_tab,
                       <fs_bill_tab>  LIKE LINE OF im_bill_tab.
        SORT gt_status BY vbeln ASCENDING.
        LOOP AT im_sales_tab ASSIGNING <fs_sales_tab>.
          CLEAR: lv_flag1, wa_output,lv_vbelv,
                 lv_bill_doc, lv_kunnr,
                 lv_name1, lv_parvw.
          wa_output-creation_date = <fs_sales_tab>-erdat.  "SO creation date
          wa_output-creation_time = <fs_sales_tab>-erzet.  "SO creation time
          wa_output-sales_doc     = <fs_sales_tab>-vbeln.  "Sales document
          wa_output-cust_code     = <fs_sales_tab>-kunnr.  "SO customer code
    *     Customer description
          READ TABLE im_cust_tab ASSIGNING <fs_cust_tab> WITH KEY kunnr = <fs_sales_tab>-kunnr.
          IF sy-subrc = 0.
            MOVE <fs_cust_tab>-name1 TO: wa_output-cust_desc.    "SO customer description
          ENDIF.
          wa_output-po_num       = <fs_sales_tab>-bstnk.   "PO number
          wa_output-doc_type     = <fs_sales_tab>-auart.   "SO document type
          wa_output-req_dlv_date = <fs_sales_tab>-vdatu.   "SO req. delivery date
          wa_output-created_by   = <fs_sales_tab>-ernam.   "SO created by
          READ TABLE im_dlv_tab ASSIGNING <fs_dlv_tab> WITH KEY vgbel = <fs_sales_tab>-vbeln.
          IF sy-subrc <> 0.
            CALL FUNCTION 'CONVERSION_EXIT_PARVW_INPUT'
              EXPORTING
                input  = 'SH'
              IMPORTING
                output = lv_parvw.
    */Get ship-to party and description based from sales document
    * if delivery document is non-existent
            SELECT SINGLE kunnr
              FROM vbpa
              INTO lv_kunnr
             WHERE vbeln = <fs_sales_tab>-vbeln
               AND parvw = lv_parvw.             "Ship-to party
            IF sy-subrc = 0.
              SELECT SINGLE name1
                FROM kna1
                INTO lv_name1
               WHERE kunnr = lv_kunnr.
              IF sy-subrc = 0.
                wa_output-ship_to_code = lv_kunnr.
                wa_output-ship_to_desc = lv_name1.
              ENDIF.
            ENDIF.
    *       Sales order status
            CALL METHOD me->get_status
              EXPORTING
                im_so     = wa_output-sales_doc
              IMPORTING
                ex_status = wa_output-so_status.
            APPEND wa_output TO ex_output.
            CLEAR wa_output.
            CONTINUE.
          ENDIF.
    *     Ship-to code/party and delivery document
          LOOP AT im_dlv_tab ASSIGNING <fs_dlv_tab> WHERE vgbel = <fs_sales_tab>-vbeln.
            CLEAR: lv_flag1.
            wa_output-ship_to_code = <fs_dlv_tab>-kunnr.   "Ship-to code
            wa_output-del_doc      = <fs_dlv_tab>-vbeln.   "Delivery document
    *       Ship-to description
            READ TABLE im_desc_tab ASSIGNING <fs_desc_tab> WITH KEY kunnr = <fs_dlv_tab>-kunnr.
            IF sy-subrc = 0.
              wa_output-ship_to_desc = <fs_desc_tab>-name1.
            ENDIF.
    *       Sales order and delivery order status
            CALL METHOD me->get_status
              EXPORTING
                im_so     = wa_output-sales_doc
                im_do     = wa_output-del_doc
              IMPORTING
                ex_status = wa_output-so_status.
    *       Billing document
            LOOP AT im_bill_tab ASSIGNING <fs_bill_tab> WHERE vbelv   = <fs_dlv_tab>-vbeln
                                                          AND vbtyp_n =  'M'.
              CLEAR lv_flag1.
              IF lv_vbelv    = <fs_bill_tab>-vbelv AND
                 lv_bill_doc = <fs_bill_tab>-vbeln.
                CONTINUE.
              ENDIF.
              lv_vbelv    = <fs_bill_tab>-vbelv.
              lv_bill_doc = <fs_bill_tab>-vbeln.
              wa_output-bill_doc = <fs_bill_tab>-vbeln.    "Billing document
              MOVE 'X' TO lv_flag1.
              APPEND wa_output TO ex_output.
              CLEAR: wa_output-ship_to_code, wa_output-del_doc,
                     wa_output-so_status, wa_output-bill_doc.
              EXIT.
            ENDLOOP.
            IF lv_flag1 = 'X'.
              CONTINUE.
            ELSE.
              APPEND wa_output TO ex_output.
              CLEAR: wa_output-ship_to_code, wa_output-del_doc,
                     wa_output-ship_to_desc, wa_output-so_status.
            ENDIF.
          ENDLOOP.
        ENDLOOP.
        SORT ex_output BY sales_doc.
      ENDMETHOD.                    "combine_data
    * METHOD get_status
      METHOD get_status.
        FIELD-SYMBOLS: <fs_status>    LIKE LINE OF gt_status,
                       <fs_status_do> LIKE LINE OF gt_status_do.
    */Check the current stage of a given sales order in descending order
    * starting with the shipment status
        READ TABLE gt_status_do ASSIGNING <fs_status_do> WITH KEY vbeln = im_do
                                                                          BINARY SEARCH.
        IF sy-subrc = 0.
    *     Shipment/dispatch status
          IF <fs_status_do>-trsta = 'B' OR
             <fs_status_do>-trsta = 'C'.
            ex_status = 'SH'.
    *     Invoice status
          ELSEIF <fs_status_do>-fkstk = 'B' OR
                 <fs_status_do>-fkstk = 'C'.
            ex_status = 'IN'.
    *     Picking status
          ELSEIF <fs_status_do>-kostk = 'B' OR
                 <fs_status_do>-kostk = 'C'.
            ex_status = 'PS'.
          ENDIF.
        ENDIF.
        IF ex_status IS INITIAL.
          READ TABLE gt_status ASSIGNING <fs_status> WITH KEY vbeln = im_so
                                                                      BINARY SEARCH.
          IF sy-subrc = 0.
    *       Delivery order status
            IF <fs_status>-lfstk = 'B' OR
               <fs_status>-lfstk = 'C'.
              ex_status = 'DO'.
    *       Credit released
            ELSEIF <fs_status>-cmgst = 'A' OR
                   <fs_status>-cmgst = 'D'.
              ex_status = 'CR'.
    *       Credit hold
            ELSEIF <fs_status>-cmgst = 'B' OR
                   <fs_status>-cmgst = 'C'.
              ex_status = 'CH'.
            ENDIF.
          ENDIF.
        ENDIF.
      ENDMETHOD.                    "get_status
    ENDCLASS.                    "lcl_process_data IMPLEMENTATION
    *       CLASS lcl_alv_routines IMPLEMENTATION
    CLASS lcl_alv_routines IMPLEMENTATION.
    * METHOD build_fieldcat
      METHOD build_fieldcat.
        REFRESH: gt_fieldcat.
        CLEAR wa_fieldcat.
        DEFINE m_fieldcat.
          add 1 to wa_fieldcat-col_pos.
          wa_fieldcat-fieldname   = &1.
          wa_fieldcat-tabname     = &2.
          wa_fieldcat-coltext     = &3.
          wa_fieldcat-outputlen   = &4.
          wa_fieldcat-fix_column  = &5.
          wa_fieldcat-just        = &6.
          wa_fieldcat-do_sum      = &7.
          wa_fieldcat-emphasize   = &8.
          wa_fieldcat-hotspot     = &9.
          append wa_fieldcat to gt_fieldcat.
        END-OF-DEFINITION.
        IF wa_column-fname = 'SO_STATUS'.
          m_fieldcat 'CR_HOLD'         'GT_STATUS_HISTORY'  text-002  '50' 'X' '' '' '' ''.
          m_fieldcat 'CR_REL_ON'       'GT_STATUS_HISTORY'  text-003  '18' 'X' '' '' '' ''.
          m_fieldcat 'CR_REL_AT'       'GT_STATUS_HISTORY'  text-004  '18' 'X' '' '' '' ''.
          m_fieldcat 'DO_CREATED_ON'   'GT_STATUS_HISTORY'  text-005  '13' 'X' '' '' '' ''.
          m_fieldcat 'DO_CREATED_TIME' 'GT_STATUS_HISTORY'  text-030  '15' 'X' '' '' '' ''.
          m_fieldcat 'PICKED_ON'       'GT_STATUS_HISTORY'  text-006  '12' 'X' '' '' '' ''.
          m_fieldcat 'PICKED_TIME'     'GT_STATUS_HISTORY'  text-031  '12' 'X' '' '' '' ''.
          m_fieldcat 'INV_CREATED_ON'  'GT_STATUS_HISTORY'  text-007  '15' 'X' '' '' '' ''.
          m_fieldcat 'DISPATCHED_ON'   'GT_STATUS_HISTORY'  text-008  '13' 'X' '' '' '' ''.
          m_fieldcat 'DISPATCHED_AT'   'GT_STATUS_HISTORY'  text-009  '13' 'X' '' '' '' ''.
        ELSEIF wa_column-fname = 'BILL_DOC'.
          m_fieldcat 'PODAT'          'GT_CONFIRMATION'    text-010  '17' 'X' '' '' '' ''.
          m_fieldcat 'POTIM'          'GT_CONFIRMATION'    text-011  '17' 'X' '' '' '' ''.
        ELSE.
          m_fieldcat 'CREATION_DATE' 'GT_OUTPUT' text-012 '10' 'X' '' '' '' ''.
          m_fieldcat 'CREATION_TIME' 'GT_OUTPUT' text-013 '10' 'X' '' '' '' ''.
          m_fieldcat 'SALES_DOC'     'GT_OUTPUT' text-014 '10' 'X' '' '' 'X' 'X'.
          m_fieldcat 'CUST_CODE'     'GT_OUTPUT' text-015 '16' 'X' '' '' '' ''.
          m_fieldcat 'CUST_DESC'     'GT_OUTPUT' text-016 '40' 'X' '' '' '' ''.
          m_fieldcat 'SHIP_TO_CODE'  'GT_OUTPUT' text-017 '15' 'X' '' '' '' ''.
          m_fieldcat 'SHIP_TO_DESC'  'GT_OUTPUT' text-018 '40' 'X' '' '' '' ''.
          m_fieldcat 'PO_NUM'        'GT_OUTPUT' text-019 '24' 'X' '' '' '' ''.
          m_fieldcat 'DOC_TYPE'      'GT_OUTPUT' text-020 '16' 'X' '' '' '' ''.
          m_fieldcat 'REQ_DLV_DATE'  'GT_OUTPUT' text-021 '21' 'X' '' '' '' ''.
          m_fieldcat 'SO_STATUS'     'GT_OUTPUT' text-022 '09' 'X' '' '' 'C400' ''.
          m_fieldcat 'CREATED_BY'    'GT_OUTPUT' text-023 '13' 'X' '' '' '' ''.
          m_fieldcat 'DEL_DOC'       'GT_OUTPUT' text-024 '18' 'X' '' '' '' ''.
          m_fieldcat 'BILL_DOC'      'GT_OUTPUT' text-025 '11' 'X' '' '' 'C600' ''.
        ENDIF.
      ENDMETHOD.                    "build_fieldcat
    * METHOD popup_routines
      METHOD popup_routines.
        READ TABLE im_column INDEX 1 INTO wa_column.
        FIELD-SYMBOLS: <fs_status> LIKE LINE OF gt_status.
        DATA: lv_datum TYPE syst-datum,
              lv_uzeit TYPE syst-uzeit.
        CLEAR: wa_status_history, lv_datum, lv_uzeit.
        REFRESH gt_status_history.
    */Popup routine if user clicked on the SO status
        IF wa_column-fname = 'SO_STATUS'.
          CALL METHOD me->get_domain_values
            EXPORTING
              im_tabname    = 'VBUK'
              im_fieldname  = 'CMGST'
            IMPORTING
              ex_values_tab = gt_domain_val.
    *     Credit hold
          READ TABLE gt_status ASSIGNING <fs_status> WITH KEY vbeln = im_output-sales_doc.
          IF sy-subrc = 0.
            wa_status_history-cr_hold = <fs_status>-cmgst.
          ENDIF.
          READ TABLE gt_domain_val INTO wa_domain_val WITH
                                    KEY domvalue_l = wa_status_history-cr_hold
                                    TRANSPORTING ddtext.
          IF sy-subrc = 0.
            wa_status_history-cr_hold = wa_domain_val-ddtext.
          ENDIF.
    *     Credit released date and time
          SELECT SINGLE udate utime
            FROM cdhdr
            INTO (lv_datum, lv_uzeit)
           WHERE objectid = im_output-sales_doc
             AND tcode    = 'VKM3'.
          IF sy-subrc = 0.
            WRITE lv_datum TO wa_status_history-cr_rel_on
            USING EDIT MASK '__/__/____'.
            CLEAR lv_datum.
            WRITE lv_uzeit TO wa_status_history-cr_rel_at
            USING EDIT MASK '__:__:__'.
            CLEAR lv_uzeit.
          ENDIF.
    *     DO creation date and time
          IF NOT im_output-del_doc IS INITIAL.
            SELECT SINGLE erdat erzet
              FROM likp
              INTO (lv_datum, lv_uzeit)
             WHERE vbeln = im_output-del_doc.
            IF sy-subrc = 0.
              WRITE lv_datum TO wa_status_history-do_created_on
              USING EDIT MASK '__/__/____'.
              CLEAR lv_datum.
              WRITE lv_uzeit TO wa_status_history-do_created_time
              USING EDIT MASK '__:__:__'.
              CLEAR lv_uzeit.
            ENDIF.
    *       Picking date and time
            SELECT SINGLE bdatu bzeit
              FROM ltak
              INTO (lv_datum, lv_uzeit)
             WHERE vbeln = im_output-del_doc.
            IF sy-subrc = 0.
              WRITE lv_datum TO wa_status_history-picked_on
              USING EDIT MASK '__/__/____'.
              CLEAR lv_datum.
              WRITE lv_uzeit TO wa_status_history-picked_time
              USING EDIT MASK '__:__:__'.
              CLEAR lv_uzeit.
            ENDIF.
          ENDIF.
    *     Invoice created on
          SELECT SINGLE erdat
            FROM vbrk
            INTO lv_datum
           WHERE vbeln = im_output-bill_doc.
          WRITE lv_datum TO wa_status_history-inv_created_on
          USING EDIT MASK '__/__/____'.
          CLEAR lv_datum.
    *     Dispatched on and dispatched at
          SELECT SINGLE tknum
            FROM vttp
            INTO vttp-tknum
           WHERE vbeln = im_output-del_doc.
          IF sy-subrc = 0.
            SELECT SINGLE dtabf uzabf
              FROM vttk
              INTO (lv_datum, lv_uzeit)
             WHERE tknum = vttp-tknum.
            WRITE lv_datum TO wa_status_history-dispatched_on
            USING EDIT MASK '__/__/____'.
            CLEAR lv_datum.
            WRITE lv_uzeit TO wa_status_history-dispatched_at
            USING EDIT MASK '__:__:__'.
            CLEAR lv_uzeit.
          ENDIF.
          APPEND wa_status_history TO gt_status_history.
          ex_status_history[] = gt_status_history[].
          CLEAR wa_status_history.
    */Popup routine if the user clicked on the billing document
        ELSEIF wa_column-fname = 'BILL_DOC'.
          IF NOT im_output-del_doc IS INITIAL.
            SELECT SINGLE podat potim
              FROM likp
              INTO (wa_confirmation-podat, wa_confirmation-potim)
             WHERE vbeln = im_output-del_doc.
            APPEND wa_confirmation TO gt_confirmation.
            ex_confirmation[] = gt_confirmation[].
            CLEAR wa_confirmation.
          ENDIF.
        ENDIF.
      ENDMETHOD.                    "popup_routines
    * METHOD get_domain_values
      METHOD   get_domain_values.
        CALL FUNCTION 'DDIF_FIELDINFO_GET'
          EXPORTING
            tabname              = im_tabname
            fieldname            = im_fieldname
            langu                = sy-langu
    *       LFIELDNAME           = ' '
    *       ALL_TYPES            = ' '
    *       GROUP_NAMES          = ' '
    *       UCLEN                =
    *     IMPORTING
    *       X030L_WA             =
    *       DDOBJTYPE            =
    *       DFIES_WA             =
    *       LINES_DESCR          =
          TABLES
            dfies_tab            = lt_dfies_tab
    *       FIXED_VALUES         =
    *     EXCEPTIONS
    *       NOT_FOUND            = 1
    *       INTERNAL_ERROR       = 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.
        READ TABLE lt_dfies_tab INDEX 1 INTO wa_dfies_tab
                                        TRANSPORTING domname.
        CALL FUNCTION 'GET_DOMAIN_VALUES'
           EXPORTING
             domname               = wa_dfies_tab-domname
    *       TEXT                  = 'X'
    *       FILL_DD07L_TAB        = ' '
           TABLES
             values_tab            = ex_values_tab
    *       VALUES_DD07L          =
    *     EXCEPTIONS
    *       NO_VALUES_FOUND       = 1
    *       OTHERS                = 2
        IF sy-subrc <> 0.
          MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
             WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
        ENDIF.
      ENDMETHOD.                    "get_domain_values
    ENDCLASS.                    "lcl_alv_routines IMPLEMENTATION
    *       CLASS lcl_event_receiver IMPLEMENTATION
    CLASS lcl_event_receiver IMPLEMENTATION.
    * METHOD handle_double_click
      METHOD handle_double_click.
        IF e_column = 'SO_STATUS' OR
           e_column = 'BILL_DOC'.
          CREATE OBJECT: o_lcl_alv_routines.
          CLEAR: wa_output.
          REFRESH: gt_fieldcat,
                   gt_column,
                   gt_status_history,
                   gt_confirmation.
          MOVE: e_column-fieldname TO wa_column-fname,
                e_column-hierlevel TO wa_column-level.
          APPEND wa_column TO gt_column.
    *     Get record based on what the user clicked
          READ TABLE gt_output INDEX e_row-index INTO wa_output.
    *     Build fieldcatalog depending on what the user clicked
          CALL METHOD o_lcl_alv_routines->build_fieldcat.
    *     Call popup routine/s
          CALL METHOD o_lcl_alv_routines->popup_routines
            EXPORTING
              im_column         = gt_column
              im_output         = wa_output
            IMPORTING
              ex_status_history = gt_status_history
              ex_confirmation   = gt_confirmation.
          CALL METHOD me->create_detail_list
            EXPORTING
              im_column       = gt_column
              im_status       = gt_status_history
              im_confirmation = gt_confirmation.
        ENDIF.
      ENDMETHOD.                    "handle_double_click
    * METHOD handle_close
      METHOD handle_close.
        CALL METHOD sender->set_visible
          EXPORTING
            visible = space.
      ENDMETHOD.                    "handle_close
    * METHOD handle_hotspot_click
      METHOD handle_hotspot_click.
        READ TABLE gt_output INDEX e_row_id INTO wa_output.
        IF NOT wa_output-sales_doc IS INITIAL
           AND e_column_id = 'SALES_DOC'.
          SET PARAMETER ID 'AUN' FIELD wa_output-sales_doc.
          CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN.
        ENDIF.
      ENDMETHOD.                    "handle_hotspot_click
    * METHOD create_detail_list
      METHOD create_detail_list.
        DATA: lv_caption(200) TYPE c.
        CLEAR wa_column.
    *   Create popup window
        CREATE OBJECT dialogbox_container
            EXPORTING
              top = 100
              left = 150
              lifetime = cntl_lifetime_dynpro
              caption = lv_caption
              width = 800
              height = 200.
        CREATE OBJECT grid2
            EXPORTING i_parent = dialogbox_container.
    *   Trigger event when user closes the popup window
        SET HANDLER event_receiver->handle_close FOR dialogbox_container.
        READ TABLE im_column INDEX 1 INTO wa_column.
    *   Display popup window
        IF wa_column-fname = 'SO_STATUS'.
          gs_layout-grid_title = text-026.
          CALL METHOD grid2->set_table_for_first_display
           EXPORTING
    *        i_structure_name = 'T_OUTPUT'
             is_layout        = gs_layout
           CHANGING
             it_outtab        = gt_status_history
             it_fieldcatalog  = gt_fieldcat.
        ELSEIF wa_column-fname = 'BILL_DOC'.
          gs_layout-grid_title = text-027.
          CALL METHOD grid2->set_table_for_first_display
           EXPORTING
    *        i_structure_name = 'T_OUTPUT'
             is_layout        = gs_layout
           CHANGING
             it_outtab        = gt_confirmation
             it_fieldcatalog  = gt_fieldcat.
        ENDIF.
        CALL METHOD cl_gui_control=>set_focus
          EXPORTING
            control = grid2.
      ENDMETHOD.                    "create_detail_list
    ENDCLASS.                    "lcl_event_receiver IMPLEMENTATION
    * START-OF-SELECTION                           *
    START-OF-SELECTION.
      DATA: o_lcl_get_data TYPE REF TO lcl_get_data.
      CREATE OBJECT o_lcl_get_data.
      CALL METHOD o_lcl_get_data->get_sales_docs.
    * END-OF-SELECTION                             *
    END-OF-SELECTION.
      CALL SCREEN 100.
    *&      Module  STATUS_0100  OUTPUT
    *       text
    MODULE status_0100 OUTPUT.
      SET PF-STATUS '100'.
      SET TITLEBAR  'TITLE100'.
      DATA: o_lcl_alv_routines TYPE REF TO lcl_alv_routines,
            gv_text            TYPE string,
            gv_name1           TYPE kna1-name1,
            gv_date_low(10)    TYPE c,
            gv_date_high(10)   TYPE c.
      CREATE OBJECT o_lcl_alv_routines.
      g_repid = sy-repid.
      IF custom_container IS INITIAL.
        CREATE OBJECT custom_container
          EXPORTING
            container_name = gv_container
          EXCEPTIONS
            cntl_error = 1
            cntl_system_error = 2
            create_error = 3
            lifetime_error = 4
            lifetime_dynpro_dynpro_link = 5.
        IF sy-subrc NE 0.
          CALL FUNCTION 'POPUP_TO_INFORM'
            EXPORTING
              titel = g_repid
              txt2  = sy-subrc
              txt1  = text-028.
        ENDIF.
        CREATE OBJECT grid1
          EXPORTING
            i_parent = custom_container.
    *   Build fieldcatalog for initial display
        CALL METHOD o_lcl_alv_routines->build_fieldcat.
        SELECT SINGLE name1
          FROM kna1
          INTO gv_name1
         WHERE kunnr = p_kunnr.
        WRITE: s_erdat-low  TO gv_date_low  USING EDIT MASK '__/__/____',
               s_erdat-high TO gv_date_high USING EDIT MASK '__/__/____'.
        CONCATENATE: gv_name1 'from:' gv_date_low '-' gv_date_high
               INTO gv_text
          SEPARATED BY space.
        gs_layout-grid_title = gv_text.
    *   Display initial window
        CALL METHOD grid1->set_table_for_first_display
          EXPORTING
    *        i_structure_name = ''
            is_layout        = gs_layout
          CHANGING
            it_outtab        = gt_output
            it_fieldcatalog  = gt_fieldcat.
        CREATE OBJECT event_receiver.
    *   Trigger event when user double clicks initial window
        SET HANDLER event_receiver->handle_double_click FOR grid1.
    *   Trigger event when user clicks hotspot field
        SET HANDLER event_receiver->handle_hotspot_click FOR grid1.
      ENDIF.
      CALL METHOD cl_gui_control=>set_focus
        EXPORTING
          control = grid1.
    ENDMODULE.                 " STATUS_0100  OUTPUT
    *&      Module  USER_COMMAND_0100  INPUT
    *       text
    MODULE user_command_0100 INPUT.
      save_ok = ok_code.
      CASE save_ok.
        WHEN 'BACK' OR 'EXIT' OR 'CANCEL'.
          CALL METHOD custom_container->free.
          CALL METHOD cl_gui_cfw=>flush.
          IF sy-subrc <> 0.
            CALL FUNCTION 'POPUP_TO_INFORM'
              EXPORTING
                titel = g_repid
                txt2  = sy-subrc
                txt1  = text-029.
          ENDIF.
          LEAVE TO SCREEN 0.
      ENDCASE.
    ENDMODULE.                 " USER_COMMAND_0100  INPUT

  • Join Problem LIKP,LIPS,VBRK and VBRP

    Hi,
    i am working on the SAP Query report. But having problem in creating joins between the following tables
    LIKP
    LIPS
    VBRK
    VBRP
    please guide me
    regard
    khurram

    LIKP
    LIPS
    VBRK
    VBRP
    select a~ b~ c~ d~ into corresponding fields of table itab from likp as a inner join
    LIPS as b on a~VBELN = b~VBELN
    VBRK as c~VBELN = a~VBELN
    VBRP as d~VBELN = a~~VBELN.
    also check the first condition  a~VBELN = b~(KDAUF,VBELV,VGBEL,WKTNR)
    second condition a~VBELN = c~SFAKN
    third condition a~VBELN = d~(AUBEL,VBELV,VGBEL,VGBEL_EX)
    hope it solves...

  • Joining two tables LIKP and VBUK

    HI,
    I want to join two tables LIKP and VBUK, can u give some explaination ?
    points will be given for good answers...
    regards
    Vijaya

    Hi,
    see this example of joining two tables zairln & zflight.
    These 2 tables are logically joined by the airln field.
    Select a~airln
           a~lnnam
           b~fligh
           b~cntry
    Into table int_airdet
    From zairln as a inner join zflight as b on aairln = bairln.
    In order to restrict the data as per the selection criteria, a where clause can be added to the above inner join.
    rgds,
    latheesh
    Message was edited by: Latheesh Kaduthara

  • Selection from database tables

    Hi Experts,
    In one program I'm selecting data from tables <b>VBAK, VBAP,VBRK,VBRP,LIKP,LIPS</b>. As the tables have huge data, it's taking forever to get the data into internal tables.
    Could you please suggest  me to better the performance.
    Thnx much.

    hi dev,
      do not use select .. endselect statement and include all the key fields in your select statement.
    instead of select .. endselect statement use
    select * from <table> into table itab where < conditions)
    Regards,
    Santosh
    Message was edited by: Santosh Kumar P

  • Selecting from 3tables

    hi
    can anyone provide me a sample select statement to fetch data from 3 different tables pls..
    its urgent

    Hi ,
          Here is code of join of 4 tables
      SELECT lips~vgbel                    "Document number of the reference document
             lips~vgpos                      "Item number of the reference item
             lips~matnr                    "Material
             lips~charg                    "Batch
             lips~lfimg                    " Delivery quantity
             likp~wadat_ist                "Actual goods movement date
             likp~vstel                    "Shipping Point/Receiving Point
             mara~zztrade_name             " Trade Name
             INTO CORRESPONDING FIELDS OF TABLE rt_delivery_ord
             FROM likp
             INNER JOIN lips  ON  lipsvbeln EQ likpvbeln
             INNER JOIN vbap  ON  vbapvbeln EQ lipsvgbel
                              AND vbapposnr EQ lipsvgpos
             INNER JOIN mara  ON  maramatnr EQ vbapmatnr
            FOR ALL entries IN rt_sales_ord
             WHERE wadat_ist  IN  rt_date                            "Goods Issue Date
             AND   likp~vstel IN  rt_shipping                        "Shipping Point
             AND   mara~mtart IN o_mtart                           "Material Type
             AND   mara~zztrade_name IN o_trade                    "Trade Name
             AND   mara~zzmanu_stg   IN rt_stage.                   "Manuf Stage
            AND   lips~vgbel EQ  rt_sales_ord-vbeln                  "Sales Order
            AND   lips~posnr EQ  rt_sales_ord-posnr                  "Sales item
            AND   lips~charg EQ  rt_sales_ord-charg.                 "Batch
    Please reward if useful.

  • Using delivery type lfart from likp to write out the GL Account Number

    Hi Guys,
    I am writing a report for the bill of lading. Now I have to take in the GL Account Number from the user at input which can be either say 852342 or 853243 for two types of shipments 1. Plant to customer or 2. Intercompany. Now I have been asked to use LFART (NL - Replenishment Goods) field from LIKP to decide after taking in the user input for the GL Account Number what kind of shipment it is and write the GL account number in the report. Can somebody explain how to do it. I can't make out how one type of delivery can decide which kind of shipment it is based on the GL Account Number entered by the user on a selection screen? Can somebody give me some code or example?
    Please help.
    Thanks in advance.
    AM

    I think you missed out the statement
    MOVE 'X' TO wa_exknx-sakto.
    Regards, Vinod

  • Selection from a Maintenance View

    Hi,
        I have to fetch data from a view, unfotunately that view is a mainteance view. Is there any other way to select/fetch data from that view in my report program ?
    Regards,
    Bharath Mohan B

    Hi
    U cannot access the data from maintanence view.
    Only projection and database view can be used in ABAP code.
    If u want to access the Data from more the one table , Create the DATABASE VIEW and use this view in ur program.
    For example : UR Database view name is Ztest
    in ur program
    table Ztest.
    select * from Ztest ***************
    *******************UR Business Logic
    <b>Reward if useful</b>

  • URGENT : select from table statement in ABAP OO

    Hi all,
    I am an absolute ABAP OO beginner and need some quick help from an expert. How can I make a selection from an existing table (eg MARA) in an BADI which is programmed according to ABAP OO principles.
    In the old ABAP school you could make a TABLES statement at the beginning and the do a SELECT¨* FROM but this does not work in ABAP OO.
    How should i define such simple selections from existing tables. Anyone ?
    Thanks a lot,
    Eric Hassenberg

    *define internal table
    data: i_mara like standard table of mara.
    *select to this table
    select * from mara into table i_mara.
    Also you have to define work area for this internal table in order to use it.
    data:w_mara like line of i_mara.

  • Select from v$sql_plan in a procedure

    Hi
    I''m attempting to save plans (from V$SQL_PLAN) into a table using a procedure in schema APPS, but keep getting missing table error,
    PL/SQL: ORA-00942: table or view does not existI then granted an explicit SELECT to APPS on the V$SQL_PLAN table from a schema with
    a DBA role, but still get the same error when compiling the procedure.
    SQL> create table gl_imp_post_plans as ( select * from v$sql_plan where rownum < 1);
    Table created.
    SQL> select count(*) from v$sql_plan;
      COUNT(*)
         13506
    SQL> create or replace procedure Ins_Plan_from_Dictionary as
      2 
      3    begin
      4      insert into GL_Imp_Post_Plans
      5      select  sqo.*
      6      from    v$sql_plan sqo
      7      where  (sqo.sql_id) not in (select distinct gipi.SQL_ID
      8                                  from   GL_Imp_Post_Plans gipi)
      9      and    (sqo.sql_id) in     (select distinct
    10                                         sqi.sql_id
    11                                  from   v$sql_plan sqi
    12                                  where  sqi.object_owner = 'APPS'
    13                                  and    sqi.object_name  in ('GL_BALANCES','GL_DAILY_BALANCES','GL_JE_LINES') );
    14      commit;
    15 
    16 
    17      exception
    18        when others then
    19          rollback;
    20  --        sysao_util.Message ('O', 'Error ' || sqlerrm);
    21 
    22  end Ins_Plan_from_Dictionary;
    23  /
    Warning: Procedure created with compilation errors.
    SQL> show err
    Errors for PROCEDURE INS_PLAN_FROM_DICTIONARY:
    LINE/COL ERROR
    4/5      PL/SQL: SQL Statement ignored
    11/40    PL/SQL: ORA-00942: table or view does not exist
    SQL>
    SQL> l 11
    11*                                 from   v$sql_plan sqiThe same error occurs when I attempt to select from GV$SQL_PLAN or DBA_HIST_SQL_PLAN.
    Could anybody suggest how I can persist the rows into a table using a procedure?
    thanks

    thanks, yes this works:
    create or replace procedure Ins_Plan_from_Dictionary as
      begin
        execute immediate 'begin
                            insert into GL_Imp_Post_Plans
                            select  sqo.*
                            from    v$sql_plan sqo
                            where  (sqo.sql_id) not in (select distinct gipi.SQL_ID
                                                        from   GL_Imp_Post_Plans gipi)
                            and    (sqo.sql_id) in     (select distinct
                                                               sqi.sql_id
                                                        from   v$sql_plan sqi
                                                        where  sqi.object_owner = ''APPS''
                                                        and    sqi.object_name  in (''GL_BALANCES'',''GL_DAILY_BALANCES'',''GL_JE_LINES'') );
                            commit;
                           end;';
        exception
          when others then
            rollback;
    --        sysao_util.Message ('O', 'Error ' || sqlerrm);
    end Ins_Plan_from_Dictionary;
    /

Maybe you are looking for

  • ICloud will not update on Window 7 machine

    For several months, iCloud updates will not install.  I get a 2343 error on my Windows 7 machine.  The iTunes updates work if I download and manually install.  This is not the case with iCloud.  I used the MS Fixit without success.  Can someone assis

  • Regarding Financial Analytics Full Load in DAC

    Hi All, Today i have started full Load for financial analytics for subject areas : "Revenue, Receivables, Paybles, General Ledger, Cost of goods Sold". The issue is "SDE_ORA_GLBlanceFact_Full", "SDE_ORA_GLJournals_Full" these two tasks failed due Dat

  • Keyboard falls asleep after update to OS X 10.8.2 Help!

    After update to OSX10.8.2 my MacBook Pro Keyboard and trackpad falls asleep after 10-20 seconds. Then it takes 4-5 sec to awake. Usually the first keystrokes are lost. The mouse works perfectly. Anyone else having this problem or has a solution?

  • Since I upgraded to Mavericks, Photoshop CS5 crashes when I try to print.

    Since I upgraded to Mavericks, Photoshop CS5 crashes when I try to print.

  • A feature with assets

    I'm in a project group that is working on a designing application. It contains a menu and a canvas in which user can move certain elements (assets), png-pictures. What might be the easiest way to create a feature that when the user moves a new object