VBFA field

Hi,
I am having a hard time to identify, how the field stufe in vbfa is used. In the table description is says (Level of the document flow record) but i don't know how it can be used in a "where" condition on the "Select" on the table.
Thanks.

Hi Hegal K Charles
I am asking because I am encoutering an issue regarding on the pulling of data in the Sales Document Flow table, while printing the credit memo,
in the selection I have a:
Subsequent sales and distribution document (vbeln)
Subsequent item of an SD document (posnn)
Document category of preceding SD document (vbtypv_v)
SELECT SINGLE vbelv posnv FROM vbfa INTO (l_vbelv, l_posnv)
    WHERE vbeln = z_vbeln
    AND   posnn = z_posnr
    AND   vbtyp_v = 'G'.
then i have 2 valid entries for those three filters that i have used.
i believe for that it will take the 1st entry rather than the 2nd one, because of the logic of the select single.
but there are instance in the data given by the user that it picks the 2nd entry instead of the 1st.
here is an example doc flow to explain it clearly.
... S&D Quote 56426874
.. S&D Authorization 60686941
. S&D Credit Claim Req 81249761
..... S&D Quote 56212135
.... S&D Authorization 60582594
... S&D Quote 56427016
.. S&D Authorization 60686947
. S&D Credit Claim Req 81249762
in this case it should pick 60686947, but on the credit memo 60582594 is picked from vbfa.
and on the table vbfa where in i follow the data to be inputed. it displays 2 entries
Table vbfa
vbelv                 posnn                      vbeln                    stufe      vbtyp_v
60686947          00002                   537439622               01              G
60582594          00002                   537439622               03              G
and in most of my data, as i observed the field stufe which has a value of 01 is the one that should be pulled. Now, my proposed solution to this is to add the field stufe to the selection to pull the correct vbelv, but i am researching on what are levels of stufe because i wanted it to run smoothly and will not return any issue regarding my fix when it is implemented on the production.
Thank you so much for anwering my questions.
Regards,
xtianALMIGHTY

