How to create partially received Purchase Order using PDOI?
Hello All,
We are using 12.1.3
We have requirement to create PO with partially received quantity. Can it be possible through Purchase Order Import Interface program? I can not see any column there in po_line_location_interface table for quantity that has been received or shipped. So can anybody tried this scenario. If please revert back with the answer this is very urgent.
Thanks in Advance...!!!
Amol
Thanks Sandeep,
But PDOI allows us to enter quantity_billed on the PO. Have you ever faced such scenarios. Because I am doing conversion and I got stuck at the partial receiving.
Also I have to do a drop ship POs conversion, do you have any code snippet for drop shipment. If yes please share it or else any metalink doc id.
Thanks In Advance......!!!
Similar Messages
-
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 a stock purchase order ?
Hi,
I would like to create a stock PO to replenish stock and thus without any account information.
What Account Assignment category and Item Category do i have to select to create my stock PO ?
Thanks for your help,
Kind regards,
YannHi,
For stock item, there is no need to give account assignment and item category. Just input the vendor, pur org, pur grp, company code in header screen, material number, qty, price, plant etc details and save the PO.
Then do goods receipt wrt PO (TCode: MIGO). This updates the stock in the respective plant.
Then do the LIV (TCode: MIRO)
Hope this clarifies.
Thanks,
Viswanath -
Update purchase Order using offline file
Hi Experts
How to create and update purchase Order using offline file. How to execute offline API from program in batch ?Hi Experts
How to create and update purchase Order using offline file. How to execute offline API from program in batch ? -
Create a purchase order using transaction ME21
Hello Abappers,
I want to create a STO( purchase order using the sales order data) using transcation ME21.
Kindly provide step wise details as i am a technical person adn dont have to functional knowledge to create it.Also mention where the pricing conditions, the delivery address of the receiving plant. etc will have to be mentioned.
Thanks a lot in advance.
Appropriate points wil be rewarded to.check this link::
http://web.mit.edu/sapr3/windocs/bpors03m.htm
from Purchase Requisition
http://web.mit.edu/sapr3/windocs/bpors03n.htm -
Creating asset from purchase orders
Dear Gurus.
Please let me know how to create asset from purchase orders.
Thanks
Rgds,
Saurabhhi,
First, determine the information that is necessary for creating the purchase order:
Check in the Purchasing component whether a purchase requisition exists for the asset (Logistics - Materials management - Purchasing).
Determine the vendor from whom you are ordering the asset. If needed, enter the purchasing data for the vendor.
Determine the asset number of the asset that is being ordered. If necessary, create a new asset.
Create the purchase order. If there is a purchase requisition, use it as a reference (in Purchasing: Purchase order - Create).
In the initial screen, when you specify the account assignment type A (for asset), this determines
The account assignment to an asset
How the goods receipt or the invoice receipt is to be handled (are asset values to be posted at the time of the goods receipt or at the time of the invoice receipt).
Once you have entered the general purchasing data in the first screen (order date, material group, etc.), a dialog box appears. Enter the asset to which account assignment is to be made in this dialog box.
If the asset master record for your purchase has not yet been created, you can create it directly from within the purchase order transaction.
Display the order item and its current delivery status (in Purchasing: Purchase order - List display - By account assignment).
Later, post the goods receipt or the invoice receipt. (The Customizing definition of the account assignment type determines when the asset values are posted - either at goods receipt or at invoice receipt.) See the corresponding documentation for the Materials Management (MM) component.
regards,
Siddharth. -
How to create purchase order using SharePoint Custom List
Hi All,
Can you please provide some example or link to create Purchase Order using SharePoint List / SharePoint Designer.
ThanksHi,
It would be difficult to achieve what you want with the OOTB features of only one list.
Per my understanding, there would be two main functionalities in the solution you want:
1. Calculate and display the “Balance Qty” dynamically based on the values of “Order Qty” and “Deliver Qty”;
2. Trace the “Deliver Date” and “Deliver Qty” as per “Purchase No”;
As a workaround, I would suggest you create two lists as below:
1. List “Orders”: Saving the upcoming orders per “Purchase No”, one “Order Qty” related to one unique “Purchase No”.
Columns in this list:
Purchase No(Number);
Order Date(Date);
Order Qty(Number);
2. List “Deliveries”: Recording each delivery, one “Deliver Qty” to one unique existing “Purchase No” in list “Orders”.
Columns in this list:
Purchase No(Lookup “Purchase No” in list “Orders”);
Order Date(Additional Lookup column along with “Purchase No”);
Order Qty(Additional Lookup column along with “Purchase No”);
Deliver Date(Date);
Deliver Qty(Number);
Balance Qty(Number);
More information about
Lookup column in SharePoint List:
http://msdn.microsoft.com/en-us/library/office/ff728095(v=office.14).aspx
http://zimmergren.net/technical/sp-2010-how-to-relational-lists-in-sharepoint-2010
In the “Deliveries” list, we can trace each “Deliver Qty” and “Deliver Date” easily by filtering the “Purchase No” column in the list view page.
For the dynamic values in “Balance Qty” column, Event Receiver with custom code would be needed as we will need to query the “Order Qty” in “Orders” list and all the
existing “Deliver Qty” value per “Purchase No” in “Deliveries” list.
An idea about
how to implement a Purchase Order system in this blog would be helpful:
http://ethan-deng.blogspot.jp/2013/03/purchase-order-management-system.html
Best regards,
Patrick
Patrick Liang
TechNet Community Support -
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 -
How to create multiple Purchase Order using the same document number?
HI Friends,
I m in a product which extracts data from SAP and stored in Access database.
For that,while i extracting Purchase Order from the Demo Database (SBODemo_US)for OEC Computers,the same DocNum is used for several Purchase Order using Index Line numbers.
eg:
DocNum for Purchase Order1 -->3000 0 (Index)
DocNum for Purchase Order2 -->3000 1 (Index)
But i can't create multiple Purchase Order using same DocNum manually in SAP B1,Could anybody please help me <b>to create a Purchase Order using same DocumentNumber?</b>
Thanks in Advance
SooriyaKala.PHi,
The problem statement is not quite clear to me.
As far as I understand your statement, I think you want to club multiple orders into one purchase order using the index incrementally.
For this I think once you have created the first purchase order, open the purchase order in edit mode the second time and append the new line items.
If I am getting you wrong please explain the problem statement in more detail.
Regards,
Rara. -
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 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). -
Problem in creating Purchase order Using BAPI
Dear ABAPers,
I am creating the Purchase order Using BAPI_PO_CREATE1. In that the Purchase order Line item i am giving the Net Price for the Material.But While creating the purchase order the system creates the puchase order with the net price which is already available in the memory.So how to solve this problem.
Thanks & Regards,
Ashok.Hi,
Try to pass the value NO_PRICE_FROM_PO in the BAPI and see
NO_PRICE_FROM_PO = 'X'
Regards
Bala Krishna -
How to Assigning the number ranges for Purchase Order using EXIT_SAPMM06E_0
How to Assigning the number ranges for Purchase Order using EXIT_SAPMM06E_001 using Functional Module NUMBER_GET_NEXT explain me ?
Hi,
First go thourh the FM import export parameters list.
Try to create an internal table of type INRI-NRRANGENR for number ranges.
We can provide the lower and higher values for this table so that what ever PO is created will be with that range.
Try to create the ncessary ones using this FM.
In the Exit, EXIT_SAPMM06E_001,
the Export parameters are-
EKKO-EBELN- the PO ios created with in that specified range
Range as INRI-NRRANGENR - Here try to assign the Internal table that was populated in the FM.
Try to code this in the Include provded and keep Breakpint and check the PO number generated.
Reply if u need more help on this.
Reward if helpful.
Best Wishes,
Chandralekha -
Creating Purchase Order Using Procurement Confirmation Wizard
Dear All,
I am trying to add the Purchase Orders using the Procurement Confirmation Wizard. Now I want to get those Purchase Orders list that are added using this Procurement Confirmation Wizard. How can I do that ? By this I mean, I do not know on which event I should use this and How to get the DocNum or DocEntry of the added Purchase Orders ?
Please help me to solve this.
Any Kind of help would be appreciated.
Thanks & Regards
Ankit ChauhanHi Ankit,
Catch the event of form 540010007
On the After Item Pressed event
do this :
Select Case pVal.ItemUID
Case "_wiz_next_"
If form.PaneLevel = 8 Then
Dim bDraft As Boolean = False
Dim oMtx As SAPbouiCOM.Matrix = form.Items.Item("540000036").Specific
Try
Dim oChb As SAPbouiCOM.CheckBox = form.Items.Item("540000020").Specific 'Draft check box
If oChb.Checked Then bDraft = True 'Means only draft document created
Catch ex As Exception
End Try
Dim oColPOEntry As New Collections.Generic.List(Of Integer)
For i As Integer = 1 To oMtx.RowCount
If oMtx.Columns.Item("540000011").Cells.Item(i).Specific.String <> "0" Then 'This column stores the doc entries - not visible to user
oColPOEntry.Add(oMtx.GetCellSpecific("540000011", i).String)
End If
Next
End If
End Select
If you are using SBO 9, I believe there should be another column in matrix 540000036 that stores the object type of the created document.
In older version, the procurement only create a PO/Draft object.
In latest version, you are allowed to create PO/PQ/Prod Order object.
Regards
Edy -
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.
Maybe you are looking for
-
Hello. I recently had to setup a new Mac Mini Server (Mavericks). We had one previously but one of the raided hard drives failed. No backup. Our office of 6 Apple MacBook Pros used to connect to all file sharing and calendar services, easily. On the
-
ISE : MAB, SoA ...
Hello, I'd like to implement Cisco ISE on my network so that 802.1x authentication will be operationnal. When I give a look to this document : http://www.cisco.com/en/US/docs/security/ise/1.0.4/compatibility/ise104_sdt.html#wp55038 There's a lot of C
-
How do I bring two texts together
Hello, I have followed difficulty. Two Indesign documents are in front of me. Both have classifieds with three batch formats. One batch format for title of a theme (Format A), one for the headline of a classified (Format B) and a third batch format f
-
Unable to Connect to WS2012R2 Hyper-V manager with Windows 7 version of Hyper V manager.
Just brought up a new WS2012R2 host server and created a gen 2 VM on it . I already have a WS2008R2 Host server with several VMs running. I manage the WS2008r2 WM from my Win7pro laptop using Hyper-V remote management tool. But when I try to connect
-
H264 encoding issue with FlashPlayer 11
Hi, When encoding live in h264 with the FP 11 then playing it live on another client (through FMS r) the video sometimes (1/3 of times) has major skips or jerks. It's almost as if the video goes back to some older keyframes and then returns to live.