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

BAPI FOR Deleting a Schedule Line Item from EKES and EKET tables

Former Member
0 Kudos

Dear All,

I would like to for deleting one of the line item from EKES (Po Confirmation ) and the respective line item from the EKET(PO Schedule Line Item Table).

Assume that am allowing the user to select the lineitem from zprogram screen and collecting the PO and Its LIne Item details in an internal table.

Can i Use

<b>BAPI_PO_Change</b> , if so , can anybody tell me the steps to follow to use this bapi for deleting the PO lineItems, since i m going to try BAPI for First time.

pls help me out

Message was edited by: Raja K.P

1 ACCEPTED SOLUTION

Former Member
0 Kudos

Hi raja ,

 loop at iekko1.
    w_index = sy-tabix.
    item-po_item   = itemx-po_item   = iekko1-ebelp.
    item-quantity  = iekko1-mng01.
    itemx-quantity = iekko1-mng01.
    if iekko1-wamng = iekko1-wemng.
    itemx-no_more_gr = item-no_more_gr = 'X'.
    else.
    itemx-no_more_gr = item-no_more_gr = ''.
    endif.
    append item.
    append itemx.
      clear return[].
      call function 'BAPI_PO_CHANGE'
           exporting
                purchaseorder = iekko1-ebeln
           tables
                return        = return
                poitem        = item
                poitemx       = itemx.
      if return[] is initial.
      commit work and wait.
      call function 'DEQUEUE_ALL'.

.

search for deletion fields which u have to mark 'X'.

before calling this BAPi u have to lock the PO by using ENQUEUE.

<b>

FU BAPI_PO_CHANGE
____________________________________________________
Text
Change purchase order

Functionality
Function module BAPI_PO_CHANGE enables you to change purchase orders. The Change method uses the technology behind the online transaction ME22N.

Alternatively, the IDoc type PORDCH1 is available. The data from this IDoc populates the interface parameters of the function module BAPI_PO_CHANGE.


Functionality in Detail
Authorization

When you create (activity 02) an Enjoy purchase order, the following authorization objects are checked:

M_BEST_BSA (document type in PO)

M_BEST_EKG (purchasing group in PO)

M_BEST_EKO (purchasing organization in PO)

M_BEST_WRK (plant in PO)


Controlling adoption of field values via X bar

For most tables, you can use your own parameters in the associated X bar (e.g. PoItemX) to determine whether fields are to be set initial, values inserted via the interface, or default values adopted from Customizing or master records, etc. (for example, it is not mandatory to adopt the material group from an underlying requisition - you can change it with the BAPI).

Transfer

Purchase order number
The PurchaseOrder field uniquely identifies a purchase order. This field must be populated in order to carry out the Change method.
Header data
The header data of the Enjoy purchase order is transferred in table PoHeader.
Item data
The item data of the Enjoy purchase order is stored in the tables PoItem (general item data). Changes regarding quantity and delivery date are to be made in the table PoSchedule.
Use the table PoAccount to change the account assignment information.
Services and limits
Changes to existing items cannot be carried out with the Change method. It is only possible to create new items.
Conditions
Conditions are transferred in the table PoCond; header conditions in the table PoCondHeader. A new price determination process can be initiated via the parameter CALCTYPE in the table PoItem.
Vendor and delivery address
The vendor address in the table PoAddrVendor and the delivery address in the table PoAddrDelivery can only be replaced by another address number that already exists in the system (table ADRC). Changes to address details can only be made using the method BAPI_ADDRESSORG_CHANGE.
Partner roles
You can change all partners except the partner role "vendor" via the table PoPartner.
Export/import data
Export/import data can be specified per item in the table PoExpImpItem. Foreign trade data can only be transferred as default data for new items. Changes to the export/import data of existing items are not possible.
Texts
Header and item texts can be transferred in the tables PoTextHeader and PoTextItem. Texts for services are imported in the table PoServicesText. Texts can only be replaced completely.
Version Management
You can make use of the Version Management facility via the table AllVersions.

Return
If the PO was changed successfully, the header and item tables are populated with the information from the PO.


Return messages

Messages are returned in the parameter Return. This also contains information as to whether interface data has been wrongly or probably wrongly (heuristical interface check) populated. If a PO has been successfully created, the PO number is also placed in the return table with the appropriate message.

Restrictions
With this function module, it is not possible to:

