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: 

service purchase order, with price 0.

Former Member
0 Kudos

Hi again,

I have tested to create or modify a purchase order using (BAPIs CREATE1 and CHANGE) using the FREE_ITEM flag, but it doesn't work. There is a SAP note that explain that is not possible.

Anybody know any way to uptade a service purchase order line with price 0,

Thanks

BR

Jorge

1 REPLY 1

former_member214131
Active Contributor
0 Kudos

hello,

please check with following code. this code works in SAP46C.


DATA: gs_ekpo TYPE ekpo.                            
DATA: gt_return TYPE TABLE OF bapiret2.             
DATA: gs_return TYPE bapiret2.                      
DATA: gt_bapimepoitem TYPE TABLE OF bapimepoitem.   
DATA: gt_bapimepoitemx TYPE TABLE OF bapimepoitemx. 
DATA: gs_bapimepoitem TYPE bapimepoitem.            
DATA: gs_bapimepoitemx TYPE bapimepoitemx.          

parameters: P_EBELN like ekpo-ebeln.
parameters: P_EBELP like ekpo-ebelp.
CLEAR: gs_ekpo,              
       gs_return,            
       gt_return[],          
       gs_bapimepoitem,      
       gs_bapimepoitemx,     
       gt_bapimepoitem[],    
       gt_bapimepoitemx[].   
SELECT SINGLE * FROM ekpo INTO gs_ekpo               
WHERE                                                
      ebeln = p_ebeln AND                     
      ebelp = p_ebelp.                          
IF sy-subrc = 0.                                     
  gs_bapimepoitem-po_item = gs_ekpo-ebelp.           
  gs_bapimepoitem-free_item = 'X'.                   
  APPEND gs_bapimepoitem TO gt_bapimepoitem.         
  gs_bapimepoitemx-po_item = gs_ekpo-ebelp.          
  gs_bapimepoitemx-free_item = 'X'.                  
  APPEND gs_bapimepoitemx TO gt_bapimepoitemx.       
  CALL FUNCTION 'BAPI_PO_CHANGE'                              
    EXPORTING                                                 
      purchaseorder                = gs_ekpo-ebeln            
*   POHEADER                     =                            
*   POHEADERX                    =                            
*   POADDRVENDOR                 =                            
*   TESTRUN                      =                            
*   MEMORY_UNCOMPLETE            =                            
*   MEMORY_COMPLETE              =                            
*   NO_MESSAGING                 =                            
*   NO_MESSAGE_REQ               =                            
*   NO_AUTHORITY                 =                            
*   NO_PRICE_FROM_PO             =                            
* IMPORTING                                                   
*   EXPHEADER                    =                            
   TABLES                                                     
     return                       = gt_return                 
     poitem                       = gt_bapimepoitem           
     poitemx                      = gt_bapimepoitemx          
*   POADDRDELIVERY               =                            
*   POSCHEDULE                   =                            
*   POSCHEDULEX                  =                            
*   POACCOUNT                    =                            
*   POACCOUNTPROFITSEGMENT       =                            
*   POACCOUNTX                   =                            
*   POCONDHEADER                 =                            
*   POCONDHEADERX                =                            
*   POCOND                       =                            
*   POCONDX                      =                            
*   POLIMITS                     =                            
*   POCONTRACTLIMITS             =                            
*   POSERVICES                   =                            
*   POSRVACCESSVALUES            =                            
*   POSERVICESTEXT               =                            
*   EXTENSIONIN                  =                            
*   EXTENSIONOUT                 =                            
*   POTEXTHEADER                 =                            
*   POTEXTITEM                   =                            
*   POPARTNER                    =                            
            .                                                 
  READ TABLE gt_return INTO gs_return WITH KEY type = 'E'.    
  IF sy-subrc EQ 0.                                           
*- errors                                                     
    WRITE:/ 'E', gs_ekpo-ebeln, gs_ekpo-ebelp, 'BAPI',        
    gs_return-message.                                        
  ELSE.                                                       
*- success                                                    
    IF p_test IS INITIAL.                                     
      CLEAR: gs_return,                                       
             gt_return[].                                     
      CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'     
 EXPORTING                                       
   WAIT          = 'X'                              
       IMPORTING                                  
         return        = gs_return.               

If you have made a single test in SE37; the update doesnot work as it needs a exclusive <b>commit work</b>.

Hope this helps.

Best Regards, Murugesh AS