What is process returns inventory to vendor
Hi can you please help us for process returns inventory to vendor.
if i have purchase 100ltr & sold only 80 ltr how can i have returns balance 20ltr to vendor.
No need to post in MM forum .
If you post this in MM forum, it will be rejected.
Please put some effort in search. You will get many discussions which will explain you the details about return delivery process.
Similar Messages
-
Return Inventory to Vendor due to fault
Hi expert,
I am using the BAPI_GOODSMVT_CREATE for return of inventory to vendor using the Gm_code = '06' and mvmt type 122.
I am getting the error as "Goods movement not possible with mvmt type 122".
What is the reason for this.
Thanks&Regards,
Karthik.
Edited by: karthi keyan on Jan 31, 2008 5:01 PMHi,
It is often beneficial to check the source of the error. Here the error appears to be generated from program FM07MEB0 - because the movement type is not found against in table T158B for a TCODE. You can place a break-point here, check the TCODE required and using functional consultant help, you can maintain the value in this table and proceed.
It should work then.
Regards
Gaurav -
Pl tell me config and process of return PO to vendor via shipping
Hello,
My sloc is HU- Warehouse managed. I am creating a scenario of return purchase order to vendor using 161 Movement type. I have created a PO with 161 movement type. But whenever I am using MIGO with reference to return PO, OBD is created with customer. But I want OBD to be created for vendor because we are returning the delivery to vendor and not customer. I have done all the setting in vendor master of return delivery to vendor in purchasing view. Please provide me step by step process of configuration and business process of written PO to vendor via shipping.
Thanks
MilindHi,
Pre requisites Vendor return Via return PO and delivery.
1. You must create a customer master record for the vendor and assign the same in vendor master u2013Control view
2. In vendor master u2013purchasing view flag the Returns Vendor check box.
3. Maintain shipping point determination (OVL2)
Refer below link for config
[http://help.sap.com/bp_blv1600/BL_US/Documentation/Scenarios/V3I_BPP_EN_US.doc]
Regards,
Vikas -
Hi Guys
I have a problem, when I try to make a return to vendor (sub-vendor), I got following error "Returns not possible for subcontracting items" when I create the return PO, did anyone know what is wrong.
Best Regards
BangHello Jakob
As we know Subcontracting involves child components which will be issued to subcontractor (mvt 541) and subcontractor process the compnents to make semifinished or finished item. When you make GR for subcontract item (mvt 101) the child compnents gets consumed automatically. And how can the consumed items will be returned to vendor ? what you may have to do is reverse the entire documents so that you will get the child compnents in your plant stock
and return it to vendor.
Regards
Yogesh
Always serch the query in Forum first and then post here. -
Returnable Material from Vendor
Hi,
We are planning to implement Returnable Material from Vendor.
The process we would like to follow is that we issue certain pallets to the vendor who would provide the RM's on the pallet. The pallets would be valuated on the Company code. We would like to track the number of pallets being issued to the vendor and also the number of pallets currently at the vendor at any point of time.
The following are my doubts:
1. How do we configure this process in SAP?
2. What are the Master Data changes that need to be done? (Vendor Master, Customer Master and Material Master)
3. How do we issue the Pallets to the vendor?
4. How do we GR the Pallets?
5. Should we treat the pallets as a special Material?
6. How to track the Pallets?
7. Can we implement WM for tracking pallets?(like can we use Storage Unit Management to track pallets)
8. If my RM stores is WM managed how do i capture the above information?
Please suggest.
Regards,
SrikanthHi,
Create Pallets material as a material Type LEIH...
Now create PO for your RM's...
Do GRN for above PO ...In the GRN RM material will come in the GRN...Now you click on transport equipment button (last button) , just below the item grid table...
It will take 501 + M mvt...
Here you enter your pallet material and do the GRN.....check in MMBE, tracking will be done here...it wil show you the stock in sepearte line item...
Now return the pallet to the vendor by 502 + M mvt ....
Utsav
Edited by: Utsav.agra on Sep 29, 2009 9:14 AM -
Third party process as inventory value
Dear Experts,
Kindly need help for third party process.
We have third party process which triggered from Sales Order. This Sales Order will automatically created PR. PR will be convert into PO.
The issue is we would like to have goods in Sales Order (or Purchase Order in next process) as inventory value when receiving goods.
Can third party process be treated as inventory value when receiving it?
Thank you in advance.
Best Regards,In third party process your customer gets the goods directly from your vendor.
You only make a statistical GR ("phantom" GR) in the system, the goods are physically received by your customer and your customer's inventory will increase after your customer's GR and not yours. Knowing this your question doesn't make any sense I think.
If your third party process is not a real third party process and you receive the goods physically and after that you sell it your customer you can use individual PO scenario.
http://help.sap.com/erp2005_ehp_04/helpdata/EN/dd/5601d4545a11d1a7020000e829fd11/frameset.htm
Regards,
Csaba -
[0C00:0A0C][2015-02-10T11:49:06]i001: Burn v3.7.1224.0, Windows v5.1 (Build 2600: Service Pack 3), path: C:\Documents and Settings\K4MLD.K4MLD-F2F3858A4\My Documents\Downloads\Message+.exe, cmdline: ''
[0C00:0A0C][2015-02-10T11:49:06]i000: Setting string variable 'WixBundleLog' to value 'C:\DOCUME~1\K4MLD~1.K4M\LOCALS~1\Temp\Message+_20150210114906.log'
[0C00:0A0C][2015-02-10T11:49:06]i000: Setting string variable 'WixBundleOriginalSource' to value 'C:\Documents and Settings\K4MLD.K4MLD-F2F3858A4\My Documents\Downloads\Message+.exe'
[0C00:0A0C][2015-02-10T11:49:06]i000: Setting string variable 'WixBundleName' to value 'Message+'
[0C00:0A0C][2015-02-10T11:49:07]i100: Detect begin, 3 packages
[0C00:0A0C][2015-02-10T11:49:07]i000: Registry key not found. Key = 'SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full'
[0C00:0A0C][2015-02-10T11:49:07]i000: Trying per-machine extended info for property 'State' for product: {F0C3E5D1-1ADE-321E-8167-68EF0DE699A5}
[0C00:0A0C][2015-02-10T11:49:07]i000: Setting numeric variable 'VCRedistx86' to value 5
[0C00:0A0C][2015-02-10T11:49:07]w120: Detected partially cached package: vcredist_x86.exe, invalid payload: vcredist_x86.exe, reason: 0x80070570
[0C00:0A0C][2015-02-10T11:49:07]i052: Condition 'VCRedistx86<>2' evaluates to true.
[0C00:0A0C][2015-02-10T11:49:07]w120: Detected partially cached package: NetFx45Web, invalid payload: NetFx45Web, reason: 0x80070570
[0C00:0A0C][2015-02-10T11:49:07]i052: Condition 'NETFRAMEWORK45 >= 378389' evaluates to false.
[0C00:0A0C][2015-02-10T11:49:07]i101: Detected package: vcredist_x86.exe, state: Present, cached: Partial
[0C00:0A0C][2015-02-10T11:49:07]i101: Detected package: NetFx45Web, state: Absent, cached: Partial
[0C00:0A0C][2015-02-10T11:49:07]i101: Detected package: VMAApplication, state: Absent, cached: Complete
[0C00:0A0C][2015-02-10T11:49:07]i199: Detect complete, result: 0x0
[0C00:0A0C][2015-02-10T11:49:11]i200: Plan begin, 3 packages, action: Install
[0C00:0A0C][2015-02-10T11:49:11]i052: Condition 'VCRedistx86=2' evaluates to false.
[0C00:0A0C][2015-02-10T11:49:11]w321: Skipping dependency registration on package with no dependency providers: vcredist_x86.exe
[0C00:0A0C][2015-02-10T11:49:11]w321: Skipping dependency registration on package with no dependency providers: NetFx45Web
[0C00:0A0C][2015-02-10T11:49:11]i000: Setting string variable 'NetFx45FullWebLog' to value 'C:\DOCUME~1\K4MLD~1.K4M\LOCALS~1\Temp\Message+_20150210114906_0_NetFx45Web.log'
[0C00:0A0C][2015-02-10T11:49:11]i000: Setting string variable 'WixBundleRollbackLog_VMAApplication' to value 'C:\DOCUME~1\K4MLD~1.K4M\LOCALS~1\Temp\Message+_20150210114906_1_VMAApplication_rollback.log'
[0C00:0A0C][2015-02-10T11:49:11]i000: Setting string variable 'WixBundleLog_VMAApplication' to value 'C:\DOCUME~1\K4MLD~1.K4M\LOCALS~1\Temp\Message+_20150210114906_1_VMAApplication.log'
[0C00:0A0C][2015-02-10T11:49:11]i201: Planned package: vcredist_x86.exe, state: Present, default requested: Absent, ba requested: Absent, execute: None, rollback: None, cache: No, uncache: No, dependency: None
[0C00:0A0C][2015-02-10T11:49:11]i201: Planned package: NetFx45Web, state: Absent, default requested: Present, ba requested: Present, execute: Install, rollback: None, cache: Yes, uncache: No, dependency: None
[0C00:0A0C][2015-02-10T11:49:11]i201: Planned package: VMAApplication, state: Absent, default requested: Present, ba requested: Present, execute: Install, rollback: Uninstall, cache: No, uncache: No, dependency: Register
[0C00:0A0C][2015-02-10T11:49:11]i299: Plan complete, result: 0x0
[0C00:0A0C][2015-02-10T11:49:11]i300: Apply begin
[0CEC:0C1C][2015-02-10T11:49:16]i360: Creating a system restore point.
[0CEC:0C1C][2015-02-10T11:49:32]i361: Created a system restore point.
[0CEC:0C1C][2015-02-10T11:49:33]i000: Caching bundle from: 'C:\DOCUME~1\K4MLD~1.K4M\LOCALS~1\Temp\{1ca30da3-9557-44ec-bdf2-e0887854efd9}\.be\Message+.exe' to: 'C:\Documents and Settings\All Users.WINDOWS\Application Data\Package Cache\{1ca30da3-9557-44ec-bdf2-e0887854efd9}\Message+.exe'
[0CEC:0C1C][2015-02-10T11:49:33]i320: Registering bundle dependency provider: {1ca30da3-9557-44ec-bdf2-e0887854efd9}, version: 1.0.14.0
[0C00:0484][2015-02-10T11:49:33]w343: Prompt for source of package: NetFx45Web, payload: NetFx45Web, path: C:\Documents and Settings\K4MLD.K4MLD-F2F3858A4\My Documents\Downloads\redist\dotNetFx45_Full_setup.exe
[0C00:0484][2015-02-10T11:49:33]i338: Acquiring package: NetFx45Web, payload: NetFx45Web, download from: http://go.microsoft.com/fwlink/?LinkId=225704
[0CEC:094C][2015-02-10T11:49:45]i305: Verified acquired payload: NetFx45Web at path: C:\Documents and Settings\All Users.WINDOWS\Application Data\Package Cache\.unverified\NetFx45Web, moving to: C:\Documents and Settings\All Users.WINDOWS\Application Data\Package Cache\F6BA6F03C65C3996A258F58324A917463B2D6FF4\redist\dotNetFx45_Full_setup.exe.
[0CEC:094C][2015-02-10T11:49:48]i304: Verified existing payload: VMAApplication at path: C:\Documents and Settings\All Users.WINDOWS\Application Data\Package Cache\{70A85191-F402-4CB5-8AFF-050956C7A9E1}v1.0.14.0\Message+.msi.
[0CEC:0C1C][2015-02-10T11:49:48]i301: Applying execute package: NetFx45Web, action: Install, path: C:\Documents and Settings\All Users.WINDOWS\Application Data\Package Cache\F6BA6F03C65C3996A258F58324A917463B2D6FF4\redist\dotNetFx45_Full_setup.exe, arguments: '"C:\Documents and Settings\All Users.WINDOWS\Application Data\Package Cache\F6BA6F03C65C3996A258F58324A917463B2D6FF4\redist\dotNetFx45_Full_setup.exe" /q /norestart /ChainingPackage "Message+" /log C:\DOCUME~1\K4MLD~1.K4M\LOCALS~1\Temp\Message+_20150210114906_0_NetFx45Web.log.html'
[0CEC:0C1C][2015-02-10T11:50:36]e000: Error 0x800713ec: Process returned error: 0x13ec
[0CEC:0C1C][2015-02-10T11:50:36]e000: Error 0x800713ec: Failed to execute EXE package.
[0C00:0A0C][2015-02-10T11:50:36]e000: Error 0x800713ec: Failed to configure per-machine EXE package.
[0C00:0A0C][2015-02-10T11:50:36]i319: Applied execute package: NetFx45Web, result: 0x800713ec, restart: None
[0C00:0A0C][2015-02-10T11:50:36]e000: Error 0x800713ec: Failed to execute EXE package.
[0CEC:0C1C][2015-02-10T11:50:36]i351: Removing cached package: NetFx45Web, from path: C:\Documents and Settings\All Users.WINDOWS\Application Data\Package Cache\F6BA6F03C65C3996A258F58324A917463B2D6FF4\
[0CEC:0C1C][2015-02-10T11:50:36]i330: Removed bundle dependency provider: {1ca30da3-9557-44ec-bdf2-e0887854efd9}
[0CEC:0C1C][2015-02-10T11:50:36]i352: Removing cached bundle: {1ca30da3-9557-44ec-bdf2-e0887854efd9}, from path: C:\Documents and Settings\All Users.WINDOWS\Application Data\Package Cache\{1ca30da3-9557-44ec-bdf2-e0887854efd9}\
[0C00:0A0C][2015-02-10T11:50:37]i399: Apply complete, result: 0x800713ec, restart: None, ba requested restart: NoTry deleting the downloaded ,exe file and re-downloading and re-installing it. If you have an AV running, try disabling it just for the installation; it may be preventing some parts from installing properly.
If that isn't what you need, please ask your specific question; posting the error log may help a tech, but is not very useful to us regular customers. -
Hi all,
We have two diffirent return process in our company.
1) Return items to vendor with 161 movement type. In this case first we create PO and for this po we create GR ( 161 ) then we gave to vendor return receipt.
2) Vendor has warranty for items. So when we gave back items which is under warranty to vendor there is two options.a) vendor is fixing item then give it back to us and If item costs out of warranty we pay to vendor. b) vendor pays us back for this item, so we return to first process.
Can you suggest solution for second process?
Kind regards
TolgaAlready jagdeep explained all the return process .
Use 122 Movement type and return the material to vendor and once vendor give it back to you can proceed with 101 .
If the item out of warranty we pay to vendor . - For this you can receive the material and move to blocked stock when the warranty completes. Here Stock lying with us and you can pay the amount to vendor .
vendor pays us back for this item, so we return to first process - If the vendor returns the material , then use 122 from blocked stock and receive the stock which vendor is going to send back .
If you need separate stock wise use Batch Management and SLED if it requires.
Regards , Anil Kumar G -
Hi All,
Material A is in blocked status and needs to be return to the vendor. When perform GR with movement type 161 (Returns for Purchase Order), the stock type is default to "Quality Inspection", can not change to "Blocked stock".
What is the problem that can not change the stock type?
Thanks.Hi,
the stock type is default to "Quality Inspection", can not change to "Blocked stock".
What is the problem that can not change the stock type?
No problem you can change it
Regards
Kailas Ugale -
Plants inventory at Vendor Location
Hi All,
This is something interesting I came to know from my client. Here is the current business process
There is a vendor who we subcontract work to but all the parts are inventoried at the vendor location even before the contract work begins. Until then, the inventory is owned by the plant and the vendor need to cut a Purchase Order everytime they want to consume
This can be well explained as an opposite scenario for vendor consignment. In vendor consignment scenario, plant stocks material that belongs to vendor and cut a PO when required to consume.
Can someone please explain if you ever faced a scenario(underlined above) and how to deal with it in SAP?
Thanks in Advance,
MGHi Sridhar,
Thanks for replying. I didn't quite understand your answer. May be my question is not clear.
There is only one plant and one vendor. This vendor is setup to do subcontracting work. But, the materials required for performing the work is already stocked at vendor's own site. This stock is owned by the plant not by the vendor.
Once the plant gets a request to make a product from a customer, the materials stored at the vendor location are then sold to vendor (then those materials are owned by vendor and taken off the ledger in the plant).
How can we set this up in SAP?
Thanks,
MG -
What is process for payment run
Hi guru,
Can any one tell what is process for Payment by F110.
Point will reward.
thanks®ars
DurgeshHi
COpy the Script F110_PRENUM_CHEK to some ZFORM and attach it in the F110 tcode for the related company code and payment method..
You can do the required modifications to the script as per your requirement.
Generally we use the Preprinted stationary for printing the cheque
in which on the top vendor address and the fi doc line items will be printed.
in the last cheque is printed.
We have to print just few fields on that pre printed cheque like Vendor name, Amount, Date and amount in words etc.
You have take some rought stationary xerox copies and to check by printing the fields whether they are correctly matching to the fields on the cheque exactly or not..have to adjust the positions and map.
see the doc
Run Payment Program (F110)
Purpose
Use this procedure to run the automatic payment program. The payment program is used to create cheques, BACs payments, electronic transfers, etc. for vendors. It is also used to create a direct debit file for customer payments. The payment program runs in three specific steps, which must be run in order.
Create Payment Proposal. This is a listing of proposed payments. The proposal should be reviewed for accuracy and edited or deleted if incorrect. No postings or payments are created at this step.
Create Payments. This step creates posting documents in the system, clearing the customer/vendor subledger accounts and posting the offsetting item to a cash or cash clearing account.
Create Payment Media. This step creates the actual payments, sending cheque forms to the printer or creating files of electronic payments to be sent to the bank.
Trigger
Perform this procedure when you are ready to create vendor payments or to create a direct debit file for customers.
Prerequisites
You must have the following master data prepared:
Banks and bank accounts with associated general ledger accounts;
Appropriate payment methods assigned to your company code;
Customer and vendor master records with the appropriate details completed.
If you wish to create a cheque payment, the vendor/customer master record must contain full address details.
If you wish to create an electronic payment, the vendor/customer master record must contain full bank details.
If you wish to create a direct debit transaction for a customer, the 'Col' (collection authorization) checkbox must be selected. This field is found on the General Data - Payment Transaction Data tab.
Navigation Path
Use the following navigation path to begin this transaction:
Select Processes è Purchase Requisition through to Payment è Payments è Automatic Payments è Run Payment Program to go to the Automatic Payment Transactions: Status screen.
for more information please check out the link below it
might help you
http://www.hostlogic.hu/caghelp/Transactions/Finance/content/f110%20-%20run%20payment%20program/cc/html/index.htm
Regards
ANJI -
What are process types in process chain
hi any one tell me what are process types in Process chains
Hi,
In the Plan View of the process chain maintenance screen.
In the left-hand area of the screen, a navigation area is displayed. In the right-hand area of the screen, the process chain is displayed.
Use the drag-and-drop function to add the relevant processes into your process chain.
You use the Process Types function to select the processes. This sorts the process types according to different categories. You can also call up InfoPackages and processes for the data target from the separate InfoSources and Data Targets navigation trees.
If you insert into the chain a process that is linked to additional processes, the respective process variants are generated and inserted into the process chain automatically. These variants are suggestions and can be changed, replaced or removed from the chain if required.
Only if the attribute realignment run is inserted automatically, do you also arrive at the variant maintenance screen.
If you want to specify yourself the processes that are to be included in a chain, choose Settings ® Default Chains, and select the Do Not Suggest Processes option. As a result, the system does not suggest, generate, or insert automatically any processes into the chain. This setting is user-specific.
If the chain that you create does not correspond to the standard, the system displays a warning. You can ignore these warnings if you are sure that you are creating a chain that meets your requirements. Warnings do not affect how the chain operates during runtime.
Your chain is checked in the checking view and during activation. The system tells you if it discovers any errors.
Creating a Process Chain Using the Maintenance Dialog for a Process
You are in the maintenance dialog of a process that you want to include in a process chain.
1. Choose the Process Chain Maintenance pushbutton and create a process variant.
2. Save the variant and go back to the previous screen.
A dialog window appears in which you enter a technical name and a description of the chain that you want to create.
3. Confirm your entries.
The Add Start Process dialog window appears.
4. Create a variant for a start process.
1. a. On the Maintain Start Process screen, choose whether you want to schedule the chain directly or whether you want to start it using a metachain.
2. b. If you choose to schedule the chain directly, enter the start date value for the chain under Change Selections and save your entries.
The Maintain Start Process screen appears again.
3. c. Save your entries, return to the previous screen and confirm your entries in the Add Start Process dialog window.
You are taken to the Plan View of the process chain maintenance screen.
The various process categories, the application processes, and collection processes are displayed in the left-hand area of the screen. In the right-hand area of the screen, the process chain is displayed.
If the process that you used to create a chain is linked to additional processes, the respective process variants are generated and inserted into the process chain automatically. These variants are suggestions and can be changed, replaced or removed from the chain if required.
Only if the attribute realignment run is inserted automatically, do you also arrive at the variant maintenance screen.
If you want to specify yourself the processes that are to be included in a chain, choose Settings ® Default Chains, and select the Do Not Suggest Processes option. As a result, the system does not suggest, generate, or insert automatically any processes into the chain. This setting is user-specific.
If the chain that you create does not correspond to the standard, the system displays a warning. You can ignore these warnings if you are sure that you are creating a chain that meets your requirements. Warnings do not affect how the chain operates during runtime.
Your chain is checked in the checking view and during activation. The system tells you if it discovers any errors.
5. Use the drag-and-drop function to insert any additional relevant processes into your process chain.
You use the Process Types function to select the processes. This sorts the process types according to different categories. You can also call up InfoPackages and processes for the data target from the separate InfoSources and Data Targets navigation trees.
Additional Steps to Creating a Process Chain
6. When you add a process, you need to select a process variant or create a new variant. For collection processes, the system determines the variants.
Various functions for working with the process are available from the context menu:
Context Menu Entry for a Process Function Information
Maintain Variants With the exception of the variants in the collection process, you can use this function to change all process variants.
Exchange Variants You can swap the variants for an existing variant or a new variant.
Display Scheduled Jobs Once the process chain is active, you can use this function to display the jobs that have been scheduled.
Display All Jobs After at least one run of the process chain, you can display, for a specific process, all of the scheduled jobs for this process and all of the jobs with which this process was run. You arrive at the job overview from where you call up the relevant job log.
Create Message You can also send messages to an application process of the chain, depending on the success or failure of the process.
1. 1. From the context menu of a process, create an additional process variant of the Send Message type.
2. 2. If you maintain a message, first specify whether you want the message to be sent when the process has been completed successfully or unsuccessfully. Then choose Next.
3. 3. You arrive at a window, in which you can select an existing process variant or create a new one.
4. 4. If you create a new process variant, edit the document that is going to be sent, and maintain a list of recipients.
5. 5. Save your process variant and go back a step.
The message process variant is now assigned to your application process. When the message is sent, the status information and the process log can also be sent.
Wait Time
You use this function only to debug a process run.
Specify how long (in seconds) you want the delay to be between one event being triggered and the next process starting.
You can capture the process by using transaction SM37 (Job Overview) or SM50 (Process Overview).
Remove Process You use this function to remove a process from a process chain.
Manage Data Target You use this function in connection with the following types of process variants
1. constructing indexes
2. deleting indexes
3. constructing database statistics
4. rolling up filled aggregates
5. compressing InfoCubes
6. activating ODS object data
to call up the administration for each of the data targets.
7. Hold down the left mouse button to connect the processes through events.
Before you do this, select the process underneath the process type row, and position the cursor over the required process. When you select the process type row, the whole process is moved into the plan view.
From the context menu of a link, you can display the event or remove the link again. To do this, highlight the link and right-click with the mouse.
8. If necessary, specify whether you want the event to be triggered after the previous process has been completed successfully or unsuccessfully or whether you want the event to be triggered independently of the outcome of the process that precedes it.
9. Under Attributes ®Display Components assign a display component to the process chain.
10. Maintain additional process chain attributes if necessary.
11. Check your process chain in the Check View and make any necessary corrections.
The Legend explains the meaning of the different colors used to display the processes and links.
From the context menu for a process, you can display the messages resulting from the check.
12. Save your process chain if it does not contain any errors.
Result
Your process chain can be activated. After activation, the chain starts in accordance with the start process selections. For example, if you scheduled the start process directly and chose Immediately as the start date value, the chain run starts immediately after activation. In the Log View, you can display the reports for the chain runs.
Hope it helps.
Regards,
Amith -
What is procedure for creating new vendor and material master data in ABAP
What is procedure for creating new vendor and material master data in ABAP .
see below code which is used for creation of vendor master as well as extension...
*& Report ZFC_VENDOR_CREATE *
REPORT ZFC_VENDOR_CREATE LINE-SIZE 100
NO STANDARD PAGE HEADING
MESSAGE-ID ZZ.
TABLES
TABLES : SSCRFIELDS. " Fields on selection screens
CONSTANTS
DATA : C_SPLIT TYPE C VALUE '#'. " Used for Has Separator in GUI_UPLAOD
TYPES
Int'table to hold Vendor Master Data
TYPES : BEGIN OF TY_VENDOR_MASTER,
FLAG TYPE C, " Update Flag
LIFNR TYPE LIFNR, " Vendor Number
BUKRS TYPE BUKRS, " Company Code
KTOKK TYPE KTOKK, " Account Group
ANRED TYPE ANRED, " Title
NAME1 TYPE NAME1_GP, " Name1
NAME2 TYPE NAME2_GP, " Name2
SORTL TYPE SORTL, " Search Term 1
SORT2 TYPE AD_SORT2UL, " Search Term 2
STRAS TYPE STRAS_GP, " Street
PSTLZ TYPE PSTLZ, " Postal Code
ORT01 TYPE ORT01_GP, " City
REGIO TYPE REGIO, " Region
LAND1 TYPE LAND1_GP, " Country
SPRAS TYPE SPRAS, " Language
VBUND TYPE RASSC, " Trading Partner
BANKS TYPE BANKS, " Country
BANKL TYPE BANKK, " Bank Key
BANKN TYPE BANKN, " Bank Account
BKONT TYPE BKONT, " Bank Control Key
BANKA TYPE BANKA, " Name of Bank
AKONT TYPE AKONT, " Reconciliation Account
FDGRV TYPE FDGRV, " Cash Management Group
ZTERM TYPE DZTERM, " Payment Terms
REPRF TYPE REPRF, " Check Double Invoice
ZWELS TYPE DZWELS, " Payment Methods
XPORE TYPE XPORE, " Pay all items separately
END OF TY_VENDOR_MASTER,
Int'table to hold Vendor Extend Data
BEGIN OF TY_VENDOR_EXTEND,
FLAG TYPE C, " Update Flag
LIFNR TYPE LIFNR, " Vendor Number
BUKRS TYPE BUKRS, " Company Code
KTOKK TYPE KTOKK, " Account Group
REF_LIFNR TYPE LIFNR, " Reference Vendor Number
REF_BUKRS TYPE BUKRS, " Reference Company Code
AKONT TYPE AKONT, " Reconciliation Account
FDGRV TYPE FDGRV, " Cash Management Group
ZTERM TYPE DZTERM, " Payment Terms
REPRF TYPE REPRF, " Check Double Invoice
ZWELS TYPE DZWELS, " Payment Methods
XPORE TYPE XPORE, " Pay all items separately
END OF TY_VENDOR_EXTEND,
Int'table to hold Error Records Data
BEGIN OF TY_ERROR,
MSG(200) TYPE C, " To hold Message
LIFNR TYPE LIFNR, " Vendor Number
BUKRS TYPE BUKRS, " Company Code
END OF TY_ERROR.
DATA (Simple Fields)
DATA : W_COUNT TYPE I, " Variable to hold count of Records
W_SUCC_REC TYPE I, " No. of Success Records
W_SUCC_REC1 TYPE I, " No. of Updated Records
W_ERR_REC TYPE I, " No. of Error Records
w_noupdate_rec type i. " No. of Records not Changed
INTERNAL TABLES
Int'table to hold uploaded data from File
DATA : IT_VENDOR_MASTER TYPE STANDARD TABLE OF TY_VENDOR_MASTER,
WA_IT_VENDOR_MASTER TYPE TY_VENDOR_MASTER,
IT_VENDOR_EXTEND TYPE STANDARD TABLE OF TY_VENDOR_EXTEND,
WA_IT_VENDOR_EXTEND TYPE TY_VENDOR_EXTEND,
WA_IT_BDCDATA TYPE BDCDATA,
IT_BDCDATA TYPE STANDARD TABLE OF BDCDATA,
WA_IT_MESSTAB TYPE BDCMSGCOLL,
IT_MESSTAB TYPE STANDARD TABLE OF BDCMSGCOLL,
IT_ERROR TYPE STANDARD TABLE OF TY_ERROR,
WA_IT_ERROR TYPE TY_ERROR,
it_error_fk01 type standard table of ty_error,
wa_it_error_fk01 type ty_error,
it_error_fk02 type standard table of ty_error,
wa_it_error_fk02 type ty_error,
it_succ_rec1 type standard table of ty_error,
wa_it_succ_rec1 type ty_error,
it_noupdate type standard table of ty_error,
wa_it_noupdate type ty_error.
FLAGS
DATA : FL_FLAG1 TYPE C, " Flag to check error upload file
FL_FLAG2 TYPE C, " Flag to hold value
FL_FLAG3 TYPE C, " Flag to hold value
FL_FLAG4 TYPE C. " Flag to hold value
SELECTION-SCREEN
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
SELECTION-SCREEN : BEGIN OF LINE,
COMMENT 1(30) TEXT-001,
POSITION POS_LOW.
PARAMETERS : P_FILE(128) DEFAULT 'C:\UPLOAD.TXT' OBLIGATORY.
SELECTION-SCREEN : END OF LINE.
SELECTION-SCREEN : BEGIN OF LINE,
COMMENT 1(30) TEXT-002,
POSITION POS_LOW.
PARAMETERS : P_VENMAS RADIOBUTTON GROUP R1 DEFAULT 'X'.
SELECTION-SCREEN : END OF LINE.
SELECTION-SCREEN : BEGIN OF LINE,
COMMENT 1(30) TEXT-003,
POSITION POS_LOW.
PARAMETERS : P_VENEXT RADIOBUTTON GROUP R1.
SELECTION-SCREEN : END OF LINE.
SELECTION-SCREEN SKIP 2.
SELECTION-SCREEN : BEGIN OF LINE,
COMMENT 1(30) TEXT-004,
POSITION POS_LOW.
PARAMETERS : P_MODE(1) DEFAULT 'N'.
SELECTION-SCREEN : END OF LINE.
SELECTION-SCREEN : BEGIN OF LINE,
COMMENT 1(30) TEXT-005,
POSITION POS_LOW.
PARAMETERS : P_GROUP(12) DEFAULT 'ZFC_VENDOR_C' OBLIGATORY.
SELECTION-SCREEN : END OF LINE.
SELECTION-SCREEN : BEGIN OF LINE,
COMMENT 1(30) TEXT-016,
POSITION POS_LOW.
PARAMETERS : P_GROUP1(12) DEFAULT 'ZFC_VENDOR_U' OBLIGATORY.
SELECTION-SCREEN : END OF LINE.
SELECTION-SCREEN END OF BLOCK B1.
AT SELECTION-SCREEN ON
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.
Form to get file path for upload of data
PERFORM GET_FILE_PATH.
AT SELECTION-SCREEN ON BLOCK B1.
Form to Validate data specified on Selection Screen
CHECK SSCRFIELDS-UCOMM EQ 'ONLI'.
PERFORM VALIDATE_DATA.
START - OF - SELECTION
START-OF-SELECTION.
IF P_VENMAS = 'X'.
Form to upload data from Presentation Server for Vendor Master
PERFORM UPLOAD_DATA TABLES IT_VENDOR_MASTER.
IF FL_FLAG1 NE 'X'.
SORT IT_VENDOR_MASTER BY LIFNR BUKRS KTOKK.
DELETE IT_VENDOR_MASTER WHERE LIFNR = ' '
AND BUKRS = ' '
AND KTOKK = ' '.
Form to process data for Vendor Master
PERFORM INSERT_VENDOR_MASTER_DATA.
ENDIF.
ELSEIF P_VENEXT = 'X'.
Form to upload data from Presentation Server for Vendor Extend
PERFORM UPLOAD_DATA TABLES IT_VENDOR_EXTEND.
IF FL_FLAG1 NE 'X'.
SORT IT_VENDOR_EXTEND BY LIFNR BUKRS KTOKK.
DELETE IT_VENDOR_EXTEND WHERE LIFNR = ' '
AND BUKRS = ' '
AND KTOKK = ' '.
Form to process data for Vendor Master
PERFORM CHK_AND_INS_VENDOR_EXTEND_DATA.
ENDIF.
ENDIF.
END - OF - SELECTION
END-OF-SELECTION.
IF FL_FLAG1 NE 'X'.
FORMAT COLOR 7.
WRITE:/2 TEXT-O01. " Total Number of records read :
FORMAT COLOR OFF.
WRITE:40 W_COUNT.
FORMAT COLOR 7.
WRITE:/2 TEXT-O02. " Total Number of Success records :
FORMAT COLOR OFF.
WRITE:40 W_SUCC_REC.
FORMAT COLOR 7.
WRITE:/2 TEXT-O07. " Total Number of Updated records :
FORMAT COLOR OFF.
WRITE:40 W_SUCC_REC1.
FORMAT COLOR 7.
WRITE:/2 TEXT-O08. " Total Number of Unchanged records :
FORMAT COLOR OFF.
WRITE:40 W_noupdate_REC.
FORMAT COLOR 7.
WRITE:/2 TEXT-O03. " Total Number of Error records :
FORMAT COLOR OFF.
WRITE:40 W_ERR_REC.
if not it_succ_rec1 is initial.
skip 1.
perform display_changed_report.
endif.
if not it_noupdate is initial.
skip 1.
perform display_nochange_report.
endif.
IF NOT IT_ERROR IS INITIAL.
SKIP 3.
Form to display error data
PERFORM DISPLAY_ERROR_REPORT.
ENDIF.
IF FL_FLAG2 = 'X'.
SKIP 2.
FORMAT COLOR 4.
WRITE:/2 TEXT-O04. " BDC Session Name for Creation (FK01) :
FORMAT COLOR OFF.
WRITE:40 P_GROUP.
perform display_error_report_fk01.
ENDIF.
IF FL_FLAG3 = 'X'.
SKIP 2.
FORMAT COLOR 4.
WRITE:/2 TEXT-O09. " BDC Session Name for Updation (FK02) :
FORMAT COLOR OFF.
WRITE:40 P_GROUP1.
perform display_error_report_fk02.
ENDIF.
ENDIF.
*& Form GET_FILE_PATH
This form is used to get the specified path for uploading of data from
flat file with the help of F4 function key
FORM GET_FILE_PATH .
CALL FUNCTION 'F4_FILENAME'
EXPORTING
PROGRAM_NAME = SYST-CPROG
DYNPRO_NUMBER = SYST-DYNNR
FIELD_NAME = ' '
IMPORTING
FILE_NAME = P_FILE.
ENDFORM. " GET_FILE_PATH
*& Form VALIDATE_DATA
This form is used to validate the data given by user on the Selection
Screen and the appropriate message is been displayed when an wrong
entry is inputted
FORM VALIDATE_DATA .
IF SY-BATCH EQ 'X'.
CLEAR SSCRFIELDS-UCOMM.
MESSAGE E001(ZZ) WITH TEXT-011.
" Excel file not to be used in Batch Mode
ENDIF.
IF P_MODE NE 'A' AND P_MODE NE 'N' AND P_MODE NE 'E'.
MESSAGE E001(ZZ) WITH TEXT-012.
" Session Mode should be either A or N or E
ENDIF.
ENDFORM. " VALIDATE_DATA
*& Form UPLOAD_DATA
This form is used to upload data from Presentation Server for either
Vendor Master or Vendor Extend
FORM UPLOAD_DATA TABLES P_IT_VENDOR.
DATA : L_FILENAME TYPE STRING,
L_FILETYPE TYPE CHAR10 VALUE 'ASC',
L_HEADER_LENGTH TYPE I VALUE 0,
L_READ_BY_LINE TYPE CHAR01 VALUE 'X'.
MOVE P_FILE TO L_FILENAME.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
FILENAME = L_FILENAME
FILETYPE = L_FILETYPE
HEADER_LENGTH = L_HEADER_LENGTH
READ_BY_LINE = L_READ_BY_LINE
HAS_FIELD_SEPARATOR = C_SPLIT
TABLES
DATA_TAB = P_IT_VENDOR
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 I001(ZZ) WITH TEXT-006 L_FILENAME.
MESSAGE ID SY-MSGID TYPE 'I' NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
FL_FLAG1 = 'X'.
ELSEIF P_IT_VENDOR[] IS INITIAL.
MESSAGE I001(ZZ) WITH TEXT-014. " Uploaded File contains no data
FL_FLAG1 = 'X'.
ENDIF.
ENDFORM. " UPLOAD_DATA
*& Form INSERT_VENDOR_MASTER_DATA
This form is used to process BDC data for Vendor Master
FORM INSERT_VENDOR_MASTER_DATA .
DATA : L_LIFNR TYPE LIFNR.
CLEAR : L_LIFNR.
sort it_vendor_master by flag.
LOOP AT IT_VENDOR_MASTER INTO WA_IT_VENDOR_MASTER.
W_COUNT = W_COUNT + 1.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = WA_IT_VENDOR_MASTER-LIFNR
IMPORTING
OUTPUT = WA_IT_VENDOR_MASTER-LIFNR.
if wa_it_vendor_master-flag = 'A'.
SELECT SINGLE LIFNR
FROM LFB1
INTO L_LIFNR
WHERE LIFNR = WA_IT_VENDOR_MASTER-LIFNR
AND BUKRS = WA_IT_VENDOR_MASTER-BUKRS.
IF SY-SUBRC EQ 0.
WA_IT_ERROR-LIFNR = WA_IT_VENDOR_MASTER-LIFNR.
WA_IT_ERROR-BUKRS = WA_IT_VENDOR_MASTER-BUKRS.
WA_IT_ERROR-MSG = TEXT-015.
APPEND WA_IT_ERROR TO IT_ERROR.
W_ERR_REC = W_ERR_REC + 1.
CLEAR : WA_IT_ERROR, L_LIFNR.
ELSE.
REFRESH IT_BDCDATA.
CLEAR IT_BDCDATA.
PERFORM POPULATE_BDC_DATA_VEN_MASTER.
PERFORM CALL_TRANSACTION.
ENDIF.
CLEAR : WA_IT_VENDOR_MASTER.
elseif wa_it_vendor_master-flag = 'C'.
IF FL_FLAG2 = 'X' and fl_flag4 ne 'X'.
PERFORM CLOSE_BDC_SESSION.
fl_flag4 = 'X'.
ENDIF.
REFRESH IT_BDCDATA.
CLEAR IT_BDCDATA.
PERFORM POPULATE_BDC_DATA_VEN_MASTER.
PERFORM CALL_TRANSACTION_FK02.
CLEAR : WA_IT_VENDOR_MASTER.
elseif wa_it_vendor_master-flag = 'N'.
WA_IT_noupdate-LIFNR = WA_IT_VENDOR_MASTER-LIFNR.
WA_IT_noupdate-BUKRS = WA_IT_VENDOR_MASTER-BUKRS.
WA_IT_noupdate-MSG = TEXT-018.
APPEND WA_IT_noupdate TO IT_noupdate.
W_noupdate_REC = W_noupdate_REC + 1.
CLEAR : WA_IT_noupdate, WA_IT_VENDOR_MASTER.
endif.
ENDLOOP.
IF FL_FLAG3 = 'X'.
PERFORM CLOSE_BDC_SESSION.
ENDIF.
ENDFORM. " INSERT_VENDOR_MASTER_DATA
*& Form POPULATE_BDC_DATA_VEN_MASTER
This form is used to populate BDC data of Vendor Master
FORM POPULATE_BDC_DATA_VEN_MASTER .
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = WA_IT_VENDOR_MASTER-ZTERM
IMPORTING
OUTPUT = WA_IT_VENDOR_MASTER-ZTERM.
IF WA_IT_VENDOR_MASTER-REPRF = 'Y'.
WA_IT_VENDOR_MASTER-REPRF = 'X'.
ENDIF.
IF WA_IT_VENDOR_MASTER-XPORE = 'Y'.
WA_IT_VENDOR_MASTER-XPORE = 'X'.
ENDIF.
if wa_it_vendor_master-flag = 'A'.
PERFORM :BDC_DYNPRO USING 'SAPMF02K' '0105',
BDC_FIELD USING 'RF02K-LIFNR' WA_IT_VENDOR_MASTER-LIFNR,
BDC_FIELD USING 'RF02K-BUKRS' WA_IT_VENDOR_MASTER-BUKRS,
BDC_FIELD USING 'RF02K-KTOKK' WA_IT_VENDOR_MASTER-KTOKK,
BDC_FIELD USING 'BDC_OKCODE' '/00'.
elseif wa_it_vendor_master-flag = 'C'.
PERFORM :BDC_DYNPRO USING 'SAPMF02K' '0106',
BDC_FIELD USING 'RF02K-LIFNR' WA_IT_VENDOR_MASTER-LIFNR,
BDC_FIELD USING 'RF02K-BUKRS' WA_IT_VENDOR_MASTER-BUKRS,
BDC_FIELD USING 'BDC_OKCODE' '=MALL',
BDC_DYNPRO USING 'SAPMF02K' '0106',
BDC_FIELD USING 'RF02K-D0110' 'X',
BDC_FIELD USING 'RF02K-D0120' 'X',
BDC_FIELD USING 'RF02K-D0130' 'X',
BDC_FIELD USING 'RF02K-D0210' 'X',
BDC_FIELD USING 'RF02K-D0215' 'X',
BDC_FIELD USING 'RF02K-D0220' 'X',
BDC_FIELD USING 'BDC_OKCODE' '/00'.
endif.
perform :BDC_DYNPRO USING 'SAPMF02K' '0110',
BDC_FIELD USING 'LFA1-ANRED' WA_IT_VENDOR_MASTER-ANRED,
BDC_FIELD USING 'LFA1-NAME1' WA_IT_VENDOR_MASTER-NAME1,
BDC_FIELD USING 'LFA1-NAME2' WA_IT_VENDOR_MASTER-NAME2,
BDC_FIELD USING 'LFA1-SORTL' WA_IT_VENDOR_MASTER-SORTL,
BDC_FIELD USING 'LFA1-STRAS' WA_IT_VENDOR_MASTER-STRAS,
BDC_FIELD USING 'LFA1-ORT01' WA_IT_VENDOR_MASTER-ORT01,
BDC_FIELD USING 'LFA1-PSTLZ' WA_IT_VENDOR_MASTER-PSTLZ,
BDC_FIELD USING 'LFA1-LAND1' WA_IT_VENDOR_MASTER-LAND1,
BDC_FIELD USING 'LFA1-REGIO' WA_IT_VENDOR_MASTER-REGIO,
BDC_FIELD USING 'LFA1-SPRAS' WA_IT_VENDOR_MASTER-SPRAS,
BDC_FIELD USING 'BDC_OKCODE' '/00',
BDC_DYNPRO USING 'SAPMF02K' '0120',
BDC_FIELD USING 'LFA1-VBUND' WA_IT_VENDOR_MASTER-VBUND,
BDC_FIELD USING 'BDC_OKCODE' '/00',
BDC_DYNPRO USING 'SAPMF02K' '0130',
BDC_FIELD USING 'LFBK-BANKS(01)' WA_IT_VENDOR_MASTER-BANKS,
BDC_FIELD USING 'LFBK-BANKL(01)' WA_IT_VENDOR_MASTER-BANKL,
BDC_FIELD USING 'LFBK-BANKN(01)' WA_IT_VENDOR_MASTER-BANKN,
BDC_FIELD USING 'BDC_OKCODE' '=BANK',
BDC_DYNPRO USING 'SAPLBANK' '0100',
BDC_FIELD USING 'BNKA-BANKA' WA_IT_VENDOR_MASTER-BANKA,
BDC_FIELD USING 'BDC_OKCODE' '=ENTR',
BDC_DYNPRO USING 'SAPMF02K' '0130',
BDC_FIELD USING 'BDC_OKCODE' '=ENTR',
BDC_DYNPRO USING 'SAPMF02K' '0210',
BDC_FIELD USING 'LFB1-AKONT' WA_IT_VENDOR_MASTER-AKONT,
BDC_FIELD USING 'LFB1-FDGRV' WA_IT_VENDOR_MASTER-FDGRV,
BDC_FIELD USING 'BDC_OKCODE' '=/00',
BDC_DYNPRO USING 'SAPMF02K' '0215',
BDC_FIELD USING 'LFB1-ZTERM' WA_IT_VENDOR_MASTER-ZTERM,
BDC_FIELD USING 'LFB1-REPRF' WA_IT_VENDOR_MASTER-REPRF,
BDC_FIELD USING 'LFB1-ZWELS' WA_IT_VENDOR_MASTER-ZWELS,
BDC_FIELD USING 'LFB1-XPORE' WA_IT_VENDOR_MASTER-XPORE,
BDC_FIELD USING 'BDC_OKCODE' '=UPDA'.
ENDFORM. " POPULATE_BDC_DATA_VEN_MASTER
*& Form BDC_DYNPRO
This form is used to move data to BDCDATA int'table
FORM BDC_DYNPRO USING PROGRAM TYPE BDC_PROG
DYNPRO TYPE BDC_DYNR.
CLEAR WA_IT_BDCDATA.
WA_IT_BDCDATA-PROGRAM = PROGRAM.
WA_IT_BDCDATA-DYNPRO = DYNPRO.
WA_IT_BDCDATA-DYNBEGIN = 'X'.
APPEND WA_IT_BDCDATA TO IT_BDCDATA.
ENDFORM. " BDC_DYNPRO
*& Form BDC_FIELD
This form is used to move data to BDCDATA int'table
FORM BDC_FIELD USING FNAM TYPE ANY
FVAL TYPE ANY.
CLEAR WA_IT_BDCDATA.
WA_IT_BDCDATA-FNAM = FNAM.
WA_IT_BDCDATA-FVAL = FVAL.
APPEND WA_IT_BDCDATA TO IT_BDCDATA.
ENDFORM. " BDC_FIELD
*& Form CALL_TRANSACTION
This form is used to Call FK01 for processing of data either for
Vendor Master or Vendor Extend. The error records are inserted to
Session which can be processed using SM35
FORM CALL_TRANSACTION .
DATA : L_OPTION TYPE CTU_PARAMS,
L_SUBRC TYPE SYSUBRC.
REFRESH IT_MESSTAB.
CLEAR IT_MESSTAB.
L_OPTION-DEFSIZE = 'X'.
L_OPTION-DISMODE = P_MODE.
L_OPTION-UPDMODE = 'S'.
CALL TRANSACTION 'FK01'
USING IT_BDCDATA
MESSAGES INTO IT_MESSTAB
OPTIONS FROM L_OPTION.
L_SUBRC = SY-SUBRC.
IF L_SUBRC = 0.
W_SUCC_REC = W_SUCC_REC + 1.
ELSE.
IF FL_FLAG2 NE 'X'.
PERFORM OPEN_BDC_SESSION.
FL_FLAG2 = 'X'.
ENDIF.
PERFORM BDC_INSERT.
W_ERR_REC = W_ERR_REC + 1.
PERFORM ERROR_RECORD_DATA.
ENDIF.
ENDFORM. " CALL_TRANSACTION
*& Form OPEN_BDC_SESSION
Form used to open session for Error out Records
FORM OPEN_BDC_SESSION .
DATA : L_USERID TYPE APQ_MAPN, " Variable to hold user-id
L_GROUP TYPE APQ_GRPN. " Variable to hold value
MOVE P_GROUP TO L_GROUP.
MOVE SY-UNAME TO L_USERID.
CALL FUNCTION 'BDC_OPEN_GROUP'
EXPORTING
CLIENT = SY-MANDT
GROUP = L_GROUP
KEEP = SPACE
USER = L_USERID
EXCEPTIONS
CLIENT_INVALID = 1
DESTINATION_INVALID = 2
GROUP_INVALID = 3
GROUP_IS_LOCKED = 4
HOLDDATE_INVALID = 5
INTERNAL_ERROR = 6
QUEUE_ERROR = 7
RUNNING = 8
SYSTEM_LOCK_ERROR = 9
USER_INVALID = 10
OTHERS = 11.
IF SY-SUBRC <> 0.
WRITE:/ TEXT-008. " Unable to open BDC Session
ENDIF.
ENDFORM. " OPEN_BDC_SESSION
*& Form BDC_INSERT
This form is used to insert error records to a Session method
FORM BDC_INSERT .
CALL FUNCTION 'BDC_INSERT'
EXPORTING
TCODE = 'FK01'
TABLES
DYNPROTAB = IT_BDCDATA
EXCEPTIONS
INTERNAL_ERROR = 1
NOT_OPEN = 2
QUEUE_ERROR = 3
TCODE_INVALID = 4
PRINTING_INVALID = 5
POSTING_INVALID = 6
OTHERS = 7.
IF SY-SUBRC <> 0.
WRITE:/ TEXT-009. " Unable to Insert Data to BDC Session
ENDIF.
ENDFORM. " BDC_INSERT
*& Form ERROR_RECORD_DATA
This form is used to process the messages for the error records which
will be displayed on the output report
FORM ERROR_RECORD_DATA .
DATA : L_LINES TYPE I,
L_MSG(200) TYPE C.
DESCRIBE TABLE IT_MESSTAB LINES L_LINES.
READ TABLE IT_MESSTAB INTO WA_IT_MESSTAB INDEX L_LINES.
IF SY-SUBRC = 0.
CLEAR L_MSG.
CALL FUNCTION 'FORMAT_MESSAGE'
EXPORTING
ID = WA_IT_MESSTAB-MSGID
LANG = SY-LANGU
NO = WA_IT_MESSTAB-MSGNR
V1 = WA_IT_MESSTAB-MSGV1
V2 = WA_IT_MESSTAB-MSGV2
V3 = WA_IT_MESSTAB-MSGV3
V4 = WA_IT_MESSTAB-MSGV4
IMPORTING
MSG = L_MSG
EXCEPTIONS
NOT_FOUND = 1
OTHERS = 2.
IF SY-SUBRC = 0.
WA_IT_ERROR_fk01-MSG = L_MSG.
ENDIF.
IF P_VENMAS = 'X'.
WA_IT_ERROR_fk01-LIFNR = WA_IT_VENDOR_MASTER-LIFNR.
WA_IT_ERROR_fk01-BUKRS = WA_IT_VENDOR_MASTER-BUKRS.
ELSEIF P_VENEXT = 'X'.
WA_IT_ERROR_fk01-LIFNR = WA_IT_VENDOR_EXTEND-LIFNR.
WA_IT_ERROR_fk01-BUKRS = WA_IT_VENDOR_EXTEND-BUKRS.
ENDIF.
APPEND WA_IT_ERROR_fk01 TO IT_ERROR_fk01.
CLEAR WA_IT_ERROR_fk01.
ENDIF.
ENDFORM. " ERROR_RECORD_DATA
*& Form CLOSE_BDC_SESSION
Form used to close session of the Error Records
FORM CLOSE_BDC_SESSION .
CALL FUNCTION 'BDC_CLOSE_GROUP'
EXCEPTIONS
NOT_OPEN = 1
QUEUE_ERROR = 2
OTHERS = 3.
IF SY-SUBRC <> 0.
WRITE:/ TEXT-010. " Unable to Close BDC Session
ENDIF.
ENDFORM. " CLOSE_BDC_SESSION
*& Form CHK_AND_INS_VENDOR_EXTEND_DATA
This form is used to process BDC data for Vendor Extend
FORM CHK_AND_INS_VENDOR_EXTEND_DATA .
DATA : L_LIFNR TYPE LIFNR.
CLEAR : L_LIFNR, fl_flag4.
sort it_vendor_extend by flag.
LOOP AT IT_VENDOR_EXTEND INTO WA_IT_VENDOR_EXTEND.
W_COUNT = W_COUNT + 1.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = WA_IT_VENDOR_EXTEND-REF_LIFNR
IMPORTING
OUTPUT = WA_IT_VENDOR_EXTEND-REF_LIFNR.
if wa_it_vendor_extend-flag = 'A'.
SELECT SINGLE LIFNR
FROM LFB1
INTO L_LIFNR
WHERE LIFNR = WA_IT_VENDOR_EXTEND-REF_LIFNR
AND BUKRS = WA_IT_VENDOR_EXTEND-REF_BUKRS.
IF SY-SUBRC NE 0.
WA_IT_ERROR-LIFNR = WA_IT_VENDOR_EXTEND-REF_LIFNR.
WA_IT_ERROR-BUKRS = WA_IT_VENDOR_EXTEND-REF_BUKRS.
WA_IT_ERROR-MSG = TEXT-007.
APPEND WA_IT_ERROR TO IT_ERROR.
W_ERR_REC = W_ERR_REC + 1.
CLEAR : WA_IT_ERROR, L_LIFNR.
ELSE.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = WA_IT_VENDOR_EXTEND-LIFNR
IMPORTING
OUTPUT = WA_IT_VENDOR_EXTEND-LIFNR.
SELECT SINGLE LIFNR
FROM LFB1
INTO L_LIFNR
WHERE LIFNR = WA_IT_VENDOR_EXTEND-LIFNR
AND BUKRS = WA_IT_VENDOR_EXTEND-BUKRS.
IF SY-SUBRC EQ 0.
WA_IT_ERROR-LIFNR = WA_IT_VENDOR_EXTEND-LIFNR.
WA_IT_ERROR-BUKRS = WA_IT_VENDOR_EXTEND-BUKRS.
WA_IT_ERROR-MSG = TEXT-015.
APPEND WA_IT_ERROR TO IT_ERROR.
W_ERR_REC = W_ERR_REC + 1.
CLEAR : WA_IT_ERROR, L_LIFNR.
ELSE.
REFRESH IT_BDCDATA.
CLEAR IT_BDCDATA.
PERFORM POPULATE_BDC_DATA_VEN_EXTEND.
PERFORM CALL_TRANSACTION.
ENDIF.
ENDIF.
CLEAR : WA_IT_VENDOR_EXTEND.
elseif wa_it_vendor_extend-flag = 'C'.
IF FL_FLAG2 = 'X' and fl_flag4 ne 'X'.
PERFORM CLOSE_BDC_SESSION.
fl_flag4 = 'X'.
ENDIF.
REFRESH IT_BDCDATA.
CLEAR IT_BDCDATA.
PERFORM POPULATE_BDC_DATA_VEN_extend.
PERFORM CALL_TRANSACTION_FK02.
CLEAR : WA_IT_VENDOR_EXTEND.
elseif wa_it_vendor_extend-flag = 'N'.
WA_IT_noupdate-LIFNR = WA_IT_VENDOR_extend-LIFNR.
WA_IT_noupdate-BUKRS = WA_IT_VENDOR_extend-BUKRS.
WA_IT_noupdate-MSG = TEXT-019.
APPEND WA_IT_noupdate TO IT_noupdate.
W_noupdate_REC = W_noupdate_REC + 1.
CLEAR : WA_IT_noupdate, WA_IT_VENDOR_EXTEND.
endif.
ENDLOOP.
IF FL_FLAG2 = 'X'.
PERFORM CLOSE_BDC_SESSION.
ENDIF.
if fl_flag3 = 'X'.
PERFORM CLOSE_BDC_SESSION.
ENDIF.
ENDFORM. " CHK_AND_INS_VENDOR_EXTEND_DATA
*& Form POPULATE_BDC_DATA_VEN_EXTEND
This form is used to populate BDC data of Vendor Extend
FORM POPULATE_BDC_DATA_VEN_EXTEND .
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = WA_IT_VENDOR_EXTEND-ZTERM
IMPORTING
OUTPUT = WA_IT_VENDOR_EXTEND-ZTERM.
IF WA_IT_VENDOR_EXTEND-REPRF = 'Y'.
WA_IT_VENDOR_EXTEND-REPRF = 'X'.
ENDIF.
IF WA_IT_VENDOR_extend-XPORE = 'Y'.
WA_IT_VENDOR_extend-XPORE = 'X'.
ENDIF.
if wa_it_vendor_extend-flag = 'A'.
PERFORM :BDC_DYNPRO USING 'SAPMF02K' '0105',
BDC_FIELD USING 'RF02K-LIFNR' WA_IT_VENDOR_EXTEND-LIFNR,
BDC_FIELD USING 'RF02K-BUKRS' WA_IT_VENDOR_EXTEND-BUKRS,
BDC_FIELD USING 'RF02K-KTOKK' WA_IT_VENDOR_EXTEND-KTOKK,
BDC_FIELD USING 'RF02K-REF_LIFNR'
WA_IT_VENDOR_EXTEND-REF_LIFNR,
BDC_FIELD USING 'RF02K-REF_BUKRS'
WA_IT_VENDOR_EXTEND-REF_BUKRS,
BDC_FIELD USING 'BDC_OKCODE' '/00'.
elseif wa_it_vendor_extend-flag = 'C'.
PERFORM :BDC_DYNPRO USING 'SAPMF02K' '0106',
BDC_FIELD USING 'RF02K-LIFNR' WA_IT_VENDOR_extend-LIFNR,
BDC_FIELD USING 'RF02K-BUKRS' WA_IT_VENDOR_extend-BUKRS,
BDC_FIELD USING 'RF02K-D0210' 'X',
BDC_FIELD USING 'RF02K-D0215' 'X',
BDC_FIELD USING 'BDC_OKCODE' '/00'.
endif.
perform :BDC_DYNPRO USING 'SAPMF02K' '0210',
BDC_FIELD USING 'LFB1-AKONT' WA_IT_VENDOR_EXTEND-AKONT,
BDC_FIELD USING 'LFB1-FDGRV' WA_IT_VENDOR_EXTEND-FDGRV,
BDC_FIELD USING 'BDC_OKCODE' '=/00',
BDC_DYNPRO USING 'SAPMF02K' '0215',
BDC_FIELD USING 'LFB1-ZTERM' WA_IT_VENDOR_EXTEND-ZTERM,
BDC_FIELD USING 'LFB1-REPRF' WA_IT_VENDOR_EXTEND-REPRF,
BDC_FIELD USING 'LFB1-ZWELS' WA_IT_VENDOR_EXTEND-ZWELS,
BDC_FIELD USING 'LFB1-XPORE' WA_IT_VENDOR_extend-XPORE,
BDC_FIELD USING 'BDC_OKCODE' '=UPDA'.
ENDFORM. " POPULATE_BDC_DATA_VEN_EXTEND
*& Form DISPLAY_ERROR_REPORT
This form is used to display the error records on the output screen
FORM DISPLAY_ERROR_REPORT .
IF P_VENMAS = 'X'.
WRITE:/ TEXT-O05. " Error List for Vendor Master
ELSEIF P_VENEXT = 'X'.
WRITE:/ TEXT-O06. " Error List for Vendor Master Extended
ENDIF.
WRITE:/ SY-ULINE(100).
FORMAT COLOR 1.
WRITE:/1 SY-VLINE,
2 TEXT-H01, " Vendor Number
17 SY-VLINE,
18 TEXT-H02, " Company Code
31 SY-VLINE,
32 TEXT-H03, " Error Message
100 SY-VLINE.
FORMAT COLOR OFF.
WRITE:/ SY-ULINE(100).
LOOP AT IT_ERROR INTO WA_IT_ERROR.
FORMAT COLOR 2.
WRITE:/1 SY-VLINE,
2 WA_IT_ERROR-LIFNR,
17 SY-VLINE,
18 WA_IT_ERROR-BUKRS,
31 SY-VLINE,
32 WA_IT_ERROR-MSG,
100 SY-VLINE.
CLEAR : WA_IT_ERROR.
FORMAT COLOR OFF.
ENDLOOP.
WRITE:/ SY-ULINE(100).
ENDFORM. " DISPLAY_ERROR_REPORT
*& Form CALL_TRANSACTION_FK02
Form used to Call Transaction FK02
form CALL_TRANSACTION_FK02 .
DATA : L_OPTION TYPE CTU_PARAMS,
L_SUBRC TYPE SYSUBRC.
REFRESH IT_MESSTAB.
CLEAR IT_MESSTAB.
L_OPTION-DEFSIZE = 'X'.
L_OPTION-DISMODE = P_MODE.
L_OPTION-UPDMODE = 'S'.
CALL TRANSACTION 'FK02'
USING IT_BDCDATA
MESSAGES INTO IT_MESSTAB
OPTIONS FROM L_OPTION.
L_SUBRC = SY-SUBRC.
IF L_SUBRC = 0.
W_SUCC_REC1 = W_SUCC_REC1 + 1.
WA_IT_succ_rec1-MSG = Text-017.
IF P_VENMAS = 'X'.
WA_IT_succ_rec1-LIFNR = WA_IT_VENDOR_MASTER-LIFNR.
WA_IT_succ_rec1-BUKRS = WA_IT_VENDOR_MASTER-BUKRS.
ELSEIF P_VENEXT = 'X'.
WA_IT_succ_rec1-LIFNR = WA_IT_VENDOR_EXTEND-LIFNR.
WA_IT_succ_rec1-BUKRS = WA_IT_VENDOR_EXTEND-BUKRS.
ENDIF.
APPEND WA_IT_succ_rec1 TO IT_succ_rec1.
ELSE.
IF FL_FLAG3 NE 'X'.
PERFORM OPEN_BDC_SESSION_fk02.
FL_FLAG3 = 'X'.
ENDIF.
PERFORM BDC_INSERT_fk02.
W_ERR_REC = W_ERR_REC + 1.
PERFORM ERROR_RECORD_DATA1.
ENDIF.
endform. " CALL_TRANSACTION_FK02
*& Form OPEN_BDC_SESSION_fk02
Form used to Open session for FK02
form OPEN_BDC_SESSION_fk02 .
DATA : L_USERID TYPE APQ_MAPN, " Variable to hold user-id
L_GROUP TYPE APQ_GRPN. " Variable to hold value
MOVE P_GROUP1 TO L_GROUP.
MOVE SY-UNAME TO L_USERID.
CALL FUNCTION 'BDC_OPEN_GROUP'
EXPORTING
CLIENT = SY-MANDT
GROUP = L_GROUP
KEEP = SPACE
USER = L_USERID
EXCEPTIONS
CLIENT_INVALID = 1
DESTINATION_INVALID = 2
GROUP_INVALID = 3
GROUP_IS_LOCKED = 4
HOLDDATE_INVALID = 5
INTERNAL_ERROR = 6
QUEUE_ERROR = 7
RUNNING = 8
SYSTEM_LOCK_ERROR = 9
USER_INVALID = 10
OTHERS = 11.
IF SY-SUBRC <> 0.
WRITE:/ TEXT-008. " Unable to open BDC Session
ENDIF.
endform. " OPEN_BDC_SESSION_fk02
*& Form BDC_INSERT_fk02
Form used to insert data into BDC session using FK02
form BDC_INSERT_fk02 .
CALL FUNCTION 'BDC_INSERT'
EXPORTING
TCODE = 'FK02'
TABLES
DYNPROTAB = IT_BDCDATA
EXCEPTIONS
INTERNAL_ERROR = 1
NOT_OPEN = 2
QUEUE_ERROR = 3
TCODE_INVALID = 4
PRINTING_INVALID = 5
POSTING_INVALID = 6
OTHERS = 7.
IF SY-SUBRC <> 0.
WRITE:/ TEXT-009. " Unable to Insert Data to BDC Session
ENDIF.
endform. " BDC_INSERT_fk02
*& Form display_changed_report
Form to display Updated Vendor data
form display_changed_report .
IF P_VENMAS = 'X'.
WRITE:/ TEXT-O10. " Updated List for Vendor Master
ELSEIF P_VENEXT = 'X'.
WRITE:/ TEXT-O11. " Updated List for Vendor Master Extended
ENDIF.
WRITE:/ SY-ULINE(100).
FORMAT COLOR 1.
WRITE:/1 SY-VLINE,
2 TEXT-H01, " Vendor Number
17 SY-VLINE,
18 TEXT-H02, " Company Code
31 SY-VLINE,
32 TEXT-H04, " Message
100 SY-VLINE.
FORMAT COLOR OFF.
WRITE:/ SY-ULINE(100).
LOOP AT IT_succ_rec1 INTO WA_IT_succ_rec1.
FORMAT COLOR 2.
WRITE:/1 SY-VLINE,
2 WA_IT_succ_rec1-LIFNR,
17 SY-VLINE,
18 WA_IT_succ_rec1-BUKRS,
31 SY-VLINE,
32 WA_IT_succ_rec1-MSG,
100 SY-VLINE.
CLEAR : WA_IT_succ_rec1.
FORMAT COLOR OFF.
ENDLOOP.
WRITE:/ SY-ULINE(100).
endform. " display_changed_report
*& Form display_nochange_report
Form to display No Changed data for Vendors
form display_nochange_report .
IF P_VENMAS = 'X'.
WRITE:/ TEXT-O12. " No Changes List for Vendor Master
ELSEIF P_VENEXT = 'X'.
WRITE:/ TEXT-O13. " No Changes List for Vendor Master Extended
ENDIF.
WRITE:/ SY-ULINE(100).
FORMAT COLOR 1.
WRITE:/1 SY-VLINE,
2 TEXT-H01, " Vendor Number
17 SY-VLINE,
18 TEXT-H02, " Company Code
31 SY-VLINE,
32 TEXT-H04, " Message
100 SY-VLINE.
FORMAT COLOR OFF.
WRITE:/ SY-ULINE(100).
LOOP AT IT_noupdate INTO WA_IT_noupdate.
FORMAT COLOR 2.
WRITE:/1 SY-VLINE,
2 WA_IT_noupdate-LIFNR,
17 SY-VLINE,
18 WA_IT_noupdate-BUKRS,
31 SY-VLINE,
32 WA_IT_noupdate-MSG,
100 SY-VLINE.
CLEAR : WA_IT_noupdate.
FORMAT COLOR OFF.
ENDLOOP.
WRITE:/ SY-ULINE(100).
endform. " display_nochange_report
*& Form ERROR_RECORD_DATA1
Form to get Error Message for Changed Vendors
form ERROR_RECORD_DATA1 .
DATA : L_LINES TYPE I,
L_MSG(200) TYPE C.
DESCRIBE TABLE IT_MESSTAB LINES L_LINES.
READ TABLE IT_MESSTAB INTO WA_IT_MESSTAB INDEX L_LINES.
IF SY-SUBRC = 0.
CLEAR L_MSG.
CALL FUNCTION 'FORMAT_MESSAGE'
EXPORTING
ID = WA_IT_MESSTAB-MSGID
LANG = SY-LANGU
NO = WA_IT_MESSTAB-MSGNR
V1 = WA_IT_MESSTAB-MSGV1
V2 = WA_IT_MESSTAB-MSGV2
V3 = WA_IT_MESSTAB-MSGV3
V4 = WA_IT_MESSTAB-MSGV4
IMPORTING
MSG = L_MSG
EXCEPTIONS
NOT_FOUND = 1
OTHERS = 2.
IF SY-SUBRC = 0.
WA_IT_ERROR_fk02-MSG = L_MSG.
ENDIF.
IF P_VENMAS = 'X'.
WA_IT_ERROR_fk02-LIFNR = WA_IT_VENDOR_MASTER-LIFNR.
WA_IT_ERROR_fk02-BUKRS = WA_IT_VENDOR_MASTER-BUKRS.
ELSEIF P_VENEXT = 'X'.
WA_IT_ERROR_fk02-LIFNR = WA_IT_VENDOR_EXTEND-LIFNR.
WA_IT_ERROR_fk02-BUKRS = WA_IT_VENDOR_EXTEND-BUKRS.
ENDIF.
APPEND WA_IT_ERROR_fk02 TO IT_ERROR_fk02.
CLEAR WA_IT_ERROR_fk02.
ENDIF.
endform. " ERROR_RECORD_DATA1
*& Form display_error_report_fk01
Form to display Error Report for Master Vendors (FK01)
form display_error_report_fk01 .
IF P_VENMAS = 'X'.
WRITE:/ TEXT-O05. " Error List for Vendor Master (FK01)
ELSEIF P_VENEXT = 'X'.
WRITE:/ TEXT-O06. " Error List for Vendor Master Extended (FK01)
ENDIF.
WRITE:/ SY-ULINE(100).
FORMAT COLOR 1.
WRITE:/1 SY-VLINE,
2 TEXT-H01, " Vendor Number
17 SY-VLINE,
18 TEXT-H02, " Company Code
31 SY-VLINE,
32 TEXT-H04, " Message
100 SY-VLINE.
FORMAT COLOR OFF.
WRITE:/ SY-ULINE(100).
LOOP AT IT_ERROR_fk01 INTO WA_IT_ERROR_fk01.
FORMAT COLOR 2.
WRITE:/1 SY-VLINE,
2 WA_IT_ERROR_fk01-LIFNR,
17 SY-VLINE,
18 WA_IT_ERROR_fk01-BUKRS,
31 SY-VLINE,
32 WA_IT_ERROR_fk01-MSG,
100 SY-VLINE.
CLEAR : WA_IT_ERROR_fk01.
FORMAT COLOR OFF.
ENDLOOP.
WRITE:/ SY-ULINE(100).
endform. " display_error_report_fk01
*& Form display_error_report_fk02
Form to display Error Report for changed Vendors (FK02)
form display_error_report_fk02 .
IF P_VENMAS = 'X'.
WRITE:/ TEXT-O14. " Error List for Vendor Master (FK02)
ELSEIF P_VENEXT = 'X'.
WRITE:/ TEXT-O15. " Error List for Vendor Master Extended (FK02)
ENDIF.
WRITE:/ SY-ULINE(100).
FORMAT COLOR 1.
WRITE:/1 SY-VLINE,
2 TEXT-H01, " Vendor Number -
Hi Everyone,
I'm trying to create a PO for returns to a vendor which in fact is a plant in the same company code. I'm getting this error message " No delivery type for returns processing assigned to item 00010". I assigned the delivery type LR for both plant in IMG. please give me a solution <b>ASAP</b>. Thanks.please check the delivery type in confirmations control and in delivery tab of your PO.
regards
venkadesh -
Difference between Return Delivery to Vendor - Against Material Document &
Hi,
Can any body explain in detail what is the difference between the below 2 scenarios-
Difference between Return Delivery to Vendor - Against Material Document & Return Delivery to Vendor - Against Returns PO
Thanks in adv
Reg
SSKHi,
Return delivery to Vendor against material document is done when you want to send the entire qty back to vendor and when your vendor invoice is not paid.
You create Returns order, when you want to return some qty for which you can not trace any material document.
For eg: During some festival season, you have purchased more stock. After that some stock is left with you which you would like to return to the vendor.
Or you have found them damaged at a later point of time.
Maybe you are looking for
-
Resizing datafiles in oracle 10g
Hi, My total datafile size was showing around 100g (physical file size). But when actually query dba_segments to see how much tables and indexes are occupying it is coming around max of 30g. So how can i reclaim the remaining datafile size. As i know
-
What's the best way to play a very short sound?
I'm writing a swing application, I want to play a beep (a very short wav file) every time I press a button. (a bit like the alert sound in windows) I know there're different ways to play sound. I don't want to use a full-feature sound library because
-
WL commerce server install problem
Ok, this has me feeling real stupid: Fresh install, Windows 2000, JDK 1.3, WLS 5.1, SP6 (including the tags file). Once I start the installer and enter the installation directory (it doesn't show a default, should it?), the installer says something l
-
Problem with USB recognition using CS4 InDesign
Help- Anyone! I am using CS4 and Indesign will not open PDFs. I get the following eror message: "Cannot open the file "Name of Record.pdf" .Adobe Indesign may not support the file format, a plug-in that supports the file format may be missing, or
-
What happens if i havent backed up my phone on itunes since 2012
I want to update my phones software but I need to free up some storage first. So I want to back it up onto my iTunes or icloud. But since I haven't backed up this device yet I am scared everything on my phone may get deleted off of it. I am unsure of