Change MOT in purchase order using CIF Inbound user exit
Hello APO Experts,
Objective is to change start date of purchase order ( date at source location) in APO based on some date in R3.
Planning to bring R3 date using CIF Outboud user exit( CIFPUR01) in R3 and then further requirement is to a) calculate lead time in inbound user exit ( APOCF006) of purchase order in APO b) compare it with lead time of all available Means of Transport in that particular TLane and select one MOT say XX which matches that lead time c) Next part is to change existing MOT in the Purchase order and replace it with the new XX MOT.
For part c....I am wondering how can we change existing MOT in purchase order and replace it with a new one.Can it be achieved by the user exit APOCF006 in APO or something else is required.
Will appreciate your quick reply on this issue.
Thanks
Best Regards
Hi Nilesh
We have a similar requirement. I know its way long for you to remember but i would appreciate if you could share what did you do to achieve this.
Thanks
Abhishek Rai
Similar Messages
-
Purchase order output determination thru User exit
Hi,
We are trying to find a way to determine the output for PO while creation (me21n) or modification (me22n).
We do not want to maintain output condition records for each fax/print/email etc..cases.
Can we do below thru a user exit or any other method ?
While creating PO, an OA partner will be chosen, so instead of maintaining the output condition records,
- user exit can access to OA's vendor master record and read Standard Comm.Method in Address section.
- according to comm.method, the PO message should be determined..
i.e: if comm.method is Fax, then message should be sent to OA thru Fax.
can this be done thru an exit ?
Thanks and Regards,
OcalHi Stefan,
The steps are as follows:
Output of Purchase Order
1. Condition Table
SPRO > Material Management> Purchasing -> Message -> Output Control->Condition Tables->Define Condition Table for Purchase Order
Select:
Purchasing Doc. Type,
Purch. Organization,
Vendor
2. Access Sequences
SPRO -> Material Management-> Purchasing -> Message -> Output Control->Access Sequences->Define Condition Table for Purchase Order
3. Message Type
SPRO -> Material Management-> Purchasing -> Message -> Output Control->Message Types->Define Message Type for Purchase Order
*4. Message Determination Schemas*
4.1. Message Determination Schemas
SPRO -> Material Management-> Purchasing -> Message -> Output Control->Message Schema->Define Message Schema for Purchase Order-> Maintain Message Determination Schema
4.2. Assign Schema to Purchase Order
SPRO -> Material Management-> Purchasing -> Message -> Output Control->Message Schema->Define Message Schema for Purchase Order-> Assign Schema to Purchase Order
5. Partner Roles per Message Type
SPRO -> Material Management-> Purchasing -> Message -> Output Control-> Partner Roles per Message Type ->Define Partner Role for Purchase Order
6. Condition Record
Navigation Path: SAP Menu-> Logistics -> Material Management -> Purchasing-> Master data->Messages-> Purchase Order-> MN04-> Create
Now you create PO (ME21N) and save it. Go to ME22N and print the PO by giving output type.
Reward me if it helpful
ASHOK -
Stop Purchase Order creation via a user exit...
Hi all,
I have a requirement to display an error and hold the PO creation when a material in PO doesn't have a planned price. I used the enhancement MM06E005 and EXIT_SAPMM06E_012 within that. I checked the material planned price and passed an error message depending on the result. But me21n gives user a option of holding data instead of stopping on error message. Is there anyway of keeping users from saving POs under this condition?
Thanks
NaveenNaveen,
I think configuring RELEASE STRATEGIES is the solution for this. That way you can even control who can release the PR's and assign the authorizations only to some users.
The problem with the user exit, is that there is no clear cut condition when you want to create the PO and when you don't.
Regards,
Ravi
Message was edited by: Ravikumar Allampallam -
Creating a Purchase Order using ORDERS05 Idoc
Hi Experts,
I need to create a purchase order using ORDERS05 Idoc, with the data I am using a sales order is gettig created but I need to create a PO insted of SO.
Please let me know what is difference between a PO and SO while using ORDERS05. Also please let me know what are all the fields that needs to chaged in the Idoc.
Thanks,
SumaHi,
I'm looking at a similar problem, can we use ORDERS05 IDOC basic type to create a Purchase Order?
What is the inbound processing FM? I tried IDOC_INPUT_ORDRSP, but it seem to only allow changes to a PO, and not creation of a PO.
For IDOC_INPUT_ORDERS FM this one seem to only create Sales Orders?
Which inbound FM should i be using?
Regards. -
Creation of purchase order using bapi
hi gurus,
Can anyone give me an example of how to create purchase order using bapiHi use BAPI_PO_CREATE.. I have an eg. of changing a PO using BAPI. This is almost similar to create.. Go thru and let me know if u need more info..
Dont forget to use 'BAPI COMMIT' after the function call...
DATA:
*Update Short text, qty, net price, item no.,
*agreement no. and agreement line no.
it_po_item TYPE TABLE OF bapimepoitem,
*Select fields
it_po_item_x TYPE TABLE OF bapimepoitemx,
*Delivery date
it_po_schedule TYPE TABLE OF bapimeposchedule,
*Select fields
it_po_schedule_x TYPE TABLE OF bapimeposchedulx,
*Return parameters
it_return TYPE TABLE OF bapiret2,
*PO Account
it_po_account TYPE TABLE OF bapimepoaccount,
*Select fields
it_po_account_x TYPE TABLE OF bapimepoaccountx,
Condition Types
it_po_cond TYPE TABLE OF bapimepocond,
*Select fields
it_po_cond_x TYPE TABLE OF bapimepocondx,
it_po_text type table of BAPIMEPOTEXT.
Structures
DATA:
st_po_header TYPE bapimepoheader,
st_po_header_x TYPE bapimepoheaderx,
st_po_item LIKE LINE OF it_po_item,
st_po_item_x LIKE LINE OF it_po_item_x,
st_po_schedule LIKE LINE OF it_po_schedule,
st_po_schedule_x LIKE LINE OF it_po_schedule_x,
st_return TYPE bapiret2,
st_po_account LIKE LINE OF it_po_account,
st_po_account_x LIKE LINE OF it_po_account_x,
st_po_cond LIKE LINE OF it_po_cond,
st_po_cond_x LIKE LINE OF it_po_cond_x,
st_po_text like line of it_po_text.
Variables
DATA : po_number TYPE bapimepoheader-po_number,
w_item_no(10) TYPE n VALUE '1'.
START-OF-SELECTION.
test values
po_number = '94490'.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = po_number
IMPORTING
OUTPUT = po_number
st_po_item-po_item = w_item_no.
st_po_item-quantity = '00.000'.
st_po_item-delete_ind = 'X'.
st_po_item-short_text = 'ZMU-test1'.
st_po_item-agreement = '0060000128'.
st_po_item-agmt_item = '1'.
st_po_item-net_price = '1'.
st_po_item_x-po_item = w_item_no.
st_po_item_x-po_itemx = 'X'.
st_po_item_x-delete_ind = 'X'.
st_po_item_x-quantity = 'X'.
st_po_item_x-short_text = 'X'.
st_po_item_x-agreement = 'X'.
st_po_item_x-agmt_item = 'X'.
st_po_item_x-net_price = 'X'.
st_po_schedule-po_item = w_item_no.
st_po_schedule-delivery_date = '9/19/2008'.
st_po_schedule-quantity = '1'.
st_po_schedule_x-po_item = w_item_no.
st_po_schedule_x-po_itemx = 'X'.
st_po_schedule_x-delivery_date = 'X'.
st_po_schedule_x-quantity = 'X'.
st_po_cond-itm_number = w_item_no.
st_po_cond-cond_type = 'PB00'.
st_po_cond-cond_value = '1.000'.
st_po_cond-currency = 'USD'.
st_po_cond-change_id = 'U'.
st_po_cond_x-itm_number = w_item_no.
st_po_cond_x-itm_numberx = 'X'.
st_po_cond_x-cond_type = 'X'.
st_po_cond_x-cond_value = 'X'.
st_po_cond_x-currency = 'X'.
st_po_cond_x-change_id = 'X'.
st_po_text-PO_NUMBER = po_number.
st_po_text-PO_ITEM = w_item_no.
st_po_text-TEXT_LINE = 'MU_TEST1 MU_TEST2'.
APPEND:
st_po_item_x TO it_po_item_x,
st_po_item TO it_po_item.
st_po_schedule_x TO it_po_schedule_x,
st_po_schedule TO it_po_schedule,
st_po_cond TO it_po_cond,
st_po_cond_x TO it_po_cond_x,
st_po_text to it_po_text.
st_po_text-PO_NUMBER = po_number.
st_po_text-PO_ITEM = w_item_no.
st_po_text-TEXT_LINE = 'MU_TEST2'.
st_po_text-TEXT_FORM = '03'.
append st_po_text to it_po_text.
PERFORM function_call.
LOOP AT it_return INTO st_return.
WRITE:/ st_return-message, 'Message type =', st_return-type,/.
ENDLOOP.
REFRESH:
it_return,
it_po_item,
it_po_item_x,
it_po_cond,
it_po_cond_x.
PERFORM update_price.
WRITE:/ 'After update - Messages'.
LOOP AT it_return INTO st_return.
WRITE:/ st_return-message, 'Message type =', st_return-type,/.
ENDLOOP.
data: begin of test occurs 0,
f1,
end of test.
FORM function_call *
FORM function_call.
CALL FUNCTION 'BAPI_PO_CHANGE'
EXPORTING
purchaseorder = po_number
POHEADER =
POHEADERX =
POADDRVENDOR =
TESTRUN =
MEMORY_UNCOMPLETE =
MEMORY_COMPLETE =
IMPORTING
EXPHEADER =
TABLES
return = it_return
poitem = it_po_item
poitemx = it_po_item_x
POADDRDELIVERY =
poschedule = it_po_schedule
poschedulex = it_po_schedule_x
poaccount =
POACCOUNTPROFITSEGMENT =
poaccountx =
POCONDHEADER =
POCONDHEADERX =
pocond = it_po_cond
pocondx = it_po_cond_x
POLIMITS =
POCONTRACTLIMITS =
POSERVICES =
POSRVACCESSVALUES =
POSERVICESTEXT =
EXTENSIONIN =
EXTENSIONOUT =
POTEXTHEADER =
POTEXTITEM = it_po_text
POPARTNER =
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'
IMPORTING
return = st_return.
ENDFORM. -
BAdI or USEREXIT for changing data of purchase order header - ME21N
hello all,
I would like to ask you any way to change the field "reason for change" of the Purchase Order header.
I tried implementing the method PROCESS_HEADER of IF_EX_ME_PROCESS_PO_CUST
or changing reason_code of structure ekko in user exits EXIT_SAPMM06E_006 and EXIT_SAPMM06E_006
but it seems not to work.
How can i do?..
sap. v. ecc 6.0>
Shiva Kumar wrote:
> Use the user exit : EXIT_SAPMM06E_012: This is triggered on saving of a PO...and user can add validations etc in the exit...
> Cheers
It doesn't work...
>
Martin Voros wrote:
> you get reference to object IM_HEADER in method PROCESS_HEADER of BADI ME_PROCESS_PO_CUST. On this object you can call two methods - GET_DATA and SET_DATA. GET_DATA returns structure with type MEPOHEADER. You can change your field here and then call method SET_DATA with your modified structure. This should work.
> Cheers
..same thing for this solution...
the field that i want to change is RSCOD inside structure EREVGRID...it seems to have also get_data and set_data methods ( IF_REVISION_ITEM_DCM ),
but I don't know which BAdI to implement that has a object type ref to EREVGRID...
Edited by: E_M on May 13, 2008 11:08 AM -
Need to get the Last Changed date in Purchase Order.
Dear Experts,
I need to get a table which stores the last/ latest change for a Purchase Order.
For a Purcahse Order, last date Changes need to be captured , where there was some sort of activity associated with that order. That activity could be a goods receipt, an invoice payment or a change to the Purchase order.
Thanks in advance.Hi,
You can use EKPO-AEDAT.
Tables CDHDR and CDPOS contain what chnages you have made.
Thanks,
Ramakrishna
Message was edited by: Ramakrishna Prasad Ramisetti -
Want to create a multiple Purchase Order using one file source
I'm want to create a multiple purchase order using one source file. I want to read the file source create LINES in a purchase order and when the Vendor code changes I want to Add the purchase order and then create a new purchase order and Add LINES and so on.
Right now I get Item.no is missing [POR1.ItemCode][Line 2]Here is a code sample
Private Sub testcode()
Dim strOrdplanFile As String
Dim oLineRec As SAPbobsCOM.Recordset
Dim strLine As String = ""
Dim ItemName As String
Dim Quantity As String
Dim RequiredDate As String
Dim SupplierType As String
Dim ShipTo As String
Dim Vendor As String
Dim oPurchaseOrder As SAPbobsCOM.Documents
Dim bAddPOrder As Boolean = True
Dim bPurchase As Boolean = False
Dim sSQL As String
Dim iReads As Integer = 1
Dim iCurrentPurchaseNumber As Integer = 0
Dim bErrors As Boolean = False
Dim retCode As Double
oPurchaseOrder = oCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oPurchaseOrders)
strOrdplanFile = strFolderLocation & "ORDPLAN.TXT"
If File.Exists(strOrdplanFile) And FileLen(strOrdplanFile) > 0 Then
Dim sr As New StreamReader(strOrdplanFile)
strLine = sr.ReadLine()
txtPurRec.String = "0"
oFormStatus.Update()
Try
Do
Vendor = strLine.Substring(0, 8).Trim()
ShipTo = strLine.Substring(12, 8).Trim()
SupplierType = strLine.Substring(26, 1)
ItemName = strLine.Substring(27, 20).Trim()
Quantity = strLine.Substring(94, 8)
RequiredDate = strLine.Substring(206, 9)
oLineRec = oCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.BoRecordset)
sSQL = "SELECT PrcrmntMtd, CardCode FROM OITM WHERE ItemCode = '" & ItemName & "'"
oLineRec.DoQuery(sSQL)
If oLineRec.RecordCount() > 0 Then ' if it exists add the record
If oLineRec.Fields.Item(0).Value.ToString = "B" Then
If (bAddPOrder) Then
oPurchaseOrder.CardCode = Vendor
oPurchaseOrder.DocDueDate = RequiredDate
'Add first item to the purchase order
oPurchaseOrder.Lines.ItemCode = ItemName
oPurchaseOrder.Lines.WarehouseCode = ShipTo
oPurchaseOrder.Lines.Quantity = CDbl(Quantity)
oPurchaseOrder.Lines.Add()
bAddPOrder = False
bPurchase = True
iCurrentPurchaseNumber = iCurrentPurchaseNumber + 1
txtPurRec.String = "R: " & iReads & " W: " & iCurrentPurchaseNumber.ToString
oFormStatus.Update()
Else
'compare CardCode to make sure Vendor hasn't change
If (oPurchaseOrder.CardCode.CompareTo(Vendor) = 0) Then
'Add item to the purchase order
oPurchaseOrder.Lines.ItemCode = ItemName
oPurchaseOrder.Lines.WarehouseCode = ShipTo
oPurchaseOrder.Lines.Quantity = CDbl(Quantity)
oPurchaseOrder.Lines.Add()
Else
'vender code changed
retCode = oPurchaseOrder.Add()
If (retCode <> 0) Then
SBO_Application.MessageBox(oCompany.GetLastErrorDescription(), 1, "OK", "", "")
End If
oPurchaseOrder.CardCode = Vendor
oPurchaseOrder.DocDueDate = RequiredDate
'Add first item to the purchase order
oPurchaseOrder.Lines.ItemCode = ItemName
oPurchaseOrder.Lines.WarehouseCode = ShipTo
oPurchaseOrder.Lines.Quantity = CDbl(Quantity)
oPurchaseOrder.Lines.Add()
bAddPOrder = False
bPurchase = True
iCurrentPurchaseNumber = iCurrentPurchaseNumber + 1
txtPurRec.String = "R: " & iReads & " W: " & iCurrentPurchaseNumber.ToString
oFormStatus.Update()
End If
iReads = iReads + 1
End If 'new
strLine = sr.ReadLine()
End If
End If
Loop Until sr.EndOfStream
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Information)
End Try
If (bPurchase) Then
lRetCode = oPurchaseOrder.Add()
End If
sr.Close()
swLogFile.WriteLine("Purchase orders stored : " & iCurrentPurchaseNumber)
oPurchaseOrder = Nothing
End If
End Sub -
HOW TO CREATE PURCHASE ORDER USING BAPI
HI FRIENDS,
I HAVE URGENT REQUIREMNT ,TO CREATE PURCHASE ORDER USING BAPI.PLS HELP ON THIS.
UR'S
RAVIHi
See the sample code and do accordingly
REPORT zpo_bapi_purchord_tej.
DATA DECLARATIONS *
TYPE-POOLS slis.
TYPES: BEGIN OF ty_table,
v_legacy(8),
vendor TYPE bapimepoheader-vendor,
purch_org TYPE bapimepoheader-purch_org,
pur_group TYPE bapimepoheader-pur_group,
material TYPE bapimepoitem-material,
quantity(13),
delivery_date TYPE bapimeposchedule-delivery_date,
net_price(23),
plant TYPE bapimepoitem-plant,
END OF ty_table.
TYPES: BEGIN OF ty_alv,
v_legs(8),
success(10),
v_legf(8),
END OF ty_alv.
TYPES: BEGIN OF ty_alv1,
v_legf1(8),
v_msg(500),
END OF ty_alv1.
*-----Work area declarations.
DATA: x_table TYPE ty_table,
x_header TYPE bapimepoheader,
x_headerx TYPE bapimepoheaderx,
x_item TYPE bapimepoitem,
x_itemx TYPE bapimepoitemx,
x_sched TYPE bapimeposchedule,
x_schedx TYPE bapimeposchedulx,
x_commatable(255),
x_alv TYPE ty_alv,
x_alv1 TYPE ty_alv1,
x_alv2 TYPE ty_alv1.
*-----Internal table declarations.
DATA: it_table TYPE TABLE OF ty_table,
it_commatable LIKE TABLE OF x_commatable,
it_item TYPE TABLE OF bapimepoitem,
it_itemx TYPE TABLE OF bapimepoitemx,
it_sched TYPE TABLE OF bapimeposchedule,
it_schedx TYPE TABLE OF bapimeposchedulx,
it_alv TYPE TABLE OF ty_alv,
it_alv1 TYPE TABLE OF ty_alv1,
it_alv2 TYPE TABLE OF ty_alv1.
DATA: po_number TYPE bapimepoheader-po_number,
x_return TYPE bapiret2,
it_return TYPE TABLE OF bapiret2,
v_file TYPE string,
v_temp(8),
v_succsount TYPE i VALUE 0,
v_failcount TYPE i VALUE 0,
v_total TYPE i.
DATA: v_temp1(5) TYPE n VALUE 0.
DATA: x_event TYPE slis_t_event,
x_fieldcat TYPE slis_t_fieldcat_alv,
x_list_header TYPE slis_t_listheader,
x_event1 LIKE LINE OF x_event,
x_layout1 TYPE slis_layout_alv,
x_variant1 TYPE disvariant,
x_repid2 LIKE sy-repid.
DATA : it_fieldcat TYPE TABLE OF slis_t_fieldcat_alv.
SELECTION-SCREEN *
SELECTION-SCREEN BEGIN OF BLOCK v_b1 WITH FRAME.
*-----To fetch the flat file.
PARAMETERS: p_file TYPE rlgrap-filename.
SELECTION-SCREEN END OF BLOCK v_b1.
AT SELECTION-SCREEN *
AT SELECTION-SCREEN.
IF p_file IS INITIAL.
MESSAGE text-001 TYPE 'E'.
ENDIF.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
*-----To use F4 help to find file path.
CALL FUNCTION 'F4_FILENAME'
EXPORTING
program_name = syst-cprog
dynpro_number = syst-dynnr
IMPORTING
file_name = p_file.
v_file = p_file.
START-OF-SELECTION *
START-OF-SELECTION.
PERFORM gui_upload.
LOOP AT it_table INTO x_table.
PERFORM header_details.
v_temp = x_table-v_legacy.
LOOP AT it_table INTO x_table WHERE v_legacy = v_temp.
PERFORM lineitem.
PERFORM schedule.
ENDLOOP.
DELETE it_table WHERE v_legacy = v_temp.
PERFORM bapicall.
MOVE po_number TO x_alv-success.
APPEND x_alv TO it_alv.
CLEAR x_alv.
*-----To clear the item details in internal table after the operation for a header.
REFRESH: it_item,
it_itemx,
it_sched,
it_schedx.
CLEAR: v_temp1.
ENDLOOP.
v_total = v_succsount + v_failcount.
PERFORM display_alv.
FORM GUI_UPLOAD *
FORM gui_upload .
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
filename = v_file
filetype = 'ASC'
TABLES
data_tab = it_commatable
EXCEPTIONS
file_open_error = 1
file_read_error = 2
no_batch = 3
gui_refuse_filetransfer = 4
invalid_type = 5
no_authority = 6
unknown_error = 7
bad_data_format = 8
header_not_allowed = 9
separator_not_allowed = 10
header_too_long = 11
unknown_dp_error = 12
access_denied = 13
dp_out_of_memory = 14
disk_full = 15
dp_timeout = 16
OTHERS = 17
IF sy-subrc = 0.
*-----To fetch the comma seperated flat file into an internal table.
LOOP AT it_commatable INTO x_commatable.
IF x_commatable IS NOT INITIAL.
SPLIT x_commatable AT ',' INTO
x_table-v_legacy
x_table-vendor
x_table-purch_org
x_table-pur_group
x_table-material
x_table-quantity
x_table-delivery_date
x_table-net_price
x_table-plant.
APPEND x_table TO it_table.
ENDIF.
CLEAR x_table.
ENDLOOP.
ENDIF.
ENDFORM. " gui_upload
FORM HEADER_DETAILS *
FORM header_details .
MOVE 'NB' TO x_header-doc_type.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = x_table-vendor
IMPORTING
output = x_table-vendor
MOVE x_table-vendor TO x_header-vendor.
MOVE x_table-purch_org TO x_header-purch_org.
MOVE x_table-pur_group TO x_header-pur_group.
x_headerx-doc_type = 'X'.
x_headerx-vendor = 'X'.
x_headerx-purch_org = 'X'.
x_headerx-pur_group = 'X'.
ENDFORM. " header_details
FORM LINEITEM *
FORM lineitem .
v_temp1 = v_temp1 + 10.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = v_temp1
IMPORTING
output = v_temp1.
MOVE v_temp1 TO x_item-po_item.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = x_table-material
IMPORTING
output = x_table-material.
MOVE x_table-material TO x_item-material.
MOVE x_table-quantity TO x_item-quantity.
MOVE x_table-net_price TO x_item-net_price.
MOVE x_table-plant TO x_item-plant.
x_itemx-po_item = v_temp1.
x_itemx-material = 'X'.
x_itemx-quantity = 'X'.
x_itemx-net_price = 'X'.
x_itemx-plant = 'X'.
APPEND x_item TO it_item.
APPEND x_itemx TO it_itemx.
CLEAR: x_item, x_itemx.
ENDFORM. " lineitem1
FORM SCHEDULE *
FORM schedule .
MOVE x_table-delivery_date TO x_sched-delivery_date.
MOVE v_temp1 TO x_sched-po_item.
x_schedx-delivery_date = 'X'.
x_schedx-po_item = v_temp1.
APPEND x_sched TO it_sched.
APPEND x_schedx TO it_schedx.
CLEAR: x_sched, x_schedx.
ENDFORM. " schedule
FORM BAPICALL *
FORM bapicall .
CALL FUNCTION 'BAPI_PO_CREATE1'
EXPORTING
poheader = x_header
poheaderx = x_headerx
IMPORTING
exppurchaseorder = po_number
TABLES
return = it_return
poitem = it_item
poitemx = it_itemx
poschedule = it_sched
poschedulex = it_schedx.
IF po_number IS NOT INITIAL.
v_succsount = v_succsount + 1.
MOVE x_table-v_legacy TO x_alv-v_legs.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
ELSE.
v_failcount = v_failcount + 1.
MOVE x_table-v_legacy TO x_alv-v_legf.
MOVE x_table-v_legacy TO x_alv1-v_legf1.
LOOP AT it_return INTO x_return.
IF x_alv1-v_msg IS INITIAL.
MOVE x_return-message TO x_alv1-v_msg.
ELSE.
CONCATENATE x_alv1-v_msg x_return-message INTO x_alv1-v_msg SEPARATED BY space.
ENDIF.
ENDLOOP.
APPEND x_alv1 TO it_alv1.
CLEAR x_alv1.
ENDIF.
ENDFORM. " bapicall
FORM DISPLAY_ALV *
FORM display_alv .
PERFORM x_list_header.
PERFORM build_fieldcat CHANGING x_fieldcat.
x_repid2 = sy-repid.
x_event1-name = 'TOP_OF_PAGE'.
x_event1-form = 'TOP_OF_PAGE'.
APPEND x_event1 TO x_event.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = x_repid2
is_layout = x_layout1
it_fieldcat = x_fieldcat
i_callback_user_command = 'USER_COMMAND'
i_callback_top_of_page = 'TOP_OF_PAGE'
i_save = 'A'
is_variant = x_variant1
it_events = x_event
TABLES
t_outtab = it_alv
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_master_data
FORM USER_COMMAND *
FORM user_command USING ucomm LIKE sy-ucomm selfield
TYPE slis_selfield.
READ TABLE it_alv INTO x_alv INDEX selfield-tabindex.
CLEAR : x_alv2,it_alv2[].
LOOP AT it_alv1 INTO x_alv1 WHERE v_legf1 = x_alv-v_legf.
x_alv2 = x_alv1.
APPEND x_alv2 TO it_alv2 .
ENDLOOP.
DATA : it_fieldcat TYPE slis_t_fieldcat_alv.
DATA : x3_fieldcat LIKE LINE OF it_fieldcat.
CLEAR : x3_fieldcat,it_fieldcat[].
CLEAR x3_fieldcat.
x3_fieldcat-col_pos = '1'.
x3_fieldcat-fieldname = 'V_LEGF1'.
x3_fieldcat-reptext_ddic = text-111.
x3_fieldcat-ref_tabname = 'IT_ALV2'.
APPEND x3_fieldcat TO it_fieldcat.
CLEAR x3_fieldcat.
CLEAR x3_fieldcat.
x3_fieldcat-col_pos = '1'.
x3_fieldcat-fieldname = 'V_MSG'.
x3_fieldcat-reptext_ddic = text-112.
x3_fieldcat-ref_tabname = 'IT_ALV2'.
APPEND x3_fieldcat TO it_fieldcat.
CLEAR x3_fieldcat.
x_layout1-colwidth_optimize = 'X'.
x_layout1-zebra = 'X'.
IF it_alv2[] IS NOT INITIAL.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = x_repid2
is_layout = x_layout1
it_fieldcat = it_fieldcat
i_save = 'A'
i_callback_top_of_page = 'TOP'
is_variant = x_variant1
it_events = x_event
TABLES
t_outtab = it_alv2
EXCEPTIONS
program_error = 1
OTHERS = 2.
ENDIF.
ENDFORM.
FORM USER_COMMAND *
FORM top.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = 'Commentry'.
ENDFORM.
FORM BUILD_FIELDCAT *
FORM build_fieldcat CHANGING et_fieldcat TYPE slis_t_fieldcat_alv.
DATA: x1_fieldcat TYPE slis_fieldcat_alv.
CLEAR x1_fieldcat.
x1_fieldcat-col_pos = '1'.
x1_fieldcat-fieldname = 'V_LEGS'.
x1_fieldcat-reptext_ddic = text-108.
x1_fieldcat-ref_tabname = 'IT_ALV'.
APPEND x1_fieldcat TO et_fieldcat.
CLEAR x1_fieldcat.
x1_fieldcat-col_pos = '2'.
x1_fieldcat-fieldname = 'SUCCESS'.
x1_fieldcat-key = 'X'.
x1_fieldcat-reptext_ddic = text-109.
x1_fieldcat-ref_tabname = 'IT_ALV'.
APPEND x1_fieldcat TO et_fieldcat.
CLEAR x1_fieldcat.
x1_fieldcat-col_pos = '3'.
x1_fieldcat-fieldname = 'V_LEGF'.
x1_fieldcat-key = 'X'.
x1_fieldcat-reptext_ddic = text-110.
x1_fieldcat-ref_tabname = 'IT_ALV'.
APPEND x1_fieldcat TO et_fieldcat.
CLEAR x1_fieldcat.
ENDFORM. " build_fieldcat
FORM BUILD_LIST_HEADER *
FORM x_list_header.
DATA: x_list_header1 TYPE slis_listheader.
*-----List Header: type H
CLEAR x_list_header1 .
x_list_header1-typ = 'H'.
x_list_header1-info = text-105.
APPEND x_list_header1 TO x_list_header.
*-----List Key: type S
x_list_header1-typ = 'S'.
x_list_header1-key = text-106.
x_list_header1-info = v_total.
APPEND x_list_header1 TO x_list_header.
*-----List Key: Type S
CLEAR x_list_header1 .
x_list_header1-typ = 'S'.
x_list_header1-key = text-107.
x_list_header1-info = v_succsount.
APPEND x_list_header1 TO x_list_header.
ENDFORM. " build_list_header
FORM TOP_OF_PAGE *
FORM top_of_page.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = x_list_header.
ENDFORM. " TOP_OF_PAGE
Reward points if useful
Anji -
Create an AP Invoice based on a Purchase Order using SDK
Hi,
What are the steps to create an AP Invoice based on a Purchase Order using DI API?
Which methods of which objects to use and what parameters to pass?
Thanks.Hi Rajesh,
Here is a sample to create an Invoice based on a Sales Order. The same way you can change as per your requirement:
SAPbobsCOM.Documents oInvoice = default(SAPbobsCOM.Documents);
oInvoice = (SAPbobsCOM.Documents)SBO_Company.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oInvoices);
oInvoice.CardCode = "C000003";
oInvoice.DocDueDate = DateAndTime.Now;
oInvoice.Lines.BaseType = Convert.ToInt32(SAPbobsCOM.BoObjectTypes.oOrders);
oInvoice.Lines.BaseEntry = Convert.ToInt32(3616);
oInvoice.Lines.BaseLine = 1;
oInvoice.Lines.Quantity = 3;
oInvoice.Lines.Add();
oInvoice.Lines.BaseType = Convert.ToInt32(SAPbobsCOM.BoObjectTypes.oOrders);
oInvoice.Lines.BaseEntry = Convert.ToInt32(3616);
oInvoice.Lines.BaseLine = 2;
int kth = 0;
kth = oInvoice.Add();
if (kth != 0)
int irrcode;
string errmsg;
SBO_Company.GetLastError(out irrcode, out errmsg);
Program.oMainSAPDI.ShowMessage(errmsg, BoStatusBarMessageType.smt_Error);
The main thing to remember is Base Type, Based Entry and Base Line.
Hope it helps.
Thanks & Regards
Ankit Chauhan -
What is the BADI while SAVING purchase order using me22n?
what is the BADI while SAVING purchase order using me22n?
while i will save purchase order through me22n, badi should be fire what is badi for that?
regards,
dushyant.Dushyant,
Hopefully you know how to implement the BADI ME_PROCESS_PO_CUST now.
The following are the codes that you can put in the method "Post".
DATA: LW_HEADER TYPE MEPOHEADER,
LW_POSTED_HEADER TYPE MEPOHEADER,
LW_VALID TYPE MMPUR_BOOL,
ITAB_ITEM TYPE PURCHASE_ORDER_ITEMS,
LW_ITEM TYPE MEPOITEM,
ITEM_INTERFACE TYPE PURCHASE_ORDER_ITEM,
ITAB_ACCT TYPE PURCHASE_ORDER_ACCOUNTINGS,
ACCT_INTERFACE TYPE PURCHASE_ORDER_ACCOUNTING,
LW_ACCT TYPE MEPOACCOUNTING,
LW_POSTED_ACCT TYPE MEPOACCOUNTING,
W_ACCT_CHANGED TYPE C,
W_GRANT_AMT TYPE EKPO-NETWR,
W_FINANCE_AMT TYPE EKPO-NETWR,
W_FLAG TYPE C.
Check if PO header data is valid
CLEAR LW_VALID.
CALL METHOD IM_HEADER->IS_VALID
RECEIVING
RE_VALID = LW_VALID.
CHECK LW_VALID = 'X'.
PO header data is valid
Get the newly updated PO header data
CLEAR LW_HEADER.
CALL METHOD IM_HEADER->GET_DATA
RECEIVING
RE_DATA = LW_HEADER.
Get the posted PO header data
CLEAR LW_POSTED_HEADER.
CALL METHOD IM_HEADER->GET_PERSISTENT_DATA
IMPORTING
EX_DATA = LW_POSTED_HEADER
EXCEPTIONS
NO_DATA = 1.
IF SY-SUBRC <> 0.
CLEAR LW_POSTED_HEADER.
ENDIF.
Get PO line items
REFRESH ITAB_ITEM.
CALL METHOD IM_HEADER->GET_ITEMS
RECEIVING
RE_ITEMS = ITAB_ITEM.
LOOP AT ITAB_ITEM INTO ITEM_INTERFACE.
Check if PO line item is valid
CLEAR LW_VALID.
CALL METHOD ITEM_INTERFACE-ITEM->IS_VALID
RECEIVING
RE_VALID = LW_VALID.
IF LW_VALID <> 'X'.
This PO line item is not valid
CLEAR W_ACCT_CHANGED.
EXIT.
ENDIF.
CLEAR LW_ITEM.
CALL METHOD ITEM_INTERFACE-ITEM->GET_DATA
RECEIVING
RE_DATA = LW_ITEM.
Get the account interface
REFRESH ITAB_ACCT.
CALL METHOD ITEM_INTERFACE-ITEM->GET_ACCOUNTINGS
RECEIVING
RE_ACCOUNTINGS = ITAB_ACCT.
LOOP AT ITAB_ACCT INTO ACCT_INTERFACE.
CLEAR LW_ACCT.
Get the newly updated PO item data
CALL METHOD ACCT_INTERFACE-ACCOUNTING->GET_DATA
RECEIVING
RE_DATA = LW_ACCT.
CLEAR LW_POSTED_ACCT.
Get the posted PO item data
CALL METHOD ACCT_INTERFACE-ACCOUNTING->GET_PERSISTENT_DATA
IMPORTING
EX_DATA = LW_POSTED_ACCT
EXCEPTIONS
NO_DATA = 1.
IF SY-SUBRC > 0.
CLEAR LW_POSTED_ACCT.
ENDIF.
IF LW_ACCT-LOEKZ <> LW_POSTED_ACCT-LOEKZ OR
LW_ACCT-KOSTL <> LW_POSTED_ACCT-KOSTL OR
LW_ACCT-PRCTR <> LW_POSTED_ACCT-PRCTR OR
LW_ACCT-PS_PSP_PNR <> LW_POSTED_ACCT-PS_PSP_PNR.
Account assignment was changed
We will force this PO to go through workflow
W_ACCT_CHANGED = 'Y'.
ENDIF.
ENDLOOP.
ENDLOOP. -
Create Sales order from Internal Purchase Order using IDOC
Hello Friends,
I have requirement to create Sales Order from Internal Purchase Order Using IDOC.
Backgorund, we have already configured IDOC orders05 to create Sales Order from external Purchase order from Inbound IDOC, and it is working fine.
Now we have new requirement to create Sales Order from our own Purchase order, i.e. When PO is created in one plant corresponidng sales order automatically must needs to create in another Plant with respect PO.
I m trying to design a solution for above problem as follows,
1.create an Inbound Idoc from PO, by creatiing one new message type on PO save.
2.Process that Inbound IDOC same as it is from external PO.
3.Once processed Sales order will create.
Please help me in step 1. to create Inbound IDOC from PO.
If you want any further clarification please write me.
Thanks,
MaheshI had done a similar scenario before and we achieved it through SAP XI. The problem is with the control record. When we create a ORDERS IDOC from a PO the control record will be for outbound transmission. We sent the file to XI and XI resent it back with some data parsing and a new inbound control record. This way it went neat outbound and inbound.
I'm not sure what kind of architecture you have. If you have to do it within your ECC/R/3, then you could create the outbound IDOC to a new port and write a fresh RFC to pick it up from the same folder and create a new control record for inbound processing.
I haven't tried this; but there is a "processing w. trigger (inbound)" option on the outbound process code. May be you can explore into that a bit more.
I'm sure there could be better approaches to handle this within ECC so if you stumble on any, do write back. I would like to know to update my knowledge . -
How to create purchase order using VA01 for BAPI?
how to create purchase order using VA01 for BAPI?
Hi Arun,
Please check this link
Example Program for BAPI_PO_CREATE1
Re: BAPI_PO_CREATE1
Questions in BAPI_PO_CREATE1
Problem with BAPI_PO_CREATE1
*& Report BAPI_PO_CREATE *
REPORT bapi_po_create.
Input File Declaration
TYPES: BEGIN OF ty_input_file,
column1 TYPE char50,
column2 TYPE char50,
column3 TYPE char50,
column4 TYPE char50,
column5 TYPE char50,
column6 TYPE char50,
column7 TYPE char50,
column8 TYPE char50,
column9 TYPE char50,
column10 TYPE char50,
column11 TYPE char50,
column12 TYPE char50,
column13 TYPE char50,
column14 TYPE char50,
column15 TYPE char50,
column16 TYPE char50,
column17 TYPE char50,
column18 TYPE char50,
END OF ty_input_file.
DATA: i_input_file TYPE STANDARD TABLE OF ty_input_file,
wa_input_file TYPE ty_input_file.
CONSTANTS: c_path TYPE char20 VALUE 'C:\',
c_mask TYPE char9 VALUE ',.,..',
c_mode TYPE char1 VALUE 'O',
c_filetype TYPE char10 VALUE 'ASC',
c_x TYPE char01 VALUE 'X'.
PARAMETERS : p_fname LIKE rlgrap-filename.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_fname.
Browse Presentation Server
PERFORM f4_presentation_file.
START-OF-SELECTION..
Read presentation server file
PERFORM f1003_upload_file.
IF NOT i_input_file[] IS INITIAL.
PERFORM split_data.
ENDIF.
*& Form f4_presentation_file
*& F4 Help for presentation server
FORM f4_presentation_file .
CALL FUNCTION 'WS_FILENAME_GET'
EXPORTING
def_path = c_path
mask = c_mask
mode = c_mode
title = text-001
IMPORTING
filename = p_fname
EXCEPTIONS
inv_winsys = 1
no_batch = 2
selection_cancel = 3
selection_error = 4
OTHERS = 5.
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. " f4_presentation_file
*& Form f1003_upload_file
*& Upload File
FORM f1003_upload_file .
DATA: lcl_filename TYPE string.
lcl_filename = p_fname.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
filename = lcl_filename
filetype = c_filetype
has_field_separator = c_x
TABLES
data_tab = i_input_file
EXCEPTIONS
file_open_error = 1
file_read_error = 2
no_batch = 3
gui_refuse_filetransfer = 4
invalid_type = 5
no_authority = 6
unknown_error = 7
bad_data_format = 8
header_not_allowed = 9
separator_not_allowed = 10
header_too_long = 11
unknown_dp_error = 12
access_denied = 13
dp_out_of_memory = 14
disk_full = 15
dp_timeout = 16
OTHERS = 17.
IF sy-subrc 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
EXIT.
ENDIF.
ENDFORM. " f1003_upload_file
*& Form split_data
Collect data for creating Purchase Order
FORM split_data .
DATA: i_poitem TYPE STANDARD TABLE OF bapimepoitem,
i_poitemx TYPE STANDARD TABLE OF bapimepoitemx,
i_poitem_sch TYPE STANDARD TABLE OF bapimeposchedule,
i_poitem_schx TYPE STANDARD TABLE OF bapimeposchedulx,
i_acct_*** TYPE STANDARD TABLE OF bapimepoaccount,
i_acct_assx TYPE STANDARD TABLE OF bapimepoaccountx,
i_services TYPE STANDARD TABLE OF bapiesllc ,
i_srvacc TYPE STANDARD TABLE OF bapiesklc,
i_return TYPE STANDARD TABLE OF bapiret2,
wa_header TYPE bapimepoheader,
wa_headerx TYPE bapimepoheaderx,
wa_poitem TYPE bapimepoitem,
wa_poitemx TYPE bapimepoitemx,
wa_poitem_sch TYPE bapimeposchedule,
wa_poitem_schx TYPE bapimeposchedulx,
wa_acct_*** TYPE bapimepoaccount,
wa_acct_assx TYPE bapimepoaccountx,
wa_services TYPE bapiesllc,
wa_srvacc TYPE bapiesklc,
wa_return TYPE bapiret2,
ws_po TYPE bapimepoheader-po_number.
break gbpra8.
wa_services-pckg_no = 10.
wa_services-line_no = 1.
wa_services-outl_no = '0'.
wa_services-outl_ind = c_x.
wa_services-subpckg_no = 20.
APPEND wa_services TO i_services.
wa_srvacc-pckg_no = 10.
wa_srvacc-line_no = 1.
wa_srvacc-serno_line = 01.
wa_srvacc-serial_no = 01.
wa_srvacc-percentage = 100.
APPEND wa_srvacc TO i_srvacc.
LOOP AT i_input_file INTO wa_input_file.
IF wa_input_file-column2 EQ 'HD'.
wa_header-doc_type = wa_input_file-column3.
wa_header-creat_date = sy-datum.
wa_header-created_by = sy-uname.
wa_header-vendor = wa_input_file-column4.
PERFORM conversion_output USING wa_header-vendor
CHANGING wa_header-vendor.
wa_header-comp_code = 'DE03'.
wa_header-purch_org = 'DE03'.
wa_header-pur_group = 'DE1'.
wa_header-vper_start = wa_input_file-column9.
wa_header-vper_end = wa_input_file-column10.
wa_headerx-comp_code = c_x.
wa_headerx-doc_type = c_x.
wa_headerx-creat_date = c_x.
wa_headerx-created_by = c_x.
wa_headerx-vendor = c_x.
wa_headerx-purch_org = c_x.
wa_headerx-pur_group = c_x.
wa_headerx-vper_start = c_x.
wa_headerx-vper_end = c_x.
ENDIF.
IF wa_input_file-column2 EQ 'IT'.
wa_poitem-po_item = wa_input_file-column3.
wa_poitem-short_text = wa_input_file-column6.
wa_poitem-plant = wa_input_file-column8.
wa_poitem-quantity = '1'.
wa_poitem-tax_code = 'V0'.
wa_poitem-item_cat = 'D'.
wa_poitem-acctasscat = 'K'.
wa_poitem-matl_group = wa_input_file-column7.
wa_poitem-pckg_no = '10'.
APPEND wa_poitem TO i_poitem .
wa_poitemx-po_item = wa_input_file-column3.
wa_poitemx-po_itemx = c_x.
wa_poitemx-short_text = c_x.
wa_poitemx-plant = c_x.
wa_poitemx-quantity = c_x.
wa_poitemx-tax_code = c_x.
wa_poitemx-item_cat = c_x.
wa_poitemx-acctasscat = c_x.
wa_poitemx-matl_group = c_x.
wa_poitemx-pckg_no = c_x.
APPEND wa_poitemx TO i_poitemx.
wa_poitem_sch-po_item = wa_input_file-column3.
wa_poitem_sch-delivery_date = sy-datum.
APPEND wa_poitem_sch TO i_poitem_sch.
wa_poitem_schx-po_item = wa_input_file-column3.
wa_poitem_schx-po_itemx = c_x.
wa_poitem_schx-delivery_date = c_x.
APPEND wa_poitem_schx TO i_poitem_schx.
wa_acct_***-po_item = 10.
wa_acct_***-serial_no = 01.
wa_acct_***-gl_account = '0006360100'.
wa_acct_***-co_area = '1000'.
wa_acct_***-costcenter = 'KC010000'.
APPEND wa_acct_*** TO i_acct_***.
wa_acct_***-po_item = 10.
wa_acct_***-serial_no = 02.
wa_acct_***-gl_account = '0006360100'.
wa_acct_***-co_area = '1000'.
wa_acct_***-costcenter = 'KC010000'.
APPEND wa_acct_*** TO i_acct_***.
wa_acct_assx-po_item = 10.
wa_acct_assx-serial_no = 01.
wa_acct_assx-po_itemx = c_x.
wa_acct_assx-serial_nox = c_x.
wa_acct_assx-gl_account = c_x.
wa_acct_assx-co_area = c_x.
wa_acct_assx-costcenter = c_x.
APPEND wa_acct_assx TO i_acct_assx.
wa_acct_assx-po_item = 10.
wa_acct_assx-serial_no = 02.
wa_acct_assx-po_itemx = c_x.
wa_acct_assx-serial_nox = c_x.
wa_acct_assx-gl_account = c_x.
wa_acct_assx-co_area = c_x.
wa_acct_assx-costcenter = c_x.
APPEND wa_acct_assx TO i_acct_assx.
wa_services-pckg_no = 20.
wa_services-line_no = 2.
wa_services-service = wa_input_file-column9.
wa_services-quantity = '100'.
wa_services-gr_price = '100'.
wa_services-userf1_txt = wa_input_file-column13.
APPEND wa_services TO i_services.
wa_srvacc-pckg_no = 20.
wa_srvacc-line_no = 1.
wa_srvacc-serno_line = 02.
wa_srvacc-serial_no = 02.
wa_srvacc-percentage = 100.
APPEND wa_srvacc TO i_srvacc.
ENDIF.
ENDLOOP.
CALL FUNCTION 'BAPI_PO_CREATE1'
EXPORTING
poheader = wa_header
poheaderx = wa_headerx
POADDRVENDOR =
TESTRUN =
MEMORY_UNCOMPLETE =
MEMORY_COMPLETE =
POEXPIMPHEADER =
POEXPIMPHEADERX =
VERSIONS =
NO_MESSAGING =
NO_MESSAGE_REQ =
NO_AUTHORITY =
NO_PRICE_FROM_PO =
IMPORTING
exppurchaseorder = ws_po
EXPHEADER =
EXPPOEXPIMPHEADER =
TABLES
return = i_return
poitem = i_poitem
poitemx = i_poitemx
POADDRDELIVERY =
poschedule = i_poitem_sch
poschedulex = i_poitem_schx
poaccount = i_acct_***
POACCOUNTPROFITSEGMENT =
poaccountx = i_acct_assx
POCONDHEADER =
POCONDHEADERX =
POCOND =
POCONDX =
POLIMITS =
POCONTRACTLIMITS =
poservices = i_services
posrvaccessvalues = i_srvacc
POSERVICESTEXT =
EXTENSIONIN =
EXTENSIONOUT =
POEXPIMPITEM =
POEXPIMPITEMX =
POTEXTHEADER =
POTEXTITEM =
ALLVERSIONS =
POPARTNER =
break gbpra8.
LOOP AT i_return INTO wa_return.
ENDLOOP.
ENDFORM. " split_data
*& Form conversion_output
Conversion exit input
FORM conversion_output USING p_ip
CHANGING p_op.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = p_ip
IMPORTING
output = p_op.
ENDFORM. " conversion_output
Best regards,
raam -
Report or FM to change Plant of Purchase Order
Hi,
Can anybody suggest me a way to change Plant of Purchase order Item?
When i am chacking in me22 Plant is in Disable mode even to change manually. Is there a way to change from a function module or standard report?
Thanks in Advance,
SanjeevaHi Sanjeeva,
If it's one order only try to use ME22n and check out below condition... also consult functional consultant there..
Check out whether Tr./Ev. Goods receipt and/or Tr./Ev. Invoice receipt happened for the purchase order which you are trying to change...
If so and all the quantity received then as per configuration it won't allow you to change the plant..
try to use T-Code ME22n (SAP Enjoy Transaction)
If it's for mass change then user BAPI_PO_CHANGE for it...
Hope it will solve your problem..
Thanks & Regards
ilesh 24x7
ilesh Nandaniya -
Create a Purchase order using the BAPI using the data in the XML file.
Hello Gurus,
here is the scenario can anyone help me how to proceed explaining the procedure?
Create a Purchase order using the BAPI using the data in the XML file.
comprehensive explanations are appreciated.
thanks in advance.hi,
first use fm "bapi_po_create".
then use fm "BAPI_ACC_GL_POSTING_POST"
The demo environment was made with real business scenario in mind, but following subjects need to be addressed in a live implementation:
No exceptions and error handling is implemented, except the order rejection (e.g. partly delivery);
In Navision both XML Ports and the XML DOM has been used to integrate with SAP XI, because XML ports has some drawbacks regarding to Namespaces in XML Documents (mandatory in SAP XI);
A minimum of SAP and Navision customization is required to implement this solution. (e.g. user exit in SAP, Navision XML DOM).
Maybe you are looking for
-
What is the best external hard drive for backup on powerbook g4 17-inch?
i need to get a good external hard drive for backing up my files on my 2004 powerbook g4 17-inch. up till now ive been using thumbdrives, but i have way too much to backup now. i was thinking of getting the time capsule, but i don't have leopard vers
-
Sun IdM - Remedy - Active Sync
Hi, I'm trying to run Active Sync for Remedy system via RemedyResourceAdapter. The issue that I'm facing is when I run the active sync, it establishes the connection with the Remedy database but doesn't bring me the necessary attributes that I have s
-
JHS11 TP2 - Jdeveloper hangs when generating application
Hi, I have got an issue with JHS11 Tp2. When generating the application JDeveloper seems to hang (I waited about 10 minutes before I killed it.). In my jdev console I see the following : 18-sep-2009 8:37:51 oracle.ide.boot.Launcher throttleLocale INF
-
Displaced icon and missing folder
Hi i know this sounds really weird but i am having a little trouble with my laptop. after i did a disk cleanup, my hiberation icon went missing and i can't seem to locate it. Also, i can't seem to locate my temporary folder to access the files that i
-
Persistence unit is inconsistent
Hi all, I have a problem with my primary key generation, my class looks as follows: @Entity @Table(name="MYAPP_M_CUST") public class Customer implements Serializable { @Id @Column(name="CUST_ID") @GeneratedValue (strategy=GenerationTyp