LIKP-WADAT in VL01NO Transaction

Hello,
In the second screen of VL01NO Transactin, I have fill LIKP-WADAT(Planned GI Date) with the current date as default.
Please advise me with User Exit or Customer Exit or with BADI.
I tried implementing the userexit USEREXIT_MOVE_FIELD_TO_LIKP, but the things are not working.
Regards
Pushparaj

P287176 wrote:>
> Hello,
> In the second screen of VL01NO Transactin, I have fill LIKP-WADAT(Planned GI Date) with the current date as default.
> Please advise me with User Exit or Customer Exit or with BADI.
>
> I tried implementing the userexit USEREXIT_MOVE_FIELD_TO_LIKP, but the things are not working.
>
> Regards
> Pushparaj
Try to do in copy routines. transaction: VTLA.
or
try changing XLIKP-WADAT instead of LIKP-WADAT
Edited by: Sampath Kumar on Oct 26, 2009 12:04 PM

Similar Messages

  • IDOC fill the field likp-wadat

    I guru,
    i need fill the field likp-wadat when I run an idoc DESADV, but I don't find the field in IDOC...
    you know what is it?
    thanks in advances

    I tried to search the facility /AFS/DELVRY03 but seems not to be on the field to fill likp-wadat.
    I also read the documentation but, nothing.
    can you help me???
    V.

  • Add one Select-Options : LIKP-LGBZO into Shipment Transaction - VT02N

    Hello,
    Transaction - VT02N(Change Shipment) -- Now choose Select Deliveries(F6).
    Now one Selection-Screen will come to Select Outbound Deliveries.
    In this Screen I want to add one more Select-Options (LIKP-LGBZO)
    How can I add this  Select-Options into this Screen.
    Please provide  solution .
    Edited by: Matt on Sep 22, 2010 10:04 AM - edit title - causing problems displaying in Firefox.

    Hi,
    we can not modify  SAP Standard screen with out access key.
    If you want any field validation try this Exit:
    Enhancement     V56BMOD     Transportation processing: Field modification     
    Thanks,
    AMS

  • 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

  • FIELD exit For WADAT

    Hello ,
            I have Implemented a field exit for Data element WADAT, but my requrement is, The value In the field LIKP-WADAT in VLO2n/VLO1N  TRansaction should not be allowed to change even a single time.
    Is there any user exit do statisfy my requirement
    cheers.

    Field exit can be used to validate a user entry and not restrict a user entry. Even if you implement field exit user can always go and change the contents of field and in field exit ( only triggered in PAI ) there is no way to determine if field value was changed .
    You should make the field output only in case you dont want users to change it.
    Check if you have BADI LE_SHP_DELIVERY_PROC in your system. In this BADI you can use method CHANGE_FIELD_ATTRIBUTES to set the attributes of LIKP-WADAT in parameter CT_FIELD_ATTRIBUTES to disable input .
    Cheers.
    Sanjay

  • Regarding field likp-anzpk updation

    hi experts,
    in my requirement i have to update the field  (likp-anzpk)  in vl02n transaction with total no packages based on the total line
    items weight , but i found in some of the threads , that the field will be updated automatically when the packaging functionality
    is once activated ,
    i asked my client abt it ,they said that they r not activated packaging functionality.
    is there any other way to update this field , i tried writing code in badi LE_SHP_DELIVERY_PROC and in method
    IF_EX_LE_SHP_DELIVERY_PROC~SAVE_DOCUMENT_PREPARE , but it is useless
    pls suggest me on this if there is any other way.\
    thanks.

    hi break point,
    my clients actual requirement was , he creates stock transfer advice (STA) against the PO using the transaction
    VL10B , the moment STA was created ,he was asking for the field likp-anzpk has to be updated when he go to
    display mode to VL02N, when he double clicks on the generated STA no from VL10B.
    i have tried in the method  BEFORE SAVE AND PUBLISH DOCUMENT,it was executing when the user pressed SAVE
    button in VL02N ,
    can any body pls suggest which method i have to use to update the field likp-anzpk immediately when the STA was created
    from VL10B before the display of the sta in vl02n.
    let me know that any USER-EXIT or BADI  exists to fullfill this req
    regards\
    maheshlap

  • How to get the open order quantity for a material

    Hi All,
    We need to get the open order quantity for materials. At present we are using the following logic...
    SELECT VBAKVBELN VBAPPOSNR VBAP~KWMENG                 
        INTO TABLE IT_VBAP                                     
      FROM VBAP
      INNER JOIN VBAK ON VBAKVBELN   = VBAPVBELN             
      INNER JOIN VAPMA ON VAPMAVBELN = VBAPVBELN
                      AND VAPMAPOSNR = VBAPPOSNR
      INNER JOIN VBUP ON VBUPVBELN = VBAPVBELN
                     AND VBUPPOSNR = VBAPPOSNR
    WHERE VAPMA~MATNR = IT_OUTPUT-MATNR
       AND VAPMA~WERKS = IT_OUTPUT-WERKS
        AND VBAK~AUART  IN S_AUART                        
         AND VBUP~GBSTA NE 'C'.     
    But the Query takes quite a long time as it does a full range scan on all the tables. Is there any way the query can be improved, may be by creating an index etc? Or is there anyother way by which i can get the required data?
    Any input is appreciated.
    Regards
    Brain.

    This could help.
    *& Report: zsdvr055                date written: 03/24/00              *
    *& Author: Brian Huntley           last update: 03/24/00               *
    *& Program Title: Open Order Report                                    *
    *& Description: This report will create a list of sales documents      *
    *&   that are open (contain at least one item that is not shipped).    *
    *&   The report will sort by ship-to customer name and by sales        *
    *&   document number.                                                  *
    *& Tables:                                                             *
    *& Files:                                                              *
    *& Transactions:                                                       *
    *& Changes:                                                            *
    REPORT ZSDVR055 LINE-SIZE 255.
    TABLES: VBPA,
            VBAP,
            VBUP,
            VBAK,
            VBKD,
            KNA1,
            VBEP,
            VBFA,
            LIKP,
            LIPS,
            EKET,
            T171T.
    define hashed table for selected ship-to and sold-to SO's
    TYPES: BEGIN OF TVBPA_TYPE,
             VBELN LIKE VBPA-VBELN,               "sales document
             POSNR LIKE VBPA-POSNR,               "item number
             PARVW LIKE VBPA-PARVW,               "partner function
             KUNNR LIKE VBPA-KUNNR,               "customer number
           END OF TVBPA_TYPE.
    DATA: TVBPA TYPE HASHED TABLE OF TVBPA_TYPE
            WITH UNIQUE KEY VBELN POSNR PARVW WITH HEADER LINE.
    define internal table for all selected SO's
    DATA: BEGIN OF ITAB0 OCCURS 0,
            VBELN LIKE VBPA-VBELN,                "sales document
          END OF ITAB0.
    define internal table for all selected SO items
    DATA: BEGIN OF ITAB OCCURS 0,
            VBELN LIKE VBAP-VBELN,                "document number
            POSNR LIKE VBAP-POSNR,                "item number
            MATNR LIKE VBAP-MATNR,                "material
            ARKTX LIKE VBAP-ARKTX,                "description
            PSTYV LIKE VBAP-PSTYV,                "item category
            KDMAT LIKE VBAP-KDMAT,                "customer material
            NETWR LIKE VBAP-NETWR,                "net value
            WAERK LIKE VBAP-WAERK,                "currency
            KWMENG LIKE VBAP-KWMENG,              "quantity
            ERDAT LIKE VBAP-ERDAT,                "entry date
            NETPR LIKE VBAP-NETPR,                "net price
            KPEIN LIKE VBAP-KPEIN,                "pricing unit
            PRCTR LIKE VBAP-PRCTR,                "profit center
            ERNAM LIKE VBAK-ERNAM,                "entered by
            AUART LIKE VBAK-AUART,                "order type
            VKORG LIKE VBAK-VKORG,                "sales organization
            VTWEG LIKE VBAK-VTWEG,                "distribution channel
            VDATU LIKE VBAK-VDATU,                "requested date (header)
            BNAME LIKE VBAK-BNAME,                "name of orderer
            KUNNR LIKE VBAK-KUNNR,                "sold-to customer
            BZIRK LIKE VBKD-BZIRK,                "sales district
            KURSK LIKE VBKD-KURSK,                "conversion rate
            BSTKD LIKE VBKD-BSTKD,                "customer PO
            LFGSA LIKE VBUP-LFGSA,                "overall delivery status
            FKSAA LIKE VBUP-FKSAA,                "overall billing status
            KUNWE LIKE VBPA-KUNNR,                "ship-to customer
            NAME1 LIKE KNA1-NAME1,                "ship-to customer name
            ORT01 LIKE KNA1-ORT01,                "ship-to address
            REGIO LIKE KNA1-REGIO,                "ship-to region (state)
            LAND1 LIKE KNA1-LAND1,                "ship-to country
          END OF ITAB.
    create internal table for open orders
    DATA: BEGIN OF ITAB1 OCCURS 0,
            KUNNR LIKE VBAK-KUNNR,                "sold-to customer
            KUNWE LIKE VBPA-KUNNR,                "ship-to customer
            VBELN LIKE VBAP-VBELN,                "document number
            POSNR LIKE VBAP-POSNR,                "item number
            ZDATE1 LIKE VBEP-EDATU,               "requested date
            ZDATE2 LIKE VBEP-EDATU,               "scheduled date (confirm)
            ZDATE3 LIKE VBEP-EDATU,               "committed date
            ZQTY1 LIKE VBAP-KWMENG,               "qty ordered
            ZQTY2 LIKE VBEP-BMENG,                "backlog qty
            ZEXTD LIKE VBAP-NETWR,                "backlog net value
            ZDESC(30) TYPE C,                     "backlog description
          END OF ITAB1.
    define internal table for SO schedule lines
    DATA: BEGIN OF ITAB2A OCCURS 0,
            WADAT LIKE VBEP-WADAT,                "planned goods issue date
            VBELN LIKE VBAP-VBELN,                "document number
            POSNR LIKE VBAP-POSNR,                "item number
            WMENG LIKE VBEP-WMENG,                "qty ordered
            BMENG LIKE VBEP-BMENG,                "qty confirmed
          END OF ITAB2A.
    define internal table for SO item request dates
    DATA: BEGIN OF ITAB2B OCCURS 0,
            EDATU LIKE VBEP-EDATU,                "delivery date
            VBELN LIKE VBAP-VBELN,                "document number
            POSNR LIKE VBAP-POSNR,                "item number
            WMENG LIKE VBEP-WMENG,                "qty ordered
          END OF ITAB2B.
    define internal table for SO item commit dates
    DATA: BEGIN OF ITAB2C OCCURS 0,
            EDATU LIKE VBEP-EDATU,                "delivery date
            VBELN LIKE VBAP-VBELN,                "document number
            POSNR LIKE VBAP-POSNR,                "item number
            ROMS1 LIKE VBEP-WMENG,                "committed qty
          END OF ITAB2C.
    define internal table for SO item deliveries
    DATA: BEGIN OF ITAB3 OCCURS 0,
            VGBEL LIKE LIPS-VGBEL,                "sales document
            VGPOS LIKE LIPS-VGPOS,                "sales document item
            VBELN LIKE LIKP-VBELN,                "delivery number
            POSNR LIKE LIPS-POSNR,                "delivery item number
            WADAT LIKE LIKP-WADAT,                "planned GI date
            WADAT_IST LIKE LIKP-WADAT_IST,        "actual GI date
            LFIMG LIKE LIPS-LFIMG,                "actual qty delivered
            ERDAT LIKE LIKP-ERDAT,                "date created
            ERZET LIKE LIKP-ERZET,                "time created
          END OF ITAB3.
    define internal table for SO item / delivery cross reference
    DATA: BEGIN OF ITAB4 OCCURS 0,
            VBELV LIKE VBFA-VBELV,                "sales document
            POSNV LIKE VBFA-POSNV,                "sales document item
            VBELN LIKE VBFA-VBELN,                "delivery number
            POSNN LIKE VBFA-POSNN,                "delivery item
            VBTYP_N LIKE VBFA-VBTYP_N,            "document category
            RFMNG LIKE VBFA-RFMNG,                "qty delivered
            PLMIN LIKE VBFA-PLMIN,                "plus/minus flag
          END OF ITAB4.
    define local variables
    DATA: ORDR_QTY LIKE VBEP-WMENG,          "order qty
          CONF_QTY LIKE VBEP-BMENG,          "confirmed qty
          NOCONF_QTY LIKE VBEP-BMENG,        "qty not confirmed
          DELV_QTY LIKE VBEP-WMENG,          "qty delivered
          NODELV_QTY LIKE VBEP-WMENG,        "qty not delivered
          REMAIN_QTY LIKE VBEP-WMENG,        "qty remain to get conf date
          REQ_DATE LIKE VBEP-EDATU,          "request date
          COM_DATE LIKE VBEP-EDATU,          "committed date
          DELV_QTY1 LIKE VBEP-WMENG,         "preceding delivery qty
          REMAIN_QTY1 LIKE VBEP-WMENG,       "qty remain to get reqest date
          REMAIN_QTY2 LIKE VBEP-WMENG,       "qty remain to get commit date
          THIRD_QTY LIKE VBEP-WMENG,         "3rd party no PO qty
          SO_STOCK LIKE MSKA-KALAB,          "sales order stock
          ZPRICE LIKE VBAP-NETPR,            "unit price USD
          ADRS1(40) TYPE C,                  "concatenated city and region
          ADRS2(45) TYPE C,                  "city, region and country
          ADRS3(80) TYPE C,                  "name, city, rgn, ctry
          ZCNTR TYPE I.                      "counter
    define select options
    SELECTION-SCREEN BEGIN OF BLOCK BLK1 WITH FRAME TITLE TEXT-001.
    SELECT-OPTIONS: S_VKORG FOR VBAK-VKORG DEFAULT '1000',
      S_VTWEG FOR VBAK-VTWEG DEFAULT '10' NO-DISPLAY,
      S_SPART FOR VBAK-SPART DEFAULT '00' NO-DISPLAY,
      S_KUNNR FOR VBPA-KUNNR MATCHCODE OBJECT DEBI,
      S_KUNWE FOR VBPA-KUNNR MATCHCODE OBJECT DEBI.
    SELECTION-SCREEN SKIP.
    SELECT-OPTIONS:
      S_BZIRK FOR VBKD-BZIRK,
      S_PRCTR FOR VBAP-PRCTR,
      S_MATNR FOR VBAP-MATNR MATCHCODE OBJECT MAT1,
      S_ERNAM FOR VBAK-ERNAM,
      S_ERDAT FOR VBAP-ERDAT.
    SELECTION-SCREEN END OF BLOCK BLK1.
    AT SELECTION-SCREEN.
      IF S_KUNNR IS INITIAL AND S_KUNWE IS INITIAL.
        MESSAGE E005(ZM) WITH TEXT-100.
      ENDIF.
    MAIN PROGRAM
    INITIALIZATION.
      INCLUDE ZSYHEADR.
    START-OF-SELECTION.
      PERFORM 100_GET_SO_ITEMS.
      PERFORM 200_GET_NO_DELIVERY.
      PERFORM 300_GET_NO_GOODS_ISSUE.
      PERFORM 400_GET_PARTIAL_DELIVERY.
      PERFORM 500_GET_THIRD_PARTY.
      PERFORM 900_CREATE_LIST.
    FORM 100_GET_SO_ITEMS
    FORM 100_GET_SO_ITEMS.
    get SO's for selected ship-to and sold-to customers
      REFRESH TVBPA.
      IF NOT S_KUNNR IS INITIAL.
        SELECT VBELN POSNR PARVW KUNNR
          FROM VBPA INTO TABLE TVBPA
         WHERE KUNNR IN S_KUNNR AND PARVW = 'AG' AND VBELN < '0080000000'.
      ENDIF.
      IF NOT S_KUNWE IS INITIAL.
        SELECT VBELN POSNR PARVW KUNNR
          FROM VBPA APPENDING TABLE TVBPA
          WHERE KUNNR IN S_KUNWE AND PARVW = 'WE' AND VBELN < '0080000000'.
      ENDIF.
      DESCRIBE TABLE TVBPA LINES ZCNTR.
      IF ZCNTR = 0.
        WRITE: /1 'No data found for selection'.
        STOP.
      ENDIF.
    eliminate duplicate SO's
      LOOP AT TVBPA.
        CLEAR ITAB0.
        MOVE TVBPA-VBELN TO ITAB0-VBELN.
        APPEND ITAB0.
      ENDLOOP.
      DELETE ADJACENT DUPLICATES FROM ITAB0.
    get SO detail
      SELECT VBAP~VBELN VBAP~POSNR VBAP~MATNR VBAP~ARKTX VBAP~PSTYV
          VBAP~KDMAT VBAP~NETWR VBAP~WAERK VBAP~KWMENG VBAP~ERDAT
          VBAP~NETPR VBAP~KPEIN VBAP~PRCTR VBAK~ERNAM VBAK~AUART
          VBAK~VKORG VBAK~VTWEG VBAK~VDATU VBAK~BNAME VBAK~KUNNR
          VBKD~BZIRK VBKD~KURSK VBKD~BSTKD VBUP~LFGSA VBUP~FKSAA
        FROM VBAP INNER JOIN VBUP ON VBUP~VBELN = VBAP~VBELN AND
            VBUP~POSNR = VBAP~POSNR
          INNER JOIN VBKD ON VBKD~VBELN = VBAP~VBELN AND
            VBKD~POSNR = VBAP~POSNR
          INNER JOIN VBAK ON VBAK~VBELN = VBAP~VBELN
        INTO TABLE ITAB FOR ALL ENTRIES IN ITAB0
        WHERE VBAP~VBELN = ITAB0-VBELN AND VBAP~MATNR IN S_MATNR AND
          VBAP~ERDAT IN S_ERDAT AND VBAP~PRCTR IN S_PRCTR AND
          VBAP~ABGRU = SPACE AND VBKD~BZIRK IN S_BZIRK AND
          VBAK~VKORG IN S_VKORG AND VBAK~VTWEG IN S_VTWEG AND
          VBAK~SPART IN S_SPART AND VBAK~KUNNR IN S_KUNNR AND
          VBAK~ERNAM IN S_ERNAM.
      IF SY-SUBRC <> 0.
        WRITE: /1 'No data found for selection'.
        STOP.
      ENDIF.
    loop thru SO items
      LOOP AT ITAB.
    get ship-to customer
        IF NOT S_KUNWE IS INITIAL.
          CLEAR TVBPA.
          READ TABLE TVBPA WITH TABLE KEY VBELN = ITAB-VBELN
            POSNR = ITAB-POSNR PARVW = 'WE'.
          IF SY-SUBRC <> 0.
            READ TABLE TVBPA WITH TABLE KEY VBELN = ITAB-VBELN
              POSNR = '000000' PARVW = 'WE'.
          ENDIF.
          MOVE TVBPA-KUNNR TO ITAB-KUNWE.
        ELSE.
          CLEAR ITAB-KUNWE.
          SELECT SINGLE KUNNR FROM VBPA INTO ITAB-KUNWE
            WHERE VBELN = ITAB-VBELN AND POSNR = ITAB-POSNR AND
              PARVW = 'WE'.
          IF SY-SUBRC <> 0.
            SELECT SINGLE KUNNR FROM VBPA INTO ITAB-KUNWE
              WHERE VBELN = ITAB-VBELN AND POSNR = '000000' AND
                PARVW = 'WE'.
          ENDIF.
        ENDIF.
        IF NOT ITAB-KUNWE IN S_KUNWE.
          DELETE ITAB.
          CONTINUE.
        ENDIF.
    get ship-to customer address info
        SELECT SINGLE NAME1 ORT01 REGIO LAND1 FROM KNA1
          INTO (ITAB-NAME1, ITAB-ORT01, ITAB-REGIO, ITAB-LAND1)
          WHERE KUNNR = ITAB-KUNWE.
        MODIFY ITAB.
      ENDLOOP.
      SORT ITAB BY VBELN POSNR.
    ENDFORM.
    FORM 200_GET_NO_DELIVERY
    get detail for SO items w/ no deliveries for order document types
      (ZZOR, ZZC1, ZZCO, ZZRP, ZZRW, KE, KR, ZCHP, ZPSO, ZZNC)
    FORM 200_GET_NO_DELIVERY.
      LOOP AT ITAB WHERE AUART = 'ZZOR' OR AUART = 'ZZC1' OR
        AUART = 'ZZCO' OR AUART = 'ZZRP' OR AUART = 'ZZRW' OR
        AUART = 'KE' OR AUART = 'KR' OR AUART = 'ZCHP' OR
        AUART = 'ZPSO' OR AUART = 'ZZNC'.
    select if delivery status = A (not delivered)
        IF ITAB-LFGSA = 'A'.
    assign values to detail fields
          CLEAR ITAB1.
          ITAB1-KUNNR = ITAB-KUNNR.
          ITAB1-KUNWE = ITAB-KUNWE.
          ITAB1-VBELN = ITAB-VBELN.
          ITAB1-POSNR = ITAB-POSNR.
          IF ITAB-KURSK = 0.
            ITAB-KURSK = 1.
          ENDIF.
          IF ITAB-KPEIN = 0.
            ITAB-KPEIN = 1.
          ENDIF.
    select schedule lines for SO item and write to internal table itab2a
          SELECT WADAT VBELN POSNR WMENG BMENG
            FROM VBEP INTO TABLE ITAB2A
            WHERE VBELN = ITAB-VBELN AND POSNR = ITAB-POSNR.
    select sched lines w/request date and write to internal table itab2b
          SELECT EDATU VBELN POSNR WMENG
            FROM VBEP INTO TABLE ITAB2B
            WHERE VBELN = ITAB-VBELN AND POSNR = ITAB-POSNR AND
              WMENG <> 0.
    select sched lines w/commit date and write to internal table itab2c
          SELECT EDATU VBELN POSNR ROMS1
            FROM VBEP INTO TABLE ITAB2C
            WHERE VBELN = ITAB-VBELN AND POSNR = ITAB-POSNR AND
              ROMS1 <> 0.
          SORT ITAB2A BY WADAT.
          SORT ITAB2B BY EDATU.
          SORT ITAB2C BY EDATU.
          ORDR_QTY = 0.
          CONF_QTY = 0.
          NOCONF_QTY = 0.
    calculate the unconfirmed qty for a SO item
          LOOP AT ITAB2A.
            CONF_QTY = CONF_QTY + ITAB2A-BMENG.
            ORDR_QTY = ORDR_QTY + ITAB2A-WMENG.
          ENDLOOP.
          NOCONF_QTY = ORDR_QTY - CONF_QTY.
          LOOP AT ITAB2A WHERE BMENG <> 0.
            PERFORM GET_REQUEST_DATE TABLES ITAB2B
              USING ITAB2A-BMENG REQ_DATE.
            PERFORM GET_COMMIT_DATE TABLES ITAB2C
              USING ITAB2A-BMENG COM_DATE.
            ITAB1-ZDATE1 = REQ_DATE.
            ITAB1-ZDATE2 = ITAB2A-WADAT.
            ITAB1-ZDATE3 = COM_DATE.
            ITAB1-ZQTY1 = ITAB-KWMENG.
            ITAB1-ZQTY2 = ITAB2A-BMENG.
            ITAB1-ZDESC = 'no delivery, confirmed'.
    calculate net value for backlog qty
            ZPRICE = ( ITAB-NETPR / ITAB-KPEIN ) * ITAB-KURSK.
            ITAB1-ZEXTD = ITAB1-ZQTY2 * ZPRICE.
    if order type is consignment return (KR), reverse sign
            IF ITAB-AUART = 'KR'.
              ITAB1-ZQTY1 = ITAB1-ZQTY1 * -1.
              ITAB1-ZQTY2 = ITAB1-ZQTY2 * -1.
              ITAB1-ZEXTD = ITAB1-ZEXTD * -1.
            ENDIF.
            APPEND ITAB1.
          ENDLOOP.
    get request date for SO item
          IF NOCONF_QTY <> 0.
            PERFORM GET_REQUEST_DATE TABLES ITAB2B
              USING NOCONF_QTY REQ_DATE.
            PERFORM GET_COMMIT_DATE TABLES ITAB2C
              USING NOCONF_QTY COM_DATE.
            ITAB1-ZDATE1 = REQ_DATE.
            ITAB1-ZDATE2 = '99991231'.
            ITAB1-ZDATE3 = COM_DATE.
            ITAB1-ZQTY1 = ITAB-KWMENG.
            ITAB1-ZQTY2 = NOCONF_QTY.
            ITAB1-ZDESC = 'no delivery, not confirmed'.
    calculate net value for backlog qty
            ZPRICE = ( ITAB-NETPR / ITAB-KPEIN ) * ITAB-KURSK.
            ITAB1-ZEXTD = ITAB1-ZQTY2 * ZPRICE.
    if order type is consignment return (KR), reverse sign
            IF ITAB-AUART = 'KR'.
              ITAB1-ZQTY1 = ITAB1-ZQTY1 * -1.
              ITAB1-ZQTY2 = ITAB1-ZQTY2 * -1.
              ITAB1-ZEXTD = ITAB1-ZEXTD * -1.
            ENDIF.
            APPEND ITAB1.
          ENDIF.
        ENDIF.
      ENDLOOP.
    ENDFORM.
    FORM 300_GET_NO_GOODS_ISSUE
    get detail for SO items w/deliveries and no goods issue for
      doc types (ZZOR, ZZC1, ZZCO, ZZRP, ZZRW, KE, KR, ZCHP, ZPSO, ZZNC)
    FORM 300_GET_NO_GOODS_ISSUE.
    get detail for deliveries w/no goods issue
      SELECT VBELN WADAT WADAT_IST ERDAT ERZET
        FROM LIKP INTO (LIKP-VBELN, LIKP-WADAT, LIKP-WADAT_IST,
          LIKP-ERDAT, LIKP-ERZET)
        WHERE WADAT_IST = 0.
    select if actual qty delivered <> 0
        CLEAR LIPS.
        SELECT POSNR VGBEL VGPOS LFIMG
          FROM LIPS INTO (LIPS-POSNR, LIPS-VGBEL, LIPS-VGPOS, LIPS-LFIMG)
          WHERE VBELN = LIKP-VBELN AND LFIMG <> 0.
    select if goods movement status on delivery = A (no goods issue)
          CLEAR VBUP.
          SELECT SINGLE WBSTA FROM VBUP INTO VBUP-WBSTA
            WHERE VBELN = LIKP-VBELN AND POSNR = LIPS-POSNR.
          IF VBUP-WBSTA = 'A'.
            CLEAR ITAB3.
            ITAB3-VGBEL = LIPS-VGBEL.
            ITAB3-VGPOS = LIPS-VGPOS.
            ITAB3-VBELN = LIKP-VBELN.
            ITAB3-POSNR = LIPS-POSNR.
            ITAB3-WADAT = LIKP-WADAT.
            ITAB3-WADAT_IST = LIKP-WADAT_IST.
            ITAB3-LFIMG = LIPS-LFIMG.
            ITAB3-ERDAT = LIKP-ERDAT.
            ITAB3-ERZET = LIKP-ERZET.
            APPEND ITAB3.
          ENDIF.
        ENDSELECT.
      ENDSELECT.
      SORT ITAB3 BY VGBEL VGPOS VBELN POSNR.
    loop thru deliveries w/no goods issue and get SO item detail
      LOOP AT ITAB3.
        CLEAR ITAB.
        READ TABLE ITAB WITH KEY VBELN = ITAB3-VGBEL POSNR = ITAB3-VGPOS.
        IF SY-SUBRC <> 0.
          IF ITAB-AUART = 'ZZOR' OR ITAB-AUART = 'ZZC1' OR
            ITAB-AUART = 'ZZCO' OR ITAB-AUART = 'ZZRP' OR
            ITAB-AUART = 'ZZRW' OR ITAB-AUART = 'KE' OR
            ITAB-AUART = 'KR' OR ITAB-AUART = 'ZCHP' OR
            ITAB-AUART = 'ZPSO' OR ITAB-AUART = 'ZZNC'.
    assign values to detail fields
            CLEAR ITAB1.
            ITAB1-KUNNR = ITAB-KUNNR.
            ITAB1-KUNWE = ITAB-KUNWE.
            ITAB1-VBELN = ITAB-VBELN.
            ITAB1-POSNR = ITAB-POSNR.
            IF ITAB-KURSK = 0.
              ITAB-KURSK = 1.
            ENDIF.
            IF ITAB-KPEIN = 0.
              ITAB-KPEIN = 1.
            ENDIF.
    select delivery qty for SO item and write to internal table
            SELECT VBELV POSNV VBELN POSNN VBTYP_N RFMNG PLMIN
              FROM VBFA INTO TABLE ITAB4
              WHERE VBELV = ITAB-VBELN AND POSNV = ITAB-POSNR AND
                ( VBTYP_N = 'J' OR VBTYP_N = 'T' ).
    calculate total delivery qty for SO item
            DELV_QTY = 0.
            DELV_QTY1 = 0.
            LOOP AT ITAB4.
              IF ITAB4-VBTYP_N = 'J' OR ( ITAB4-VBTYP_N = 'T' AND
                  ITAB-AUART = 'KR').
                IF ITAB4-PLMIN = '-'.
                  ITAB4-RFMNG = ITAB4-RFMNG * -1.
                ENDIF.
    determine if delivery for SO item precedes delivery w/no goods
      issue (to determine request date and qty)
                CLEAR LIKP.
                SELECT SINGLE ERDAT ERZET
                  FROM LIKP INTO (LIKP-ERDAT, LIKP-ERZET)
                  WHERE VBELN = ITAB4-VBELN.
                IF LIKP-ERDAT < ITAB3-ERDAT OR ( LIKP-ERDAT = ITAB3-ERDAT
                    AND LIKP-ERZET < ITAB3-ERZET ).
                  DELV_QTY1 = DELV_QTY1 + ITAB4-RFMNG.
                ENDIF.
                DELV_QTY = DELV_QTY + ITAB4-RFMNG.
              ENDIF.
            ENDLOOP.
    get request dates for SO item
            REFRESH ITAB2B.
            SELECT EDATU VBELN POSNR WMENG
              FROM VBEP INTO TABLE ITAB2B
              WHERE VBELN = ITAB-VBELN AND POSNR = ITAB-POSNR AND
                WMENG <> 0.
    select sched lines w/commit date and write to itab2c
            REFRESH ITAB2C.
            SELECT EDATU VBELN POSNR ROMS1
              FROM VBEP INTO TABLE ITAB2C
              WHERE VBELN = ITAB-VBELN AND POSNR = ITAB-POSNR AND
                ROMS1 <> 0.
            SORT ITAB2B BY EDATU.
            SORT ITAB2C BY EDATU.
    loop thru request dates and delete request date entries for
      quantity(s) for preceding deliveries
            REMAIN_QTY1 = DELV_QTY1.
            LOOP AT ITAB2B.
              IF ITAB2B-WMENG > REMAIN_QTY1.
                ITAB2B-WMENG = ITAB2B-WMENG - REMAIN_QTY1.
                MODIFY ITAB2B.
                EXIT.
              ELSEIF ITAB2B-WMENG = REMAIN_QTY1.
                DELETE ITAB2B.
                EXIT.
              ELSE.
                REMAIN_QTY1 = REMAIN_QTY1 - ITAB2B-WMENG.
                DELETE ITAB2B.
              ENDIF.
            ENDLOOP.
    loop thru commit dates and delete commit date entries for
      quantity(s) for preceding deliveries
            REMAIN_QTY2 = DELV_QTY1.
            LOOP AT ITAB2C.
              IF ITAB2C-ROMS1 > REMAIN_QTY2.
                ITAB2C-ROMS1 = ITAB2C-ROMS1 - REMAIN_QTY2.
                MODIFY ITAB2C.
                EXIT.
              ELSEIF ITAB2C-ROMS1 = REMAIN_QTY2.
                DELETE ITAB2C.
                EXIT.
              ELSE.
                REMAIN_QTY2 = REMAIN_QTY2 - ITAB2C-ROMS1.
                DELETE ITAB2C.
              ENDIF.
            ENDLOOP.
    if planned goods issue date is 0, put qty in non-confirmed
    get request date for SO item
            IF ITAB3-WADAT <> 0.
              PERFORM GET_REQUEST_DATE TABLES ITAB2B
                USING ITAB3-LFIMG REQ_DATE.
              PERFORM GET_COMMIT_DATE TABLES ITAB2C
                USING ITAB3-LFIMG COM_DATE.
              ITAB1-ZDATE1 = REQ_DATE.
              ITAB1-ZDATE2 = ITAB3-WADAT.
              ITAB1-ZDATE3 = COM_DATE.
              ITAB1-ZQTY1 = ITAB-KWMENG.
              ITAB1-ZQTY2 = ITAB3-LFIMG.
              ITAB1-ZDESC = 'delivery, no goods issue'.
            ELSE.
              PERFORM GET_REQUEST_DATE TABLES ITAB2B
                USING ITAB3-LFIMG REQ_DATE.
              PERFORM GET_COMMIT_DATE TABLES ITAB2C
                USING ITAB3-LFIMG COM_DATE.
              ITAB1-ZDATE1 = REQ_DATE.
              ITAB1-ZDATE2 = '99991231'.
              ITAB1-ZDATE3 = COM_DATE.
              ITAB1-ZQTY1 = ITAB-KWMENG.
              ITAB1-ZQTY2 = ITAB3-LFIMG.
              ITAB1-ZDESC = 'delivery, no goods issue date'.
            ENDIF.
    calculate net value for backlog qty
            ZPRICE = ( ITAB-NETPR / ITAB-KPEIN ) * ITAB-KURSK.
            ITAB1-ZEXTD = ITAB1-ZQTY2 * ZPRICE.
    if order type is consignment return (KR), reverse sign
            IF ITAB-AUART = 'KR'.
              ITAB1-ZQTY1 = ITAB1-ZQTY1 * -1.
              ITAB1-ZQTY2 = ITAB1-ZQTY2 * -1.
              ITAB1-ZEXTD = ITAB1-ZEXTD * -1.
            ENDIF.
            APPEND ITAB1.
          ENDIF.
        ENDIF.
      ENDLOOP.
    ENDFORM.
    FORM 400_GET_PARTIAL_DELIVERY
    get detail for SO items w/partial deliveries for document types
      (ZZOR, ZZC1, ZZCO, ZZRP, ZZRW, KE, KR, ZCHP, ZPSO, ZZNC)
    FORM 400_GET_PARTIAL_DELIVERY.
    process SO items for selected order types
      LOOP AT ITAB WHERE AUART = 'ZZOR' OR AUART = 'ZZC1' OR
          AUART = 'ZZCO' OR AUART = 'ZZRP' OR AUART = 'ZZRW' OR
          AUART = 'KE' OR AUART = 'KR' OR AUART = 'ZCHP' OR
          AUART = 'ZPSO' OR AUART = 'ZZNC'.
    select if delivery status = B (partially delivered)
        IF ITAB-LFGSA = 'B'.
    assign values to detail fields
          CLEAR ITAB1.
          ITAB1-KUNNR = ITAB-KUNNR.
          ITAB1-KUNWE = ITAB-KUNWE.
          ITAB1-VBELN = ITAB-VBELN.
          ITAB1-POSNR = ITAB-POSNR.
          IF ITAB-KURSK = 0.
            ITAB-KURSK = 1.
          ENDIF.
          IF ITAB-KPEIN = 0.
            ITAB-KPEIN = 1.
          ENDIF.
    select delivery qty for SO item and write to internal table
          SELECT VBELV POSNV VBELN POSNN VBTYP_N RFMNG PLMIN
            FROM VBFA INTO TABLE ITAB4
            WHERE VBELV = ITAB-VBELN AND POSNV = ITAB-POSNR AND
              ( VBTYP_N = 'J' OR VBTYP_N = 'T' ).
    calculate total delivery qty for SO item
          DELV_QTY = 0.
          LOOP AT ITAB4.
            IF ITAB4-VBTYP_N = 'J' OR ( ITAB4-VBTYP_N = 'T' AND
                ITAB-AUART = 'KR').
              IF ITAB4-PLMIN = '-'.
                ITAB4-RFMNG = ITAB4-RFMNG * -1.
              ENDIF.
              DELV_QTY = DELV_QTY + ITAB4-RFMNG.
            ENDIF.
          ENDLOOP.
    select schedule lines for SO item and write to internal table
          REFRESH ITAB2A.
          SELECT WADAT VBELN POSNR WMENG BMENG
            FROM VBEP INTO TABLE ITAB2A
            WHERE VBELN = ITAB-VBELN AND POSNR = ITAB-POSNR.
    get request dates from schedule line table
          REFRESH ITAB2B.
          SELECT EDATU VBELN POSNR WMENG
            FROM VBEP INTO TABLE ITAB2B
            WHERE VBELN = ITAB-VBELN AND POSNR = ITAB-POSNR AND
              WMENG <> 0.
    get commit dates from schedule line table
          REFRESH ITAB2C.
          SELECT EDATU VBELN POSNR ROMS1
            FROM VBEP INTO TABLE ITAB2C
            WHERE VBELN = ITAB-VBELN AND POSNR = ITAB-POSNR AND
              ROMS1 <> 0.
          SORT ITAB2B BY EDATU.
          SORT ITAB2C BY EDATU.
          SORT ITAB2A BY WADAT.
    loop thru request dates and delete request date entries for
      quantity(s) already delivered
          REMAIN_QTY1 = DELV_QTY.
          LOOP AT ITAB2B.
            IF ITAB2B-WMENG > REMAIN_QTY1.
              ITAB2B-WMENG = ITAB2B-WMENG - REMAIN_QTY1.
              MODIFY ITAB2B.
              EXIT.
            ELSEIF ITAB2B-WMENG = REMAIN_QTY1.
              DELETE ITAB2B.
              EXIT.
            ELSE.
              REMAIN_QTY1 = REMAIN_QTY1 - ITAB2B-WMENG.
              DELETE ITAB2B.
            ENDIF.
          ENDLOOP.
    loop thru commit dates and delete request date entries for
      quantity(s) already delivered
          REMAIN_QTY2 = DELV_QTY.
          LOOP AT ITAB2C.
            IF ITAB2C-ROMS1 > REMAIN_QTY2.
              ITAB2C-ROMS1 = ITAB2C-ROMS1 - REMAIN_QTY2.
              MODIFY ITAB2C.
              EXIT.
            ELSEIF ITAB2C-ROMS1 = REMAIN_QTY2.
              DELETE ITAB2C.
              EXIT.
            ELSE.
              REMAIN_QTY2 = REMAIN_QTY2 - ITAB2C-ROMS1.
              DELETE ITAB2C.
            ENDIF.
          ENDLOOP.
           ORDR_QTY = 0.
           CONF_QTY = 0.
           NOCONF_QTY = 0.
    calculate the unconfirmed qty for SO item
          LOOP AT ITAB2A.
            ORDR_QTY = ORDR_QTY + ITAB2A-WMENG.
            CONF_QTY = CONF_QTY + ITAB2A-BMENG.
          ENDLOOP.
          NOCONF_QTY = ORDR_QTY - CONF_QTY.
          NODELV_QTY = ORDR_QTY - DELV_QTY.
    loop thru schedule lines and process entries with no related
      delivery(s)
          REMAIN_QTY = DELV_QTY.
          LOOP AT ITAB2A.
            IF ITAB2A-BMENG <> 0.
              IF ITAB2A-BMENG <= REMAIN_QTY.
                REMAIN_QTY = REMAIN_QTY - ITAB2A-BMENG.
              ELSE.
                ITAB2A-BMENG = ITAB2A-BMENG - REMAIN_QTY.
                PERFORM GET_REQUEST_DATE TABLES ITAB2B
                  USING ITAB2A-BMENG REQ_DATE.
                PERFORM GET_COMMIT_DATE TABLES ITAB2C
                  USING ITAB2A-BMENG COM_DATE.
                ITAB1-ZDATE1 = REQ_DATE.
                ITAB1-ZDATE2 = ITAB2A-WADAT.
                ITAB1-ZDATE3 = COM_DATE.
                ITAB1-ZQTY1 = ITAB-KWMENG.
                ITAB1-ZQTY2 = ITAB2A-BMENG.
                ITAB1-ZDESC = 'partial delivery'.
    calculate net value for backlog qty
                ZPRICE = ( ITAB-NETPR / ITAB-KPEIN ) * ITAB-KURSK.
                ITAB1-ZEXTD = ITAB1-ZQTY2 * ZPRICE.
    if order type is consignment return (KR), reverse sign
                IF ITAB-AUART = 'KR'.
                  ITAB1-ZQTY1 = ITAB1-ZQTY1 * -1.
                  ITAB1-ZQTY2 = ITAB1-ZQTY2 * -1.
                  ITAB1-ZEXTD = ITAB1-ZEXTD * -1.
                ENDIF.
                APPEND ITAB1.
                REMAIN_QTY = 0.
              ENDIF.
            ENDIF.
          ENDLOOP.
    if total unconfirmed >= total not delivered, qty is unconfirmed
          IF NOCONF_QTY >= NODELV_QTY.
            PERFORM GET_REQUEST_DATE TABLES ITAB2B
              USING NODELV_QTY REQ_DATE.
            PERFORM GET_COMMIT_DATE TABLES ITAB2C
              USING NODELV_QTY COM_DATE.
            ITAB1-ZDATE1 = REQ_DATE.
            ITAB1-ZDATE2 = '99991231'.
            ITAB1-ZDATE3 = COM_DATE.
            ITAB1-ZQTY1 = ITAB-KWMENG.
            ITAB1-ZQTY2 = NODELV_QTY.
            ITAB1-ZDESC = 'partial delv, not confirmed'.
    calculate net value for backlog qty
            ZPRICE = ( ITAB-NETPR / ITAB-KPEIN ) * ITAB-KURSK.
            ITAB1-ZEXTD = ITAB1-ZQTY2 * ZPRICE.
    if order type is consignment return (KR), reverse sign
            IF ITAB-AUART = 'KR'.
              ITAB1-ZQTY1 = ITAB1-ZQTY1 * -1.
              ITAB1-ZQTY2 = ITAB1-ZQTY2 * -1.
              ITAB1-ZEXTD = ITAB1-ZEXTD * -1.
            ENDIF.
            APPEND ITAB1.
          ENDIF.
        ENDIF.
      ENDLOOP.
    ENDFORM.
    FORM 500_GET_THIRD_PARTY
    get detail for third party SO items
    FORM 500_GET_THIRD_PARTY.
    process SO items for selected order types
      LOOP AT ITAB WHERE PSTYV = 'TAS' AND ( AUART = 'ZZOR' OR
        AUART = 'ZZC1' OR AUART = 'ZZCO' OR AUART = 'ZZRP' OR
        AUART = 'ZZRW' OR AUART = 'KE' OR AUART = 'KR' OR
        AUART = 'ZCHP' OR AUART = 'ZPSO' OR AUART = 'ZZNC' ).
    select if billing status <> C (billed)
        IF ITAB-FKSAA <> 'C'.
    assign values to detail fields
          CLEAR ITAB1.
          ITAB1-KUNNR = ITAB-KUNNR.
          ITAB1-KUNWE = ITAB-KUNWE.
          ITAB1-VBELN = ITAB-VBELN.
          ITAB1-POSNR = ITAB-POSNR.
          IF ITAB-KURSK = 0.
            ITAB-KURSK = 1.
          ENDIF.
          IF ITAB-KPEIN = 0.
            ITAB-KPEIN = 1.
          ENDIF.
    get request dates from schedule line table
          REFRESH ITAB2B.
          SELECT EDATU VBELN POSNR WMENG
            FROM VBEP INTO TABLE ITAB2B
            WHERE VBELN = ITAB-VBELN AND POSNR = ITAB-POSNR AND
              WMENG <> 0.
    get commit dates from schedule line table
          REFRESH ITAB2C.
          SELECT EDATU VBELN POSNR ROMS1
            FROM VBEP INTO TABLE ITAB2C
            WHERE VBELN = ITAB-VBELN AND POSNR = ITAB-POSNR AND
              ROMS1 <> 0.
          SORT ITAB2B BY EDATU.
          SORT ITAB2C BY EDATU.
    get PO number(s) for SO item and write to internal table
          REFRESH ITAB4.
          SELECT VBELV POSNV VBELN POSNN VBTYP_N RFMNG PLMIN
            FROM VBFA INTO TABLE ITAB4
            WHERE VBELV = ITAB-VBELN AND POSNV = ITAB-POSNR AND
              VBTYP_N = 'V' AND RFMNG <> 0.
    calculate total delivery qty for PO item
          DELV_QTY = 0.
          LOOP AT ITAB4.
            IF ITAB4-PLMIN = '-'.
              ITAB4-RFMNG = ITAB4-RFMNG * -1.
            ENDIF.
            DELV_QTY = DELV_QTY + ITAB4-RFMNG.
          ENDLOOP.
    loop thru PO's for SO item
          LOOP AT ITAB4.
    select delivery lines for PO item
            SELECT EINDT EBELN EBELP MENGE FROM EKET
              INTO (EKET-EINDT, EKET-EBELN, EKET-EBELP, EKET-MENGE)
              WHERE EBELN = ITAB4-VBELN AND EBELP = ITAB4-POSNN.
              PERFORM GET_REQUEST_DATE TABLES ITAB2B
                USING EKET-MENGE REQ_DATE.
              PERFORM GET_COMMIT_DATE TABLES ITAB2C
                USING EKET-MENGE COM_DATE.
              ITAB1-ZDATE1 = REQ_DATE.
              ITAB1-ZDATE2 = EKET-EINDT.
              ITAB1-ZDATE3 = COM_DATE.
              ITAB1-ZQTY1 = ITAB-KWMENG.
              ITAB1-ZQTY2 = EKET-MENGE.
              ITAB1-ZDESC = '3rd party item'.
    calculate net value for backlog qty
              ZPRICE = ( ITAB-NETPR / ITAB-KPEIN ) * ITAB-KURSK.
              ITAB1-ZEXTD = ITAB1-ZQTY2 * ZPRICE.
              APPEND ITAB1.
            ENDSELECT.
          ENDLOOP.
    if total delivery qty < order qty, put remaining in non-confirmed
          IF DELV_QTY < ITAB-KWMENG.
            THIRD_QTY = ITAB-KWMENG - DELV_QTY.
            PERFORM GET_REQUEST_DATE TABLES ITAB2B
              USING THIRD_QTY REQ_DATE.
            PERFORM GET_COMMIT_DATE TABLES ITAB2C
              USING THIRD_QTY COM_DATE.
            ITAB1-ZDATE1 = REQ_DATE.
            ITAB1-ZDATE2 = '99991231'.
            ITAB1-ZDATE2 = COM_DATE.
            ITAB1-ZQTY1 = ITAB-KWMENG.
            ITAB1-ZQTY2 = THIRD_QTY.
            ITAB1-ZDESC = '3rd party item, no PO'.
    calculate net value for backlog qty
            ZPRICE = ( ITAB-NETPR / ITAB-KPEIN ) * ITAB-KURSK.
            ITAB1-ZEXTD = ITAB1-ZQTY2 * ZPRICE.
            APPEND ITAB1.
            CONTINUE.
          ENDIF.
        ENDIF.
      ENDLOOP.
    ENDFORM.
    FORM 900_CREATE_LIST
    process open business detail and create list
    FORM 900_CREATE_LIST.
    if internal table is empty, write message and exit
        DESCRIBE TABLE ITAB1 LINES ZCNTR.
        IF ZCNTR = 0.
          WRITE: / 'No Data Found for Selection'.
          STOP.
        ENDIF.
        SORT ITAB1 BY KUNNR KUNWE VBELN POSNR.
    loop thru sorted table and create list
        LOOP AT ITAB1.
          IF ITAB1-ZDATE1 = SPACE.
            ITAB1-ZDATE1 = '99991231'.
          ENDIF.
          IF ITAB1-ZDATE3 = SPACE.
            ITAB1-ZDATE3 = '99991231'.
          ENDIF.
    get SO item detail
          CLEAR ITAB.
          READ TABLE ITAB WITH KEY VBELN = ITAB1-VBELN
                                   POSNR = ITAB1-POSNR BINARY SEARCH.
    print sold-to and ship-to customer header info
          AT NEW KUNWE.
            CLEAR KNA1.
            SELECT SINGLE NAME1 FROM KNA1 INTO KNA1-NAME1
              WHERE KUNNR = ITAB1-KUNNR.
            CONCATENATE ITAB-ORT01 ITAB-REGIO INTO ADRS1 SEPARATED BY ', '.
            CONCATENATE ADRS1 ITAB-LAND1 INTO ADRS2 SEPARATED BY '   '.
            CONCATENATE ITAB-NAME1 ADRS2 INTO ADRS3 SEPARATED BY '   '.
            FORMAT COLOR 1 INTENSIFIED OFF.
            WRITE: /1 'Sold-to:', 10 ITAB1-KUNNR, 18 KNA1-NAME1,
              56 'Ship-to:', 65 ITAB1-KUNWE, 73 ADRS3.
            FORMAT RESET.
            SKIP.
          ENDAT.
    print out backlog detail
          CLEAR T171T.
          SELECT SINGLE BZTXT FROM T171T INTO T171T-BZTXT
            WHERE SPRAS = SY-LANGU AND BZIRK = ITAB-BZIRK.
          WRITE: /1 ITAB1-VBELN,
            13(6) ITAB1-POSNR NO-ZERO,
            21 ITAB-MATNR,
            41 ITAB-ARKTX,
            83 ITAB1-ZDATE1,
            95 ITAB1-ZDATE3,
            107 ITAB1-ZDATE2,
            119 ITAB-ERNAM,
            129 ITAB-BZIRK, 135 T171T-BZTXT,
            157(20) ITAB-BSTKD,
            179(12) ITAB1-ZQTY1 DECIMALS 0,
            193(12) ITAB1-ZQTY2 DECIMALS 0,
            207(16) ITAB1-ZEXTD DECIMALS 2,
            225 ITAB1-ZDESC.
          AT END OF VBELN.
            SKIP.
          ENDAT.
    print footing at ship-to customer
          AT END OF KUNWE.
            SUM.
            ULINE: /193(12), 207(16).
            FORMAT COLOR 1 INTENSIFIED OFF.
            WRITE: /1 'Total:  Sold-to:', 18 ITAB1-KUNNR,
              25 '/', 27 'Ship-to:', 36 ITAB1-KUNWE,
              193(12) ITAB1-ZQTY2 DECIMALS 0,
              207(16) ITAB1-ZEXTD DECIMALS 2.
            FORMAT RESET.
            SKIP 2.
          ENDAT.
          AT LAST.
            SUM.
            ULINE: /193(12), 207(16).
            FORMAT COLOR 1 INTENSIFIED ON.
            WRITE: /1 'Report Total:',
              193(12) ITAB1-ZQTY2 DECIMALS 0,
              207(16) ITAB1-ZEXTD DECIMALS 2.
            FORMAT RESET.
          ENDAT.
        ENDLOOP.
    ENDFORM.
    FORM GET_REQUEST_DATE
    subroutine to get request date for SO item
    FORM GET_REQUEST_DATE TABLES FTAB STRUCTURE ITAB2B
                          USING CONF_QTY REQ_DATE.
    DATA: REMAIN LIKE VBEP-WMENG,                 "qty remaining
          CNTR TYPE I,                            "loop counter
          TAB_INDEX TYPE I.                       "table index
    initialize
      REMAIN = 0.
      REQ_DATE = SPACE.
    get first request date from table
      TAB_INDEX = 1.
      READ TABLE FTAB INDEX TAB_INDEX.
    if request date not found, set request date to blank
      IF SY-SUBRC <> 0.
        REQ_DATE = SPACE.
        EXIT.
      ELSE.
        REQ_DATE =  FTAB-EDATU.
      ENDIF.
    calculate quantity remaining for request date
      REMAIN = FTAB-WMENG - CONF_QTY.
    if qty remaining > 0, update request date with qty remaining
      IF REMAIN > 0.
        FTAB-WMENG = REMAIN.
        MODIFY FTAB INDEX TAB_INDEX.
    if qty remaining = 0, delete request date (so next request
      date will be used for next confirmed qty)
      ELSEIF REMAIN = 0.
        DELETE FTAB INDEX TAB_INDEX.
    if qty remaining < 0, find next request date and update
      ELSE.
        CNTR = 0.
        WHILE REMAIN < 0 OR CNTR < 10.
          DELETE FTAB INDEX TAB_INDEX.
          TAB_INDEX = TAB_INDEX + 1.
          READ TABLE FTAB INDEX TAB_INDEX.
          REMAIN = REMAIN + FTAB-WMENG.
          CNTR = CNTR + 1.
        ENDWHILE.
        IF REMAIN = 0.
          DELETE FTAB INDEX TAB_INDEX.
        ELSEIF REMAIN > 0.
          FTAB-WMENG = REMAIN.
          MODIFY FTAB INDEX TAB_INDEX.
        ENDIF.
      ENDIF.
    ENDFORM.
    FORM GET_COMMIT_DATE
    subroutine to get commit date for SO item
    FORM GET_COMMIT_DATE TABLES CTAB STRUCTURE ITAB2C
                          USING CONF_QTY COM_DATE.
    DATA: REMAIN LIKE VBEP-WMENG,                 "qty remaining
          CNTR TYPE I,                            "loop counter
          TAB_INDEX TYPE I.                       "table index
    initialize
      REMAIN = 0.
      COM_DATE = SPACE.
    get first commit date from table
      TAB_INDEX = 1.
      READ TABLE CTAB INDEX TAB_INDEX.
    if request date not found, set request date to blank
      IF SY-SUBRC <> 0.
        COM_DATE = SPACE.
        EXIT.
      ELSE.
        COM_DATE =  CTAB-EDATU.
      ENDIF.
    calculate quantity remaining for request date
      REMAIN = CTAB-ROMS1 - CONF_QTY.
    if qty remaining > 0, update request date with qty remaining
      IF REMAIN > 0.
        CTAB-ROMS1 = REMAIN.
        MODIFY CTAB INDEX TAB_INDEX.
    if qty remaining = 0, delete request date (so next request
      date will be used for next confirmed qty)
      ELSEIF REMAIN = 0.
        DELETE CTAB INDEX TAB_INDEX.
    if qty remaining < 0, find next request date and update
      ELSE.
        CNTR = 0.
        WHILE REMAIN < 0 OR CNTR < 10.
          DELETE CTAB INDEX TAB_INDEX.
          TAB_INDEX = TAB_INDEX + 1.
          READ TABLE CTAB INDEX TAB_INDEX.
          REMAIN = REMAIN + CTAB-ROMS1.
          CNTR = CNTR + 1.
        ENDWHILE.
        IF REMAIN = 0.
          DELETE CTAB INDEX TAB_INDEX.
        ELSEIF REMAIN > 0.
          CTAB-ROMS1 = REMAIN.
          MODIFY CTAB INDEX TAB_INDEX.
        ENDIF.
      ENDIF.
    ENDFORM.
    END-OF-REPORT.

  • Code snippet in a ALV report

    hello experts
    I would like to calclute the invoice value and display in the output (invoice value = VBEP-NETWR/VBEP-FKIMG) , where should i add the code? In the select stament? code help is higly appreciated.
    Thanks
    mohan 
    follows the program
    Global structure of list
    type-pools: slis.
    tables: likp,
            lips,
            vbfa,
            kssk,
            klah,
            ausp,
            cabn,
            vbak,
            mara,
            vbrk,
            ser01,
            vbpa,
            nast,
            zseri,
            ltap,
            pa0001,
            kna1,
            objk,
            viqmel,
            viqmma.
    types:  begin of i_delivery,
                 vbeln like likp-vbeln,
                 posnr  like lips-posnr,
                 kunnr like likp-kunnr,
                 kunag like likp-kunag,
                 vkorg  like vbak-vkorg,
                 matnr  like lips-matnr,
                 lfart  like likp-lfart,
                 arktx  like vbap-arktx,
                 vgbel  like lips-vgbel,
                 vgpos  like lips-vgpos,
                 pstyv   like lips-pstyv,
                 wadat type likp-wadat,
                 lfdat type likp-lfdat,
                 prodh type lips-prodh,
                 lfimg type lips-lfimg,
                 vkbur type lips-vkbur,
                 werks type lips-werks,
                 vkgrp type lips-vkgrp,
                 mvgr1 type lips-mvgr1,
                 sernr like equi-sernr,
                 sernp like equi-sernr,
                 equnr like equi-equnr,
                 kttxt like qpct-kurztext,
                 bstnk  like vbak-bstnk,
                 vbelv  like lips-vgbel,
                 posnv  like lips-posnv,
                 uecha  like lips-uecha,
                 ernam  like vbak-ernam,
                 erdat like vbak-erdat,
                 serail like lips-serail,
                 anzsn like lips-anzsn,
                 auart like vbak-auart ,
                 netwr like vbap-netwr,
                 fstno like vbpa-pernr,
                 fstnm like pa0001-ename,
                 ename like pa0001-ename,
                 qname like ltap-qname,
                 name1 like kna1-name1,
                 name3 like kna1-name2,
                 pernr like vbpa-pernr,
                 aufnr like viqmel-aufnr,
                 qmnum like viqmel-qmnum,
                 mngrp like viqmma-mngrp,
                 qmcod like viqmel-qmcod,
                 qmcol like viqmma-mncod,
                 cotxt(20),
             end of i_delivery.
    Global structure of list
    */ Selection and Input Parameters
    selection-screen begin of block block2 with frame title text-003.
    select-options: s_vkorg for likp-vkorg no intervals.
    select-options: s_vbeln  for likp-vbeln,
                    s_lfart  for likp-lfart,
                    s_kunnr  for likp-kunnr,
                    s_erdat  for likp-erdat,
                    s_wadat  for likp-wadat,
                    s_werks  for lips-werks,
                    s_matnr  for lips-matnr,
                    s_prodh  for lips-prodh,
                    s_qmnum for viqmel-qmnum.
    selection-screen end of block block2.
    selection-screen begin of block block4 with frame title text-002.
    select-options:  s_vbelv for vbak-vbeln,
                     s_auart for vbak-auart.
    selection-screen end of block block4.
    parameters: p_vari like disvariant-variant.
    ranges: r_vbeln for likp-vbeln.
    data:   gt_fieldcat type slis_t_fieldcat_alv.
    data:   gt_outtab type i_delivery occurs 0 with header line,
            rt_outtab1 type i_delivery occurs 0 with header line,
            i_nast type nast occurs 0 with header line,
            gt_list_top_of_page type slis_t_listheader,
            gt_events   type slis_t_event,
            gc_formname_top_of_page type slis_formname value 'TOP_OF_PAGE'.
    data:   g_repid like sy-repid,
             g_count like sy-tabix.
    data: begin of i_serial occurs 0,
            obknr type ser01-obknr,
            lief_nr type ser01-lief_nr,
            posnr type ser01-posnr,
            anzsn type ser01-anzsn,
          end of i_serial.
    data: begin of i_object_numbers occurs 0,
            obknr type objk-obknr,
            obzae type objk-obzae,
            sernr type objk-sernr,
            equnr type objk-equnr,
            matnr type objk-matnr,
            taser type objk-taser,
          end of i_object_numbers.
    data:   g_save(1) type c,
           g_default(1) TYPE c,
            g_exit(1) type c,
            gx_variant like disvariant,
            g_variant like disvariant.
    data:  g_mnkat like viqmma-mnkat,
           g_mngrp like viqmma-mngrp,
           g_atinn like ausp-atinn.
    Initialization fieldcatalog
    initialization.
      g_repid = sy-repid.
      perform fieldcat_init using gt_fieldcat[].
    move: 'I' to  s_vkorg-sign,
           'EQ' to  s_vkorg-option,
           '5090' to s_vkorg-low.
      append  s_vkorg.
      move: 'I' to  s_lfart-sign,
           'EQ' to s_lfart-option,
           'LF' to s_lfart-low.
      append  s_lfart.
      g_save = 'A'.
      perform variant_init.
    Get default variant
      gx_variant = g_variant.
      call function 'REUSE_ALV_VARIANT_DEFAULT_GET'
           exporting
                i_save     = g_save
           changing
                cs_variant = gx_variant
           exceptions
                not_found  = 2.
      if sy-subrc = 0.
        p_vari = gx_variant-variant.
      endif.
    at selection-screen on value-request for p_vari.
      perform f4_for_variant.
    at selection-screen.
      perform pai_of_selection_screen.
    Start of Selection
    start-of-selection.
      perform e03_eventtab_build using gt_events[].
      perform select_data tables gt_outtab.
    Display list
    end-of-selection.
      call function 'REUSE_ALV_GRID_DISPLAY'
           exporting
                i_background_id         = 'ALV_BACKGROUND'
                i_callback_user_command = 'USER_COMMAND'
                is_variant              = g_variant
                i_save                  = g_save
                i_callback_program      = g_repid
                it_fieldcat             = gt_fieldcat[]
           tables
                t_outtab                = gt_outtab.
       Forms
    Initialization fieldcatalog
    form fieldcat_init
          using rt_fieldcat type slis_t_fieldcat_alv.
      data: ls_fieldcat type slis_fieldcat_alv.
      data: pos type i value 1.
      clear ls_fieldcat.
      ls_fieldcat-col_pos       =  pos.
      ls_fieldcat-fieldname     = 'VBELN'.
      ls_fieldcat-seltext_s     = 'Delivery'.
      ls_fieldcat-seltext_m     = 'Delivery'.
      ls_fieldcat-key           = 'X'.
      append ls_fieldcat to rt_fieldcat.
      clear ls_fieldcat.
      pos = pos + 1.
      ls_fieldcat-col_pos       =  pos.
      ls_fieldcat-fieldname     = 'POSNR'.
      ls_fieldcat-key           = 'X'.
      ls_fieldcat-seltext_s     = 'Item'.
      ls_fieldcat-seltext_m     = 'Item'.
      append ls_fieldcat to rt_fieldcat.
      clear ls_fieldcat.
      pos = pos + 1.
      ls_fieldcat-col_pos       =  pos.
      ls_fieldcat-fieldname     = 'LFART'.
      ls_fieldcat-seltext_s     = 'Del Type'.
      ls_fieldcat-seltext_m     = 'Delivery Type'.
      append ls_fieldcat to rt_fieldcat.
      clear ls_fieldcat.
      pos = pos + 1.
      ls_fieldcat-col_pos       =  pos.
      ls_fieldcat-fieldname     = 'VGBEL'.
      ls_fieldcat-seltext_s     = 'Source Doc'.
      ls_fieldcat-seltext_m     = 'Source Doc'.
      append ls_fieldcat to rt_fieldcat.
      clear ls_fieldcat.
      pos = pos + 1.
      ls_fieldcat-col_pos       =  pos.
      ls_fieldcat-fieldname     = 'AUART'.
      ls_fieldcat-seltext_s     = 'Type'.
      ls_fieldcat-seltext_m     = 'Type'.
      append ls_fieldcat to rt_fieldcat.
      clear ls_fieldcat.
      pos = pos + 1.
      ls_fieldcat-col_pos       =  pos.
      ls_fieldcat-fieldname     = 'KUNNR'.
      ls_fieldcat-seltext_s     = 'Customer'.
      ls_fieldcat-seltext_m     = 'Customer'.
      append ls_fieldcat to rt_fieldcat.
      clear ls_fieldcat.
      pos = pos + 1.
      ls_fieldcat-col_pos       =  pos.
      ls_fieldcat-fieldname     = 'NAME1'.
      ls_fieldcat-seltext_s     = 'Name'.
      ls_fieldcat-seltext_m     = 'Name1'.
      append ls_fieldcat to rt_fieldcat.
      clear ls_fieldcat.
      pos = pos + 1.
      ls_fieldcat-col_pos       =  pos.
      ls_fieldcat-fieldname     = 'WERKS'.
      ls_fieldcat-seltext_s     = 'Plant'.
      ls_fieldcat-seltext_m     = 'Plant'.
      append ls_fieldcat to rt_fieldcat.
      clear ls_fieldcat.
      pos = pos + 1.
      ls_fieldcat-col_pos       =  pos.
      ls_fieldcat-fieldname     = 'MATNR'.
      ls_fieldcat-seltext_s     = 'Material'.
      ls_fieldcat-seltext_m     = 'Material'.
      append ls_fieldcat to rt_fieldcat.
      clear ls_fieldcat.
      pos = pos + 1.
      pos = pos + 1.
      ls_fieldcat-col_pos       =  pos.
      ls_fieldcat-fieldname     = 'MVGR1'.
      ls_fieldcat-seltext_s     = 'Speciality'.
      ls_fieldcat-seltext_m     = 'Speciality'.
      append ls_fieldcat to rt_fieldcat.
      clear ls_fieldcat.
    pos = pos + 1.
      ls_fieldcat-col_pos       =  pos.
      ls_fieldcat-fieldname     = 'PRODH'.
      ls_fieldcat-seltext_s     = 'Hierarchy'.
      ls_fieldcat-seltext_m     = 'Prod Hierarchy'.
      append ls_fieldcat to rt_fieldcat.
      clear ls_fieldcat.
      pos = pos + 1.
      ls_fieldcat-col_pos       =  pos.
      ls_fieldcat-fieldname     = 'ARKTX'.
      ls_fieldcat-seltext_s     = 'Description'.
      ls_fieldcat-seltext_m     = 'Description'.
      append ls_fieldcat to rt_fieldcat.
      clear ls_fieldcat.
      pos = pos + 1.
      ls_fieldcat-col_pos       =  pos.
      ls_fieldcat-fieldname     = 'ERNAM'.
      ls_fieldcat-seltext_s     = 'Created By'.
      ls_fieldcat-seltext_m     = 'Created By'.
      append ls_fieldcat to rt_fieldcat.
      clear ls_fieldcat.
      pos = pos + 1.
      ls_fieldcat-col_pos       =  pos.
      ls_fieldcat-fieldname     = 'ERDAT'.
      ls_fieldcat-seltext_s     = 'Created On'.
      ls_fieldcat-seltext_m     = 'Created On'.
      append ls_fieldcat to rt_fieldcat.
      clear ls_fieldcat.
      pos = pos + 1.
      ls_fieldcat-col_pos       =  pos.
      ls_fieldcat-fieldname     = 'WADAT'.
      ls_fieldcat-seltext_s     = 'GoodsMvt.Date'.
      ls_fieldcat-seltext_m     = 'Goods Mvt Date'.
      append ls_fieldcat to rt_fieldcat.
      clear ls_fieldcat.
      pos = pos + 1.
      ls_fieldcat-col_pos       =  pos.
      ls_fieldcat-fieldname     = 'SERNR'.
      ls_fieldcat-seltext_s     = 'Serial Shipped'.
      ls_fieldcat-seltext_m     = 'Serial Shipped'.
      append ls_fieldcat to rt_fieldcat.
      clear ls_fieldcat.
      pos = pos + 1.
      ls_fieldcat-col_pos       =  pos.
      ls_fieldcat-fieldname     = 'SERNP'.
      ls_fieldcat-seltext_s     = 'Old Serial'.
      ls_fieldcat-seltext_m     = 'Old Serial'.
      append ls_fieldcat to rt_fieldcat.
      clear ls_fieldcat.
      pos = pos + 1.
      ls_fieldcat-col_pos       =  pos.
      ls_fieldcat-fieldname     = 'VBELV'.
      ls_fieldcat-seltext_s     = 'Invoice'.
      ls_fieldcat-seltext_m     = 'Invoice'.
      append ls_fieldcat to rt_fieldcat.
      clear ls_fieldcat.
      pos = pos + 1.
      ls_fieldcat-col_pos       =  pos.
      ls_fieldcat-fieldname     = 'NETWR'.
      ls_fieldcat-seltext_s     = 'Invoice Amt'.
      ls_fieldcat-seltext_m     = 'Invoice Value'.
      append ls_fieldcat to rt_fieldcat.
      clear ls_fieldcat.
      pos = pos + 1.
      ls_fieldcat-col_pos       =  pos.
      ls_fieldcat-fieldname     = 'QMNUM'.
      ls_fieldcat-seltext_s     = 'Notification'.
      ls_fieldcat-seltext_m     = 'Notification'.
      append ls_fieldcat to rt_fieldcat.
      clear ls_fieldcat.
      pos = pos + 1.
      ls_fieldcat-col_pos       =  pos.
      ls_fieldcat-fieldname     = 'QMCOD'.
      ls_fieldcat-seltext_s     = 'Rep LevKST'.
      ls_fieldcat-seltext_m     = 'Repair Level KST'.
      append ls_fieldcat to rt_fieldcat.
      clear ls_fieldcat.
    pos = pos + 1.
      ls_fieldcat-col_pos       =  pos.
      ls_fieldcat-fieldname     = 'COTXT'.
      ls_fieldcat-seltext_s     = 'CdTXT KST'.
      ls_fieldcat-seltext_m     = 'Repair Level Text KST'.
      append ls_fieldcat to rt_fieldcat.
      clear ls_fieldcat.
      pos = pos + 1.
      ls_fieldcat-col_pos       =  pos.
      ls_fieldcat-fieldname     = 'QMCOL'.
      ls_fieldcat-seltext_s     = 'Rep LevKSE'.
      ls_fieldcat-seltext_m     = 'Repair Level KSE'.
      append ls_fieldcat to rt_fieldcat.
      clear ls_fieldcat.
    pos = pos + 1.
      ls_fieldcat-col_pos       =  pos.
      ls_fieldcat-fieldname     = 'KTTXT'.
      ls_fieldcat-seltext_s     = 'CdTXT KSE'.
      ls_fieldcat-seltext_m     = 'Repair Level Text KSE'.
      append ls_fieldcat to rt_fieldcat.
      clear ls_fieldcat.
    endform.   "fieldcat_init
    Data selection
    form select_data tables rt_outtab like gt_outtab[].
      clear: r_vbeln[].
    Read all Invoices for the Selection
      select distinct h~vbeln  h~kunnr h~kunag
                     d~posnr  d~matnr d~anzsn
                     d~serail d~vgbel d~vgpos
                     d~posnv  d~lfimg d~arktx
                     d~uecha  h~lfart h~erdat
                     h~ernam  h~lfdat d~prodh
                     h~vkorg  d~vkbur d~vkgrp
                     d~mvgr1  h~wadat_ist d~pstyv
                     d~werks
             into (rt_outtab-vbeln, rt_outtab-kunnr,
                    rt_outtab-kunag, rt_outtab-posnr,
                    rt_outtab-matnr, rt_outtab-anzsn,
                    rt_outtab-serail, rt_outtab-vgbel,
                    rt_outtab-vgpos,  rt_outtab-posnv,
                    rt_outtab-lfimg,  rt_outtab-arktx,
                    rt_outtab-uecha, rt_outtab-lfart,
                    rt_outtab-erdat, rt_outtab-ernam,
                    rt_outtab-lfdat, rt_outtab-prodh,
                    rt_outtab-vkorg, rt_outtab-vkbur,
                    rt_outtab-vkgrp, rt_outtab-mvgr1,
                    rt_outtab-wadat, rt_outtab-pstyv,
                    rt_outtab-werks)
            from likp as h inner join lips as d
                     on h~vbeln = d~vbeln
                    where h~vbeln in s_vbeln
                    and  h~vkorg in s_vkorg
                    and  h~lfart in s_lfart
                     and  h~kunnr in s_kunnr
                     and  h~erdat in s_erdat
                     and  d~matnr in s_matnr
                     and  d~werks in s_werks
                     and  d~prodh in s_prodh
                     and  d~vgbel in s_vbelv
                     and  d~matnr like 'S%'.
        select single * from vbak where vbeln = rt_outtab-vgbel.
        if: sy-subrc eq 0.
          move vbak-vbeln to rt_outtab-vgbel.
          move vbak-auart to rt_outtab-auart.
        endif.
        select single * from mara where matnr = rt_outtab-matnr
                                    and  mtart eq 'FERT'.
        check sy-subrc eq 0.
        if not rt_outtab-posnv is initial.
          rt_outtab-vgpos = rt_outtab-posnv.
        endif.
        clear: vbfa.
        select single vbeln rfwrt into (rt_outtab-vbelv, rt_outtab-netwr)
    from vbfa  where vbelv eq rt_outtab-vbeln
                               and   posnv eq rt_outtab-posnr
                               and   vbtyp_n eq 'M'.
        append rt_outtab.
        if not  r_vbeln-low is initial.
          if r_vbeln-low gt rt_outtab-vbeln.
            r_vbeln-low =  rt_outtab-vbeln.
          endif.
          if r_vbeln-high lt rt_outtab-vbeln.
            r_vbeln-high =  rt_outtab-vbeln.
          endif.
        else.
          r_vbeln-low  =  rt_outtab-vbeln.
          r_vbeln-high =  rt_outtab-vbeln.
        endif.
        clear: rt_outtab.
      endselect.
      if not r_vbeln is initial.
        move: 'I' to  r_vbeln-sign,
               'BT' to  r_vbeln-option.
        append r_vbeln.
        select * into corresponding fields of table i_serial
                                  from   ser01 where lief_nr in r_vbeln.
      endif.
      sort i_serial.
      if not i_serial[] is initial.
        select * into corresponding fields of table i_object_numbers
                                   from   objk
                                   for all entries in i_serial
                                   where obknr eq i_serial-obknr
                                   and  taser eq 'SER01'.
      endif.
      sort i_object_numbers by  obknr obzae.
      loop at rt_outtab.
    Read the Sold To Name
        select single name1 into rt_outtab-name1
                          from kna1 where kunnr eq rt_outtab-kunnr.
    Read Ship-to Customer
        clear: objk.
        if not rt_outtab-serail is initial.
          read table i_serial with key lief_nr = rt_outtab-vbeln
                                        posnr = rt_outtab-posnr.
          if sy-subrc eq 0.
            do i_serial-anzsn times.
              read table i_object_numbers  with key obknr = i_serial-obknr
                                                    matnr = rt_outtab-matnr
                                                binary search.
              if sy-subrc eq 0.
                rt_outtab-sernr = i_object_numbers-sernr.
                delete i_object_numbers index sy-tabix.
                move '1'   to rt_outtab-lfimg.
    clear: rt_outtab-aufnr, rt_outtab-qmnum,
                         rt_outtab-equnr, rt_outtab-qmcod, g_mngrp, g_mnkat.
    select single aufnr qmnum equnr qmcod qmgrp qmkat
                            into (rt_outtab-aufnr, rt_outtab-qmnum,
                         rt_outtab-equnr, rt_outtab-qmcod, g_mngrp, g_mnkat)
                         from viqmel  where matnr = rt_outtab-matnr
                             and serialnr = rt_outtab-sernr
                             and qmart  eq 'S4'
                             and qmnum in s_qmnum.
    clear: rt_outtab-cotxt.
    select single kurztext into rt_outtab-cotxt
                             from qpct where katalogart eq g_mnkat
                              and codegruppe eq  g_mngrp
                              and code eq rt_outtab-qmcod
                              and sprache eq sy-langu.
    Read Serial Number from Name Plate Data.
                clear: klah, kssk, ausp, cabn, g_atinn.
                select single atinn into (g_atinn) from cabn
                                    where atnam = 'SBANK_SERIAL_NUMBER'.
                select single  atwrt
                      into  (rt_outtab-sernp)
                      from  ( klah as a inner join kssk as k
                               on aclint = kclint )
                          join ausp as p
                                on kobjek = pobjek
                                and p~atinn = g_atinn
                                and pklart = aklart
                      where a~klart = '002'
                       and  a~class = 'KSE_SN_ENDOSCOPES'
                        and  k~objek = rt_outtab-equnr.
    *KSE Repair level (activity code text from KSE-SM07 code group)
    clear: rt_outtab-qmcol, g_mngrp, g_mnkat.
                clear: rt_outtab-qmcol.
                clear:   g_mnkat, g_mngrp.
                select single mnkat mngrp mncod into
                                    (g_mnkat, g_mngrp, rt_outtab-qmcol)
                              from viqmma where qmnum = rt_outtab-qmnum
                                    and  mngrp eq 'KSE-SM07'
                                    and kzloesch eq space.
    clear: rt_outtab-kttxt.
                select single kurztext into rt_outtab-kttxt
                             from qpct where katalogart eq g_mnkat
                                    and codegruppe eq  g_mngrp
                                    and code eq rt_outtab-qmcol
                                    and sprache eq sy-langu.
                rt_outtab1 = rt_outtab.
                append rt_outtab1.
              endif.
            enddo.
          endif.
          endif.
        endloop.
        clear: rt_outtab[].
        rt_outtab[] = rt_outtab1[].
        sort rt_outtab by vbeln posnr.
      endform.
          FORM get_repname                                              *
    -->  P_VBELN                                                       *
    -->  P_POSNR                                                       *
    -->  P_PERNR                                                       *
    -->  P_ENAME                                                       *
    form get_repname using  p_vbeln
                              p_posnr
                     changing  p_pernr
                              p_ename. "
      data: i_vbpa like vbpa occurs 0 with header line.
      clear: i_vbpa[].
      call function 'Z_DETERMINE_ACTIVE_SALES_REP'
           exporting
                g_salesdocument = p_vbeln
                g_sales_item    = p_posnr
           tables
                st_vbpa         = i_vbpa.
      read table i_vbpa index 1.
      if sy-subrc = 0.
        p_pernr = i_vbpa-pernr.
        select single ename into p_ename
          from pa0001
         where pernr = i_vbpa-pernr.
      endif.
    endform.                    " get_repname
          FORM E03_EVENTTAB_BUILD                                       *
    -->  E03_LT_EVENTS                                                 *
    form e03_eventtab_build using e03_lt_events type slis_t_event.
      data: ls_event type slis_alv_event.
      call function 'REUSE_ALV_EVENTS_GET'
           exporting
                i_list_type = 0
           importing
                et_events   = e03_lt_events.
      read table e03_lt_events with key name =  slis_ev_top_of_page
                               into ls_event.
      if sy-subrc = 0.
        move gc_formname_top_of_page to ls_event-form.
        append ls_event to e03_lt_events.
      endif.
    endform.
          FORM TOP_OF_PAGE                                              *
    form top_of_page.
      call function 'REUSE_ALV_COMMENTARY_WRITE'
           exporting
                it_list_commentary = gt_list_top_of_page.
    endform.
    *&      Form  USER_COMMAND
    form user_command  using r_ucomm like sy-ucomm
                             rs_selfield type slis_selfield.
      case r_ucomm.
        when '&IC1'.
          perform display_delivery using r_ucomm
                                        rs_selfield.
      endcase.
    endform.
    *&      Form  display_delivery
    form display_delivery
    using r_ucomm like sy-ucomm
                                 rs_selfield type slis_selfield.
      case rs_selfield-sel_tab_field.
        when '1-VBELN'.
          set parameter id 'VL' field rs_selfield-value.
          call transaction 'VL03N' and skip first screen.
        when '1-VBELV'.
          set parameter id 'VF' field rs_selfield-value.
          call transaction 'VF03N' and skip first screen.
      endcase.
    endform.
    *&      Form  VARIANT_INIT
          text
    -->  p1        text
    <--  p2        text
    form variant_init.
      clear g_variant.
      g_variant-report = g_repid.
    endform.                               " VARIANT_INIT
    *&      Form  F4_FOR_VARIANT
          text
    -->  p1        text
    <--  p2        text
    form f4_for_variant.
      call function 'REUSE_ALV_VARIANT_F4'
           exporting
                is_variant          = g_variant
                i_save              = g_save
              it_default_fieldcat =
           importing
                e_exit              = g_exit
                es_variant          = gx_variant
           exceptions
                not_found = 2.
      if sy-subrc = 2.
        message id sy-msgid type 'S'      number sy-msgno
                with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
      else.
        if g_exit = space.
          p_vari = gx_variant-variant.
        endif.
      endif.
    endform.
    *&      Form  PAI_OF_SELECTION_SCREEN
          text
    form pai_of_selection_screen.
      if not p_vari is initial.
        move g_variant to gx_variant.
        move p_vari to gx_variant-variant.
        call function 'REUSE_ALV_VARIANT_EXISTENCE'
             exporting
                  i_save     = g_save
             changing
                  cs_variant = gx_variant.
        g_variant = gx_variant.
      else.
        perform variant_init.
      endif.
    endform.

    Well, I've made some assumptions here, but I think this will work.  Of course you need to create a new field in your internal table to hold the calculated value.  Here I call it INVVALUE.   The issue here is that I'm a little concerned with the SELECT to VBFA, not sure that this is correct if you are trying to get the billing document.
    form select_data tables rt_outtab like gt_outtab[].
      clear: r_vbeln[].
    * Read all Invoices for the Selection
      select distinct h~vbeln h~kunnr h~kunag
      d~posnr d~matnr d~anzsn
      d~serail d~vgbel d~vgpos
      d~posnv d~lfimg d~arktx
      d~uecha h~lfart h~erdat
      h~ernam h~lfdat d~prodh
      h~vkorg d~vkbur d~vkgrp
      d~mvgr1 h~wadat_ist d~pstyv
      d~werks
      into (rt_outtab-vbeln, rt_outtab-kunnr,
      rt_outtab-kunag, rt_outtab-posnr,
      rt_outtab-matnr, rt_outtab-anzsn,
      rt_outtab-serail, rt_outtab-vgbel,
      rt_outtab-vgpos, rt_outtab-posnv,
      rt_outtab-lfimg, rt_outtab-arktx,
      rt_outtab-uecha, rt_outtab-lfart,
      rt_outtab-erdat, rt_outtab-ernam,
      rt_outtab-lfdat, rt_outtab-prodh,
      rt_outtab-vkorg, rt_outtab-vkbur,
      rt_outtab-vkgrp, rt_outtab-mvgr1,
      rt_outtab-wadat, rt_outtab-pstyv,
      rt_outtab-werks)
      from likp as h inner join lips as d
      on h~vbeln = d~vbeln
      where h~vbeln in s_vbeln
      and h~vkorg in s_vkorg
      and h~lfart in s_lfart
      and h~kunnr in s_kunnr
      and h~erdat in s_erdat
      and d~matnr in s_matnr
      and d~werks in s_werks
      and d~prodh in s_prodh
      and d~vgbel in s_vbelv
      and d~matnr like 'S%'.
        select single * from vbak where vbeln = rt_outtab-vgbel.
        if: sy-subrc eq 0.
          move vbak-vbeln to rt_outtab-vgbel.
          move vbak-auart to rt_outtab-auart.
        endif.
        select single * from mara where matnr = rt_outtab-matnr
        and mtart eq 'FERT'.
        check sy-subrc eq 0.
        if not rt_outtab-posnv is initial.
          rt_outtab-vgpos = rt_outtab-posnv.
        endif.
        clear: vbfa.
    <b>    select single vbeln rfwrt into (rt_outtab-vbelv, rt_outtab-netwr)
        from vbfa where vbelv eq rt_outtab-vbeln
        and posnv eq rt_outtab-posnr
        and vbtyp_n eq 'M'.</b>
    <b>    data: xvbrp type vbrp.
        select Single * from vbrp into xvbrp
                        where vbeln = rt_outtab-vbeln   " Need to be billing document
                          and posnr = rt_outtab-posnr.
         rt_outtab-INVVALUE = xvbrp-netwr / xvbrp-fkimg. </b>               
        append rt_outtab.
        if not r_vbeln-low is initial.
          if r_vbeln-low gt rt_outtab-vbeln.
            r_vbeln-low = rt_outtab-vbeln.
          endif.
          if r_vbeln-high lt rt_outtab-vbeln.
            r_vbeln-high = rt_outtab-vbeln.
          endif.
        else.
          r_vbeln-low = rt_outtab-vbeln.
          r_vbeln-high = rt_outtab-vbeln.
        endif.
        clear: rt_outtab.
      endselect.
    Regards,
    Rich Heilman

  • Questions on BDC program statements.....

    Hi,
    Currently i am checking below BDC program for packing material use.
    But there is a statement that i am not very clear what it is for...
        PERFORM bdc_field       USING 'BDC_CURSOR'
                                      'V51VE-EXIDV(01)'.
    For the  'V51VE-EXIDV(01)', here why need to add an (01) at the end.  What does the (01) means??
    Thanks!!!!
      LOOP AT i_lips.
        CLEAR: i_bdc_tab,i_msg_tab.
        REFRESH: i_bdc_tab,i_msg_tab.
        PERFORM bdc_dynpro      USING 'SAPMV50A' '4004'.
        PERFORM bdc_field       USING 'BDC_CURSOR'
                                      'LIKP-VBELN'.
        PERFORM bdc_field       USING 'BDC_OKCODE'
                                      '/00'.
        PERFORM bdc_field       USING 'LIKP-VBELN'
                                      i_lips-vbeln.
        PERFORM bdc_dynpro      USING 'SAPMV50A' '1000'.
        PERFORM bdc_field       USING 'BDC_OKCODE'
                                      '=VERP_T'.
    *perform bdc_field       using 'LIKP-BLDAT'
    *                              record-BLDAT_002.
        PERFORM bdc_field       USING 'BDC_CURSOR'
                                      'LIPS-POSNR(01)'.
    *perform bdc_field       using 'LIKP-WADAT'
    *                              record-WADAT_003.
    *perform bdc_field       using 'LIKP-WAUHR'
    *                              record-WAUHR_004.
    *perform bdc_field       using 'LIKP-BTGEW'
    *                              record-BTGEW_005.
    *perform bdc_field       using 'LIKP-GEWEI'
    *                              record-GEWEI_006.
        PERFORM bdc_dynpro      USING 'SAPLV51G' '6000'.
        PERFORM bdc_field       USING 'BDC_OKCODE'
                                      '=ENTR'.
        PERFORM bdc_field       USING 'BDC_CURSOR'
                                      'V51VE-VHILM(01)'.
        PERFORM bdc_field       USING 'V51VE-VHILM(01)'
                                      'BOX'.
    *Select all materails
        PERFORM bdc_dynpro      USING 'SAPLV51G' '6000'.
        PERFORM bdc_field       USING 'BDC_OKCODE'
                                      '=HU_MARKA'.
    *Select all Boxes
        PERFORM bdc_dynpro      USING 'SAPLV51G' '6000'.
        PERFORM bdc_field       USING 'BDC_OKCODE'
                                      '=HUMARKHU'.
    *perform bdc_field       using 'V51VE-SELKZ(01)'
    *                              record-SELKZ_01_008.
        PERFORM bdc_dynpro      USING 'SAPLV51G' '6000'.
        PERFORM bdc_field       USING 'BDC_OKCODE'
                                      '=HU_VERP'.
        PERFORM bdc_field       USING 'BDC_CURSOR'
                                      'V51VE-EXIDV(01)'.
        PERFORM bdc_dynpro      USING 'SAPLV51G' '6000'.
        PERFORM bdc_field       USING 'BDC_OKCODE'
                                      '=SICH'.
        PERFORM bdc_field       USING 'BDC_CURSOR'
                                      'V51VE-EXIDV(01)'.
        CALL TRANSACTION 'VL02N' USING i_bdc_tab
                          MODE p_mode
                          MESSAGES INTO i_msg_tab.
    Message was edited by:
            Hoo Laa

    And if this is a BDC running in background, or a call transaction, then placing the cursor on a given field has no effect unless it is needed for navigation to the next screen. 
    When you record a BDC using SHDB there are a lot of statements like this that are added in but are not needed for the BDC to work. 
    Another example is the "BDC_SUBSCR" field name - this does not in most cases appear to have any effect on how the BDC is processed.
    Also, the recording will include fields which have default values on the screen that you do not need to overwrite with the same value from the BDC.
    I often delete these statements from the recording, taking care that I understand what the impact is.  You can try commenting out the line and see what difference it makes to processing. 
    When using a BDC for updating a lot of records, having less of these types of lines in the BDCDATA table will speed performance a bit.
    Andrew

  • Couldn't upload

    Hi,
    Pls fin the error in this program. I am unable to upload.
    Regards,
    Karthik
    Program ID       : ZRFC_RUSHORDER
    Transaction Code : Z*
    Description      : RFC For Sales Process using        Transaction Method calling
                       3 Transactions VA01,VL23 & VF06
    Change History
        Date   |   Programmer   |   Corr. #   |   Description
               |                |             |
               |                |             |
    FUNCTION ZRFC_RUSHORDER .
    ""Local interface:
    *"  EXPORTING
    *"     VALUE(SUBRC) LIKE  SYST-SUBRC
    *"  TABLES
    *"      MESSTAB STRUCTURE  BDCMSGCOLL OPTIONAL
    *"      RO_HEADER STRUCTURE  ZSD_HEADER
    *"      RO_ITEM STRUCTURE  ZSD_ITEM
           INTERNAL TABLES,STRUCTURES & VARIABLES
    *TABLES : ZSO_CREATE_TEXT.
      DATA: CTU      LIKE  APQI-PUTACTIVE,
            MODE     LIKE  APQI-PUTACTIVE,
            UPDATE   LIKE  APQI-PUTACTIVE,
            GROUP    LIKE  APQI-GROUPID,
            USER     LIKE  APQI-USERID,
            KEEP     LIKE  APQI-QERASE,
            HOLDDATE LIKE  APQI-STARTDATE,
            NODATA   LIKE  APQI-PUTACTIVE.
      DATA: T_VBELN LIKE VBFA-VBELN.
    data: MESSTAB1  LIKE TABLE OF BDCMSGCOLL  WITH HEADER LINE.
    DATA: NODATA_CHARACTER VALUE ' '.
      DATA : SORDER_FINAL LIKE VBAK-VBELN,
             SORDER(15)   TYPE C,
             V_CODE(2)    TYPE C,
             V_PLANT     LIKE EKPO-WERKS,
           YEAR_CONVERSION(1) TYPE C.
      DATA : WA_ZRUSH_ORDER LIKE ZRUSH_ORDER.
      DATA : V_DATE LIKE SY-DATUM,
             V_TIME LIKE SY-UZEIT.
      DATA : SESSION_NAM(30) TYPE C.
      CTU = ' '.
      MODE = 'N'.
      USER = SY-UNAME.
      CONCATENATE SY-UNAME '_' SY-DATUM '_' SY-UZEIT INTO
                                              SESSION_NAM.
      GROUP = 'RUSH_ORDER'.
      KEEP = 'X'.
      UPDATE = 'L'.
      HOLDDATE = ''.
      NODATA = '/'.
      SUBRC = 0.
    *CREATING SESSSION
      PERFORM OPEN_GROUP USING GROUP USER KEEP HOLDDATE CTU.
      LOOP AT RO_HEADER.
        MOVE RO_HEADER-SORDER TO SORDER.
        V_PLANT = SORDER+0(4).
        SELECT SINGLE CODE INTO V_CODE FROM ZPLANT_NUMER_IBS WHERE PLANT = V_PLANT.
        IF SORDER+4(4) = '2005'.
          YEAR_CONVERSION = 'E'.
        ELSEIF SORDER+4(4) = '2006'.
          YEAR_CONVERSION = 'F'.
        ELSEIF SORDER+4(4) = '2007'.
          YEAR_CONVERSION = 'G'.
        ELSEIF SORDER+4(4) = '2008'.
          YEAR_CONVERSION = 'H'.
        ELSEIF SORDER+4(4) = '2009'.
          YEAR_CONVERSION = 'J'.
        ELSEIF SORDER+4(4) = '2010'.
          YEAR_CONVERSION = 'K'.
        ELSEIF SORDER+4(4) = '2011'.
          YEAR_CONVERSION = 'L'.
        ELSEIF SORDER+4(4) = '2012'.
          YEAR_CONVERSION = 'M'.
        ELSEIF SORDER+4(4) = '2013'.
          YEAR_CONVERSION = 'N'.
        ELSEIF SORDER+4(4) = '2014'.
          YEAR_CONVERSION = 'P'.
        ELSEIF SORDER+4(4) = '2015'.
          YEAR_CONVERSION = 'Q'.
        ELSEIF SORDER+4(4) = '2016'.
          YEAR_CONVERSION = 'R'.
        ELSEIF SORDER+4(4) = '2017'.
          YEAR_CONVERSION = 'S'.
        ELSEIF SORDER+4(4) = '2018'.
          YEAR_CONVERSION = 'T'.
        ELSEIF SORDER+4(4) = '2019'.
          YEAR_CONVERSION = 'U'.
        ELSEIF SORDER+4(4) = '2020'.
          YEAR_CONVERSION = 'V'.
        ELSEIF SORDER+4(4) = '2021'.
          YEAR_CONVERSION = 'W'.
        ELSEIF SORDER+4(4) = '2022'.
          YEAR_CONVERSION = 'X'.
        ELSEIF SORDER+4(4) = '2023'.
          YEAR_CONVERSION = 'Y'.
        ELSEIF SORDER+4(4) = '2024'.
          YEAR_CONVERSION = 'Z'.
        ELSEIF SORDER+4(4) = '2025'.
          YEAR_CONVERSION = 'A'.
        ELSEIF SORDER+4(4) = '2026'.
          YEAR_CONVERSION = 'B'.
        ELSEIF SORDER+4(4) = '2027'.
          YEAR_CONVERSION = 'C'.
        ENDIF.
        CONCATENATE  YEAR_CONVERSION V_CODE SORDER+8(7) INTO SORDER_FINAL.
        CLEAR YEAR_CONVERSION.
        CLEAR V_CODE.
        CLEAR V_PLANT.
    Text Element Creation for Sales order.
        ZSO_CREATE_TEXT-SORDER      = SORDER_FINAL.
        ZSO_CREATE_TEXT-LR_NUMBER   = RO_HEADER-LR_NUMBER.
        ZSO_CREATE_TEXT-TRANSPORTER = RO_HEADER-TRANSPORTER.
        ZSO_CREATE_TEXT-Z003        = RO_HEADER-Z003.
        ZSO_CREATE_TEXT-Z004        = RO_HEADER-Z004.
        INSERT ZSO_CREATE_TEXT.
        PERFORM BDC_DYNPRO      USING 'SAPMV45A' '0101'.
        PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                      'VBAK-SPART'.
        PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                      '/00'.
        PERFORM BDC_FIELD       USING 'VBAK-AUART'
                                      'ZKSO'.                   "AUART_001.
        PERFORM BDC_FIELD       USING 'VBAK-VKORG'
                                      RO_HEADER-VKORG.          "VKORG_002.
        PERFORM BDC_FIELD       USING 'VBAK-VTWEG'
                                      RO_HEADER-VTWEG.          "VTWEG_003.
        PERFORM BDC_FIELD       USING 'VBAK-SPART'
                                      RO_HEADER-SPART.          "SPART_004.
    Sales Order Date insertion.......
        PERFORM BDC_DYNPRO      USING 'SAPMV45A' '4001'.
        PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                      '=KKAU'.
        PERFORM BDC_FIELD       USING 'VBAK-VBELN'
                                      SORDER_FINAL.
        PERFORM BDC_FIELD       USING 'KUAGV-KUNNR'
                                      RO_HEADER-SP.
        PERFORM BDC_FIELD       USING 'KUWEV-KUNNR'
                                      RO_HEADER-SH.
        PERFORM BDC_FIELD       USING 'VBKD-BSTKD'
                                      RO_HEADER-REF_PO.
        PERFORM BDC_FIELD       USING 'VBKD-ZTERM'
                                      RO_HEADER-ZTERM.
        WRITE RO_HEADER-SODATE TO RO_HEADER-SODATE.
        PERFORM BDC_DYNPRO      USING 'SAPMV45A' '4002'.
        perform bdc_field       using 'BDC_OKCODE'
                                    '=T\03'.
        PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                      'VBAK-AUDAT'.
        PERFORM BDC_FIELD       USING 'VBAK-AUDAT'
                                      RO_HEADER-SODATE.  "Document Date
        PERFORM BDC_FIELD       USING 'VBKD-PRSDT'
                                      RO_HEADER-SODATE.  "Pricing Date
    Billing Screen    ***********************
        perform bdc_dynpro      using 'SAPMV45A' '4002'.
        PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                      '/EBACK'.
        perform bdc_field       using 'BDC_CURSOR'
                                    'VBKD-FKDAT'.
        PERFORM BDC_FIELD       USING 'VBKD-FKDAT'
                                      RO_HEADER-SODATE.  "Billing date
        PERFORM BDC_DYNPRO      USING 'SAPMV45A' '4001'.
        PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                      '=KKO1'.
        PERFORM BDC_FIELD       USING 'KUAGV-KUNNR'
                                      RO_HEADER-SP.             "KUNNR_006.
        PERFORM BDC_FIELD       USING 'KUWEV-KUNNR'
                                      RO_HEADER-SH.             "KUNNR_007.
        PERFORM BDC_FIELD       USING 'VBKD-BSTKD'
                                      RO_HEADER-REF_PO.         "BSTKD_008.
        PERFORM BDC_FIELD       USING 'RV45A-KETDAT'
                                      RO_HEADER-SODATE. "Delivery Date.
        PERFORM BDC_FIELD       USING 'VBKD-ZTERM'
                                      RO_HEADER-ZTERM.          "ZTERM_011.
    ************************Added for test 25-02******************
        PERFORM BDC_FIELD       USING 'RV45A-KETDAT'        " CNGD FROM 'KEDAT' TO 'KETDAT'.
                                      RO_HEADER-SODATE.     "REQ DELVY DATE.
        PERFORM BDC_FIELD       USING 'VBKD-PRSDT'          "CNGD FROM 'RV45A' TO 'VBKD'.
                                      RO_HEADER-SODATE.     "PRICING DATE.
    ************************Added for test 25-02******************
    *Dont DELETE, For Future Use of Inco terms 1 & 2.
    *PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                 'VBKD-INCO2'.
    *PERFORM BDC_FIELD       USING 'VBKD-INCO1'
                                 RO_HEADER-INCO1.  "INCO1_012.
    *PERFORM BDC_FIELD       USING 'VBKD-INCO2'
                                 RO_HEADER-INCO2.  "INCO2_013.
    Header condition types......................................
        PERFORM BDC_DYNPRO      USING 'SAPMV45A' '5002'.
        PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                      '=V69A_KOAN'.
        PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                      'KOMV-KSCHL(05)'.
        IF RO_HEADER-KSCHL1 IS NOT INITIAL.
          PERFORM BDC_DYNPRO      USING  'SAPMV45A' '5002'.
          PERFORM BDC_FIELD       USING  'BDC_OKCODE'
                                         '=V69A_KOAN'.
          PERFORM BDC_FIELD       USING  'BDC_CURSOR'
                                         'KOMV-KSCHL(04)'.
          PERFORM BDC_FIELD       USING  'BDC_CURSOR'
                                         'KOMV-KBETR(02)'.
          PERFORM BDC_FIELD       USING  'KOMV-KSCHL(02)' RO_HEADER-KSCHL1.
          PERFORM BDC_FIELD       USING  'KOMV-KBETR(02)' RO_HEADER-KBETR1.
        ENDIF.
        IF RO_HEADER-KSCHL2 IS NOT INITIAL.
          PERFORM BDC_DYNPRO      USING  'SAPMV45A' '5002'.
          PERFORM BDC_FIELD       USING  'BDC_OKCODE'
                                         '=V69A_KOAN'.
          PERFORM BDC_FIELD       USING  'BDC_CURSOR'
                                         'KOMV-KSCHL(04)'.
          PERFORM BDC_FIELD       USING  'BDC_CURSOR'
                                         'KOMV-KBETR(02)'.
          PERFORM BDC_FIELD       USING  'KOMV-KSCHL(02)' RO_HEADER-KSCHL2.
          PERFORM BDC_FIELD       USING  'KOMV-KBETR(02)' RO_HEADER-KBETR2.
        ENDIF.
        IF RO_HEADER-KSCHL3 IS NOT INITIAL.
          PERFORM BDC_DYNPRO      USING  'SAPMV45A' '5002'.
          PERFORM BDC_FIELD       USING  'BDC_OKCODE'
                                         '=V69A_KOAN'.
          PERFORM BDC_FIELD       USING  'BDC_CURSOR'
                                         'KOMV-KSCHL(04)'.
          PERFORM BDC_FIELD       USING  'BDC_CURSOR'
                                         'KOMV-KBETR(02)'.
          PERFORM BDC_FIELD       USING  'KOMV-KSCHL(02)' RO_HEADER-KSCHL3.
          PERFORM BDC_FIELD       USING  'KOMV-KBETR(02)' RO_HEADER-KBETR3.
        ENDIF.
    *change on 11.04.2006 for adding rounding off condition type.
        IF RO_HEADER-KSCHL4 IS NOT INITIAL.
          PERFORM BDC_DYNPRO      USING  'SAPMV45A' '5002'.
          PERFORM BDC_FIELD       USING  'BDC_OKCODE'
                                         '=V69A_KOAN'.
          PERFORM BDC_FIELD       USING  'BDC_CURSOR'
                                         'KOMV-KSCHL(04)'.
          PERFORM BDC_FIELD       USING  'BDC_CURSOR'
                                         'KOMV-KBETR(02)'.
          PERFORM BDC_FIELD       USING  'KOMV-KSCHL(02)' RO_HEADER-KSCHL4.
          PERFORM BDC_FIELD       USING  'KOMV-KBETR(02)' RO_HEADER-KBETR4.
        ENDIF.
        PERFORM BDC_DYNPRO      USING  'SAPMV45A' '5002'.
        PERFORM BDC_FIELD       USING  'BDC_OKCODE'
                                       '/EBACK'.
    Dont DELETE, For Future Use  of : Sales Person Data.................
    *PERFORM BDC_DYNPRO      USING 'SAPMV45A' '4001'.
    *PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                   '=HEAD'.
    *perform bdc_dynpro      using 'SAPMV45A' '4002'.
    *perform bdc_field       using 'BDC_OKCODE'
                                 '=T\08'.
    *perform bdc_dynpro      using 'SAPMV45A' '4002'.
    *perform bdc_field       using 'BDC_OKCODE'
                                 '=PAAN'.
    *perform bdc_field       using 'BDC_CURSOR'
                                 'GVS_TC_DATA-REC-PARTNER(09)'.
    *perform bdc_field       using 'GV_FILTER'
                                  'PARALL'. "GV_FILTER_024.
    *perform bdc_field       using 'GVS_TC_DATA-REC-PARVW(09)'
                                  'VE'."REC-PARVW_09_025.
    *perform bdc_field       using 'GVS_TC_DATA-REC-PARTNER(09)'
                                  '0'. "REC-PARTNER_09_026.
    *perform bdc_dynpro      using 'SAPMV45A' '4002'.
    *perform bdc_field       using 'BDC_OKCODE'
                                 '/EBACK'.
    *perform bdc_field       using 'BDC_CURSOR'
                                 'GVS_TC_DATA-REC-PARTNER(09)'.
    *perform bdc_field       using 'GV_FILTER'
                                 'PARALL'. "GV_FILTER_027.
        PERFORM BDC_DYNPRO      USING 'SAPMV45A' '4001'.
        PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                      '=POAN'.
        PERFORM BDC_FIELD       USING 'KUAGV-KUNNR'
                                      RO_HEADER-SP.             "KUNNR_006.
        PERFORM BDC_FIELD       USING 'KUWEV-KUNNR'
                                      RO_HEADER-SH.             "KUNNR_007.
        PERFORM BDC_FIELD       USING 'VBKD-BSTKD'
                                      RO_HEADER-REF_PO.         "BSTKD_008.
    *FETCHING LINE ITEM DATA.
        LOOP AT RO_ITEM WHERE  SORDER =  RO_HEADER-SORDER.
          PERFORM BDC_DYNPRO   USING   'SAPMV45A'     '4001'.
          PERFORM BDC_FIELD    USING   'BDC_OKCODE'   '=POAN'.
          PERFORM BDC_FIELD    USING    'RV45A-MABNR(02)'  RO_ITEM-MATNR.
          PERFORM BDC_FIELD    USING    'RV45A-KWMENG(02)' RO_ITEM-QTY.
         PERFORM BDC_FIELD    USING    'VBAP-VRKME(02)' RO_ITEM-UOM. " For Future Use
          PERFORM BDC_FIELD    USING    'VBAP-WERKS(02)'  RO_ITEM-PLANT.
          PERFORM BDC_FIELD    USING    'VBAP-LGORT(02)'  RO_ITEM-SLOC.
          PERFORM BDC_FIELD    USING    'VBAP-CHARG(02)'  RO_ITEM-BATCH.
    *FREE DELIVERY CHECK CHANGING OF ITEMCATEGORY : TANN.
          IF RO_ITEM-KBETR1 IS INITIAL AND RO_ITEM-KBETR2 IS INITIAL.
            PERFORM BDC_FIELD       USING 'VBAP-PSTYV(02)'
                                          'ZANN'.
          ELSE.
            PERFORM BDC_DYNPRO      USING 'SAPMV45A' '4001'.
            PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                          '/00'.
    Condition Types For The Items
            PERFORM BDC_DYNPRO      USING 'SAPMV45A' '4001'.
            PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                           '=PKO1'.
            PERFORM BDC_FIELD       USING 'RV45A-VBAP_SELKZ(01)' 'X'.
            PERFORM BDC_DYNPRO      USING 'SAPMV45A' '5003'.
            PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                          '=V69A_KOAN'.
            PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                          'KOMV-KSCHL(02)'.
    Condition Type 1...........
            PERFORM BDC_DYNPRO      USING 'SAPMV45A' '5003'.
            PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                          '/00'.
            PERFORM BDC_FIELD       USING 'KOMV-KSCHL(02)' RO_ITEM-KSCHL1.
            PERFORM BDC_FIELD       USING 'KOMV-KBETR(02)' RO_ITEM-KBETR1.
    Condition Type 2...........
            PERFORM BDC_DYNPRO      USING 'SAPMV45A' '5003'.
            PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                          '=V69A_KOAN'.
            PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                          'KOMV-KSCHL(02)'.
            PERFORM BDC_DYNPRO      USING 'SAPMV45A' '5003'.
            PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                          '/00'.
            PERFORM BDC_FIELD       USING 'KOMV-KSCHL(02)' RO_ITEM-KSCHL2.
            PERFORM BDC_FIELD       USING 'KOMV-KBETR(02)' RO_ITEM-KBETR2.
    Condition Type 3.............
            IF RO_ITEM-KSCHL3 IS NOT INITIAL.
              PERFORM BDC_DYNPRO      USING 'SAPMV45A' '5003'.
              PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                            '=V69A_KOAN'.
              PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                            'KOMV-KSCHL(02)'.
              PERFORM BDC_DYNPRO      USING 'SAPMV45A' '5003'.
              PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                            '/00'.
              PERFORM BDC_FIELD       USING 'KOMV-KSCHL(02)' RO_ITEM-KSCHL3.
              PERFORM BDC_FIELD       USING 'KOMV-KBETR(02)' RO_ITEM-KBETR3.
            ENDIF.
    Condition Type 4..............
            IF RO_ITEM-KSCHL4 IS NOT INITIAL.
              PERFORM BDC_DYNPRO      USING 'SAPMV45A' '5003'.
              PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                            '=V69A_KOAN'.
              PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                            'KOMV-KSCHL(02)'.
              PERFORM BDC_DYNPRO      USING 'SAPMV45A' '5003'.
              PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                            '/00'.
              PERFORM BDC_FIELD       USING 'KOMV-KSCHL(02)' RO_ITEM-KSCHL4.
              PERFORM BDC_FIELD       USING 'KOMV-KBETR(02)' RO_ITEM-KBETR4.
            ENDIF.
    Condition Type 5...............
            IF RO_ITEM-KSCHL5 IS NOT INITIAL.
              PERFORM BDC_DYNPRO      USING 'SAPMV45A' '5003'.
              PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                            '=V69A_KOAN'.
              PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                            'KOMV-KSCHL(02)'.
              PERFORM BDC_DYNPRO      USING 'SAPMV45A' '5003'.
              PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                            '/00'.
              PERFORM BDC_FIELD       USING 'KOMV-KSCHL(02)' RO_ITEM-KSCHL5.
              PERFORM BDC_FIELD       USING 'KOMV-KBETR(02)' RO_ITEM-KBETR5.
            ENDIF.
    Condition Type 6...............
            IF RO_ITEM-KSCHL6 IS NOT INITIAL.
              PERFORM BDC_DYNPRO      USING 'SAPMV45A' '5003'.
              PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                            '=V69A_KOAN'.
              PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                            'KOMV-KSCHL(02)'.
              PERFORM BDC_DYNPRO      USING 'SAPMV45A' '5003'.
              PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                            '/00'.
              PERFORM BDC_FIELD       USING 'KOMV-KSCHL(02)' RO_ITEM-KSCHL6.
              PERFORM BDC_FIELD       USING 'KOMV-KBETR(02)' RO_ITEM-KBETR6.
            ENDIF.
            PERFORM BDC_DYNPRO      USING 'SAPMV45A' '5003'.
            PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                          '/EBACK'.
          ENDIF.
       ENDLOOP.
    Saving The Sales Document
        PERFORM BDC_DYNPRO      USING 'SAPMV45A' '4001'.
        PERFORM BDC_FIELD      USING 'BDC_OKCODE'   '=SICH'.
       PERFORM BDC_TRANSACTION TABLES MESSTAB
       USING                          'VA01'
                                       CTU
                                       MODE
                                       UPDATE.
    *CALL TRANSACTION 'VA01' USING BDCDATA1
                                 MODE
                                 MODE 'A'
                                  UPDATE
                                 UPDATE 'A'
                                 MESSAGES INTO MESSTAB.
      ENDLOOP.
      CALL TRANSACTION 'VA01' USING BDCDATA1
                                  MODE 'A'
                                  UPDATE 'A'
                                  MESSAGES INTO MESSTAB1.
    APPEND MESSTAB1.
    *SELECT SINGLE VBELN INTO T_VBELN FROM VBFA
           WHERE VBELV = RO_HEADER-SORDER." AND VBTYP_N = 'J'.
       perform bdc_dynpro      using 'SAPMV50A' '4004'.
       perform bdc_field       using 'BDC_CURSOR'                              'LIKP-VBELN'.
       perform bdc_field       using 'BDC_OKCODE'                              '/00'.
       perform bdc_field       using 'LIKP-VBELN'     T_VBELN.                  "'7012000733'.
       perform bdc_dynpro      using 'SAPMV50A' '1000'.
       perform bdc_field       using 'BDC_OKCODE'         '=WABU_T'.   "'=SICH_T'.
    **perform bdc_field       using 'LIKP-BLDAT'       RO_HEADER-SODATE.     '27.06.2006'.
       perform bdc_field       using 'BDC_CURSOR'                              'LIKP-WADAT_IST'.
       perform bdc_field       using 'LIKP-WADAT'   RO_HEADER-SODATE.  "       '26.05.2006'.
    **perform bdc_field       using 'LIKP-WAUHR'                             '00:00:00'.
       perform bdc_field       using 'LIKP-BTGEW'                              '10'.
       perform bdc_field       using 'LIKP-GEWEI'                              'KG'.
       perform bdc_field       using 'LIKP-WADAT_IST' RO_HEADER-SODATE."      '26.05.2006'.
       PERFORM BDC_TRANSACTION TABLES MESSTAB
       USING                          'VL02N'
                                       CTU
                                       MODE
                                       UPDATE.
      ENDLOOP.
      IF SY-SUBRC <> 0.
        SUBRC = SY-SUBRC.
        EXIT.
    *else.
    update zrush_order set PROCESSED = 'X'.
            where sorder = SORDER_FINAL and
            sodate       = RO_HEADER-SODATE.
      ENDIF.
    PROCESSING OUT BOUND DELIVERY
    *PERFORM BDC_DYNPRO   USING   'SAPMSSY0'     '0120'.
    *PERFORM BDC_FIELD       USING 'BDC_CURSOR' '06/09'.
    *PERFORM BDC_FIELD    USING   'BDC_OKCODE'   '=IMED' .
    *PERFORM BDC_DYNPRO   USING   'SAPMSSY0'     '0120'.
    *PERFORM BDC_FIELD    USING   'BDC_OKCODE'   '=BACK'.
    PROCESSING INVOICE DELIVERY
    *PERFORM BDC_DYNPRO   USING   'RV60SBAT'     '1000'.
    *PERFORM BDC_FIELD       USING 'BDC_CURSOR' 'IMMEDI'.
    **SELECTION SCREEN PARAMETER FOR VF06
    *PERFORM BDC_FIELD    USING    'VKOR1' '1000'.
    *PERFORM BDC_FIELD    USING    'FKDAB' ' '.
    *PERFORM BDC_FIELD    USING    'ALLEA' 'X'.
    *PERFORM BDC_FIELD    USING    'ALLEL' 'X'.
    *WRITE SY-DATUM TO V_DATE.
    *WRITE SY-UZEIT TO V_TIME.
    *ADD '03' TO V_TIME+2(02).
    *PERFORM BDC_FIELD    USING    'EXDATE' V_DATE. "V_DATE.
    *PERFORM BDC_FIELD    USING    'EXTIME' V_TIME. "V_TIME.
    *PERFORM BDC_FIELD    USING    'IMMEDI' 'X'.
    *PERFORM BDC_FIELD    USING    'NUMBJOBS' ' '.
    *PERFORM BDC_FIELD    USING    'MAX_CUST' ' '.
    *PERFORM BDC_FIELD    USING    'UTASY' 'X'.
    *PERFORM BDC_FIELD    USING   'BDC_OKCODE'   '=ONLI'.
    *PERFORM BDC_DYNPRO   USING   'SAPMSSY0'     '0120'.
    *PERFORM BDC_FIELD    USING   'BDC_OKCODE'   '=BACK'.
    *PERFORM BDC_DYNPRO   USING   'RV60SBAT'     '1000'.
    *PERFORM BDC_FIELD    USING   'BDC_OKCODE'   '/E'.
    *PERFORM BDC_TRANSACTION TABLES MESSTAB
    *USING                          'VF06'
                                   CTU
                                   MODE
                                   UPDATE.
    PERFORM CLOSE_GROUP USING     CTU.
    wait up to 2 seconds.
    submit ZVF06_SCHEDULE and return.
    wait up to 2 seconds.
    ENDFUNCTION.

    y u are unable to Upload?

  • Code snippet help

    Hello experts
    I have to read serial number from  characteristic "SBANK_SERIAL_NUMBER"  in
    class "KSE_SN_ENDOSCOPEs" contained in a name plate data of a instument. i wrote the code but iam unable to see the results at output.
    Thanks
    SP
    Program goes like this
    Global structure of list
    type-pools: slis.
    tables: likp,
            lips,
            vbfa,
            kssk,
            klah,
            vbak,
            mara,
            vbrk,
            ser01,
            vbpa,
          nast,
            zseri,
          ltap,
          pa0001,
          kna1,
            objk,
            viqmel,
            viqmma.
    types:  begin of i_delivery,
                 vbeln like likp-vbeln,
                 posnr  like lips-posnr,
                 kunnr like likp-kunnr,
                 kunag like likp-kunag,
                 vkorg  like vbak-vkorg,
                 matnr  like lips-matnr,
                 lfart  like likp-lfart,
                 arktx  like vbap-arktx,
                 vgbel  like lips-vgbel,
                 vgpos  like lips-vgpos,
                 pstyv   like lips-pstyv,
                 wadat type likp-wadat,
                 lfdat type likp-lfdat,
                 prodh type lips-prodh,
                 lfimg type lips-lfimg,
                 vkbur type lips-vkbur,
                 vkgrp type lips-vkgrp,
                 mvgr1 type lips-mvgr1,
                 sernr like objk-sernr,
                 sernp like equi-sernr,
                 equnr like equi-equnr,
                 bstnk  like vbak-bstnk,
                 vbelv  like lips-vgbel,
                 posnv  like lips-posnv,
                 uecha  like lips-uecha,
                 ernam  like vbak-ernam,
                 erdat like vbak-erdat,
                 serail like lips-serail,
                 anzsn like lips-anzsn,
                 auart like vbak-auart ,
                 netwr like vbap-netwr,
                 fstno like vbpa-pernr,
                 fstnm like pa0001-ename,
                 ename like pa0001-ename,
                 qname like ltap-qname,
                 name1 like kna1-name1,
                 name3 like kna1-name2,
                 pernr like vbpa-pernr,
                 aufnr like viqmel-aufnr,
                 qmnum like viqmel-qmnum,
                 mngrp like viqmma-mngrp,
                 qmcod like viqmel-qmcod,
                 qmcol like viqmma-mncod,
                 qmgrp like viqmel-qmgrp,
                 cotxt(20),
             end of i_delivery.
    Global structure of list
    */ Selection and Input Parameters
    selection-screen begin of block block2 with frame title text-003.
    select-options: s_vkorg for likp-vkorg no intervals,
                    s_matnr for lips-matnr,
                    s_kunag for likp-kunag.
    select-options: s_werks for lips-werks.
    select-options: s_vbeln for vbfa-vbeln,
                    s_waist for likp-wadat_ist.
    select-options: s_vgbel for lips-vgbel.
    selection-screen end of block block2.
    ranges: r_vbeln for likp-vbeln.
    data:   gt_fieldcat type slis_t_fieldcat_alv.
    data:   gt_outtab type i_delivery occurs 0 with header line,
            rt_outtab1 type i_delivery occurs 0 with header line,
            i_nast type nast occurs 0 with header line,
            gt_list_top_of_page type slis_t_listheader,
            gt_events   type slis_t_event,
            gc_formname_top_of_page type slis_formname value 'TOP_OF_PAGE'.
    data:   g_repid like sy-repid,
            g_count like sy-tabix.
    data: begin of i_serial occurs 0,
            obknr type ser01-obknr,
            lief_nr type ser01-lief_nr,
            posnr type ser01-posnr,
            anzsn type ser01-anzsn,
          end of i_serial.
    data: begin of i_object_numbers occurs 0,
            obknr type objk-obknr,
            sernr type objk-sernr,
            matnr type objk-matnr,
            taser type objk-taser,
            equnr type objk-equnr,
          end of i_object_numbers.
    data:   g_save(1) type c,
          g_default(1) TYPE c,
            g_exit(1) type c,
            gx_variant like disvariant,
            g_variant like disvariant.
    data:   g_mnkat like viqmma-mnkat,
            g_mngrp like viqmma-mngrp.
    Initialization fieldcatalog
    initialization.
      g_repid = sy-repid.
      perform fieldcat_init using gt_fieldcat[].
      move: 'I' to  s_vkorg-sign,
            'EQ' to  s_vkorg-option,
           '5090' to s_vkorg-low.
      append  s_vkorg.
    move: 'I' to s_werks-sign,
           'EQ' to s_werks-option,
          '9000' to s_werks-low.
    append s_werks.
      g_save = 'A'.
      perform variant_init.
    Get default variant
      gx_variant = g_variant.
      call function 'REUSE_ALV_VARIANT_DEFAULT_GET'
           exporting
                i_save     = g_save
           changing
                cs_variant = gx_variant
           exceptions
                not_found  = 2.
      if sy-subrc = 0.
       p_vari = gx_variant-variant.
      endif.
    *AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_vari.
    PERFORM f4_for_variant.
    *AT SELECTION-SCREEN.
    PERFORM pai_of_selection_screen.
    Start of Selection
    start-of-selection.
    *PERFORM e03_eventtab_build USING gt_events[].
      perform select_data tables gt_outtab.
    Display list
    end-of-selection.
      call function 'REUSE_ALV_GRID_DISPLAY'
           exporting
                i_background_id         = 'ALV_BACKGROUND'
                i_callback_user_command = 'USER_COMMAND'
                is_variant              = g_variant
                i_save                  = g_save
                i_callback_program      = g_repid
                it_fieldcat             = gt_fieldcat[]
           tables
                t_outtab                = gt_outtab.
       Forms
    Initialization fieldcatalog
    form fieldcat_init
          using rt_fieldcat type slis_t_fieldcat_alv.
      data: ls_fieldcat type slis_fieldcat_alv.
      data: pos type i value 1.
      clear ls_fieldcat.
      ls_fieldcat-col_pos       =  pos.
      ls_fieldcat-fieldname     = 'VBELN'.
      ls_fieldcat-seltext_s     = 'Delivery'.
      ls_fieldcat-seltext_m     = 'Delivery'.
      ls_fieldcat-key           = 'X'.
      append ls_fieldcat to rt_fieldcat.
      clear ls_fieldcat.
      pos = pos + 1.
    ls_fieldcat-col_pos       =  pos.
    ls_fieldcat-fieldname     = 'POSNR'.
    ls_fieldcat-key           = 'X'.
    ls_fieldcat-seltext_s     = 'Item'.
    ls_fieldcat-seltext_m     = 'Item'.
    APPEND ls_fieldcat TO rt_fieldcat.
    CLEAR ls_fieldcat.
      pos = pos + 1.
      ls_fieldcat-col_pos       =  pos.
      ls_fieldcat-fieldname     = 'LFART'.
      ls_fieldcat-seltext_s     = 'Del Type'.
      ls_fieldcat-seltext_m     = 'Delivery Type'.
      append ls_fieldcat to rt_fieldcat.
      clear ls_fieldcat.
    pos = pos + 1.
    ls_fieldcat-col_pos       =  pos.
    ls_fieldcat-fieldname     = 'PSTYV'.
    ls_fieldcat-seltext_s     = 'Category'.
    ls_fieldcat-seltext_m     = 'Item Category'.
    APPEND ls_fieldcat TO rt_fieldcat.
    CLEAR ls_fieldcat.
    pos = pos + 1.
    ls_fieldcat-col_pos       =  pos.
    ls_fieldcat-fieldname     = 'VGBEL'.
    ls_fieldcat-seltext_s     = 'Source Doc'.
    ls_fieldcat-seltext_m     = 'Source Doc'.
    APPEND ls_fieldcat TO rt_fieldcat.
    CLEAR ls_fieldcat.
    pos = pos + 1.
    ls_fieldcat-col_pos       =  pos.
    ls_fieldcat-fieldname     = 'AUART'.
    ls_fieldcat-seltext_s     = 'Type'.
    ls_fieldcat-seltext_m     = 'Type'.
    APPEND ls_fieldcat TO rt_fieldcat.
    CLEAR ls_fieldcat.
    pos = pos + 1.
    ls_fieldcat-col_pos       =  pos.
    ls_fieldcat-fieldname     = 'BSTNK'.
    ls_fieldcat-seltext_s     = 'Cust PO'.
    ls_fieldcat-seltext_m     = 'Customer PO'.
    APPEND ls_fieldcat TO rt_fieldcat.
    CLEAR ls_fieldcat.
    pos = pos + 1.
    ls_fieldcat-col_pos       =  pos.
    ls_fieldcat-fieldname     = 'KUNNR'.
    ls_fieldcat-seltext_s     = 'Customer'.
    ls_fieldcat-seltext_m     = 'Customer'.
    APPEND ls_fieldcat TO rt_fieldcat.
    CLEAR ls_fieldcat.
    pos = pos + 1.
    ls_fieldcat-col_pos       =  pos.
    ls_fieldcat-fieldname     = 'NAME1'.
    ls_fieldcat-seltext_s     = 'Name'.
    ls_fieldcat-seltext_m     = 'Name1'.
    APPEND ls_fieldcat TO rt_fieldcat.
    CLEAR ls_fieldcat.
    pos = pos + 1.
    ls_fieldcat-col_pos       =  pos.
    ls_fieldcat-fieldname     = 'KUNAG'.
    ls_fieldcat-seltext_s     = 'Sold-To'.
    ls_fieldcat-seltext_m     = 'Sold-To'.
    APPEND ls_fieldcat TO rt_fieldcat.
    CLEAR ls_fieldcat.
    pos = pos + 1.
    ls_fieldcat-col_pos       =  pos.
    ls_fieldcat-fieldname     = 'NAME3'.
    ls_fieldcat-seltext_s     = 'Name'.
    ls_fieldcat-seltext_m     = 'Name'.
    APPEND ls_fieldcat TO rt_fieldcat.
    CLEAR ls_fieldcat.
    pos = pos + 1.
    ls_fieldcat-col_pos       =  pos.
    ls_fieldcat-fieldname     = 'PERNR'.
    ls_fieldcat-seltext_s     = 'Rep'.
    ls_fieldcat-seltext_m     = 'Sales Rep'.
    APPEND ls_fieldcat TO rt_fieldcat.
    CLEAR ls_fieldcat.
    pos = pos + 1.
    ls_fieldcat-col_pos       =  pos.
    ls_fieldcat-fieldname     = 'ENAME'.
    ls_fieldcat-seltext_s     = 'Rep Name'.
    ls_fieldcat-seltext_m     = 'Rep Name'.
    APPEND ls_fieldcat TO rt_fieldcat.
    CLEAR ls_fieldcat.
    pos = pos + 1.
    ls_fieldcat-col_pos       =  pos.
    ls_fieldcat-fieldname     = 'FSTNO'.
    ls_fieldcat-seltext_s     = 'FST'.
    ls_fieldcat-seltext_m     = 'FST No'.
    APPEND ls_fieldcat TO rt_fieldcat.
    CLEAR ls_fieldcat.
    pos = pos + 1.
    ls_fieldcat-col_pos       =  pos.
    ls_fieldcat-fieldname     = 'FSTNM'.
    ls_fieldcat-seltext_s     = 'FST Name'.
    ls_fieldcat-seltext_m     = 'FST Name'.
    APPEND ls_fieldcat TO rt_fieldcat.
    CLEAR ls_fieldcat.
    pos = pos + 1.
    ls_fieldcat-col_pos       =  pos.
    ls_fieldcat-fieldname     = 'VKBUR'.
    ls_fieldcat-seltext_s     = 'Area'.
    ls_fieldcat-seltext_m     = 'Area'.
    APPEND ls_fieldcat TO rt_fieldcat.
    CLEAR ls_fieldcat.
    pos = pos + 1.
    ls_fieldcat-col_pos       =  pos.
    ls_fieldcat-fieldname     = 'VKGRP'.
    ls_fieldcat-seltext_s     = 'Region'.
    ls_fieldcat-seltext_m     = 'Region'.
    APPEND ls_fieldcat TO rt_fieldcat.
    CLEAR ls_fieldcat.
    pos = pos + 1.
    ls_fieldcat-col_pos       =  pos.
    ls_fieldcat-fieldname     = 'WERKS'.
    ls_fieldcat-seltext_s     = 'Plant'.
    ls_fieldcat-seltext_m     = 'Plant'.
    APPEND ls_fieldcat TO rt_fieldcat.
    CLEAR ls_fieldcat.
      pos = pos + 1.
      ls_fieldcat-col_pos       =  pos.
      ls_fieldcat-fieldname     = 'MATNR'.
      ls_fieldcat-seltext_s     = 'Material'.
      ls_fieldcat-seltext_m     = 'Material'.
      append ls_fieldcat to rt_fieldcat.
      clear ls_fieldcat.
      pos = pos + 1.
    pos = pos + 1.
    ls_fieldcat-col_pos       =  pos.
    ls_fieldcat-fieldname     = 'MVGR1'.
    ls_fieldcat-seltext_s     = 'Speciality'.
    ls_fieldcat-seltext_m     = 'Speciality'.
    APPEND ls_fieldcat TO rt_fieldcat.
    CLEAR ls_fieldcat.
    pos = pos + 1.
    ls_fieldcat-col_pos       =  pos.
    ls_fieldcat-fieldname     = 'SERNR'.
    ls_fieldcat-seltext_s     = 'Serial'.
    ls_fieldcat-seltext_m     = 'Serial'.
    APPEND ls_fieldcat TO rt_fieldcat.
    CLEAR ls_fieldcat.
    pos = pos + 1.
    ls_fieldcat-col_pos       =  pos.
    ls_fieldcat-fieldname     = 'ARKTX'.
    ls_fieldcat-seltext_s     = 'Description'.
    ls_fieldcat-seltext_m     = 'Description'.
    APPEND ls_fieldcat TO rt_fieldcat.
    CLEAR ls_fieldcat.
    pos = pos + 1.
    ls_fieldcat-col_pos       =  pos.
    ls_fieldcat-fieldname     = 'ERNAM'.
    ls_fieldcat-seltext_s     = 'Created By'.
    ls_fieldcat-seltext_m     = 'Created By'.
    APPEND ls_fieldcat TO rt_fieldcat.
    CLEAR ls_fieldcat.
    pos = pos + 1.
    ls_fieldcat-col_pos       =  pos.
    ls_fieldcat-fieldname     = 'ERDAT'.
    ls_fieldcat-seltext_s     = 'Created On'.
    ls_fieldcat-seltext_m     = 'Created On'.
    APPEND ls_fieldcat TO rt_fieldcat.
    CLEAR ls_fieldcat.
    pos = pos + 1.
    ls_fieldcat-col_pos       =  pos.
    ls_fieldcat-fieldname     = 'VSTEL'.
    ls_fieldcat-seltext_s     = 'Ship Point'.
    ls_fieldcat-seltext_m     = 'Shipping Point'.
    APPEND ls_fieldcat TO rt_fieldcat.
    CLEAR ls_fieldcat.
    pos = pos + 1.
    ls_fieldcat-col_pos       =  pos.
    ls_fieldcat-fieldname     = 'WADAT'.
    ls_fieldcat-seltext_s     = 'GoodsMvt.Date'.
    ls_fieldcat-seltext_m     = 'Goods Mvt Date'.
    APPEND ls_fieldcat TO rt_fieldcat.
    CLEAR ls_fieldcat.
    pos = pos + 1.
    ls_fieldcat-col_pos       =  pos.
    ls_fieldcat-fieldname     = 'SERNR'.
    ls_fieldcat-seltext_s     = 'Serial Shipped'.
    ls_fieldcat-seltext_m     = 'SBANK Serial'.
    append ls_fieldcat to rt_fieldcat.
    clear ls_fieldcat.
      pos = pos + 1.
      ls_fieldcat-col_pos       =  pos.
      ls_fieldcat-fieldname     = 'SERNP'.
      ls_fieldcat-seltext_s     = 'SBANK Serial'.
      ls_fieldcat-seltext_m     = 'SBANK Serial'.
      append ls_fieldcat to rt_fieldcat.
      clear ls_fieldcat.
      pos = pos + 1.
      ls_fieldcat-col_pos       =  pos.
      ls_fieldcat-fieldname     = 'VBELV'.
      ls_fieldcat-seltext_s     = 'Invoice'.
      ls_fieldcat-seltext_m     = 'Invoice'.
      append ls_fieldcat to rt_fieldcat.
      clear ls_fieldcat.
      pos = pos + 1.
      ls_fieldcat-col_pos       =  pos.
      ls_fieldcat-fieldname     = 'NETWR'.
      ls_fieldcat-seltext_s     = 'Invoice Amt'.
      ls_fieldcat-seltext_m     = 'Invoice Value'.
      append ls_fieldcat to rt_fieldcat.
      clear ls_fieldcat.
      pos = pos + 1.
      ls_fieldcat-col_pos       =  pos.
      ls_fieldcat-fieldname     = 'LFIMG'.
      ls_fieldcat-seltext_s     = 'Del Qty'.
      ls_fieldcat-seltext_m     = 'Delivery Qty'.
      append ls_fieldcat to rt_fieldcat.
      clear ls_fieldcat.
      pos = pos + 1.
      ls_fieldcat-col_pos       =  pos.
      ls_fieldcat-fieldname     = 'QMNUM'.
      ls_fieldcat-seltext_s     = 'Notification'.
      ls_fieldcat-seltext_m     = 'Notification'.
      append ls_fieldcat to rt_fieldcat.
      clear ls_fieldcat.
      pos = pos + 1.
      ls_fieldcat-col_pos       =  pos.
      ls_fieldcat-fieldname     = 'QMCOD'.
      ls_fieldcat-seltext_s     = 'KST Rep Level '.
      ls_fieldcat-seltext_m     = 'KST Repair Level '.
      append ls_fieldcat to rt_fieldcat.
      clear ls_fieldcat.
      pos = pos + 1.
      ls_fieldcat-col_pos       =  pos.
      ls_fieldcat-fieldname     = 'QMCOL'.
      ls_fieldcat-seltext_s     = 'KSE Rep Level'.
      ls_fieldcat-seltext_m     = 'KSE Repair Level'.
      append ls_fieldcat to rt_fieldcat.
      clear ls_fieldcat.
    pos = pos + 1.
      ls_fieldcat-col_pos       =  pos.
      ls_fieldcat-fieldname     = 'SERNR'.
      ls_fieldcat-seltext_s     = 'Serial Nbr'.
      ls_fieldcat-seltext_m     = 'Serial Nbr'.
      append ls_fieldcat to rt_fieldcat.
      clear ls_fieldcat.
    endform.   "fieldcat_init
    Data selection
    form select_data tables rt_outtab like gt_outtab[].
      clear: r_vbeln[].
    Read all Invoices for the Selection
      select distinct h~vbeln h~kunnr h~kunag
                     d~posnr  d~matnr d~anzsn
                     d~serail d~vgbel d~vgpos
                     d~posnv  d~lfimg d~arktx
                     d~uecha  h~lfart h~erdat
                     h~ernam  h~lfdat d~prodh
                     h~vkorg  d~vkbur d~vkgrp
                     d~mvgr1  h~wadat_ist d~pstyv
             into (rt_outtab-vbeln, rt_outtab-kunnr,
                    rt_outtab-kunag, rt_outtab-posnr,
                    rt_outtab-matnr, rt_outtab-anzsn,
                    rt_outtab-serail, rt_outtab-vgbel,
                    rt_outtab-vgpos,  rt_outtab-posnv,
                    rt_outtab-lfimg,  rt_outtab-arktx,
                    rt_outtab-uecha, rt_outtab-lfart,
                    rt_outtab-erdat, rt_outtab-ernam,
                    rt_outtab-lfdat, rt_outtab-prodh,
                    rt_outtab-vkorg, rt_outtab-vkbur,
                    rt_outtab-vkgrp, rt_outtab-mvgr1,
                    rt_outtab-wadat, rt_outtab-pstyv)
            from likp as h inner join lips as d
                     on h~vbeln = d~vbeln
                    where h~vbeln in s_vbeln
                    and  h~vkorg in s_vkorg
                    AND  h~lfart EQ 'LF'
                  AND  h~kunnr IN s_kunnr
                    and  h~kunag in s_kunag
                  AND  h~erdat IN s_erdat
                    and  d~matnr in s_matnr
                  AND  d~prodh IN s_prodh
                  AND  d~vgbel IN s_vbelv
                    and  d~matnr like 'S%'.
      select single * from vbak where vbeln = rt_outtab-vgbel.
        if: sy-subrc eq 0.
          move vbak-vbeln to rt_outtab-vgbel.
          move vbak-auart to rt_outtab-auart.
        endif.
        select single * from mara where matnr = rt_outtab-matnr
                                    and  mtart eq 'FERT'.
        check sy-subrc eq 0.
        if not rt_outtab-posnv is initial.
          rt_outtab-vgpos = rt_outtab-posnv.
        endif.
        clear: vbfa.
        select single vbeln rfwrt into (rt_outtab-vbelv, rt_outtab-netwr)
    from vbfa             where vbelv eq rt_outtab-vgbel
                               and   posnv eq rt_outtab-vgpos
                               and   vbtyp_n eq 'M'.
        append rt_outtab.
        if not  r_vbeln-low is initial.
          if r_vbeln-low gt rt_outtab-vbeln.
            r_vbeln-low =  rt_outtab-vbeln.
          endif.
          if r_vbeln-high lt rt_outtab-vbeln.
            r_vbeln-high =  rt_outtab-vbeln.
          endif.
        else.
          r_vbeln-low  =  rt_outtab-vbeln.
          r_vbeln-high =  rt_outtab-vbeln.
        endif.
        clear: rt_outtab.
      endselect.
      if not r_vbeln is initial.
        move: 'I' to  r_vbeln-sign,
               'BT' to  r_vbeln-option.
        append r_vbeln.
        select * into corresponding fields of table i_serial
                                  from   ser01 where lief_nr in r_vbeln.
      endif.
      sort i_serial.
      if not i_serial[] is initial.
        select * into corresponding fields of table i_object_numbers
                                   from   objk
                                   for all entries in i_serial
                                   where obknr eq i_serial-obknr
                                   and  taser eq 'SER01'.
      endif.
      sort i_object_numbers by  obknr.
      loop at rt_outtab.
    Read Ship-to Customer
       SELECT SINGLE adrnr INTO vbpa-adrnr FROM vbpa
                         WHERE vbeln EQ rt_outtab-vgbel
                                  AND parvw EQ 'WE'.
    Read the Sold To Name
       SELECT SINGLE name1 INTO rt_outtab-name1
                         FROM kna1 WHERE kunnr EQ rt_outtab-kunnr.
       CLEAR: rt_outtab-pernr.
       PERFORM get_repname USING   rt_outtab-vgbel
                                   rt_outtab-vgpos
                              CHANGING rt_outtab-pernr
                                       rt_outtab-ename.
    Read the Sold To Name
       SELECT SINGLE name1 INTO rt_outtab-name3
                         FROM kna1 WHERE kunnr EQ rt_outtab-kunag.
       SELECT SINGLE pernr INTO rt_outtab-fstno FROM vbpa
                     WHERE vbeln EQ rt_outtab-vgbel
                              AND parvw EQ 'P3'.
       CLEAR:  vbpa-adrnr.
       CLEAR: pa0001.
       SELECT SINGLE ename INTO rt_outtab-fstnm  FROM pa0001
                                    WHERE pernr EQ  rt_outtab-fstno.
    Read Ship-to Customer
        clear: objk.
        if not rt_outtab-serail is initial.
          read table i_serial with key lief_nr = rt_outtab-vbeln
                                        posnr = rt_outtab-posnr.
          if sy-subrc eq 0.
            do i_serial-anzsn times.
              read table i_object_numbers  with key obknr = i_serial-obknr
                                                binary search.
              if sy-subrc eq 0.
              rt_outtab-equnr = i_object_numbers-equnr.
                rt_outtab-sernr = i_object_numbers-sernr.
                delete i_object_numbers index sy-tabix.
                move '1'   to rt_outtab-lfimg.
               select single aufnr qmnum equnr qmcod
                            into (rt_outtab-aufnr, rt_outtab-qmnum,
                                 rt_outtab-equnr, rt_outtab-qmcod)
                           from viqmel  where kdauf = rt_outtab-vgbel
                             and kdpos = rt_outtab-vgpos.
                             AND qmnum IN s_qmnum.
               check sy-subrc eq 0.
              select single qmnum aufnr qmgrp qmcod from viqmel
                            into (rt_outtab-qmnum, rt_outtab-aufnr,
                                rt_outtab-qmgrp, rt_outtab-qmcod)
                           where equnr = rt_outtab-equnr.
    <b>Read Serial Number from Name Plate Data.
                clear: klah, kssk.
                select single  atwrt
                    into  (rt_outtab-sernp)
                      into  (rt_outtab-sernr)
                      from  ( klah as a inner join kssk as k
                               on aclint = kclint )
                          join ausp as p
                                on kobjek = pobjek
                                and kclint = patinn
                      where a~klart = '002'
                      and  a~class = 'KSE_SN_ENDOSCOPES'
                      and  k~objek = rt_outtab-equnr.</b>
    *KSE Repair level (activity code text from KSE-SM07 code group)
        clear: rt_outtab-qmcol.
        clear: g_mnkat, g_mngrp.
        select single  mnkat mngrp mncod into
                            (g_mnkat, g_mngrp, rt_outtab-qmcol)
                      from viqmma where qmnum = rt_outtab1-qmnum
                            and  mngrp eq 'KSE-SM07'
                            and kzloesch eq space.
        select single kurztext into rt_outtab1-cotxt
                     from qpct where katalogart eq g_mnkat
                            and codegruppe eq  g_mngrp
                            and code eq rt_outtab-qmcol
                            and sprache eq sy-langu.
        rt_outtab1 = rt_outtab.
        append rt_outtab1.
            endif.
           enddo.
        endif.
        endif.
      endloop.
      clear: rt_outtab[].
      rt_outtab[] = rt_outtab1[].
      sort rt_outtab by vbeln posnr.
    endform.
          FORM get_repname                                              *
    -->  P_VBELN                                                       *
    -->  P_POSNR                                                       *
    -->  P_PERNR                                                       *
    -->  P_ENAME                                                       *
    form get_repname using  p_vbeln
                              p_posnr
                     changing  p_pernr
                              p_ename. "
      data: i_vbpa like vbpa occurs 0 with header line.
      clear: i_vbpa[].
      call function 'Z_DETERMINE_ACTIVE_SALES_REP'
           exporting
                g_salesdocument = p_vbeln
                g_sales_item    = p_posnr
           tables
                st_vbpa         = i_vbpa.
      read table i_vbpa index 1.
      if sy-subrc = 0.
        p_pernr = i_vbpa-pernr.
        select single ename into p_ename
          from pa0001
         where pernr = i_vbpa-pernr.
      endif.
    endform.                    " get_repname
          FORM E03_EVENTTAB_BUILD                                       *
    -->  E03_LT_EVENTS                                                 *
    form e03_eventtab_build using e03_lt_events type slis_t_event.
      data: ls_event type slis_alv_event.
      call function 'REUSE_ALV_EVENTS_GET'
           exporting
                i_list_type = 0
           importing
                et_events   = e03_lt_events.
      read table e03_lt_events with key name =  slis_ev_top_of_page
                               into ls_event.
      if sy-subrc = 0.
        move gc_formname_top_of_page to ls_event-form.
        append ls_event to e03_lt_events.
      endif.
    endform.
          FORM TOP_OF_PAGE                                              *
    form top_of_page.
      call function 'REUSE_ALV_COMMENTARY_WRITE'
           exporting
                it_list_commentary = gt_list_top_of_page.
    endform.
    *&      Form  USER_COMMAND
    form user_command  using r_ucomm like sy-ucomm
                             rs_selfield type slis_selfield.
      case r_ucomm.
        when '&IC1'.
          perform display_delivery using r_ucomm
                                        rs_selfield.
      endcase.
    endform.
    *&      Form  display_delivery
    form display_delivery
    using r_ucomm like sy-ucomm
                                 rs_selfield type slis_selfield.
      case rs_selfield-sel_tab_field.
        when '1-VBELN'.
          set parameter id 'VL' field rs_selfield-value.
          call transaction 'VL03N' and skip first screen.
        when '1-VBELV'.
          set parameter id 'VF' field rs_selfield-value.
          call transaction 'VF03N' and skip first screen.
      endcase.
    endform.
    *&      Form  VARIANT_INIT
          text
    -->  p1        text
    <--  p2        text
    form variant_init.
      clear g_variant.
      g_variant-report = g_repid.
    endform.                               " VARIANT_INIT
    *&      Form  F4_FOR_VARIANT
          text
    -->  p1        text
    <--  p2        text
    form f4_for_variant.
      call function 'REUSE_ALV_VARIANT_F4'
           exporting
                is_variant          = g_variant
                i_save              = g_save
              it_default_fieldcat =
           importing
                e_exit              = g_exit
                es_variant          = gx_variant
           exceptions
                not_found = 2.
      if sy-subrc = 2.
        message id sy-msgid type 'S'      number sy-msgno
                with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
      else.
        if g_exit = space.
         p_vari = gx_variant-variant.
        endif.
      endif.
    endform.
    *&      Form  PAI_OF_SELECTION_SCREEN
          text
    form pai_of_selection_screen.
    IF NOT p_vari IS INITIAL.
      move g_variant to gx_variant.
       MOVE p_vari TO gx_variant-variant.
      call function 'REUSE_ALV_VARIANT_EXISTENCE'
           exporting
                i_save     = g_save
           changing
                cs_variant = gx_variant.
      g_variant = gx_variant.
    ELSE.
      perform variant_init.
    ENDIF.
    endform.                               " PAI_OF_SELECTION_SCREEN

    Hi,
    Please try like this.
    clear: klah, kssk.
    <b>select single p~atwrt</b>
    into (rt_outtab-sernr)
    from klah as a inner join kssk as k
    on aclint = kclint
    <b>inner join ausp as p</b>
    on kobjek = pobjek
    and kclint = patinn
    where a~klart = '002'
    and a~class = 'KSE_SN_ENDOSCOPES'
    and k~objek = rt_outtab-equnr.
    Regards,
    Ferry Lianto

  • DELIVERY & GI PROBLEM SD:ABAP PROGRAM

    HAI FRIENDS
      I HAVE CREATED ONE SALES ORDER. NOW I WANT DELIVERY(VL02N) AND GOODS ISSUER FOR THAT SALES ORDER. I WANT BDC RECORDING
    Program ID       : ZRFC_RUSHORDER
    Transaction Code : Z*
    Author           : Veerendra kumar E
    Description      : RFC For Sales Process using Session Method calling
                       3 Transactions VA01,VL23 & VF06
    Project          : KURLON
    Version          : 1.0
    Change History
        Date   |   Programmer   |   Corr. #   |   Description
               |                |             |
               |                |             |
    FUNCTION ZRFC_RUSHORDER .
    ""Local interface:
    *"  EXPORTING
    *"     VALUE(SUBRC) LIKE  SYST-SUBRC
    *"  TABLES
    *"      MESSTAB STRUCTURE  BDCMSGCOLL OPTIONAL
    *"      RO_HEADER STRUCTURE  ZSD_HEADER
    *"      RO_ITEM STRUCTURE  ZSD_ITEM
           INTERNAL TABLES,STRUCTURES & VARIABLES
    *TABLES : ZSO_CREATE_TEXT.
    DATA: CTU      LIKE  APQI-PUTACTIVE,
          MODE     LIKE  APQI-PUTACTIVE,
          UPDATE   LIKE  APQI-PUTACTIVE,
          GROUP    LIKE  APQI-GROUPID,
          USER     LIKE  APQI-USERID,
          KEEP     LIKE  APQI-QERASE,
          HOLDDATE LIKE  APQI-STARTDATE,
          NODATA   LIKE  APQI-PUTACTIVE.
    DATA : SORDER_FINAL LIKE VBAK-VBELN,
           SORDER(15)   TYPE C,
           V_CODE(2)    TYPE C,
           V_PLANT     LIKE EKPO-WERKS,
           YEAR_CONVERSION(1) TYPE C.
    DATA : WA_ZRUSH_ORDER LIKE ZRUSH_ORDER.
    DATA : V_DATE LIKE SY-DATUM,
           V_TIME LIKE SY-UZEIT.
    DATA : SESSION_NAM(30) TYPE C.
           CTU = ' '.
           MODE = 'N'.
           USER = SY-UNAME.
           CONCATENATE SY-UNAME '_' SY-DATUM '_' SY-UZEIT INTO
                                                   SESSION_NAM.
           GROUP = 'RUSH_ORDER'.
           KEEP = 'X'.
           UPDATE = 'L'.
           HOLDDATE = ''.
           NODATA = '/'.
    SUBRC = 0.
    *CREATING SESSSION
    PERFORM OPEN_GROUP      USING GROUP USER KEEP HOLDDATE CTU.
    LOOP AT RO_HEADER.
    MOVE RO_HEADER-SORDER TO SORDER.
    V_PLANT = SORDER+0(4).
    SELECT SINGLE CODE INTO V_CODE FROM ZPLANT_NUMER_IBS WHERE PLANT = V_PLANT.
    IF SORDER+4(4) = '2005'.
         YEAR_CONVERSION = 'E'.
    ELSEIF SORDER+4(4) = '2006'.
         YEAR_CONVERSION = 'F'.
    ELSEIF SORDER+4(4) = '2007'.
         YEAR_CONVERSION = 'G'.
    ELSEIF SORDER+4(4) = '2008'.
         YEAR_CONVERSION = 'H'.
    ELSEIF SORDER+4(4) = '2009'.
         YEAR_CONVERSION = 'J'.
    ELSEIF SORDER+4(4) = '2010'.
         YEAR_CONVERSION = 'K'.
    ELSEIF SORDER+4(4) = '2011'.
         YEAR_CONVERSION = 'L'.
    ELSEIF SORDER+4(4) = '2012'.
         YEAR_CONVERSION = 'M'.
    ELSEIF SORDER+4(4) = '2013'.
         YEAR_CONVERSION = 'N'.
    ELSEIF SORDER+4(4) = '2014'.
         YEAR_CONVERSION = 'P'.
    ELSEIF SORDER+4(4) = '2015'.
         YEAR_CONVERSION = 'Q'.
    ELSEIF SORDER+4(4) = '2016'.
         YEAR_CONVERSION = 'R'.
    ELSEIF SORDER+4(4) = '2017'.
         YEAR_CONVERSION = 'S'.
    ELSEIF SORDER+4(4) = '2018'.
         YEAR_CONVERSION = 'T'.
    ELSEIF SORDER+4(4) = '2019'.
         YEAR_CONVERSION = 'U'.
    ELSEIF SORDER+4(4) = '2020'.
         YEAR_CONVERSION = 'V'.
    ELSEIF SORDER+4(4) = '2021'.
         YEAR_CONVERSION = 'W'.
    ELSEIF SORDER+4(4) = '2022'.
         YEAR_CONVERSION = 'X'.
    ELSEIF SORDER+4(4) = '2023'.
         YEAR_CONVERSION = 'Y'.
    ELSEIF SORDER+4(4) = '2024'.
         YEAR_CONVERSION = 'Z'.
    ELSEIF SORDER+4(4) = '2025'.
         YEAR_CONVERSION = 'A'.
    ELSEIF SORDER+4(4) = '2026'.
         YEAR_CONVERSION = 'B'.
    ELSEIF SORDER+4(4) = '2027'.
         YEAR_CONVERSION = 'C'.
    ENDIF.
    CONCATENATE  YEAR_CONVERSION V_CODE SORDER+8(7) INTO SORDER_FINAL.
    CLEAR YEAR_CONVERSION.
    CLEAR V_CODE.
    CLEAR V_PLANT.
    Text Element Creation for Sales order.
    ZSO_CREATE_TEXT-SORDER      = SORDER_FINAL.
    ZSO_CREATE_TEXT-LR_NUMBER   = RO_HEADER-LR_NUMBER.
    ZSO_CREATE_TEXT-TRANSPORTER = RO_HEADER-TRANSPORTER.
    ZSO_CREATE_TEXT-Z003        = RO_HEADER-Z003.
    ZSO_CREATE_TEXT-Z004        = RO_HEADER-Z004.
    INSERT ZSO_CREATE_TEXT.
      PERFORM BDC_DYNPRO      USING 'SAPMV45A' '0101'.
      PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                    'VBAK-SPART'.
      PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                    '/00'.
      PERFORM BDC_FIELD       USING 'VBAK-AUART'
                                    'ZKSO'.  "AUART_001.
      PERFORM BDC_FIELD       USING 'VBAK-VKORG'
                                    RO_HEADER-VKORG.  "VKORG_002.
      PERFORM BDC_FIELD       USING 'VBAK-VTWEG'
                                    RO_HEADER-VTWEG.    "VTWEG_003.
      PERFORM BDC_FIELD       USING 'VBAK-SPART'
                                    RO_HEADER-SPART.    "SPART_004.
    Sales Order Date insertion.......
      PERFORM BDC_DYNPRO      USING 'SAPMV45A' '4001'.
      PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                    '=KKAU'.
      PERFORM BDC_FIELD       USING 'VBAK-VBELN'
                                    SORDER_FINAL.
      PERFORM BDC_FIELD       USING 'KUAGV-KUNNR'
                                    RO_HEADER-SP.
      PERFORM BDC_FIELD       USING 'KUWEV-KUNNR'
                                    RO_HEADER-SH.
      PERFORM BDC_FIELD       USING 'VBKD-BSTKD'
                                    RO_HEADER-REF_PO.
      PERFORM BDC_FIELD       USING 'VBKD-ZTERM'
                                    RO_HEADER-ZTERM.
      WRITE RO_HEADER-SODATE TO RO_HEADER-SODATE.
      PERFORM BDC_DYNPRO      USING 'SAPMV45A' '4002'.
      perform bdc_field       using 'BDC_OKCODE'
                                  '=T\03'.
      PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                    'VBAK-AUDAT'.
      PERFORM BDC_FIELD       USING 'VBAK-AUDAT'
                                    RO_HEADER-SODATE.  "Document Date
      PERFORM BDC_FIELD       USING 'VBKD-PRSDT'
                                    RO_HEADER-SODATE.  "Pricing Date
    Billing Screen    ***********************
      perform bdc_dynpro      using 'SAPMV45A' '4002'.
      PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                    '/EBACK'.
      perform bdc_field       using 'BDC_CURSOR'
                                  'VBKD-FKDAT'.
      PERFORM BDC_FIELD       USING 'VBKD-FKDAT'
                                    RO_HEADER-SODATE.  "Billing date
      PERFORM BDC_DYNPRO      USING 'SAPMV45A' '4001'.
      PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                    '=KKO1'.
      PERFORM BDC_FIELD       USING 'KUAGV-KUNNR'
                                    RO_HEADER-SP.     "KUNNR_006.
      PERFORM BDC_FIELD       USING 'KUWEV-KUNNR'
                                    RO_HEADER-SH.     "KUNNR_007.
      PERFORM BDC_FIELD       USING 'VBKD-BSTKD'
                                    RO_HEADER-REF_PO. "BSTKD_008.
      PERFORM BDC_FIELD       USING 'RV45A-KETDAT'
                                    RO_HEADER-SODATE. "Delivery Date.
      PERFORM BDC_FIELD       USING 'VBKD-ZTERM'
                                    RO_HEADER-ZTERM.     "ZTERM_011.
    ************************Added for test 25-02******************
      PERFORM BDC_FIELD       USING 'RV45A-KETDAT'        " CNGD FROM 'KEDAT' TO 'KETDAT'.
                                    RO_HEADER-SODATE.     "REQ DELVY DATE.
      PERFORM BDC_FIELD       USING 'VBKD-PRSDT'          "CNGD FROM 'RV45A' TO 'VBKD'.
                                    RO_HEADER-SODATE.     "PRICING DATE.
    ************************Added for test 25-02******************
    *Dont DELETE, For Future Use of Inco terms 1 & 2.
    *PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                 'VBKD-INCO2'.
    *PERFORM BDC_FIELD       USING 'VBKD-INCO1'
                                 RO_HEADER-INCO1.  "INCO1_012.
    *PERFORM BDC_FIELD       USING 'VBKD-INCO2'
                                 RO_HEADER-INCO2.  "INCO2_013.
    Header condition types......................................
      PERFORM BDC_DYNPRO      USING 'SAPMV45A' '5002'.
      PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                    '=V69A_KOAN'.
      PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                    'KOMV-KSCHL(05)'.
    IF RO_HEADER-KSCHL1 IS NOT INITIAL.
      PERFORM BDC_DYNPRO      USING  'SAPMV45A' '5002'.
      PERFORM BDC_FIELD       USING  'BDC_OKCODE'
                                     '=V69A_KOAN'.
      PERFORM BDC_FIELD       USING  'BDC_CURSOR'
                                     'KOMV-KSCHL(04)'.
      PERFORM BDC_FIELD       USING  'BDC_CURSOR'
                                     'KOMV-KBETR(02)'.
      PERFORM BDC_FIELD       USING  'KOMV-KSCHL(02)' RO_HEADER-KSCHL1.
      PERFORM BDC_FIELD       USING  'KOMV-KBETR(02)' RO_HEADER-KBETR1.
    ENDIF.
    IF RO_HEADER-KSCHL2 IS NOT INITIAL.
      PERFORM BDC_DYNPRO      USING  'SAPMV45A' '5002'.
      PERFORM BDC_FIELD       USING  'BDC_OKCODE'
                                     '=V69A_KOAN'.
      PERFORM BDC_FIELD       USING  'BDC_CURSOR'
                                     'KOMV-KSCHL(04)'.
      PERFORM BDC_FIELD       USING  'BDC_CURSOR'
                                     'KOMV-KBETR(02)'.
      PERFORM BDC_FIELD       USING  'KOMV-KSCHL(02)' RO_HEADER-KSCHL2.
      PERFORM BDC_FIELD       USING  'KOMV-KBETR(02)' RO_HEADER-KBETR2.
    ENDIF.
    IF RO_HEADER-KSCHL3 IS NOT INITIAL.
      PERFORM BDC_DYNPRO      USING  'SAPMV45A' '5002'.
      PERFORM BDC_FIELD       USING  'BDC_OKCODE'
                                     '=V69A_KOAN'.
      PERFORM BDC_FIELD       USING  'BDC_CURSOR'
                                     'KOMV-KSCHL(04)'.
      PERFORM BDC_FIELD       USING  'BDC_CURSOR'
                                     'KOMV-KBETR(02)'.
      PERFORM BDC_FIELD       USING  'KOMV-KSCHL(02)' RO_HEADER-KSCHL3.
      PERFORM BDC_FIELD       USING  'KOMV-KBETR(02)' RO_HEADER-KBETR3.
    ENDIF.
    *change on 11.04.2006 for adding rounding off condition type.
    IF RO_HEADER-KSCHL4 IS NOT INITIAL.
      PERFORM BDC_DYNPRO      USING  'SAPMV45A' '5002'.
      PERFORM BDC_FIELD       USING  'BDC_OKCODE'
                                     '=V69A_KOAN'.
      PERFORM BDC_FIELD       USING  'BDC_CURSOR'
                                     'KOMV-KSCHL(04)'.
      PERFORM BDC_FIELD       USING  'BDC_CURSOR'
                                     'KOMV-KBETR(02)'.
      PERFORM BDC_FIELD       USING  'KOMV-KSCHL(02)' RO_HEADER-KSCHL4.
      PERFORM BDC_FIELD       USING  'KOMV-KBETR(02)' RO_HEADER-KBETR4.
    ENDIF.
      PERFORM BDC_DYNPRO      USING  'SAPMV45A' '5002'.
      PERFORM BDC_FIELD       USING  'BDC_OKCODE'
                                     '/EBACK'.
    Dont DELETE, For Future Use  of : Sales Person Data.................
    *PERFORM BDC_DYNPRO      USING 'SAPMV45A' '4001'.
    *PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                   '=HEAD'.
    *perform bdc_dynpro      using 'SAPMV45A' '4002'.
    *perform bdc_field       using 'BDC_OKCODE'
                                 '=T\08'.
    *perform bdc_dynpro      using 'SAPMV45A' '4002'.
    *perform bdc_field       using 'BDC_OKCODE'
                                 '=PAAN'.
    *perform bdc_field       using 'BDC_CURSOR'
                                 'GVS_TC_DATA-REC-PARTNER(09)'.
    *perform bdc_field       using 'GV_FILTER'
                                  'PARALL'. "GV_FILTER_024.
    *perform bdc_field       using 'GVS_TC_DATA-REC-PARVW(09)'
                                  'VE'."REC-PARVW_09_025.
    *perform bdc_field       using 'GVS_TC_DATA-REC-PARTNER(09)'
                                  '0'. "REC-PARTNER_09_026.
    *perform bdc_dynpro      using 'SAPMV45A' '4002'.
    *perform bdc_field       using 'BDC_OKCODE'
                                 '/EBACK'.
    *perform bdc_field       using 'BDC_CURSOR'
                                 'GVS_TC_DATA-REC-PARTNER(09)'.
    *perform bdc_field       using 'GV_FILTER'
                                 'PARALL'. "GV_FILTER_027.
      PERFORM BDC_DYNPRO      USING 'SAPMV45A' '4001'.
      PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                    '=POAN'.
      PERFORM BDC_FIELD       USING 'KUAGV-KUNNR'
                                    RO_HEADER-SP.     "KUNNR_006.
      PERFORM BDC_FIELD       USING 'KUWEV-KUNNR'
                                    RO_HEADER-SH.     "KUNNR_007.
      PERFORM BDC_FIELD       USING 'VBKD-BSTKD'
                                    RO_HEADER-REF_PO. "BSTKD_008.
    *FETCHING LINE ITEM DATA.
        LOOP AT RO_ITEM WHERE  SORDER =  RO_HEADER-SORDER.
          PERFORM BDC_DYNPRO   USING   'SAPMV45A'     '4001'.
          PERFORM BDC_FIELD    USING   'BDC_OKCODE'   '=POAN'.
          PERFORM BDC_FIELD    USING    'RV45A-MABNR(02)'  RO_ITEM-MATNR.
          PERFORM BDC_FIELD    USING    'RV45A-KWMENG(02)' RO_ITEM-QTY.
         PERFORM BDC_FIELD    USING    'VBAP-VRKME(02)' RO_ITEM-UOM. " For Future Use
          PERFORM BDC_FIELD    USING    'VBAP-WERKS(02)'  RO_ITEM-PLANT.
          PERFORM BDC_FIELD    USING    'VBAP-LGORT(02)'  RO_ITEM-SLOC.
          PERFORM BDC_FIELD    USING    'VBAP-CHARG(02)'  RO_ITEM-BATCH.
    *FREE DELIVERY CHECK CHANGING OF ITEMCATEGORY : TANN.
    IF RO_ITEM-KBETR1 IS INITIAL AND RO_ITEM-KBETR2 IS INITIAL.
    PERFORM BDC_FIELD       USING 'VBAP-PSTYV(02)'
                                  'ZANN'.
    ELSE.
    PERFORM BDC_DYNPRO      USING 'SAPMV45A' '4001'.
    PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                  '/00'.
    Condition Types For The Items
    PERFORM BDC_DYNPRO      USING 'SAPMV45A' '4001'.
    PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                   '=PKO1'.
    PERFORM BDC_FIELD       USING 'RV45A-VBAP_SELKZ(01)' 'X'.
    PERFORM BDC_DYNPRO      USING 'SAPMV45A' '5003'.
    PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                  '=V69A_KOAN'.
    PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                  'KOMV-KSCHL(02)'.
    Condition Type 1...........
    PERFORM BDC_DYNPRO      USING 'SAPMV45A' '5003'.
    PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                  '/00'.
    PERFORM BDC_FIELD       USING 'KOMV-KSCHL(02)' RO_ITEM-KSCHL1.
    PERFORM BDC_FIELD       USING 'KOMV-KBETR(02)' RO_ITEM-KBETR1.
    Condition Type 2...........
    PERFORM BDC_DYNPRO      USING 'SAPMV45A' '5003'.
    PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                  '=V69A_KOAN'.
    PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                  'KOMV-KSCHL(02)'.
    PERFORM BDC_DYNPRO      USING 'SAPMV45A' '5003'.
    PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                  '/00'.
    PERFORM BDC_FIELD       USING 'KOMV-KSCHL(02)' RO_ITEM-KSCHL2.
    PERFORM BDC_FIELD       USING 'KOMV-KBETR(02)' RO_ITEM-KBETR2.
    Condition Type 3.............
    IF RO_ITEM-KSCHL3 IS NOT INITIAL.
        PERFORM BDC_DYNPRO      USING 'SAPMV45A' '5003'.
        PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                      '=V69A_KOAN'.
        PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                      'KOMV-KSCHL(02)'.
        PERFORM BDC_DYNPRO      USING 'SAPMV45A' '5003'.
        PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                      '/00'.
        PERFORM BDC_FIELD       USING 'KOMV-KSCHL(02)' RO_ITEM-KSCHL3.
        PERFORM BDC_FIELD       USING 'KOMV-KBETR(02)' RO_ITEM-KBETR3.
    ENDIF.
    Condition Type 4..............
    IF RO_ITEM-KSCHL4 IS NOT INITIAL.
        PERFORM BDC_DYNPRO      USING 'SAPMV45A' '5003'.
        PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                      '=V69A_KOAN'.
        PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                      'KOMV-KSCHL(02)'.
        PERFORM BDC_DYNPRO      USING 'SAPMV45A' '5003'.
        PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                      '/00'.
        PERFORM BDC_FIELD       USING 'KOMV-KSCHL(02)' RO_ITEM-KSCHL4.
        PERFORM BDC_FIELD       USING 'KOMV-KBETR(02)' RO_ITEM-KBETR4.
    ENDIF.
    Condition Type 5...............
    IF RO_ITEM-KSCHL5 IS NOT INITIAL.
        PERFORM BDC_DYNPRO      USING 'SAPMV45A' '5003'.
        PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                      '=V69A_KOAN'.
        PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                      'KOMV-KSCHL(02)'.
        PERFORM BDC_DYNPRO      USING 'SAPMV45A' '5003'.
        PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                      '/00'.
        PERFORM BDC_FIELD       USING 'KOMV-KSCHL(02)' RO_ITEM-KSCHL5.
        PERFORM BDC_FIELD       USING 'KOMV-KBETR(02)' RO_ITEM-KBETR5.
    ENDIF.
    Condition Type 6...............
    IF RO_ITEM-KSCHL6 IS NOT INITIAL.
        PERFORM BDC_DYNPRO      USING 'SAPMV45A' '5003'.
        PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                      '=V69A_KOAN'.
        PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                      'KOMV-KSCHL(02)'.
        PERFORM BDC_DYNPRO      USING 'SAPMV45A' '5003'.
        PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                      '/00'.
        PERFORM BDC_FIELD       USING 'KOMV-KSCHL(02)' RO_ITEM-KSCHL6.
        PERFORM BDC_FIELD       USING 'KOMV-KBETR(02)' RO_ITEM-KBETR6.
    ENDIF.
    PERFORM BDC_DYNPRO      USING 'SAPMV45A' '5003'.
    PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                  '/EBACK'.
    ENDIF.
    ENDLOOP.
    Saving The Sales Document
    PERFORM BDC_DYNPRO      USING 'SAPMV45A' '4001'.
    PERFORM BDC_FIELD      USING 'BDC_OKCODE'   '=SICH'.
    PERFORM BDC_TRANSACTION TABLES MESSTAB
    USING                          'VA01'
                                    CTU
                                    MODE
                                    UPDATE.
    perform bdc_dynpro      using 'SAPMV50A' '4004'.
    perform bdc_field       using 'BDC_CURSOR'                              'LIKP-VBELN'.
    perform bdc_field       using 'BDC_OKCODE'                              '/00'.
    *perform bdc_field       using 'LIKP-VBELN'         LIKP-VBELN."         '7012000733'.
    perform bdc_dynpro      using 'SAPMV50A' '1000'.
    perform bdc_field       using 'BDC_OKCODE'                              '=SICH_T'.
    *perform bdc_field       using 'LIKP-BLDAT'       RO_HEADER-SODATE.      '27.06.2006'.
    perform bdc_field       using 'BDC_CURSOR'                              'LIKP-WADAT_IST'.
    perform bdc_field       using 'LIKP-WADAT'   RO_HEADER-SODATE.  "       '26.05.2006'.
    *perform bdc_field       using 'LIKP-WAUHR'                              '00:00:00'.
    perform bdc_field       using 'LIKP-BTGEW'                              '10'.
    perform bdc_field       using 'LIKP-GEWEI'                              'KG'.
    perform bdc_field       using 'LIKP-WADAT_IST' RO_HEADER-SODATE."       '26.05.2006'.
    PERFORM BDC_TRANSACTION TABLES MESSTAB
    USING                          'VL02N'
                                    CTU
                                    MODE
                                    UPDATE.

    Hi,
      From the explanation given, I think if you change the transaction from VL02N to VL01N this should work, because the delivery has not been created yet,
    Regards,

  • Regarding sub totaling in alv

    hi,
    i am making report in alv in which i have to display the sub totals and den full total.
    is it possible to display sub total in ALV acccording to material type wise or itemid wise.
    plzz help me with some example.
    If find useful he or she will definately rewarded.........

    Hi, 
    The following example for sub totall for ALV  report..
    u have to pass do_sum = 'X'. for perticuler fileds.
    if it is use full answer reward me a points..
    *& Report  ZDEL_ALV1
    *Description:        This ALV interactive report is display Delivary
                       status
    REPORT  zdel_alv1 NO STANDARD PAGE HEADING LINE-SIZE 255 LINE-COUNT 60.
    *TABLE DECLARATION
    TABLES : likp,                     "Delivery Header Data
             lips,                     "Delivery item Data
             vbup.                     "sales document item status
    TYPE-POOLS : slis.
    *SRUCTURE DECLARATION
    *THIS TABLE FOR HEADER DETAILS
    TYPES : BEGIN OF t_likp ,
            vbeln LIKE likp-vbeln,     "Delivery number
            kosta like vbup-kosta,
            kunnr LIKE likp-kunnr,     "Customer number
            wadat LIKE likp-wadat,     "Planned goods movement date
            ernam LIKE likp-ernam,     "Name of person
            vkorg LIKE likp-vkorg,     "Sales organization
            lfart LIKE likp-lfart,      "DELIVERY TYPE
            ntgew LIKE likp-ntgew,      "NET WEIGHT
            END OF t_likp.
    *THIS TABLE FOR ITEM DETAILS
    TYPES : BEGIN OF t_lips ,
            vbeln LIKE lips-vbeln,     "Delivery number
            posnr LIKE lips-posnr,     "delivery item
            matnr LIKE lips-matnr,     "Material number
            lfimg LIKE lips-lfimg,     "Actual quantity delivered
            ntgew LIKE lips-ntgew,     "Net weight
            exbwr LIKE lips-exbwr,     "Externally entered posting amount
            arktx LIKE lips-arktx,     "Short text SO Item
            END OF t_lips.
    *THIS IS FOR FINAL OUTPUT
    TYPES : BEGIN OF t_vbup ,
            vbeln LIKE likp-vbeln,     "Delivery number
            kosta LIKE vbup-kosta,     "Picking status/Putaway status
            posnr LIKE vbup-posnr,     "delivery item
            matnr LIKE lips-matnr,     "Material number
            lfimg LIKE lips-lfimg,     "Actual quantity delivered
            ntgew LIKE lips-ntgew,     "Net weight
            exbwr LIKE lips-exbwr,     "Externally entered posting amount
            arktx LIKE lips-arktx,     "SHORT text SO Item
            description(20),           "for display text
            END OF t_vbup.
    *INTERNAL TABLES
    DATA : i_likp TYPE STANDARD TABLE OF t_likp.
    DATA : i_lips TYPE STANDARD TABLE OF t_lips.
    DATA : i_vbup TYPE STANDARD TABLE OF t_vbup.
    DATA : repid LIKE sy-repid.
    DATA : delivar1(10) TYPE c.
    *WORK AREA
    DATA : wa_likp TYPE t_likp.
    DATA : wa_lips TYPE t_lips.
    DATA : wa_vbup TYPE t_vbup.
    DATA:  i_vbup1 LIKE wa_vbup OCCURS 0 WITH  HEADER LINE.
    *SLIS TABLE DECLARATIONS
    DATA: i_fieldcat TYPE slis_t_fieldcat_alv  WITH HEADER LINE,
          i_events TYPE slis_t_event,
          w_events TYPE slis_alv_event,
          i_fieldcat1 TYPE slis_t_fieldcat_alv  WITH HEADER LINE,
          i_layout TYPE slis_layout_alv.
    *SELECTING RANGE OF VALUES
    SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
    SELECT-OPTIONS : s_vbeln  FOR likp-vbeln,
                     s_kunnr  FOR likp-kunnr,
                     s_wadat  FOR likp-wadat.
    SELECTION-SCREEN END OF BLOCK b1 .
    *CHOOSE ONE CHECK BOX FOR DISPLAYING THE DELIVARY STATUS
    SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-002.
    PARAMETERS : cb_kostc AS CHECKBOX,"DEFAULT 'X',
                 cb_kosta AS CHECKBOX,
                 cb_kostb AS CHECKBOX.
    SELECTION-SCREEN END OF BLOCK b2.
    *INTIALIZATION CHECK
    INITIALIZATION.
      repid = sy-repid.
    *START-OF-SELECTION
    START-OF-SELECTION.
      PERFORM get_data.
      PERFORM get_field.
    PERFORM GET_EVENTS.
      PERFORM display.
    *END-OF-SELECTION
    END-OF-SELECTION.
    *&      Form  RUCOMM
          This form getting details from lips table for displaying
           the item details and all select statements for delivary status
         -->R_UCOMM    text
         -->RS_SELFIELDtext
    FORM user_command USING r_ucomm LIKE sy-ucomm  rs_selfield TYPE
                                                   slis_selfield.
      IF rs_selfield-fieldname = 'VBELN'.
        delivar1 = rs_selfield-value.
      ENDIF.
      IF cb_kostc = 'X'.
      SELECT   VBELN KOSTA   FROM   VBUP
      INTO TABLE I_VBUP
      WHERE  VBELN IN DELIVAR
      AND KOSTA = 'C'.
      SELECT VBELN MATNR LFIMG EXBWR INTO TABLE I_LIPS FROM LIPS
                                        WHERE VBELN EQ DELIVAR1.
        REFRESH i_vbup1[].
        CLEAR i_vbup1.
        SELECT avbeln akosta bposnr bmatnr blfimg bntgew b~exbwr
        b~arktx
        INTO TABLE i_vbup
        FROM vbup AS a INNER JOIN lips AS b
        ON avbeln = bvbeln
        WHERE a~vbeln EQ delivar1
           AND kosta = 'C'.
      ELSEIF cb_kosta = 'X'.
      SELECT   VBELN KOSTA   FROM   VBUP
      INTO TABLE I_VBUP
      WHERE  VBELN IN DELIVAR
      AND KOSTA = 'A'.
        SELECT avbeln akosta bposnr bmatnr blfimg bntgew b~exbwr
        b~arktx
        INTO TABLE i_vbup
        FROM vbup AS a INNER JOIN lips AS b
        ON avbeln = bvbeln
        WHERE a~vbeln EQ delivar1
           AND kosta = 'A'.
      ELSEIF cb_kostb = 'X'.
        SELECT   VBELN KOSTA   FROM   VBUP
      INTO TABLE I_VBUP
      WHERE  VBELN IN DELIVAR
      AND KOSTA = 'B'.
        SELECT avbeln akosta bposnr bmatnr blfimg bntgew b~exbwr
        b~arktx
        INTO TABLE i_vbup
        FROM vbup AS a INNER JOIN lips AS b
        ON avbeln = bvbeln
        WHERE a~vbeln EQ delivar1
           AND kosta = 'B'.
      ENDIF.
      CLEAR i_vbup1.
      LOOP AT i_vbup INTO wa_vbup.
        i_vbup1-vbeln = wa_vbup-vbeln.
        i_vbup1-kosta = wa_vbup-kosta.
        IF wa_vbup-kosta = 'C'.
          i_vbup1-description = 'COMPLETELY PROCESSED'.
        ELSEIF wa_vbup-kosta = 'B'.
          i_vbup1-description = 'PARTIALLY PROCESSED'.
        ELSEIF wa_vbup-kosta = 'A'.
          i_vbup1-description = 'NOT YET PROCESSED'.
        ENDIF.
        i_vbup1-posnr = wa_vbup-posnr.
        i_vbup1-matnr = wa_vbup-matnr.
        i_vbup1-lfimg = wa_vbup-lfimg.
        i_vbup1-ntgew = wa_vbup-ntgew.
        i_vbup1-exbwr = wa_vbup-exbwr.
        i_vbup1-arktx = wa_vbup-arktx.
        APPEND i_vbup1 .
      ENDLOOP.
      SORT i_vbup1 BY vbeln matnr lfimg.
      DELETE ADJACENT DUPLICATES FROM i_vbup1 COMPARING vbeln matnr lfimg.
    SELECT VBELN MATNR LFIMG EXBWR INTO TABLE I_LIPS FROM LIPS
                                         WHERE VBELN EQ DELIVAR1.
    *This function module for displaying the item details
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
        EXPORTING
          i_callback_program      = repid
          it_fieldcat             = i_fieldcat1[]
          i_callback_top_of_page  = 'TOP_OF_PAGE'
          i_callback_user_command = 'USER_COMMAND1'
          it_events               = i_events
        TABLES
          t_outtab                = i_vbup1
        EXCEPTIONS
          program_error           = 1
          OTHERS                  = 2.
      IF sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
      CLEAR i_vbup1.
    ENDFORM.                    "RUCOMM
    *&      Form  USER_COMMAND1
          text
         -->R_UCOMM1   text
         -->RS_SELFIELDtext
    FORM user_command1 USING r_ucomm1 LIKE sy-ucomm  rs_selfield1 TYPE
                                                     slis_selfield.
      DATA: deliv(10) TYPE c.
      IF rs_selfield1 = 'VBELN'.
        deliv = rs_selfield1-value.
      ENDIF.
      SET PARAMETER ID 'VL' FIELD delivar1.
      CALL TRANSACTION 'VL03N' AND SKIP FIRST SCREEN.
    ENDFORM.                    "USER_COMMAND1
    *&      Form  GET_DATA
          This form for getting the data from likp table
    -->  p1        text
    <--  p2        text
    FORM get_data .
    SELECT VBELN KUNNR WADAT FROM LIKP INTO TABLE I_LIKP
                                     WHERE VBELN IN S_VBELN
                                     AND KUNNR IN S_KUNNR
                                     AND WADAT IN S_WADAT.
      REFRESH i_likp[].
      CLEAR i_likp.
      IF cb_kostc = 'X' AND cb_kosta = ' ' AND cb_kostb = ''.
        SELECT avbeln akosta bkunnr bwadat bernam bvkorg blfart bntgew
        INTO TABLE i_likp
        FROM vbup AS a INNER JOIN likp AS b
        ON avbeln = bvbeln
        WHERE
              b~kunnr IN s_kunnr
              AND b~vbeln IN s_vbeln
              AND b~wadat IN s_wadat
               AND a~kosta = 'C'.
      ELSEIF cb_kosta = 'X' AND cb_kostb = ' ' AND cb_kostc = ''.
        SELECT avbeln akosta bkunnr bwadat bernam bvkorg blfart bntgew
           INTO TABLE i_likp
           FROM vbup AS a INNER JOIN likp AS b
           ON avbeln = bvbeln
           WHERE
                 b~kunnr IN s_kunnr
                 AND b~vbeln IN s_vbeln
                 AND b~wadat IN s_wadat
                  AND a~kosta = 'A'.
      ELSEIF cb_kostb = 'X' AND cb_kosta = '' AND cb_kostc = ''.
        SELECT avbeln akosta bkunnr bwadat bernam bvkorg blfart bntgew
           INTO TABLE i_likp
           FROM vbup AS a INNER JOIN likp AS b
           ON avbeln = bvbeln
           WHERE
                 b~kunnr IN s_kunnr
                 AND b~vbeln IN s_vbeln
                 AND b~wadat IN s_wadat
                  AND kosta = 'B'.
      ELSEIF cb_kostc = 'X' AND cb_kosta = 'X' AND cb_kostb = 'X'.
        SELECT avbeln akosta bkunnr bwadat bernam bvkorg blfart bntgew
        INTO TABLE i_likp
        FROM vbup AS a INNER JOIN likp AS b
        ON avbeln = bvbeln
        WHERE
              b~kunnr IN s_kunnr
              AND b~vbeln IN s_vbeln
              AND b~wadat IN s_wadat
              AND kosta NE ' '.
      ENDIF.
      DELETE ADJACENT DUPLICATES FROM i_likp.
    ENDFORM.                    " GET_DATA
    *&      Form  GET_FIELD
          This form for defining the every fields from likp & lips tables
    FORM get_field .
    *This fields are retrieving from header table(likp)
      CLEAR i_fieldcat.
      i_fieldcat-fieldname = 'VBELN'.
      i_fieldcat-seltext_m = 'SALES ORDER NO'.
      APPEND i_fieldcat TO i_fieldcat.
      CLEAR i_fieldcat.
      i_fieldcat-fieldname = 'KUNNR'.
      i_fieldcat-seltext_m = 'CUSTOMER NO'.
      APPEND i_fieldcat TO i_fieldcat.
      CLEAR i_fieldcat.
      i_fieldcat-fieldname = 'WADAT'.
      i_fieldcat-seltext_m = 'DATE'.
      APPEND i_fieldcat TO i_fieldcat.
      CLEAR i_fieldcat.
      i_fieldcat-fieldname = 'ERNAM'.
      i_fieldcat-seltext_m = 'NAME OF PERSON'.
      APPEND i_fieldcat TO i_fieldcat.
      CLEAR i_fieldcat.
      i_fieldcat-fieldname = 'VKORG'.
      i_fieldcat-seltext_m = 'SALES ORGANIZATION'.
      APPEND i_fieldcat TO i_fieldcat.
      CLEAR i_fieldcat.
      i_fieldcat-fieldname = 'LFART'.
      i_fieldcat-seltext_m = 'DELIVERY TYPE'.
      APPEND i_fieldcat TO i_fieldcat.
      CLEAR i_fieldcat.
      i_fieldcat-fieldname = 'NTGEW'.
      i_fieldcat-seltext_m = 'NET WEIGHT'.
      i_fieldcat-do_sum = 'X'.
      APPEND i_fieldcat TO i_fieldcat.
      CLEAR i_fieldcat.
    *This fields are retrieving from item table(lips)
      CLEAR i_fieldcat1.
      i_fieldcat1-fieldname = 'VBELN'.
      i_fieldcat1-seltext_m = 'DELIVAR NO'.
      APPEND i_fieldcat1 TO i_fieldcat1.
      CLEAR i_fieldcat1.
      i_fieldcat1-fieldname = 'POSNR'.
      i_fieldcat1-seltext_m = 'DELIVERY ITEM'.
      APPEND i_fieldcat1 TO i_fieldcat1.
      CLEAR i_fieldcat1.
      i_fieldcat1-fieldname = 'MATNR'.
      i_fieldcat1-seltext_m = 'MATERIAL NO'.
      APPEND i_fieldcat1 TO i_fieldcat1.
      CLEAR i_fieldcat1.
      i_fieldcat1-fieldname = 'LFIMG'.
      i_fieldcat1-seltext_m = 'ACTUAL QUANTITY'.
      i_fieldcat1-do_sum    = 'X'.
      APPEND i_fieldcat1 TO i_fieldcat1.
      CLEAR i_fieldcat1.
      i_fieldcat1-fieldname = 'NTGEW'.
      i_fieldcat1-seltext_m = 'NET WEIGHT'.
      i_fieldcat1-do_sum = 'X'.
      APPEND i_fieldcat1 TO i_fieldcat1.
      CLEAR i_fieldcat1.
      i_fieldcat1-fieldname = 'EXBWR'.
      i_fieldcat1-seltext_m = 'AMOUNT'.
      APPEND i_fieldcat1 TO i_fieldcat1.
      CLEAR i_fieldcat1.
      i_fieldcat1-fieldname = 'ARKTX'.
      i_fieldcat1-seltext_m = 'SHORT TEXT FOR so ITEM'.
      APPEND i_fieldcat1 TO i_fieldcat1.
      CLEAR i_fieldcat1.
      i_fieldcat1-fieldname = 'DESCRIPTION'.
      i_fieldcat1-seltext_m = 'PICKING STATUS'.
      APPEND i_fieldcat1 TO i_fieldcat1.
      CLEAR i_fieldcat1.
    ENDFORM.                    " GET_FIELD
    *&      Form  GET_EVENTS
          This form defining the events
    *FORM GET_EVENTS .
    CLEAR W_EVENTS.
    W_EVENTS-NAME = 'USER_COMMAND'.
    W_EVENTS-FORM = 'RUCOMM'.
    APPEND W_EVENTS TO I_EVENTS.
    *ENDFORM.                    " GET_EVENTS
    *&      Form  DISPLAY
         This form is going to display header details from likp table
    FORM display .
    *This function module for displaying the header details
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
        EXPORTING
          i_callback_program      = repid
          i_callback_top_of_page  = 'TOP-OF-PAGE'
          i_callback_user_command = 'USER_COMMAND'
          it_fieldcat             = i_fieldcat[]
          i_save                  = 'X'
          it_events               = i_events
        TABLES
          t_outtab                = i_likp
        EXCEPTIONS
          program_error           = 1
          OTHERS                  = 2.
      IF sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    ENDFORM.                    " DISPLAY
    *&      Form  TOP-OF-PAGE
        This form is going to display top-of-page header text
    FORM top-of-page.
      DATA:  i_list_comments TYPE slis_t_listheader.
      DATA:  w_list_comments TYPE slis_listheader.
      CLEAR: i_list_comments[].
      w_list_comments-typ  = 'H'. "H=Header, S=Selection, A=Action
      w_list_comments-info = 'DELIVERY ORDER DETAILS'.
      APPEND w_list_comments TO i_list_comments.
      w_list_comments-typ  = 'A'. " H = Header, S = Selection, A = Action
      w_list_comments-info = 'Basic list'.
      APPEND w_list_comments TO i_list_comments.
      CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
        EXPORTING
          i_logo             = 'enjoy'
          it_list_commentary = i_list_comments.
    ENDFORM.                    "TOP-OF-PAGE
    *&      Form  TOP_OF_PAGE
           This form is going to display top-of-page item text
    FORM top_of_page.
      DATA:  i_list_comments TYPE slis_t_listheader.
      DATA:  w_list_comments TYPE slis_listheader.
      DATA : i_line LIKE w_list_comments-info.
      CONCATENATE 'DELIVERY ITEM DETAILS :' delivar1 INTO i_line .
    SEPARATED BY SPACE.
      CLEAR: i_list_comments[].
      w_list_comments-typ  = 'H'. "H=Header, S=Selection, A=Action
      w_list_comments-info = i_line.
      APPEND w_list_comments TO i_list_comments.
      w_list_comments-typ  = 'A'. " H = Header, S = Selection, A = Action
      w_list_comments-info = 'Secondary list'.
      APPEND w_list_comments TO i_list_comments.
      CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
        EXPORTING
          i_logo             = 'enjoy'
          it_list_commentary = i_list_comments.
    ENDFORM.                    "TOP_OF_PAGE

  • Run time error in ALV editable

    Hi Gurus
    I am getting a run time error when I edit a field in the ALV report and press enter. The run time error is : GETWA_NOT_ASSIGNED. It says I tried to access an unassigned field symbol. I have not used any field symbols in my field catalog or anywhere. It also says that the location of the termination was : cl_gui_alv_grid .
    I have to get this report working today at anycost. Any help will be very useful

    Yes , I have internal tables , a whole lot of them ...here is the code.
    REPORT ZSCREENREPORT NO STANDARD PAGE HEADING MESSAGE-ID YE.
    TABLES : VBUK ,
             VEPVG ,
             LIKP  ,
             VTTP  ,
             LIPS  ,
             LQUA  ,
             MAKT.
    DATA :  PWERKS TYPE LIPS-WERKS , PLGNUM TYPE LIPS-LGNUM.
    DATA  PTKNUM TYPE VTTP-TKNUM.
    DATA  PVBELN TYPE LIPS-VBELN.
    DATA : t_toolbar   type ui_functions with header line.
    DATA  OKCODE LIKE SY-UCOMM.
    DATA  S_OKCODE LIKE SY-UCOMM.
    DATA  B_VIEWREPORT.
    DATA  B_CLEARALL.
    DATA  B_PRINT.
    DATA  pr_data_changed TYPE REF TO cl_alv_changed_data_protocol.
    *DATA: g_event_receiver TYPE REF TO lcl_event_receiver.
    *TYPES: PR_DATA_CHANGED TYPE xxxxxx.
    *TYPES: LCL_EVENT_RECEIVER TYPE .
    class lcl_event_receiver definition deferred.
    selection-screen begin of block b2 with frame title text-001.
    selection-screen begin of block b1 with frame.
    BLOCK B1 FOR FIRST SET OF SELECT OPTIONS
    ALL ENTRIES ARE NECESSARY IN THIS BLOCK
    SELECT-OPTIONS : S_ORG      FOR  LIKP-VKORG MODIF ID B1,  "Sales Org
                     S_DISCHA   FOR  LIKP-VTWIV MODIF ID B1,  "Dis Cha
                     S_DIV      FOR  LIKP-SPAIV MODIF ID B1,  "Division
                     S_SPOINT   FOR  LIKP-VSTEL MODIF ID B1.  "Shipping
    "point
    selection-screen end of block b1.
    selection-screen begin of block b3 with frame.
    *BLOCK B3 FOR PICKING DATE . THIS FIELD IS OBLIGATORY
    PARAMETERS :     P_DEL    LIKE  VBUK-KOSTK DEFAULT 'A'.
    SELECT-OPTIONS : S_PICDAT     FOR  LIKP-KODAT OBLIGATORY ,
                     S_PGDAT FOR  LIKP-WADAT .
    selection-screen end of block b3.
    selection-screen begin of block b4 with frame.
    BLOCK B4 FOR SHIPMENT NUMBER / DELIVERY NUMBER. ONLY ONE CAN BE
    *ENTERED
    SELECT-OPTIONS:  S_SHNUM  FOR  VTTP-TKNUM MODIF ID B2 ,     " Shipment
                                                                "Number
                     S_DENUM  FOR  LIKP-VBELN MODIF ID B2 .     " Delivery
    " Number
    selection-screen end of block b4.
    PARAMETERS : C_BBINS  AS CHECKBOX .
    selection-screen end of block b2.
    RANGES :         R_ORG      FOR  VEPVG-VKORG ,  "Sales Org
                     R_DISCHA   FOR  VEPVG-VTWEG ,  "Dis Cha
                     R_DIV      FOR  VEPVG-SPART ,  "Division
                     R_SPOINT   FOR  VEPVG-VSTEL ,  "Shipping point
                     R_PICDAT   FOR  LIKP-KODAT  , " Planned Pick Date
                     R_PGDAT   FOR  LIKP-WADAT  ,      " Planned goods issue
                     R_SHNUM  FOR  VTTK-TKNUM  ,     " Shipment Number
                     R_DENUM  FOR  LIKP-VBELN  ,     " Delivery Number
                     R_VBELN FOR   VBUK-VBELN  ,
                     R_MATNR FOR LIPS-MATNR .
    DATA : BEGIN OF ITAB1 OCCURS 0.
    DATA:  MATL  LIKE LIPS-MATNR,
           QUANT LIKE LIPS-LFIMG,
           UOM   LIKE LIPS-VRKME,
           KUNR  LIKE LIKP-KUNNR ,
           WERKS LIKE LIKP-WERKS,
           LGNUM LIKE LIPS-LGNUM,
           LGTYP LIKE LIPS-LGTYP ,
           VBELN LIKE LIPS-VBELN ,
           TKNUM LIKE VTTP-TKNUM.
    DATA : END OF ITAB1.
    DATA : BEGIN OF ITAB2 OCCURS 0.
    DATA :
           MATL  LIKE LIPS-MATNR,
           QUANT TYPE I,
           UOM   LIKE LIPS-VRKME,
           KUNR  LIKE LIKP-KUNNR.
    DATA : END OF ITAB2.
    DATA : BEGIN OF ITAB3 OCCURS 0.
    DATA : MATL  LIKE LIPS-MATNR,
           QUANT LIKE LIPS-LFIMG,
           UOM   LIKE LIPS-VRKME,
           KUNR  LIKE LIKP-KUNNR.
    DATA : END OF ITAB3.
    DATA : BEGIN OF ITAB_VBELN OCCURS 0.
    DATA : IBLN LIKE VBUK-VBELN.
    DATA : END OF ITAB_VBELN.
    DATA : BEGIN OF DEMANDTAB OCCURS 0.
    DATA : D_MATL LIKE LIPS-MATNR,
           D_MQUANT LIKE LIPS-LFIMG,
           D_MUOM LIKE LIPS-VRKME,
           D_QUANT LIKE LIPS-LFIMG,
           D_UOM LIKE LIPS-VRKME,
           D_KUNR LIKE LIKP-KUNNR.
    DATA : END OF DEMANDTAB.
    DATA : VMATNR LIKE LIPS-MATNR,
           VKUNR  LIKE LIKP-KUNNR,
           VQUANT LIKE LIPS-VRKME.
    DATA : BEGIN OF INVTAB OCCURS 0.
    DATA : IMATL   LIKE LIPS-MATNR,
           IBINLOC LIKE LQUA-LGPLA,
           IBATCH  LIKE LQUA-CHARG,
           IWARSTK LIKE LQUA-VERME,
           IUOM LIKE LQUA-MEINS.
    DATA : END OF INVTAB.
    DATA : BEGIN OF ITABX OCCURS 0.
    DATA : XMATL LIKE LIPS-MATNR,
           XMATDESC LIKE MAKT-MAKTX,
           XQUANT TYPE I,
           XUOM LIKE LIPS-VRKME,
           XBALQ TYPE I.
          EXPAND.
    DATA : END OF ITABX.
    DATA : BEGIN OF ITABMASTER OCCURS 0 .
    DATA : MMATL LIKE LIPS-MATNR,
           MKUNR LIKE LIKP-KUNNR,
           M_KQUANT  TYPE I,
           M_KUOM LIKE LIPS-VRKME,
           MBINLOC LIKE LQUA-LGPLA,
           MBATCH LIKE LQUA-CHARG,
           MWATSTK LIKE LQUA-VERME,
           M_IUOM LIKE LQUA-MEINS.
    DATA : END OF ITABMASTER.
    DATA : BEGIN OF ITABDESC OCCURS 0.
    DATA : MATNR LIKE MAKT-MATNR,
           MATDESC LIKE MAKT-MAKTX.
    DATA : END OF ITABDESC.
    TYPES : BEGIN OF ITABT ,
           FMATL LIKE LIPS-MATNR,
           FINDEX LIKE SY-TABIX,
           FKEY LIKE LIPS-MATNR,
           FMATDESC LIKE MAKT-MAKTX,
           FQUANT LIKE LIPS-LFIMG,
           FUOM LIKE ITAB1-UOM,
           FKUNR LIKE LIKP-KUNNR,
           F_KQUANT LIKE LIPS-LFIMG,"TYPE I,
           F_KUOM LIKE LIPS-VRKME,
           F_BALQUANT LIKE LIPS-LFIMG,"TYPE I,
           FBINLOC LIKE LQUA-LGPLA,
           FBATCH LIKE LQUA-CHARG,
           FWATSTK LIKE LQUA-VERME,
           F_IUOM LIKE LQUA-MEINS ,
           SEL_QUANT type LIPS-LFIMG," corr_1,
           END OF ITABT.
    DATA : BEGIN OF FLAGTAB OCCURS 0 .
    DATA : SEL_QUANT TYPE I , FKEY LIKE LIPS-MATNR.
    DATA : END OF FLAGTAB.
    DATA : ITAB type  ITABT occurs 0 with header line  .
    data : itab_w like line of itab .
    DATA t_layout    type lvc_s_layo.
    DATA: ok_code LIKE sy-ucomm .
    DATA:
         go_grid             TYPE REF TO cl_gui_alv_grid,
         go_custom_container TYPE REF TO cl_gui_custom_container.
    DATA : I_SELECTED_ROWS TYPE LVC_T_ROW,
           W_SELECTED_ROWS TYPE LVC_T_ROW,
           I_MODIFIED TYPE STANDARD TABLE OF ITABT,
           W_MODIFIED TYPE ITABT,
           WA TYPE ITABT.
    *field catalogs -
    DATA : WA_FIELDCAT TYPE lvc_t_fcat with header line.
    data : fcat type  lvc_t_fcat WITH HEADER LINE .
    FIELD-SYMBOLS : <FS_FIELDCAT> TYPE LVC_S_FCAT .
    DATA : V_VALID TYPE C.
    clear fcat.
          CLASS LCL_EVENTS_D0100 DEFINITION
    CLASS LCL_EVENT_receiver DEFINITION.
    PUBLIC SECTION.
    METHODS :
        handle_data_changed         for event data_changed
                             of cl_gui_alv_grid
                            IMPORTING er_data_changed.
    ENDCLASS.
    data : my_application type ref to lcl_event_receiver.
          CLASS LCL_EVENTS_D0100 IMPLEMENTATION
    CLASS LCL_EVENT_receiver IMPLEMENTATION.
    METHOD handle_data_changed.
    DATA: ls_good TYPE lvc_s_modi.
    DATA : L_PLANETYPE TYPE LIPS-ANZSN.
    data : swapper type LIPS-ANZSN .
    LOOP AT er_data_changed->mt_good_cells INTO ls_good.
         CASE ls_good-fieldname.
           WHEN 'SEL_QUANT'.
             CALL METHOD pr_data_changed->get_cell_value
                EXPORTING
                  i_row_id = ls_good-row_id
                  i_fieldname = ls_good-fieldname
                IMPORTING
                  e_value = l_planetype.
    *read table itab into itab_w index  ls_good-row_id.
        swapper = itab_w-f_balquant - l_planetype.
         move swapper to itab_w-f_balquant.
         modify itab FROM itab_w .
       ENDCASE.
    ENDLOOP.
    ENDMETHOD.
    ENDCLASS.
    DATA: g_event_receiver TYPE REF TO lcl_event_receiver.
    INITIALIZATION.
      S_PICDAT-SIGN = 'I'.
      S_PICDAT-OPTION = 'BT'.
      S_PGDAT-SIGN = 'I'.
      S_PGDAT-OPTION = 'BT'.
      S_PICDAT-LOW = SY-DATUM.
      S_PICDAT-HIGH = SY-DATUM + 1.
      APPEND S_PICDAT.
      S_PGDAT-LOW  = SY-DATUM.
      S_PGDAT-HIGH = SY-DATUM + 1.
      APPEND S_PGDAT.
    **--VALIDATIONS--
    AT SELECTION-SCREEN .
      IF  S_ORG IS  initial AND  S_DISCHA IS INITIAL AND S_DIV  IS
    INITIAL AND S_SPOINT  IS initial AND S_SHNUM  IS INITIAL AND S_DENUM  IS
       INITIAL .
        MESSAGE E082(YE) WITH 'AT LEAST ONE FIELD MUST BE ENTERED'.
      ENDIF.
      DATA LV_COUNT TYPE I VALUE 0.
      IF NOT S_ORG IS  initial OR NOT S_DISCHA IS INITIAL OR NOT S_DIV  IS
      INITIAL OR  NOT  S_SPOINT  IS initial.
        lv_COUNT = 1.
      ENDIF.
      IF NOT S_SHNUM  IS INITIAL .
        LV_COUNT = LV_COUNT + 1.
      ENDIF.
      IF NOT S_DENUM  IS INITIAL .
        LV_COUNT = LV_COUNT + 1.
      ENDIF.
      IF LV_COUNT > 1.
        MESSAGE E081(YE) WITH 'Please Enter Only in Block1 Or Block3' .
      endif.
      read table s_PICDAT index 1.
      data: days type i.
      days = s_PICDAT-high  - s_PICDAT-low .
      if days > 2.
        message e080(YE) with 'Range can not be > 2 days'.
      endif.
      read table s_PGDAT index 1.
      data: days2 type i.
      days2 = s_PGDAT-high  - s_PGDAT-low .
      if days2 > 2.
        message e080(YE) with 'Range can not be > 2 days'.
      endif.
    VALIDATIONS FOR FIRST BLOCK---------------------------------------
    *IF S_SHNUM IS INITIAL AND S_DENUM IS INITIAL.
    IF S_ORG IS INITIAL OR S_SPOINT IS INITIAL OR S_DISCHA IS INITIAL OR
    *S_DIV IS INITIAL .
    *MESSAGE E083(YE) WITH 'ALL FIELDS IN BLOCK ONE REQUIRED'.
    ENDIF.
    *ENDIF.
    *--START OF SELECTION--
    START-OF-SELECTION .
      IF NOT S_ORG IS  initial OR NOT S_DISCHA IS INITIAL OR NOT S_DIV  IS
      INITIAL OR  NOT  S_SPOINT  IS initial.
        PERFORM INPUTBLOCK1.
        PERFORM TABPRINT1.
      ENDIF.
      IF NOT S_SHNUM  IS INITIAL .
        PERFORM INPUTBLOCK2 .
        PERFORM TABPRINT1.
      ENDIF .
      IF NOT S_DENUM  IS INITIAL .
        PERFORM INPUTBLOCK3 .
        PERFORM TABPRINT1.
      ENDIF .
      CLEAR ITAB2.
    *LOOP AT ITABX.
       R_MATNR-SIGN = 'I'.
       R_MATNR-OPTION = 'EQ'.
       R_MATNR-LOW = ITABX-XMATL.
       APPEND R_MATNR. CLEAR R_MATNR.
    *ENDLOOP.
      PERFORM WARINVENTORY.
      PERFORM WARMASTERUPLD.
      CALL SCREEN 100.
    *=====================================================
    *&      Module  user_command_0100  input
          text
    MODULE USER_COMMAND_0100 INPUT.
    SAVED_OKCODE = OKCODE.
      S_OKCODE = OKCODE.
      CLEAR OKCODE.
      CASE S_OKCODE.
      WHEN 'EXIT' OR 'BACK' OR 'CANC'.
       LEAVE PROGRAM.
      WHEN OTHERS.
      call method go_grid->check_changed_data
       importing
          e_valid = V_VALID .
      PERFORM SAVE_ITAB.
    endcase.
    case sy-ucomm.
      when 'b_clearall'.
      loop at itab.
      itab-sel_quant = 30.
      modify itab.
      endloop.
      CALL TRANSACTION 'YWMINI'.
       ENDCASE.
      call method go_grid->check_changed_data.
       importing
         e_valid = v_valid.
    *LOOP AT ITAB.
    *IF ITAB-SEL_QUANT NE 0.
    *MOVE ITAB-SEL_QUANT TO FLAGTAB-SEL_QUANT.
    *MOVE ITAB-FKEY TO FLAGTAB-FKEY.
    *COLLECT FLAGTAB.
    *ENDIF.
    *ENDLOOP.
    LOOP AT ITAB.
      LOOP AT FLAGTAB WHERE FKEY = ITAB-FKEY.
      ITAB-F_BALQUANT = ITAB-F_BALQUANT - FLAGTAB-SEL_QUANT.
      MODIFY ITAB.
      ENDLOOP.
    *ENDLOOP.
    ENDMODULE.                 " USER_COMMAND_0100  INPUT
    *&      Module  STATUS_0100  OUTPUT
          text
    MODULE STATUS_0100 OUTPUT.
    *SET PF-STATUS 'ZSTAT'.
      set pf-status 'STAT'.
    SET TITLEBAR 'WAVEPICK'.
    *call screen 1010  .
      IF go_custom_container IS INITIAL.
        CREATE OBJECT go_custom_container
          EXPORTING container_name = 'ALV_CONTAINER'.
        CREATE OBJECT go_grid
          EXPORTING
            i_parent = go_custom_container.
    set handler  pr_data_changed=>on_data_changed
    *for all instances.
    call method go_grid->register_edit_event
                   exporting
                      i_event_id = cl_gui_alv_grid=>mc_evt_enter.
      CREATE OBJECT g_event_receiver.
      SET HANDLER g_event_receiver->handle_data_changed FOR go_grid.
      PERFORM xclude_toolbar.
      PERFORM CREATE_FIELDCAT.
      PERFORM load_data_into_grid.
    ENDIF.
    else .
    call method my_application->refresh_table_display.
      endif.
    *call method go_grid->register_edit_event
    *exporting
    *i_event_id = cl_gui_alv_grid=>mc_evt_enter.
    *CALL METHOD GO_GRID->REFRESH_TABLE_DISPLAY
    perform load_data_into_grid.
      CLEAR ITAB1.
      READ TABLE ITAB1 .
      PWERKS = ITAB1-WERKS.
      PLGNUM  = ITAB1-LGNUM.
      PVBELN = ITAB1-VBELN.
      PTKNUM = ITAB1-TKNUM.
    ENDMODULE.                 " STATUS_0100  OUTPUT
          FORM INPUTBLOCK1                                              *
    FORM INPUTBLOCK1.
      SELECT LIPSMATNR  LIPSLFIMG LIPSVRKME LIKPKUNNR LIPS~WERKS
       LIPS~LGNUM
       LIPSLGTYP LIPSVBELN  INTO TABLE ITAB1 FROM
       LIPS JOIN LIKP ON LIPSVBELN = LIKPVBELN JOIN VBUK ON LIKP~VBELN =
      VBUK~VBELN   WHERE
      LIKP~VKORG IN S_ORG AND
      LIKP~VTWIV IN S_DISCHA AND
      LIKP~SPAIV IN S_DIV    AND
      LIKP~VSTEL IN S_SPOINT AND
      LIKP~KODAT IN S_PICDAT AND
      LIKP~WADAT IN S_PGDAT  AND
      LIPS~LGTYP = '001' ."    AND
    *VBUK~KOSTK = 'A' .
    ENDFORM .
          FORM INPUTBLOCK2                                              *
    FORM INPUTBLOCK2.
      SELECT LIPSMATNR LIPSLFIMG LIPSVRKME LIKPKUNNR  INTO
      TABLE ITAB1
    FROM LIPS JOIN LIKP ON LIPSVBELN = LIKPVBELN JOIN VTTP ON LIKP~VBELN =
      VTTPVBELN JOIN VBUK ON LIKPVBELN = VBUK~VBELN  WHERE
      VTTP~TKNUM IN S_SHNUM
       AND
      LIKP~KODAT IN S_PICDAT AND
      LIKP~WADAT IN S_PGDAT AND
      VBUK~KOSTK = 'A'.
    ENDFORM.
          FORM INPUTBLOCK3                                              *
    FORM INPUTBLOCK3 .
      SELECT LIPSMATNR LIPSLFIMG LIPSVRKME LIKPKUNNR  INTO
      TABLE ITAB1
    FROM LIPS JOIN LIKP ON LIPSVBELN = LIKPVBELN JOIN VBUK ON LIKP~VBELN =
       VBUKVBELN WHERE LIKPVBELN IN
      S_DENUM
      AND
      LIKP~KODAT IN S_PICDAT AND
      LIKP~WADAT IN S_PGDAT AND
      VBUK~KOSTK = 'A'.
    ENDFORM.
          FORM TABPRINT1                                                *
    FORM TABPRINT1.
      LOOP AT ITAB1 .
        MOVE: ITAB1-MATL TO ITAB2-MATL,
              ITAB1-UOM  TO ITAB2-UOM,
              ITAB1-KUNR TO ITAB2-KUNR,
              ITAB1-QUANT TO ITAB2-QUANT.
        COLLECT ITAB2.
      ENDLOOP.
      LOOP AT ITAB2.
        MOVE ITAB2-MATL TO ITABX-XMATL.
        MOVE ITAB2-QUANT TO ITABX-XQUANT.
        MOVE ITAB2-UOM TO ITABX-XUOM.
        MOVE ITABX-XQUANT TO ITABX-XBALQ.
        COLLECT ITABX.
      ENDLOOP.
      clear ITABX .
      LOOP AT ITABX.
        R_MATNR-SIGN = 'I'.
        R_MATNR-OPTION = 'EQ'.
        R_MATNR-LOW = ITABX-XMATL.
        APPEND R_MATNR. CLEAR R_MATNR.
      ENDLOOP.
      SELECT  MAKTMATNR MAKTMAKTX INTO TABLE ITABDESC FROM MAKT
      WHERE MAKT~MATNR IN R_MATNR .
      DATA  C_DESC LIKE MAKT-MAKTX.
      C_DESC = '0'.
      LOOP AT ITABDESC   .
        IF ITABDESC-MATNR = C_DESC .
          DELETE ITABDESC.
        ELSE .
          C_DESC = ITABDESC-MATNR.
        ENDIF.
      ENDLOOP.
      LOOP AT ITABDESC.
        LOOP AT ITABX WHERE XMATL = ITABDESC-MATNR.
          ITABX-XMATDESC = ITABDESC-MATDESC.
          MODIFY ITABX.
        ENDLOOP.
      ENDLOOP.
      CLEAR ITABX.
    *ENDSELECT.
    ENDFORM.
          FORM WARINVENTORY                                             *
    FORM WARINVENTORY.
    *Select matnr from LQUA
              into LQUA where
                  matnr in r_matnr.
                  endselect.
    *if not r_matnr-low is initial .
    MESSAGE E080(YE) WITH 'NOT IN RANGE'.
    SELECT LQUAMATNR LQUALGPLA LQUACHARG LQUAVERME LQUA~MEINS INTO TABLE
      INVTAB FROM LQUA WHERE LQUA~MATNR
    IN R_MATNR AND LQUAWERKS = ITAB1-WERKS AND LQUALGNUM = ITAB1-LGNUM AND
       LQUA~LGTYP = '001' AND
       NOT LQUA~LGPLA = '000'.
    ENDFORM .
          FORM WARMASTERUPLD                                            *
    FORM WARMASTERUPLD .
      LOOP AT ITAB2.
        DELETE ITAB2.
        LOOP AT INVTAB WHERE IMATL = ITAB2-MATL.
          MOVE:  ITAB2-MATL TO ITABMASTER-MMATL ,
                 ITAB2-KUNR TO ITABMASTER-MKUNR,
                 ITAB2-QUANT TO ITABMASTER-M_KQUANT,
                 ITAB2-UOM TO ITABMASTER-M_KUOM ,
                 INVTAB-IBINLOC TO ITABMASTER-MBINLOC,
                 INVTAB-IBATCH TO ITABMASTER-MBATCH,
                 INVTAB-IWARSTK TO ITABMASTER-MWATSTK,
                 INVTAB-IUOM TO ITABMASTER-M_IUOM.
          APPEND ITABMASTER.
          DELETE INVTAB.
          CLEAR INVTAB.
          CLEAR ITAB2.
          EXIT.
        ENDLOOP.
      ENDLOOP.
      IF NOT INVTAB[] IS INITIAL.
        LOOP AT INVTAB.
          MOVE:  INVTAB-IMATL TO ITABMASTER-MMATL,
                 INVTAB-IBINLOC TO ITABMASTER-MBINLOC,
                 INVTAB-IBATCH TO ITABMASTER-MBATCH,
                 INVTAB-IWARSTK TO ITABMASTER-MWATSTK,
                 INVTAB-IUOM TO ITABMASTER-M_IUOM.
          ITABMASTER-MKUNR = SPACE.
          ITABMASTER-M_KQUANT = SPACE.
          ITABMASTER-M_KUOM = SPACE.
          APPEND ITABMASTER.
        ENDLOOP.
      ENDIF.
    *-- BEGIN ITAB UPLOAD--
      DATA : MATCHK LIKE ITABX-XMATL VALUE 0.
      LOOP AT ITABX.
    DELETE ITAB2.
        LOOP AT ITABMASTER   WHERE MMATL = ITABX-XMATL.
    IF ITABX-XMATL NE MATCHK .
         IF ITABMASTER-MMATL = ITABX-XMATL.
            MOVE:
                  ITABX-XMATL TO ITAB-FMATL,
                  ITABMASTER-MMATL TO ITAB-FKEY,
                  ITABX-XMATDESC TO ITAB-FMATDESC,
                  ITABX-XQUANT TO ITAB-FQUANT,
                  ITABX-XUOM TO ITAB-FUOM ,
                  ITABX-XBALQ TO ITAB-F_BALQUANT.
            MATCHK = ITABX-XMATL.
          ELSE .
            MOVE ITABMASTER-MMATL TO ITAB-FKEY.
            ITAB-FMATL = SPACE  .
            ITAB-FMATDESC = SPACE.
            ITAB-FQUANT = SPACE .
            ITAB-FUOM = SPACE .
            ITAB-F_BALQUANT = SPACE.
          ENDIF.
          MOVE:
                  ITABMASTER-MKUNR TO ITAB-FKUNR,
                  ITABMASTER-M_KQUANT TO ITAB-F_KQUANT,
                  ITABMASTER-M_KUOM TO ITAB-F_KUOM,
                  ITABMASTER-MBINLOC TO ITAB-FBINLOC,
                  ITABMASTER-MBATCH TO ITAB-FBATCH,
                  ITABMASTER-MWATSTK TO ITAB-FWATSTK,
                  ITABMASTER-M_IUOM TO ITAB-F_IUOM.
          ITAB-FINDEX = SY-TABIX.
          ITAB-SEL_QUANT = 0.
          APPEND ITAB.
          DELETE INVTAB.
          CLEAR INVTAB.
          CLEAR ITABX.
    *EXIT.
        ENDLOOP.
      ENDLOOP.
    *----- END ITAB UPLOAD--
    *TEST----
    *LOOP AT ITABMASTER.
    DELETE ITAB2.
    LOOP AT ITABX  WHERE XMATL = ITABMASTER-MMATL.
    **IF ITABX-XMATL NE MATCHK .
    *MOVE:
          ITABX-XMATL TO ITAB-FMATL,
          ITABX-XMATDESC TO ITAB-FMATDESC,
          ITABX-XQUANT TO ITAB-FQUANT,
          ITABX-XUOM TO ITAB-FUOM ,
          ITABX-XBALQ TO ITAB-F_BALQUANT,
           ITABMASTER-MKUNR TO ITAB-FKUNR,
           ITABMASTER-M_KQUANT TO ITAB-F_KQUANT,
           ITABMASTER-M_KUOM TO ITAB-F_KUOM,
           ITABMASTER-MBINLOC TO ITAB-FBINLOC,
           ITABMASTER-MBATCH TO ITAB-FBATCH,
           ITABMASTER-MWATSTK TO ITAB-FWATSTK,
           ITABMASTER-M_IUOM TO ITAB-F_IUOM.
           APPEND ITAB.
          DELETE INVTAB.
          CLEAR INVTAB.
          CLEAR ITABX.
    **EXIT.
    ENDLOOP.
    *ENDLOOP.
    *SORT ITAB BY FMATL.
    *END TEST----
    ENDFORM.
          FORM load_data_into_grid                                      *
    FORM load_data_into_grid.
      CALL METHOD go_grid->set_table_for_first_display
        EXPORTING
          IS_LAYOUT                     = t_layout
        i_structure_name = 'ITABT'
        IT_TOOLBAR_EXCLUDING    = t_toolbar[]
        CHANGING
        it_outtab        = ITAB[]
        IT_FIELDCATALOG  = fcat[]
    *call method go_grid->refresh_table_display
    *EXPORTING
    *i_event_id = cl_gui_alv_grid=>mc_evt_modified.
    i_structure_name = 'ITABT'
    CHANGING
    IT_OUTTAB = ITAB[]
    ENDFORM.
    form create_fieldcat.
    CLEAR wa_fieldcat.
    WA_FIELDCAT-REPTEXT = 'MATERIAL'.
    WA_FIELDCAT-COLTEXT = 'MATERIAL'.
    wa_fieldcat-fieldname = 'FMATL'.
    wa_fieldcat-col_pos =  1.
    wa_FIELDCAT-ref_table = 'ITAB'.
    wa_fieldcat-outputlen = 8.
    APPEND wa_fieldcat to fcat .
    CLEAR wa_fieldcat.
    WA_FIELDCAT-REPTEXT = 'MATERIAL'.
    WA_FIELDCAT-COLTEXT = 'MATERIAL DESCRIPTION'.
    wa_fieldcat-fieldname = 'FMATDESC'.
    wa_fieldcat-col_pos =  2.
    wa_FIELDCAT-ref_table = 'ITAB'.
    wa_fieldcat-outputlen = 20.
    APPEND wa_fieldcat to fcat .
    CLEAR wa_fieldcat.
    WA_FIELDCAT-COLTEXT = 'QUANTITY'.
    wa_fieldcat-fieldname = 'FQUANT'.
    wa_fieldcat-col_pos =  8.
    wa_FIELDCAT-ref_table = 'ITAB'.
    wa_fieldcat-outputlen = 8.
    WA_FIELDCAT-QUANTITY = 'VRKME'.
    WA_FIELDCAT-QFIELDNAME = 'VRKME'.
    APPEND wa_fieldcat to fcat.
    CLEAR wa_fieldcat.
    wa_fieldcat-fieldname = 'FUOM'.
    wa_fieldcat-col_pos =  4.
    wa_FIELDCAT-ref_table = 'ITAB'.
    WA_FIELDCAT-COLTEXT = 'UOM'.
    wa_fieldcat-outputlen = 4.
    APPEND wa_fieldcat to fcat.
    CLEAR wa_fieldcat.
    wa_fieldcat-fieldname = 'FKUNR'.
    wa_fieldcat-col_pos =  5.
    wa_FIELDCAT-ref_table = 'ITAB'.
    WA_FIELDCAT-COLTEXT = 'CUSTOMER'.
    wa_fieldcat-outputlen = 8.
    APPEND wa_fieldcat to fcat.
    CLEAR wa_fieldcat.
    wa_fieldcat-fieldname = 'F_KQUANT'.
    wa_fieldcat-col_pos =  6.
    wa_FIELDCAT-ref_table = 'ITAB'.
    WA_FIELDCAT-COLTEXT = 'QUANTITY'.
    wa_fieldcat-outputlen = 8.
    WA_FIELDCAT-QUANTITY = 'VRKME'.
    WA_FIELDCAT-QFIELDNAME = 'VRKME'.
    APPEND wa_fieldcat to fcat.
    CLEAR wa_fieldcat.
    wa_fieldcat-fieldname = 'F_KUOM'.
    wa_fieldcat-col_pos =  7.
    wa_FIELDCAT-ref_table = 'ITAB'.
    WA_FIELDCAT-COLTEXT = 'UOM'.
    wa_fieldcat-outputlen = 4.
    APPEND wa_fieldcat to fcat.
    CLEAR wa_fieldcat.
    WA_FIELDCAT-COLTEXT = 'BALANCE QTY TO PICK'.
    wa_fieldcat-fieldname = 'F_BALQUANT'.
    wa_fieldcat-col_pos =  8.
    wa_FIELDCAT-ref_table = 'ITAB'.
    wa_fieldcat-outputlen = 8.
    WA_FIELDCAT-QUANTITY = 'VRKME'.
    WA_FIELDCAT-QFIELDNAME = 'VRKME'.
    APPEND wa_fieldcat to fcat .
    CLEAR wa_fieldcat.
    wa_fieldcat-fieldname = 'FBINLOC'.
    wa_fieldcat-col_pos =  9.
    wa_FIELDCAT-ref_table = 'ITAB'.
    WA_FIELDCAT-COLTEXT = 'BIN LOCATION'.
    wa_fieldcat-outputlen = 8.
    APPEND wa_fieldcat to fcat.
    CLEAR wa_fieldcat.
    wa_fieldcat-fieldname = 'FBATCH'.
    wa_fieldcat-col_pos =  10.
    wa_FIELDCAT-ref_table = 'ITAB'.
    WA_FIELDCAT-COLTEXT = 'BATCH'.
    wa_fieldcat-outputlen = 8.
    APPEND wa_fieldcat to fcat.
    CLEAR wa_fieldcat.
    wa_fieldcat-fieldname = 'FWATSTK'.
    wa_fieldcat-col_pos =  11.
    wa_FIELDCAT-ref_table = 'ITAB'.
    WA_FIELDCAT-COLTEXT = 'WAREHOUSE STK'.
    wa_fieldcat-outputlen = 8.
    APPEND wa_fieldcat to fcat.
    CLEAR wa_fieldcat.
    wa_fieldcat-fieldname = 'F_IUOM'.
    wa_fieldcat-col_pos =  12.
    wa_FIELDCAT-ref_table = 'ITAB'.
    WA_FIELDCAT-COLTEXT = 'UOM'.
    wa_fieldcat-outputlen = 4.
    APPEND wa_fieldcat to fcat.
    CLEAR wa_fieldcat.
    wa_fieldcat-fieldname = 'SEL_QUANT'.
    wa_fieldcat-col_pos =  13.
    wa_FIELDCAT-ref_table = 'ITAB'.
    WA_FIELDCAT-COLTEXT = 'SELECTED QTY'.
    wa_fieldcat-edit    =  'X'.
    wa_fieldcat-outputlen = 8.
    WA_FIELDCAT-QUANTITY = 'VRKME'.
    WA_FIELDCAT-QFIELDNAME = 'VRKME'.
    APPEND wa_fieldcat to fcat.
    *LOOP AT FCAT ASSIGNING <FS_FIELDCAT>.
    *CASE <FS_FIELDCAT>-FIELDNAME.
    *WHEN 'SEL_QUANT'.
    *<FS_FIELDCAT>-EDIT = 'X'.
    *ENDCASE.
    *ENDLOOP.
    *CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
    *EXPORTING
    *I_STRUCTURE_NAME = 'ITABT'
    *CHANGING
    *CT_FIELDCATALOG = FCAT.
    *LOOP AT FCAT ASSIGNING <FS_FIELDCAT>.
    *CASE <FS_FIELDCAT>-FIELDNAME.
    *WHEN 'SEL_QUANT'.
    *<FS_FIELDCAT>-EDIT = 'X'.
    *ENDCASE.
    *ENDLOOP.
    endform.
    form xclude_toolbar .
    t_toolbar = '&DETAIL'.
    append t_toolbar.
    t_toolbar = '&&SEP00'.
    append t_toolbar.
    t_toolbar = '&&SEP01'.
    append t_toolbar.
    t_toolbar = '&&SEP02'.
    append t_toolbar.
    t_toolbar = '&SORT_ASC'.
    append t_toolbar.
    t_toolbar = '&SORT_DSC'.
    append t_toolbar.
    t_toolbar = '&FIND'.
    append t_toolbar.
    t_toolbar = '&MB_FILTER'.
    append t_toolbar.
    t_toolbar = '&&SEP04'.
    append t_toolbar.
    t_toolbar = '&MB_SUM'.
    append t_toolbar.
    t_toolbar = '&MB_SUB_TOTAL'.
    append t_toolbar.
    t_toolbar = '&PRINT_BACK'.
    append t_toolbar.
    t_toolbar = '&MB_VIEW'.
    append t_toolbar.
    t_toolbar = '&MB_EXPORT'.
    append t_toolbar.
    t_toolbar = '&GRAPH'.
    append t_toolbar.
    t_toolbar = '&COLO'.
    append t_toolbar.
    t_toolbar = '&&SEP06'.
    append t_toolbar.
    t_toolbar = '&&SEP07'.
    append t_toolbar.
    t_toolbar = '&INFO'.
    append t_toolbar.
    t_toolbar = '&&SEP03'.
    append t_toolbar.
    endform.
    FORM SAVE_ITAB.
    *CALL METHOD GO_GRID->GET_SELECTED_ROWS
    *IMPORTING
    *ET_INDEX_ROWS = I_SELECTED_ROWS.
    *LOOP AT I_SELECTED_ROWS INTO W_SELECTED_ROWS.
    *READ TABLE ITAB INTO WA INDEX W_SELECTED_ROWS-INDEX.
    *IF SY-SUBRC EQ 0.
    *MOVE-CORRESPONDING WA TO W_MODIFIED.
    *APPEND W_MODIFIED TO I_MODIFIED.
    *ENDIF.
    *ENDLOOP.
    *MODIFY ITAB FROM TABLE I_MODIFIED.
    *ENDFORM.
    ENDFORM.

  • UPDATE of Delivery via shipment

    Hi,
    I want to make an update on the delivery Goods Issue date
    (LIKP-WADAT) when there is a change on the relevant shipment completion date (VTTK-DPABF) of this delivery.
    But I do not want to make a direct update.
    Because of change logs in the delivery !
    I've used a BADI but it creates locks on the deliveries because of the commit work in the badi and my "call transaction" command did not work.
    Which is best way to do it ?
    Please help.
    Best.
    eviento.

    Hi,
    Could someone tell me the parameters I have to pass to change the planned GI on the delivery.
    I am currently passing
    VBKOK_WA-VBELN_VL = 'delivery number'
    VBKOK_WA-vbtyp_vl = 'J'
    VBKOK_WA-KZWAD    = 'X'
    VBKOK_WA-WADAT    = 'NEW Planned GI date'
    COMMIT = 'X'
    and delivery VBKOK_WA-VBELN_VL
    should that be enough to change the date ?