Create subcontracting components (you can only use existing ones)
Create configurations (you can only use existing ones)
Change message records (table NAST) and additional message data (this data can only be determined via the message determination facility (Customizing))
Attach documents to the purchase order
Change foreign trade data
Change service data
Change or reexplode BOMs
A firewall prevents the manipulation of data that is not changeable in Purchasing according to the business logic of the purchase order (e.g. PO number, vendor, etc.).

PO items with an invoicing plan cannot be created or changed using the BAPIs


In this connection, please refer to current information in Note 197958.

To change addresses with numbers from Business Address Services (cantral address management), please use the function module BAPI_ADDRESSORG_CHANGE.

To change variant configurations, please use the function module BAPI_UI_CHANGE. More information is available in the BAPI Explorer under the Logistics General node.

In the case of changes that are to be made via the BAPI_PO_CHANGE, a firewall first checks whether the relevant fields are changeable. This approach follows that of the online transaction. Here it is not possible to change the vendor or the document type, for example.



Example
Example of changes made to a purchase order with:

1. Change in header data
2. Change in item
3. Change in delivery schedule
4. Change in account assignment
5. Change in conditions
6. Change in partners

Parameter: PURCHASEORDER 4500049596


Parameter: POHEADER

PMNTTRMS = 0002 
PUR_GROUP = 002 


Parameter: POHEADERX

PMNTTRMS = X 
PUR_GROUP = X 


Parameter: POITEM

PO_ITEM = 00001 
CONF_CTRL = 0001 


Parameter: POITEMX

PO_ITEM = 00001 
PO_ITEMX = X 
CONF_CTRL =  X 


Parameter: POSCHEDULE

PO_ITEM = 00001 
SCHED_LINE = 0001 
QUANTITY = 10.000 
PO_ITEM = 00001 
SCHED_LINE = 0003 
DELETE_IND =  X 


Parameter: POSCHEDULEX

PO_ITEM =  00001 
SCHED_LINE =  0001 
PO_ITEMX =  X 
SCHED_LINEX =  X 
QUANTITY =  X 
PO_ITEM =  00001 
SCHED_LINE =  0003 
PO_ITEMX =  X 
SCHED_LINEX =  X 
DELETE_IND = X 


Parameter: POACCOUNT

PO_ITEM = 00001 
SERIAL_NO = 01 
GL_ACCOUNT = 0000400020 


Parameter: POACCOUNTX

PO_ITEM = 00001 
SERIAL_NO = 01 
PO_ITEMX = X 
SERIAL_NOX = X 
GL_ACCOUNT = X 


Parameter: POCOND

ITM_NUMBER = 000001 
COND_TYPE = RA02 
COND_VALUE = 2.110000000 
CURRENCY = % 
CHANGE_ID = U 


Parameter: POCONDX

ITM_NUMBER = 000001 
COND_ST_NO = 001 
ITM_NUMBERX = X 
COND_ST_NOX = X 
COND_TYPE = X 
COND_VALUE = X 
CURRENCY = X 
CHANGE_ID = X 


Parameter: POPARTNER

PARTNERDESC =  GS 
LANGU =  EN 
BUSPARTNO = 0000001000 


Help in the Case of Problems
1. Note 197958 lists answers to frequently asked questions (FAQs). (Note 499626 contains answers to FAQs relating to External Services Management.)
2. If you have detected an error in the function of a BAPI, kindly create a reproducible example in the test data directory in the Function Builder (transaction code SE37). Note 375886 tells you how to do this.
3. If the problem persists, please create a Customer Problem Message for the componente MM-PUR-PO-BAPI, and document the reproducible example where necessary.

Customer Enhancements
The following user exits (function modules) are available for the BAPI BAPI_PO_CREATE1:

EXIT_SAPL2012_001 (at start of BAPI)
EXIT_SAPL2012_003 (at end of BAPI)
The following user exits (function modules) are available for the BAPI BAPI BAPI_PO_CHANGE:

EXIT_SAPL2012_002 (at start of BAPI)
EXIT_SAPL2012_004 (at end of BAPI)
These exits belong to the enhancement SAPL2012 (see also transaction codes SMOD and CMOD).

There is also the option of populating customer-specific fields for header, item, or account assignment data via the parameter EXTENSIONIN.


