Bom Explosion
Hi all ,
i am trying to get the sub components of a single finished material using FM CS_BOM_EXPLOSION.
But i am getting error , pls let know where the error is ....
Here is the code .......
*& Report ZBOM_EXPLOSION
REPORT ZBOM_EXPLOSION.
*************STRUCTURE OF CSTMAT(IMPORTING PARAMETER)**********
TYPES : S_CSTMAT TYPE STANDARD TABLE OF CSTMAT.
*DATA : L_CSTMAT TYPE S_CSTMAT.
DATA : L_CSTMAT TYPE S_CSTMAT.
***************STRUCTURE OF TABLES pARAMETER )****
TYPES : S_CSXDOC TYPE STANDARD TABLE OF CSXDOC, " STBD
S_CSXEQUI TYPE STANDARD TABLE OF CSXEQUI, " STBE
S_CSXKLA TYPE STANDARD TABLE OF CSXKLA, "STBK
S_CSXMAT TYPE STANDARD TABLE OF CSXMAT , " STBM
S_CSXGEN TYPE STANDARD TABLE OF CSXGEN, "STBP
S_CSXTPL TYPE STANDARD TABLE OF CSXTPL."STBT
DATA : L_CSXDOC TYPE S_CSXDOC, " Addition to the item collective table (document data)
L_CSXEQUI TYPE S_CSXEQUI, "Addition to the item collective table (equi data)
L_CSXKLA TYPE S_CSXKLA, " Supplement to collective item table (class data)
L_CSXMAT TYPE S_CSXMAT, " Addition to the item collective table (material data)
L_CSXGEN TYPE S_CSXGEN, "Item collective table
L_CSXTPL TYPE S_CSXTPL. " Supplement to collective item table (functional location data)
DATA : WA_CLASS TYPE S_CSXKLA,
WA_MAT TYPE CSTMAT .
********EXPORTING PARAMETERS ************************
PARAMETERS : P_CAPID TYPE TC04-CAPID , " APLLICATION
P_MEHRS TYPE CSDATA-XFELD , " MATERIAL EXPLOSION
P_MTNRV TYPE MARA-MATNR, " MATERIAL
STLAL TYPE STKO-STLAL, " ALTERNATIVE BOM
P_WERKS TYPE MARC-WERKS. " PLANT
P_VERID TYPE MKAL-VERID. " Production version (global)_
*SELECT-OPTIONS : L_CAPID FOR CAPID,
L_MEHRS FOR MEHRS,
L_MTNRV FOR
*******FUNCTION MODULE EXPORTING PARAMETERS**********
DATA : L_MATNR TYPE MATNR , " MATERIAL NUMBER
L_VERID TYPE VERID , " PRODUCTION VERSION
L_WERKS TYPE WERKS_D, "PALNT
L_STLNR TYPE STNUM . "BILL OF MATERIAL
INITIALIZATION .
AT SELECTION-SCREEN .
START-OF-SELECTION .
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = P_MTNRV
IMPORTING
OUTPUT = P_MTNRV.
CALL FUNCTION 'CS_BOM_EXPLOSION'
EXPORTING
CAPID = 'PP01'
MEHRS = 'X'
MTNRV = P_MTNRV
STLAL = ' '
WERKS = P_WERKS
MDNOT = ' '
PANOT = ' '
QVERW = ' '
VBELN = ' '
VBPOS = 0
VERID = ' '
VRSVO = 'X'
IMPORTING
TOPEQUI =
TOPMAT = L_CSTMAT
TOPTPL =
DSTST =
TABLES
stbd = L_CSXDOC
stbe = L_CSXEQUI
stbk = L_CSXKLA
stbm = L_CSXMAT
stbp = L_CSXGEN
stbt = L_CSXTPL.
EXCEPTIONS
ALT_NOT_FOUND = 1
CALL_INVALID = 2
MISSING_AUTHORIZATION = 3
NO_BOM_FOUND = 4
NO_PLANT_DATA = 5
NO_SUITABLE_BOM_FOUND = 6
OBJECT_NOT_FOUND = 7
CONVERSION_ERROR = 8
OTHERS = 9
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
LOOP AT L_CSTMAT INTO WA_MAT.
WRITE WA_MAT-MATNR.
ENDLOOP.
Hi ,
I am pasting my modified prog . Here it is executing but printing CALL_INVALID (exception 2 ) .
pls check out the program and let me know y it is printing that exception.
*& Report ZHARKAR_BOM_EXPLOSION
REPORT ZHARKAR_BOM_EXPLOSION.
*************STRUCTURE OF CSTMAT(IMPORTING PARAMETER)**********
*TYPES : S_CSTMAT TYPE STANDARD TABLE OF CSTMAT.
**DATA : L_CSTMAT TYPE S_CSTMAT.
*DATA : L_CSTMAT TYPE S_CSTMAT.
DATA : IT_TOPMAT TYPE CSTMAT OCCURS 0 WITH HEADER LINE.
***************STRUCTURE OF TABLES pARAMETER )****
*TYPES : S_CSXDOC TYPE STANDARD TABLE OF CSXDOC, " STBD
S_CSXEQUI TYPE STANDARD TABLE OF CSXEQUI, " STBE
S_CSXKLA TYPE STANDARD TABLE OF CSXKLA, "STBK
S_CSXMAT TYPE STANDARD TABLE OF CSXMAT , " STBM
S_CSXGEN TYPE STANDARD TABLE OF CSXGEN, "STBP
S_CSXTPL TYPE STANDARD TABLE OF CSXTPL."STBT
*DATA : L_CSXDOC TYPE S_CSXDOC OCCURS 0 WITH HEADER LINE , " Addition to the item collective table (document data)
L_CSXEQUI TYPE S_CSXEQUI, "Addition to the item collective table (equi data)
L_CSXKLA TYPE S_CSXKLA, " Supplement to collective item table (class data)
L_CSXMAT TYPE S_CSXMAT, " Addition to the item collective table (material data)
L_CSXGEN TYPE S_CSXGEN, "Item collective table
L_CSXTPL TYPE S_CSXTPL. " Supplement to collective item table (functional location data)
*DATA : WA_CLASS TYPE S_CSXKLA,
WA_MAT TYPE CSTMAT .
DATA : IT_STBD TYPE CSXDOC OCCURS 0 WITH HEADER LINE,
IT_STBE TYPE CSXEQUI OCCURS 0 WITH HEADER LINE,
IT_STBK TYPE CSXKLA OCCURS 0 WITH HEADER LINE,
IT_STBM TYPE CSXMAT OCCURS 0 WITH HEADER LINE,
IT_STBP TYPE CSXGEN OCCURS 0 WITH HEADER LINE,
IT_STBT TYPE CSXTPL OCCURS 0 WITH HEADER LINE.
********EXPORTING PARAMETERS ************************
PARAMETERS : P_CAPID TYPE TC04-CAPID , " APLLICATION
P_MEHRS TYPE CSDATA-XFELD , " MATERIAL EXPLOSION
P_MTNRV TYPE MARA-MATNR, " MATERIAL
P_STLAL TYPE STKO-STLAL, " ALTERNATIVE BOM
P_WERKS TYPE MARC-WERKS, " PLANT
P_VERID TYPE MKAL-VERID. " Production version (global)_
*******FUNCTION MODULE EXPORTING PARAMETERS**********
*DATA : L_MATNR TYPE MATNR , " MATERIAL NUMBER
L_VERID TYPE VERID , " PRODUCTION VERSION
L_WERKS TYPE WERKS_D, "PALNT
L_STLNR TYPE STNUM . "BILL OF MATERIAL
INITIALIZATION .
AT SELECTION-SCREEN .
START-OF-SELECTION .
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = P_MTNRV
IMPORTING
OUTPUT = P_MTNRV.
CALL FUNCTION 'CS_BOM_EXPLOSION'
EXPORTING
CAPID = 'PP01'
MEHRS = 'X'
MTNRV = P_MTNRV
STLAL = P_STLAL
WERKS = P_WERKS
MDNOT = ' '
PANOT = ' '
QVERW = ' '
VBELN = ' '
VBPOS = 0
VERID = P_VERID
VRSVO = 'X'
IMPORTING
TOPEQUI =
TOPMAT = IT_TOPMAT
TOPTPL =
DSTST =
TABLES
stbd = IT_STBD
stbe = IT_STBE
stbk = IT_STBK
stbm = IT_STBM
stbp = IT_STBP
stbt = IT_STBT
EXCEPTIONS
ALT_NOT_FOUND = 1
CALL_INVALID = 2
MISSING_AUTHORIZATION = 3
NO_BOM_FOUND = 4
NO_PLANT_DATA = 5
NO_SUITABLE_BOM_FOUND = 6
OBJECT_NOT_FOUND = 7
CONVERSION_ERROR = 8
OTHERS = 9 .
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CASE SY-SUBRC.
WHEN '1'.
WRITE 'ALT_NOT_FOUND'.
WHEN '2'.
WRITE 'CALL_INVALID'.
WHEN '3'.
WRITE 'MISSING_AUTHORIZATION'.
WHEN '4'.
WRITE ' NO_BOM_FOUND '.
WHEN '5'.
WRITE 'NO_PLANT_DATA '.
WHEN '6'.
WRITE 'NO_SUITABLE_BOM_FOUND'.
WHEN '7'.
WRITE ' OBJECT_NOT_FOUND'.
WHEN '8'.
WRITE 'CONVERSION_ERROR'.
WHEN '9'.
WRITE 'OTHERS '.
ENDCASE.
LOOP AT IT_TOPMAT.
WRITE IT_TOPMAT-MATNR.
ENDLOOP.
Similar Messages
-
BOM Explosion for Multiple Process Orders
Hi,
I hope someone can assist me with the following: Is there a report I can run or transaction I can do to have BOM explosion for multiple Process Orders? I would like to input process orders for a week and see the BOM details per PO.
ThanksDear Sukendar,
1.For this requirement you have to go for a Z report and you can give the Functional Spec's to prepare
this report to your ABAP consultant.Prepare the input format,logic of the program and the output format.
In the logic part you can make use of this Functional Modules's CSAP_MAT_BOM_READ or
CSEP_MAT_BOM_READ or CS_BOM_EXPLOSION or CS_BOM_EXPL_MAT_V2 .
2.Using CEWB helps you to identify all the material that's having the BOM,but here the report does not
shows you the level by level by BOM for a FERT.
Check and revert back.
Regards
Mangalraj.S -
BOM Explosion needed on PO and/or Delivery for Stock Transfer PO Process
Good afternoon,
I have been researching the SDN and web for a solution to my problem to no avail so far.
The business problem I need to solve is the requirement for our STPO process to explode certain BOM's that are transfered from one company/plant to another company/plant in order to record batch/serial # component information by the delivering plant on the delivery and verification of the batch/serial # in the receiving plant during MIGO processing of the delivery. This is needed by our Service Mgmt department in order to track servicable items within the Finished Good (medical devices industry).
It appears on the SDN that a BOM can not be exploded on a non-Subcontracting PO (which would be ideal for us), but barring this problem, we are trying to have the BOM explode in the Delivery created from the STPO via the VL10B transaction.
The STPO generates a Delivery doc with type NLCC and item category NLC. I have maintained the material master for the BOM material to have an Item Category Group of ERLA, and I have modified Item Category Determination in configuration in Logistics Execution for deliveries to include ERLA, usage V, and NLC as default item category. But, the deliveries generated from the STPO still do not explode, like what normally happens if the delilvery of the BOM was created from a standard Order.
The components for the BOM need to be displayed on the Delivery (if not the STPO), so the cleark can record the Batch/Serial #'s for each component. Then when the receiving plant posts the Goods Receipt for the delivery a user exit we have (based on movement type and material document code) builds a Service Mgmt table that is then processed to De-install the BOM and components from the former plant and install the BOM and components at the receiving plant (and then subsequently at the ultimate customer's location when a normal sale is made), generating a new Functional Location.
Has anyone here had to do anything like this before? Would any of you have any ideas on how this BOM explosion might work on the PO or Delivery?
Thanks in advance.
Scott.No responses to this question.
Subject dropped. -
BOM Explosion needed on Delivery for Intercompany Stock Transfer Order
Good afternoon,
I have been researching the SDN and web for a solution to my problem to no avail so far.
The business problem I need to solve is the requirement for our STPO process to explode certain BOM's that are transfered from one company/plant to another company/plant in order to record batch/serial # component information by the delivering plant on the delivery and verification of the batch/serial # in the receiving plant during MIGO processing of the delivery. This is needed by our Service Mgmt department in order to track servicable items within the Finished Good (medical devices industry).
It appears on the SDN that a BOM can not be exploded on a non-Subcontracting PO (which would be ideal for us), but barring this problem, we are trying to have the BOM explode in the Delivery created from the STPO via the VL10B transaction.
The STPO generates a Delivery doc with type NLCC and item category NLC. I have maintained the material master for the BOM material to have an Item Category Group of ERLA, and I have modified Item Category Determination in configuration in Logistics Execution for deliveries to include ERLA, usage V, and NLC as default item category. But, the deliveries generated from the STPO still do not explode, like what normally happens if the delilvery of the BOM was created from a standard Order.
The components for the BOM need to be displayed on the Delivery (if not the STPO), so the cleark can record the Batch/Serial #'s for each component. Then when the receiving plant posts the Goods Receipt for the delivery a user exit we have (based on movement type and material document code) builds a Service Mgmt table that is then processed to De-install the BOM and components from the former plant and install the BOM and components at the receiving plant (and then subsequently at the ultimate customer's location when a normal sale is made), generating a new Functional Location.
Has anyone here had to do anything like this before? Would any of you have any ideas on how this BOM explosion might work on the PO or Delivery?
Thanks in advance.
Scott.No responses to this question.
Subject dropped. -
BOM explosion in subcontracting PR
Hi...
I have one issue of BOM explosion in subcontracting PR.
I have created BOM, routing & PV. Production version maintained in info record.
While creating manaul subcontracting PR , BOM is not exploded giving error message as "Not possible to determine any components".
I have checked validity of BOM, PV found ok.
Also Proc. type X & Spl. proc type 30 maintained.
Any suggestion to the problem appreciated
Regards
TusharDear Tushar,
Check this link
[Sub contracting PO - BOM components are not seen;
Regards
Madhu -
How to restrict BOM explosion in Quotation and Sales Order
Dear all,
How can we restrict BOM main item explosion in Sales Order.
this BOM main item is having special order items which have to generate purchase requisition (item category - BANC),
with out exploding bom main item, can we generate a purchase requisition for BOM subitems, can any body explain me that how can we do that.
your suggestions will be highly appreciated.
thank you
Raghu RamHi Raghu Ram,
The BOM explosion is controlled by item category.
In the item category configuration screen, under "Bills of Material/ Configuration", you can see "Structure Scope" field.
Select the one which is applicable to your case:-
"blank" - Do not explode material structure
A - Explode single-level BOM
B - Explode multi-level BOM
C - Configuration, no BOM explosion
D - Configuration, poss. with BOM explosion
E - Structure from Customer_Function (product selection)
Hope this helps
Regards,
Nicole -
BOM Explosion Number in Sales Order
Hi Experts,
For a make-to-order case, I would like to assign a predefined BOM explosion number with fixed key date to a sales order item. Instead of manually assigning the BOM explosion number to the sales order item, is there any way to let the system automatically assign the BOM explosion number?
As I read from SAP Library under the BOM Explosion Number (Fixed Key Date), it states "The system can automatically specify the BOM explosion number when entering planned independent requirements or customer independent requirements or when entering the sales order." So is there any configuration to be done in advance to enable the BOM explosion number to be automatically assigned to sales order item?
Thanks,
SWI tried also setting up the material and its BOM determination by specifying only 1 BOM out of multiple BOMs. Still,
1. When I add the said material into sales order line and save the sales order, the BOM explosion number value never appear automatically in the sales order line.
2. When I run the planning on the sales order through MD50, the planned results do not have the BOM explosion number attached.
I think your advice is more applicable to selection of a BOM from multiple BOMs instead of determining the fixed key date based on appropriate BOM explosion number, correct me if I am wrong.
Regards -
Hi Experts,
I have met a problem in BOM explosion in sales order.
I have maintained the BOM with usage 5 and the conversion between header material and component of the BOM. But in the sales order entry, no matter how many qty I entered for the header material, after the BOM explosion, the qty of component is 1.
Can anyone help?
Regards,
EmilyHi,
Go to CS02 and select ur bom and go to components give 1 that means 1;1
hope u get it
regards,
sadanandam kasarla -
Bom explosion in sales order mrp(MD50)
Hi Experts,
In sales order MRP i.e. MD50 Getting the planned orders for header material(Finished goods) generated but for raw materials (BOM items) Purchase requisitions are not getting generated.
Details:
Header material A and raw materials B and C.
In material B in MRP 4 coll/ind indicator is 2 And same indicator for C is blank.
Now when we are running the MRP sales order based it will generate the purchase requisition for C only but not for B.
In OPPQ we have done the setting for sales order BOM explosion.
Can anyone please throw some light what is the setting missing in customization or in front end?
Thanks in advance.
Regards
VilasDear,
If you select individual requirement then system will not consider available stock and generate Proposals for every single requirments. Check in MRP4 view Individual / Collective .
Also you will find PR and Plan order with account assignment of Sales order (in case of MD50).
- If you select collective requirement then system will not generate planing proposals through MD50.In that case you have to go for individual MRP (MD02 / MD03)
Please try and come back.
Regards,
R.Brahmankar -
BOM explosion in Sales order with material variants
Dear all,
we would like to work with Variant Matching in the Sales Order. Additionaly we would like to explode the BOM....according to the SAP help this is not possible....
http://help.sap.com/erp2005_ehp_06/helpdata/en/bd/05a7d69d3211d190380000e8a49aad/frameset.htm
Does anybody of you has any ideas how and where to make this happen?
Thanks for your help and kind regards
JanHi,
I have gonethrough the SAP link referred by you but never come across with any problem in type matching during Sales order even if the BOM explosion is set for Multilevel in Configuration Profile provided the other pre requisite set up was perfect.
Regards
Brahmaji D -
MRP RUN- KIT BOM explosion not working
We setup one layer BOM’s for our maintenance KITs as parent material and components as child material. For example KIT is TS10000-K1 and components are TS10001, TS10002 etc setup as next layer with in the BOM. Both KITS and components are defined as material types ERSA (Spare parts). These one layers BOMs are setup as production BOMs and expected to create purchase requisitions for KITS and components by exploding BOMs during MRP runs. We use purchase requisitions and convert them into POs to procure both KITS and components. We DO NOT USE Panned orders and Production orders.
The safety stocks / reorder point are considered as demand for KITS and components as we do not have any external demand for KITS and components.
MRP run is creating purchase requisitions automatically for both KITS and components as per safety stocks and reorder point defined in MRP Views of Material Master. This is working as expected.
The issue is: KIT BOM’s are not exploding to generate purchase requisitions for the dependent components of KIT BOM. Please suggest the way to resolve this issue.
Split valuation: Also we plan to use split valued KITS with both new and refurbished. So we need BOM explosion for split valued KITS
also (after the 1st issue is resolved).
I verified the following items to make sure the required configuration and data setup is defined correctly.
1) Planning file activated Plant - OMDU
2) Executed MRP run with Total Planning - MDBT and MD02 (single item, multiple levels)
3) BOM explosion for MRP activated- OS23
4) MRP type in MRP1 view- PD and VB (I tried both separately but BOM is not exploding).
5) Procurement type “F” (MRP 2 view) and lot size “EX”
6) Planning strategy in MRP 3 view (tested w/o planning strategy and with strategies 10 and 40. But BOM is not exploded)
7) BOM status and usage (status is active and usage is for production-CS02 and OS20)
8) BOM Validity date (Valid)
9) BOM structure in CS12 (BOM is exploding in CS11)
10) Availability check
11) Selection of BON ID to have BOM usage indicator assign (OS31).
12) No alternate BOMs or production versions or work scheduling view are used.
Please review the above 2 issues and suggest any workable solution. Thanks in advance!
NOTE: I extensively used MRP with multi-level BOM explosion in my earlier projects without any issue. However the above issue is a bit strange why one layer BOM is not exploded in this case.
Regards
SriniHi
Thanks for your response. I reviewed all SAP notes and none of them are applicable to my scenario.
1808396 - BOM changes not considered by MRP: I have not changed BOMs.
1781324 - MD11: Valid BOM alternative is not found. We do not have alternative BOMs.
1791009 - No BOM explosion after changing production version: We am not using production versions.
Our Material KITS are PM spare assemblies set up as BOMs and consists of individual spare parts as components. We are creating purchase requisitions and not planned orders. We are not using PP functionality/Production orders.
MRP is generating purchase requisitions for KITS and components as per ROP and safety stocks. In other words it is working as expected. The issue is BOMs which are parent assemblies are not exploding to the next lower level components.
Please note that I am not getting any error messages when MRP is executed.
Regards
Srini. -
Report for Cost of Multiple products with Multilevel BOM explosion
Hi,
Our client has a requirement of a report showing standard cost estimate of multiple FG products, with multi-level BOM explosion.
In short, the requirement is to get a CK13N report for multiple products.
Has anyone come across such requirement? The requirements seems to be very normal.
But, I have not seen any standard report for the same. If there is any, please suggest.
or suggest a better solution for the same.
Thanks in advance. Pts guaranteed.Hi,
I totally agree with you that this is a totally vague requirement.
However, let me share the reason for such client requirement.
We have a customer, for which we produce certain parts for select models. Now, the arrangement with customer for pricing is based on the raw material and other production cost for all such parts. Based on the fluctuations in cost, the pricing would be finalised.. on a monthly or quarterly basis.
For this purpose, the customer requires to know the raw materials used in each of the part.
Individually it could have been managed. But the price change in terms of % is decided at global level and not for each part.
Please suggest -
Routing details with bom explosion
hi friends
i have developend the report for pp,in routing details
how to get the details of bom explosion with workcenter and routing operations
If procurement type is E or X, system has to check the routing through CA03.
If procurement type if F, leave this field as blank and then fetch the relevant vendor
CS_BOM_EXPL_MAT_V2 - using this fm to get the bom explosion
after that how to relate between workcenter and routing details.
input is material number
plant
1.operator
2.material - i got through fm
3.material description i got through fm
4.workcenter
5.vendor
6.operation description
7.uom -i got through fm
8.qty - i got through fm
9.uom
10.setuptime
11.processingtime
12.deliverytime
code for review.
TABLES : MAST
DATA: BEGIN OF ISTPO OCCURS 1000.
INCLUDE STRUCTURE STPOX.
DATA: END OF ISTPO.
DATA: BEGIN OF MATCAT OCCURS 1000.
INCLUDE STRUCTURE CSCMAT.
DATA: END OF MATCAT.
DATA: W_TOPMAT LIKE CSTMAT.
SELECT-OPTIONS : P_MATNR FOR MAST-MATNR.
PARAMETERS : P_WERKS TYPE MAST-WERKS.
DATA : BEGIN OF ITAB OCCURS 0,
MATNR LIKE MAST-MATNR,
WERKS LIKE MAST-WERKS,
END OF ITAB.
DATA: IT_STB LIKE ISTPO OCCURS 0 WITH HEADER LINE.
data : istpotemp like stpox occurs 0 with header line.
data : istpofinal like stpox occurs 0 with header line.
START-OF-SELECTION.
CLEAR ISTPO. REFRESH ISTPO.
SELECT MATNR WERKS FROM MAST INTO TABLE ITAB
WHERE MATNR IN P_MATNR AND WERKS = P_WERKS.
LOOP AT ITAB.
CALL FUNCTION 'CS_BOM_EXPL_MAT_V2'
EXPORTING
CAPID = 'PP01'
MEHRS = 'X'
MMAPS = ' '
MDMPS = ' '
BREMS = 'X'
DISMM = ' '
LIFNR = ' '
WEBAZ = ' '
DATUV = SY-DATUM
MTNRV = ITAB-MATNR
WERKS = P_WERKS
EMENG = '1'
STKKZ = ' '
FBSTP = ' '
FTREL = ' '
IMPORTING
TOPMAT = W_TOPMAT
TABLES
STB = ISTPO
MATCAT = MATCAT
EXCEPTIONS
ALT_NOT_FOUND = 1
CALL_INVALID = 2
MATERIAL_NOT_FOUND = 3
MISSING_AUTHORIZATION = 4
NO_BOM_FOUND = 5
NO_PLANT_DATA = 6
NO_SUITABLE_BOM_FOUND = 7
OTHERS = 8.
WRITE: / W_TOPMAT-MATNR UNDER TEXT-H00 COLOR COL_HEADING,
W_TOPMAT-MAKTX UNDER TEXT-H01 COLOR COL_HEADING.
sort istpo by index descending.
loop at istpo.
WRITE :/ ISTPO-POSNR,
ISTPO-IDNRK,
ISTPO-OJTXP,
ISTPO-MENGE,
ISTPO-MEINS,
endloop.
refresh istpo.
endloop.HI,
i got the workcenter also,but i need to classify
if the material procurment type is E OR X CHECK FOR routing details
or else if its F THEN pick the vendor and uom -PLPO-VGE01,PLPO-PLIFZ.
how shall i implement this
Regards
ds -
How about this implementation of BOM Explosion(simulate stack)
REPORT YZWX00301_06 LINE-SIZE 142
LINE-COUNT 65
MESSAGE-ID YM1
NO STANDARD PAGE HEADING .
INCLUDE
INCLUDE: YXXI00050.
*TABLES use table define
TABLES: MARA, " Material General Table
MARC, " Plant Data for Material
MDMA, " MRP Area table
EORD, " Vendor table
A018, " Vendor material mapping table
KONP, " Vendor condition table
MAST, " Material BOM table
STPO, " Material BOM Component table
STAS. " Material BOM Component table detail
*CONSTANTS define
CONSTANTS:
C_DAT_X TYPE C VALUE 'X',
C_MODE LIKE dxfields-fileoper VALUE 'R',
C_MASK LIKE dxfields-filemask VALUE '.',
C_FLG_LOCATION TYPE C VALUE 'A',
C_DFPATH(15) TYPE C VALUE '\bmwx\'.
Work Area Define
---- build stack structure -
DATA: BEGIN OF WK_STACK,
LEVEL(1) TYPE C, "Save Level
QUANT TYPE I, "Save Quantity
END OF WK_STACK.
---- BOM work area -
DATA: BEGIN OF WK_BOM,
LEVEL(1) TYPE C, "BOM LEVEL
MATNR LIKE MARC-MATNR, "MATERIAL 18
POSTP LIKE STPO-POSTP, "ITEM CATEGORY 1
MENGE LIKE STPO-MENGE, "BOM COMPONENT 13
DATUV LIKE STPO-DATUV, "VALID FROM 10
DATUB LIKE STPO-DATUV, "VALID TO 10
END OF WK_BOM.
---- DATA work area -
DATA: BEGIN OF DATAITEM,
LEVEL(1) TYPE C, "BOM LEVEL
MATNR LIKE MARC-MATNR, "MATERIAL
POSTP LIKE STPO-POSTP, "ITEM CATEGORY
MENGE LIKE STPO-MENGE, "BOM COMPONENT
DATUV LIKE STPO-DATUV, "VALID FROM!!!
DATUB LIKE STPO-DATUV, "VALID TO
EKGRP LIKE MARC-EKGRP, "PURCHASE ORG
LIFNR LIKE EORD-LIFNR, "Vendor code 10
MARK(1) TYPE C, "Mark
KBETR LIKE KONP-KBETR, "Rate price 11
KONWA LIKE KONP-KONWA, "Currency 5
KPEIN LIKE KONP-KPEIN, "Unit Qty 5
KMEIN LIKE KONP-KMEIN, "Condition Unit 3
DATAB LIKE A018-DATAB, "Condition from 10
DATBI LIKE A018-DATBI, "Condition to 10
END OF DATAITEM.
---- File Line work area -
DATA: BEGIN OF LINE,
WERKS(4) TYPE C, "Plaint 4
MATNR(18) TYPE C, "Material Number 18
EKGRP(3) TYPE C, "Purchase Group 3
LIFNR(10) TYPE C, "Vendor code 10
VDATU LIKE EORD-VDATU, "Vendor valid from 10
BDATU LIKE EORD-BDATU, "Vendor valid to 10
MARK(1) TYPE C, "Mark
KSCHL(4) TYPE C, "Condition type 4
KBETR(18) TYPE C, "Rate price 11
KPEIN(5) TYPE C, "Rate unit 5
KONWA(5) TYPE C, "Currency 5
KMEIN(3) TYPE C, "Condition Unit 3
DATAB LIKE A018-DATAB, "Condition from 10
DATBI LIKE A018-DATBI, "Condition to 10
END OF LINE.
*Local Data Object Define
DATA: WK_CNT TYPE I, "Count variable
WK_LVL TYPE I, "BOM level
WK_QTY TYPE I. "BOM component qty
DATA: WK_LIFNR LIKE EORD-LIFNR,
WK_MATNR LIKE MARC-MATNR.
*Internal Table define
DATA TAB_STACK LIKE STANDARD TABLE OF WK_STACK. "STACK TABLE
DATA TAB_BOM LIKE STANDARD TABLE OF WK_BOM. "FOR BOM
DATA TAB_DATA LIKE STANDARD TABLE OF DATAITEM. "FOR ALL
Parameter in Block1
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME. "TITLE TEXT-001.
PARAMETERS:
P_WERKS LIKE MARC-WERKS DEFAULT 'WX01', "Plant
P_STLTY LIKE STPO-STLTY DEFAULT 'M', "BOM Category
P_MATNR LIKE MARC-MATNR OBLIGATORY, "Material
P_STDAT LIKE EORD-VDATU OBLIGATORY DEFAULT SY-DATUM. "Standard Date
SELECTION-SCREEN END OF BLOCK B1.
Parameter in Block2
SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS: P_SCREEN RADIOBUTTON GROUP R1. "Screen output
SELECTION-SCREEN COMMENT 03(21) TEXT-001.
SELECTION-SCREEN POSITION 32.
PARAMETERS: P_FILE RADIOBUTTON GROUP R1. "NTFILE output
SELECTION-SCREEN COMMENT 34(17) TEXT-002.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK B2.
Parameter in Block3
SELECTION-SCREEN BEGIN OF BLOCK B3 WITH FRAME.
PARAMETERS:
P_NTFILE(45) TYPE C LOWER CASE OBLIGATORY.
P_PCFILE LIKE RLGRAP-FILENAME.
SELECTION-SCREEN END OF BLOCK B3.
INITIALIZATION
INITIALIZATION .
CLEAR : WK_CNT,
WK_LVL,
WK_QTY,
WK_MATNR,
WK_STACK,
WK_BOM,
DATAITEM.
WK_LVL = 0.
WK_QTY = 1.
REFRESH: TAB_STACK,
TAB_DATA,
TAB_BOM.
*& AT SELECTION-SCREE ON VALUE-REQUEST
*AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_NTFILE.
PERFORM F_SHOW_FILE_POPUP CHANGING P_NTFILE. "Popup display
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_PCFILE.
PERFORM F_FILENAME_GET USING P_PCFILE
CHANGING P_PCFILE.
*& Form F_FILENAME_GET
--> ST_DAT_PATH : Preset path
<-- ST_DAT_FILENAME : Selected file name
FORM F_FILENAME_GET USING st_dat_path
CHANGING st_dat_filename.
CALL FUNCTION 'WS_FILENAME_GET'
EXPORTING
def_filename = SPACE
def_path = st_dat_path
mask = ',.,.,'
mode = '0'
title = 'TXT-file select'
IMPORTING
filename = st_dat_filename
EXCEPTIONS
inv_winsys = 1
no_batch = 2
selection_cancel = 3
selection_error = 4
OTHERS = 5.
IF sy-subrc <> 0.
MESSAGE s002(yf1) WITH 'F_FILENAME_GET' sy-subrc.
ENDIF.
ENDFORM. "F_FILENAME_GET
MAIN PROCESS
START-OF-SELECTION.
---- Check material -
PERFORM CHECK_PROD.
---- get vendor data -
PERFORM GET_VENDOR_DATA.
---- output screen/file -
IF P_SCREEN = 'X'.
PERFORM SET_OUTPUT. "Output to screen directly
ELSEIF P_FILE = 'X'.
IF P_PCFILE <> ''.
PERFORM DOWNLOAD_DATA. "Write data into ntfile
ELSE.
MESSAGE E007(00) WITH 'P_PCFILE'.
ENDIF.
ENDIF.
END-OF-SELECTION.
ULINE (142).
WRITE: /002 'Component Material Count:', WK_CNT.
TOP-OF-PAGE
TOP-OF-PAGE.
WRITE: /002 'Product:', 013 P_MATNR,
030 '****** BOM Price List ******',
070 SY-DATUM,
095 'PAGE:',
100 SY-PAGNO.
ULINE (142).
WRITE: /001 '|Level',
007 '|Material',
026 '|Cat',
030 '|Quantity',
044 '|From',
055 '|To',
066 '|PurG',
071 '|Vendor',
082 '|MK',
085 '|Price',
101 '|Crncy',
107 '|UnitQty',
115 '|Unit',
120 '|From',
131 '|To',
142 '|'.
ULINE (142).
*&FORM CHECK_PROD
text
-->p1 text
<--p2 text
FORM CHECK_PROD.
SELECT SINGLE * FROM MARC
WHERE WERKS = P_WERKS " Plant
AND MATNR = P_MATNR " Material
AND DISPR IN ('F100','F200'). " Product
IF SY-SUBRC = 0.
PERFORM CHECK_BOM1 USING MARC-MATNR MARC-WERKS. " CHECK_BOM1
ELSE.
MESSAGE E022.
ENDIF.
ENDFORM. " CHECK_PROD
*&FORM CHECK_BOM1
text
-->p1 text
<--p2 text
FORM CHECK_BOM1 USING VALUE(FP_MATNR) VALUE(FP_WERKS).
SELECT SINGLE * FROM MAST
WHERE MATNR = FP_MATNR AND "Material
WERKS = FP_WERKS. "Plant
IF SY-SUBRC = 0.
PERFORM PUSH_STACK USING WK_LVL WK_QTY. "Save parent attribute
PERFORM CHECK_BOM2 USING MAST-STLNR. "Check BOM2
ENDIF.
ENDFORM. "CHECK_BOM1
*&FORM CHECK_BOM2
text
-->p1 text
<--p2 text
FORM CHECK_BOM2 USING VALUE(FP_STLNR).
SELECT * FROM STPO
WHERE STLTY = P_STLTY AND "BOM category
STLNR = FP_STLNR. "BOM number
PERFORM POPOUT_WK. "Pop out to work area
WK_BOM-LEVEL = WK_LVL. "Current BOM level
WK_BOM-MATNR = STPO-IDNRK. "Material number
WK_BOM-POSTP = STPO-POSTP. "ITEM Category
WK_QTY = STPO-MENGE * WK_QTY. "For Stack
WK_BOM-MENGE = WK_QTY. "BOM Component qty
PERFORM CHECK_BOM3 USING STPO-STLTY STPO-STLNR STPO-STLKN.
PERFORM CHECK_BOM1 USING STPO-IDNRK P_WERKS.
ENDSELECT.
PERFORM POPOUT_STACK.
ENDFORM. "CHECK_BOM2
*&FORM CHECK_BOM3
text
-->p1 text
<--p2 text
FORM CHECK_BOM3 USING VALUE(FP_STLTY) VALUE(FP_STLNR) VALUE(FP_STLKN).
SELECT SINGLE * FROM STAS
WHERE STLTY = FP_STLTY "BOM category
AND STLNR = FP_STLNR "BOM number
AND STLKN = FP_STLKN "BOM item
AND DATUV <= P_STDAT "Valid from
AND LKENZ = ' ' . "Valid
IF SY-SUBRC = 0.
WK_BOM-DATUV = STAS-DATUV. "Valid from
ENDIF.
SELECT SINGLE * FROM STAS
WHERE STLTY = FP_STLTY "BOM category
AND STLNR = FP_STLNR "BOM number
AND STLKN = FP_STLKN "BOM item
AND DATUV > P_STDAT "Valid from
AND LKENZ = 'X' . "Invalid
IF SY-SUBRC = 0.
SELECT SINGLE * FROM STAS
WHERE STLTY = FP_STLTY "BOM category
AND STLNR = FP_STLNR "BOM number
AND STLKN = FP_STLKN "BOM item
AND DATUV > P_STDAT "Valid from
AND LKENZ = 'X' . "Invalid
IF SY-SUBRC = 0.
WK_BOM-DATUB = STAS-DATUV. "Valid to
APPEND WK_BOM TO TAB_BOM.
ENDIF.
ELSE.
WK_BOM-DATUB = '99991231'. "Manul input
APPEND WK_BOM TO TAB_BOM.
ENDIF.
ENDFORM. "CHECK_BOM3
*&FORM PUSH_STACK
text
-->p1 text
<--p2 text
FORM PUSH_STACK USING VALUE(FP_LVL) VALUE(FP_QTY).
WK_STACK-LEVEL = FP_LVL + 1.
WK_STACK-QUANT = FP_QTY.
APPEND WK_STACK TO TAB_STACK. "Push stack
SORT TAB_STACK BY LEVEL. "Sort table by level
ENDFORM. "PUSH_STACK
*&FORM PUSH_STACK
text
-->p1 text
<--p2 text
FORM POPOUT_STACK.
DESCRIBE TABLE TAB_STACK LINES WK_CNT.
IF WK_CNT > 0.
DELETE TAB_STACK INDEX WK_CNT. "Popout stack
SORT TAB_STACK BY LEVEL. "Sort table by level
ENDIF.
ENDFORM. "POPOUT_STACK
*&FORM POPOUT_WK
text
-->p1 text
<--p2 text
FORM POPOUT_WK.
DESCRIBE TABLE TAB_STACK LINES WK_CNT.
IF WK_CNT > 0.
READ TABLE TAB_STACK INTO WK_STACK INDEX WK_CNT. "Popout stack
IF SY-SUBRC = 0.
WK_LVL = WK_STACK-LEVEL. "Current Level
WK_QTY = WK_STACK-QUANT. "Parent Qty
ENDIF.
ENDIF.
ENDFORM. "POPOUT_WK
*&FORM DOWNLOAD_DATA
text
-->p1 text
<--p2 text
FORM DOWNLOAD_DATA.
DATA: L_RETURN TYPE SY-SUBRC.
PERFORM GUI_DOWNLOAD
TABLES
TAB_DATA
USING
P_PCFILE
'X'
CHANGING
L_RETURN.
IF L_RETURN <> 0.
MESSAGE S020.
ELSE.
MESSAGE S021.
ENDIF.
ENDFORM. " DOWNLOAD_DATA
*&FORM GET_VENDOR_DATA
text
-->p1 text
<--p2 text
FORM GET_VENDOR_DATA.
LOOP AT TAB_BOM INTO WK_BOM.
CLEAR DATAITEM.
SELECT * FROM MARC
WHERE WERKS = P_WERKS "Plant
AND MATNR = WK_BOM-MATNR. "Material
DATAITEM-EKGRP = MARC-EKGRP.
SELECT SINGLE * FROM MARA
WHERE MATNR = MARC-MATNR AND "Material number
MTART IN ('1211','1221').
IF SY-SUBRC = 0.
SELECT COUNT(*) FROM EORD
INTO (WK_CNT)
WHERE WERKS = P_WERKS AND "Plaint
MATNR = WK_BOM-MATNR AND "Material
VDATU <= P_STDAT AND "Valid-From
BDATU > P_STDAT. "Valid-To
IF WK_CNT > 1.
DATAITEM-MARK = '*'.
ELSEIF WK_CNT = 0.
MOVE-CORRESPONDING WK_BOM TO DATAITEM.
APPEND DATAITEM TO TAB_DATA.
ENDIF.
SELECT * FROM EORD
WHERE WERKS = P_WERKS AND "Plaint
MATNR = WK_BOM-MATNR AND "Material
VDATU <= P_STDAT AND "Valid-From
BDATU > P_STDAT. "Valid-To
MOVE-CORRESPONDING WK_BOM TO DATAITEM.
DATAITEM-LIFNR = EORD-LIFNR. "Vendor code
SELECT * FROM A018
WHERE LIFNR = EORD-LIFNR AND "Vendor code
MATNR = EORD-MATNR AND "Material
EKORG = EORD-EKORG AND "Purchase org
DATAB <= P_STDAT AND "Valid-from
DATBI > P_STDAT. "Valid-to
DATAITEM-DATAB = A018-DATAB. "Condition From
DATAITEM-DATBI = A018-DATBI. "Condition To
IF SY-SUBRC = 0.
SELECT * FROM KONP
WHERE KNUMH = A018-KNUMH AND "Cnd Number
KSCHL = A018-KSCHL AND "Cnd Type
KAPPL = A018-KAPPL. "Cnd Cat
DATAITEM-KBETR = KONP-KBETR. "Price
DATAITEM-KONWA = KONP-KONWA. "Currency
DATAITEM-KPEIN = KONP-KPEIN. "Price Unit
DATAITEM-KMEIN = KONP-KMEIN. "Unit of Material
APPEND DATAITEM TO TAB_DATA. "Append TAB_DATA
ENDSELECT.
ENDIF.
ENDSELECT.
ENDSELECT.
ELSE.
MOVE-CORRESPONDING WK_BOM TO DATAITEM.
APPEND DATAITEM TO TAB_DATA.
ENDIF.
ENDSELECT.
IF SY-SUBRC <> 0.
MOVE-CORRESPONDING WK_BOM TO DATAITEM.
APPEND DATAITEM TO TAB_DATA.
ENDIF.
ENDLOOP.
ENDFORM. "GET_DATA
*& Form SET_OUTPUT
text
--> p1 text
<-- p2 text
FORM SET_OUTPUT .
CLEAR WK_CNT.
LOOP AT TAB_DATA INTO DATAITEM.
WRITE: /001 '|', 002 DATAITEM-LEVEL, "Material Number
007 '|', 008 DATAITEM-MATNR, "Purchase Grp
026 '|', 027 DATAITEM-POSTP, "Item category
030 '|', 031 DATAITEM-MENGE, "BOM Component qty
044 '|', 045 DATAITEM-DATUV, "BOM valid from
055 '|', 056 DATAITEM-DATUB, "BOM valid to
066 '|', 067 DATAITEM-EKGRP, "Purchase Org
071 '|', 072 DATAITEM-LIFNR, "Vendor
082 '|', 083 DATAITEM-MARK, "Mark flag
085 '|', 086 DATAITEM-KBETR, "Price
101 '|', 102 DATAITEM-KONWA, "Currency
107 '|', 108 DATAITEM-KPEIN, "Unit Qty
115 '|', 116 DATAITEM-KMEIN, "Unit OM
120 '|', 121 DATAITEM-DATAB, "Cnd From
131 '|', 132 DATAITEM-DATBI, "Cnd To
142 '|'.
WK_CNT = WK_CNT + 1.
ENDLOOP.
ENDFORM. " SET_OUTPUTPrabhu Peram,
Thanks very much.
I want to show an idea of BOM explosion by constructing a stack.
BOM explosion uses first-root-searching and pushes the "root" material into stack.If the "root" has no left-child,pops out the "root" material and searchs the right-child....and completes the entire BOM explosion.
Message was edited by:
Mic chen
Message was edited by:
Mic chen -
BOM explosion in chracteristic Plng
Hi
I am trying to map a scenario by characteristic plng. scenario is like, i have steel industry product which is differentiated on basis of grade, dia, shape (major characteristics). and my major objective with plng of finished good is to aggregate molten metal requirement (SFG) on grade wise.
so what I planned is i made configurable material grade wise using material type KMAT, plng stratagy 56.
I have defined character (dia&shape, grade) and assigned to a class type 200(as per literature on sap help). and in class is defined for bom explosion.and in class object are assigned as per characteristic.
i have defined BOM for configure material ,,,,bom item is class(as defined above one) with all required setting.
I have created planning table & profile in DM.
when i m creating PIR ...characteristic wise it is taking but on taking MRP run it is not exploding bom....i.,e it is not picking right material as per class characteristic match.
help me on this
thanks in advance
RajeshHi prakash
yaa...it is variant based planning. but it is based on characteristics and for that I am using class type 200 & strategy 56. as per your reply if I go for strategy 54 than i have to use class type 300 and I have to make configure profile that is not my case.
In my scenario first i have to create PIR for configure material for that pre-requisite is planning profile, planning table & chracteristics combination. I have maintained all these, these thing are all reflected when i am creating PIR (MD61) but when I am taking MRP run Planned order for configure material is generated but dependent requirement is not generated for down level material. I am using class item as BOM component, I don't know why it is not picking right component as per characteristics.
thanks
Rajesh -
BOM explosion in BOMBOS transfer
Hello,
can any one tell me how BOM explosion happens in BOMBOS transfer? Thanks!!
Regards,
SaravanaDear Saravana
I believe if you use "standard" configuration the is no BOM explosion done. This is not needed. The reason is "simple". Any BOM item must be as well a specification. Thsi specification will have it self a composition. The BOMBOS transfer "end" normally on REAL_SUB level. Therefore the "leaflet" REAL_SUB must be maintained by youe (composition) either using PURE_SUB or LIST_SUB. But if needed: there is some user exit available (more than one) which you could try to use so that the "BOS" which is generated on EHS side is the "exploded"
The reason why this is all "customer" specific developmet is "quite" easy. You have a "main" BOM per plant; and you have alternative ones. How should the "explosion" be done? The system can not know thos. Do you always would liek to use the "Standard BOM"? Don'T know. But oplease check paralell thread:BOMBOS transfer SPRO settings and technical details
C.B.
Maybe you are looking for
-
Calendar Sync for Palm and encryption
We are converting our Calendar Server to always use encryption. We're not finding any way to specify the encryption in the Calendar Sync conduit. Did we miss it somewhere? If not, how do we force the Calendar Sync for Palm to use encryption?
-
SAP BPC 7.5 Netweaver - BI Transaction Data to BPC
Hi, I have to add 0debit and 0credit in BI PCA cube to AMOUNT in BPC using transformation file. Prefereably, want to use same data source(P_Datasrc) value and single transformation file. BI transformation is the last option to avoid any issues after
-
Problem with decode function.
Hi, Can anyone of you help me out in solving this? It is like i wish to give different select statements according to the value of a parameter entered by user USING DECODE FUNCTION.The select statement contains some other select statements inside it.
-
I am building a website and I happen to come across a flash intro movie on templatemonster.com and so i began editing it. Here is the actual movie itself: http://images.templatemonster.com/screenshots/18000/18003.html All I am editing is the text in
-
Can you tell me how to copy all staff assignments(structure) in one to anot
Dear Experts, can you tell me how to copy all staff assignments(structure) in one organization unit to another organization unit ? Looking forward to your reply. Thanks in advance. Best Regards, Merry