How to make a normal Function Module remote able function module

Hi guys,
i am a beginner in abap programming. I have made a programm in Se80 which shows all the nodes of the active hierarchies (5 stk.)
in a ALV grid. Therefore i am getting the active hierarchies from table "rshiedir" and use the normal function module "RSSH_HIERARCHY_READ" to display the nodes of the hierarchie. The problem is the hierarchies do have a different techical name in the systems (development-acceptance-productive) but the descriptive nbame is the same in all systems. Because of the difference of the technical names I can use this programm in just one system. But the hierarchy content should be comparable and be displayed in all three systems. Therefore i would like to create a remoteable function module which covers the normal one. Can i do this and how can i create a remoteable function module and use it? 
If not do you know any remotable functgion module which gives back all the nodes from an active hierarchy in table "RShiedir".
Thanks and kind regards,
Murat

Hello,
Simple, create a wrapper RFC (similar to 'RSSH_HIERARCHY_READ' ) & call the normal FM 'RSSH_HIERARCHY_READ' inside the wrapper.
Something like this:
FUNCTION z_rssh_hierarchy_read.
*"*"Global Interface:
*"  IMPORTING
*"     VALUE(I_RSHIEDIRKEY) TYPE  RSHI_S_RSHIEDIRKEY OPTIONAL
*"     VALUE(I_RSHIEDIRLOG) TYPE  RSHI_S_RSHIEDIRLOG OPTIONAL
*"     VALUE(I_DATE) TYPE  RSHI_DATE DEFAULT SY-DATUM
*"  EXPORTING
*"     REFERENCE(E_RSHIEDIR) TYPE  RSHI_S_HIEDIR
*"     REFERENCE(E_T_RSNODES) TYPE  RSHI_T_HIENODE
*"     REFERENCE(E_TH_RSINTERVAL) TYPE  RSHI_TH_INTERVAL
*"     REFERENCE(E_DUPLICATE_LEAFS) TYPE  RS_BOOL
*"     REFERENCE(E_T_RSNODES_LNK) TYPE  RSHI_T_HIENODE
*"  EXCEPTIONS
*"      INVALID_HIERARCHY
*"      NAME_ERROR
*"      IOBJ_NOT_FOUND
" Don't forget to add TYPE-POOLS rshi to the FuGr. TOP include
  CALL FUNCTION 'RSSH_HIERARCHY_READ'
    EXPORTING
      i_rshiedirkey     = i_rshiedirkey
      i_rshiedirlog     = i_rshiedirlog
      i_date            = i_date
    IMPORTING
      e_rshiedir        = e_rshiedir
      e_t_rsnodes       = e_t_rsnodes
      e_th_rsinterval   = e_th_rsinterval
      e_duplicate_leafs = e_duplicate_leafs
      e_t_rsnodes_lnk   = e_t_rsnodes_lnk
    EXCEPTIONS
      invalid_hierarchy = 1
      name_error        = 2
      iobj_not_found    = 3
      OTHERS            = 4.
  IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.
Here Z_RSSH_HIERARCHY_READ is the wrapper RFC. Hope you get the point.
BR,
Suhas