Further Information
1. Note 197958 contains up-to-date information on the purchase order BAPIs.
2. If you test the BAPIs BAPI_PO_CREATE1 or BAPI_PO_CHANGE in the Function Builder (transaction code SE37), no database updates will be carried out. If you need this function, please take a look at Note 420646.
3. The BAPI BAPI_PO_GETDETAIL serves to read the details of a purchase order. The BAPI cannot read all details (e.g. conditions). However, you can use the BAPI BAPI_PO_CHANGE for this purpose if only the document number is populated and the initiator has change authorizations for purchase orders.
4. Frequently used BAPIs for purchase orders are BAPI_PO_CREATE, BAPI_PO_CREATE1, BAPI_PO_CHANGE, BAPI_PO_GETDETAIL, BAPI_PO_GETITEMS, BAPI_PO_GETITEMSREL, and BAPI_PO_GETRELINFO.
5. For more information on purchase orders, refer to the SAP library (under MM Purchasing -> Purchase Orders) or the Help for the Enjoy Purchase Order, or choose the path Tools -> ABAP Workbench -> Overview -> BAPI Explorer from the SAP menu.
Parameters
PURCHASEORDER
POHEADER
POHEADERX
POADDRVENDOR
TESTRUN
MEMORY_UNCOMPLETE
MEMORY_COMPLETE
POEXPIMPHEADER
POEXPIMPHEADERX
VERSIONS
NO_MESSAGING
NO_MESSAGE_REQ
NO_AUTHORITY
NO_PRICE_FROM_PO
EXPHEADER
EXPPOEXPIMPHEADER
RETURN
POITEM
POITEMX
POADDRDELIVERY
POSCHEDULE
POSCHEDULEX
POACCOUNT
POACCOUNTPROFITSEGMENT
POACCOUNTX
POCONDHEADER
POCONDHEADERX
POCOND
POCONDX
POLIMITS
POCONTRACTLIMITS
POSERVICES
POSRVACCESSVALUES
POSERVICESTEXT
EXTENSIONIN
EXTENSIONOUT
POEXPIMPITEM
POEXPIMPITEMX
POTEXTHEADER
POTEXTITEM
ALLVERSIONS
POPARTNER

Exceptions
Function Group
2012

</b>

regards

prabhu

Message was edited by: Prabhu Peram

2 REPLIES 2

Former Member
0 Kudos

Hi raja ,

 loop at iekko1.
    w_index = sy-tabix.
    item-po_item   = itemx-po_item   = iekko1-ebelp.
    item-quantity  = iekko1-mng01.
    itemx-quantity = iekko1-mng01.
    if iekko1-wamng = iekko1-wemng.
    itemx-no_more_gr = item-no_more_gr = 'X'.
    else.
    itemx-no_more_gr = item-no_more_gr = ''.
    endif.
    append item.
    append itemx.
      clear return[].
      call function 'BAPI_PO_CHANGE'
           exporting
                purchaseorder = iekko1-ebeln
           tables
                return        = return
                poitem        = item
                poitemx       = itemx.
      if return[] is initial.
      commit work and wait.
      call function 'DEQUEUE_ALL'.

.

search for deletion fields which u have to mark 'X'.

before calling this BAPi u have to lock the PO by using ENQUEUE.

<b>

FU BAPI_PO_CHANGE
____________________________________________________
Text
Change purchase order

Functionality
Function module BAPI_PO_CHANGE enables you to change purchase orders. The Change method uses the technology behind the online transaction ME22N.

Alternatively, the IDoc type PORDCH1 is available. The data from this IDoc populates the interface parameters of the function module BAPI_PO_CHANGE.


Functionality in Detail
Authorization

When you create (activity 02) an Enjoy purchase order, the following authorization objects are checked:

M_BEST_BSA (document type in PO)

M_BEST_EKG (purchasing group in PO)

M_BEST_EKO (purchasing organization in PO)

M_BEST_WRK (plant in PO)


Controlling adoption of field values via X bar

For most tables, you can use your own parameters in the associated X bar (e.g. PoItemX) to determine whether fields are to be set initial, values inserted via the interface, or default values adopted from Customizing or master records, etc. (for example, it is not mandatory to adopt the material group from an underlying requisition - you can change it with the BAPI).

Transfer

