Open Purchase order migration between systems
Hi Folks,
I have to migrate open purchase orders from 2 legacy systems into 1 new upgraded system. I do not want to change the PO number and therefore i have decided to set an external number range for all the Open POs.
Now my problem is in legacy system, there are open POs with different document types, in legacy system. Is it ok if I convert all open POs as a new custom document type in new system. let me know what problems could i face if i do this.
if not any other solution is most welcome
thanks n advance
Kartikey,
???? You are asking the wrong people. We couldn't possibly know for sure. It sounds to me like you are already designing the conversion process when you are not yet sure about the design of the solution.
During the sessions when you are interviewing the client, you must ask multiple questions about his business. For one, you need to discover the existing business requirements that caused the client to use multiple document types in legacy in the first place. This information only can come from your client.
Once you discover his reasons (or lack of reasons), you then have to determine in your 'To-be' solution if you still will need to satisfy that same business requirement. If you do, then you have to determine if the solution that you design will require multiple document types in SAP, or if you will instead utilize a different method to satisfy the requirement.
Good Luck & Best Regards,
DB49
Similar Messages
-
MRP not considering open purchase orders when planning for open sales order
Dear Experts,
1.I have open sales orders as well as planned Independent requirements for finished goods for the current month. Also I have open puchase orders for raw materials which is part of the Bill of material of the finished goods for the current month.
Please what do i need to do to make MRP consider my open purchase orders when the system is planning for the open sales orders.
2 what tcode can I use to delete all purchase reuisitions in the sytemThere was no response to these questions so i had to close it to make space for another
-
Data Migration for Open Purchase Order
Hi, All,
Is there anyone know how to Count the volume for Open Purchase Order. What's the normal strategy for the Data Migration and Cut-over stage?
My client want to know how many Open Purchase Order in the legacy system and then determine manual or automatic data migration. If manual, how to do? If automatic, how to do? Because all materials and vendors, plants are different number. How to track? How to find out to match between new and old?
Thank you very muchJC,
Sounds a bit early to be making decisions about the realization phase. It doesn't sound like you have finished the Blueprinting phase yet, much less the testing phase.
Anyhow, in my experience I typically use LSMW (Legacy system migration workbench) to load MM master data (material masters), Inventory (WIP, RM, FG, etc) Purchasing Master data (Vendors, Purchase Info Records, Source Lists, Quota Arrangements), and Purchasing transactional documents (POs, PurReqs, Scheduling Agreements, etc). Depending on the complexity and volume of data, it may be necessary to write custom programs to load the data. You will find this out during your requirements gathering.
It is uncommon but possible to load all of these data manually. I have never run across a client that wants to pay a consultant's hourly rate to sit at a terminal to peck away loading master data, so if the client intends to have his own users enter the data manually, the project manager should make provision that there will be qualified TRAINED client employees available for this data entry. I did help with a portion of a conversion once manually; of Sales Credits, but there were only about 30 SD docs to load. I did this the evening before go-live day, while I was waiting for some of my LSMW projects to complete in the background.
A good opportunity to 'practice' your data loads is right after you have completed your development and customization, and you have gotten the approval from the client to proceed from the pilot build to the full test environment. Once you have moved your workbench and customization into the client's test environment, but before integration testing, you can mass load all, or a substantial portion of your conversion data into the qual system. You can treat it like a dry run for go-live, and fine tune your processes, as well as your LSMW projects.
Yes, it is good practice to generate comparisons between legacy and SAP even if the client doesn't ask for it. For Purchase orders on the SAP side, you could use any of the standard SAP Purchasing reports, such as ME2W, ME2M, ME2C, ME2L, ME2N. If these reports do not meet the requirements of the client, you could write a query to display the loaded data, or have an ABAPer write a custom report.
You didn't ask, but you should also do comparisons of ALL loaded data - including master data.
It sounds like you are implying that the client wants YOU to extract the legacy data. For an SAP consultant, this is not very realistic (unless the legacy system is another SAP system). Most of us do not understand the workings of the myriad legacy systems. The client is usually expected to produce one or more legacy system technical experts for you to liase with. You normally negotiate with the technical expert about every facet of of the data migration. In addition, you will liase with business users, who will help you and the implementation team to logically validate that the final solution (turnkey SAP production system, fully loaded with data) will meet the client's business needs.
Finally, you mentioned how do you track the mapping of master data between legacy and SAP. There are many ways to do this. I normally try to get the legacy person do the conversion on his end, eg, when he gives you the load file, you would like to have already translated the master data and inserted the SAP relevant values into the file. If this is not possible, I usually use MS Access databases to maintain a master map, and I perform the mapping on a PC. If your data package is small, you can probably get by using MS Excel or similar.
Good Luck,
DB49 -
Migrate all Open Sales Orders From Legacy System (SAP) To SAP System using
Hi Experts,
I've to Migrate all Open Sales Orders From Legacy System (SAP) To SAP System using Business Objects with a new SALES ORDER DOCUMENT NUMBER referencing the older one.
I'll get all the required data with field in an excel file.
Does any standard transaction exist for it ? Or how to go ahead with it ?
Thanks and regards,
Jyoti ShankarHi
If you are checking for CREATE option then Sales Doc Type
For more Info goto SWO1 transaction -> BUS2032 --> DIsplay --> Execute --> There SELECT the method which you want to perform... There you can fine the MANDATORY parameters also....
Or in DISPLAY mode PLACE Cursor on the Required Method and CLick the PARAMETERS button on toolbar...
That will show the MANDATORY parameters...
Reward if helpful....
Message was edited by:
Enter the Dragon -
Migrating Open Sales Order From Legacy System (SAP) To SAP System
Hi Experts,
I've to Migrate all Open Sales Orders From Legacy System (SAP) To SAP System using Business Objects with a new SALES ORDER DOCUMENT NUMBER referencing the older one.
I'll get all the required data with field in an excel file.
Does any standard transaction exist for it ? Or how to go ahead with it ?
Thanks and regards,
Jyoti Shankarhi jyothi ,
there are lot of ways of doing it depending on data upload volume it will be decided .
1) thru abap bdc program which directly uses XL sheet data and creates SO using bapi/FMs.
2) using scat.functional consultant should be good enough to use this.
3)lsmw-laborious procedure but achievable.
reward if helps !!!!! -
Return nothing when run Open Purchase order report(by Buyer)
We implement iPro/PO in Oracle. I finished the PO setup. But now user report that they are not able to generate any output for a particular Buyer when they run the Open Purchase Orders Report(by Buyer) report in the PO module. Even I leave the parameter wide open for the request, it also does not return any information.
Does it relate to the PO setting in system? Anyone can kindly guide me how to check such problem?Hi Kyla,
PO raised by the buyer is 'STANDARD','BLANKET','PLANNED' ? What is the PO Status..? It should be "OPEN"..
Query used in this report is as below :
Query - Company
SELECT gsb.name c_company
, fsp.inventory_organization_id c_organization_id
, gsb.currency_code C_CURRENCY_BASE
, gsb.chart_of_accounts_id STRUCTURE_ACC
, mdv.structure_id STRUCTURE_CAT
, mdv.category_set_id c_category_set_id
, flo1.meaning c_yes
, flo2.meaning c_no
FROM gl_sets_of_books gsb
, financials_system_parameters fsp
, mtl_default_sets_view mdv
, fnd_lookups flo1
, fnd_lookups flo2
WHERE gsb.set_of_books_id = fsp.set_of_books_id
AND mdv.functional_area_id = 2
AND flo1.lookup_type = 'YES_NO'
AND flo1.lookup_code = 'Y'
AND flo2.lookup_type = 'YES_NO'
AND flo2.lookup_code = 'N'
Query - Buyer
SELECT distinct(pov.vendor_name||papf.full_name)
, papf.full_name Buyer
, pov.vendor_name Vendor
, pov.vendor_id
, papf. person_id employee_id
FROM PER_ALL_PEOPLE_F PAPF
, po_vendors pov
, po_headers poh
WHERE poh.agent_id = papf.person_id
AND poh.vendor_id = pov.vendor_id
AND poh.type_lookup_code in ('STANDARD','BLANKET','PLANNED')
AND nvl(poh.closed_code,'OPEN') NOT IN ('FINALLY CLOSED', 'CLOSED')
AND nvl(poh.cancel_flag,'N') = 'N'
/* AND papf.full_name = nvl(:P_buyer,papf.full_name) */
/* Bug#2453022 Commented out the above condition and replaced
it as follows as the user parameter P_Buyer will now return the id and not the name */
AND papf.person_id = nvl(:P_buyer,papf.person_id)
AND pov.vendor_name BETWEEN nvl(:P_vendor_from,pov.vendor_name)
AND nvl(:P_vendor_to,pov.vendor_name)
AND EXISTS (select 'x'
from po_lines pol
, po_line_locations pll
, po_releases por
where pol.po_header_id = poh.po_header_id
and pol.po_line_id = pll.po_line_id
and nvl(pll.closed_code,'OPEN') not in ('FINALLY CLOSED','CLOSED')
and nvl(pol.closed_code,'OPEN') not in ('FINALLY CLOSED','CLOSED')
and nvl(por.closed_code,'OPEN') not in ('FINALLY CLOSED','CLOSED')
and nvl(pll.cancel_flag,'N') = 'N'
and nvl(pol.cancel_flag,'N') = 'N'
and nvl(por.cancel_flag,'N') = 'N'
and pll.shipment_type in ('STANDARD','BLANKET','SCHEDULED')
and pll.po_release_id = por.po_release_id(+))
AND PAPF.EMPLOYEE_NUMBER IS NOT NULL
AND TRUNC(SYSDATE) BETWEEN PAPF.EFFECTIVE_START_DATE AND
PAPF.EFFECTIVE_END_DATE
AND DECODE(HR_SECURITY.VIEW_ALL ,'Y' , 'TRUE',
HR_SECURITY.SHOW_RECORD('PER_ALL_PEOPLE_F',PAPF.PERSON_ID,
PAPF.PERSON_TYPE_ID,
PAPF.EMPLOYEE_NUMBER,PAPF.APPLICANT_NUMBER )) = 'TRUE'
AND DECODE(HR_GENERAL.GET_XBG_PROFILE,'Y', PAPF.BUSINESS_GROUP_ID ,
HR_GENERAL.GET_BUSINESS_GROUP_ID) = PAPF.BUSINESS_GROUP_ID
ORDER BY papf.full_name
, pov.vendor_name
Query - PO
SELECT distinct(pol.line_num) Line
, poh.segment1 ||decode(por.release_num,null,'','-')|| por.release_num PO_Number_Release
, poh.currency_code C_CURRENCY
, plt.line_type Line_Type
, &P_FLEX_CAT C_FLEX_CAT
, &P_FLEX_ITEM C_FLEX_ITEM
, pol.item_revision Rev
, pol.item_description Description
, pol.po_header_id
, pol.po_line_id
, poh.vendor_id
, poh.agent_id
, psp.manual_po_num_type
, poh.segment1
, por.release_num
, nvl(por.po_release_id,-1) release_id
FROM po_line_locations pll
, mtl_system_items msi
, mtl_categories mca
, po_lines pol
, po_releases por
, po_headers poh
, po_line_types plt
, po_system_parameters psp
WHERE poh.po_header_id = pol.po_header_id
AND pol.po_line_id = pll.po_line_id
AND pll.po_release_id = por.po_release_id(+)
AND pol.line_type_id = plt.line_type_id
AND pol.item_id = msi.inventory_item_id(+)
AND msi.organization_id(+) = :c_organization_id
AND pol.category_id = mca.category_id
AND nvl(pll.closed_code,'OPEN') not in ('FINALLY CLOSED','CLOSED')
AND nvl(pol.closed_code,'OPEN') not in ('FINALLY CLOSED','CLOSED')
AND nvl(poh.closed_code,'OPEN') not in ('FINALLY CLOSED','CLOSED')
AND nvl(por.closed_code,'OPEN') not in ('FINALLY CLOSED','CLOSED')
AND nvl(pll.cancel_flag,'N') = 'N'
AND nvl(pol.cancel_flag,'N') = 'N'
AND nvl(poh.cancel_flag,'N') = 'N'
AND nvl(por.cancel_flag,'N') = 'N'
AND pll.shipment_type in ('STANDARD', 'BLANKET', 'SCHEDULED')
ORDER BY decode(psp.manual_po_num_type,'NUMERIC',
--bug#3614924
decode(rtrim(poh.segment1,'0123456789'),NULL,to_number(poh.segment1))
, null)
, decode(psp.manual_po_num_type,'NUMERIC',null, poh.segment1)
, por.release_num
, pol.line_num
Query - Shipment
SELECT pll.shipment_num Shipment
, nvl(pll.promised_date,pll.need_by_date) P_Date
, pol.unit_meas_lookup_code Unit
, DECODE (POL.order_type_lookup_code, /* <SERVICES FPJ> */
'RATE', PLL.amount,
'FIXED PRICE', PLL.amount,
PLL.quantity) Ordered
, DECODE (POL.order_type_lookup_code, /* <SERVICES FPJ> */
'RATE', PLL.amount_received,
'FIXED PRICE', PLL.amount_received,
PLL.quantity_received) Received
, DECODE (POL.order_type_lookup_code, /* <SERVICES FPJ> */
'RATE', PLL.amount_billed,
'FIXED PRICE', PLL.amount_billed,
PLL.quantity_billed) Billed
, pll.price_override Unit_Price
, DECODE (POL.order_type_lookup_code, /* <SERVICES FPJ> */
'RATE', (PLL.amount - NVL(PLL.amount_received, 0))/
DECODE(NVL(PLL.amount, 0), 0, 1, PLL.amount),
'FIXED PRICE', (PLL.amount - NVL(PLL.amount_received, 0))/
DECODE(NVL(PLL.amount, 0), 0, 1, PLL.amount),
(NVL(PLL.quantity, 0) - NVL(PLL.quantity_received, 0))/
DECODE (NVL(PLL.quantity, 0), 0, 1, PLL.quantity)) * 100 Percent_Due
, plc.displayed_field Open_For
, pll.po_line_id
, nvl(pll.po_release_id,-1) join_release_id
FROM po_line_locations pll
, po_lines pol
, po_lookup_codes plc
WHERE pol.po_line_id = pll.po_line_id
AND nvl(pll.closed_code,'OPEN') not in ('FINALLY CLOSED','CLOSED')
AND nvl(pol.closed_code,'OPEN') not in ('FINALLY CLOSED','CLOSED')
AND nvl(pll.cancel_flag,'N') = 'N'
AND nvl(pol.cancel_flag,'N') = 'N'
AND plc.lookup_type = 'DOCUMENT STATE'
AND plc.lookup_code = nvl(pll.closed_code, 'OPEN')
AND pll.shipment_type in ('STANDARD', 'BLANKET', 'SCHEDULED')
ORDER BY pll.shipment_num -
Dear Experts,
My client has change the release procedure, but they have not closed the open Purchase orders, now we are trying to close the open PO system is not allowing us to close the Open Po , complete delivery indicator is in grey mode , Can any body help me How i wll i close the Open Purchase orders
Thanks
HirwaniHi Hirwani,
I have seen this a few times before.
I found other customer has similar problem as the release strategy has changed
after creation of the SES please review the explanation from developer
:(whose release code is 03 )
When you try to revoke the acceptance of the service entry sheets
in ML81N or ML81, the 'Enter release code' pop up window appears, but
entering the code that is determined via the menu path Goto -> Entry
Sheet -> Release Strategy (which is the 03), the SES remains the same.
Nothing changes. The status does not vary and no error or warning
message is issued.
Checking the customizing for the release strategy, the release code
03 should have never been assigned to the SES 800024272 as the values
for the relevant characteristics were not included under that code.
I do not know how it was managed to accept the SES.
Now, when you try to revoke it, it seems that no release
strategy can be determined, not even including the values RCARESANO
and 012 between the valid values for the characteristics of the release
code 03 (RCARESANO as valid value for SUPERVISOR_SERVICIOS
(CESSR-ERNAM)and 012 as valid value for GRUPO_COMPRAS (CESSR-EKGRP)).
The only Possibility is to change now the SES so that the release
strategy can be re-determined by the system.This is the Only possible
way that the system can redetermine the Release Strategy , but it will
not be possible to do so as the SES is already accepted with the Old
strategy and it does not admit any further changes.
To be able to change it you would need to revoke the SES first,
but this Will also not be possible as the Release Strategy was changed
and the system still applies the old rules for determining the Release.
Solution to our Problem
The Only way to revoke the SES is to Restore back the Old Strategy that
was prior to 03 in the customizing.So now what will happen is that by
applying the Old Rules the System will be able to revoke the SES that#s
using the Old one. Once the necessary SES are revoked then go back to
customizing and apply the new strategy as it was did now, and
Change the SES and save , the new value of the Release Strategy will get
updated in the table ESSR and the field frgsx will now have 03.
Problems associated if the Release strategy is changed
Actually the release strategy is not supposed to be changed when there
are some documents in the System that uses it and even if you change the
Strategy the Old records will not get AUTOMATICALLY UPDATED by the
system.The Release Strategy routine has to run again to update the
values. This is Possible by changing the document SES ,
This change will happen only if the SES is not accepted and if its
accepted then you need to revoke and to revoke you need to restore the
old strategy , revoke and then change the SES , and have to go back to
customizing and Start using the New strategy from now on by doing so the
Routine will update the old record with the new strategy.
You may want to use CEKKO-BADAT(Requisition Date) or any other
structure in CEBAN or CEKKO and create a new release strategy
to differentiate the old release strategy.
Alternatively using the corresponding user exit to redermine the BAdI might help but my first suggestion would be the best.
Purchase requisition
M06E0002 - for item wise release
M06E0005 - for overall release
External purchasing document
M06E0004
Hope this is of help to you,
Kind Regards,
Matthew -
DEAR ALL,
WHETHER WE HAVE A STANDARD REPORT IN SAP TO GET QUANTITY AND VALUE DATA OF BACK DATED OPEN PURCHASE ORDER?
PURCHASE ORDER HAS BEEN PREPARED IN JANUARY, DOWN PAYMENT IS MADE IN THE MONTH OF MARCH, MATERIAL IS RECEIVED (GRN MADE) IN AUGUST
IN ABOVE CASE WHEN I GENERATE A OPEN PURCHASE ORDER REPORT AS ON 31.03.2008 IT IS NOT SHOWING ME THE QUANTITY & VALUE DETAILS OF OPEN PURCHASE ORDERS.
PLEASE LET ME KNOW THE WORK AROUND.
WAITING
AMITDear,
Enter ME2N, Select WE101 in selection parameter field.
Then enter other required detail and click on execute button.
So system give you list of open purchase order.
Then click on change layout button.
Transfer Still to be invoiced (qty) field Column Set to Display column set mode.
And click on continua button.
Duse to this field you can track for how many quantity good receipt is created of purchase order.
Regards,
Mahesh Wagh -
Hi, All,
Is there any way to know how many open purchase order quantity in the SAP system?
If I want to differentiate different business unit open purchase order, how I can do?
What's the T-code?
ThanksHi,
You can use ME2M, ME2N, ME2L, in the field Selection Parameters on the initial screen specify WE101 & the reports will list out all PO's for which GR is pending (i.e. Open PO's). Now you can change layout add / remove fields as per your need. You can also sub-total on plant or purchasing org. thereby getting the data you require. Also in the selection screen in the field Scope of List you can specify ALV to get an alv listing.
Hope the above answers your query.
Regards,
Vivek -
Open Purchase Order, Sales Order and WIP Jobs
Hello,
Can some one help me with the query to find all open sales order, open purchase orders and open WIP jobs for an organization.
Is there any way i can fetch this information from Oracle forms directly without running any backend query ? If yes, please help me with the navigation and other details.
Thanks,
Shilpa.XtreMe Imperium - Retailer sales reporting, a centralized reporting system for a malls POS data. It provides access to detailed, consolidated reporting of all retailers. We collect your data, and deliver it through reports that are customized to meet your needs.
XtreMe Imperium Retailer Sales Reporting allows you to
Manage master information of all retailers
Web based daily / optional intraday* reporting of POS data
Accurate sales information from retailers. No Misreporting
Analytical Information of brand & category performance
Average spend size with daily trends
MIS to strategize and implement Mall promotions
How it works
It all starts with the client software running on each location’s POS server. This client is a small application that is set up to execute using Windows Scheduler. This gives you full control over how frequently the data is sent to the server. Once the data is loaded to the server, using secure FTP over a broadband internet connection, it is loaded in to a MS SQL database. Once there, it is available for reporting using an interface that is simple and easy to navigate.
for more: [http://pftec.com/MallManagement/retailer-sales-reporting.aspx|http://pftec.com/MallManagement/retailer-sales-reporting.aspx] -
Open Purchase Order (VA01)
Hi Guru's,
I am new to SD Module. My requirement is to create Sales Order .
That SO should take Open Purchase order. How to check the condition for this requirement?
Is any status or Indicatior will maintain in tables??
Thanks & Regards,
Meenakshi.Hi
SInce it is a customer PO and not created as a document in SAP, system cannot check the open quantities in a customer PO.
But, we can always check whether that customer PO has already been used for creating a Sales Order or not? In the definition of the Sales Document type, if the checkbox for the field 'Check PO Number' (not sure if it is a field or checkbox) is selected, then while creating the sales order system checks whether any sales order has been created previously with the same PO number.
Thanks,
Ravi -
Open Purchase Order table.
Hi
I want to prepare a report which should display open Purchase Order quantity according to latest delivery date.
I explain with a example.
Say a material has 3 Purchase Orders with delivery date as 1st June,15th June and 20th June.Then system should pick the Purchase Order with delivery date as 1st June and it should dislay the quantity which is yet to be delivered,means there is possibility that GR has already been done for some of the quantity.
To summarize the report should pick the latest Purchase Quantity and display the quantity yet to be delivered.Can anybody let me kow the Tables to be refered fro the same.
Regards
Vaibhav MahajanHi Vaibhav
You can go to report by ME2N. Here you have multiple options for your reoport. In selection parameters you can put OPEN PO nad put the delievery date. There are many combinations available in this report.
Please let me know if it doesn't work.
Regards
SS -
Urgent :Doubt on open Purchase orders
Hi friends,
i will be more help full if anybody can help me on below issue how to find open PO and partially open PO.
Only open purchase orders will be extracted for conversion into Destination Server. An open purchase order is defined as any unshipped, non-cancelled with open quantities. In regards to, partially open purchase orders, we will only convert open units (i.e. Original ordered qty was 300; 70 have shipped, 230 remain open Target Server sales order will have an original order qty of 230).
also where to find that Sub Contracting orders and Sample orders.
Orders not considered for migration because they will have either shipped in full or deleted prior to data migration as a part of data clean-up: ALL subcontracting orders; sample orders
please help me on the above two issues.
thanks and Regards,
Gokul.Hi
First take the ALL Po's from EKKO and EKPO tables and check for the different GR's and GI's qty's from MKPF and MSEG tables and you have to compare the PO qty with the total GR/GI qty's and to find the OPEN po's
see the sample report
*& Report ZMM_PO_REPORT
REPORT ZMM_PO_REPORT message-Id yb
NO STANDARD PAGE HEADING
LINE-COUNT 60(1)
LINE-SIZE 230.
D A T A B A S E T A B L E S D E C L A R A T I O N
TABLES: lfa1, " Vendor Master
t161, " PO Doc Types
t024, " Purchase Groups
ekko. " PO Header
T Y P E S D E C L A R A T I O N S
Purchase Orders Main Structure
TYPES: BEGIN OF s_po,
ebeln TYPE ebeln, " PO No.
ebelp TYPE ebelp, " PO Item
bstyp TYPE bstyp, " PO Category
bukrs TYPE bukrs, " Company Code
bsart TYPE bbsrt, " PO Type
lifnr TYPE lifnr, " Vendor No
ekgrp TYPE bkgrp, " Purchase Group
waers TYPE waers, " Currency
bedat TYPE etbdt, " PO Date
txz01 TYPE txz01, " Material Text
werks TYPE ewerk, " Plant
lgort TYPE lgort_d, " Storage Location
matkl TYPE matkl, " Material Group
menge TYPE bamng, " PR Quantity
meins TYPE bamei, " UOM
bprme TYPE bbprm, " Price Unit
netpr TYPE netpr, " Net price
peinh TYPE peinh, " Price Unit UOM
pstyp TYPE pstyp, " Item Category
knttp TYPE knttp, " Account Assignment Category
END OF s_po.
Purchase Orders History Structure
TYPES: BEGIN OF s_account,
ebeln TYPE ebeln, " PO No.
ebelp TYPE ebelp, " PO Item
gjahr TYPE mjahr, " Fiscal Year
belnr TYPE mblnr, " PO Invoice No
menge TYPE menge_d, " PR Quantity
wrbtr TYPE wrbtr, " Price in Local Currency
dmbtr TYPE dmbtr, " Price in Foreign Currency
waers TYPE waers, " Currency
shkzg TYPE shkzg, " Dr/Cr Indicator
END OF s_account.
Purchase Orders History Structure(Item Sum)
TYPES: BEGIN OF s_inv_sum,
ebeln TYPE ebeln, " PO No.
ebelp TYPE ebelp, " PO Item
menge TYPE menge_d, " PR Quantity
wrbtr TYPE wrbtr, " Price in Foreign Currency
waers TYPE waers, " Currency
END OF s_inv_sum.
Purchase Orders Main Structure
TYPES: BEGIN OF s_rep,
lifnr TYPE lifnr, " Vendor No
ebeln TYPE ebeln, " PO No.
ebelp TYPE ebelp, " PO Item
bstyp TYPE bstyp, " PO Category
bsart TYPE bbsrt, " PO Type
ekgrp TYPE bkgrp, " Purchase Group
waers TYPE waers, " Currency
bedat TYPE etbdt, " PO Date
txz01 TYPE txz01, " Material Text
werks TYPE ewerk, " Plant
lgort TYPE lgort_d, " Storage Location
matkl TYPE matkl, " Material Group
menge TYPE bamng, " PR Quantity
meins TYPE bamei, " UOM
bprme TYPE bbprm, " Price Unit
netpr TYPE netpr, " Net price
peinh TYPE peinh, " Price Unit UOM
pstyp TYPE pstyp, " Item Category
knttp TYPE knttp, " Account Assignment Category
name1 TYPE name1, " Plant
orewr TYPE netpr, " To be Invoiced Price
curr TYPE waers, " Inv Doc Currency
END OF s_rep.
D A T A D E C L A R A T I O N S
DATA: gv_title1 TYPE sylisel, " Report title
gv_dial. " Color flag
C O N S T A N T S D E C L A R A T I O N S
CONSTANTS: c_x VALUE 'X', " Flag X
c_h VALUE 'H', " Debit
c_vgabe TYPE vgabe VALUE '2'. " Transaction Type
I N T E R N A L T A B L E S D E C L A R A T I O N S
DATA: i_po TYPE STANDARD TABLE OF s_po WITH HEADER LINE,
" Purchase Order
i_inv TYPE STANDARD TABLE OF s_inv_sum WITH HEADER LINE,
" PO Invoice Values
i_rep TYPE STANDARD TABLE OF s_rep WITH HEADER LINE,
" PO Invoice Values
i_ekbe TYPE STANDARD TABLE OF s_account WITH HEADER LINE.
" PO Invoice Values
S E L E C T I O N S C R E E N *
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
SELECT-OPTIONS: s_lifnr FOR lfa1-lifnr MATCHCODE OBJECT kred,
s_ebeln FOR ekko-ebeln MATCHCODE OBJECT mekk,
s_bsart FOR t161-bsart,
s_ekgrp FOR t024-ekgrp,
s_bedat FOR ekko-bedat.
SELECTION-SCREEN END OF BLOCK b1.
I N I T I A L I Z A T I O N *
INITIALIZATION.
A T S E L E C T I O N - S C R E E N *
AT SELECTION-SCREEN.
Validate the screen fields
PERFORM validate_screen.
S T A R T - O F - S E L E C T I O N *
START-OF-SELECTION.
Fetch main data
PERFORM fetch_data.
T O P - O F - P A G E *
TOP-OF-PAGE.
Header of the List
PERFORM header.
E N D - O F - P A G E *
Footer
END-OF-PAGE.
ULINE.
E N D - O F - S E L E C T I O N *
END-OF-SELECTION.
Display the Report Output data
PERFORM display_data.
At Line-Selection
AT LINE-SELECTION.
When double clicked on EBELN display the details of Purchase Doc
PERFORM line_sel.
*& Form validate_screen
Validation of Selection Screen fields
FORM validate_screen .
Validation of Vendor Number
CLEAR lfa1-lifnr.
IF NOT s_lifnr[] IS INITIAL.
SELECT lifnr UP TO 1 ROWS
INTO lfa1-lifnr
FROM lfa1
WHERE lifnr IN s_lifnr.
ENDSELECT.
IF sy-subrc <> 0.
MESSAGE e000 WITH 'Invalid Vendor'(002).
ENDIF.
ENDIF.
Validation of PO Number
CLEAR ekko-ebeln.
IF NOT s_ebeln[] IS INITIAL.
SELECT ebeln UP TO 1 ROWS
INTO ekko-ebeln
FROM ekko
WHERE ebeln IN s_ebeln.
ENDSELECT.
IF sy-subrc <> 0.
MESSAGE e000 WITH 'Invalid Document Number'(003).
ENDIF.
ENDIF.
Validation of PO Document Type
CLEAR t161-bsart.
IF NOT s_bsart[] IS INITIAL.
SELECT bsart UP TO 1 ROWS
INTO t161-bsart
FROM t161
WHERE bsart IN s_bsart.
ENDSELECT.
IF sy-subrc <> 0.
MESSAGE e000 WITH 'Invalid Purchase Document Type'(004).
ENDIF.
ENDIF.
Validation of Purchasing Group
CLEAR t024-ekgrp.
IF NOT s_ekgrp[] IS INITIAL.
SELECT ekgrp UP TO 1 ROWS
INTO t024-ekgrp
FROM t024
WHERE ekgrp IN s_ekgrp.
ENDSELECT.
IF sy-subrc <> 0.
MESSAGE e000 WITH 'Invalid Purchasing Group'(005).
ENDIF.
ENDIF.
ENDFORM. " validate_screen
*& Form fetch_data
Fetching the PO related data from Database Tables
FORM fetch_data .
CLEAR i_po.
REFRESH i_po.
SELECT a~ebeln " PO No.
b~ebelp " PO Item
a~bstyp " PO Category
a~bukrs " Company Code
a~bsart " PO Type
a~lifnr " Vendor No
a~ekgrp " Purchase Group
a~waers " Currency
a~bedat " PO Date
b~txz01 " Material Text
b~werks " Plant
b~lgort " Storage Location
b~matkl " Material Group
b~menge " PR Quantity
b~meins " UOM
b~bprme " Price Unit
b~netpr " Net price
b~peinh " Price Unit UOM
b~pstyp " Item Category
b~knttp " Account Assignment Category
INTO TABLE i_po
FROM ekko AS a JOIN ekpo AS b
ON a~ebeln = b~ebeln
WHERE a~ebeln IN s_ebeln AND
a~lifnr IN s_lifnr AND
a~ekgrp IN s_ekgrp AND
a~bsart IN s_bsart AND
a~bedat IN s_bedat.
SORT i_po BY ebeln ebelp.
break-point.
IF NOT i_po[] IS INITIAL.
Fetch the PO History/Invoice Details from EKBE Table
CLEAR i_ekbe.
REFRESH i_ekbe.
SELECT ebeln " PO No.
ebelp " PO Item
gjahr " Fiscal Year
belnr " PO Invoice No
menge " PR Quantity
wrbtr " Price in Local Currency
dmbtr " Price in Foreign Currency
waers " Currency
shkzg " Dr/Cr Indicator
INTO TABLE i_ekbe
FROM ekbe
FOR ALL ENTRIES IN i_po
WHERE ebeln = i_po-ebeln AND
ebelp = i_po-ebelp AND
vgabe = c_vgabe.
break-point.
IF sy-subrc = 0.
SORT i_ekbe BY ebeln ebelp.
LOOP AT i_ekbe.
IF i_ekbe-shkzg = c_h.
i_ekbe-wrbtr = i_ekbe-wrbtr * -1.
ENDIF.
MODIFY i_ekbe.
ENDLOOP.
break-point.
Sum up the Item wise Invoice totals
LOOP AT i_ekbe.
AT END OF ebelp.
READ TABLE i_ekbe INDEX sy-tabix.
SUM.
MOVE-CORRESPONDING i_ekbe TO i_inv.
APPEND i_inv.
ENDAT.
CLEAR i_inv.
ENDLOOP.
SORT i_inv BY ebeln ebelp.
break-point.
ENDIF.
ENDIF.
Move the Vendor Name and Invoice Values to I_rep Internal Table
LOOP AT i_po.
MOVE-CORRESPONDING i_po TO i_rep.
CLEAR i_inv.
READ TABLE i_inv WITH KEY ebeln = i_po-ebeln
ebelp = i_po-ebelp.
IF sy-subrc = 0.
i_rep-orewr = ( i_po-menge - i_inv-menge ) * i_po-netpr.
i_rep-curr = i_inv-waers.
ELSE.
i_rep-orewr = i_po-menge * i_po-netpr.
i_rep-curr = i_po-waers.
ENDIF.
break-point.
Get the Vendor Name
CLEAR lfa1-name1.
SELECT SINGLE name1 FROM lfa1 INTO lfa1-name1
WHERE lifnr = i_po-lifnr.
IF sy-subrc = 0.
i_rep-name1 = lfa1-name1.
ENDIF.
APPEND i_rep.
CLEAR i_rep.
break-point.
ENDLOOP.
SORT i_rep BY lifnr ebeln ebelp.
DELETE i_rep WHERE orewr LE 0.
break-point.
ENDFORM. " fetch_data
*& Form display_data
Display the Report Output data
FORM display_data .
DATA: lv_flag, " New Flag
lv_rec TYPE i. " No of Records
CLEAR lv_rec.
IF i_rep[] IS INITIAL.
MESSAGE e000 WITH 'No Data found'(022).
ELSE.
LOOP AT i_rep.
Toggle Color
PERFORM toggle_color.
IF lv_flag <> space.
NEW-LINE.
ENDIF.
At New Purchase Document
AT NEW ebeln.
WRITE:/1 sy-vline, 2(10) i_rep-ebeln INTENSIFIED OFF.
lv_flag = c_x.
lv_rec = lv_rec + 1.
ENDAT.
WRITE: 1 sy-vline,
12 sy-vline,13(4) i_rep-bsart,
17 sy-vline,18(10) i_rep-lifnr,
28 sy-vline,29(35) i_rep-name1,
64 sy-vline,65(4) i_rep-ekgrp,
69 sy-vline,70(10) i_rep-bedat,
80 sy-vline,81(5) i_rep-ebelp,
86 sy-vline,87(40) i_rep-txz01,
127 sy-vline,128(9) i_rep-matkl,
137 sy-vline,138(1) i_rep-pstyp,
139 sy-vline,140(1) i_rep-knttp,
141 sy-vline,142(4) i_rep-werks,
146 sy-vline,147(4) i_rep-lgort,
151 sy-vline,152(13) i_rep-menge UNIT i_rep-meins,
165 sy-vline,166(3) i_rep-meins,
169 sy-vline,170(15) i_rep-netpr CURRENCY i_rep-waers,
185 sy-vline,186(4) i_rep-waers,
190 sy-vline,191(5) i_rep-peinh,
196 sy-vline,197(4) i_rep-bprme,
201 sy-vline,202(15) i_rep-orewr CURRENCY i_rep-curr,
217 sy-vline,218(4) i_rep-curr,
222 sy-vline,223(7) i_rep-bstyp centered,
230 sy-vline.
NEW-LINE.
hide: i_rep-ebeln.
ENDLOOP.
ULINE.
FORMAT COLOR OFF.
WRITE : /2 'Total Number of Purchasing Documents:'(025) COLOR 3,
lv_rec COLOR 3.
ENDIF.
ENDFORM. " display_data
*& Form header
Write the Report Header
FORM header .
FORMAT RESET.
header
WRITE:/1(230) 'LIST OF PURCHASE DOCUMENTS PER VENDOR'(006) CENTERED.
SKIP.
FORMAT COLOR COL_HEADING.
ULINE.
WRITE:/1 sy-vline,2(10) 'Pur.Doc.No'(006) CENTERED,
12 sy-vline,13(4) 'Type'(007),
17 sy-vline,18(10) 'Vendor'(008) CENTERED,
28 sy-vline,29(35) 'Name'(009) CENTERED,
64 sy-vline,65(4) 'PGrp'(010) CENTERED,
69 sy-vline,70(10) 'Doc.Date'(012) CENTERED,
80 sy-vline,81(5) 'Item'(011),
86 sy-vline,87(40) 'Material Short Text'(024) CENTERED,
127 sy-vline,128(9) 'Mat.Group'(013),
137 sy-vline,138(1) 'I',
139 sy-vline,140(1) 'A',
141 sy-vline,142(4) 'Plnt'(014),
146 sy-vline,147(4) 'SLoc'(015),
151 sy-vline,152(13) 'Quantity'(016) CENTERED,
165 sy-vline,166(3) 'UoM'(017),
169 sy-vline,170(15) 'Net Value'(018) CENTERED,
185 sy-vline,186(4) 'Curr'(019),
190 sy-vline,191(5) 'Per'(020),
196 sy-vline,197(4) 'Unit'(021),
201 sy-vline,202(15) 'To be Invoiced'(023) CENTERED,
217 sy-vline,218(4) 'Curr'(019),
222 sy-vline,223(7) 'Doc.Cat'(026),
230 sy-vline.
ULINE.
ENDFORM. " header
*& Form toggle_color
This routine alters the color of the records in the list
FORM toggle_color.
IF gv_dial = space.
FORMAT COLOR COL_NORMAL INTENSIFIED OFF.
gv_dial = c_x.
ELSE.
FORMAT COLOR 1 INTENSIFIED OFF.
CLEAR gv_dial.
ENDIF.
ENDFORM. " toggle_color
*& Form LINE_SEL
*When double clicked on EBELN field display the details of Purchase Doc
FORM line_sel.
CASE sy-lsind.
WHEN '1'.
DATA: lv_field(20),
lv_value(10),
lv_bstyp like i_rep-bstyp.
clear: lv_bstyp,lv_value, lv_field.
GET CURSOR FIELD lv_field VALUE lv_value.
IF lv_field = 'I_REP-EBELN'.
IF NOT lv_value IS INITIAL.
READ LINE sy-index FIELD VALUE i_rep-bstyp
INTO lv_bstyp.
READ CURRENT LINE FIELD VALUE i_rep-bstyp INTO lv_bstyp.
if lv_bstyp = 'F'.
SET PARAMETER ID 'BES' FIELD lv_value.
CALL TRANSACTION 'ME23N' AND SKIP FIRST SCREEN.
elseif ( lv_bstyp = 'K' or lv_bstyp = 'L' ).
SET PARAMETER ID 'VRT' FIELD lv_value.
CALL TRANSACTION 'ME33' AND SKIP FIRST SCREEN.
elseif lv_bstyp = 'A'.
SET PARAMETER ID 'ANF' FIELD lv_value.
CALL TRANSACTION 'ME43' AND SKIP FIRST SCREEN.
endif.
ENDIF.
ENDIF.
ENDCASE.
ENDFORM. " line_sel
<b>Reward points for useful Answers</b>
Regards
Anji -
BADI or function module for updating open purchase orders
Hi all,
Does anyone know of a BADI or function module which can be used for updating item prices in open purchase orders?
All helpful answers are highly appreciated!
Regards,
MV1 ) execute this program in se38 .enter the input as transaction code for which you want list of User
Exit.
REPORT z_find_userexit NO STANDARD PAGE HEADING.
*& Enter the transaction code that you want to search through in order
*& to find which Standard SAP® User Exits exists.
*& Tables
TABLES : tstc, "SAP® Transaction Codes
tadir, "Directory of Repository Objects
modsapt, "SAP® Enhancements - Short Texts
modact, "Modifications
trdir, "System table TRDIR
tfdir, "Function Module
enlfdir, "Additional Attributes for Function Modules
tstct. "Transaction Code Texts
*& Variables
DATA : jtab LIKE tadir OCCURS 0 WITH HEADER LINE.
DATA : field1(30).
DATA : v_devclass LIKE tadir-devclass.
*& Selection Screen Parameters
SELECTION-SCREEN BEGIN OF BLOCK a01 WITH FRAME TITLE text-001.
SELECTION-SCREEN SKIP.
PARAMETERS : p_tcode LIKE tstc-tcode OBLIGATORY.
SELECTION-SCREEN SKIP.
SELECTION-SCREEN END OF BLOCK a01.
*& Start of main program
START-OF-SELECTION.
Validate Transaction Code
SELECT SINGLE * FROM tstc
WHERE tcode EQ p_tcode.
Find Repository Objects for transaction code
IF sy-subrc EQ 0.
SELECT SINGLE * FROM tadir
WHERE pgmid = 'R3TR'
AND object = 'PROG'
AND obj_name = tstc-pgmna.
MOVE : tadir-devclass TO v_devclass.
IF sy-subrc NE 0.
SELECT SINGLE * FROM trdir
WHERE name = tstc-pgmna.
IF trdir-subc EQ 'F'.
SELECT SINGLE * FROM tfdir
WHERE pname = tstc-pgmna.
SELECT SINGLE * FROM enlfdir
WHERE funcname = tfdir-funcname.
SELECT SINGLE * FROM tadir
WHERE pgmid = 'R3TR'
AND object = 'FUGR'
AND obj_name = enlfdir-area.
MOVE : tadir-devclass TO v_devclass.
ENDIF.
ENDIF.
Find SAP® Modifications
SELECT * FROM tadir
INTO TABLE jtab
WHERE pgmid = 'R3TR'
AND object = 'SMOD'
AND devclass = v_devclass.
SELECT SINGLE * FROM tstct
WHERE sprsl EQ sy-langu
AND tcode EQ p_tcode.
FORMAT COLOR COL_POSITIVE INTENSIFIED OFF.
WRITE:/(19) 'Transaction Code - ',
20(20) p_tcode,
45(50) tstct-ttext.
SKIP.
IF NOT jtab[] IS INITIAL.
WRITE:/(95) sy-uline.
FORMAT COLOR COL_HEADING INTENSIFIED ON.
WRITE:/1 sy-vline,
2 'Exit Name',
21 sy-vline ,
22 'Description',
95 sy-vline.
WRITE:/(95) sy-uline.
LOOP AT jtab.
SELECT SINGLE * FROM modsapt
WHERE sprsl = sy-langu AND
name = jtab-obj_name.
FORMAT COLOR COL_NORMAL INTENSIFIED OFF.
WRITE:/1 sy-vline,
2 jtab-obj_name HOTSPOT ON,
21 sy-vline ,
22 modsapt-modtext,
95 sy-vline.
ENDLOOP.
WRITE:/(95) sy-uline.
DESCRIBE TABLE jtab.
SKIP.
FORMAT COLOR COL_TOTAL INTENSIFIED ON.
WRITE:/ 'No of Exits:' , sy-tfill.
ELSE.
FORMAT COLOR COL_NEGATIVE INTENSIFIED ON.
WRITE:/(95) 'No User Exit exists'.
ENDIF.
ELSE.
FORMAT COLOR COL_NEGATIVE INTENSIFIED ON.
WRITE:/(95) 'Transaction Code Does Not Exist'.
ENDIF.
Take the user to SMOD for the Exit that was selected.
AT LINE-SELECTION.
GET CURSOR FIELD field1.
CHECK field1(4) EQ 'JTAB'.
SET PARAMETER ID 'MON' FIELD sy-lisel+1(10).
CALL TRANSACTION 'SMOD' AND SKIP FIRST SCREEN.
2) Second way is to go to transaction code SE93 .enter transaction code click on display.
There you will see the package. Copy that package name.
Go to transaction code se84
Enhancements -customer exits-enhancementsu2014enter package there and execute.
You will get list of exits.
3) BAPI for PO change is
BAPI_PO_CHANGE -
HI Experts,
I am doing Purchase Orders migration from One SAp to another SAP. For this I thought i can use the goto - > messages -> output option and send An idoc from Current SAP to new SAP. It has generated the IDOC type as ORDERS and moved successfully to the new system as well. in the inbound system the This IDOC is trying to create a Sales order than a PO. I Couldnt fine any applicable processcodes for the Inbound IDOC partner profile to create a PO. Any suggestions is much welcomed.
Regards
ElphiHi,
Partner Profile should of type "LS" (Logical System). It appears that you are using a Partner Profile of type "VN" (Vendor).
It will create a Purchase Order if you use "LS".
Regards,
Srilatha.
Maybe you are looking for
-
My iMac (2010 intel model) does not recognise or communicate with my external seagate drive as a time machine for back ups since I had the 1TB Seagate replacement hard drive as part of the replacement prgram with OSX LION 10.5.8 installed. Is this be
-
Balance of the line items is not zero in FBRA
Hi Team, we are resetting customer cleared docuemnt using FBRA t ocode it giving erro message like "Balance of the line items is not zero". we tried all possibilities, but it is giving same error. we search in SCN.SAP and found one note 1914004. but
-
I am encountering an issue while printing from Lightroom ( I recently upgraded from Lightroom 4 to Lightroom 4.4) to an Epson Stylus Pro 3800. Using Epson 13 x 19 paper, and printing an image that should be 11 x 18, the result is a portion of the ima
-
Hi, Is there any way make an entry into MARM table manually? Regards, Pra
-
Data loss during the initialization of sales documents
Hi, I have to initialize all my sales documents data with the extractors 2LIS_11_VAITM, 2LIS_11_VAHDR and 2LIS_11_VASCL. I have done those steps : 1 - Clear set up tables for application 11. 2 - Fill the setup table for application 11. 3 - Do Init wi