Similar Messages

  • How to make a Java program that recognises a function of two variables...

    How to make a Java program that recognises a function of two variables to assign values to that?
    First I will give an example and then do the question.
    Ex1.
    We have any function, eg.y = x ^ 2 + 1 (read 'y' equals 'x' high to the square), a function of the second degree.
    To build the graph of this function attach values to 'x' to find the values of 'y'
    And thus mount the pair ordered (x, y) which represents a point on the Cartesian plane.
    Assigning values to 'x' 'we can build up a table that gives us the pairs ordered:
    We can use any numbers, but arfer interval [-3.3]
    X | y = x ^ 2 + 1
    -3 | Y = (-3) ^ 2 +1 = 10
    -2 | Y = (-2) ^ 2 +1 = 5
    -1 | Y = (-1) ^ 2 +1 = 2
    0 | y = (0) ^ 2 +1 = 1
    1 | y = (1) ^ 2 +1 = 2
    2 | y = (2) ^ 2 +1 = 5
    3 | y = (3) ^ 2 +1 = 10
    We then ordered the pairs:
    (-3.10), (-2.5); (-1.2), (0,1), (1,2), (2,5), (3,10)
    Tabem that can be represented by a table:
    X | y
    -3 | Y = 10
    -2 | Y = 5
    -1 | Y = 2
    0 | y = 1
    1 | y = 2
    2 | y = 5
    3 | y = 10
    Now I begin to explain my doubts.
    See this program:
    Ex2
    * To change this template, choose Tools | Templates
    * And open the template in the editor.
    Encontrando_o_valor_de_y package;
    * @ Author des Soldat Gottes
    Import javax.swing.JOptionPane;
    Public class (Main
    * @ Param args the command line arguments
    Public static void main (String [] args) (
    Int x, y;
    String x1;
    X1 = JOptionPane.showInputDialog ( "We have the function y = x + 1 \ n" +
    "Assign a value for 'x',"); / / receives a value for the function y = x + 1
    X = Integer.parseInt (x1); / / tranforma String in int
    Y = x + 1; / / receives the value of 'x' and calculates' y '
    JOptionPane.showMessageDialog (null, "The value of 'y' is: \ t \ t" + y);
    / / Displays the value of 'y'
    System.exit (0);
    We see that the program receives above a value for 'x' and replaces the function contained in the program, y = x + 1, and so is the value of the variable 'y'.
    In: x1 = JOptionPane.showInputDialog ( "We have the function y = x + 1 \ n" +
    "Assign a value for 'x',");
    The entry is a number and that number is assigned aa ja existing function in the (y = x + 1).
    The question is: would it be possible to come to a function?
    Ex: the program ask: DIGITE THE FUNCTION?
    The USUARIO DIGITARIA A FUNCTION ANY, TYPE: y = x ^ 2 +1
    The program would recognize the function and give numerical values to that function as Ex1, at the beginning of this text.
    And then to find the values of the x and y launch a table.
    It would be possible that?
    By invez of entering with a number so that the program sustitua a function ja existing as Ex2, seen above, entering with a function quaquer (type: y = x ^ 2 +1) for the program atribuisse values to that function and then create a table of values as Ex1.
    I hope it has been easier to understand my doubts now.
    Thank you for your attention!
    God bless!

    rafaelmenezes wrote:
    Thanks for the explanation, could understand what fly said.
    But as it applied to a program?
    How to create a program that recognizes that the entry coefficients?Are you asking about how to parse out the coefficients from the string "3x^4 + 4x^3 - 8x^2 + 5x^1 + 2x^0"? If you define the format to strictly follow that example, this should get you started:
    Strip out the spaces
    Split the String on "x^"
    That should give you [3, 4+4, 3-8, 2+5, 1+2, 0]
    Split each resulting String on "+ | -", preserving the operator as a token so you can apply the correct sign to the coeff.
    That should leave you with [3, 4, +, 4, 3, -, 8, 2, +, 5, 1, +, 2, 0]. Every other number is a coeff, the rest are the degrees.
    You can strip out the +, since those coeffs are already positive, and strip out the - after negating the following number. This is all assuming that you have to write this yourself. There is no doubt already a library or 5 out there that does this for you.

  • HEY, i have some issue i am using macbook air i5...the problem is that without doing anything 1.5gb of ram out of 2gb always in use ..please help me how to make it normal.

    HEY, i have some issue i am using macbook air i5...the problem is that without doing anything 1.5gb of ram out of 2gb always in use ..please help me how to make it normal....
    and my battery back up is max 3 to 3.5 hours in normal use with web ....is this normal or need some betterment!!!!

    ADEEL UR REHMAN wrote:
    ...the problem is that without doing anything 1.5gb of ram out of 2gb always in use
    No computer can do a thing without using memory. 1.5 GB is very little. It's normal.
    3 or so hours from a full charge may also be normal, for what you are doing. As batteries age, they don't last as long on a full charge as they did when they were new. All batteries eventually wear out, and are easily replaceable.

  • How to make use of the XFList in the Function Bar  of the XML Form Builder?

    Hello:
        Now I am creating blog using the XML Form Builder.
        In the bolg publishing interface of the SDN ,there is a tpoics list ,in this list you can select single or multiples.
        I find the XFList in the Function Bar of the XML Form Builder.But I don't know how to make use of this list?Who can help me?
    lexian
    Thanks a lot!

    In the Attributes of a screen field, there is an attribute called "Groups". This has 4 options for input (4 text boxes)
    SCREEN has 4 fields GROUP1, GROUP2, GROUP3 and GROUP4.
    The first text box under Groups attribute corresponds to SCREEN-GROUP1,
    2nd text box for SCREEN-GROUP2
    3rd text box for SCREEN-GROUP3
    4th text box for SCREEN-GROUP4
    Hope this helps.
    Thanks,
    Balaji

  • How to make input parameter with multiple values in function module?

    Dear Experts,
    I want to add BUKRS as import field to a FM, what is the best way of of making it accept multiple enteries.
    Regards,
    Kiran

    hI kiran,
    The simple way is to create a data element & domain with value range where u provide set of fixed values or provide a check table to it.
    Use that data element in a table <ztable>.
    Code:
    Parameters:
          p_burks like <ztable>-dataelement.
    Call Function <function_name>
    exporting
    p_burks = p_burks,

  • How to make input parameters as optional in the function definition

    I have created a function for a data service which is at the Normalized layer and has 3 input parameters.
    This function is called at the Integration layer in which we have to pass only one parameter. But for the remaning 2 parameters it is throwing an error as we cannot pass those parameters.
    Is it possible that we can pass less number of parameters in the higher layer.
    I had also made those parameters as optional in the function definition(by applying '?' while defining the arguments-e.g. $x as xs:string?), but error was thrown while generating the query plan.
    I have attached a Demo project, in which i have defined a function at the normalized layer and this function is been called at the integration layer.
    Thanks,
    Kinjal

    Thanks mreiche for the reply
    But the problem is that while writing
    function myfunction( arg1 as xs:string, $arg2 as xs:string?) { ... }
    in function definition in the normalized layer, the query plan is throwing following error:-
    com.bea.ld.QueryException: Cannot generate XQuery for the function {ld:DemoProject/Normalized/TestGeo}getGeo:3
    at weblogic.rjvm.BasicOutboundRequest.sendReceive(BasicOutboundRequest.java:108) at weblogic.rmi.cluster.ReplicaAwareRemoteRef.invoke(ReplicaAwareRemoteRef.java:290)
    at weblogic.rmi.cluster.ReplicaAwareRemoteRef.invoke(ReplicaAwareRemoteRef.java:248) at com.bea.ld.Server_ydm4ie_EOImpl_816_WLStub.executeFunction(Unknown Source)     at workshop.liquiddata.xds.views.queryplan.QueryPlanPanel.compileFunction(QueryPlanPanel.java:583) at workshop.liquiddata.xds.views.queryplan.QueryPlanPanel.access$900(QueryPlanPanel.java:39) at workshop.liquiddata.xds.views.queryplan.QueryPlanPanel$5.run(QueryPlanPanel.java:469) at java.lang.Thread.run(Thread.java:534)
    Caused by: com.bea.ld.QueryException: Cannot generate XQuery for the function {ld:DemoProject/Normalized/TestGeo}getGeo:3 at com.bea.ld.EJBRequestHandler.invokeFunction(EJBRequestHandler.java:720) at com.bea.ld.EJBRequestHandler.executeFunction(EJBRequestHandler.java:339) at com.bea.ld.ServerBean.executeFunction(ServerBean.java:95) at com.bea.ld.Server_ydm4ie_EOImpl.executeFunction(Server_ydm4ie_EOImpl.java:312)
    at com.bea.ld.Server_ydm4ie_EOImpl_WLSkel.invoke(Unknown Source)
    at weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:491)
    at weblogic.rmi.cluster.ReplicaAwareServerRef.invoke(ReplicaAwareServerRef.java:120)
    at weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:434)
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:363)
    at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:147)
    at weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java:429)
    at weblogic.rmi.internal.BasicExecuteRequest.execute(BasicExecuteRequest.java:35)
    at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:224)
    at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:183)
    Caused by: com.bea.ld.server.FunctionCallQueryBuilder$QueryBuilderException: The following parameter type is not supported: {http://www.w3.org/2001/XMLSchema}string?
    at com.bea.ld.server.FunctionCallQueryBuilder.addParameter(FunctionCallQueryBuilder.java:257)
    at com.bea.ld.server.FunctionCallQueryBuilder.buildQuery(FunctionCallQueryBuilder.java:99)
    at com.bea.ld.EJBRequestHandler.invokeFunction(EJBRequestHandler.java:716)
    But no error is thrown when I call this function at the Integration layer,using
    for $f in mfunction( 'test', () )
    and the output which i get is as expected.

  • How to make photos normal sized in ios 8 messages?

    In ios 7 and below, when you send or receive photos in messages, they show up as a decent size in the messages slot. However, with ios 8, the photos are just an atrociously large size in messages. Is there a way to revert to the normal photo size?

    Settings>iCloud>Backup>Backup Now

  • How to make use of 3EC_CS_1R for remote cube.

    hi all,
    I have activated the 3EC_CS_1A for consolidation reports but would like to use 3EC_CS_1R DataSource for remote cube, we have not installed SEM-BCS on the BI system, when trying to use the 3EC_CS_1R on the BI system, it complaints the DataSource can only be used by SEM-BCS. what is the best way to utilise this DataSource?
    do I need to install SEM-BCS in order to use this DataSource? Can I just install BCS component only?
    I am slightly confused as where SEM-BCS should be installed, on BI or ECC system?
    cheers.
    Message was edited by: Joe
            Joe Wong

    no longer relevant

  • How to make arch safe enough to remote desktop?

    I have a dsl connection at home, and I need to remote from work to my home usually.
    Sometimes I need to reboot my computer at home from a remote connection because I need to change to another OS.
    The problem with arch, is that if adsl is not able to connect at startup for some reason, it wont try it later, and I will lost the machine.
    Other distributions, like debian, keeps the daemon running until it connects, or try it later; I can do the same with windows and it dsl connection properties; but so far, I have not been able to do it with arch.
    Thanks in advance

    Well, i'd say pppd knows when it has been disconnected, and quits itself.
    So, ensure you have the flag -detach in your pppd configuration file enabled, and configure your inittab similar to this
    pd:23:respawn:/usr/sbin/pppd
    This would ensure to reconnect when the pppd daemon quits. This might not be the proper arch way to go, but it should work
    That's the commandline version, if you are running KDE, kppp has a reconnect method for pppd.
    The other way would be to write a small shell or perl script to check if the daemon is running or if you still have a connection up.
    Hope it helps
    // STi

  • How to make a folder shared on remote machine

    Consider, we have two machines 'A' and 'B'. On machine 'B' we have a folder with absolute path 'C:\SharedFoderTest\Folder' and this folder is not a shared folder.
    Now, is there any way to make this folder shared with the help of java code which is running at machine 'A'.
    we have:
    1.) machine 'A' and 'B' ip addresses.
    2.) absolute path of non-shared folder on machine 'B'.
    Please let me know is there any way to do this.
    Thanks,
    Rajesh

    Rajesh Panchal wrote:
    Consider, we have two machines 'A' and 'B'. On machine 'B' we have a folder with absolute path 'C:\SharedFoderTest\Folder' and this folder is not a shared folder.
    Now, is there any way to make this folder shared with the help of java code which is running at machine 'A'.
    we have:
    1.) machine 'A' and 'B' ip addresses.
    2.) absolute path of non-shared folder on machine 'B'.
    Please let me know is there any way to do this.Something has to run on B to accomplish that.
    Solution 1:
    - Install SSH server on B.
    - SSH server is running on B.
    - Create java SSH client which logs into B then uses "net share" command to create it.
    Solution 2:
    - Create java server that runs "net share" command when it receives request.
    - Install that server on B.
    - Create java client that calls server.

  • Newest iTunes update: screen size is blown up. How to make it normal without messing with the computer's dimensions

    Ok, so before the big change in iTunes, the iTunes window fit perfectly on the screen and there were no issues. Now, the iTunes window is blown up largely where I cannot even see my scroll bar. Even if I change the dimensions of the computer screen, nothing is working. Help!

    Resize the iTunes Window.

  • How to make a JPanel transparent? Not able to do it with setOpaque(false)

    Hi all,
    I am writing a code to play a video and then draw some lines on the video. For that first I am playing the video on a visual component and I am trying to overlap a JPanel for drawing the lines. I am able to overlap the JPanel but I am not able to make it transparent. So I am able to draw lines but not able to see the video. So, I want to make the JPanel transparent so that I can see the video also... I am posting my code below
    import javax.media.*;
    import java.awt.*;
    import java.awt.event.*;
    import java.io.*;
    import java.util.*;
    import java.lang.Math;
    import javax.media.control.FramePositioningControl;
    import javax.media.protocol.*;
    import javax.swing.*;
    class MPEGPlayer2 extends JFrame implements ActionListener,ControllerListener,ItemListener
         Player player;
         Component vc, cc;
         boolean first = true, loop = false;
         String currentDirectory;
         int mediatime;
         BufferedWriter out;
         FileWriter fos;
         String filename = "";
         Object waitSync = new Object();
         boolean stateTransitionOK = true;
         JButton bn = new JButton("DrawLine");
         MPEGPlayer2 (String title)
              super (title);
              addWindowListener(new WindowAdapter ()
                   public void windowClosing (WindowEvent e)
                            dispose ();
                            public void windowClosed (WindowEvent e)
                         if (player != null)
                         player.close ();
                         System.exit (0);
              Menu m = new Menu ("File");
              MenuItem mi = new MenuItem ("Open...");
              mi.addActionListener (this);
              m.add (mi);
              m.addSeparator ();
              CheckboxMenuItem cbmi = new CheckboxMenuItem ("Loop", false);
              cbmi.addItemListener (this);
              m.add (cbmi);
              m.addSeparator ();
              mi = new MenuItem ("Exit");
              mi.addActionListener (this);
              m.add (mi);
              MenuBar mb = new MenuBar ();
              mb.add (m);
              setMenuBar (mb);
              setSize (500, 500);
              setVisible (true);
         public void actionPerformed (ActionEvent ae)
                        FileDialog fd = new FileDialog (this, "Open File",FileDialog.LOAD);
                        fd.setDirectory (currentDirectory);
                        fd.show ();
                        if (fd.getFile () == null)
                        return;
                        currentDirectory = fd.getDirectory ();
                        try
                             player = Manager.createPlayer (new MediaLocator("file:" +fd.getDirectory () +fd.getFile ()));
                             filename = fd.getFile();
                        catch (Exception exe)
                             System.out.println(exe);
                        if (player == null)
                             System.out.println ("Trouble creating a player.");
                             return;
                        setTitle (fd.getFile ());
                        player.addControllerListener (this);
                        player.prefetch ();
         }// end of action performed
         public void controllerUpdate (ControllerEvent e)
              if (e instanceof EndOfMediaEvent)
                   if (loop)
                        player.setMediaTime (new Time (0));
                        player.start ();
                   return;
              if (e instanceof PrefetchCompleteEvent)
                   player.start ();
                   return;
              if (e instanceof RealizeCompleteEvent)
                   vc = player.getVisualComponent ();
                   if (vc != null)
                        add (vc);
                   cc = player.getControlPanelComponent ();
                   if (cc != null)
                        add (cc, BorderLayout.SOUTH);
                   add(new MyPanel());
                   pack ();
         public void itemStateChanged(ItemEvent ee)
         public static void main (String [] args)
              MPEGPlayer2 mp = new MPEGPlayer2 ("Media Player 2.0");
              System.out.println("111111");
    class MyPanel extends JPanel
         int i=0,j;
         public int xc[]= new int[100];
         public int yc[]= new int[100];
         int a,b,c,d;
         public MyPanel()
              setOpaque(false);
              setBorder(BorderFactory.createLineBorder(Color.black));
              JButton bn = new JButton("DrawLine");
              this.add(bn);
              bn.addActionListener(actionListener);
              setBackground(Color.CYAN);
              addMouseListener(new MouseAdapter()
                             public void mouseClicked(MouseEvent e)
                   saveCoordinates(e.getX(),e.getY());
         ActionListener actionListener = new ActionListener()
              public void actionPerformed(ActionEvent aae)
                        repaint();
         public void saveCoordinates(int x, int y)
                    System.out.println("x-coordinate="+x);
                    System.out.println("y-coordinate="+y);
                    xc=x;
              yc[i]=y;
              System.out.println("i="+i);
              i=i+1;
         public Dimension getPreferredSize()
    return new Dimension(500,500);
         public void paintComponent(Graphics g)
    super.paintComponent(g);
              Graphics2D g2D = (Graphics2D)g;
              //g2D.setComposite(AlphaComposite.getInstance(AlphaComposite.CLEAR, 0.0f));
              g2D.setColor(Color.GREEN);
              for (j=0;j<i;j=j+2)
                   g2D.drawLine(xc[j],yc[j],xc[j+1],yc[j+1]);

    camickr wrote:
    "How to Use Layered Panes"
    http://java.sun.com/docs/books/tutorial/uiswing/components/layeredpane.html
    Add your video component to one layer and your non-opaque panel to another layer.Did you try that with JMF? It does not work for me. As I said, the movie seems to draw itself always on top!

  • How to make a file "hidden"

    This question might sound stupid but here it goes. How do you hide a file?, i know how to view hidden files (onyx) but i dont know how to make a normal file as hidden

    On a related note, I am looking for a way to hide only those files that I want hidden. Some hidden files I need to access on an almost-daily basis, but others, like .DS_Store and such, I'll never need direct access to.
    So, is there an official way to set up a custom list of file names and/or file regex patterns so only certain files are hidden from the Finder?
    Thanks!
    MacBook Pro 17 2.33GHz/2GB/100GB   Mac OS X (10.4.8)   Development Machine

  • 2.....how to convert normal function module into remote enabled function mo

    Hi...
    2.....how to convert normal function module into remote enabled function module?
    thanks and regards,
    k.swaminath.

    Hi,
    In the attributes tab select radio button as  remote enabled instead of normal..
    u can call the remote enabled fm as...
    CALL FUNCTION <Function module> destination <destination name>
    Regards,
    Nagaraj

  • How to make function module remote enabled?

    I am trying to make the RSCRMBW_GET_CELL_DATA_BAPI function remote-enabled by choosing remote-enabled in the attributes tab in the function builder. When I try to activate the function, I get an error telling me that Reference parameters are not allowed with RFC. In order to get around this, I set each of the import parameters to pass value. This time, I get an error for Generic types not allowed in RFC. I change the I_NO_TEXTS type from C to CHAR50. Finally, I get an error for Type RSCRM_BAPI6111CD_LARGE_T is unknown. I am able to see this type in both the RSCRM type pool (to which the 'unknown' type belongs) and CL_RSCRMBW_BAPI>GET_CELL_DATA_V2 method (which calls the function). However the function builder still tells me that the Type RSCRM_BAPI6111CD_LARGE_T is unknown.

    Hi,
    You need do this in a work around way. My suggestion is you need to create wrapper function module (RFC enabled) with same paramters of fm RSCRMBW_GET_CELL_DATA_BAPI and inside this function module pass these parameters and call  fm RSCRMBW_GET_CELL_DATA_BAPI, then there is no need to change fm RSCRMBW_GET_CELL_DATA_BAPI

Maybe you are looking for

  • Virtual storage drive causes lightroom to crash

    I use a service called Bitcasa, which is essentially just another cloud storage solution a la Dropbox, etc, except that it allows unlimited storage.  To do this, it mounts a virtual drive on your computer called the "Bitcasa Infinite Drive". When I o

  • Date from Day number and year

    Dear experts, i have day number and year ,i wanted to identify the date ex: day number=203 year=2009 date:22/07/2009 please advice the best possible way to acheive this. thanks

  • Numbers of colors on the screen? Zen vs. Vision

    Hi I am thinking about getting either a Zen or Zen vision M player. I can see that the Zen has 6m colors on the screen and the Vision "only" has 262k colors can I see the difference? thanks for your help? Anders Lindhj

  • Alter css stylesheet to change rollover colors

    I know how to change the rollover colors for links that I've created myself using the inspector, than links/format tabs. But I'm customizing a blog using the notebook template, mostly because I liked the font that it used more than the other blogs. I

  • Can't find my printer from my MacBookPro. Canon MX870 connected via ethernet to my Airport Base station

    I have a MacBookPro3,1. My Canon MX870 is connected to my Airport base station via ethernet. It was working fine until two days ago. I restarted my computer, the printer and the airport and router. Reinstalled the driver for the printer and even rese