Purchase order number
The PurchaseOrder field uniquely identifies a purchase order. This field must be populated in order to carry out the Change method.
Header data
The header data of the Enjoy purchase order is transferred in table PoHeader.
Item data
The item data of the Enjoy purchase order is stored in the tables PoItem (general item data). Changes regarding quantity and delivery date are to be made in the table PoSchedule.
Use the table PoAccount to change the account assignment information.
Services and limits
Changes to existing items cannot be carried out with the Change method. It is only possible to create new items.
Conditions
Conditions are transferred in the table PoCond; header conditions in the table PoCondHeader. A new price determination process can be initiated via the parameter CALCTYPE in the table PoItem.
Vendor and delivery address
The vendor address in the table PoAddrVendor and the delivery address in the table PoAddrDelivery can only be replaced by another address number that already exists in the system (table ADRC). Changes to address details can only be made using the method BAPI_ADDRESSORG_CHANGE.
Partner roles
You can change all partners except the partner role "vendor" via the table PoPartner.
Export/import data
Export/import data can be specified per item in the table PoExpImpItem. Foreign trade data can only be transferred as default data for new items. Changes to the export/import data of existing items are not possible.
Texts
Header and item texts can be transferred in the tables PoTextHeader and PoTextItem. Texts for services are imported in the table PoServicesText. Texts can only be replaced completely.
Version Management
You can make use of the Version Management facility via the table AllVersions.

Return
If the PO was changed successfully, the header and item tables are populated with the information from the PO.


Return messages

Messages are returned in the parameter Return. This also contains information as to whether interface data has been wrongly or probably wrongly (heuristical interface check) populated. If a PO has been successfully created, the PO number is also placed in the return table with the appropriate message.

Restrictions
With this function module, it is not possible to:

Create subcontracting components (you can only use existing ones)
Create configurations (you can only use existing ones)
Change message records (table NAST) and additional message data (this data can only be determined via the message determination facility (Customizing))
Attach documents to the purchase order
Change foreign trade data
Change service data
Change or reexplode BOMs
A firewall prevents the manipulation of data that is not changeable in Purchasing according to the business logic of the purchase order (e.g. PO number, vendor, etc.).

PO items with an invoicing plan cannot be created or changed using the BAPIs


In this connection, please refer to current information in Note 197958.

To change addresses with numbers from Business Address Services (cantral address management), please use the function module BAPI_ADDRESSORG_CHANGE.

To change variant configurations, please use the function module BAPI_UI_CHANGE. More information is available in the BAPI Explorer under the Logistics General node.

In the case of changes that are to be made via the BAPI_PO_CHANGE, a firewall first checks whether the relevant fields are changeable. This approach follows that of the online transaction. Here it is not possible to change the vendor or the document type, for example.



Example
Example of changes made to a purchase order with:

1. Change in header data
2. Change in item
3. Change in delivery schedule
4. Change in account assignment
5. Change in conditions
6. Change in partners

Parameter: PURCHASEORDER 4500049596


Parameter: POHEADER

PMNTTRMS = 0002 
PUR_GROUP = 002 


Parameter: POHEADERX

PMNTTRMS = X 
PUR_GROUP = X 


Parameter: POITEM

PO_ITEM = 00001 
CONF_CTRL = 0001 


Parameter: POITEMX

PO_ITEM = 00001 
PO_ITEMX = X 
CONF_CTRL =  X 


Parameter: POSCHEDULE

PO_ITEM = 00001 
SCHED_LINE = 0001 
QUANTITY = 10.000 
PO_ITEM = 00001 
SCHED_LINE = 0003 
DELETE_IND =  X 


Parameter: POSCHEDULEX

PO_ITEM =  00001 
SCHED_LINE =  0001 
PO_ITEMX =  X 
SCHED_LINEX =  X 
QUANTITY =  X 
PO_ITEM =  00001 
SCHED_LINE =  0003 
PO_ITEMX =  X 
SCHED_LINEX =  X 
DELETE_IND = X 


Parameter: POACCOUNT

PO_ITEM = 00001 
SERIAL_NO = 01 
GL_ACCOUNT = 0000400020 


Parameter: POACCOUNTX

PO_ITEM = 00001 
SERIAL_NO = 01 
PO_ITEMX = X 
SERIAL_NOX = X 
GL_ACCOUNT = X 


Parameter: POCOND

ITM_NUMBER = 000001 
COND_TYPE = RA02 
COND_VALUE = 2.110000000 
CURRENCY = % 
CHANGE_ID = U 


Parameter: POCONDX

