PO history category

Hi Consultant,
I would like to know the difference between DPyt and AnzV. Actually our user perform the down payment clearing by using the same method for two downpayment document posted for the same PO, but the clearing document appear under different category. Pls advise.
Thanks & regards,
Loi

Hi,
Yes the PO history short text for down payment and down payment clearing are different.
F-47:Down payment :DPyt
F-54:Down Payt Clearing :AnzV

Similar Messages

  • PO History Data

    Hi Folks,
    I have a problem in selecting the PO hitstory data.For a PO there are two bewtp for 0010 and 0020 item.But I am getting only one BEWTP not both.
    Moreover at the time of filtering the internal table w.r.t to BEWTP it is not checking for itfinal-bewtp NE 'E'.
    Kindly let me know where I am going wrong.
    REPORT  ZMM                           .
    *Tables.
    TABLES : ekbe,
             rbkp,
             rseg,
             bkpf,
             bset,
             lfa1,
             makt.
    *Declaration for ALV.
    TYPE-POOLS: slis.
    DATA : ITFIELDCAT TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE.
    DATA : ITREPID TYPE SY-REPID.
    ITREPID = SY-REPID.
    DATA : ITEVENT TYPE SLIS_T_EVENT.
    DATA : ITLISTHEADER TYPE SLIS_T_LISTHEADER.
    DATA : WALISTHEADER LIKE LINE OF ITLISTHEADER.
    DATA : ITLAYOUT TYPE SLIS_LAYOUT_ALV.
    DATA : TOP TYPE SLIS_FORMNAME.
    DATA : ITSORT TYPE SLIS_T_SORTINFO_ALV WITH HEADER LINE.
    DATA : ITSORT1 TYPE SLIS_SORTINFO_ALV.
    DATA : ITPRINTPARAMS TYPE SLIS_PRINT_ALV.
    DATA : ITVARIANT TYPE DISVARIANT.
    DATA : DATE1(15) TYPE C,
           DATE2(15) TYPE C,
           STRING1(65) TYPE C,
           TITLE(65) TYPE C,
           LFBNR LIKE RSEG-LFBNR,
           BEWTP LIKE EKBE-BEWTP.
    *Internal table Declarations.
    TYPES: BEGIN OF ty_itfinal,
              SL_NO   TYPE sy-tabix,     " FOR SERIAL No.
              BELNR   TYPE rbkp-belnr,   " Material Doc. No.
              BUDAT   TYPE rbkp-budat,   " Posting Date in the Document
              LIFNR   TYPE rbkp-lifnr,   " Vendor Code
              XBLNR   TYPE rbkp-xblnr,   " Supplier Document Number
              BLDAT   TYPE rbkp-bldat,   " Document Date
              KURSF   TYPE rbkp-kursf,   "
              BUZEI   TYPE rseg-buzei,   " miro line item
              EBELN   TYPE rseg-ebeln,   " po no
              EBELP   TYPE rseg-ebelp,   " PO line item
              MATNR   TYPE rseg-matnr,   " part no
              BWTAR   TYPE rseg-bwtar,   " valuation type
              MENGE   TYPE rseg-menge,   " quantity
              WRBTR   TYPE rseg-wrbtr,   " value of goods
              SHKZG   TYPE rseg-SHKZG,  " DEBIT/CREDIT
              LFBNR   TYPE rseg-lfbnr,   "
              WRBTR_R TYPE rseg-wrbtr,   " Rate
              WRBTR_V TYPE rseg-wrbtr,   " Value of Goods
              BEWTP   TYPE ekbe-bewtp,   " PO history category
              BUDAT1  TYPE ekbe-budat,   "
              HWSTE_C TYPE bset-hwste,   " ED/CVD(Tax Amount in Local Currency)
              HWSTE_E TYPE bset-hwste,   " E.Cess(Tax Amount in Local Currency)
              HWSTE_S TYPE bset-hwste,   " Snhe.Cess(Tax Amount in Local Currency)
              ACCNO   TYPE bkpf-belnr,   "
              BELNR1  TYPE BKPF-BELNR,
              AWKEY   TYPE BKPF-AWKEY,
              NAME1   TYPE lfa1-name1,   " vendor name
              MAKTX   TYPE makt-maktx,   " Material Description
           END OF TY_ITFINAL.
    DATA: ITFINAL TYPE TY_ITFINAL OCCURS 0 WITH HEADER LINE.
    TYPES : BEGIN OF TY_ITAB1,
              BELNR   LIKE rbkp-belnr,    " Material Doc. No.
              BUDAT   LIKE rbkp-budat,    " Posting Date in the Document
              LIFNR   LIKE rbkp-lifnr,    " Vendor Code
              XBLNR   LIKE rbkp-xblnr,    " Supplier Document Number
              BLDAT   LIKE rbkp-bldat,    " Document Date
              KURSF   LIKE rbkp-kursf,    " Ex.Rate
           END OF TY_ITAB1.
    DATA :ITAB1 TYPE TY_ITAB1 OCCURS 0 WITH HEADER LINE.
    TYPES: BEGIN OF TY_ITAB3,
           BELNR1 TYPE BKPF-BELNR,
           AWKEY  TYPE BKPF-AWKEY,
           ACCNO TYPE BKPF-BELNR,
           HWSTE_X TYPE BSET-HWSTE,
           HWSTE_Y TYPE BSET-HWSTE,
           HWSTE_Z TYPE BSET-HWSTE,
           END OF TY_ITAB3.
    DATA:ITAB3 TYPE TY_ITAB3 OCCURS 0 WITH HEADER LINE.
    TYPES: BEGIN OF TY_ITAB4,
           BELNR1  TYPE BKPF-BELNR,
           AWKEY   TYPE BKPF-AWKEY,
           HWSTE_X TYPE BSET-HWSTE,
           HWSTE_Y TYPE BSET-HWSTE,
           HWSTE_Z TYPE BSET-HWSTE,
           hwste_F TYPE BSET-HWSTE,
           END OF TY_ITAB4.
    DATA:ITAB4 TYPE TY_ITAB4 OCCURS 0 WITH HEADER LINE.
    *Selection Screen
    SELECTION-SCREEN BEGIN OF BLOCK block1 WITH FRAME TITLE text-001.
    PARAMETERS:     P_BUKRS LIKE RBKP-BUKRS OBLIGATORY.
    PARAMETERS:     P_WERKS LIKE RSEG-WERKS OBLIGATORY.
    SELECT-OPTIONS: S_BUDAT FOR  RBKP-BUDAT OBLIGATORY.
    PARAMETERS    : P_GJAHR LIKE RSEG-GJAHR OBLIGATORY.
    SELECTION-SCREEN END OF BLOCK block1.
    CONCATENATE  S_BUDAT-LOW6(2) '.' S_BUDAT-LOW4(2) '.' S_BUDAT-LOW+0(4) INTO DATE1.
    CONCATENATE  S_BUDAT-HIGH6(2) '.' S_BUDAT-HIGH4(2) '.' S_BUDAT-HIGH+0(4) INTO DATE2.
    PERFORM GETDATA.
    PERFORM ALV.
    *&      Form  GETDATA
          text
    -->  p1        text
    <--  p2        text
    FORM GETDATA.
    *Invoice Header
      SELECT BELNR
             BUDAT
             LIFNR
             XBLNR
             BLDAT
             KURSF
             FROM RBKP
             INTO TABLE ITAB1
             WHERE GJAHR = P_GJAHR.
      IF SY-SUBRC NE 0.
      MESSAGE 'No Data.' TYPE 'S'.
      ELSE.
    *Filtering the internal table w.r.t to BUDAT.
      LOOP AT ITAB1.
          IF ITAB1-BUDAT NOT IN S_BUDAT.
          DELETE itab1.
          ENDIF.
      ENDLOOP.
      ENDIF.
    *Invoice Item.
      LOOP AT ITAB1.
        MOVE-CORRESPONDING ITAB1 TO ITFINAL.
        SELECT BUZEI
               EBELN
               EBELP
               MATNR
               BWTAR
               MENGE
               WRBTR
               SHKZG
               LFBNR
               FROM  RSEG INTO CORRESPONDING FIELDS OF ITFINAL
               WHERE BELNR = ITAB1-BELNR AND
                     GJAHR = P_GJAHR.
        ENDSELECT.
    *Vendor Details.
        SELECT name1
               FROM lfa1 INTO itfinal-name1
               WHERE lifnr = itfinal-lifnr.
        ENDSELECT.
    *Material Description.
        SELECT maktx
               FROM makt INTO itfinal-maktx
               WHERE matnr = itfinal-matnr.
        ENDSELECT.
    APPEND ITFINAL.
    clear itfinal.
    ENDLOOP.
    <b>LOOP AT ITFINAL.
    SELECT BEWTP
           FROM EKBE
           INTO BEWTP                              "CORRESPONDING FIELDS OF ITFINAL
           WHERE EBELN = ITFINAL-EBELN AND
                 EBELP = ITFINAL-EBELP.
    MOVE BEWTP TO ITFINAL-BEWTP.</b>
    ENDSELECT.
    MODIFY ITFINAL.
    ENDLOOP.
    LOOP AT ITFINAL.
    IF ITFINAL-LFBNR IS INITIAL.
    SELECT SINGLE BELNR
                   FROM EKBE INTO (LFBNR)
            WHERE EBELN = ITFINAL-EBELN AND
                  EBELP = ITFINAL-EBELP.
    MOVE LFBNR TO ITFINAL-LFBNR.
    MODIFY ITFINAL.
    ENDIF.
    ENDLOOP.
    <b>LOOP AT ITFINAL.
    IF ITFINAL-SHKZG NE 'S' AND
       ITFINAL-BEWTP NE 'E'.
    DELETE ITFINAL.
    ENDIF.
    ENDLOOP.</b>
    *Tax Amount.
    *Accounting Doc.No.
    SELECT  BELNR
             AWKEY
             FROM bkpf INTO TABLE ITAB3
             WHERE blart = 'RE' AND
             GJAHR = P_GJAHR AND
             BUKRS = P_BUKRS AND
             BUDAT IN S_BUDAT.
    *Excise Duty and Ed.Cess.
    clear itab3.
    LOOP AT ITAB3.
    move-corresponding itab3 to itab4.
    SELECT single HWSTE
           FROM BSET INTO (ITAB4-hwste_x)
           WHERE BELNR = ITab3-BELNR1 AND
                     GJAHR = P_GJAHR AND
                     BUKRS = P_BUKRS and
                     KSCHL = 'JMO1'.
    IF ITAB4-HWSTE_X IS INITIAL.
    SELECT single HWSTE
            FROM BSET INTO (ITab4-HWSTE_X)
             WHERE BELNR = ITab3-BELNR1 AND
             BUKRS = P_BUKRS AND
             GJAHR = P_GJAHR AND
             KSCHL = 'JMO2'.
    ENDIF.
    SELECT SINGLE HWSTE
           FROM BSET INTO (ITAB4-HWSTE_Y)
           WHERE BELNR = ITAB3-BELNR1 AND
           GJAHR = P_GJAHR AND
           BUKRS = P_BUKRS AND
           KSCHL = 'JEC1'.
    IF ITAB4-HWSTE_Y IS INITIAL.
    SELECT SINGLE HWSTE
           FROM BSET INTO (ITAB4-HWSTE_Y)
           WHERE BELNR = ITAB3-BELNR1 AND
           GJAHR = P_GJAHR AND
           BUKRS = P_BUKRS AND
           KSCHL = 'JEC2'.
    ENDIF.
    ITAB4-HWSTE_Z = ( ITAB4-HWSTE_Y / 3 ) * 2.
    ITAB4-HWSTE_F = ITAB4-HWSTE_Y - ITAB4-HWSTE_Z.
    APPEND ITAB4.
    endloop.
    LOOP AT ITAB4.
    ITAB4-AWKEY = ITAB4-AWKEY+0(10).
    MODIFY ITAB4.
    ENDLOOP.
    loop at itfinal.
    read table itab4 with key awkey = itfinal-belnr.
    move itab4-hwste_x to itfinal-hwste_c.
    move itab4-hwste_z to itfinal-hwste_e.
    move itab4-hwste_f to itfinal-hwste_s.
    modify itfinal.
    endloop.
    *Filtering the Internal Table w.r.t P.O History Category.
      LOOP AT itfinal.
       IF itfinal-bewtp EQ 'E'.
         DELETE itfinal.
       ENDIF.
        itfinal-wrbtr_v = itfinal-wrbtr * itfinal-kursf.
        itfinal-wrbtr_r = itfinal-wrbtr_v / itfinal-menge.
        MODIFY itfinal.
      ENDLOOP.
    ENDFORM.                    " GETDATA
    *&      Form  ALV
          text
    -->  p1        text
    <--  p2        text
    FORM alv .
      IF itfinal[] IS INITIAL.
        MESSAGE 'No Values exist for the Selection.' TYPE 'S'.
        STOP.
      ENDIF.
      LOOP AT itfinal.
        itfinal-sl_no = sy-tabix.
        MODIFY itfinal.
      ENDLOOP.
      DEFINE j_fieldcat.
        itfieldcat-fieldname = &1.
        itfieldcat-col_pos = &2.
        itfieldcat-seltext_l = &3.
        itfieldcat-do_sum = &4.
        itfieldcat-outputlen = &5.
        itfieldcat-edit = &6.
        append itfieldcat to itfieldcat.
        clear itfieldcat.
      END-OF-DEFINITION.
      j_fieldcat 'SL_NO' ''   'SL. NO' '' 03 ''.
      j_fieldcat 'LFBNR' ''   'MATERIAL DOC.No.' '' 10 ''.
      j_fieldcat 'BUDAT' ''   'POSTING DATE.' '' 08 ''.
      j_fieldcat 'LIFNR' ''   'VENDOR' '' 10 ''.
      j_fieldcat 'NAME1' ''   'VENDOR NAME.'  '' 35  ''.
      j_fieldcat 'XBLNR' ''   'SUPPLIER DOC.No.' ' ' 10 ''  .
      j_fieldcat 'BLDAT' ''   'ACCOUNTING DOC.DATE' '' 08 ''.
      j_fieldcat 'MATNR' ''   'PART No.' '' 18 ''.
      j_fieldcat 'MAKTX' ''   'DESCRIPTION' '' 40 '' .
      j_fieldcat 'MENGE' ''   'QUANTITY RECEIVED' '' 08 ''.
      j_fieldcat 'KURSF' ''   'ECHANGE RATE' '' 13 ''.
      j_fieldcat 'WRBTR_R' '' 'RATE' '' 13 ''.
      j_fieldcat 'WRBTR_V' '' 'VALUE OF GOODS' '' 13  ''.
      j_fieldcat 'HWSTE_C' '' 'ED/CVD' '' 13 ''.
      j_fieldcat 'HWSTE_E' '' 'EDU.CESS' '' 13 ''.
      j_fieldcat 'HWSTE_S' '' 'S&HE.CESS' '' 13 ''.
      j_fieldcat 'BWTAR' ''   'VALUTAION TYPE' '' 10 ''.
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
          EXPORTING
            i_callback_program      = sy-repid
            is_layout               = itlayout
           i_callback_user_command =  ' '
            i_callback_top_of_page  = 'TOP'
            it_fieldcat             = itfieldcat[]
            i_save                  = 'A'
         is_variant              = ITVARIANT
            it_events               = itevent[]
         is_print                = ITPRINTPARAMS
            it_sort                 = itsort[]
          TABLES
            t_outtab                = itfinal
            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.                    " ALV
    *&      Form  TOP
        Top of page for ALV Report
    FORM top.
      CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
         EXPORTING
            i_list_type           = 0
         IMPORTING
            et_events             = itevent
    EXCEPTIONS
      LIST_TYPE_WRONG       = 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.
      string1 = 'Excise Input Details - IDC/PDC'.
      CONCATENATE string1 p_werks date1 'to' date2 INTO title SEPARATED BY space.
      walistheader-typ = 'H'.
      walistheader-info = title.
      APPEND walistheader TO itlistheader.
      CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
        EXPORTING
          it_list_commentary      = itlistheader
        I_LOGO                   = ''.
        I_END_OF_LIST_GRID       =
       ENDIF.
      CLEAR itlistheader.
    ENDIF.
    ENDFORM.                    "TOP
    K.Kiran.

    try to add
    AND buzei =  ITFINAL-BUZEI...
    A.

  • Suggestion for a trick i will do to overcome my problem with PO history

    Dear MM consultant,
    i will explain my problem first then i will tell u my trick to overcome this problem and plz give me ur suggestion about this trick it will success or not.
    first we have a PO with about 2100 items + 7 conditions for 5 vendors after we make goods reciept and make our first invoice for the first vendor the PO history for delivery cost table EKBZ will contain about 22000 records...
    the problem here my user first creat a park invoice then when he need to post this parked, MIRO take long time reach to 15 minutes and some time it through time out exception to open this parked invoice, after depuging i found it loop on the 2100 items and inside this loop it loop on the 22000 records of PO history table with small calculation it do 46200000 loop !!!!!!
    Function "ME_READ_COND_INVOICE"
    SELECT * FROM ekbz INTO TABLE l_bzt WHERE ebeln EQ i_ebeln.
        LOOP AT l_bzt ASSIGNING <ls_bzt>.
          PERFORM bzt_selektion USING <ls_bzt>.
        ENDLOOP.         
    i send this error to SAP and they said the only soultion for the PO history is to use PO aggregation in SAP Note 311089
    iin some reason i didn't success to do this PO aggregation i think its need other note or something else and olse if i do PO aggregation and i need to cancel any goods reciept i can't do this until i make PO disaggregation and it is other story....
    my solution here before post the parked invoice i run a custom program that update the EKBZ table to set PO#(ebeln) = PO#+'t' where DOC#(BELNR) <> parked inv, the result from this the above select statement will only return the records of this parked invoice not all the history and then after we post, i will run the program again and change all PO# to their right number
    what do u thing about this solution ??????

    >
    liza starozhilets wrote:
    > Hi All !
    > I have a problem with PO History for Service Orders.
    > Value of field "Reference" ( ESSR-XBLNR ) from SES don't recorded to table EKBE.
    > So, I can't see this value in po history for po  history category 'D'.
    > Anyone know why?
    >
    > Thanks,
    > Liza
    It will be updated after invoice verification in p.o history.

  • How to Enable Delta for a Custom MM Purchase Order History ODS ???

    Hi all,
       We have a Customized MM Purchase Order History ODS with Full Update on Monthly basis. We want to enable the DELTA for this ODS and how can I proceed, PLEASE.
    Please find the Key Figures and Data Fields in the below:
    ODS Structure for PO History ODS:     
    Key Fields
    SAP R/3 Field Description             Technical Name
    Purchasing Document Number             EKBE-EBELN
    Purchasing Line Item Number             EKBE-EBELP
    Sequential number of account assignment     EKBE-ZEKKN
    Transaction/event type, purchase order history     EKBE-VGABE
    FI Fiscal Period     FISCPER (from BKPF-GJAHR + BKPF-MONAT) in the format YYYYPPPP
    Number of Material Document             EKBE-BELNR
    Item in Material Document             EKBE-BUZEI
    Data Fields
    SAP R/3 Field Description     Technical Name
    Company Code     EKKO-BUKRS
    Plant     EKPO-EWERK
    Account Number of the Vendor                   EKKO-LIFNR
    Currency Key (of PO)                           EKKO-WAERS
    Deletion indicator in purchasing document     EKPO-LOEKZ
    Purchasing Document Date                   EKKO-BEDAT
    Responsible salesperson at vendor's office    EKKO-VERKF
    Vendor's telephone number                   EKKO-TELF1
    Incoterms (part 1)                           EKKO-INCO1
    Incoterms (part 2)                           EKKO-INCO2
    Short text                                   EKPO-TXZ01
    Material Group                                   EKPO-MATKL
    Material Number used by Vendor                   EKPO-IDNLF
    Expected Delivery Date                           EKET-EINDT
    Order unit (UOM)                           EKPO-BSTME
    Delivery Completed Indicator                   EKPO-ELIKZ
    Account assignment category                   EKPO-KNTTP
    Business Area (from PO)                           EKKN-GSBER
    Name of requisitioner/requester                   EKPO-AFNAM
    Purchasing organization                           EKKO-EKORG
    Purchasing group                           EKKO-BKGRP
    G/L Account Number (from PO)                   EKKN-SAKTO
    Cost Center (from PO)                           EKKN-KOSTL
    Work Breakdown Structure Element (WBS Element)     EKKN-PS_PSP_PNR
    Payment Terms (from PO)                           EKKO-ZTERM
    PO History Category                            EKBE-BEWTP
    Movement Type                        EKBE-BWART, MSEG-BWART
    Debit/Credit Indicator                     EKBE-SHKZG
    Reference from Invoice                     RBKP-XBLNR
    Payment Terms (from Invoice)             RBKP-ZTERM
    Posting Date      RBKP-BUDAT for IR, MKPF-BLDAT for GR
    Document Date      RBKP-BLDAT for Invoice, MKPF-BLDAT for GR
    Baseline Date     RBKP-ZFBDT
    FI Document Number      BKPF-BELNR, found through BKPF-AWKEY (IR # or GR # + fiscal year) or MSEG-LFBNR
    FI Dcoument Year          BKPF-GJAHR
    FI Document Type          BKPF-BLART
    Fiscal Variant     Hardcoded: S4
    Payment Method (invoice header level)     RBKP-ZLSCH
    GL Account (from GR/IR document)     MSEG-SAKTO for GR, DRSEG-SAKNR for IR (DRSEG is a structure)
    Cost Cener (from GR/IR document)     MSEG-KOSTL for GR, DRSEG-KOSTL (DRSEG is a structure) for IR
    Business Area (from GR/IR document)     MSEG-PARGB; not sure on IR
    Local Currency                             BKPF-HWAE
    Local Currency 2                     BKPF-HWAE2
    Amount posted to GR/IR Clearing (LC)     EKBE-AREWR
    Amount posted to GR/IR Clearing (GC)     EKBE-AREWR converted to Group Currecny found through BKPF-KURS2 if BKPF-HWAE2 is USD
    Purchase order quantity                           EKPO-BSTMG
    Price Unit (for PO)                           EKPO-PEINH
    Net price in purchasing document (in document currency)                                           EKPO-BPREI
    Amount in local currency; amount in document currency     MSEG-DMBTR for material document, RSEG-WRBTR for invoice
    Amount in local currency; amount in document currency (GC)     MSEG-DMBTR for material document,
            RSEG-WRBTR for invoice converted to USD
    Quantity      MSEG-ERFMG for material document;
                    RSEG-MENGE for Invoice
    Delivery costs' share of item value     RSEG-BNKAN
    Delivery costs' share of item value (GC)RSEG-BNKAN converted to USD
    Tax Amount (accrued)             BSEG-PSWBT
    Freight Amount (accrued)     BSEG-PSWBT
    Discount Amount (invoice header level)     RBKP-WSKTO
    Thanks.

    Hi Venkat,
    If you are using a Custom DataSource/Extractor the main problem is that you are collecting data from a lot of tables, so it is really difficult to determine a field for the delta.
    If for you is important only a change at Key Fields Table (EKBE) you can set the Generic Delta only on a field of this table (Doc Number or Position Number - Date - Timestamp).
    But if you are interested in all changes you have to determine a single field for every tables...
    I think it is really difficult to find a delta in all these tables.
    Maybe you can think to use in BW an ODS without Reporting BEx flag to determine Delta, and then introduce delta records in a Cube.
    Ciao.
    Riccardo.

  • Table for purchase order history

    Hi All,
    I am working on Import PO. I have created PO and I have done MIRO for planned delivery costs now when I am checking in EKBE table its not getting updated but I am able to see the same documents in PO history.
    Please tell me in which table planned delivery costs sit.
    Thanks in advance.
    Pavan

    hi,
    Check EKBZ with the PO history category as DCGR
    Regards
    Merwyn

  • Spro settings- Purchase order History

    Hi,
    In spro> MM> Purchasing-->Maintain Purchase Order History Categories.
    can somebody help me out how it works and the concept.
    I have maintained the entry there with Z- forwarding charges as long and short text.
    I donot understand where is the link in the system, how system will understand for what my entry Z is meant for.
    I tested the scenario but nothing happened in PO history with this my key. I have done MIGO and MIRO also. No update with my entry
    pl help how to make this functionality work, I feel this stand alone entry will not work, there must be some link with this entry or standard enteries some where which make the system to understand this?
    Edited by: Pallvi Dixit on May 7, 2008 5:18 PM

    In this step, you can maintain the purchase order history categories. You   
    can change the short and long texts for existing PO history categories.                                                                               
    The SAP System controls the display of the PO history using PO history      
    categories.                                                                               
    SAP recommendation                                                                               
    You should work with the standard SAP System supplied. In this case, you    
    need take no action.                                                                               
    Activities                                                                               
    Maintain the PO history category texts according to your requirements.                                                                               
    Notes on transport                                                                               
    You transport number range objects as follows:                                                                               
    Choose Interval -> Transport in the accounting document Number Range        
    screen.                                                                               
    All intervals for the selected number range object are deleted in the       
    target system first. After the import, only the intervals you export are    
    present. The number statuses are imported with their values at the time     
    of export.                                                                               
    Dependent tables are not transported or converted.

  • Purchase order history (Service PO)

    Hi,
    For Service PO, in purchase order history we are not getting the service entry sheet no in that field field is blank. why ?
    How to get it that
    Thanks
    Prasad

    Hi,
    Check the configuration
    SPRO>>Material Management>>Purchasing>>Statistics>>Maintain purchase order history categories.
    here PO history category As D, Short text as LERF and long text field as service Entry made this configuration and check it,
    Thanks & Regards,
    Andra

  • Reg PO history

    Hi,
           In EKBE table contains bewtp(PO history category). It contains the value of 'E'  'U',   'L',  but i couldn't understand, where can i get the full abbreviation of that field.

    Hi Thanus ,
      The details are available in the table T163C.
    How to find it is as below
    1. Check table for the feild BEWTP is T163B.
    2. Double click on T163B.
    3. In the table you dont find any feild for the description, so check for text table , path for that is Goto--> Text Table , this will take you to another table which will contain the description.
    Regards
    Arun

  • Purchase Order Open quantity calculation.

    Hi All..
    I would like your help in finding out the logic behind calculating the open quantity for a given line item of a purchase order.
    Iam aware that i should go to the EKBE table to see purchase order history. Can someone tell me what are all the conditions i need to consider to calculate the Open quantity.
    Iam able to give a value E to field BEWTP (Purchase Order History Category) in EKBE and for all the recieved records iam adding the quantity for movement type 101 and removing the quantity for movement type 102 that finally gives my total GR qty. Then iam doing Original PO qty - GR qty to get the Open qty.
    Let me know if this logic is wrong or else is there any other conditions to consider.
    Appreciate your help and will reward.
    THanks.

    subtract the PO quantity EKPO-MENGE with the delivery quantity field EKET-GLMNG
    Thanks
    Seshu

  • Report for Vendor Invoices Parked against Purchase Order

    Dear Team,
    I want a report or table name where I can get the Parked Invoices against a Purchase order.My requirement is to know which are the invoices which are parked against a PO since ME2M shows Invoices posted, so bye anyway is it possible to get such report.
    Regards,

    Invioces Parked
    Transaction: MIR6 & MIR5
    In MIR6, Select Held/Parked and execute to get the results. 
    In MIR5, Select Parked and execute to get the results. 
    Table: RBKP
    FieldS:
      Status  - RBSTAT
      ( A - Parked
        C - Parked and Held )
      Inv Doc - BELNR
      Fis year- GJAHR
    Invoices Parked against a PO
    Table: EKBE
    Enter the below:
    EBELN  - PO Number                    (Enter the PO Number(s))
    VGABE - Trans./event type         (Enter P - Invoice Parking)
    BEWTP - PO History Category     (Enter T - VRe)  This is optional

  • Report for Material Purchase

    Dear Sir,
    We need to dvelop a Report which can give information related to Material Purchases with following information like : Material Code , GR Number , Material Qty , Basic Value , Excise Duty (Basic) , CST , VAT etc .
    The above mentioned amount values are based as per the MIRO done .
    We request you to kindly guide us as which Tables , We should refer to get the above information .
    With Thanks and Rgds
    Sonia Agarwal

    Hi,
    From BKPF - AWKEY field(first 10 digits), you can get the data of the MIRO document number.
    Using  MIRO document number in the RSEG - BELNR field, you will get the details of the PO.
    Using the EKBE table you can get the PO history category wise details like, GR, IR, etc.,
    From EKKO and EKPO - PO header and line item details and tax code details.
    From BSET table you can get values of the tax.
    VVR

  • Report for MIGO done MIRO pending

    All SAP Gurus,
    We require the list of MIGO vs MIRO numbers, so that we can list out the MIGO for which MIRO have not been posted.
    Is there any report by which we can we can list the MIGO vs MIRO numbers.
    I'm aware of the fact that multiple MIRO can exist against a MIRO and vice versa.
    Regards,

    Check table EKBE. PO History Category 'E' for GR and 'Q' for Invoice.
    Hope this will also help you in future.
    Thnx
    Abhi

  • Report : invoice list

    hi
    In my function specs
    1) pass vbeln to vbpa, partner role = 'WE' & 'RG' and get the ship-to-party and payer (kunnr) from vbpa table for each billing document from the first line item of the invoice. if ship-to-party code is entered in selection screen the retain records where ship to party = ship to party in selection screen.
    2) if radio button is :
    "invoice list is generated " then
    check if invoice list is generated by passing vbeln to vbrl table where vbeln=vbrl-vbelen_vf.
    retain records which are not found in vbrl table.
    i already declared radio button i want coding for the above two points.
    thanks

    You may have to refer the following table -
    EKBE (Field - PO number, Material document field will give GR / IR number both with PO history category field with value E & Q, Posting date of Invoice, Material)
    You may have to use table EKPO/MARA for bringing the material group.
    You may have to use table EKKO for bringing the vandor field.
    I hope it clarifies your requirement.
    If it gices you valuable input...i would appreciate if you reward the answer with appropriate points.

  • Delivery Costs Entries(BEWTP = F/G/I/M) related to PO in EKBE

    Hello..
    I am new to MM and i have been checking the values of BEWTP field in EKBE.
    I could see the following values related to Delivery Costs.
    BEWTP = F / G / I / M
    Can any one tell me what does each stands for and How can i get an entry in EKBE for each of the above type?
    any help/input is really appreciated.
    Thanks,
    lt

    Hi,
       The description for the PO history category can be found from table T163B.
       The delivery cost related PO history will be updated in EKBZ table, not in EKBE.
       The PO history category depends on the condition category used against the delivery cost condition type.
    1. If the condition category is B (Delivery Cost)  for the delivery cost condition type (in M/06), then the delivery cost history will be updated as below:
    During GR (EKBZ-VGABE =1),, EKBZ - BEWTP = F
    During IR (EKBZ-VGABE =2),  EKBZ - BEWTP = M and or EKBZ - BWTYP = K , if its account assigned PO.
    2. If the condition category is blank or F (Delivery Cost) for the delivery cost condition type (in M/06), then the delivery cost history will be updated as below:
    During GR (EKBZ-VGABE =1), EKBZ - BEWTP = C
    During IR (EKBZ-VGABE =2),  no entry in EKBZ
    Regards,
    AKPT

  • BAPI for creation of PO

    Hi All,
    This is the first time that i have got to work with BAPI .
    Can some 1 tell me the BAPI to create a purchase order.
    And also is bapi same as using a function module in calling .
    How do we pass the parameters and get back the result.
    I got 1 bapi 'Z_CREATE_PURCHASE_ORDER_BAPI ' but im not able to make out how to pass the parameters and get back the result.
    Thanks
    Mustameer

    Please find the code below to change purchase order using bapi, in the same program replace BAPI_PO_CHANGE with BAPI_PO_CREATE1 and do your required coding it will work.
    Hope This Info Helps YOU.
    Reward Points If It Helps YOU.
    Regards,
    Raghav
    report zmm_po_year_end_mass_change
          no standard page heading
          message-id zh.
    *                  Database Table Declarations
    tables : ekko,      " Purchase order header
             ekpo,      " purchase order Line item
             t001w,     " Plant master table
             t024e.     " Purchasing organzation.
    *                  Type Pools Declarations
    type-pools: slis.       " GLOBALE TYPEN FÜR GENERISCHE LISTBAUSTEINE
    *                  Structure table declaration
    * For Prod order header data to be pass to BAPI funtion
    data : t_poheader like     bapimepoheader.
    * For Prod order header X data to be pass to BAPI funtion
    data:  t_poheaderx like    bapimepoheaderx.
    *                 BAPI INTERNAL TABLES
    * Internal table for Return table inported by BAPI FM
    data : i_return  like bapiret2 occurs 0 with header line.
    * Internal table for PO item return table inported by BAPI FM
    data : i_poitem  like bapimepoitem occurs 0 with header line.
    * Internal table for changing shceduled qty by BAPI FM
    data : i_schedule like bapimeposchedule occurs 0 with header line.
    * Internal table for changing shceduled qty by BAPI FM
    data : i_poschedulex like bapimeposchedulx occurs 0 with header line.
    * Internal table for PO item 'x' return table inported by BAPI FM
    data : i_poitemx like bapimepoitemx occurs 0 with header line.
    *                  Internal Table Declaration
    * Internal table for PO orders to be processed.
    data : begin of i_orders occurs 0,
               chk(1),
               ebeln like ekko-ebeln,      " Purchase order
               ebelp like ekpo-ebelp,      " Item No of Purchasing Document
               aedat like ekko-aedat,      " Creation Date
               erekz like ekpo-erekz,      " Final Invoice Indicator
               twrkz like ekpo-twrkz,      " partial Invoice indicator
               etenr like eket-etenr,      " Delivery schedule line counter
               menge like eket-menge,      " Scheduled quantity
               wemng like eket-wemng,      " Delivered quantity
               loekz like ekpo-loekz,      " Deletion Indicator
               inqty like ekbe-menge,      " Invoice quantity  (From i_ekbe)
               knttp like ekpo-knttp.      " Account assignemnt DEVK907644
    data : end of i_orders.
    * Internal table for EKBE data " DEVK907004
    data : begin of i_ekbe occurs 0,
               ebeln like ekko-ebeln,      " Purchase order
               ebelp like ekpo-ebelp,      " Item No of Purchasing Document
               zekkn like ekbe-zekkn,      "
               vgabe like ekbe-vgabe,      " Transaction/event type
               belnr like ekbe-belnr,
               buzei like ekbe-buzei,
               bewtp like ekbe-bewtp,      " PO history category
               menge like ekbe-menge,      " Invoicing quantity
               shkzg like ekbe-shkzg.      " DR / Cr Indicator
    data : end of i_ekbe.
    * Internal table for successful records
    data : begin of i_suc_req occurs 0.
            include structure i_orders.
    data : end of i_suc_req.
    * Internal table for Error records
    data : begin of i_err occurs 0.
            include structure i_orders.
    data : end of i_err.
    *                   Variables Declarations
    data :
           v_lines type i,              " For checking line items
           v_lines_2 type i,            " For checking line items
           v_index like sy-tabix,       " For internal table counter
           v_chk_color(2) type n,       " For color coding
           v_header(2)    type n,       " For top-of-page
           v_flag.
    *                   Constants Declaration
    *                  Selection - Screen
    selection-screen begin of block blk1 with frame.
    select-options :
      s_ebeln for ekko-ebeln ,    " Purchase order
      s_aedat for ekko-aedat obligatory,    " Creation date
      s_werks for ekpo-werks,               " Plant
      s_ekorg for ekko-ekorg.               " Purchasing org
    selection-screen end of block blk1.
    selection-screen begin of block prs with frame.
    parameters: p_report as checkbox default 'X'.
    selection-screen end of block prs.
    *                  Ranges Declaration
    ranges : s_knttp for ekpo-knttp. " Account assignment " DEVK907628
    *&********  E N D   O F   D A T A    D E C L A R A T I O N S  **********
    *&****  B E G I N N I N G    O F     P R O G R A M    L O G I C  *******
    *                  INITILIZATION
    initialization.
    *                  At selection Screen
    at selection-screen.
      perform check_inputs.
    *&                TOP OF PAGE
    top-of-page.
      if p_report eq 'X'.
        perform display_header.   " To display the header
      endif.
    *                  Start of selection
    start-of-selection.
    *  Extract orders
      perform extract_orders.
    * Extract EKBE Invoice qty
      perform extract_ekbe_inv_qty.
    * Extract Inv qty and make checkbox for each record
      perform po_to_be_changed.
      if p_report eq 'X'.
        set pf-status 'PROCESS'.
        perform display_orders_with_checkbox.
      else.
        perform bapi_process.              " BAPI Process
        perform display_success_records.   " Succesfull Records
        perform display_error_records.     " Error Records
      endif.
    *                  At User Command
    at user-command.
      case sy-ucomm.
        when 'PROC'.
          perform delete_orders.
          perform bapi_process.                " BAPI Process
          clear v_lines.
          describe table i_suc_req lines v_lines.
          clear v_lines_2.
          describe table i_err lines v_lines_2.
          if v_lines > 0 and v_lines_2 > 0.
            perform display_success_records.   " Succesfull Records
            perform display_error_records.     " Error Records
          elseif v_lines > 0 and v_lines_2 = 0.
            perform display_success_records.   " Succesfull Records
            message s007 with 'No error records found'.
          elseif v_lines = 0 and v_lines_2 > 0.
            perform display_error_records.   " Error Records
            message s007 with 'No Success records found'.
          elseif v_lines = 0 and v_lines_2 = 0.
            message i007 with 'No Records have been processed'.
            stop.
          endif.
        when 'EXIT'.
          leave to screen 0.
      endcase.
    *                  end of selection
    end-of-selection.
    *&      Form  check_inputs
    *       text
    *  -->  p1        text
    *  <--  p2        text
    form check_inputs.
    *  Purchase order validation
    *If PO is entered only then continue    "DEVK907080
      if not s_ebeln is  initial.
        select single ebeln from ekko
                into ekko-ebeln
                where ebeln in s_ebeln.
        if sy-subrc ne 0.
          message e007 with 'Please select valid Purchase order'.
        endif.
      endif.                                                    "DEVK907080
    * Plant Validation
      if not s_werks is initial.
        select single werks from t001w
               into t001w-werks
               where werks in s_werks.
        if sy-subrc ne 0.
          message e007 with 'Please select valid Plant'.
        endif.
      endif.
    * Purchasing Organization Validation
      if not s_ekorg is initial.
        select single ekorg from t024e
               into t024e-ekorg
               where ekorg in s_ekorg.
        if sy-subrc ne 0.
          message e007 with 'Please select valid Purchasing organization'.
        endif.
      endif.
    endform.                    " check_inputs
    *&      Form  extract_orders
    *       text
    *  -->  p1        text
    *  <--  p2        text
    form extract_orders.
    * Get Purchase order data from EKKO , EKPO and Scheduled Quantities
    * from EKET validating user input those orders which are having
    *          Account assignment = 'P'
    *     and  Purchasing group   = 'CON'
    *     and  Deletion Indicator NE 'X'.
    *these orders should not get extracted from these tables
    *" DEVK907628
    * the account assignment cat "Z" needs to be excluded
      refresh s_knttp[].
      s_knttp-sign    = 'I'.
      s_knttp-option  = 'EQ'.
      s_knttp-low     = 'P'.
      append s_knttp.
      clear s_knttp. " DEVK907644
      s_knttp-sign    = 'I'.
      s_knttp-option  = 'EQ'.
      s_knttp-low     = 'Z'.
      append s_knttp.
      clear s_knttp. " DEVK907644
      clear i_orders.
      refresh i_orders.
      select p~ebeln p~aedat                          " EKKO Data
             f~ebelp f~werks f~erekz f~twrkz f~knttp  " EKPO Data
             b~menge b~wemng b~etenr                  " EKET Data
      into   corresponding fields of table i_orders
      from   ( ( ekko as p
                 inner join ekpo  as f on p~ebeln = f~ebeln     )
                 inner join eket as  b on b~ebeln = f~ebeln  and
                                          b~ebelp = f~ebelp     )
      where p~ebeln  in  s_ebeln  and                " Purchase order
            p~aedat  in  s_aedat  and                " Creation Date
            p~ekorg  in  s_ekorg  and                " Purchasing Org
            p~ekgrp  ne  'CON'    and                " Purchasing group
            f~loekz  ne  'X'      and                " Deletion ind
            f~werks  in  s_werks  .                  " Plant
    *" DEVK907628 Start
    *        f~elikz  EQ 'X'       AND                " Delivery com indi
    *        f~erekz  EQ 'X'."     and                " Final Invoice indi
    * DEVK907644 Delete the reqs which are are having "P" and "Z".
      sort i_orders by ebeln ebelp knttp.
      delete i_orders where knttp in s_knttp.
      clear v_lines.
      describe table i_orders lines v_lines.
      if v_lines = 0.
        message i007 with 'No records found'.
        stop.
      endif.
    endform.                    " extract_orders
    *&      Form  PO_to_be_changed
    *       text
    *  -->  p1        text
    *  <--  p2        text
    form po_to_be_changed.
    * Calculate Invoiced quantity and create check box entries.
      clear v_index.
      sort i_orders by ebeln ebelp.
      loop at i_orders.
        v_index = v_index + 1.                                                     " WHY?????
    *    MOVE : 'X' TO i_orders-chk.                                               "CHECKS EACH RECORD,SO NOT REQD.
        loop at i_ekbe where ebeln = i_orders-ebeln
                       and   ebelp = i_orders-ebelp.
          if i_ekbe-shkzg = 'H'.                                                  "IF DEBIT,THEN MAKE QTY. NEGATIVE
            i_ekbe-menge = i_ekbe-menge * - 1.
          endif.
          i_orders-inqty = i_orders-inqty + i_ekbe-menge.
        endloop.
        modify i_orders index v_index transporting chk inqty.
      endloop.
    endform.                    " PO_to_be_changed
    *&      Form  bapi_process
    *       text
    *  -->  p1        text
    *  <--  p2        text
    form bapi_process.
      clear i_poitem. clear i_poitemx.
      refresh i_poitem. refresh i_poitemx.
      loop at i_orders where chk = 'X'.
    * Refreshing  and clearing all the the tables used in Bapi.DEVK907080
        clear:  i_return,i_poitem, i_poitemx,i_schedule,i_poschedulex.
        refresh:  i_return,i_poitem, i_poitemx,i_schedule,i_poschedulex.
    * End of Refreshing and clearing    DEVK907080
    * If Ordered qty for PO = 0 then delete the invoice no
        if  i_orders-wemng = 0.
          move : 'X'  to i_poitem-delete_ind.       " Deletion Ind
          move : 'X'  to i_poitemx-delete_ind.      " Deletion Ind
    *   !! start
          move : 'X'  to i_poitem-final_inv.        " Final invoice
          move : 'X' to i_poitem-no_more_gr.       " Delivery com ind
          move : 'X' to i_poitemx-final_inv.        " Final invoice
          move : 'X' to i_poitemx-no_more_gr.       " Delivery com ind
    *   !! end
    * If Ordered QTY more than 0
    *      and it is less than Scheduled qty
    *          then change the scheduled QTY = ordered qty
        elseif i_orders-wemng > 0 and i_orders-wemng < i_orders-menge.
          i_schedule-po_item = i_orders-ebelp.      " PO order
          i_poschedulex-po_item = i_orders-ebelp.   " PO order
          i_schedule-sched_line = i_orders-etenr.    " sched line item
          i_poschedulex-sched_line = i_orders-etenr. " sched line item
          i_schedule-quantity = i_orders-wemng.      " Changing sched qty
          i_poschedulex-quantity = i_orders-wemng.   " sched line item
          clear v_flag.
          v_flag = 'X'.
          i_orders-menge = i_schedule-quantity.
          append i_schedule. append i_poschedulex.
    *-------------------  Invoice qty calc -------------------*
    * Checks where Scheduled QTY = Deliverd QTY ----
    *-------------------  Invoice qty calc -------------------*
    *      in this case use invoiced QTY and Final invoice indicator
    *      to delete the item
        elseif i_orders-wemng = i_orders-menge.
    * if final invoice indicator is checked
    *      and Scheduled QTY = Invoice QTY then delete item
          if i_orders-erekz eq 'X'
                and i_orders-inqty = i_orders-menge.
            move : 'X'  to i_poitem-delete_ind.   " Deletion Ind
            move : 'X'  to i_poitemx-delete_ind.  " Deletion Ind
    *   !! start
          move : 'X'  to i_poitem-final_inv.        " Final invoice
          move : 'X' to i_poitem-no_more_gr.       " Delivery com ind
          move : 'X' to i_poitemx-final_inv.        " Final invoice
          move : 'X' to i_poitemx-no_more_gr.       " Delivery com ind
    *   !! end
    * If final invoice unchecked
    *        and scheduled = invoice qty, Do not delete item
          elseif i_orders-erekz eq ' '
                 and i_orders-inqty = i_orders-menge.
            continue.
    * if final partial invoice indicator checked then dont delete item
          elseif i_orders-twrkz = 'X'.
            move : ' '  to i_poitem-delete_ind.   " Deletion Ind
            move : ' '  to i_poitemx-delete_ind.  " Deletion Ind
    *   !! start
            move : ' '  to i_poitem-final_inv.        " Final invoice
            move : ' ' to i_poitem-no_more_gr.       " Delivery com ind
            move : ' ' to i_poitemx-final_inv.        " Final invoice
            move : ' ' to i_poitemx-no_more_gr.       " Delivery com ind
    *   !! end
    * if invoiced quantity = 0
    *        and final invoice indicator checked
          elseif i_orders-inqty = 0
                and i_orders-erekz = 'X'.
            move : 'X'  to i_poitem-delete_ind.   " Deletion Ind
            move : 'X'  to i_poitemx-delete_ind.  " Deletion Ind
    *   !! start
          move : 'X'  to i_poitem-final_inv.        " Final invoice
          move : 'X' to i_poitem-no_more_gr.       " Delivery com ind
          move : 'X' to i_poitemx-final_inv.        " Final invoice
          move : 'X' to i_poitemx-no_more_gr.       " Delivery com ind
    *   !! end
          else.
            continue.
          endif.
        endif.
    * BAPI will run for every Purchase order
        on change of i_orders-ebeln.
          move: i_orders-ebeln to t_poheader-po_number,    " Purchase number
                     'X'           to  t_poheaderx-po_number.  " Indicator
        endon.
        move : i_orders-ebelp    to i_poitem-po_item,     " Purchase order
               i_orders-ebelp    to i_poitemx-po_item.    " Line Item
        append i_poitem. append i_poitemx.
        clear i_return.
        refresh i_return.
        call function 'BAPI_PO_CHANGE'
             exporting
                  purchaseorder = i_orders-ebeln
                  poheader      = t_poheader
                  poheaderx     = t_poheaderx
             tables
                  return        = i_return
                  poitem        = i_poitem
                  poschedule    = i_schedule
                  poschedulex   = i_poschedulex
                  poitemx       = i_poitemx.
    * Save the deletion mark
        commit work." and wait.
        loop at i_return.
          if i_return-type eq 'S' or i_return-type eq 'I'
              or i_return-type eq 'W'.
            if v_flag ne 'X'.
            move : 'X'  to i_orders-loekz.            " Dele ind for disp it
            endif.
            move-corresponding i_orders to i_suc_req.
            append i_suc_req. clear i_suc_req.
          elseif i_return-type eq 'E'.
    *   Move error record into i_err for processing those manually
            move-corresponding i_orders to i_err.
            append i_err. clear i_err.
          endif.
        endloop.
      endloop.
    * Delete Duplicate Entries from Internal tables
      delete adjacent duplicates from i_suc_req comparing ebeln ebelp.
      delete adjacent duplicates from i_err comparing ebeln ebelp.
    endform.                    " bapi_process
    *&      Form  display_success_records
    *       text
    *  -->  p1        text
    *  <--  p2        text
    form display_success_records.
      write:/001 sy-uline(89).
      format intensified on.
      write:/001 sy-vline.
      format color col_heading.
      write:029 'Purchase Order Success Records'.
      write:089 sy-vline.
      format color col_background.
      write:/001 sy-uline(089).
      write:/001 sy-vline.
      format color col_heading.
    *  Display the field headings
      write: 001 sy-vline,
             003 'Pur Order',
             018 sy-vline,
             020 'Item No',
             027 sy-vline,
             029 'Creation Date',
             043  sy-vline,
             045 'Scheduled Qty',
             061  sy-vline,
             063 'Delivered Qty',
             079 sy-vline,
             081 'Dele Ind',      " Deletion Indicator
             089 sy-vline.
      format color off.
      loop at i_suc_req.
    *      To provide color codings.
        v_chk_color = sy-tabix mod 2.
        if v_chk_color = 0.
          format color col_normal.
        else.
          format color col_background.
        endif.
        write:/001 sy-vline,
               003 i_suc_req-ebeln ," Purchase order
               018 sy-vline,
               020 i_suc_req-ebelp ," Creation Date
               027 sy-vline,
               029 i_suc_req-aedat ," Item No of Purchasing Document
               043 sy-vline,
               045 i_suc_req-menge ," Scheduled quantity
               061 sy-vline,
               063 i_suc_req-wemng ," Delivered quantity
               079 sy-vline,
               081 i_suc_req-loekz, " Deletion Indicator
               089 sy-vline.
      endloop.
      write :/1 sy-uline(89).
    endform.                    " display_success_records
    *&      Form  display_error_records
    *       text
    *  -->  p1        text
    *  <--  p2        text
    form display_error_records.
      if v_lines > 0.
        skip 2.
      endif.
      write:/001 sy-uline(89).
      format intensified on.
      write:/001 sy-vline.
      format color col_heading.
      write:029 'Purchase Order Error Records'.
      write:089 sy-vline.
      format color col_background.
      write:/001 sy-uline(089).
      write:/001 sy-vline.
      format color col_heading.
    *  Display the field headings
      write: 001 sy-vline,
             003 'Pur Order',
             018 sy-vline,
             020 'Item No',
             027 sy-vline,
             029 'Creation Date',
             043  sy-vline,
             045 'Scheduled Qty',
             061  sy-vline,
             063 'Delivered Qty',
             079 sy-vline,
             081 'Del Ind',      " Deletion Indicator
             089 sy-vline.
      format color off.
      loop at i_err.
    *      To provide color codings.
        v_chk_color = sy-tabix mod 2.
        if v_chk_color = 0.
          format color col_normal.
        else.
          format color col_negative.
        endif.
        write:/001 sy-vline,
               003 i_err-ebeln ," Purchase order
               018 sy-vline,
               020 i_err-ebelp ," Creation Date
               027 sy-vline,
               029 i_err-aedat ," Item No of Purchasing Document
               043 sy-vline,
               045 i_err-menge ," Scheduled quantity
               061 sy-vline,
               063 i_err-wemng ," Delivered quantity
               079 sy-vline,
               081 i_err-loekz, " Deletion Indicator
               089 sy-vline.
      endloop.
      write :/1 sy-uline(89).
    endform.                    " display_error_records
    *&      Form  delete_orders
    *       text
    *  -->  p1        text
    *  <--  p2        text
    form delete_orders.
      clear v_index.
      loop at i_orders.
        v_index = sy-tabix + 5.
        read line v_index field value i_orders-chk.
        if i_orders-chk eq space.
          modify i_orders transporting chk.
        endif.
      endloop.
      delete i_orders where chk eq ' '.
      set pf-status 'PROCESS' excluding 'PROC'.
    endform.                    " delete_orders
    *&      Form  extract_ekbe_inv_qty
    *       text
    *  -->  p1        text
    *  <--  p2        text
    form extract_ekbe_inv_qty.
    * Get the invoicing qty.
      clear i_ekbe.
      refresh i_ekbe.
      if v_lines > 0.
    *    SELECT ebeln ebelp vgabe bewtp menge shkzg    " DEVK907004
        select * from ekbe              " DEVK907004
              into corresponding fields of table i_ekbe
              for all entries in i_orders
              where  ebeln = i_orders-ebeln      " Purchase order
              and    ebelp = i_orders-ebelp      " Purchase order Line item
              and    vgabe = '2'.                " Transaction/event type
        sort i_ekbe by ebeln ebelp.
      endif.
    endform.                    " extract_ekbe_inv_qty
    *&      Form  display_orders_with_checkbox
    *       text
    *  -->  p1        text
    *  <--  p2        text
    form display_orders_with_checkbox.
      loop at i_orders.
    *      To provide color codings.
        v_chk_color = sy-tabix mod 2.
        if v_chk_color = 0.
          format color col_normal.
        else.
          format color col_background.
        endif.
        write:/001 sy-vline,
               002 i_orders-chk as checkbox,
               005 sy-vline,
               007 i_orders-ebeln ," Purchase order
               018 sy-vline,
               020 i_orders-ebelp ," Creation Date
               027 sy-vline,
               029 i_orders-aedat ," Item No of Purchasing Document
               043 sy-vline,
               045 i_orders-menge ," Scheduled quantity
               061 sy-vline,
               063 i_orders-wemng ," Delivered quantity
               079 sy-vline.
      endloop.
      write :/1 sy-uline(79).
    endform.                    " display_orders_with_checkbox
    *&      Form  display_header
    *       text
    *  -->  p1        text
    *  <--  p2        text
    form display_header.
      write:/001 sy-uline(79).
      format intensified on.
      write:/001 sy-vline.
      format color col_heading.
      write:024 'Purchase Orders to be Processed'.
    *  text-011.       " 'Master Data Information' .
      write:079 sy-vline.
      format color col_background.
      write:/001 sy-uline(079).
      write:/001 sy-vline.
      format color col_heading.
    *  write:004 sy-vline.
    *  Display the field headings
      write: 001 sy-vline,
             002  'Chk',
             005 sy-vline,
             007 'PO Order',
             018 sy-vline,
             020 'Item No',
             027 sy-vline,
             029 'Creation Date',
             043  sy-vline,
             045 'Scheduled Qty',
             061  sy-vline,
             063 'Delivered Qty',
             079 sy-vline.
    *  WRITE:079 sy-vline.
      format color col_background.
      write:/001 sy-uline(079).
    endform.                    " display_header

Maybe you are looking for