Similar Messages

  • Link delivery to production order

    Hello,
    Production order is created from planned order (created for a stock transfer order)  in CO40 and then parts are ready to be delivered.  How can i link delivery with production order ?

    Hi
    In table AFKO you have the field VBELN. Well, with this field you can connect SO and delivery by 2 ways:
    - Table VBFA
    - Fields VGBEL and VGPOS in table LIPS.
    Regards
    Eduardo

  • TDMS - time based reduction - receiver system deletion

    Experts,
    I'm doing a time based reduction.  I'm on the step "Start Deletion of Data in Receiver System".  It's been running for over 18hours.
    But I don't see any jobs running in SM66 on the Central/Control or Sender or Reciever systems.
    When I click on the "Task" button, I see it has completed 8,444 of 12,246  sub activites.  There are 3,802 not yet started.
    We're on all the latest levels of DMIS and ECC.
    Any ideas?
    Thanks
    NICK

    Ashley and Niraj,
    Hey, I'm all for tips/tricks so don't worry about messing up my thread.
    I completely shut down the central/control system via stopsap and restarted.  Still it was in "running" status but no jobs were running on sender/rec or central/control.
    So I tried the trouble-shooting but it was un-clear to me what to do.
    I ended up highlighting the phase I reference earlier, then doing "execute" again.  The status changes from the "truck" to a green flag and I started to see jobs run again on the receiver system.  Again they have stopped, but I see another job scheduled to run in a few minutes....It's just weird, I didn't run into this on my last time-based copy.
    I'll post a few things I've learned to increase performance:
    RDISP/MAX_WP_RUNTIME = 0
    At LEAST 25 WP and 25 BCK procs
    rec/client = OFF
    RDISP/BTCTIME = 60
    RUN STATS regularly
    TAKE OUT OF ARCHIVELOG MODE
    Read/Impl these notes:
    Read theseu2026Update these parameters
    o TD05X_FILL_VBUK_1 Note 1058864
    o TD05X_FILL_VBUK_2 Note 1054584
    o TD05X_FILL_BKPF Note 1044518
    o TD05X_FILL_EBAN Note 1054583
    o TD05X_FILL_EQUI Note 1037712
    Set these oracle index on rec system:
    Table: QMIH
      fields: MANDT, BEQUI
    Table: PRPR
      fields: MANDT, EQUNR
    Table: VBFA
      fields: MANDT, VBELN, VBELV, POSNV
    set parameter u2018P_CLUu2019 to u2018Yu2019 in the following
    activities before you start the activities for filling internal header tables:
    TD05X_FILL_BKPF
    TD05X_FILL_CE
    TD05X_FILL_EKKO
    TD05X_FILL_VBUK
    TD05X_FILL_VBUK_1
    TD05X_FILL_VBUK_2
    TD05X_FILL_VSRESB
    TD05X_FILL_WBRK_1
    run TCODE CNVMBTACTPAR, specify the project number to do this
    IMPORTANT TCODEs
    CNV_MBT_TDMS_MY  Main TDMS starting point     
    CNVMBTMON  Process Monitor (must know your project number)
    DTLMON  MWB transfer monitor
    CNVMBTACTPAR  activity parameters
    CNVMBTACTDEF  MBT PCL activity maint
    CNVMBTTWB  TDMS workbench to develop scrambling rules
    CNV_TDMS_HCM_SCRAM  run in SENDER system for scrambling functionality
    Reports
    CNV_MBT_PACKAGE_REORG  to reorganize TDMS projects..aka delete
    CNV_MBT_DTL_FUGR_DELETE  deletes function groups associated with old projects
    Tables
    CNVMBTUSEDMTIDS   lists obsolete MTIDs
    IMPORTANT NOTES
    Note 894307 - TDMS: Tips, tricks, general problems, error tracing
    Note 1405597 - All relevant notes for TDMS Service Pack 12 and above
    Note 1402704 - TDMS Composite Note : Support Package Independent
    Note 890797 - SAP TDMS - required and recommended system settings
    Note 894904 - TDMS: Problems during deletion of data in receiver system
    Note 916763 - TDMS performance "composite SAP note"
    Note 1003051 - TDMS 3.0 corrections - Composite SAP Note
    Note 1159279 - Objects that are transferred with TDMS
    Note 939823 - TDMS: General questionnaire for problem specification
    Note 897100 - TDMS: Generating profiles for TDMS user roles
    Note 1068059 - To obtain the optimal deletion method for tables (receiver)
    Note 970531 - Installation and delta upgrade of DMIS 2006_1
    Note 970532 - Installation of DMIS Content 2006_1
    Note 1231203 - TDMS release strategy (Add-on: DMIS, DMIS_CNT, DMIS_EXT...)
    Note 1244346 - Support Packages for TDMS (add-on DMIS, DMIS_CNT, ...)
    I'm doing this for an ECC system running ecc 6.0 EHP6 by the way.
    Still any help with my issue on the delete would be helpful. but post tips I don't kwnow about
    NICK

  • Condition value need to change at quotation level not in sales order

    Hi,
    As client requirement, Condition value and new condition type can be added at Quotation if Sale Order is created with reference of same Quotation than system should not be allowed for editing or adding new condition type.
    If Sales Order is created without reference than system should be allowed for edit or add condition.
    Please resolve my query.
    Thank You!
    Chakradhara

    Hi Chakradhara,
    you need to define a requirement in VOFM where you check table VBFA field VBELV.
    If system retrieves data when accessing to this table with VBELV equal to your quotation number and VBTYP_N equal to C (sales order) means that sales orders have been created from your quotation. If so, then field sy-subrc should be equal to 4.
    When you add your new condition to your price schema, don´t forget to place the requirement created in column requirement.
    Ask for the help of an abaper for coding the requirement.
    Regards,
    JM

  • Field in vbfa table

    Hi friends,
    I am facing a problem in vbfa table.
    I have  a billing documnet number 1000 in l_value1
    now based  upon this billing document number i need to get the delivery number from vbfa table
    can any one tell which field should i use to retrive delivery number from vbfa table.
    and after the delivery number from vbfa table later i need to get the shipment number for that particular delivery number.
    can any one tell me which field should i use.
    Regards
    Priyanka.

    Hi,
    Use the logic in this way to get the delivery number...
    select vbelv                                                     " Preceding sales and distribution
             posnv                                                     " Preceding item of an SD document
             vbeln                                                      " Subsequent sales and distribution
             posnn                                                        " Subsequent item of an SD document
             vbtyp_n                                                    " Subsequent document document category
        from vbfa
        into table i_vbfa
        for all entries in i_value
        where vbeln = i_value-vbeln and
              vbtyp_v = 'J'. " Deliveryr
    Edited by: Subhankar Garani on Dec 12, 2008 11:42 AM

  • Should we index table vbfa if vbeln and vbelv is already key field.

    Dear All,
    actually I am passing billing document into vbfa and want vbelv  for faster access data from data base into internal table 
    should we index table vbfa if vbeln and vbelv is already key field.
    Regards
    chandrashekar

    no need.

  • I NEED FIELDS FROM VBFA TABLE

    HI ALL,
    I NEED FIELDS FROM VBFA TABLE
    THE FIELDS I WANT IS :
    CUSTOMER-ID
    CUSTOMER NAME
    CONTACT NAME
    PROJECTID
    ORDER NO
    SALES MAN ID
    ORDER PROCESS DATE
    INVOICE DATE
    GROSS AMOUNT
    NET AMOUNT POSTAL CODE.
    THANKS & REGARDS,
    R.VINOD.

    Hi Vinod..
    Try this Code. I made all the modifications in your code .. It will solve ur issues..
    REPORT zsdr_omvsa40.
    TYPE-POOLS
    TYPE-POOLS: slis.
    TABLE DECLARATIONS
    TABLES : vbak, vbkd,
    zzvbak,
    kna1, vbrk, vbrp, knvp .
    INTERNALTABLE DECLARATION *
    DATA: BEGIN OF i_vbak OCCURS 0,
    vbelv LIKE vbfa-vbelv, " Sales Order no
    vbeln like vbfa-vbeln, "Invoice No
    erdat LIKE vbak-erdat, " Date on Which Record Was Created
    kunnr LIKE vbak-kunnr,
    ps_psp_pnr LIKE vbak-ps_psp_pnr, " Work Breakdown Structure Element
    END OF i_vbak.
    *DATA : BEGIN OF i_zzvbak OCCURS 0,
    *vbeln LIKE zzvbak-vbeln,
    *zssidc LIKE zzvbak-zssidc, "Salesman ID
    *END OF i_zzvbak.
    DATA : BEGIN OF i_vbrk OCCURS 0,
    vbeln LIKE vbrk-vbeln,
    fkdat LIKE vbrk-fkdat, "Invoice Date
    END OF i_vbrk.
    DATA : BEGIN OF i_kna1 OCCURS 0,
    kunnr LIKE kna1-kunnr , " Customer Number 1
    name1 LIKE kna1-name1, " Customer Name
    pstlz LIKE kna1-pstlz , " Postal Code
    END OF i_kna1.
    DATA : BEGIN OF i_vbrp OCCURS 0,
    vbeln LIKE vbrp-vbeln,
    aubel LIKE vbrp-aubel,
    netwr LIKE vbrp-netwr , " Net Value in Document Currency
    kzwi1 LIKE vbrp-kzwi1, " Subtotal 1 from pricing procedure for condition
    erdat LIKE vbrp-erdat, "Billing document.
    END OF i_vbrp.
    DATA : BEGIN OF i_knvp OCCURS 0,
    parvw LIKE knvp-parvw , " Partner Function
    kunnr LIKE knvp-kunnr ,
    parnr LIKE knvp-parnr , " Number of contact person
    END OF i_knvp .
    DATA : BEGIN OF i_data OCCURS 0,
    erdat LIKE vbak-erdat, " Date on Which Record Was Created
    vbeln LIKE vbak-vbeln, " Sales Order no
    fkdat LIKE vbrk-fkdat, " Invoice date.
    kunnr LIKE kna1-kunnr , " Customer Number
    ps_psp_pnr LIKE vbak-ps_psp_pnr, " Work Breakdown Structure Element
    name1 LIKE kna1-name1, " Customer Name
    netwr LIKE vbrp-netwr , " Net Value in Document Currency
    kzwi1 LIKE vbrp-kzwi1, " Subtotal 1 from pricing procedure for condition
    parvw LIKE knvp-parvw , " Partner Function
    parnr LIKE knvp-parnr , " Number of contact person
    *zssidc LIKE zzvbak-zssidc, "Salesman ID
    pstlz LIKE kna1-pstlz , " Postal Code
    END OF i_data.
    ALV Declaraton
    DATA: fieldcatalog TYPE slis_t_fieldcat_alv WITH HEADER LINE,
    gd_tab_group TYPE slis_t_sp_group_alv,
    gd_layout TYPE slis_layout_alv,
    it_listheader TYPE slis_t_listheader,
    gd_repid LIKE sy-repid.
    Selection - Screen
    SELECTION-SCREEN : BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
    SELECT-OPTIONS creation FOR vbak-erdat . " Sales Order Date
    SELECT-OPTIONS period FOR vbrk-fkdat . " Invoice Date
    SELECT-OPTIONS order FOR vbak-vbeln . " Sales order no
    SELECT-OPTIONS name FOR kna1-name1 . " Customer Name
    SELECT-OPTIONS contact FOR knvp-parnr . " Contact Name.
    *SELECT-OPTIONS ssid FOR zzvbak-zssidc . " Salesman ID
    SELECT-OPTIONS project FOR vbak-ps_psp_pnr . " Work Breakdown Structure Element
    SELECTION-SCREEN : END OF BLOCK b1.
    START-OF-SELECTION
    START-OF-SELECTION.
      PERFORM data_retrieval.
      PERFORM build_fieldcatalog.
    PERFORM BUILD_LAYOUT.
    PERFORM top_of_page.
      PERFORM fill_listheader USING it_listheader.
      PERFORM display_alv_report.
    END-OF-SELECTION.
    *TOP-OF-PAGE.
    TOP-OF-PAGE.
    END-OF-PAGE.
    *& Form BUILD_FIELDCATALOG
    text
    FORM build_fieldcatalog.
      fieldcatalog-fieldname = 'KUNNR'.
      fieldcatalog-seltext_m = 'Sold to Party'.
      fieldcatalog-col_pos = 0.
      fieldcatalog-outputlen = 10.
      fieldcatalog-emphasize = 'X'.
      APPEND fieldcatalog TO fieldcatalog.
      CLEAR fieldcatalog.
      fieldcatalog-fieldname = 'NAME1'.
      fieldcatalog-seltext_m = 'Hlev Customer'.
      fieldcatalog-col_pos = 1.
      APPEND fieldcatalog TO fieldcatalog.
      CLEAR fieldcatalog.
      fieldcatalog-fieldname = 'PARNR'.
      fieldcatalog-seltext_m = 'Contact name'.
      fieldcatalog-col_pos = 2.
      APPEND fieldcatalog TO fieldcatalog.
      CLEAR fieldcatalog.
      fieldcatalog-fieldname = 'PS_PSP_PNR'.
      fieldcatalog-seltext_m = 'Project ID'.
      fieldcatalog-col_pos = 3.
      fieldcatalog-do_sum = 'X'.
      APPEND fieldcatalog TO fieldcatalog.
      CLEAR fieldcatalog.
      fieldcatalog-fieldname = 'VBELN'.
      fieldcatalog-seltext_m = 'Sales Document Type'.
      fieldcatalog-col_pos = 4.
      APPEND fieldcatalog TO fieldcatalog.
      CLEAR fieldcatalog.
      fieldcatalog-fieldname = 'ZSSIDC'.
      fieldcatalog-seltext_m = 'SSID'.
      fieldcatalog-col_pos = 5.
      APPEND fieldcatalog TO fieldcatalog.
      CLEAR fieldcatalog.
      fieldcatalog-fieldname = 'ERDAT'.
      fieldcatalog-seltext_m = 'so date'.
      fieldcatalog-col_pos = 6.
      APPEND fieldcatalog TO fieldcatalog.
      CLEAR fieldcatalog.
      fieldcatalog-fieldname = 'FKDAT'.
      fieldcatalog-seltext_m = 'inv date'.
      fieldcatalog-col_pos = 7.
      APPEND fieldcatalog TO fieldcatalog.
      CLEAR fieldcatalog.
      fieldcatalog-fieldname = 'KWZI1'.
      fieldcatalog-seltext_m = 'gross amt'.
      fieldcatalog-col_pos = 8.
      APPEND fieldcatalog TO fieldcatalog.
      CLEAR fieldcatalog.
      fieldcatalog-fieldname = 'NETWR'.
      fieldcatalog-seltext_m = 'net amt'.
      fieldcatalog-col_pos = 9.
      APPEND fieldcatalog TO fieldcatalog.
      CLEAR fieldcatalog.
      fieldcatalog-fieldname = 'PSTLZ'.
      fieldcatalog-seltext_m = 'Postal code'.
      fieldcatalog-col_pos = 10.
      APPEND fieldcatalog TO fieldcatalog.
      CLEAR fieldcatalog.
    ENDFORM. "BUILD_FIELDCATALOG
    *& Form DATA_RETRIEVAL
    text
    FORM data_retrieval.
      SELECT VBFAvbelv VBFAvbeln
             VBAKerdat VBAKkunnr VBAK~ps_psp_pnr
             INTO TABLE i_vbak
      FROM VBFA
      INNER JOIN vbak
      ON VBFAVBELV = VBAKVBELN
      WHERE VBAK~erdat IN creation
      AND VBFA~vbelV IN ORDER
      AND VBAK~ps_psp_pnr IN project
      AND VBFA~VBTYP_N = 'M'  "Subsequent doc is Invoice
      AND VBFA~VBTYP_V = 'C'  "Prec doc is Sales order
      IF NOT i_vbak[] IS INITIAL.
    **Change of ORDER in SELECTS HERE
        SELECT vbeln fkdat FROM vbrk INTO TABLE i_vbrk
        FOR ALL ENTRIES IN i_vbak
        WHERE vbeln = i_vbak-vbeln
        AND fkdat IN period.
        IF NOT i_vbrk[] IS INITIAL.
          SELECT vbeln aubel netwr kzwi1 FROM vbrp INTO TABLE i_vbrp
          FOR ALL ENTRIES IN i_vbrk
          WHERE VBELN = i_vbrk-vbeln.
        endif.
        SELECT kunnr name1  pstlz  FROM kna1 INTO TABLE i_kna1 FOR ALL ENTRIES IN i_vbak
        WHERE kunnr = i_vbak-kunnr
        AND name1 IN name.
    *SELECT vbeln zssidc FROM zzvbak INTO TABLE i_zzvbak FOR ALL ENTRIES IN i_vbak
    *WHERE vbeln = i_vbak-vbeln
    *AND zssidc IN ssid .
    select netwr kzwi1 erdat from vbrp into table i_vbrp for all entries in i_vbak
    where erdat = i_vbak-erdat.
        SELECT kunnr parnr parvw FROM knvp INTO CORRESPONDING FIELDS OF TABLE i_knvp FOR ALL ENTRIES IN i_vbak
        WHERE kunnr = i_vbak-kunnr
        AND parvw = 'AP'
        AND parnr IN contact.
      ENDIF .
      SORT I_VBAK BY VBELN .
      SORT I_VBRK BY VBELN .
      LOOP AT i_vbrp.  "Invoice Item data
        MOVE i_vbrp-netwr TO i_data-netwr .
        MOVE i_vbrp-kzwi1 TO i_data-kzwi1.
        READ table I_VBAK WITH KEY VBELN = I_VBRP-VBELN BINARY SEARCH.  "Sales Order info
        IF SY-SUBRC = 0.
          MOVE I_VBAK-VBELV TO I_DATA-VBELN.   "Sales Order no
          MOVE I_VBAK-erdat TO I_DATA-erdat.   " Date on Which Record Was Created
          MOVE I_VBAK-kunnr TO I_DATA-KUNNR.    "Customer No
          MOVE I_VBAK-ps_psp_pnr TO I_DATA-ps_psp_pnr. " Work Breakdown Structure Element
        endif.
        READ TABLE I_VBRK WITH KEY VBELN = I_VBRP-VBELN BINARY SEARCH.   "Invoice header info
        IF SY-SUBRC = 0.
          MOVE i_vbrk-fkdat TO i_data-fkdat.
        endif.
        READ TABLE I_KNA1 WITH KEY KUNNR = I_VBAK-KUNNR BINARY SEARCH.   "Customer info
        IF SY-SUBRC = 0.
          MOVE i_kna1-kunnr TO i_data-kunnr.
          MOVE i_kna1-name1 TO i_data-name1.
          MOVE i_kna1-pstlz TO i_data-pstlz .
        endif.
        READ TABLE I_KNvp WITH KEY KUNNR = I_VBAK-KUNNR BINARY SEARCH.   "Partner info
        IF SY-SUBRC = 0.
          MOVE i_knvp-parnr TO i_data-parnr.
        endif.
        APPEND i_data.
      ENDLOOP.
    ENDFORM. "DATA_RETRIEVAL
    *& Form DISPLAY_ALV_REPORT
    text
    FORM display_alv_report.
    GD_REPID = SY-REPID.
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
      EXPORTING
    I_INTERFACE_CHECK = ' '
    I_BYPASSING_BUFFER = ' '
    I_BUFFER_ACTIVE = ' '
      i_callback_program = sy-repid
    I_CALLBACK_PF_STATUS_SET = ' '
    I_CALLBACK_USER_COMMAND = ' '
      i_callback_top_of_page = 'TOP_OF_PAGE'
    I_CALLBACK_HTML_TOP_OF_PAGE = ' '
    I_CALLBACK_HTML_END_OF_LIST = ' '
    I_STRUCTURE_NAME =
    I_BACKGROUND_ID = ' '
    I_GRID_TITLE =
    I_GRID_SETTINGS =
    IS_LAYOUT =
      it_fieldcat = fieldcatalog[]
    IT_EXCLUDING =
    IT_SPECIAL_GROUPS =
    IT_SORT =
    IT_FILTER =
    IS_SEL_HIDE =
    I_DEFAULT = 'X'
    I_SAVE = ' '
    IS_VARIANT =
    IT_EVENTS =
    IT_EVENT_EXIT =
    IS_PRINT =
    IS_REPREP_ID =
    I_SCREEN_START_COLUMN = 0
    I_SCREEN_START_LINE = 0
    I_SCREEN_END_COLUMN = 0
    I_SCREEN_END_LINE = 0
    I_HTML_HEIGHT_TOP = 0
    I_HTML_HEIGHT_END = 0
    IT_ALV_GRAPHICS =
    IT_HYPERLINK =
    IT_ADD_FIELDCAT =
    IT_EXCEPT_QINFO =
    IR_SALV_FULLSCREEN_ADAPTER =
    IMPORTING
    E_EXIT_CAUSED_BY_CALLER =
    ES_EXIT_CAUSED_BY_USER =
      TABLES
      t_outtab = i_data.
    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_ALV_REPORT
    FORM FOR FILLING LISTHEADER *
    FORM fill_listheader USING it_listheader TYPE slis_t_listheader.
      DATA : wa_listheader TYPE slis_listheader.
      wa_listheader-typ = 'H'.
      wa_listheader-info = 'Noel Gifts International Limited '.
      APPEND wa_listheader TO it_listheader.
      wa_listheader-typ = 'S'.
      wa_listheader-info = 'CUSTOMER CREDIT EXCEPTION REPORT' .
      APPEND wa_listheader TO it_listheader.
      CLEAR wa_listheader.
    ENDFORM. "fill_listheader
    *& Form top_of_page
    text
    FORM top_of_page.
      CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
        EXPORTING
          it_list_commentary = it_listheader.
    ENDFORM. "top_of_page
    REWARD IF HELPFUL.

  • Question for VBFA-STUFE (Level) field

    Hi Everyone,
    Good Day!
    I would just like to know if my assumption for document flow in SAP is correct. In VBFA table in SAP, there is a field STUFE (level) that sometimes has a value of 1 and sometimes has a value of 3. I am assuming that the value 1 = active document; and 3 = reference document. Please confirm if this assumption is correct. I have an issue with the invoice print out where the incorrect reference document was pulled. I would like to add a condition for the SELECT statement for VBFA to add STUFE = '1' so the correct document will be pulled for the invoice. I can't find a related page in the web for this information so please help.
    Thanks and Best Regards,

    Hi David,
    The VBFA-STUFE field is basically the Relative-Distance between the two documents created with direct/in-direct reference to each other.
    Example:
    In Delivery-related billing process, for the below sales cycle:
    Order - Delivery - Invoice
    The STUFE entry with Order (preceding doc) - Delivery (subsequent doc) will be 00 - meaning the delivery was created with immediate reference to the order
    The STUFE entry with Order (preceding doc) - Invoice (subsequent doc) will be 01 - meaning there is a step reference to the creation of invoice with delivery being the reference, not order
    In Order-related billing process, for the same sales cycle:
    The STUFE entry with Order - Invoice combination will be 00 - since the invoice was created with direct reference to order (not via delivery)
    When you create an order with reference to another, a level gets added to the whole document flow i.e. the above three scenarios take STUFE values 01, 02 and 01 respectively.
    Regards,
    Rajendra

  • Adding Field to the output of the Report

    Hello experts
    I have a program like following, I would like to add a field (Customer purchase order from order header)vbkd-bstkd to the output, I tried to add some code(check the highlightened portion) but it doesnt work(no values) can anyone help in correcting the code so that i can execute directly,
    Iam not full time ABAPer so could you please highlight the code you corrected(added),
    Thanks
    SP
    Global structure of list
    TYPE-POOLS: slis.
    TABLES: likp,
            lips,
            vbfa,
            kssk,
            klah,
            ausp,
            cabn,
            vbak,
            mara,
            vbrk,
            ser01,
            vbpa,
            vbrp,
            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_ist,
                 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,
                 fkimg LIKE vbrp-fkimg,
                 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),
                 invvalue LIKE vbrp-netwr,
                 posnn LIKE vbfa-posnn,
                 bstkd LIKE vbkd-bstkd,
             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_ist,
                    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.
    DATA: gt_vbkd TYPE TABLE OF vbkd WITH HEADER LINE.
    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     = 'BSTKD'.
      ls_fieldcat-seltext_s     = 'PO Number'.
      ls_fieldcat-seltext_m     = 'PO Number'.
      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_IST'.
      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     = 'INVVALUE'.
      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~wadat IN s_wadat
                     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 posnn rfwrt INTO
        (rt_outtab-vbelv,  rt_outtab-posnn, rt_outtab-netwr)
        FROM vbfa  WHERE vbelv EQ rt_outtab-vbeln
                                  AND   posnv EQ rt_outtab-posnr
                                  AND   vbtyp_n EQ 'M'.
        CLEAR : rt_outtab-invvalue.
        SELECT SINGLE * FROM vbrp WHERE vbeln = rt_outtab-vbelv
          AND posnr = rt_outtab-posnn.
        rt_outtab-fkimg = vbrp-fkimg.
        IF rt_outtab-fkimg NE 0.
          rt_outtab-invvalue = rt_outtab-netwr / rt_outtab-fkimg.
        ENDIF.
        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 rt_outtab[] IS INITIAL.
       SELECT vbeln posnr bstkd INTO CORRESPONDING FIELDS OF TABLE gt_vbkd
       FROM vbkd
         FOR ALL ENTRIES IN rt_outtab
         WHERE vbeln = rt_outtab-vgbel
         AND posnr = rt_outtab-vgpos.
       IF NOT gt_vbkd[] IS INITIAL.
         SORT gt_vbkd BY vbeln posnr.
         LOOP AT rt_outtab.
           READ TABLE gt_vbkd WITH KEY vbeln = rt_outtab-vgbel
           posnr = rt_outtab-vgpos
           BINARY SEARCH.
           IF sy-subrc = 0.
             rt_outtab-bstkd = gt_vbkd-bstkd.
             MODIFY rt_outtab.
           ENDIF.
         ENDLOOP.
       ENDIF.
    ENDIF.
    *select bstkd INTO CORRESPONDING FIELDS OF TABLE gt_vbkd
       from vbkd   where vbeln = gt_outtab-vbeln
                  and posnr = '000000'.
                 rt_outtab-bstkd = vbkd-bstkd .
       <i><b> select single bstkd into gt_vbkd
        from vbkd  where vbeln = rt_outtab-vbeln
                   and posnr = '000000'.
                   rt_outtab-bstkd = gt_vbkd-bstkd.
                  APPEND rt_outtab .</b></i>
      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.
        CLEAR: rt_outtab-name1, rt_outtab-sernr, rt_outtab-lfimg,
         rt_outtab-sernp, rt_outtab-kttxt.
    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.
              CLEAR: rt_outtab-sernr, rt_outtab-sernp.
              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.

    naren this is the program
    Global structure of list
    TYPE-POOLS: slis.
    TABLES: likp,
            lips,
            vbfa,
            kssk,
            klah,
            ausp,
            cabn,
            vbak,
            mara,
            vbrk,
            ser01,
            vbpa,
            vbrp,
            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_ist,
                 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,
                 fkimg LIKE vbrp-fkimg,
                 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),
                 invvalue LIKE vbrp-netwr,
                 posnn LIKE vbfa-posnn,
                 bstkd LIKE vbkd-bstkd,
             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_ist,
                    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.
    DATA: gt_vbkd TYPE TABLE OF vbkd WITH HEADER LINE.
    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     = 'BSTKD'.
      ls_fieldcat-seltext_s     = 'PO Number'.
      ls_fieldcat-seltext_m     = 'PO Number'.
      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_IST'.
      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     = 'INVVALUE'.
      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~wadat IN s_wadat
                     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 posnn rfwrt INTO
        (rt_outtab-vbelv,  rt_outtab-posnn, rt_outtab-netwr)
        FROM vbfa  WHERE vbelv EQ rt_outtab-vbeln
                                  AND   posnv EQ rt_outtab-posnr
                                  AND   vbtyp_n EQ 'M'.
        CLEAR : rt_outtab-invvalue.
        SELECT SINGLE * FROM vbrp WHERE vbeln = rt_outtab-vbelv
          AND posnr = rt_outtab-posnn.
        rt_outtab-fkimg = vbrp-fkimg.
        IF rt_outtab-fkimg NE 0.
          rt_outtab-invvalue = rt_outtab-netwr / rt_outtab-fkimg.
        ENDIF.
        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 rt_outtab[] IS INITIAL.
       SELECT vbeln posnr bstkd INTO CORRESPONDING FIELDS OF TABLE gt_vbkd
       FROM vbkd
         FOR ALL ENTRIES IN rt_outtab
         WHERE vbeln = rt_outtab-vgbel
         AND posnr = rt_outtab-vgpos.
       IF NOT gt_vbkd[] IS INITIAL.
         SORT gt_vbkd BY vbeln posnr.
         LOOP AT rt_outtab.
           READ TABLE gt_vbkd WITH KEY vbeln = rt_outtab-vgbel
           posnr = rt_outtab-vgpos
           BINARY SEARCH.
           IF sy-subrc = 0.
             rt_outtab-bstkd = gt_vbkd-bstkd.
             MODIFY rt_outtab.
           ENDIF.
         ENDLOOP.
       ENDIF.
    ENDIF.
    *select bstkd INTO CORRESPONDING FIELDS OF TABLE gt_vbkd
       from vbkd   where vbeln = gt_outtab-vbeln
                  and posnr = '000000'.
                 rt_outtab-bstkd = vbkd-bstkd .
      SELECT single bstkd INTO CORRESPONDING FIELDS OF gt_vbkd
      FROM vbkd WHERE vbeln = gt_vbkd-vbeln
      AND posnr = '000000'.
      rt_outtab-bstkd = gt_vbkd-bstkd.
      APPEND rt_outtab.
      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.
        CLEAR: rt_outtab-name1, rt_outtab-sernr, rt_outtab-lfimg,
         rt_outtab-sernp, rt_outtab-kttxt.
    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.
              CLEAR: rt_outtab-sernr, rt_outtab-sernp.
              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.

  • Need help to modify a report written using Field-Groups Concept. - Part1

    Hello ABAP Experts,
    I need your help to modify the following report with following requirement as I have least knowledge
    about the field-group concept. Thats is the reason, I am pasting the whole code. As it is part of our
    production requirement. I really appreciate your help, If its sent modifying the code required.
    Modification required in the report.
    To allow the sales representatives to see billed shipments and open orders for the current month.
    1) Selection Screen Changes:
    u2022     Add selection by Sales group and Customer group
    u2022     Add sort by:     3. Ship-to / Material
    u2022     Add another selection box
    [ ] Open Orders and Shipments with the current month
    2)      For the new selection box, subtotal sales quantity and delivery quantity.
         If delivered, make the sales quantity zero in the subtotal
    Current report displays, in Selection Screen
    Sales org:
    Person Name:
    Material:
    Plant:
    Sales Office:
    Ship to Name:
    Ship to Number:
    Sorts Report by : 1. Person Name 2. Material
    Check Boxes : 1. Open Orders 2. Delayed Orders.
    report  zorder  LINE-SIZE 170
                      LINE-COUNT 58
                      MESSAGE-ID zv
                      NO STANDARD PAGE HEADING.
    TABLES:
    cdhdr,                                 "Change Doc Header
    cdpos,                                 "Change Doc Item
    kna1,                                  "Customer master
    likp,                                  "Delivery Header
    lips,                                  "Delivery Item
    *lips,                                 "Delivery Item
    zvbpa_lfa1,                            "Vendor Master
    makt,                                  "Material Desc
    t001w,                                 "Plant
    tvkbt,                                 "Sales Office
    tvko,                                  "Sales Organizations
    vbak,                                  "Sales Header
    vbap,                                  "Sales Item
    zvvbak,                                "Sales Hdr - Time calc
    vbup,                                  "Item status
    vbep,                                  "Sales Schedule Line
    vbfa,                                  "Flow documents
    vbpa,                                  "Partners
    vbrk,                                  "Billing Header
    vbrp.                                  "Billing Item
    SELECT-OPTIONS:
      s_vkorg FOR vbak-vkorg OBLIGATORY,
      s_ernam FOR vbak-ernam,
      s_matnr FOR vbap-matnr,
      s_werks FOR vbap-werks,
      s_vkbur FOR vbak-vkbur,
      s_name1 FOR kna1-name1,
      s_kunnr FOR kna1-kunnr.
    SELECTION-SCREEN ULINE.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 1(49) text-c20.
    PARAMETERS: p_sort TYPE n DEFAULT '1'.
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 19(40) text-022.
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 19(40) text-023.
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 19(40) text-024.
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN COMMENT 19(40) text-070.
    SELECTION-SCREEN ULINE.
    SELECTION-SCREEN BEGIN OF BLOCK b20 WITH FRAME.
    SELECTION-SCREEN BEGIN OF LINE.
    PARAMETERS:p_open AS CHECKBOX DEFAULT 'X'.
    SELECTION-SCREEN COMMENT 5(48) text-072.
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN BEGIN OF LINE.
    PARAMETERS:p_delay AS CHECKBOX DEFAULT 'X'.
    SELECTION-SCREEN COMMENT 5(48) text-073.
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN END OF BLOCK b20.
    DATA:
    vbeln(11),                             "Document number
    cancel_dt TYPE d,                      "Cancellation Date
    BEGIN OF tabkey,                       "Tabkey
    mandant LIKE sy-mandt,
    vbeln LIKE vbap-vbeln,
    posnr LIKE vbap-posnr,
    END OF tabkey,
    name1_sp1 LIKE lfa1-name1,             "Sales Carrier Name
    name1_sp2 LIKE lfa1-name1,             "Delivery Carrier Name
    datum-1 TYPE d,                        "Current Dt Less 1
    datum-14 TYPE d,                       "Current Dt Less 14
    datum-90 TYPE d,                       "Current Dt Less 90
    rpt_hdr1(170),                         "Report Header 1
    rpt_hdr2(170),                         "Report Header 2
    rpt_hdr3(170),                         "Report Header 3
    cb_hdr1(170),                          "Control Break Header 1
    line_pos1 TYPE i,                      "Line Print Position HDR1
    line_pos2 TYPE i,                      "Line Print Position HDR2
    line_pos3 TYPE i,                      "Line Print Position DET2
    status,                                "Order Status
    open,                                  "Open Order
    delayed VALUE 'D',                     "Delayed Order
    v_comp(30).                            "Company Text Field
    DATA: v_flagh2.  " Flag for header 2 & 3
    DATA: ls_comwa LIKE vbco6. "Structure for flow information
    DATA: t_vbfa_tab TYPE STANDARD TABLE OF vbfa WITH HEADER LINE."Itab
    for flow information
    data: g_trans_id type vttk-tdlnr. "get transport id from flow
      information
      data  v_sales_org_cpimex type vkorg value  '3300'.
      FIELD-GROUPS:
      header,
      order.
      INSERT
      status                                 "Status
      vbak-vkbur                             "Sales Office
      vbak-ernam                             "Created By
      kna1-kunnr                             "Customer
      kna1-name1                             "Customer Name
      vbap-matnr                             "Material
      vbap-werks                             "Plant
      vbep-lddat                             "Load Dt
      vbap-vbeln                             "Sales Document
      INTO header.
      INSERT
      kna1-ort01                             "City
      kna1-regio                             "Region
      likp-traid                             "Transport ID
      lips-vbeln                             "Delivery Document
      lips-ntgew                             "Net Wt
      lips-gewei                             "Unit of Weight
      vbap-kwmeng                            "Order Qty
      vbap-vrkme                             "Sales Unit
      vbak-bstnk                             "Customer PO
      vbak-erdat                             "Sales Create Dt
      vbak-ihrez                             "PO Release
      vbak-vdatu                            "Req Delivery Dt
      vbak-vzeit                            "Req Delivery Time
      vbfa-vbeln                             "Goods issue doc
      vbrk-vbeln                             "Billing Document
      name1_sp1                              "Sales Carrier
      name1_sp2                              "Delivery Carrier
      INTO order.
    INITIALIZATION.
    AT SELECTION-SCREEN.
      IF NOT p_sort BETWEEN 1 AND 2.
        MESSAGE e022 WITH p_sort.
      ENDIF.
    * Report 1 or more of cancelled, delayed or open
      IF p_open IS INITIAL AND
         p_delay IS INITIAL.
        MESSAGE e023.
      ENDIF.
    START-OF-SELECTION.
    * Load Company Name
      WRITE 'XYZ INC'(000) TO v_comp.
    * Calculate Date Range
      datum-1 = sy-datum - 1.
      datum-14 = sy-datum - 14.
      datum-90 = sy-datum - 90.
    * Compose Parameter Header
      PERFORM parm_hdr.
    ** Compose Report Header
      v_flagh2 = 1.
      PERFORM data_selection.
    END-OF-SELECTION.
    * Determine Sort
      CASE p_sort.
        WHEN 1.
          SORT BY status vbak-ernam kna1-name1 kna1-kunnr
                  vbep-lddat vbap-vbeln.
        WHEN 2.
          SORT BY status vbap-matnr vbap-werks vbep-lddat
                  vbap-vbeln.
      ENDCASE.
      LOOP.
        AT NEW status.
          CASE status.
            WHEN delayed.
              WRITE 'Delayed Orders'(061) TO rpt_hdr1.
            WHEN OTHERS.
              WRITE 'Open Orders'(062) TO rpt_hdr1.
          ENDCASE.
          NEW-PAGE.
        ENDAT.
        AT NEW vbak-ernam.
          IF p_sort = 1.
            CLEAR cb_hdr1.
            WRITE 'CAA:'(064) TO cb_hdr1.
            WRITE vbak-ernam TO cb_hdr1+5.
            NEW-PAGE.
          ENDIF.
        ENDAT.
        AT NEW vbap-matnr.
          IF p_sort = 2.
            CLEAR makt.
            SELECT SINGLE * FROM makt
                WHERE spras = sy-langu AND
                      matnr = vbap-matnr.
            CLEAR cb_hdr1.
            WRITE 'Material:'(042) TO cb_hdr1.
            WRITE vbap-matnr TO cb_hdr1+10.
            WRITE makt-maktx TO cb_hdr1+21.
            NEW-PAGE.
          ENDIF.
        ENDAT.
        AT NEW vbap-werks.
          AT order.
            RESERVE 3 LINES.
            SKIP 1.
            NEW-LINE.
    * Indicate new open item
            WRITE vbap-vbeln TO vbeln.
    * Find Transport ID
    * Fill the structure LS_COMWA
            ls_comwa-mandt = sy-mandt.
            ls_comwa-vbeln = vbap-vbeln.
            CALL FUNCTION 'RV_ORDER_FLOW_INFORMATION'
              EXPORTING
                comwa    = ls_comwa
              TABLES
                vbfa_tab = t_vbfa_tab.
            IF sy-subrc EQ 0.
              READ TABLE t_vbfa_tab WITH KEY vbtyp_n = '8'.
              IF sy-subrc EQ 0.
                SELECT SINGLE tdlnr INTO g_trans_id
                  FROM vttk WHERE tknum = t_vbfa_tab-vbeln.
                CONDENSE g_trans_id.
              ENDIF.
            ENDIF.
            IF vbak-erdat >= datum-1.
              vbeln+10 = 'N'.
            ENDIF.
            CASE p_sort.
              WHEN 1.
                WRITE 1 vbak-vkbur.
                WRITE 8 kna1-name1.
                WRITE 44 vbeln.
                WRITE 56 vbap-matnr.
                WRITE:
                    75 vbap-kwmeng LEFT-JUSTIFIED,
                     vbap-vrkme,
                    100 vbak-bstnk,
                     vbak-ihrez,
                    134 vbak-vdatu,
                        vbak-vzeit,
                    154 vbep-lddat.
                WRITE 166 vbap-werks.
                NEW-LINE.
                WRITE:
                  5  kna1-ort01,
                  41 kna1-regio.
                IF name1_sp2 IS INITIAL.
                  WRITE:
                    45 name1_sp1,
                ELSE.
                  WRITE 45 name1_sp2.
                  IF name1_sp1 = name1_sp2.
                    WRITE ' '.
                  ELSE.
                    WRITE '*'.
                  ENDIF.
                ENDIF.
                IF  vbak-vkorg =  v_sales_org_cpimex .
                  WRITE  81 g_trans_id.
                ELSE.
                  WRITE  81 likp-traid.
                ENDIF.
                WRITE:
                  102 lips-vbeln,
                  115 lips-ntgew NO-ZERO LEFT-JUSTIFIED,
                      lips-gewei,
                  140 vbfa-vbeln,
                  152 vbrk-vbeln.
              WHEN 2.
                WRITE 1 vbak-ernam.
                WRITE 14 vbak-vkbur.
                WRITE 21 kna1-name1.
                WRITE 57 vbeln.
                WRITE:
                    69 vbap-kwmeng LEFT-JUSTIFIED,
                        vbap-vrkme,
                    92 vbak-bstnk,
                        vbak-ihrez,
                    126 vbak-vdatu,
                      vbak-vzeit,
                    146 vbep-lddat.
                WRITE 162 vbap-werks.
                NEW-LINE.
                WRITE:
                  5  kna1-ort01,
                  41 kna1-regio.
                IF name1_sp2 IS INITIAL.
                  WRITE:
                    45 name1_sp1,
                ELSE.
                  WRITE 45 name1_sp2.
                  IF name1_sp1 = name1_sp2.
                    WRITE ' '.
                  ELSE.
                    WRITE '*'.
                  ENDIF.
                ENDIF.
                IF  vbak-vkorg =  v_sales_org_cpimex .
                  WRITE  81 g_trans_id.
                ELSE.
                  WRITE  81 likp-traid.
                ENDIF.
                WRITE:
                   102 lips-vbeln,
                   115 lips-ntgew NO-ZERO LEFT-JUSTIFIED,
                       lips-gewei,
                   140 vbfa-vbeln,
                   152 vbrk-vbeln.
            ENDCASE.
          ENDAT.
        ENDLOOP.
    *       FORM PARM_HDR                                                 *
    FORM parm_hdr.
      WRITE 'Program selections'(101) TO rpt_hdr1.
      WRITE 'Sign'(102) TO rpt_hdr1+29.
      WRITE 'Option'(103) TO rpt_hdr1+34.
      WRITE 'From'(104) TO rpt_hdr1+41.
      WRITE 'To'(105) TO rpt_hdr1+77.
    ENDFORM.                    "PARM_HDR
    *       FORM RPT_HDR                                                  *
    FORM rpt_hdr.
      CASE p_sort.
        WHEN 1.               "When sort by CAA
          WRITE 1'SOff'(066).
          WRITE 8'Customer'(009).
          WRITE 44'Sales Doc'(010).
          WRITE 56'Material'(031).
          WRITE 75'Sales Qty'(011).
          WRITE 100'Customer PO'(012).
          WRITE 134'Req.Del.Dt & Tm'(014).
          WRITE 154'Load Dt'(015).
          WRITE 166'Plnt'(016).
          NEW-LINE.
          WRITE 5'City'(017).
          WRITE 41'Reg'(069).
          WRITE 45'Carrier'(018).
          WRITE 81'Transport ID'(019).
          WRITE 102'Dlvry Doc'(021).
          WRITE 115'Dlvry Qty'(025).
          WRITE 140'PGI Doc'(026).
          WRITE 152'Billng Doc'(027).
        WHEN 2.               "When sort by Material
          WRITE 1'Created By'(008).
          WRITE 14'SOff'(066).
          WRITE 21'Customer'(009).
          WRITE 57'Sales Doc'(010).
          WRITE 69'Sales Qty'(011).
          WRITE 92'Customer PO'(012).
          WRITE 126'Req.Del.Dt & Tm'(014).
          WRITE 146'Load Dt'(015).
          WRITE 162'Plnt'(016).
          NEW-LINE.
          WRITE 5'City'(017).
          WRITE 41'Reg'(069).
          WRITE 45'Carrier'(018).
          WRITE 81'Transport ID'(019).
          WRITE 102'Dlvry Doc'(021).
          WRITE 115'Dlvry Qty'(025).
          WRITE 140'PGI Doc'(026).
          WRITE 152'Billng Doc'(027).
      ENDCASE.
    ENDFORM.                    "RPT_HDR
    INCLUDE zrpthdri.
    WRITE:
    / rpt_hdr1.
    ULINE.
    IF v_flagh2 <> 0.
      PERFORM rpt_hdr.  "Write secondary header
      ULINE.
    * Control Break Header
      WRITE / cb_hdr1.
    ENDIF.
    Continued in Part-2
    Thanks  a ton in advance.
    Mythili Sharma
    Edited by: Mythili sharma on Mar 30, 2009 3:32 AM
    Edited by: Rob Burbank on Mar 30, 2009 10:46 AM

    Hello ABAP Experts,
    I need your help to modify the following report with following requirement as I have least knowledge about the field-group concept. Thats is the reason, I am pasting the whole code. As it is part of our production requirement. I really appreciate your help, If its sent modifying the code required.
    Modification required in the report.
    To allow the sales representatives to see billed shipments and open orders for the current month.
    1) Selection Screen Changes:
    u2022     Add selection by Sales group and Customer group
    u2022     Add sort by:     5. Ship-to / Material
    u2022     Add another selection box
    [ ] Open Orders and Shipments with the current month
    2)      For the new selection box, subtotal sales quantity and delivery quantity.
         If delivered, make the sales quantity zero in the subtotal
    Current report displays, in Selection Screen
    Sales org:
    Person Name:
    Material:
    Plant:
    Sales Office:
    Ship to Name:
    Ship to Number:
    Sorts Report by :
    1. Person Name
    2. Material
    3. Plant
    4. Sales Office
    Check Boxes :
    1. Open Orders
    2. Delayed Orders
    3.Cancelled Orders
    PLEASE DOWNLOAD THE COMPLETE REPORT FROM THE FOLLOWING LINK
    << Link removed >>
    It would be a great help, If the program is modified according to the requirement and snd it back through send space and send link, even if u send the necessary changes to be done in the report is also appreciable.
    Thanks a ton in adanvce
    Mythili
    I wanted to close this thread as I could not put my question in a proper format. So please reply in the new thread which is posted.
    Edited by: Mythili sharma on Mar 30, 2009 2:16 PM
    Edited by: Rob Burbank on Mar 30, 2009 4:24 PM

  • Delivery date field has no data in the output

    Hii
    I have a program like this, when I try to execute it i found no data in the Delivery date colum. Can anyone correct the code.
    Thanks
    SP
    Global data declaration
    TYPE-POOLS: slis.
    TABLES: vbap, vbrk, vbfa, vbak, vbrp, konv, kna1, bkpf, bsad, bkpf_bsad,
    knvv, pa0002, t005u, mvke, lips, likp, vbpa.
    DATA: BEGIN OF i_list OCCURS 0,
          vbeln LIKE vbak-vbeln,
          posnr LIKE vbap-posnr,
          matnr LIKE vbap-matnr,
          erdat LIKE vbap-erdat,
          mvgr1 LIKE mvke-mvgr1,
          wadat_ist LIKE likp-wadat_ist,
          lfdat like likp-lfdat,
          days TYPE i,
          werks LIKE vbap-werks,
          lgort LIKE vbap-lgort,
          kwmeng LIKE vbap-kwmeng,"                                  CH01+
          lfimg  LIKE lips-lfimg,"                                   CH01+
          pstyv  LIKE vbap-pstyv,"                                   CH01+
          obd    LIKE lips-vbeln,"                                   CH01+
          obd_pos LIKE lips-posnr,"                                  CH01+
          soldto  LIKE vbaK-kunnr,"                                  JR+
          shipto  LIKE vbpa-kunnr,"                                  JR+
          END OF i_list.
    DATA: i_list2 LIKE i_list OCCURS 0 WITH HEADER LINE,
          i_list3 LIKE i_list OCCURS 0 WITH HEADER LINE.
    DATA: i_list4 LIKE vbap OCCURS 0 WITH HEADER LINE.
    *ALV Output Header
    DATA: gt_list_top_of_page TYPE slis_t_listheader,
          prognm     LIKE sy-repid,
          gc_formname_top_of_page TYPE slis_formname VALUE 'TOP_OF_PAGE',
          gt_events   TYPE slis_t_event,
          is_layout TYPE slis_layout_alv,
          is_variant LIKE disvariant,
          it_sort  TYPE slis_t_sortinfo_alv WITH HEADER LINE.
    DATA:gt_fieldcat TYPE slis_t_fieldcat_alv.
    DATA:gt_outtab LIKE i_list OCCURS 0 WITH HEADER LINE.
    DATA:   g_repid LIKE sy-repid,
            g_count LIKE sy-tabix.
    SELECTION-SCREEN BEGIN OF BLOCK block0 WITH FRAME TITLE text-t01.
    SELECTION-SCREEN: BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 1(79) text-t10.
    SELECTION-SCREEN: END OF LINE.
    SELECTION-SCREEN: BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 1(79) text-t11.
    SELECTION-SCREEN: END OF LINE.
    SELECTION-SCREEN: BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 1(79) text-t12.
    SELECTION-SCREEN: END OF LINE.
    SELECTION-SCREEN END OF BLOCK block0.
    */ Selection and Input Parameters
    SELECTION-SCREEN BEGIN OF BLOCK blocko WITH FRAME TITLE text-001.
    SELECT-OPTIONS: s_vbeln FOR vbap-vbeln, "SO
                    s_auart FOR vbak-auart DEFAULT 'KB' OBLIGATORY,
                    s_matnr FOR vbap-matnr," obligatory,
                    s_mvgr1 FOR mvke-mvgr1,
                    s_erdat FOR vbap-erdat OBLIGATORY,
                    s_werks FOR vbap-werks,
                    s_lgort FOR vbap-lgort.
    PARAMETERS:     p_vkorg LIKE vbak-vkorg DEFAULT '5010'.
    SELECTION-SCREEN SKIP 2.
    +EC1
    Addition                                                          +EC1
    +EC1
    PARAMETERS: p_vari LIKE disvariant-variant.
    +EC1
    End Addition                                                      +EC1
    +EC1
    SELECTION-SCREEN END OF BLOCK blocko.
    +EC1
    Addition                                                          +EC1
    +EC1
    DATA:   g_save(1) TYPE c,
           g_default(1) TYPE c,
            g_exit(1) TYPE c,
            gx_variant LIKE disvariant,
            g_variant LIKE disvariant.
    +EC1
    End Addition                                                      +EC1
    +EC1
    Initialization fieldcatalog
    INITIALIZATION.
    PERFORM clear_tables.
      g_repid = sy-repid.
      PERFORM fieldcat_init USING gt_fieldcat[].
    +EC1
    Addition                                                          +EC1
    +EC1
      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 auth_check.  "+ESC
      PERFORM pai_of_selection_screen.
    +EC1
    End Addition                                                      +EC1
    +EC1
    START-OF-SELECTION.
      PERFORM get_data.
      PERFORM alv.
    END-OF-SELECTION.
          FORM get_data                                                 *
    FORM get_data.
    *CH01 - Added kwmeng(order qty) to selection, excluded rejects
    *JR -added soldto and shipto code
      SELECT a~vbeln a~posnr a~matnr a~erdat a~werks a~lgort
             a~kwmeng a~pstyv b~kunnr"                               CH01+
      INTO
    (i_list-vbeln, i_list-posnr, i_list-matnr, i_list-erdat, i_list-werks,
    i_list-lgort,
    i_list-kwmeng , i_list-pstyv, i_list-soldto)"                   CH01+
      FROM vbap AS a INNER JOIN vbak AS b ON a~vbeln = b~vbeln
      WHERE b~vkorg = p_vkorg
      AND   a~werks IN s_werks
      AND   a~lgort IN s_lgort
      AND   b~auart IN s_auart
      AND   a~vbeln IN s_vbeln
      AND   a~erdat IN s_erdat
      AND   a~abgru = ''"                                            CH01+
      AND   a~matnr IN s_matnr.
        APPEND i_list.
      ENDSELECT.
      COMMIT WORK AND WAIT.
      LOOP AT i_list.
        SELECT SINGLE mvgr1 INTO i_list-mvgr1 FROM mvke
        WHERE matnr = i_list-matnr.
        MODIFY i_list.
        CLEAR: i_list.
      ENDLOOP.
      COMMIT WORK AND WAIT.
      LOOP AT i_list.
        IF i_list-mvgr1 IN s_mvgr1.
          CONTINUE.
        ELSE.
          DELETE i_list.
          COMMIT WORK AND WAIT.
        ENDIF.
    ENDLOOP.
    CH01 - commented these lines out and redid logic below
    LOOP AT i_list.
       select single vbeln into lips-vbeln from lips
       where vgbel = i_list-vbeln
       and   vgpos = i_list-posnr.
       select single wadat_ist into i_list-wadat_ist from likp
       where vbeln = lips-vbeln.
      SELECT single bwadat_ist blfdat INTO (i_list-wadat_ist,
    i_list-lfdat) FROM lips AS a INNER JOIN likp AS b ON avbeln = bvbeln
    WHERE avgbel = i_list-vbeln AND avgpos = i_list-posnr.
          MODIFY i_list.
          CLEAR: i_list, lips-vbeln.
       ENDSELECT.
      ENDLOOP.
    CH01 - Changed to select multiple delivery lines & del qty
    summing the total deliveries per OBD# and date
      LOOP AT i_list.
        SELECT avbeln   sum( alfimg ) b~wadat_ist
        INTO (i_list-obd , i_list-lfimg , i_list-wadat_ist)
        FROM lips AS a INNER JOIN
        likp AS b ON avbeln = bvbeln WHERE a~vgbel = i_list-vbeln
                                       AND   a~vgpos = i_list-posnr
                                       AND   a~pstyv = i_list-pstyv
          group by avbeln bwadat_ist.
          i_list2 = i_list.
          APPEND i_list2.
        ENDSELECT.
        IF sy-subrc <> 0.
          i_list2 = i_list.
          APPEND i_list2.
        ENDIF.
      ENDLOOP.
      i_list[] = i_list2[].
    *End CH01
      COMMIT WORK AND WAIT.
      LOOP AT i_list.
        IF  i_list-wadat_ist IS INITIAL.
          CONTINUE.
        ELSE.
          i_list-days = i_list-wadat_ist - i_list-erdat.
        ENDIF.
        MODIFY i_list.
        CLEAR: i_list.
        COMMIT WORK AND WAIT.
      ENDLOOP.
      COMMIT WORK AND WAIT.
      LOOP AT i_list.
        IF i_list-vbeln IS INITIAL.
          DELETE i_list.
        ENDIF.
      ENDLOOP.
      COMMIT WORK AND WAIT.
    *JR
      LOOP AT i_list.
        SELECT SINGLE KUNNR INTO i_list-shipto FROM vbpa
        WHERE vbeln = i_list-vbeln
         AND parvw = 'WE'.
        MODIFY i_list.
      ENDLOOP.
    *END JR
      gt_outtab[] = i_list[].
      COMMIT WORK AND WAIT.
    ENDFORM.
          FORM alv                                                      *
    FORM alv.
      PERFORM e03_eventtab_build USING gt_events[].             "+EC1
      PERFORM e04_comment_build  USING gt_list_top_of_page[].   "+EC1
      prognm = sy-repid.                                        "+EC1
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
          EXPORTING
               i_callback_user_command = 'USER_COMMAND'
               i_callback_program      = g_repid
               it_fieldcat             = gt_fieldcat[]
               it_events               = gt_events[]    "+ESC
               it_sort                 = it_sort[]
    +EC1
    Addition                                                          +EC1
    +EC1
               is_variant              = g_variant
               i_save                  = g_save
    +EC1
    End Addition                                                      +EC1
    +EC1
          TABLES
               t_outtab                = gt_outtab.
      COMMIT WORK AND WAIT.
    ENDFORM.
          FORM fieldcat_init                                            *
    -->  I_FIELDCAT                                                    *
    FORM fieldcat_init
          USING i_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-ref_tabname   = 'VBAK'.
      ls_fieldcat-key           = 'X'.
      APPEND ls_fieldcat TO i_fieldcat.
      CLEAR ls_fieldcat.
      ls_fieldcat-col_pos       =  pos.
      ls_fieldcat-fieldname     = 'POSNR'.
      ls_fieldcat-ref_tabname   = 'VBAP'.
      ls_fieldcat-key           = 'X'.
      APPEND ls_fieldcat TO i_fieldcat.
      CLEAR ls_fieldcat.
      ls_fieldcat-col_pos       =  pos.
      ls_fieldcat-fieldname     = 'MATNR'.
      ls_fieldcat-ref_tabname   = 'VBAP'.
      ls_fieldcat-key           = 'X'.
      APPEND ls_fieldcat TO i_fieldcat.
      CLEAR ls_fieldcat.
      ls_fieldcat-col_pos       =  pos.
      ls_fieldcat-fieldname     = 'MVGR1'.
      ls_fieldcat-ref_tabname   = 'MVKE'.
      ls_fieldcat-key           = 'X'.
      APPEND ls_fieldcat TO i_fieldcat.
      CLEAR ls_fieldcat.
      ls_fieldcat-col_pos       =  pos.
      ls_fieldcat-fieldname     = 'WERKS'.
      ls_fieldcat-ref_tabname   = 'VBAP'.
    ls_fieldcat-key           = 'X'.
      APPEND ls_fieldcat TO i_fieldcat.
      CLEAR ls_fieldcat.
      ls_fieldcat-col_pos       =  pos.
      ls_fieldcat-fieldname     = 'LGORT'.
      ls_fieldcat-ref_tabname   = 'VBAP'.
    ls_fieldcat-key           = 'X'.
      APPEND ls_fieldcat TO i_fieldcat.
      CLEAR ls_fieldcat.
      ls_fieldcat-col_pos       =  pos.
      ls_fieldcat-fieldname     = 'ERDAT'.
      ls_fieldcat-ref_tabname   = 'VBAP'.
    ls_fieldcat-key           = 'X'.
      APPEND ls_fieldcat TO i_fieldcat.
      CLEAR ls_fieldcat.
      ls_fieldcat-col_pos       =  pos.
      ls_fieldcat-fieldname     = 'WADAT_IST'.
      ls_fieldcat-ref_tabname   = 'LIKP'.
    ls_fieldcat-key           = 'X'.
      APPEND ls_fieldcat TO i_fieldcat.
      CLEAR ls_fieldcat.
      ls_fieldcat-col_pos = pos.
      ls_fieldcat-fieldname = 'LFDAT'.
      ls_fieldcat-ref_tabname = 'LIKP'.
    ls_fieldcat-key = 'X'.
      APPEND ls_fieldcat TO i_fieldcat.
      CLEAR ls_fieldcat.
      ls_fieldcat-col_pos       =  pos.
      ls_fieldcat-fieldname     = 'DAYS'.
      ls_fieldcat-ref_fieldname = 'DAYS'.
      ls_fieldcat-seltext_s     = '# Of Days'.
      ls_fieldcat-seltext_m     = '# Of Days'.
      ls_fieldcat-seltext_l     = '# Of Days'.
      APPEND ls_fieldcat TO i_fieldcat.
      CLEAR ls_fieldcat.
    *Begin CH01
      ls_fieldcat-col_pos       =  pos.
      ls_fieldcat-fieldname     = 'KWMENG'.
      ls_fieldcat-ref_tabname   = 'VBAP'.
      ls_fieldcat-outputlen     = 7.
      APPEND ls_fieldcat TO i_fieldcat.
      CLEAR ls_fieldcat.
      ls_fieldcat-col_pos       =  pos.
      ls_fieldcat-fieldname     = 'LFIMG'.
      ls_fieldcat-ref_tabname   = 'LIPS'.
      ls_fieldcat-outputlen     = 7.
      APPEND ls_fieldcat TO i_fieldcat.
      CLEAR ls_fieldcat.
      ls_fieldcat-col_pos       =  pos.
      ls_fieldcat-fieldname     = 'OBD'.
      ls_fieldcat-seltext_s     = 'OBD'.
      ls_fieldcat-seltext_m     = 'Outbound Del'.
      ls_fieldcat-seltext_l     = 'Outbound Delivery'.
      ls_fieldcat-outputlen     = 10.
      APPEND ls_fieldcat TO i_fieldcat.
      CLEAR ls_fieldcat.
    ls_fieldcat-col_pos       =  pos.
    ls_fieldcat-fieldname     = 'OBD_POS'.
    ls_fieldcat-seltext_s     = 'OBD Ln'.
    ls_fieldcat-seltext_m     = 'Outbound Del Ln'.
    ls_fieldcat-seltext_l     = 'Outbound Del Line'.
    ls_fieldcat-outputlen     = 10.
    APPEND ls_fieldcat TO i_fieldcat.
    CLEAR ls_fieldcat.
    *End CH01
    *JR
      ls_fieldcat-col_pos       =  pos.
      ls_fieldcat-fieldname     = 'SOLDTO'.
      ls_fieldcat-ref_tabname   = 'VBAP'.
      ls_fieldcat-seltext_m     = 'Sold To'.
      ls_fieldcat-seltext_l     = 'Sold To'.
      ls_fieldcat-outputlen     = 10.
      APPEND ls_fieldcat TO i_fieldcat.
      CLEAR ls_fieldcat.
      ls_fieldcat-col_pos       =  pos.
      ls_fieldcat-fieldname     = 'SHIPTO'.
      ls_fieldcat-ref_tabname   = 'VBPA'.
      ls_fieldcat-seltext_m     = 'Ship To'.
      ls_fieldcat-seltext_l     = 'Ship To'.
      ls_fieldcat-outputlen     = 10.
      APPEND ls_fieldcat TO i_fieldcat.
      CLEAR ls_fieldcat.
    *END JR
    *FOR ALV SORT & SUBTOTAL
      CLEAR it_sort.
      it_sort-spos = '0'.
      it_sort-fieldname = 'VBELN'.
      it_sort-tabname = 'GT_OUTTAB'.
      it_sort-up = 'X'.
    it_sort-subtot = 'X'.
      APPEND it_sort.
      CLEAR it_sort.
      it_sort-spos = '1'.
      it_sort-fieldname = 'POSNR'.
      it_sort-tabname = 'GT_OUTTAB'.
      it_sort-up = 'X'.
      it_sort-subtot = 'X'.
    it_sort-subtot = 'X'.
      APPEND it_sort.
      CLEAR it_sort.
      it_sort-spos = '2'.
      it_sort-fieldname = 'MATNR'.
      it_sort-tabname = 'GT_OUTTAB'.
      it_sort-up = 'X'.
    it_sort-subtot = 'X'.
      APPEND it_sort.
      CLEAR it_sort.
      it_sort-spos = '3'.
      it_sort-fieldname = 'MVGR1'.
      it_sort-tabname = 'GT_OUTTAB'.
      it_sort-up = 'X'.
    it_sort-subtot = 'X'.
      APPEND it_sort.
      CLEAR it_sort.
      it_sort-spos = '4'.
      it_sort-fieldname = 'ERDAT'.
      it_sort-tabname = 'GT_OUTTAB'.
      it_sort-up = 'X'.
    it_sort-subtot = 'X'.
      APPEND it_sort.
      CLEAR it_sort.
      it_sort-spos = '5'.
      it_sort-fieldname = 'WADAT_IST'.
      it_sort-tabname = 'GT_OUTTAB'.
      it_sort-down = 'X'.
    it_sort-subtot = 'X'.
      APPEND it_sort.
    CLEAR it_sort.
    it_sort-spos = '6'.
    it_sort-fieldname = 'PERNR'.
    it_sort-tabname = 'GT_OUTTAB'.
    it_sort-up = 'X'.
    it_sort-subtot = 'X'.
    APPEND it_sort.
    CLEAR it_sort.
    it_sort-spos = '7'.
    it_sort-fieldname = 'VORNA'.
    it_sort-tabname = 'GT_OUTTAB'.
    it_sort-up = 'X'.
    it_sort-subtot = 'X'.
    APPEND it_sort.
    CLEAR it_sort.
    it_sort-spos = '8'.
    it_sort-fieldname = 'NACHN'.
    it_sort-tabname = 'GT_OUTTAB'.
    it_sort-up = 'X'.
    it_sort-subtot = 'X'.
    APPEND it_sort.
    CLEAR it_sort.
    it_sort-spos = '9'.
    it_sort-fieldname = 'VKGRP'.
    it_sort-tabname = 'GT_OUTTAB'.
    it_sort-up = 'X'.
    it_sort-subtot = 'X'.
    APPEND it_sort.
    CLEAR it_sort.
    it_sort-spos = '10'.
    it_sort-fieldname = 'VBELN'.
    it_sort-tabname = 'GT_OUTTAB'.
    it_sort-up = 'X'.
    it_sort-subtot = 'X'.
    APPEND it_sort.
    CLEAR it_sort.
    it_sort-spos = '11'.
    it_sort-fieldname = 'ERDAT'.
    it_sort-tabname = 'GT_OUTTAB'.
    it_sort-up = 'X'.
    it_sort-subtot = 'X'.
    APPEND it_sort.
    CLEAR it_sort.
    it_sort-spos = '12'.
    it_sort-fieldname = 'BEZEI'.
    it_sort-tabname = 'GT_OUTTAB'.
    it_sort-up = 'X'.
    it_sort-subtot = 'X'.
    APPEND it_sort.
    clear it_sort.
    it_sort-spos = '1'.
    it_sort-fieldname = 'BELNR'.
    it_sort-tabname = 'GT_OUTTAB'.
    it_sort-up = 'X'.
    append it_sort.
    ENDFORM.
    +EC1
    Addition                                                          +EC1
    +EC1
    *&      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                                           *
    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
    +EC1
    End Addition                                                      +EC1
    +EC1
          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 e04_comment_build                                        *
    -->  E04_LT_TOP_OF_PAGE                                            *
    FORM e04_comment_build USING e04_lt_top_of_page TYPE slis_t_listheader.
      DATA: ls_line TYPE slis_listheader.
    *Report Title
      CLEAR ls_line.
      ls_line-typ  = 'H'.
      ls_line-info = text-007.
      APPEND ls_line TO e04_lt_top_of_page.
    **Doc Type Desc.
    clear ls_line.
    ls_line-typ  = 'S'.
    ls_line-key = text-008.
    ls_line-info = p_matnr.
    append ls_line to e04_lt_top_of_page.
    clear ls_line.
    ls_line-typ  = 'S'.
    ls_line-key  = text-009.
    ls_line-info = p_werks.
    append ls_line to e04_lt_top_of_page.
    clear ls_line.
    ls_line-typ  = 'S'.
    ls_line-key = text-010.
    ls_line-info = p_stlan.
    append ls_line to e04_lt_top_of_page.
    clear ls_line.
    ls_line-typ  = 'S'.
    ls_line-key = text-011.
    ls_line-info = p_stlal.
    append ls_line to e04_lt_top_of_page.
    clear ls_line.
    ls_line-typ  = 'S'.
    ls_line-key = text-012.
    ls_line-info = p_stlal.
    append ls_line to e04_lt_top_of_page.
    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 auth_check                                               *
    FORM auth_check.
      AUTHORITY-CHECK OBJECT 'V_VBAK_VKO'
                      ID 'VKORG' FIELD p_vkorg.
      IF sy-subrc NE 0.
        MESSAGE e054 WITH p_vkorg.
      ENDIF.
    ENDFORM.                    " auth_check
    *&      Form  USER_COMMAND
    FORM user_command  USING r_ucomm LIKE sy-ucomm
                             rs_selfield TYPE slis_selfield.
      CASE r_ucomm.
        WHEN '&IC1'.
          PERFORM display_so_order USING r_ucomm
                                        rs_selfield.
      ENDCASE.
    ENDFORM.
    *&      Form  display_sales_order
          text
         -->P_R_UCOMM  text
         -->P_RS_SELFIELD  text
    FORM display_so_order USING    r_ucomm LIKE sy-ucomm
                                             rs_selfield TYPE slis_selfield.
      CASE rs_selfield-sel_tab_field.
        WHEN '1-VBELN'.
          SET PARAMETER ID 'AUN' FIELD rs_selfield-value.
          CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN.
        WHEN '1-MATNR'.
          SET PARAMETER ID 'MAT' FIELD rs_selfield-value.
          CALL TRANSACTION 'MM03' AND SKIP FIRST SCREEN.
        WHEN '1-OBD'.
          SET PARAMETER ID 'VL' FIELD rs_selfield-value.
          CALL TRANSACTION 'VL03N' AND SKIP FIRST SCREEN.
        WHEN OTHERS.
          MESSAGE i000(z1) WITH 'Please Click on the Valid Selection'.
          EXIT.
      ENDCASE.
    ENDFORM.                    " display_sales_order
          FORM EDit_table                                               *

    Hi,
      Try this..I commented the continue statement and I didn't change the SQL to add the LFDAT..If I change the SQL the calculations might change..
      CHeck this..Changes are marked in bold..
    Global data declaration
    TYPE-POOLS: slis.
    TABLES: vbap, vbrk, vbfa, vbak, vbrp, konv, kna1, bkpf, bsad, bkpf_bsad,
    knvv, pa0002, t005u, mvke, lips, likp, vbpa.
    DATA: BEGIN OF i_list OCCURS 0,
    vbeln LIKE vbak-vbeln,
    posnr LIKE vbap-posnr,
    matnr LIKE vbap-matnr,
    erdat LIKE vbap-erdat,
    mvgr1 LIKE mvke-mvgr1,
    wadat_ist LIKE likp-wadat_ist,
    lfdat like likp-lfdat,
    days TYPE i,
    werks LIKE vbap-werks,
    lgort LIKE vbap-lgort,
    kwmeng LIKE vbap-kwmeng," CH01+
    lfimg LIKE lips-lfimg," CH01+
    pstyv LIKE vbap-pstyv," CH01+
    obd LIKE lips-vbeln," CH01+
    obd_pos LIKE lips-posnr," CH01+
    soldto LIKE vbaK-kunnr," JR+
    shipto LIKE vbpa-kunnr," JR+
    END OF i_list.
    DATA: i_list2 LIKE i_list OCCURS 0 WITH HEADER LINE,
    i_list3 LIKE i_list OCCURS 0 WITH HEADER LINE.
    DATA: i_list4 LIKE vbap OCCURS 0 WITH HEADER LINE.
    *ALV Output Header
    DATA: gt_list_top_of_page TYPE slis_t_listheader,
    prognm LIKE sy-repid,
    gc_formname_top_of_page TYPE slis_formname VALUE 'TOP_OF_PAGE',
    gt_events TYPE slis_t_event,
    is_layout TYPE slis_layout_alv,
    is_variant LIKE disvariant,
    it_sort TYPE slis_t_sortinfo_alv WITH HEADER LINE.
    DATA:gt_fieldcat TYPE slis_t_fieldcat_alv.
    DATA:gt_outtab LIKE i_list OCCURS 0 WITH HEADER LINE.
    DATA: g_repid LIKE sy-repid,
    g_count LIKE sy-tabix.
    SELECTION-SCREEN BEGIN OF BLOCK block0 WITH FRAME TITLE text-t01.
    SELECTION-SCREEN: BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 1(79) text-t10.
    SELECTION-SCREEN: END OF LINE.
    SELECTION-SCREEN: BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 1(79) text-t11.
    SELECTION-SCREEN: END OF LINE.
    SELECTION-SCREEN: BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 1(79) text-t12.
    SELECTION-SCREEN: END OF LINE.
    SELECTION-SCREEN END OF BLOCK block0.
    */ Selection and Input Parameters
    SELECTION-SCREEN BEGIN OF BLOCK blocko WITH FRAME TITLE text-001.
    SELECT-OPTIONS: s_vbeln FOR vbap-vbeln, "SO
    s_auart FOR vbak-auart DEFAULT 'KB' OBLIGATORY,
    s_matnr FOR vbap-matnr," obligatory,
    s_mvgr1 FOR mvke-mvgr1,
    s_erdat FOR vbap-erdat OBLIGATORY,
    s_werks FOR vbap-werks,
    s_lgort FOR vbap-lgort.
    PARAMETERS: p_vkorg LIKE vbak-vkorg DEFAULT '5010'.
    SELECTION-SCREEN SKIP 2.
    +EC1
    Addition +EC1
    +EC1
    PARAMETERS: p_vari LIKE disvariant-variant.
    +EC1
    End Addition +EC1
    +EC1
    SELECTION-SCREEN END OF BLOCK blocko.
    +EC1
    Addition +EC1
    +EC1
    DATA: g_save(1) TYPE c,
    g_default(1) TYPE c,
    g_exit(1) TYPE c,
    gx_variant LIKE disvariant,
    g_variant LIKE disvariant.
    +EC1
    End Addition +EC1
    +EC1
    Initialization fieldcatalog
    INITIALIZATION.
    PERFORM clear_tables.
    g_repid = sy-repid.
    PERFORM fieldcat_init USING gt_fieldcat[].
    +EC1
    Addition +EC1
    +EC1
    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 auth_check. "+ESC
    PERFORM pai_of_selection_screen.
    +EC1
    End Addition +EC1
    +EC1
    START-OF-SELECTION.
    PERFORM get_data.
    PERFORM alv.
    END-OF-SELECTION.
    FORM get_data *
    FORM get_data.
    *CH01 - Added kwmeng(order qty) to selection, excluded rejects
    *JR -added soldto and shipto code
    SELECT a~vbeln a~posnr a~matnr a~erdat a~werks a~lgort
    a~kwmeng a~pstyv b~kunnr" CH01+
    INTO
    (i_list-vbeln, i_list-posnr, i_list-matnr, i_list-erdat, i_list-werks,
    i_list-lgort,
    i_list-kwmeng , i_list-pstyv, i_list-soldto)" CH01+
    FROM vbap AS a INNER JOIN vbak AS b ON a~vbeln = b~vbeln
    WHERE b~vkorg = p_vkorg
    AND a~werks IN s_werks
    AND a~lgort IN s_lgort
    AND b~auart IN s_auart
    AND a~vbeln IN s_vbeln
    AND a~erdat IN s_erdat
    AND a~abgru = ''" CH01+
    AND a~matnr IN s_matnr.
    APPEND i_list.
    ENDSELECT.
    COMMIT WORK AND WAIT.
    LOOP AT i_list.
    SELECT SINGLE mvgr1 INTO i_list-mvgr1 FROM mvke
    WHERE matnr = i_list-matnr.
    MODIFY i_list.
    CLEAR: i_list.
    ENDLOOP.
    COMMIT WORK AND WAIT.
    LOOP AT i_list.
    IF i_list-mvgr1 IN s_mvgr1.
    <b>* CONTINUE</b>
    ELSE.
    DELETE i_list.
    COMMIT WORK AND WAIT.
    ENDIF.
    ENDLOOP.
    CH01 - commented these lines out and redid logic below
    LOOP AT i_list.
    select single vbeln into lips-vbeln from lips
    where vgbel = i_list-vbeln
    and vgpos = i_list-posnr.
    select single wadat_ist into i_list-wadat_ist from likp
    where vbeln = lips-vbeln.
    SELECT single bwadat_ist blfdat INTO (i_list-wadat_ist,
    i_list-lfdat) FROM lips AS a INNER JOIN likp AS b ON avbeln = bvbeln
    WHERE avgbel = i_list-vbeln AND avgpos = i_list-posnr.
    MODIFY i_list.
    CLEAR: i_list, lips-vbeln.
    ENDSELECT.
    ENDLOOP.
    CH01 - Changed to select multiple delivery lines & del qty
    summing the total deliveries per OBD# and date
    LOOP AT i_list.
    SELECT avbeln sum( alfimg ) b~wadat_ist
    INTO (i_list-obd , i_list-lfimg , i_list-wadat_ist)
    FROM lips AS a INNER JOIN
    likp AS b ON avbeln = bvbeln WHERE a~vgbel = i_list-vbeln
    AND a~vgpos = i_list-posnr
    AND a~pstyv = i_list-pstyv
    group by avbeln bwadat_ist.
    i_list2 = i_list.
    APPEND i_list2.
    ENDSELECT.
    IF sy-subrc <> 0.
    i_list2 = i_list.
    APPEND i_list2.
    ENDIF.
    ENDLOOP.
    i_list[] = i_list2[].
    *End CH01
    COMMIT WORK AND WAIT.
    LOOP AT i_list.
    IF i_list-wadat_ist IS INITIAL.
    CONTINUE.
    ELSE.
    i_list-days = i_list-wadat_ist - i_list-erdat.
    ENDIF.
    MODIFY i_list.
    CLEAR: i_list.
    COMMIT WORK AND WAIT.
    ENDLOOP.
    COMMIT WORK AND WAIT.
    LOOP AT i_list.
    IF i_list-vbeln IS INITIAL.
    DELETE i_list.
    ENDIF.
    ENDLOOP.
    COMMIT WORK AND WAIT.
    *JR
    LOOP AT i_list.
    SELECT SINGLE KUNNR INTO i_list-shipto FROM vbpa
    WHERE vbeln = i_list-vbeln
    AND parvw = 'WE'.
    MODIFY i_list.
    ENDLOOP.
    *END JR
    gt_outtab[] = i_list[].
    COMMIT WORK AND WAIT.
    ENDFORM.
    FORM alv *
    FORM alv.
    PERFORM e03_eventtab_build USING gt_events[]. "+EC1
    PERFORM e04_comment_build USING gt_list_top_of_page[]. "+EC1
    prognm = sy-repid. "+EC1
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
    i_callback_user_command = 'USER_COMMAND'
    i_callback_program = g_repid
    it_fieldcat = gt_fieldcat[]
    it_events = gt_events[] "+ESC
    it_sort = it_sort[]
    +EC1
    Addition +EC1
    +EC1
    is_variant = g_variant
    i_save = g_save
    +EC1
    End Addition +EC1
    +EC1
    TABLES
    t_outtab = gt_outtab.
    COMMIT WORK AND WAIT.
    ENDFORM.
    FORM fieldcat_init *
    --> I_FIELDCAT *
    FORM fieldcat_init
    USING i_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-ref_tabname = 'VBAK'.
    ls_fieldcat-key = 'X'.
    APPEND ls_fieldcat TO i_fieldcat.
    CLEAR ls_fieldcat.
    ls_fieldcat-col_pos = pos.
    ls_fieldcat-fieldname = 'POSNR'.
    ls_fieldcat-ref_tabname = 'VBAP'.
    ls_fieldcat-key = 'X'.
    APPEND ls_fieldcat TO i_fieldcat.
    CLEAR ls_fieldcat.
    ls_fieldcat-col_pos = pos.
    ls_fieldcat-fieldname = 'MATNR'.
    ls_fieldcat-ref_tabname = 'VBAP'.
    ls_fieldcat-key = 'X'.
    APPEND ls_fieldcat TO i_fieldcat.
    CLEAR ls_fieldcat.
    ls_fieldcat-col_pos = pos.
    ls_fieldcat-fieldname = 'MVGR1'.
    ls_fieldcat-ref_tabname = 'MVKE'.
    ls_fieldcat-key = 'X'.
    APPEND ls_fieldcat TO i_fieldcat.
    CLEAR ls_fieldcat.
    ls_fieldcat-col_pos = pos.
    ls_fieldcat-fieldname = 'WERKS'.
    ls_fieldcat-ref_tabname = 'VBAP'.
    ls_fieldcat-key = 'X'.
    APPEND ls_fieldcat TO i_fieldcat.
    CLEAR ls_fieldcat.
    ls_fieldcat-col_pos = pos.
    ls_fieldcat-fieldname = 'LGORT'.
    ls_fieldcat-ref_tabname = 'VBAP'.
    ls_fieldcat-key = 'X'.
    APPEND ls_fieldcat TO i_fieldcat.
    CLEAR ls_fieldcat.
    ls_fieldcat-col_pos = pos.
    ls_fieldcat-fieldname = 'ERDAT'.
    ls_fieldcat-ref_tabname = 'VBAP'.
    ls_fieldcat-key = 'X'.
    APPEND ls_fieldcat TO i_fieldcat.
    CLEAR ls_fieldcat.
    ls_fieldcat-col_pos = pos.
    ls_fieldcat-fieldname = 'WADAT_IST'.
    ls_fieldcat-ref_tabname = 'LIKP'.
    ls_fieldcat-key = 'X'.
    APPEND ls_fieldcat TO i_fieldcat.
    CLEAR ls_fieldcat.
    ls_fieldcat-col_pos = pos.
    ls_fieldcat-fieldname = 'LFDAT'.
    ls_fieldcat-ref_tabname = 'LIKP'.
    ls_fieldcat-key = 'X'.
    APPEND ls_fieldcat TO i_fieldcat.
    CLEAR ls_fieldcat.
    ls_fieldcat-col_pos = pos.
    ls_fieldcat-fieldname = 'DAYS'.
    ls_fieldcat-ref_fieldname = 'DAYS'.
    ls_fieldcat-seltext_s = '# Of Days'.
    ls_fieldcat-seltext_m = '# Of Days'.
    ls_fieldcat-seltext_l = '# Of Days'.
    APPEND ls_fieldcat TO i_fieldcat.
    CLEAR ls_fieldcat.
    *Begin CH01
    ls_fieldcat-col_pos = pos.
    ls_fieldcat-fieldname = 'KWMENG'.
    ls_fieldcat-ref_tabname = 'VBAP'.
    ls_fieldcat-outputlen = 7.
    APPEND ls_fieldcat TO i_fieldcat.
    CLEAR ls_fieldcat.
    ls_fieldcat-col_pos = pos.
    ls_fieldcat-fieldname = 'LFIMG'.
    ls_fieldcat-ref_tabname = 'LIPS'.
    ls_fieldcat-outputlen = 7.
    APPEND ls_fieldcat TO i_fieldcat.
    CLEAR ls_fieldcat.
    ls_fieldcat-col_pos = pos.
    ls_fieldcat-fieldname = 'OBD'.
    ls_fieldcat-seltext_s = 'OBD'.
    ls_fieldcat-seltext_m = 'Outbound Del'.
    ls_fieldcat-seltext_l = 'Outbound Delivery'.
    ls_fieldcat-outputlen = 10.
    APPEND ls_fieldcat TO i_fieldcat.
    CLEAR ls_fieldcat.
    ls_fieldcat-col_pos = pos.
    ls_fieldcat-fieldname = 'OBD_POS'.
    ls_fieldcat-seltext_s = 'OBD Ln'.
    ls_fieldcat-seltext_m = 'Outbound Del Ln'.
    ls_fieldcat-seltext_l = 'Outbound Del Line'.
    ls_fieldcat-outputlen = 10.
    APPEND ls_fieldcat TO i_fieldcat.
    CLEAR ls_fieldcat.
    *End CH01
    *JR
    ls_fieldcat-col_pos = pos.
    ls_fieldcat-fieldname = 'SOLDTO'.
    ls_fieldcat-ref_tabname = 'VBAP'.
    ls_fieldcat-seltext_m = 'Sold To'.
    ls_fieldcat-seltext_l = 'Sold To'.
    ls_fieldcat-outputlen = 10.
    APPEND ls_fieldcat TO i_fieldcat.
    CLEAR ls_fieldcat.
    ls_fieldcat-col_pos = pos.
    ls_fieldcat-fieldname = 'SHIPTO'.
    ls_fieldcat-ref_tabname = 'VBPA'.
    ls_fieldcat-seltext_m = 'Ship To'.
    ls_fieldcat-seltext_l = 'Ship To'.
    ls_fieldcat-outputlen = 10.
    APPEND ls_fieldcat TO i_fieldcat.
    CLEAR ls_fieldcat.
    *END JR
    *FOR ALV SORT & SUBTOTAL
    CLEAR it_sort.
    it_sort-spos = '0'.
    it_sort-fieldname = 'VBELN'.
    it_sort-tabname = 'GT_OUTTAB'.
    it_sort-up = 'X'.
    it_sort-subtot = 'X'.
    APPEND it_sort.
    CLEAR it_sort.
    it_sort-spos = '1'.
    it_sort-fieldname = 'POSNR'.
    it_sort-tabname = 'GT_OUTTAB'.
    it_sort-up = 'X'.
    it_sort-subtot = 'X'.
    it_sort-subtot = 'X'.
    APPEND it_sort.
    CLEAR it_sort.
    it_sort-spos = '2'.
    it_sort-fieldname = 'MATNR'.
    it_sort-tabname = 'GT_OUTTAB'.
    it_sort-up = 'X'.
    it_sort-subtot = 'X'.
    APPEND it_sort.
    CLEAR it_sort.
    it_sort-spos = '3'.
    it_sort-fieldname = 'MVGR1'.
    it_sort-tabname = 'GT_OUTTAB'.
    it_sort-up = 'X'.
    it_sort-subtot = 'X'.
    APPEND it_sort.
    CLEAR it_sort.
    it_sort-spos = '4'.
    it_sort-fieldname = 'ERDAT'.
    it_sort-tabname = 'GT_OUTTAB'.
    it_sort-up = 'X'.
    it_sort-subtot = 'X'.
    APPEND it_sort.
    CLEAR it_sort.
    it_sort-spos = '5'.
    it_sort-fieldname = 'WADAT_IST'.
    it_sort-tabname = 'GT_OUTTAB'.
    it_sort-down = 'X'.
    it_sort-subtot = 'X'.
    APPEND it_sort.
    CLEAR it_sort.
    it_sort-spos = '6'.
    it_sort-fieldname = 'PERNR'.
    it_sort-tabname = 'GT_OUTTAB'.
    it_sort-up = 'X'.
    it_sort-subtot = 'X'.
    APPEND it_sort.
    CLEAR it_sort.
    it_sort-spos = '7'.
    it_sort-fieldname = 'VORNA'.
    it_sort-tabname = 'GT_OUTTAB'.
    it_sort-up = 'X'.
    it_sort-subtot = 'X'.
    APPEND it_sort.
    CLEAR it_sort.
    it_sort-spos = '8'.
    it_sort-fieldname = 'NACHN'.
    it_sort-tabname = 'GT_OUTTAB'.
    it_sort-up = 'X'.
    it_sort-subtot = 'X'.
    APPEND it_sort.
    CLEAR it_sort.
    it_sort-spos = '9'.
    it_sort-fieldname = 'VKGRP'.
    it_sort-tabname = 'GT_OUTTAB'.
    it_sort-up = 'X'.
    it_sort-subtot = 'X'.
    APPEND it_sort.
    CLEAR it_sort.
    it_sort-spos = '10'.
    it_sort-fieldname = 'VBELN'.
    it_sort-tabname = 'GT_OUTTAB'.
    it_sort-up = 'X'.
    it_sort-subtot = 'X'.
    APPEND it_sort.
    CLEAR it_sort.
    it_sort-spos = '11'.
    it_sort-fieldname = 'ERDAT'.
    it_sort-tabname = 'GT_OUTTAB'.
    it_sort-up = 'X'.
    it_sort-subtot = 'X'.
    APPEND it_sort.
    CLEAR it_sort.
    it_sort-spos = '12'.
    it_sort-fieldname = 'BEZEI'.
    it_sort-tabname = 'GT_OUTTAB'.
    it_sort-up = 'X'.
    it_sort-subtot = 'X'.
    APPEND it_sort.
    clear it_sort.
    it_sort-spos = '1'.
    it_sort-fieldname = 'BELNR'.
    it_sort-tabname = 'GT_OUTTAB'.
    it_sort-up = 'X'.
    append it_sort.
    ENDFORM.
    +EC1
    Addition +EC1
    +EC1
    *& 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 *
    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
    +EC1
    End Addition +EC1
    +EC1
    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 e04_comment_build *
    --> E04_LT_TOP_OF_PAGE *
    FORM e04_comment_build USING e04_lt_top_of_page TYPE slis_t_listheader.
    DATA: ls_line TYPE slis_listheader.
    *Report Title
    CLEAR ls_line.
    ls_line-typ = 'H'.
    ls_line-info = text-007.
    APPEND ls_line TO e04_lt_top_of_page.
    **Doc Type Desc.
    clear ls_line.
    ls_line-typ = 'S'.
    ls_line-key = text-008.
    ls_line-info = p_matnr.
    append ls_line to e04_lt_top_of_page.
    clear ls_line.
    ls_line-typ = 'S'.
    ls_line-key = text-009.
    ls_line-info = p_werks.
    append ls_line to e04_lt_top_of_page.
    clear ls_line.
    ls_line-typ = 'S'.
    ls_line-key = text-010.
    ls_line-info = p_stlan.
    append ls_line to e04_lt_top_of_page.
    clear ls_line.
    ls_line-typ = 'S'.
    ls_line-key = text-011.
    ls_line-info = p_stlal.
    append ls_line to e04_lt_top_of_page.
    clear ls_line.
    ls_line-typ = 'S'.
    ls_line-key = text-012.
    ls_line-info = p_stlal.
    append ls_line to e04_lt_top_of_page.
    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 auth_check *
    FORM auth_check.
    AUTHORITY-CHECK OBJECT 'V_VBAK_VKO'
    ID 'VKORG' FIELD p_vkorg.
    IF sy-subrc NE 0.
    *MESSAGE e054 WITH p_vkorg.
    ENDIF.
    ENDFORM. " auth_check
    *& Form USER_COMMAND
    FORM user_command USING r_ucomm LIKE sy-ucomm
    rs_selfield TYPE slis_selfield.
    CASE r_ucomm.
    WHEN '&IC1'.
    PERFORM display_so_order USING r_ucomm
    rs_selfield.
    ENDCASE.
    ENDFORM.
    *& Form display_sales_order
    text
    -->P_R_UCOMM text
    -->P_RS_SELFIELD text
    FORM display_so_order USING r_ucomm LIKE sy-ucomm
    rs_selfield TYPE slis_selfield.
    CASE rs_selfield-sel_tab_field.
    WHEN '1-VBELN'.
    SET PARAMETER ID 'AUN' FIELD rs_selfield-value.
    CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN.
    WHEN '1-MATNR'.
    SET PARAMETER ID 'MAT' FIELD rs_selfield-value.
    CALL TRANSACTION 'MM03' AND SKIP FIRST SCREEN.
    WHEN '1-OBD'.
    SET PARAMETER ID 'VL' FIELD rs_selfield-value.
    CALL TRANSACTION 'VL03N' AND SKIP FIRST SCREEN.
    WHEN OTHERS.
    MESSAGE i000(z1) WITH 'Please Click on the Valid Selection'.
    EXIT.
    ENDCASE.
    ENDFORM. " display_sales_order
    FORM EDit_table *
    Thanks,
    Naren

  • Help with sales table fields

    hi!
    can someone help me in finding the following fields from vendor tables:
    confirmed sales order quantity
    on order sales order quantity
    open PO quantity
    moving average price
    outstanding delivery PO
    thanks,
    Srikanth.

    check out these tables,
    VBAK Header Data
    VBAP Item Data
    VBAG Release Data by Schedule Line in Sch.Agrmt.
    VBUK Header Status and Administrative Data
    VBUP Item Status
    VBRL SD Document: Invoice List
    VBPA Partner
    VBKD Business Data
    VBKA Sales activities
    VBEP Schedule Line Data
    VBRK Billing: Header Data (invoice)
    VBRP Billing: Item Data (invoice)
    VBFA Sales Document Flow
    VTTP Shipment item
    regards,
    seenu

  • Getting Sales order -Schedule line field , Delivered Quantity ( VSMNG ) ??

    Hi...
    I need to use the Delivered Quantity present in a sales order at schedule line level.
    This field can be seen if we, enter a sales order in VA02 and click on the Item and then click on the 'Schedule Lines' tab... i need to know.. how do i fetch the field 'Delivered Quantity' present there....
    If no values are present .. then it means.. no delivery has been done for that material........
    The F1 or Techinical help points to the field VBEPD-VSMNG...... and i found that this field is calculated at runtime in the function module RV_SCHEDULE_CHECK_DELIVERIES.....
    Can someone please tell me... how do i fetch this field ...or calculate this field..... for my requirement.....
    Regards.....

    Hi.
    You can use the function module RV_SCHEDULE_CHECK_DELIVERIES to get the delivered quanity corresponding to schedule line item  in sales order.
    Please refer below code:
    ie3mdpslx-delnr is sales order numer
    ie3mdpslx-delps is line item.
    internal table tl_da_vbep has got field VSMNG which is the delievred quantity for each line item
      SELECT * FROM vbfa
        INTO CORRESPONDING FIELDS OF TABLE  tl_xvbfa
        WHERE vbelv = ie3mdpslx-delnr
        AND posnv = ie3mdpslx-delps
        AND vbtyp_v = 'C'.
        SELECT  * FROM vbup
        INTO CORRESPONDING FIELDS OF TABLE tl_xvbup
        WHERE vbeln = ie3mdpslx-delnr
        AND posnr = ie3mdpslx-delps.
        SELECT * FROM vbep
        INTO CORRESPONDING FIELDS OF TABLE tl_da_vbep
        WHERE vbeln = ie3mdpslx-delnr
        AND  posnr = ie3mdpslx-delps.
        SELECT  * FROM vbap
        INTO CORRESPONDING FIELDS OF TABLE tl_xvbap
        WHERE vbeln = ie3mdpslx-delnr
        AND  posnr = ie3mdpslx-delps.
        CALL FUNCTION 'RV_SCHEDULE_CHECK_DELIVERIES'
          EXPORTING
            fbeleg                  = ie3mdpslx-delnr
            fposnr                  = ie3mdpslx-delps
          TABLES
            fvbfa                   = tl_xvbfa
            fvbup                   = tl_xvbup
            fxvbep                  = tl_da_vbep
            fvbap                   = tl_xvbap
          EXCEPTIONS
            fehler_bei_lesen_fvbup  = 1
            fehler_bei_lesen_fxvbep = 2
            OTHERS                  = 3.

  • Field FKSTA- Billing status of delivery-related billing documents not getting updated

    Hi Experts,
    I have a requirement wherein I need to fetch the FKSTA - Billing status of delivery-related billing documents into the datasource 2lis_11_VASTI. I have checked a lot of threads on this topic but have not found a concrete solution yet.
    I have checked the settings in vov7 and vov8 and everything seems to be in place. I have also checked in table VBUP, when I filter based on field FKSTA = 'C', it shows me the outbound delivery document nos. But when I use the related sales document, it shows me blank values. VBUK as well doesn't show any values for field FKSTK.
    I would like to know how and where I can identify the 'billing status of delivery- related' document.
    I can see in VBUP table that if I enter the sales document no. related to the delivery document, it does not show the correct status.  I believe that the statuses should ideally get updated to the underlying VBUK and VBUP tables. Is there any way to update and align them?
    Is there a workaround, a similar field that i can use for datasource enhancement that will give me the correct values?
    Appreciate any help I can get on this as it is urgent.
    Thanks,
    AM

    Hi,
    You are correct that stauts is updated in table VBUK and VBUP.
    However, a sales order does not determine a billing status for delivery related billing, field
    VBUP-FKSTA is only determined for delivey.
    So, it is correct behavior that VBUP-FKSTA = BLANK when searching VBUP with
    VBUP-VBELN = sales order number.
    Just because of above reason, you will not find billing status field in VA03 -> goto header/item;
    you could only find billing status field for delivery in VL03N -> status overview.
    It seems that you are trying to find out sales orders that have been fully deliveried and fully billed, am I right? As far as I know, there is no directly table/field/tcode that could meet your requirement.
    You could consider following workaround:
    firstly, get a list of deliveries that have been fully billied(search VBUP with VBUP-FKSTA = C or search VBUK with VBUK-FKSTK = C);
    Secondly, using these deliveries to search table VBFA to find out related sales orders.
    Hope this helps.
    Best regards,
    Crystal

  • What are  the tables and fields  in fico & sd module

    what are  the tables and fields  in fico & sd module

    Hi,
    <b> Sales and Distribution:</b>
    Customers KNA1 General Data
    KNB1 Customer Master – Co. Code Data (payment method, reconciliation acct)
    KNB4 Customer Payment History
    KNB5 Customer Master – Dunning info
    KNBK Customer Master Bank Data
    KNKA Customer Master Credit Mgmt.
    KNKK Customer Master Credit Control Area Data (credit limits)
    KNVV Sales Area Data (terms, order probability)
    KNVI Customer Master Tax Indicator
    KNVP Partner Function key
    KNVD Output type
    KNVS Customer Master Ship Data
    KLPA Customer/Vendor Link
    Sales Documents VBAKUK VBAK + VBUK
    VBUK Header Status and Administrative Data
    VBAK Sales Document – Header Data
    VBKD Sales Document – Business Data
    VBUP Item Status VBAP Sales Document – Item Data
    VBPA Partners
    VBFA Document Flow
    VBEP Sales Document Schedule Line
    VBBE Sales Requirements: Individual Records
    SD Delivery DocumeLIPS Delivery Document item data, includes referencing PO
    LIKP Delivery Document Header data
    Billing Document VBRK Billing Document Header
    VBRP Billing Document Item
    SD Shipping Unit VEKP Shipping Unit Item (Content)
    VEPO Shipping Unit Header
    <b>Financial Accounting</b>
    FBAS             Financial Accounting “Basis”
    BKPF             Accounting Document Header              BUKRS / BELNR / GJAHR
    BSEG             Accounting Document Segment             BUKRS / BELNR / GJAHR / BUZEI
    BSIP             Index for Vendor Validation of Double   BUKRS / LIFNR / WAERS / BLDAT /
                     Documents                               XBLNR / WRBTR / BELNR / GJAHR / BUZEI
    BVOR             Inter Company Posting Procedure         BVORG / BUKRS / GJAHR / BELNR
    EBKPF            Accounting Document Header (docs from   GLSBK / BELNR / GJHAR / GLEBK
                     External Systems)
    FRUN             Run Date of a Program                   PRGID
    KLPA             Customer / Vendor Linking               NKULI / NBUKR / NKOAR / PNTYP
                                                             / VKULI / VBUKR / VKOAR
    KNB4             Customer Payment History                KUNNR / BUKRS
    KNB5             Customer Master Dunning Data            KUNNR / BUKRS / MABER
    KNBK             Customer Master Bank Details            KUNNR / BANKS / BANKL / BANKN
    KNC1             Customer Master Transaction Figures     KUNNR / BUKRS / GJHAR
    KNC3             Customer Master Special GL Transactions KUNNR / BUKRS / GJAHR / SHBKZ
                     Figures
    LFB5             Vendor Master Dunning Data              LIFNR / BUKRS / MABER
    LFBK             Vendor Master Bank Details              LIFNR / BANKS / BANKL / BANKN
    LFC1             Vendor Master Transaction Figures       LIFNR / BUKRS / GJHAR
    LFC3             Vendor Master Special GL Transactions   LIFNR / BUKRS / GJHAR / SHBKZ
                     Figures
    VBKPF            Document Header for Document Parking    AUSBK / BUKRS / BELNR / GJHAR
    FBASCORE         Financial Accounting General Services “Basis”
    KNB1             Customer Master (Company Code)          KUNNR / BUKRS
    LFA1             Vendor Master (General Section)         LIFNR
    LFB1             Vendor Master (company Code Section)    LIFNR / BUKRS
    SKA1             G/L Account Master (Chart of Accounts)  KTOPL / SAKNR
    SKAT             G/L Account Master (Chart of Accounts – SPRAS / KTOPL / SAKNR
                     Description)
    MAHNS            Accounts Blocked by Dunning Selection   KOART / BUKRS / KONKO / MABER
    MHNK             Dunning Data (Account Entries)          LAUFD / LAUFI / KOART / BUKRS /
                                                             KUNNR / LIFNR / CPDKY / SKNRZE /
                                                             SMABER / SMAHSK / BUSAB
    FI-GL-GL (FBS)   General Ledger Accounting: Basic Functions- G/L Accounts
    SKAS             G/L Account Master (Chart of Accounts – SPRAS / KTOPL / SAKNR / SCHLW
                     Key Word list)
    SKB1             G/L Account Master (Company Code)       BUKRS / SAKNR
    FI-GL-GL (FBSC)  General Ledger Accounting: Basic
                     Functions - R/3 Customizing for G/L Accounts
    FIGLREP          Settings for G/L Posting Reports        MANDT
    TSAKR            Create G/L account with reference       BUKRS / SAKNR
    FI-GL-GL (FFE)   General Ledger Accounting: Basic
                     Functions - Fast Data Entry
    KOMU             Account Assignment Templates for G/L    KMNAM / KMZEI
                     Account items
    FI-AR-AR (FBD)   Accounts Receivable: Basic Functions - Customers
    KNKA             Customer Master Credit Management :     KUNNR
                     Central Data
    KNKK             Customer Master Credit Management :     KUNNR / KKBER
                     Control Area Data
    KNKKF1           Credit Management : FI Status data      LOGSYS / KUNNR / KKBER / REGUL
    RFRR             Accounting Data – A/R and A/P           RELID / SRTFD / SRTF2
                     Information System
    FI-BL-PT         Bank Accounting: Payment (BFIBL_CHECK_D)  Transactions – General Sections
    PAYR             Payment Medium File                     ZBUKR / HBKID / HKTID / RZAWE /
                                                             CHECT
    PCEC             Pre-numbered Check                      ZBUKR / HBKID / HKTID / STAPL
    FI-BL-PT-AP(FMZA)Bank Accounting: Payment Transactions – Automatic Payments
    F111G            Global Settings for Payment Program for MANDT
                     Payment Requests
    FDZA             Cash Management Line Items in Payment   KEYNO
                     Requests
    PAYRQ            Payment Requests                        KEYNO
    Hope this solves your concern...
    Regards,
    Habeeb
    Assign points if helpful

Maybe you are looking for