0IC_MP04 and 0IC_MC01
We are implementing Inventory and need to understand the difference between the multiproviders 0IC_MP04 and 0IC_MC01.
I have browsed through the help.sap.com definitions but it doesn't tell me why these are two different multiproviders.
I understand that the latter is for Slow Moving items but why have a separate Multiprovider for a report when you could build the same report from 0IC_MP04?
Thanks Raja,
I see the the MC01 is based on 0IC_C03 and 0material and has only the Material as a dimension.
Whereas the MP04 has pretty much the same configuration as 0IC_C03.
Couldnt there be just one Multiprovider on 0IC_C03 and Material and host all reports off of this one?
Why have two separate ones and how does the MC01 help report on slow moving items?
More specifically, what is the key figure 0IC_MC01_CK003? and how is it calculated?
http://help.sap.com/saphelp_bw33/helpdata/en/40/cb051118bd3549a9e39958561fdf8e/frameset.htm
Edited by: CC on May 24, 2011 12:26 AM
Similar Messages
-
0IC_MP04 invalid historical invertory stock balance
I am writting a query against 0IC_MP04 and try to display inventory balance history.
I found something really strange. I have a materail created on Jan 16, 2007. If I browse cube, it looks good. However, when I execute query, it shows the total quantity in negative number all the way back to 2003. I was expecting the query shows balances only for the months after Jan 2007.
In my query, I used non *** key figure 0VALSTCKQTY
Any idea what I might cause this.
Thanks!We found the answer for this issue. There is movement type configuration in R3 called "statistical relevant". It needs to be checked. In my case, the checkbox is clear for movement type 543 and 544. Which means all data associated with 543 and 544 did not get extracted into BI.
-
Slow Moving Items in 0IC_MC01 Performance issue
Hi i am creating slow moving items report (Report which shows materials for which no transaction has been done for last 3 years) on MP 0IC_MC01 in BI7.0.
MP is based on cube 0IC_C03 and Infoobject 0MATERIAL .
In query i put rowcount in coloumn with Infoprovider 0material with constant selection but i dont get the option "Display values not posted" . and Issues value and Recved value .
in rows i put plant , material and material type
n put one condition values for issued and Recid = 0 .
and in filter we have calender year restriction .
But the proble is dere are around 25000 materials for each plant and its taking a lot of time to exceute for multiple plants for 1-2 years , can anyone suggest the best way for this report or how performance of this report can be improved .
Help will be appreciated .Its rather better to use infoset on 0IC_MC01 and Material than using MP. The performance issue is coming because of a join between cube and infoobject, which SAP dont suggest to use.
You ahve to use left outer join to get slow moving items.
http://help.sap.com/saphelp_nw04/Helpdata/EN/67/7e4b3eaf72561ee10000000a114084/content.htm
Thanks...
Shambhu -
Join conditions in Multiprovider and Infoset
Hi experts,
1. I am using the multiprovider 0IC_MC01 which contains the cube 0IC_C03 and 0MATERIAL.
I want to know the join conditions between these two infoproviders in the Multiprovider. How and where to get this info?
2. Similarly, I've a Infoset(custom created) which contains 2 DSOs. I want to know the join conditions between these 2 DSOs in the Infoset.
Please give a hint on this.Hi,
pls go through the following steps and u can get the required info form the links provided...
1. Create an InfoArea to which you want to assign the new MultiProvider.
Choose Modeling ® InfoProvider.
2. In the context menu of the InfoArea, choose Create MultiProvider.
3. Enter a technical name and a description.
4. Choose Create.
5. Select the InfoProvider that you want to form the MultiProvider. Choose Continue. The MultiProvider screen appears.
6. Use drag and drop to transfer the required InfoObjects into your MultiProvider. You can also transfer entire dimensions.
7. Use Identify Characteristics and Select Key Figures to make InfoObject assignments between MultiProviders and InfoProviders.
http://help.sap.com/saphelp_nw70/helpdata/EN/cf/bc734190ba137de10000000a155106/frameset.htm
for infoset u can hav the deatils from below
http://help.sap.com/saphelp_nw70/helpdata/EN/d2/cb466d455611d189710000e8322d00/frameset.htm
regards,
rudra.
Assign points if useful -
A problem with Threads and loops.
Hi, I have some code that needs to be constantly running, like while(true)
//code here
}However, the code just checks to see if the user has input anything (and then if the user has, it goes to do some other stuff) so I don't need it constantly running and hogging up 98% of the CPU. So I made my class (which has the method that needs to be looped, call it ClassA) implement Runnable. Then I just added the method which needed to be looped into the public void run()
I have another class which creates an instance of the above class (call it ClassB), and the main(String[] args) is in there.
public static void main(String[] args)
ClassA test = new ClassA();
Thread thread = new Thread(test.getInstanceOfClassA());
thread.start();
while(true)
//I do not know what to put here
try
thread.sleep(100);
catch(InterruptedException iex)
}However, the thread only calls run() once,(duh...) but I can't think of away to get it to run - sleep - run -sleep forever. Can someone help me?Hi, I have some code that needs to be constantly
running, like while(true)
//code here
}However, the code just checks to see if the user has
input anything (and then if the user has, it goes to
do some other stuff) so I don't need it constantly
running and hogging up 98% of the CPU. Where does the user input come from. Are you reading from an InputStream? If so, then your loop will be blocked anyway when reading from the InputStream until data is available. During that time, the loop will not consume processor cycles.
public static void main(String[] args)
ClassA test = new ClassA();
Thread thread = new Thread(test.getInstanceOfClassA());I have never seen this idiom. If ClassA instanceof Runnable, you simply write new Thread(test).
thread.start();
while(true)
//I do not know what to put
do not know what to put here
try
thread.sleep(100);
catch(InterruptedException iex)
}However, the thread only calls run() once,(duh...)Yeah, why would you want to call it more than once given that you have an infinite loop in ClassA.run()?
Harald.
Java Text Crunching: http://www.ebi.ac.uk/Rebholz-srv/whatizit/software -
A problem with Threads and MMapi
I am tring to execute a class based on Game canvas.
The problem begin when I try to Play both a MIDI tone and to run an infinit Thread loop.
The MIDI tone "Stammers".
How to over come the problem?
Thanks in advance
Kobi
See Code example below:
import java.io.IOException;
import java.io.InputStream;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.game.GameCanvas;
import javax.microedition.media.Manager;
import javax.microedition.media.MediaException;
import javax.microedition.media.Player;
public class MainScreenCanvas extends GameCanvas implements Runnable {
private MainMIDlet parent;
private boolean mTrucking = false;
Image imgBackgound = null;
int imgBackgoundX = 0, imgBackgoundY = 0;
Player player;
public MainScreenCanvas(MainMIDlet parent)
super(true);
this.parent = parent;
try
imgBackgound = Image.createImage("/images/area03_bkg0.png");
imgBackgoundX = this.getWidth() - imgBackgound.getWidth();
imgBackgoundY = this.getHeight() - imgBackgound.getHeight();
catch(Exception e)
System.out.println(e.getMessage());
* starts thread
public void start()
mTrucking = true;
Thread t = new Thread(this);
t.start();
* stops thread
public void stop()
mTrucking = false;
public void play()
try
InputStream is = getClass().getResourceAsStream("/sounds/scale.mid");
player = Manager.createPlayer(is, "audio/midi");
player.setLoopCount(-1);
player.prefetch();
player.start();
catch(Exception e)
System.out.println(e.getMessage());
public void run()
Graphics g = getGraphics();
play();
while (true)
tick();
input();
render(g);
* responsible for object movements
private void tick()
* response to key input
private void input()
int keyStates = getKeyStates();
if ((keyStates & LEFT_PRESSED) != 0)
imgBackgoundX++;
if (imgBackgoundX > 0)
imgBackgoundX = 0;
if ((keyStates & RIGHT_PRESSED) != 0)
imgBackgoundX--;
if (imgBackgoundX < this.getWidth() - imgBackgound.getWidth())
imgBackgoundX = this.getWidth() - imgBackgound.getWidth();
* Responsible for the drawing
* @param g
private void render(Graphics g)
g.drawImage(imgBackgound, imgBackgoundX, imgBackgoundY, Graphics.TOP | Graphics.LEFT);
this.flushGraphics();
}You can also try to provide a greater Priority to your player thread so that it gains the CPU time when ever it needs it and don't harm the playback.
However a loop in a Thread and that to an infinite loop is one kind of very bad programming, 'cuz the loop eats up most of your CPU time which in turn adds up more delays of the execution of other tasks (just as in your case it is the playback). By witting codes bit efficiently and planning out the architectural execution flow of the app before start writing the code helps solve these kind of issues.
You can go through [this simple tutorial|http://oreilly.com/catalog/expjava/excerpt/index.html] about Basics of Java and Threads to know more about threads.
Regds,
SD
N.B. And yes there are more articles and tutorials available but much of them targets the Java SE / EE, but if you want to read them here is [another great one straight from SUN|http://java.sun.com/docs/books/tutorial/essential/concurrency/index.html] .
Edited by: find_suvro@SDN on 7 Nov, 2008 12:00 PM -
Problem with Threads and a static variable
I have a problem with the code below. I am yet to make sure that I understand the problem. Correct me if I am wrong please.
Code functionality:
A timer calls SetState every second. It sets the state and sets boolean variable "changed" to true. Then notifies a main process thread to check if the state changed to send a message.
The problem as far I understand is:
Assume the timer Thread calls SetState twice before the main process Thread runs. As a result, "changed" is set to true twice. However, since the main process is blocked twice during the two calls to SetState, when it runs it would have the two SetState timer threads blocked on its synchronized body. It will pass the first one, send the message and set "changed" to false since it was true. Now, it will pass the second thread, but here is the problem, "changed" is already set to false. As a result, it won't send the message even though it is supposed to.
Would you please let me know if my understanding is correct? If so, what would you propose to resolve the problem? Should I call wait some other or should I notify in a different way?
Thanks,
B.D.
Code:
private static volatile boolean bChanged = false;
private static Thread objMainProcess;
protected static void Init(){
objMainProcess = new Thread() {
public void run() {
while( objMainProcess == Thread.currentThread() ) {
GetState();
objMainProcess.setDaemon( true );
objMainProcess.start();
public static void initStatusTimer(){
if(objTimer == null)
objTimer = new javax.swing.Timer( 1000, new java.awt.event.ActionListener(){
public void actionPerformed( java.awt.event.ActionEvent evt){
SetState();
private static void SetState(){
if( objMainProcess == null ) return;
synchronized( objMainProcess ) {
bChanged = true;
try{
objMainProcess.notify();
}catch( IllegalMonitorStateException e ) {}
private static boolean GetState() {
if( objMainProcess == null ) return false;
synchronized( objMainProcess ) {
if( bChanged) {
SendMessage();
bChanged = false;
return true;
try {
objMainProcess.wait();
}catch( InterruptedException e ) {}
return false;
}Thanks DrClap for your reply. Everything you said is right. It is not easy to make them alternate since SetState() could be called from different places where the state could be anything else but a status message. Like a GREETING message for example. It is a handshaking message but not a status message.
Again as you said, There is a reason I can't call sendMessage() inside setState().
The only way I was able to do it is by having a counter of the number of notifies that have been called. Every time notify() is called a counter is incremented. Now instead of just checking if "changed" flag is true, I also check if notify counter is greater than zero. If both true, I send the message. If "changed" flag is false, I check again if the notify counter is greater than zero, I send the message. This way it works, but it is kind of a patch than a good design fix. I am yet to find a good solution.
Thanks,
B.D. -
Problem with Threads and "plase wait..."-Window
Hi everyone,
I have a problem that I'm not able to solve in any way... I have a time-consuming task (a file decryption) which I execute in a separate thread; I've used the SwingWorker class, like suggested by sun-tutorial, and it works right. The problem is that I have to wait that the decryption have finished before continuing with program-execution. Therefore I would like to display a "please wait"-window while the task runs. I've tryed all the possible ways I know but the problem is always the same: the waitWindow is displayed empty, the bounds are painted but the contents no; it's only painted when the decrypt-task has finished. Please help me, I have no more resources....
decrypt-file code:
public class DecryptFile {
private String cryptedFileNameAndPath;
private ByteArrayInputStream resultStream = null;
// need for progress
private int lengthOfTask;
private int current = -1;
private String statMessage;
public DecryptFile(String encZipFileNameAndPath) {
cryptedFileNameAndPath = encZipFileNameAndPath;
//Compute length of task...
// 0 for indeterminate
lengthOfTask = 0;
public ByteArrayInputStream getDecryptedInputStream() {
return this.resultStream;
* Called from ProgressBarDemo to start the task.
public void go() {
current = -1;
final SwingWorker worker = new SwingWorker() {
public Object construct() {
return new ActualTask();
worker.start();
* Called from ProgressBarDemo to find out how much work needs
* to be done.
public int getLengthOfTask() {
return lengthOfTask;
* Called from ProgressBarDemo to find out how much has been done.
public int getCurrent() {
return current;
public void stop() {
current = lengthOfTask;
* Called from ProgressBarDemo to find out if the task has completed.
public boolean done() {
if (current >= lengthOfTask)
return true;
else
return false;
public String getMessage() {
return statMessage;
* The actual long running task. This runs in a SwingWorker thread.
class ActualTask {
ActualTask () {
current = -1;
statMessage = "";
resultStream = AIUtil.getInputStreamFromEncZip(cryptedFileNameAndPath); //here the decryption happens
current = 0;
statMessage = "";
}The code that calls decryption and displays waitWindow
final WaitSplash wS = new WaitSplash("Please wait...");
final DecryptFile cryptedTemplate = new DecryptFile (this.templateFile);
cryptedTemplate.go();
while (! cryptedTemplate.done()) {
try {
wait();
} catch (Exception e) { }
this.templateInputStream = cryptedTemplate.getDecryptedInputStream();
wS.close();Thanks, thanks, thanks in advance!
EdoardoMaybe you can try setting the priority of the long-running thread to be lower? so that the UI will be more responsive...
-
Problem with threads and graphics
I have a thread that chooses paths for a Travelling salesman problem, it then calls a TSPdraw class and passes it the path, which the class then draws. the problem is when i have two threads it creates two windows but only draws a path in one of them. any ideas where i`m going wrong
Are you using swing components? Swing isn't threadsafe. If you have multiple threads that want to update your UI you need to use the SwingUtilities.invokeLater(...)or invokeAndWait(...). There is a page in the swing tutorial about this at: http://java.sun.com/docs/books/tutorial/uiswing/misc/threads.html
-
Problem with threads and ProgressMonitor
Dear Friends:
I have a little problem with a thread and a ProgressMonitor. I have a long time process that runs in a thread (the thread is in an separate class). The thread has a ProgressMonitor that works fine and shows the tasks progress.
But I need deactivate the main class(the main class is the user interface) until the thread ends.
I use something like this:
LongTask myTask=new LongTask();
myTask.start();
myTask.join();
Now, the main class waits for the task to end, but the progress monitor don`t works fine: it shows only the dialog but not the progress bar.
What's wrong?Is the dialog a modal dialog? This can block other UI updates.
In general, you should make sure that it isn't modal, and that your workThread has a fairly low priority so that the UI can do its updating -
Problem with threads and/or memory
I'm developing an application where there are 3 threads. One of them sends a request to the other, and if the 2nd can't answer it, it sends it to the 3rd (similar to CPU -> CACHE -> MEMORY). When i run the program with 1000-10.000 requests, no problem occurs. When i run it with 300.000-1.000.000 requests, it sometimes hangs. Is this a problem with the garbage collector, or should it be related to the threads mecanism.
(note: eache thread is in execution using a finite state machine)i had been running the program inside Netbeans.
Running the jar using the command line outside
Netbeans i have no more problems... Does Netbeans use
it's own JVM?Depends how you set it up, but look under the options. There are settings for the compiler and jvm that it uses. -
What is the difference between these two lines of codes?
String currentFile = null;
String currentFile = "";
Edited by: AMARSHI on Jul 10, 2008 7:07 AMThe reference variable itself, takes up the same amount of space, of course, as all references are the same size. Now, the object on the heap is a different story. With null there isn't one, of course (or if there is there is only one for the entire VM), and for the second a String object will be created in the String pool (once again, only one for the entire VM that every = "" assignment will use). But really, what difference does it make? If there is a difference, it is on the order of a few bytes (at max) for the entire VM, and if this is a concern, your probably doing something else greviously wrong. This miniscule difference should not concern you.
Edit: And "nulling" variables to "save" memory is also not something you should be concerned with. Either the variable will go out of scope and the object garbage collected anyway, or it's in constant use and so will not be taking up any extraneous heap space. If one of those is not the case, you are, once again, doing something greviously wrong. -
And/or if statement in rtf templates.
Hi all,
I'm using XML Publisher 4.5.
I have created a word template file (rtf) for my reports. I need to be able to show some content in the template file by using and and/or if statement.
fx. <?if:doc_type='STANDARD'?> OR <?if:doc_type='DEFAULT'?>
How can I do this?
In advance thank you.
Best regards
KennethHi D,
Thank you for your answer.
I have seriously thought about that solution; but I don't think it's a smart way to do it.
If i do it like that, i need to copy the whole table and paste it inside the if statements.
I have two xml elements that I need to make the decisions on. POH_PO_TYPE & CP_RELEASE_NUM.
POH_PO_TYPE can be: STANDARD, RELEASE or BLANKET.
CP_RELEASE_NUM can be: '' or N
If POH_PO_TYPE is RELEASE AND CP_RELEASE_NUM is not ''
OR POH_PO_TYPE is STANDARD
OR POH_PO_TYPE is BLANKET AND CP_RELEASE_NUM is ''
THEN show table (which contains the whole PO).
It shall show the content of the PO in any of these cases.
BR Kenneth -
Last sunday i install a window 8 and this window format my all drive & make it 1 drive (DRIVE C). Before all of this i have 5 drive in different size with 1 Bitlocker protect drive.
So i try data recovery software to recover my data. i got back all my data without that ( bitlocker ) protected drive.
so please guys help me how can i get back data from bitlocker protected drives.
please please help me.Hi,
I sorry for your experience, but there is no way to recovery the data encryped by BitLocker untill now.
BitLocker is designed to make the encrypted drive unrecoverable without the required authentication. When in recovery mode, the user needs the recovery password or recovery key to unlock the encrypted drive. Therefore, we highly recommend
that you store the recovery information in AD DS or in another safe location.
Please refer to the link below for the statement:
http://technet.microsoft.com/de-de/library/ee449438(v=ws.10).aspx#BKMK_RecoveryInfo
Roger Lu
TechNet Community Support -
Open and cancelled Quote Report
Hi,
Can anyone give me the information for getting open and cancelled Quote Report?I hope you are using reason for rejection for cancelling quotations. If that is the case, you can use transaction VA25 to view the list of quotations. Here you can filter on two columns status and reason for rejection to view the report as per your requirement.
Regards,
GSL.
Maybe you are looking for
-
Using USB 6341 device for frequency generation but level is droped when conect
i am using USB-6341 Daq Device for frequency generation. The desired frequency is generated correctly but when i connect to other device the voltage level i means the Peak to Peak voltage of the frequency dropped to 0.6, 1 Volt and also the frequency
-
Ant autotype does not seem to recognize xsd:include
Hi I am currently using WebLogic 7.0. I was trying to use ant autotype to generate java classes based on a schema. I ran into a problem that the autotype does not seem to include the other schema files listed with xsd:include. I could only get around
-
Print a number variable as a real number without approximation forms
Dear all I want to pront my variable number without approximation forms, here is my output problem: SQL> select imsi from table where num like '393'; number *2.2202E+14* I want that the output will display as a real nyumber without approximation. Reg
-
Hello, I am interested in buying a new Macbook Pro but want to run the latest Adobe CS package. Which computer do you recommend for best speed and perfromance?
-
Recording more than two seperate tracks into Garage, same time
Hi there, What I want to do is run four inputs simultaneously into Garage onto four seperate tracks (no spillage). What is best? What should I do? I have an iMac (10.4.1). I am aware that a Presonus Firebox might work but I am also aware that there m