Weight change in material master, update all open PO's
Hello
IS there any standard way for mass update open purchase orders, when weights and volumen in material master change ?
example:
there is a change in neto weight for material AAAA, which is inserted into mm02, basic data for his material. This change doesn't effect already created open orders with this material. Is there any standard way to update them in sap 4.7 ?
Changes will get reflected for new docs only. This is standard.
Now other question comes, why you want to change in PO. I am sure PO are already sent to vendor. Then ideally it is not advisable to change in those PO.
If you haven't sent those PO to vendor, open those PO do some minor corrections SAP will populate the change information in PO documents.
Also changed information will get effective later at GR stage also.
So no question to worry.
Check and revert
Similar Messages
-
Issue in material master update from presentation server using BAPI....
Hi Guru's...
i am trying to change the material master from presentation server (desktop flat file)
using BAPI(BAPI_MATERIAL_SAVEDATA) ....
while executing my program i am getting the message like material had changed...
but while in mm02 i am un able to fine the updates...
please find below program logic and correct me if any mistakes....
thanks in advance...
*& Report ZAREPAS36
REPORT zarepas36.
DATA : gs_bapimathead TYPE bapimathead,
gs_clientdata TYPE bapi_mara,
gs_clientdatax TYPE bapi_marax.
TYPES : BEGIN OF gty_itab1,
matnr(18),
matkl(9),
spart(2),
ntgew(13),
gewei(3),
meins(3),
END OF gty_itab1.
DATA : gt_itab1 TYPE STANDARD TABLE OF gty_itab1,
gwa_itab1 TYPE gty_itab1.
TYPES: BEGIN OF gty_itab2,
abc(132),
END OF gty_itab2.
DATA: gt_itab2 TYPE STANDARD TABLE OF gty_itab2,
gwa_itab2 TYPE gty_itab2.
flat file at selection screen
PARAMETERS: p_files TYPE string.
CALL METHOD cl_gui_frontend_services=>gui_upload
EXPORTING
filename = p_files
filetype = 'ASC'
CHANGING
data_tab = gt_itab2
EXCEPTIONS
OTHERS = 8.
LOOP AT gt_itab2 INTO gwa_itab2.
IF gwa_itab2-abc(1) = 'S'.
gwa_itab1 = gwa_itab2-abc(132).
APPEND gwa_itab1 TO gt_itab1.
ENDIF.
ENDLOOP.
loop at gt_itab1 into gwa_itab1.
*Material
gs_bapimathead-material = gwa_itab1-matnr.
*Material details at client data
*material group.
gs_clientdata-matl_group = gwa_itab1-matkl.
gs_clientdatax-matl_group = 'X'.
*Division
gs_clientdata-division = gwa_itab1-spart.
gs_clientdatax-division = 'X'.
*Net Weight
gs_clientdata-net_weight = gwa_itab1-ntgew.
gs_clientdatax-net_weight = 'X'.
*Unit of Weight
gs_clientdata-unit_of_wt = gwa_itab1-gewei.
gs_clientdatax-unit_of_wt = 'X'.
*Base Unit of Measure
gs_clientdata-base_uom = gwa_itab1-meins.
gs_clientdatax-base_uom = 'X'.
endloop.
*calling BAPI for making changes in material and saving thru BAPI.
CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'
EXPORTING
headdata = gs_bapimathead
clientdata = gs_clientdata
clientdatax = gs_clientdatax.
IF sy-subrc NE 0.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
WRITE: / 'Error occured while changing material'.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
WRITE: / 'material',gs_bapimathead-material,'changed'.
ENDIF.hi hello Guru's
i resolved the issuee..
pleaso go thru the below proram logic for your reference..........
*& Report ZAREPAS36
REPORT zarepas36.
DATA : gs_bapimathead TYPE bapimathead,
gs_clientdata TYPE bapi_mara,
gs_clientdatax TYPE bapi_marax.
TYPES : BEGIN OF gty_itab1,
matnr(18),
matkl(9),
spart(2),
ntgew(13),
gewei(3),
meins(3),
END OF gty_itab1.
DATA : gt_itab1 TYPE STANDARD TABLE OF gty_itab1,
gwa_itab1 TYPE gty_itab1.
TYPES: BEGIN OF gty_itab2,
abc(132),
END OF gty_itab2.
DATA: gt_itab2 TYPE STANDARD TABLE OF gty_itab2,
gwa_itab2 TYPE gty_itab2.
DATA:ls_return TYPE bapiret2,
lt_bapiret2 TYPE standard table of bapiret2.
flat file at selection screen
PARAMETERS: p_files TYPE string.
CALL METHOD cl_gui_frontend_services=>gui_upload
EXPORTING
filename = p_files
filetype = 'ASC'
CHANGING
data_tab = gt_itab2
EXCEPTIONS
OTHERS = 8.
LOOP AT gt_itab2 INTO gwa_itab2.
IF gwa_itab2-abc(1) = 'S'.
gwa_itab1 = gwa_itab2-abc(132).
APPEND gwa_itab1 TO gt_itab1.
ENDIF.
ENDLOOP.
LOOP AT gt_itab1 INTO gwa_itab1.
*Material
gs_bapimathead-material = gwa_itab1-matnr.
*Material details at client data
*material group.
gs_clientdata-matl_group = gwa_itab1-matkl.
gs_clientdatax-matl_group = 'X'.
*Division
gs_clientdata-division = gwa_itab1-spart.
gs_clientdatax-division = 'X'.
*Net Weight
gs_clientdata-net_weight = gwa_itab1-ntgew.
gs_clientdatax-net_weight = 'X'.
*Unit of Weight
gs_clientdata-unit_of_wt = gwa_itab1-gewei.
gs_clientdatax-unit_of_wt = 'X'.
*Base Unit of Measure
gs_clientdata-base_uom = gwa_itab1-meins.
gs_clientdatax-base_uom = 'X'.
ENDLOOP.
*calling BAPI for making changes in material and saving thru BAPI.
CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'
EXPORTING
headdata = gs_bapimathead
clientdata = gs_clientdata
clientdatax = gs_clientdatax
IMPORTING
return = ls_return.
LOOP AT lt_bapiret2 INTO ls_return.
EXIT.
ENDLOOP.
IF sy-subrc = 0.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
WRITE: / 'Error occured while changing material'.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
WRITE: / 'material',gs_bapimathead-material,'changed'.
ENDIF. -
PuP price not changed in Material master
Hello All experts
I have one question about the material ledger related transaciton, I have a Material with 2+V (price deter. and price control) setting in Material master data in Accounting 1 TAB. And material ledger is active for this material, the Periodic Unit price is 1 USD in current period and stock is 0.
One PO posted for this Material for purchase with actual price 100 USD, and 101 movement type with special stock indicator E was used in Goods receipt posting. I think these stock will be treated as valuated sales order stock. But GR posting didn't trigger any PuP price change in Material master. Is that situation normal? Pls kindly help.With price control V in activity-based material price determination (indicator2 in the material master), the moving average price is calculated. With price control S, the material is valuated with the standard price and the moving average price is calculated for information purposes.
In single-/multi-level material price determination(indicator 3 in the material master), the valuation price (standard price) remains unchanged and a periodic unit price is calculated for the closed period.
This option is only for materials with price control indicator S,and is only recommended if in addition to multiple currencies and/or valuations, you use single-/multi-level material price determination.
In single-/multi-level material price determination, a periodic unit price is updated for information, but it can only be used for material valuation in the closed period. -
Changes in Material Master leading to issues in MRP
Hi,
For a particular material a user changed a lot of material master data (MRP1 and MRP2 view) within a couple of hours.
As a result MRP is not working as we would expect:
- some orders have no quantity in the "Available quantity" column in MD04 and as a result do not trigger any PO (Received/Required quantity = -1, but Av qty = blank)
- whenever a shipment is foreseen it is consumed/reserved by/for the order which requested delivery date is closest after that shipment date
These are the changes made to the master data in November 2009:
Planning Strategy Group: from Make-To-Stock Production to No Planning to Strategy Group for Spares & Consumables to No Planning to Strategy Group for Spares & Consumables
MRP Group: from Client Specific MRP Group for Period Mgmt to General to External Procurement to Client Specific MRP Group for Period Mgmt to General to Client Specific MRP Group for Period Mgmt
Availabilty Check: from Indiv. Req. to Indiv. Req w/o PO. to Indiv. Req.
Unplanned Consumption in period: from blank to 11.2009
Fwd Consumption Period: from 0 to 999 to 0
Consumption Mode: from blank to Forward Consumption Only to blank
Unchanged MRP material master data:
Bwd Consumption Period: 0
MRP type: MRP
Planning Time Fence: 1
Lot size: WB (weekly lot size)
Procurement type: External Procurement
Backflush: always backflush
What should we do to have MRP work correctly again for this material?
Changes to material master MRP? Delete all schedule lines and start from scratch in SOs?
All help is much appreciated!
Best regards,
Geert
Edited by: Geert P on Dec 10, 2009 6:08 PM
Edited by: Geert P on Dec 14, 2009 4:04 PMSolved internally by adjusting Strategy Group
-
Not able to transfer changes in material master (periodic)
Hi Friends,
Got an issue here. I am not able to transfer the changes I made in material master. I want this as periodic, Made the specific setting in CFC9. And for your information 'Activate ALE Change Pointers Generally' and for massege type are activated.
But when I execute CFP1 I got massege: 'No appropriate master data changes: Transfer has not happen'.
I made changes in material master (global level),..like gross weight changed. Material is in active IM, no duplication.
Any help Please? We are on SCM 7.0.
Thanks,
Satyajit
Edited by: Satyajit Patra on Mar 20, 2010 9:12 PM
OK, Guys I think I need to raise an OOS... It was for SCM 7.0, but was basic config....thts why I edited the thread so many times expecting some responce.
Edited by: Satyajit Patra on Mar 22, 2010 7:41 AMHi Satyajit,
Please look at OSS Note 1069560 - Data inconsistencies: Activating integration. models in parallel, if this helps you.
Since Gross data of material is in the basic view, it is common across plants , whereas, IMs are normally designed to have material masters at plant level.
We may have same material in different IMs with different plants. Therefore changes of the basic view fields are then contained in multiple IMs. SAP advises to have a larger IM or sequential activation of IMs.
I hope this will help you .
Regards
Datta -
Material Master Update from group routing.
Dear All,
When we make material routing. in CA02>scheduling>Results--->Update material master (marking). can be done for the lead time scheduling Purpose. and update in CA96.
But when we use Group Routing, and assign multiple materials in routing header, and then go for
CA02>scheduling>Results--->** (no Material Master Update tab Appeared)
Do we have a solution for this?
Thanks & regards
RaghuDear,
Follow these steps,
Scheduling in routing (CA02 ) as :
Call up the operation overview for the routing.
Choose Extras-- Scheduling -- Schedule.
You reach the Scheduling dialog box.
Maintain the data on the dialog box. The system proposes Backward scheduling for the scheduling type.
Choose Continue.
You reach the Enter overview variant dialog box 00000001.
Enter the overview variant you want to use to display the scheduling results. Choose Continue.
The routing is scheduled. You reach the Schedule Overview screen containing the scheduling data.
After the scheduling run has been carried out, click on scheduling Result-- update material master
You use this function to update material master. Go to the CA96 and update material master.
Please try and come back.
Regards,
R.Brahmankar -
Exit for Material Master UPdate
Hi Friends,
could anyone let me know any user exit for Material Master UPdate.
Thanks in Advance
Regardshi
good
MGA00001 Material Master (Industry): Checks and Enhancements
MGA00002 Material Master (Industry): Number Assignment
MGA00003 Material Master (Industry and Retail): Number Display
thanks
mrutyun^ -
RMDATIND program - used for change the Material Master
Hi Experts,
Could please confirm whether using RMDATIND program can we change the Material master data?...
Thanks
R P R kumaarExecute this program and you can find an information icon in the toolbar. press that icon. you will complete documentation regarding this program
a® -
Availability Check Changed on the Material Master Update Existing Orders
I need to know if there is a way to update existing orders once changes have been made to the material. Currently the only way that I know of is to go into individual orders change the plant save then change it back to the original plant on the order then the changes take effect. How can I achieve this without touching every order individually. Is there something to mass update existing orders to take a new snapshot of the material master settings for a material.
Try with t.code VA05 - Open sales order list.
Execute this list. In the output, sort the data by plant. Then go to menu Edit -> mass change -> new plant. Change the plant for group of sales orders that have similar plants. Then again do the same thing to bring the previous plant in the sales orders.
This can help reduce the time instead of going one by one.
Regards, -
Delivery to copy weights,volumes from material master,instead of sales ord
hi,
The weights/volumes get copied from the material master to the sales doc and from the sales doc to the delivery.
We have a issue where proper weights/volumes are not known at the order entry. thus when the new weights etc are noted, they change it in the material master.
could some one please let me know how to configure the system to take the values from the material master for these instead of the sales doc to get the weights/volumes.
that is the delivery doc should get the weight and volume from the material master(changed values)
Appreciate your help on this.
Thanks & Regards,
KeshiniHi Keshini
So , lets assume that you have created a sales order for the material MAT1 and it has Net weight 5kg & Gross weight 6kg ,Now the sales order status is open you have not yet delivered that order and you have changed the Net weight 10kg & Gross weight 14kg. So you want to update that open sales order to Net weight 10kg & Gross weight 14kg. If that is the problem then just go to VA05 and give the material (MATNR) and check the box open sales orders then you will get the open sales orders then in the menu you select to carryout the net weight & gross weight there you can change .and then you can do delivery then the updation will take place in the Net weight & Gross weight also
Regards
Srinath -
Mass change of material master
Hi Experts,
I have a query regarding mass change to be done in material master. I need to update one value in the Material group 4 field in sales org view 2 in MM02 transaction for nearly 300000 materials. One option i find is LSMW and the other i saw is transaction MM17. Please let me know how feasible is this MM17 transaction? Is it possible to upload all the 30000 materials through MM17 transaction in one go and update the field? Will there be any performance issue if MM17 transaction is used?
Please give your suggestion.
Thanks
DinakarHi,
Use MM17,
Goto the Transaction code MM17 and in the table check the MVKE- sales org data for material
and select the Fields tab and choose the field MVKE-MVGR4 and execute
Now enter all the materials in the next screen for which you want to change and execute
In the next screen you can maintain the new values for the old
Please check and revert
thanks,
santosh -
Dear all,
I am trying to change the Price control of a material from V to S.
It is showing me a system message as follows:
Price control cannot be changed (cost component split exists)
Message no. M3160
Diagnosis
Costing is active and has already been carried out for the current period. You can only change the price control to "Standard" if the moving average price and the standard price are identical
Now when i am trying to make the standard and moving average price identical,system is throwing an error as follows:
Standard cost estimate exists in period 04 2009
Message no. M8155
Diagnosis
A standard cost estimate has been entered in the material master record for the specified period. This can be a current or future estimate.
Note: This message category can be changed in Customizing for Invoice Verification. This means that you can receive an error message even though the message is defined in the standard system as a warning message.
The following documentation only deals with the standard case.
System response
You cannot manually change prices.
Procedure
1. To update the price determined using a standard cost estimate in the material master and activate the price for material valuation, you have to mark and release the standard cost estimate.
Mark and release standard cost estimate
Procedure for System Administration
2. If you have authorization for Customizing, in Customizing for Product Cost Planning, you can define this message as only a warning or information message for certain users. These users can then change the price manually.
Pls try to throw some light in this issue about how to process the price control change?????????
also pls let me know the spro path for message type M8 155??????
also what is the menu path for M8 155 in product cost planning?
regards,
indranilhttp://help.sap.com/erp2005_ehp_03/helpdata/EN/47/60ff6249f011d1894c0000e829fbbd/frameset.htm
For System path of M8 155 go to SPRO - MM - Purchasing - Logistic Invoice Verification - Define Attribute for System Message / OMRM
Regards,
Ashok -
LSMW-Error during processing of BDC session change to material master MM02
I have created an LSMW for changing material master data. I recorded MM02 and using the "select views" screen selected the accounting 2 view and entered the information in the fields on that screen requiring changes. I've set up all of the technical screens for the LSMW. However, when I process the BDC session with "display errors only", the program stops at the select view screen with an error message "Select at least one view". Any ideas how I can process through this screen so that the Accounting 2 screen opens in the BDC session? One further note, I set that selection as a constant in the field mapping and conversion rules screen. The field name recorded as KZSEL_05.
hi
one question how did you choose the view? i mean to ask by scrolling down using mouse or page down.
the scrolling by mouse is not recognized by recording and that may be the error. so whenever you have to go down in screen please use page down not scrolling at least in LSMW. -
Copy Material Master Record -- All Answers will be rewarded
Hello All,
I need to copy the set of materials from one plant to another plant.
Say I need to copy Materials from plant 1123 to 1128.
Say some 10000 materials approximately.
one way is to create using MM01 with the reference Material. However this is not possible as different material numbers can have different Views.
Is there a smart way to do this.
Please let me know Marting...I will Reward all Answers
Regards
Martingtry this sample program in which it will copy one material to another material it will work
REPORT ZM_MAT_EXT_TO_PLANT
NO STANDARD PAGE HEADING
LINE-SIZE 255
MESSAGE-ID ZI.
Program : ZM_MAT_EXT_TO_PLANT *
Author : warun kumar todimala P *
Type : Extend Material from one plant to another using BDC *
Description : The program will use BDC CALL TRANSACTION to extend *
material from one plant to another plant. If error *
occurs, an error session will be created with name *
given on selection screen. So that it can be manually *
processed using SM35 *
TCODE used : MM01 - Create Material *
SAP Request : D51K912730 *
Date : 13SEP2006 *
C H A N G E L O G *
Date | Req No | Initial | Description
14SEP06 D51K912772 Plant validation from T001W *
Warehouse view validation *
18SEP06 D51K912817 Change for xl file *
Tables Declaration
TABLES: MARA, "General Material Data
MARC, "Plant Data for Material
MVKE, "Sales Data for Material
MBEW, "Material Valuation
MARD, "Storage Location Data for Material
MAKT, "Material Descriptions
T100, "Messages
T130M, "Transaction control parameters: mat. master maintenance
MLGN. "Material Data for Each Warehouse Number
Internal table declaration
*--Internal table for Sales data for material
DATA: BEGIN OF INT_MVKE OCCURS 0,
MATNR LIKE MVKE-MATNR,
VKORG LIKE MVKE-VKORG,
VTWEG LIKE MVKE-VTWEG,
VMSTA LIKE MVKE-VMSTA,
VMSTD LIKE MVKE-VMSTD,
DWERK LIKE MVKE-DWERK,
KONDM LIKE MVKE-KONDM,
PRODH LIKE MVKE-PRODH,
MTPOS LIKE MVKE-MTPOS,
END OF INT_MVKE.
*--Internal table for material if input file is given
TYPES: BEGIN OF T_MAT,
MATNR LIKE MATERIALID-MATNR_EXT,
SLGORT LIKE MARD-LGORT,
TLGORT LIKE MARD-LGORT,
END OF T_MAT.
TYPES: BEGIN OF T_VALID_MAT,
MATNR LIKE MATERIALID-MATNR_EXT,
END OF T_VALID_MAT.
DATA: BEGIN OF IT_RMAT OCCURS 0,
MATNR LIKE MARA-MATNR,
TLGORT LIKE MARD-LGORT,
SLGORT LIKE MARD-LGORT,
END OF IT_RMAT.
*--Warehouse data
DATA: BEGIN OF INT_WAREH OCCURS 0,
MATNR LIKE MLGN-MATNR,
LGNUM LIKE MLGN-LGNUM,
LTKZA LIKE MLGN-LTKZA,
LTKZE LIKE MLGN-LTKZE,
LGBKZ LIKE MLGN-LGBKZ,
END OF INT_WAREH.
*--Marked for deletion
TYPES: BEGIN OF T_MAR_DEL,
MATNR LIKE MARA-MATNR,
LVORM LIKE MARA-LVORM,
END OF T_MAR_DEL.
*--Range for material FOR input file in
in internal format
RANGES: R_MATNR FOR MARA-MATNR.
*--Internal table for Material Valuation
DATA: BEGIN OF INT_MBEW OCCURS 0,
MATNR LIKE MBEW-MATNR,
VPRSV LIKE MBEW-VPRSV,
STPRS LIKE MBEW-STPRS,
BKLAS LIKE MBEW-BKLAS,
ZPLD1 LIKE MBEW-ZPLD1,
ZPLD2 LIKE MBEW-ZPLD2,
END OF INT_MBEW.
*--Types for inal internal table contains all the data used to extend
*--the material(s)
TYPES: BEGIN OF T_FINAL,
MATNR LIKE MARA-MATNR,
MTART LIKE MARA-MTART,
VPSTA LIKE MARA-VPSTA,
MBRSH LIKE MARA-MBRSH,
MEINS LIKE MARA-MEINS,
MATKL LIKE MARA-MATKL,
GEWEI LIKE MARA-GEWEI,
RAUBE LIKE MARA-RAUBE,
SPART LIKE MARA-SPART,
PRDHA LIKE MARA-PRDHA,
MAGRV LIKE MARA-MAGRV,
WERKS LIKE MARC-WERKS,
PSTAT LIKE MARC-PSTAT,
PLIFZ LIKE MARC-PLIFZ,
SSQSS LIKE MARC-SSQSS,
LADGR LIKE MARC-LADGR,
SERNP LIKE MARC-SERNP,
PERIV LIKE MARC-PERIV,
STAWN LIKE MARC-STAWN,
HERKL LIKE MARC-HERKL,
EKGRP LIKE MARC-EKGRP,
DISMM LIKE MARC-DISMM,
DISPO LIKE MARC-DISPO,
DISLS LIKE MARC-DISLS,
LGPRO LIKE MARC-LGPRO,
FHORI LIKE MARC-FHORI,
DZEIT LIKE MARC-DZEIT,
BWSCL LIKE MARC-BWSCL,
AWSLS LIKE MARC-AWSLS,
LGFSB LIKE MARC-LGFSB,
MAKTX LIKE MAKT-MAKTX,
TLGORT LIKE MARD-LGORT,
SLGORT LIKE MARD-LGORT,
VKORG LIKE MVKE-VKORG,
VTWEG LIKE MVKE-VTWEG,
VMSTA LIKE MVKE-VMSTA,
VMSTD LIKE MVKE-VMSTD,
DWERK LIKE MVKE-DWERK,
KONDM LIKE MVKE-KONDM,
PRODH LIKE MVKE-PRODH,
MTPOS LIKE MVKE-MTPOS,
VPRSV LIKE MBEW-VPRSV,
STPRS LIKE MBEW-STPRS,
BKLAS LIKE MBEW-BKLAS,
ZPLD1 LIKE MBEW-ZPLD1,
ZPLD2 LIKE MBEW-ZPLD2,
LGNUM LIKE MLGN-LGNUM,
LTKZA LIKE MLGN-LTKZA,
LTKZE LIKE MLGN-LTKZE,
LGBKZ LIKE MLGN-LGBKZ,
END OF T_FINAL.
TYPES: BEGIN OF T_LOG,
MATNR LIKE MATERIALID-MATNR_EXT,
MTART LIKE MARA-MTART,
WERKS LIKE MARC-WERKS,
MSG(480),
MSGTYP TYPE C,
END OF T_LOG.
TYPES: BEGIN OF T_INVALID,
MATNR LIKE MATERIALID-MATNR_EXT,
WERKS LIKE MARC-WERKS,
MSG(100),
END OF T_INVALID.
*--Internal to for mateial descriptions
*DATA: BEGIN OF INT_MAT_DES OCCURS 0,
MATNR LIKE MAKT-MATNR,
MAKTX LIKE MAKT-MAKTX,
END OF INT_MAT_DES.
DATA: BEGIN OF IT_FINAL1 OCCURS 0,
MATNR LIKE MATERIALID-MATNR_EXT,
MTART LIKE MARA-MTART,
MBRSH LIKE MARA-MBRSH,
WERKS LIKE MARC-WERKS,
PSTAT LIKE MARC-PSTAT,
LGPRO LIKE MARC-LGPRO,
LGFSB LIKE MARC-LGFSB,
TLGORT LIKE MARD-LGORT,
SLGORT LIKE MARD-LGORT,
END OF IT_FINAL1.
*--Internal table for Storage Location Data
DATA : BEGIN OF INT_MARD OCCURS 0,
MATNR LIKE MARD-MATNR,
WERKS LIKE MARD-WERKS,
LGORT LIKE MARD-LGORT,
END OF INT_MARD.
*--For Views
TYPES: BEGIN OF T_XBILDTAB.
INCLUDE STRUCTURE MBILDTAB.
TYPES: END OF T_XBILDTAB.
*--Internal table for VIEWS
DATA: IT_XBILDTAB TYPE STANDARD TABLE OF T_XBILDTAB WITH HEADER LINE.
*--Final internal table contains all the data used to extend the
material(s)
DATA: IT_FINAL TYPE STANDARD TABLE OF T_FINAL WITH HEADER LINE,
IT_TPLANT TYPE STANDARD TABLE OF T_FINAL WITH HEADER LINE,
int_fplant TYPE STANDARD TABLE OF t_final WITH HEADER LINE,
IT_TOTAL TYPE STANDARD TABLE OF T_FINAL WITH HEADER LINE,
WA_FINAL TYPE T_FINAL,
WA_TPLANT TYPE T_FINAL,
INT_TEST TYPE STANDARD TABLE OF T_FINAL WITH HEADER LINE,
WA_T130M LIKE T130M,
*--table for bdcdata to store the bdc data
IT_BDCDATA TYPE STANDARD TABLE OF BDCDATA WITH HEADER LINE,
*--table for messages come from the 'CALL TRANSACTION'
IT_MESSTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE,
IT_SREP TYPE STANDARD TABLE OF T_LOG WITH HEADER LINE,
IT_EREP TYPE STANDARD TABLE OF T_LOG WITH HEADER LINE,
IT_AVL TYPE STANDARD TABLE OF T_LOG WITH HEADER LINE,
IT_ERR TYPE STANDARD TABLE OF T_LOG WITH HEADER LINE,
IT_DUPREC TYPE STANDARD TABLE OF T_MAT WITH HEADER LINE,
IT_MAT TYPE STANDARD TABLE OF T_MAT WITH HEADER LINE,
IT_MAT1 TYPE STANDARD TABLE OF T_MAT WITH HEADER LINE,
IT_DELREC TYPE STANDARD TABLE OF T_MAT WITH HEADER LINE,
IT_MAR_DEL TYPE STANDARD TABLE OF T_MAR_DEL WITH HEADER LINE,
IT_DELREC35 TYPE STANDARD TABLE OF T_MAT WITH HEADER LINE,
IT_VALID_REC TYPE STANDARD TABLE OF T_VALID_MAT WITH HEADER LINE,
IT_IN_VALID TYPE STANDARD TABLE OF T_VALID_MAT WITH HEADER LINE,
IT_INVALID TYPE STANDARD TABLE OF T_INVALID WITH HEADER LINE,
IT_INVALID1 TYPE STANDARD TABLE OF T_INVALID WITH HEADER LINE,
*--Standard views
IT_T133A TYPE STANDARD TABLE OF T133A WITH HEADER LINE,
IT_T134 TYPE STANDARD TABLE OF T_XBILDTAB WITH HEADER LINE.
Global variables declaration
DATA:
GV_TRANS_CODE TYPE SY-TCODE VALUE 'MM01',"Tcode
GV_MTART LIKE MARA-MTART, "Material type
GV_MATNR LIKE MATERIALID-MATNR_EXT, "40 char material
HOLDDATE LIKE SY-DATUM, "Holdate for session
GV_SES_OPEN, "Session open check
GV_LAST LIKE MBILDTAB-GUIFU, "View code
GV_VIEW_CODE LIKE MBILDTAB-GUIFU, "Function code
GV_PURCH_VIEW TYPE I, "Purch view
GV_FIRST_VIEW(2) TYPE N, "First view
GV_OKCODE TYPE SY-UCOMM, "Ok code
GV_MSG1(150), "Message
GV_CNTR TYPE I VALUE '1', "Counter
GV_VIEW_CNT LIKE SY-TABIX, "View count
GV_NXT_VIEW LIKE MBILDTAB-GUIFU, "Function code
GV_ERCNT TYPE I, "Error records count
GV_SCNT TYPE I, "Success records count
GV_VALIDREC TYPE I, "Valid record count
GV_DUPREC TYPE I, "Duplicate record count
GV_AVL TYPE I, "Available records count
GV_MSG(120), "Message
GV_INREC TYPE I, "Input records count
GV_MAR_DEL TYPE I, "Marked for deletion
GV_FILE_STR TYPE STRING, "Hold file name except 'txt'
GV_LAST_4_CHARS TYPE STRING, "To hold '.txt' from inpfile
GV_TCNT TYPE I, "Total record count
GV_INVALID_REC TYPE I, "Invalide record count
GV_FILE_CRT_Y_OR_NO TYPE C. "file created or not
CONSTANTS
CONSTANTS:
TCODE_MM01 LIKE TSTC-TCODE VALUE 'MM01',
C_UPDATE TYPE C VALUE 'A'.
S E L E C T - O P T I O N S
SELECTION-SCREEN : BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
SELECTION-SCREEN: BEGIN OF LINE.
SELECTION-SCREEN: COMMENT 1(25) TEXT-009.
SELECTION-SCREEN: POSITION 33.
PARAMETER P_WH AS CHECKBOX DEFAULT 'X'.
SELECTION-SCREEN: END OF LINE.
SELECT-OPTIONS : S_MATNR FOR MARA-MATNR.
PARAMETERS : P_FWERKS LIKE MARC-WERKS OBLIGATORY,
P_TWERKS LIKE MARC-WERKS OBLIGATORY.
SELECTION-SCREEN : END OF BLOCK B1.
SELECTION-SCREEN : BEGIN OF BLOCK B2 WITH FRAME TITLE TEXT-002.
SELECTION-SCREEN: BEGIN OF LINE.
SELECTION-SCREEN: COMMENT 1(25) TEXT-004.
SELECTION-SCREEN: POSITION 32.
*--Input file
PARAMETERS: P_IFILE LIKE RLGRAP-FILENAME. "input file
SELECTION-SCREEN: END OF LINE.
SELECTION-SCREEN: BEGIN OF LINE.
SELECTION-SCREEN: COMMENT 1(25) TEXT-005.
SELECTION-SCREEN: POSITION 32.
*--Unix output file
PARAMETERS: P_OFILE LIKE RLGRAP-FILENAME LOWER CASE DEFAULT
'./sap_out/matextplnt'. "Output file in UNIX
SELECTION-SCREEN: END OF LINE.
SELECTION-SCREEN: BEGIN OF LINE.
SELECTION-SCREEN: COMMENT 1(25) TEXT-012.
SELECTION-SCREEN: POSITION 32.
*--PC file ( used to create the files from internal tables)
PARAMETERS: P_PCFILE LIKE RLGRAP-FILENAME LOWER CASE OBLIGATORY
DEFAULT 'C:\'.
SELECTION-SCREEN: END OF LINE.
SELECTION-SCREEN : END OF BLOCK B2.
SELECTION-SCREEN : BEGIN OF BLOCK B3 WITH FRAME TITLE TEXT-003.
*--Session Name
PARAMETERS : P_GROUP LIKE APQI-GROUPID DEFAULT 'MAT_Extension'.
*--Mode (like All Screen - A)
PARAMETERS P_MODE LIKE CTU_PARAMS-DISMODE DEFAULT 'N'.
SELECTION-SCREEN: END OF BLOCK B3.
*- A T S E L E C T I O N S C R E E N
AT SELECTION-SCREEN.
IF ( P_IFILE = ' ' ) AND ( S_MATNR[] IS INITIAL ).
MESSAGE E000(ZI) WITH 'Please Enter the Material or Input file'.
ENDIF.
*--download the data from pc file
IF P_IFILE NE ' '.
PERFORM VALIDATE_IN_FILE.
PERFORM GET_DATA_FRM_FILE.
ENDIF.
Validate selection screen entries
PERFORM VALIDATE_SEL_SCREEN_ENTRIES.
*- A T S E L E C T I O N S C R E E N --- Value Request
*--F4 help for input flie
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_IFILE.
PERFORM VALUE_REQUEST_FOR_PC_FILE USING P_IFILE.
*--F4 help for pc file
*AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_PCFILE.
PERFORM VALUE_REQUEST_FOR_PC_FILE USING P_PCFILE.
*--F4 help for Unix file
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_OFILE.
PERFORM VALUE_REQ_FOR_UNIX_FILE USING P_OFILE.
T O P O F P A G E
TOP-OF-PAGE.
PERFORM TOP_OF_PAGE.
S E L E C T - O P T I O N S
START-OF-SELECTION.
*--Fecth the data from the Data Base tables
PERFORM GET_DATA.
*--Process the above data to create the final internal table
PERFORM PROCESS_DATA.
*--Extend the data to plant
PERFORM EXTEND_DATA_2_PLANT.
end of selection
END-OF-SELECTION.
PERFORM MAT_CONV_FOR_ALL_INT_TABLES.
*--Success
DESCRIBE TABLE IT_SREP LINES GV_SCNT.
*--Error
DESCRIBE TABLE IT_EREP LINES GV_ERCNT.
*--Already existing
DESCRIBE TABLE IT_AVL LINES GV_AVL.
*--Input
DESCRIBE TABLE IT_MAT LINES GV_INREC.
*--Valid
DESCRIBE TABLE IT_FINAL1 LINES GV_VALIDREC.
*--Duplicate
DESCRIBE TABLE IT_DUPREC LINES GV_DUPREC.
*--Marked for deletion
DESCRIBE TABLE IT_DELREC LINES GV_MAR_DEL.
*--Invalid
DESCRIBE TABLE IT_INVALID LINES GV_INVALID_REC.
GV_TCNT =
GV_ERCNT + GV_SCNT + GV_AVL + GV_INVALID_REC + GV_DUPREC +
GV_MAR_DEL + GV_VALIDREC + GV_INREC.
IF GV_TCNT NE 0.
*--create output PC files for each internal table
PERFORM PC_FILES_CREATION.
*--Create Unix file all internal tables
PERFORM OUT_UNIX_FILE. "create unix file for output.
*--Create the report
PERFORM REPORT_DIS.
*--Clear the contents
CLEAR: IT_SREP,
IT_EREP,
IT_AVL,
IT_MAT,
IT_FINAL1,
IT_DUPREC,
IT_DELREC,
IT_INVALID.
REFRESH:
IT_SREP,
IT_EREP,
IT_AVL,
IT_MAT,
IT_FINAL1,
IT_DUPREC,
IT_DELREC,
IT_INVALID.
ELSE.
FORMAT COLOR 6 INTENSIFIED ON.
WRITE:/ 'No Data found for the Selection Criteria'(007).
FORMAT RESET.
ENDIF.
*& Form get_data
*--Fetch the data from required data base tables
FORM GET_DATA .
DATA: LV_TABIX LIKE SY-TABIX.
**--Material type is in BAPI structures filling.
IF P_IFILE NE ' '.
PERFORM CONVERT_MAT_FRM_FILE.
ENDIF.
*--Ranges for the plants
RANGES:R_WERKS FOR MARC-WERKS.
R_WERKS-SIGN = 'I'.
R_WERKS-OPTION = 'EQ'.
R_WERKS-LOW = P_FWERKS.
APPEND R_WERKS.
R_WERKS-SIGN = 'I'.
R_WERKS-OPTION = 'EQ'.
R_WERKS-LOW = P_TWERKS.
APPEND R_WERKS.
CLEAR R_WERKS.
*--Fetch the data for the given selection from the DB table MARA & MARC
(General Material Data)
IF P_IFILE NE ' '.
SELECT R~MATNR "R = MARA
R~VPSTA
R~MTART
R~MATKL
R~MBRSH
R~MEINS
R~GEWEI
R~RAUBE
R~SPART
R~PRDHA
R~MAGRV
C~MATNR "C = MARC
C~WERKS
C~PSTAT
C~PLIFZ
C~SSQSS
C~LADGR
C~SERNP
C~PERIV
C~STAWN
C~HERKL
C~EKGRP
C~DISMM
C~DISPO
C~DISLS
C~LGPRO
C~FHORI
C~DZEIT
C~BWSCL
C~AWSLS
C~LGFSB
INTO CORRESPONDING FIELDS OF TABLE IT_TOTAL
FROM ( MARA AS R
INNER JOIN MARC AS C ON CMATNR = RMATNR )
WHERE R~MATNR IN R_MATNR AND
R~MTART IN S_MTART AND
C~WERKS IN R_WERKS .
LOOP AT IT_TOTAL.
LV_TABIX = SY-TABIX.
READ TABLE IT_RMAT WITH KEY MATNR = IT_TOTAL-MATNR.
IF SY-SUBRC = 0.
IT_TOTAL-TLGORT = IT_RMAT-TLGORT.
IT_TOTAL-SLGORT = IT_RMAT-SLGORT.
MODIFY IT_TOTAL INDEX LV_TABIX.
ENDIF.
ENDLOOP.
ELSE.
SELECT R~MATNR "R = MARA
R~VPSTA
R~MTART
R~MATKL
R~MBRSH
R~MEINS
R~GEWEI
R~RAUBE
R~SPART
R~PRDHA
R~MAGRV
C~MATNR "C = MARC
C~WERKS
C~PSTAT
C~PLIFZ
C~SSQSS
C~LADGR
C~SERNP
C~PERIV
C~STAWN
C~HERKL
C~EKGRP
C~DISMM
C~DISPO
C~DISLS
C~LGPRO
C~FHORI
C~DZEIT
C~BWSCL
C~AWSLS
C~LGFSB
INTO CORRESPONDING FIELDS OF TABLE IT_TOTAL
FROM ( MARA AS R
INNER JOIN MARC AS C ON CMATNR = RMATNR )
WHERE R~MATNR IN S_MATNR AND
R~MTART IN S_MTART AND
C~WERKS IN R_WERKS .
ENDIF. " if P_IFILE ne ' '.
IF NOT IT_TOTAL[] IS INITIAL.
SORT IT_TOTAL BY WERKS.
IT_FINAL[] = IT_TOTAL[].
IT_TPLANT[] = IT_TOTAL[].
SORT IT_FINAL BY WERKS.
SORT IT_TPLANT BY WERKS.
*Logic 1
*--Delete all entries having the plant value equal to 'to plant' value
*--So, IT_FINAL have only from plant data. But in which some data
*--already in 'to plant'
DELETE IT_FINAL WHERE WERKS = P_TWERKS.
*Logic 2
*--Delete all entries having the plant value equal to 'from plant' value
DELETE IT_TPLANT WHERE WERKS = P_FWERKS.
IF NOT IT_FINAL[] IS INITIAL.
SORT IT_FINAL BY MATNR WERKS.
SORT IT_TPLANT BY MATNR WERKS.
*Logic 3
*--Delete all the material from the 'IT_FINAL', which is already
extended to 'to plnat'.
In Logic 1 and Logic 2, just deleted the materials having the plant
value equal same. Here 'IT_FINAL' contains materials of 'from plant'
only,because 'to plant' materials have been deleted in the 'Logic1'.
But it contains the materials already extended to 'to plant', So we
Need to delete those. And it is done in the below Logic. From now
'IT_FINAL table contains materials that are to be extended.
(Already extended materials have been deleted)
LOOP AT IT_TPLANT.
READ TABLE IT_FINAL
WITH KEY MATNR = IT_TPLANT-MATNR
WERKS = P_FWERKS
BINARY SEARCH.
LV_TABIX = SY-TABIX.
IF SY-SUBRC EQ 0.
*--continue the process. This materil to be extend for other views
IF IT_FINAL-PSTAT = IT_TPLANT-PSTAT.
IT_AVL-MATNR = IT_TPLANT-MATNR.
IT_AVL-WERKS = P_TWERKS.
IT_AVL-MTART = IT_TPLANT-MTART.
IT_AVL-MSG = 'Material already in plant'.
IT_AVL-MSGTYP = 'E'.
APPEND IT_AVL.
CLEAR IT_AVL.
DELETE IT_FINAL INDEX LV_TABIX.
CLEAR IT_FINAL.
*--If the material already exist in the target plant, check for the
*--warehouse view. If only warehoues view does not exist and checked
warehouse not required, then consider that the record is exist
in target plant
ELSEIF IT_FINAL-PSTAT CA 'S' AND IT_TPLANT-PSTAT NA 'S'.
If warehouse view does not require, then no need to copy again
IF P_WH = 'X'.
IT_AVL-MATNR = IT_TPLANT-MATNR.
IT_AVL-WERKS = P_TWERKS.
IT_AVL-MTART = IT_TPLANT-MTART.
IT_AVL-MSG = 'Material already in plant'.
IT_AVL-MSGTYP = 'E'.
APPEND IT_AVL.
CLEAR IT_AVL.
DELETE IT_FINAL INDEX LV_TABIX.
CLEAR IT_FINAL.
ENDIF.
ENDIF.
ENDIF.
ENDLOOP.
ENDIF.
*--Logic 4 ( Get the data from MARD, MVKE, MBEW and MAKT)
IF NOT IT_FINAL[] IS INITIAL.
*--Get the data from DB tabel MVKE (Sales Data for Material)
for all the materials in 'IT_FINAL'.
SELECT
MATNR
VKORG
VTWEG
VMSTA
VMSTD
DWERK
KONDM
PRODH
MTPOS
FROM MVKE
INTO TABLE INT_MVKE
FOR ALL ENTRIES IN IT_FINAL
WHERE MATNR = IT_FINAL-MATNR.
*--Get the data from DB table MBEW (Material Valuation)
for all the materials in 'IT_FINAL'.
SELECT
MATNR
VPRSV
STPRS
BKLAS
ZPLD1
ZPLD2
FROM MBEW
INTO TABLE INT_MBEW
FOR ALL ENTRIES IN IT_FINAL
WHERE MATNR = IT_FINAL-MATNR AND
BWKEY = IT_FINAL-WERKS.
Start of change by Hema on 09/21/06
Since basic view is not required to copy, no need description also
*--Get the data from DB table MAKT (Material Descriptions)
for all the materials in 'IT_FINAL'.
SELECT MATNR
MAKTX
FROM MAKT
INTO CORRESPONDING FIELDS OF TABLE INT_MAT_DES
FOR ALL ENTRIES IN IT_FINAL
WHERE MATNR = IT_FINAL-MATNR AND
SPRAS = SY-LANGU.
End of change by Hema on 09/21/06
*--Get the warehouse data.
SELECT MATNR
LTKZA
LTKZE
LGBKZ
INTO CORRESPONDING FIELDS OF TABLE INT_WAREH
FROM MLGN
FOR ALL ENTRIES IN IT_FINAL
WHERE MATNR = IT_FINAL-MATNR.
SELECT SINGLE * FROM T130M
INTO WA_T130M
WHERE TCODE = GV_TRANS_CODE.
*--Sort the internal table by material
SORT INT_MARD BY MATNR WERKS.
SORT INT_MVKE BY MATNR.
SORT INT_MBEW BY MATNR.
SORT INT_MAT_DES BY MATNR.
SORT INT_WAREH BY MATNR.
ENDIF.
ENDFORM. " get_data
*& Form process_data
*--Fill the final internal with data from all the internal tables
FORM PROCESS_DATA .
DATA: LV_LINES TYPE I.
*--Logic 5: Fill the 'IT_FINAL' table from the 'int_mard', 'int_mvke'
'int_mat_des' and int_mbew' as follows.
LOOP AT IT_FINAL.
*--Copy Target storage locaction to Prod.Stor.Loc and stor.Loc.for EP
IT_FINAL-LGPRO = IT_FINAL-TLGORT.
IT_FINAL-LGFSB = IT_FINAL-TLGORT.
READ TABLE INT_MVKE WITH KEY MATNR = IT_FINAL-MATNR
BINARY SEARCH.
IF SY-SUBRC EQ 0.
IT_FINAL-VKORG = INT_MVKE-VKORG.
IT_FINAL-VTWEG = INT_MVKE-VTWEG.
IT_FINAL-VMSTA = INT_MVKE-VMSTA.
IT_FINAL-VMSTD = INT_MVKE-VMSTD.
IT_FINAL-DWERK = INT_MVKE-DWERK.
IT_FINAL-KONDM = INT_MVKE-KONDM.
IT_FINAL-PRODH = INT_MVKE-PRODH.
IT_FINAL-MTPOS = INT_MVKE-MTPOS.
ENDIF.
READ TABLE INT_MAT_DES WITH KEY MATNR = IT_FINAL-MATNR
BINARY SEARCH.
IF SY-SUBRC EQ 0.
IT_FINAL-MAKTX = INT_MAT_DES-MAKTX.
ENDIF.
READ TABLE INT_MBEW WITH KEY MATNR = IT_FINAL-MATNR
BINARY SEARCH.
IF SY-SUBRC EQ 0.
IT_FINAL-VPRSV = INT_MBEW-VPRSV.
IT_FINAL-STPRS = INT_MBEW-STPRS.
IT_FINAL-BKLAS = INT_MBEW-BKLAS.
IT_FINAL-ZPLD1 = INT_MBEW-ZPLD1.
IT_FINAL-ZPLD2 = INT_MBEW-ZPLD2.
ENDIF.
READ TABLE INT_WAREH WITH KEY MATNR = IT_FINAL-MATNR
BINARY SEARCH.
IF SY-SUBRC EQ 0.
IT_FINAL-LGNUM = INT_WAREH-LGNUM.
IT_FINAL-LTKZA = INT_WAREH-LTKZA.
IT_FINAL-LTKZE = INT_WAREH-LTKZE.
IT_FINAL-LGBKZ = INT_WAREH-LGBKZ.
ENDIF.
MODIFY IT_FINAL
TRANSPORTING
VKORG
VTWEG
VMSTA
VMSTD
LGPRO
LGFSB
DWERK
KONDM
PRODH
MTPOS
MAKTX
VPRSV
STPRS
BKLAS
ZPLD1
ZPLD2
LGNUM
LTKZA
LTKZE
LGBKZ.
ENDLOOP.
ENDFORM. " process_data
*& Form value_request_for_pc_file
*--F4 help for the file names.
FORM VALUE_REQUEST_FOR_PC_FILE USING P_FILE.
CALL FUNCTION 'F4_FILENAME'
EXPORTING
PROGRAM_NAME = SY-CPROG
DYNPRO_NUMBER = SY-DYNNR
FIELD_NAME = ' '
IMPORTING
FILE_NAME = P_FILE.
ENDFORM. " value_request_for_pc_file
*& Form extend_data_2_plant
*--Use the final internal table to extend the material from one plant 2
*--another using the following logic which involved in 'four performs'
FORM EXTEND_DATA_2_PLANT .
DATA: BEGIN OF INT_VIEWS OCCURS 0.
INCLUDE STRUCTURE MBILDTAB.
DATA END OF INT_VIEWS.
IF NOT IT_FINAL[] IS INITIAL.
LOOP AT IT_FINAL.
GV_MTART = IT_FINAL-MTART.
*--Get the 32 char Lenth Material number
PERFORM MATERIAL_CON USING IT_FINAL-MATNR.
CALL FUNCTION 'CONVERSION_EXIT_MATN2_OUTPUT'
EXPORTING
INPUT = IT_FINAL-MATNR
IMPORTING
OUTPUT = GV_MATNR.
*--Get the views for the current material
PERFORM GET_THE_VIEWS_4_MAT.
*--Fill bdctable for all view available in 'copy from material'
PERFORM CREATE_DATA_FOR_VIEWS.
*--Use the above structures and call the 'MM01' to extend the material
PERFORM EXTEND_MAT_2_PLANT.
CLEAR: GV_FIRST_VIEW, GV_NXT_VIEW, GV_MATNR.
ENDLOOP.
*--close the session if open
IF GV_SES_OPEN EQ 'X'.
PERFORM CLOSE_GRP.
SKIP 1.
WRITE:/5 'Session Created', 40 P_GROUP COLOR 4.
ENDIF.
ELSE.
SKIP 2.
WRITE:/5 TEXT-010 COLOR 4.
'No Data exists for the given selection'.
ENDIF.
IF NOT IT_EREP[] IS INITIAL.
LOOP AT IT_EREP.
CALL FUNCTION 'CONVERSION_EXIT_MATN2_OUTPUT'
EXPORTING
INPUT = IT_EREP-MATNR
IMPORTING
OUTPUT = IT_EREP-MATNR.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ELSE.
MODIFY IT_EREP.
ENDIF.
ENDLOOP.
ENDIF.
ENDFORM. " extend_data_2_plant
*& Form get_the_views_4_mat
*--Get the views for current material
FORM GET_THE_VIEWS_4_MAT .
DATA: LV_BILDSEQUENZ TYPE T133A-BILDS,
LV_PSTAT LIKE T134-PSTAT.
CLEAR: T130M,
LV_BILDSEQUENZ,
IT_XBILDTAB.
REFRESH IT_XBILDTAB.
*--Get the Build sequece for particular Material type
CALL FUNCTION 'BILDSEQUENZ_IDENTIFY'
EXPORTING
BRANCHE = IT_FINAL-MBRSH
MATERIALART = IT_FINAL-MTART
TCODE_REF = WA_T130M-TRREF
KZRFB = ' '
IMPORTING
BILDSEQUENZ = LV_BILDSEQUENZ
KZ_BILDS_CHANGED =
EXCEPTIONS
WRONG_CALL = 1
NOT_FOUND = 2
OTHERS = 3
*--Get the actual number views for the current material will stored
*--in the internal table 'IT_XBILDTAB'.
IF SY-SUBRC = 0.
CALL FUNCTION 'SELECTION_VIEWS_FIND'
EXPORTING
BILDSEQUENZ = LV_BILDSEQUENZ
PFLEGESTATUS = IT_FINAL-VPSTA
PFLEGESTATUS = IT_FINAL-PSTAT
TABLES
BILDTAB = IT_XBILDTAB
EXCEPTIONS
CALL_WRONG = 1
EMPTY_SELECTION = 2
OTHERS = 3.
ENDIF.
*--Build actual table for view sequence
SELECT SINGLE PSTAT FROM T134
INTO LV_PSTAT
WHERE MTART = GV_MTART.
CALL FUNCTION 'SELECTION_VIEWS_FIND'
EXPORTING
BILDSEQUENZ = '01'
PFLEGESTATUS = LV_PSTAT
TABLES
BILDTAB = IT_T134
EXCEPTIONS
CALL_WRONG = 1
EMPTY_SELECTION = 2
OTHERS = 3.
IF NOT IT_XBILDTAB[] IS INITIAL.
*--Delete the Basic(SP01),
*--Classification(SP02)
*--Sales: Sales Organization Data(SP03)
*--Sales: General/Plant Data(SP04)
*--Sales Text(SP05)
*--Production Resources and Tools(SP12) which are not required
LOOP AT IT_XBILDTAB.
CASE IT_XBILDTAB-GUIFU.
WHEN 'SP01'.
DELETE IT_XBILDTAB." WITH KEY GUIFU = 'SP01'.
WHEN 'SP02'.
DELETE IT_XBILDTAB." WITH KEY GUIFU = 'SP02'.
WHEN 'SP03'.
DELETE IT_XBILDTAB." WITH KEY GUIFU = 'SP03'.
WHEN 'SP04'.
DELETE IT_XBILDTAB." WITH KEY GUIFU = 'SP04'.
WHEN 'SP05'.
DELETE IT_XBILDTAB." WITH KEY GUIFU = 'SP05'.
WHEN 'SP12'.
DELETE IT_XBILDTAB." WITH KEY GUIFU = 'SP12'.
WHEN 'SP14'.
*--If 'do not copy warehouse' is ticked, delete the view from table.
*--problem is, if that view is last view then Save problem will
*--come in the BDC.
IF P_WH EQ 'X'.
DELETE IT_XBILDTAB.
ENDIF.
ENDCASE.
ENDLOOP.
ENDIF.
*--Get the first view of the material to select that view from Views
*-- List of the MM01
LOOP AT IT_XBILDTAB.
READ TABLE IT_T134 WITH KEY GUIFU = IT_XBILDTAB-GUIFU.
IF SY-SUBRC EQ 0.
GV_FIRST_VIEW = SY-TABIX.
GV_NXT_VIEW = IT_XBILDTAB-GUIFU.
EXIT.
ENDIF.
ENDLOOP.
ENDFORM. " get_the_views_4_mat
*& Form CREATE_DATA_FOR_VIEWS
text
--> p1 text
<-- p2 text
FORM CREATE_DATA_FOR_VIEWS .
DATA: LV_LAST_VIEW_NO TYPE I.
DESCRIBE TABLE IT_XBILDTAB LINES LV_LAST_VIEW_NO.
LOOP AT IT_XBILDTAB.
IF LV_LAST_VIEW_NO EQ SY-TABIX.
MOVE IT_XBILDTAB-GUIFU TO GV_LAST.
ENDIF.
ENDLOOP.
*--Hit the Basic view in the 'View selection Pop up', i.e very beginning
*--in Tcode: MM01. So that, only views which already in (Copy from)
*--Material can extend to the Target Plant. Int.,table IT_XBILDTAB
*--contains these views. Here flexibilty is that, not all views are
*--extended, whether the 'copy from material' contains or not.
*--i.e Dynamic selection of views.
*--So in order to ease the Dynamic selection (of views), first
*--Hit the Basic view in the 'View selection Pop up'.
PERFORM FILL_BASIC_VIEW.
PERFORM FILL_ORG_DATA USING GV_VIEW_CODE.
LOOP AT IT_XBILDTAB.
MOVE IT_XBILDTAB-GUIFU TO GV_VIEW_CODE.
CASE IT_XBILDTAB-GUIFU.
--Purchasing view
WHEN 'SP06'.
PERFORM FILL_PURCH_VIEW USING GV_VIEW_CODE.
--Purchase Order Text View
WHEN 'SP07'.
PERFORM FILL_PURCH_ORD_TEXT USING GV_VIEW_CODE.
--MRP1 View
WHEN 'SP08'.
PERFORM FILL_MRP1_VIEW USING GV_VIEW_CODE.
--MRP2 View
WHEN 'SP09'.
PERFORM FILL_MRP2_VIEW USING GV_VIEW_CODE.
--Forecast View
WHEN 'SP10'.
PERFORM FILL_FORECAST_VIEW USING GV_VIEW_CODE.
WHEN 'SP11'.
IF GV_FLG NE 'Y'.
PERFORM FILL_WORKSCHED_VIEW USING GV_VIEW_CODE.
ENDIF.
--General Plant Data / Storage View
WHEN 'SP13'.
PERFORM FILL_PLANT_STRGE_VIEW USING GV_VIEW_CODE.
--Warehouse Management View
WHEN 'SP14'.
IF P_WH <> 'X'.
-- If the 'do not warehouse' check box unchecked on sele screen
PERFORM FILL_WAREHOUSE_VIEW USING GV_VIEW_CODE.
ENDIF.
--Quality Management View
WHEN 'SP15'.
PERFORM FILL_QUALITY_VIEW USING GV_VIEW_CODE.
-- Accounting View
WHEN 'SP16'.
PERFORM FILL_ACCOUNTING_VIEW USING GV_VIEW_CODE.
--Costing View
WHEN 'SP17'.
PERFORM FILL_COSTING_VIEW USING GV_VIEW_CODE.
--Plant/Storage Location Stock View
WHEN 'SP18'.
PERFORM FILL_PLANT_ST_LOC_STK_VIEW USING GV_VIEW_CODE.
ENDCASE.
CLEAR GV_OKCODE.
ENDLOOP.
ENDFORM. " CREATE_DATA_FOR_VIEWS
*& Form fill_basic_view
text
--> p1 text
<-- p2 text
FORM FILL_BASIC_VIEW .
DATA FIELD_STR(40).
PERFORM BDC_DYNPRO USING 'SAPLMGMM' '0060'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'RMMG1-MATNR'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'RMMG1-MATNR'
GV_MATNR."nt_final-matnr.
PERFORM BDC_FIELD USING 'RMMG1_REF-MATNR'
GV_MATNR."IT_FINAL-matnr.
PERFORM BDC_DYNPRO USING 'SAPLMGMM' '0070'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'MSICHTAUSW-DYTXT(01)'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=ENTR'.
CONCATENATE 'MSICHTAUSW-KZSEL(' GV_FIRST_VIEW ')' INTO FIELD_STR.
PERFORM BDC_FIELD USING FIELD_STR 'X'.
ENDFORM. " fill_basic_view
*& Form fill_purch_view
Purchasing view
FORM FILL_ORG_DATA USING GV_VIEW_CODE.
PERFORM BDC_DYNPRO USING 'SAPLMGMM' '0080'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'RMMG1_REF-WERKS'.
PERFORM BDC_FIELD USING 'RMMG1-WERKS'
P_TWERKS.
PERFORM BDC_FIELD USING 'RMMG1_REF-WERKS'
P_FWERKS.
IF GV_NXT_VIEW EQ 'SP08'.
PERFORM BDC_FIELD USING 'RMMG1-LGORT'
IT_FINAL-TLGORT.
PERFORM BDC_FIELD USING 'RMMG1_REF-LGORT'
IT_FINAL-SLGORT.
ENDIF.
ENDFORM. " fill_org_data
*& Form fill_purch_ord_text
Purchase order text
FORM FILL_PURCH_ORD_TEXT USING GV_VIEW_CODE.
CONCATENATE '=' GV_VIEW_CODE INTO GV_OKCODE.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=SP07'.
PERFORM BDC_DYNPRO USING 'SAPLMGMM' '3050'.
IF GV_VIEW_CODE EQ GV_LAST.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=BU'.
ENDIF.
ENDFORM. " fill_purch_ord_text
*& Form fill_MRP1_view
MRP1
FORM FILL_MRP1_VIEW USING GV_VIEW_CODE.
CONCATENATE '=' GV_VIEW_CODE INTO GV_OKCODE.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=SP08'.
IF GV_NXT_VIEW EQ 'SP06'.
PERFORM BDC_DYNPRO USING 'SAPLMGMM' '0081'.
PERFORM BDC_FIELD USING 'RMMG1-LGORT'
IT_FINAL-TLGORT.
PERFORM BDC_FIELD USING 'RMMG1_REF-LGORT'
IT_FINAL-SLGORT.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=ENTR'.
CLEAR GV_NXT_VIEW.
ENDIF.
PERFORM BDC_DYNPRO USING 'SAPLMGMM' '3006'.
PERFORM BDC_FIELD USING 'MARC-LGPRO'
IT_FINAL-LGPRO.
PERFORM BDC_FIELD USING 'MARC-LGFSB'
IT_FINAL-LGFSB.
IF GV_VIEW_COD -
Mass changes of Material Master field with different values
Hi,
How to change a field in Material Master for more than thousand materials. I think MM17 can only be used for mass changes of materials with same values. I need to upload different values for different materials. Is there any other way to do this.
Thanks,
K R Vishnu KumarHi Kumar.
I think you have to use LSMW for mass updation for Material Master fields with different values.
Regards,
Rahul.
Maybe you are looking for
-
I am using an external WD hard drive for backing up my laptop. I have to do it manually, so I can't set Time Machine to just do it for me. How do I know when it is done backing up? How long should this take?
-
Dbms_lob.writeappend in Oracle 11g
Hi, we have this line of code DBMS_LOB.writeappend(v_clob,doc_rec.seg_length,doc_rec.value) in our procedure. when we run this code in oracle10g ,its not taking thath much time.But when we run in oracle 11g,its taking time. I there any noncompatibili
-
I was in the midst of compiling my code and running it, making changes and saving them under a new name and then compiling and running the new java file(to preserve the origingal file). I wasn't having any issues compiling or running and then all of
-
How to disable frequently visited in Safari 8?
This sounds a little weird, but is there a way to seperately turn off the "Frequently Visited" section of the bookmarks in Safari 8 (where you click the URL bar). I still want my bookmarks to show up, but have that god-awful "Frequently Visited" to b
-
Motion 5 or After Effects?
I've been using Motion 4, and now 5, for over a year, and have had almost nothing but problems. Besides the constant crashes, the fact that I have to routinely trash my preferences and then reset them nearly every time I close and open the program,