ITM_NUMBER = 000001 
COND_ST_NO = 001 
ITM_NUMBERX = X 
COND_ST_NOX = X 
COND_TYPE = X 
COND_VALUE = X 
CURRENCY = X 
CHANGE_ID = X 


Parameter: POPARTNER

PARTNERDESC =  GS 
LANGU =  EN 
BUSPARTNO = 0000001000 


Help in the Case of Problems
1. Note 197958 lists answers to frequently asked questions (FAQs). (Note 499626 contains answers to FAQs relating to External Services Management.)
2. If you have detected an error in the function of a BAPI, kindly create a reproducible example in the test data directory in the Function Builder (transaction code SE37). Note 375886 tells you how to do this.
3. If the problem persists, please create a Customer Problem Message for the componente MM-PUR-PO-BAPI, and document the reproducible example where necessary.

Customer Enhancements
The following user exits (function modules) are available for the BAPI BAPI_PO_CREATE1:

EXIT_SAPL2012_001 (at start of BAPI)
EXIT_SAPL2012_003 (at end of BAPI)
The following user exits (function modules) are available for the BAPI BAPI BAPI_PO_CHANGE:

EXIT_SAPL2012_002 (at start of BAPI)
EXIT_SAPL2012_004 (at end of BAPI)
These exits belong to the enhancement SAPL2012 (see also transaction codes SMOD and CMOD).

There is also the option of populating customer-specific fields for header, item, or account assignment data via the parameter EXTENSIONIN.


Further Information
1. Note 197958 contains up-to-date information on the purchase order BAPIs.
2. If you test the BAPIs BAPI_PO_CREATE1 or BAPI_PO_CHANGE in the Function Builder (transaction code SE37), no database updates will be carried out. If you need this function, please take a look at Note 420646.
3. The BAPI BAPI_PO_GETDETAIL serves to read the details of a purchase order. The BAPI cannot read all details (e.g. conditions). However, you can use the BAPI BAPI_PO_CHANGE for this purpose if only the document number is populated and the initiator has change authorizations for purchase orders.
4. Frequently used BAPIs for purchase orders are BAPI_PO_CREATE, BAPI_PO_CREATE1, BAPI_PO_CHANGE, BAPI_PO_GETDETAIL, BAPI_PO_GETITEMS, BAPI_PO_GETITEMSREL, and BAPI_PO_GETRELINFO.
5. For more information on purchase orders, refer to the SAP library (under MM Purchasing -> Purchase Orders) or the Help for the Enjoy Purchase Order, or choose the path Tools -> ABAP Workbench -> Overview -> BAPI Explorer from the SAP menu.
Parameters
PURCHASEORDER
POHEADER
POHEADERX
POADDRVENDOR
TESTRUN
MEMORY_UNCOMPLETE
MEMORY_COMPLETE
POEXPIMPHEADER
POEXPIMPHEADERX
VERSIONS
NO_MESSAGING
NO_MESSAGE_REQ
NO_AUTHORITY
NO_PRICE_FROM_PO
EXPHEADER
EXPPOEXPIMPHEADER
RETURN
POITEM
POITEMX
POADDRDELIVERY
POSCHEDULE
POSCHEDULEX
POACCOUNT
POACCOUNTPROFITSEGMENT
POACCOUNTX
POCONDHEADER
POCONDHEADERX
POCOND
POCONDX
POLIMITS
POCONTRACTLIMITS
POSERVICES
POSRVACCESSVALUES
POSERVICESTEXT
EXTENSIONIN
EXTENSIONOUT
POEXPIMPITEM
POEXPIMPITEMX
POTEXTHEADER
POTEXTITEM
ALLVERSIONS
POPARTNER

Exceptions
Function Group
2012

</b>

regards

prabhu

Message was edited by: Prabhu Peram

0 Kudos

DEAR Prabhu,

Pls find the structure of our PO(AFS) and

the internal table i m using.

Assume that,

PO number is '4500000219' - ebeln

PO Item is '10'.- ebelp

Grid Values as (maintained in EKET and EKES tables)

etenr|j_3asize |eindt |menge

-


0001 |001C158 |21.08.2006 |700

-


0002 |001C158 |22.08.2006 |300

-


If i need to delete one line item(say 0002 item of the grid) from the above details.

what should i do in the BAPI

so that the details get deleted from EKES and EKET,it need not delete from EKKO table since i m deleting only the grid level line item.

pls help.