Maybe you are looking for

  • Can't drag and drop into Preview's sidebar

    Most of the time that I try to drag and drop image into Preview's sidebar (OS10.5.2), it doesn't work -- no cursor, no nothin'. Strangely enough, I can open one or more of the very same images using "open" in the menu, but I can't drag them from one

  • Can I use iTunes in iMovie?

    Can I use songs I have purchased at the iTunes Store in my iMovie projects? This would be strictly for home use, not for any commercial purpose. Would I have to do a file conversion?

  • Nexus N7K Sup 1 replacement to SUP2E rollback plan and EPLD upgrad time.

    Dear Expert, My customer has N7K SUP1 with HA as below and I need to replace 2  with SUP2E 6.1.2 from SUP1(6.1.1). As per Cisco document, it is required EPLD upgrade from SUP1 to SUP2E with Fabric-2 module, but there is no guide time for EPLD. Mod  P

  • How to Change POs before to be sent to the supplier

    Hi gurus, My client needs in some cases make some changes manually in the PO (before the PO is sent to the supplier). All PO comes from SC initially, where is the WF. However, there are some functionalities that only the PO has, for instance, schedul

  • Issues with Samsung SSD after Mavericks

    I bought a Samsung SSD 830 in the Summer of 2011 (for my Mid 2010 MacBook Pro), and it's been working fantastically until I upgraded to Mavericks. What's peculiar is that my computer works fine when it's plugged in to my Time Machine external HD via