Java technology/framework suggestions required for solution.

Hi,
I'm a C/PRO*C developer (for the past 12 years) and have been asked to do some Java ( which I haven't touched for 13 years).
I would like you input on the 'correct' solution (kind of like an architectural overview) of the technologies I should be looking at.
There are two parts to this.
I need to write a web browser/Application that picks up a file locally on windows PC and reads the contents of the file to populate some url parameters which go to a specific web sevice via HTTPS.
I then need a web service or some kind of servlet (I guess) that on receipt of the request by the client then stores (to a database) the request for auditing and then creates a soap message (using the data receieved) to an external third party( WSDL provided by thirdpparty). Once the thirdparty responds the web server then generates a web page for the client which includes a number of options and details retrieved from the thirdparty are displayed and on the client selecting them the result is sent to the server and the selected option is stored.
Part of this must be that the server must be capable of running as a number of instances. It must be highly secure.
What java technologies/frameworks should be looked out? Is my very rough design fundamentally floored?
Thanks in advance.
OFN

OldFashionedNewbie wrote:
So should I use servlets as opposed to JSP? or JCF?Servlets are not opposed to JSP. (JCF? Do you mean JSF?) You can and would use both Servlets and JSP, however, I have grown to believe that JSPs are awful and you should use Velocity instead. From what I've heard of JSF, I'd avoid that too.
Essentially then create a servlet that accepts HTTP request and manipulates a call to the thirdparty, audits data to database, and returns a page back to client which then accepts the option.The server accepts the HTTP request and deals with that lower-level stuff for you, then it invokes your servlet.
The servlet shouldn't call the third party, etc.; it should invoke other code (that you'd write) to do all that. You need a layer of abstraction between your business logic and the web tier. Among other things this will make it much easier to test.
If I were wanting to run this as a in multiple instances then I create a connection pool to the database. But could multiple app instances be able to use one network connection to the ThirdParty?I suppose they could but it seems like more trouble than it's worth and a whole layer of infrastructure that I wouldn't bother with unless (a) you've demonstrated that it's a problem during profiling, and (b) you find that there's some preferably open-source library that handles this for you.

Similar Messages

  • Java SE minimum CPU requirement for x86

    According to Windows System Requirements for JDK and JRE the min. CPU requirements for JDK 7 is a Pentium II 266 MHz.
    A Pentium II is a i686 CPU.
    However, the installation packages for Oracle JDK 7 available at Java SE Development Kit 7 - Downloads | Oracle Technology Network | Oracle show i585 package names. Should they not be called i686 to be correct?
    Thanks.

    However, the installation packages for Oracle JDK 7 available at Java SE Development Kit 7 - Downloads | Oracle Technology Network | Oracle show i585 package names.
    Actually they show 'i586' in some names.
    Should they not be called i686 to be correct?
    Probably - it if concerns you that much just use one of the 'contact us' links on that page and report it to Oracle.

  • Suggestion required for Rental process

    Hello Gurus,
    Please suggest a suitable solution for the following scenario:
    Client has  property like office space and shops.
    client gives it on rent, the current process is as follows:
    1. Adv in News Papers
    2. Selling of tender forms.
    3. Accept tenders with refundable deposits.
    4. Agreement with highest Quoted.
    5. Collect 3 months rent in Advance
    6. collect the rent every month.
    7. At the end of the period refund the deposit.
    Kindly suggest the document types, copy control and periodic billing steps and pricing to be used in SAP SD.
    Thanks & Regards

    Hello lrsapsd
    You first need to decide the business processes that you would (can) cover within SAP and which will be out of SAP.  Check out SAP for Real Estate Industry Solution, If you can not go that way, here is my proposal:
    1. Adv in News Papers: Outside SAP
    2. Selling of tender forms: Outside SAP
    3. Accept tenders with refundable deposits: Enter them as quotes, You may use AV-Quotation f.Contract or AG-Quotation. Bidders (Renters) will be sold-tos or Prospects and quote will be priced manually with the amount they bid to pay for rent. Deposits may be collected via a Debit Memo and posted to a Temporary  Holding Account.
    4. Agreement with highest Quoted: Reject all the Bids except the one with highest quote, Convert that quote into Rental Contract (MV) with Periodic Billing Plan. Billing Plan Type- 02; Date Determination Rule- 50.
    5. Collect 3 months rent in Advance: Can be managed with Billing Plan and/or down payment.
    6. collect the rent every month- Monthly billing of rent using Periodic Billing Plan
    7. At the end of the period refund the deposit- Credit Memo Req and Credit Memo, can be automated using contract end date and triggered by workflow with Status control  of contract if needed.
    Hope this helps.

  • Design Suggestions Required for Message Center functionality

    Hi All,
    I am looking for some suggestion, for one of the requirement for my customer.
    Requirement is as below.
    Customer wants to have a Message Center, where in, user will be able to send a message to another another user with some content and with or without attachment. they should be able to send multiple attachment as well.
    The message which users are sharing with each other should be in the conversation mode. Like for One topic or subject if a users ha sent a message to another user, the same content should be in the conversation mode and an email should be sent to other users
    with he content and attachments.
    In addition to above, all the messages exchanged should be stored below in the tabular format.

    Discussion board does serves the purpose. But how we can control the item level permission. For example, if we wantto show items which are relevant to user who is logged in, i mean show items based on the logged in user ?

  • Suggestion Required for Best Solution

    Hi All,
    Please share your thoughts for the best solution to implement.
    Scenario: ATG to interact with the Middleware layer. ATG will be the webportal front end and there will be different sales channels.ATG Product catalog will be the product master.
    Approach 1: Sales Channels will interact with Middleware layer and ATG will expose the product datalog and some business rules via webservice.
    Approach 2: Sales Channels will interact directly with ATG through webservices and ATG will interact with Middleware layer for some business rules.
    The difficulty for me in finding the best approach is ATG front end business rules cannot be moved to middleware and same the middleware business rules cannot be moved to ATG front end. Also, the challenge here is we need to use SOAP for service contracts but ATG webservice supports only JAX RPC.
    Which will be the best approach and share if you have any other approaches.
    Thanks,
    DKA

    Yes OOTB ATG only support JAX-RPC webservices but with little work you can expose any global component in ATG as JAX-WS webservice.
    Refer following document for JBoss reference implementation:
    Refer: https://docs.jboss.org/author/display/JBWS/JAX-WS+User+Guide
    You have to define a class from which you can call a global Nucleus component and then declare it as webservice as .
    @WebService(
              name="ATGCompoenetAsService",
              targetNamespace="http://mycompany.com/services/ATGCompoenetAsService",
              serviceName="ATGCompoenetAsServiceService"
    @SOAPBinding(style = SOAPBinding.Style.DOCUMENT)
    public class MyATGComponentServlet
         @WebMethod
         @RequestWrapper(localName = "ATGCompoenetAsServiceRequestWrapper")
         @ResponseWrapper(localName = "ATGCompoenetAsServiceResponseWrapper")
         @WebResult(name="ATGCompoenetAsServiceResponses")
         public ATGCompoenetAsServiceResponse performService( @WebParam(name="ATGCompoenetAsServiceRequest") ATGCompoenetAsServiceRequest pRequest )
              ATGCompoenetAsServiceService service = (ATGCompoenetAsServiceService)Nucleus.getGlobalNucleus().resolveName( "/medline/medlinedotcom/ATGCompoenetAsService/ATGCompoenetAsServiceService" );
              return service.performService( pRequest );
    You can then declare this is your web.xml as servlet and wallah you have webservice deployed as servlet.
    You can see the WSDL be appending ?WSDL to your servlet path.

  • COMMUNICATION BETWEEN JAVASCRIPT AND JAVA APPLET: US$20 AWARD FOR SOLUTION!

    COMMUNICATION BETWEEN JAVASCRIPT AND JAVA APPLET PROBLEM (Easy Filter Java Applet) -
    US$20 TO ANYONE WHO CAN RESOLVE THE PROBLEM
    To forum visitors:
    I am prepared to pay a standard shareware fee of US$20 to a user who can resolve this technical problem.
    If your advice resolves the problem, I'll forward the payment to your postal address (include your
    address with your reply, and also your email address)
    I am attempting to enable a HTML button (using Javascript's onClick command) to directly input a number into one of the parameter text boxes in the Easy Filter Java applet (ie, enter a new color value number in the text field of the standard Colors Multiplicator Filter interface).
    The applet is Freeware and can be downloaded at: http://www.javazoom.net/applets/easyfilter10/EasyFilter10.html
    (It is a very effective bitmap display and editing utility)
    To achieve this, I am trying to access the part of the applet that defines and sets the textbox. The text box is defined in the .class file by accessing the parameter details in the genericfilter.txt file (accompanies the .class files). I need to access 'private String appletInitialize()' and then one of the 'textFieldParameters' which sets the textbox.
    I understand the basic syntax for referencing the applet:
    document.appletname.setString("An example"). However, accessing the text fields in this applet is more complex!!
    Please can you recommend the correct Javascript syntax to achieve communication with the applet.
    Thank you for your kind assistance.
    JM Graham
    [email protected]
    The Java source code for the applet: EasyFilter.class
    # Easy Filter - E.B/JavaZOOM 1999 #
    # Contact: [email protected] #
    # http://javazoom.hypermart.net #
    /* Originally compiled from EasyFilter.java */
    import java.awt.*;
    import java.io.*;
    import java.net.*;
    import java.applet.Applet;
    import java.awt.event.KeyEvent;
    import java.awt.event.KeyListener;
    import java.awt.image.MemoryImageSource;
    import java.awt.image.PixelGrabber;
    import java.util.Vector;
    public synchronized class EasyFilter extends Applet implements KeyListener
    private String paramFileName;
    private Color bgColor;
    private Color fgColor;
    private Color parColor;
    private Color sepColor;
    private Color titleColor;
    private Color helpColor;
    private int WinWidth;
    private int WinHeight;
    private String title;
    private String logoFileName;
    private String originalImageFileName;
    private String filteredCaption;
    private String originalCaption;
    private Vector paramsName;
    private Vector paramsValue;
    private Vector paramsComment;
    private Panel panelParameters[];
    private Label labelParameters[];
    private TextField textFieldParameters[];
    private Label labelComments[];
    private int nbParameters;
    private ScrollPane scrollPaneParams;
    private Panel panelParams;
    private Image theLogo;
    private Image theOriginalImage;
    private Image theFilteredImage;
    private int theOriginalPixelArray[];
    private int logoWidth;
    private int logoHeight;
    private int imageWidth;
    private int imageHeight;
    private drawCanvas canvasTitle;
    private Panel panelTitle;
    private Label labelTitle;
    private Panel panelImages;
    private Panel panelOriginalImage;
    private drawCanvas canvasOriginalImage;
    private Label labelOriginalImage;
    private Panel panelFilteredImage;
    private drawCanvas canvasFilteredImage;
    private Label labelFilteredImage;
    private Panel panelHelp;
    private Label labelHelp;
    private int Yspc;
    private FilterImplementation theFilter;
    public void init()
    String string = null;
    string = appletInitialize();
    setBackground(bgColor);
    if (string != null)
    removeAll();
    setBackground(Color.white);
    setForeground(Color.black);
    Label label = new Label(new StringBuffer("Error: ").append(string).toString(), 1);
    Panel panel = new Panel();
    panel.add(label);
    add(panel);
    setLayout(new FlowLayout(1, 5, Yspc));
    public void keyPressed(KeyEvent keyEvent)
    panelHelp.removeAll();
    boolean flag = true;
    if (KeyEvent.getKeyText(keyEvent.getKeyCode()).equals("Enter"))
    for (int i = 0; i < nbParameters; )
    try
    paramsValue.setElementAt(new Double(textFieldParameters.getText()), i);
    i++;
    catch (NumberFormatException e)
    labelHelp.setText(labelParameters[i].getText() + ": Not a Number");
    flag = false;
    break;
    if (flag == 1)
    labelHelp.setText(" .... Running, please wait .... ");
    labelHelp.setAlignment(1);
    panelHelp.add(labelHelp);
    panelHelp.doLayout();
    theFilter.updateParameters(paramsValue);
    theFilter.computeFilter();
    theFilteredImage = createImage(new MemoryImageSource(theFilter.getFinalImageWidth(), theFilter.getFinalImageHeight(), theFilter.getFinalImageBuffer(), 0, theFilter.getFinalImageWidth()));
    canvasFilteredImage.setImage(theFilteredImage);
    canvasFilteredImage.setBounds(0, 0, theFilter.getFinalImageWidth(), theFilter.getFinalImageHeight());
    canvasFilteredImage.repaint();
    panelHelp.removeAll();
    labelHelp.setText("- Done -");
    else
    labelHelp.setText("- Press Enter to run the Filter -");
    labelHelp.setAlignment(1);
    panelHelp.add(labelHelp);
    panelHelp.doLayout();
    public void keyReleased(KeyEvent keyEvent)
    public void keyTyped(KeyEvent keyEvent)
    private String appletInitialize()
    WinWidth = size().width;
    WinHeight = size().height;
    if (getParameter("bgcolor") == null)
    bgColor = new Color(0, 0, 40);
    else
    bgColor = new Color(Integer.parseInt(getParameter("bgcolor"), 16));
    if (getParameter("fgcolor") == null)
    fgColor = new Color(255, 255, 255);
    else
    fgColor = new Color(Integer.parseInt(getParameter("fgcolor"), 16));
    if (getParameter("sepcolor") == null)
    sepColor = new Color(158, 128, 128);
    else
    sepColor = new Color(Integer.parseInt(getParameter("sepcolor"), 16));
    if (getParameter("parcolor") == null)
    parColor = new Color(24, 24, 24);
    else
    parColor = new Color(Integer.parseInt(getParameter("parcolor"), 16));
    if (getParameter("titlecolor") == null)
    titleColor = new Color(255, 255, 0);
    else
    titleColor = new Color(Integer.parseInt(getParameter("titlecolor"), 16));
    if (getParameter("helpcolor") == null)
    helpColor = new Color(0, 255, 255);
    else
    helpColor = new Color(Integer.parseInt(getParameter("helpcolor"), 16));
    paramsName = new Vector();
    paramsValue = new Vector();
    paramsComment = new Vector();
    paramFileName = getParameter("paramfile");
    String string = readParams(paramFileName);
    if (string != null)
    return string;
    MediaTracker mediaTracker = new MediaTracker(this);
    theOriginalImage = getImage(getDocumentBase(), originalImageFileName);
    mediaTracker.addImage(theOriginalImage, 0);
    if (logoFileName != null)
    theLogo = getImage(getDocumentBase(), logoFileName);
    mediaTracker.addImage(theLogo, 1);
    try
    mediaTracker.waitForAll();
    catch (InterruptedException e1)
    return "Error while loading image";
    if (mediaTracker.isErrorAny())
    return "Error while loading image";
    if (logoFileName != null)
    logoWidth = theLogo.getWidth(this);
    logoHeight = theLogo.getHeight(this);
    imageWidth = theOriginalImage.getWidth(this);
    imageHeight = theOriginalImage.getHeight(this);
    theOriginalPixelArray = new int[imageWidth * imageHeight];
    PixelGrabber pixelGrabber = new PixelGrabber(theOriginalImage, 0, 0, imageWidth, imageHeight, theOriginalPixelArray, 0, imageWidth);
    try
    pixelGrabber.grabPixels();
    panelTitle = new Panel();
    canvasTitle = new drawCanvas();
    labelTitle = new Label();
    panelTitle.setLayout(new FlowLayout(1, 10, Yspc));
    add(panelTitle);
    panelTitle.setBackground(bgColor);
    panelTitle.add(canvasTitle);
    canvasTitle.setImage(theLogo);
    canvasTitle.setBounds(0, 0, logoWidth, logoHeight);
    labelTitle.setText(title);
    catch (InterruptedException e2)
    return "Internal Error, Try RELOAD !";
    if (title != null)
    panelTitle.add(labelTitle);
    labelTitle.setForeground(titleColor);
    labelTitle.setFont(new Font("Dialog", 1, 14));
    panelImages = new Panel();
    panelOriginalImage = new Panel();
    canvasOriginalImage = new drawCanvas();
    labelOriginalImage = new Label();
    panelFilteredImage = new Panel();
    canvasFilteredImage = new drawCanvas();
    labelFilteredImage = new Label();
    panelImages.setLayout(new FlowLayout(1, 10, Yspc));
    add(panelImages);
    panelImages.setBackground(bgColor);
    panelOriginalImage.setLayout(new BorderLayout(0, 2));
    panelImages.add(panelOriginalImage);
    panelOriginalImage.setBackground(Color.black);
    panelOriginalImage.add("Center", canvasOriginalImage);
    canvasOriginalImage.setImage(theOriginalImage);
    canvasOriginalImage.setBounds(0, 0, imageWidth, imageHeight);
    labelOriginalImage.setText(originalCaption);
    labelOriginalImage.setAlignment(1);
    panelOriginalImage.add("South", labelOriginalImage);
    labelOriginalImage.setBackground(Color.lightGray);
    labelOriginalImage.setForeground(Color.black);
    labelOriginalImage.setFont(new Font("SansSerif", 0, 10));
    panelFilteredImage.setLayout(new BorderLayout(0, 2));
    panelImages.add(panelFilteredImage);
    panelFilteredImage.setBackground(Color.black);
    panelFilteredImage.add("Center", canvasFilteredImage);
    theFilter = new FilterImplementation(paramsValue, theOriginalPixelArray, imageWidth, imageHeight);
    theFilter.computeFilter();
    theFilteredImage = createImage(new MemoryImageSource(theFilter.getFinalImageWidth(), theFilter.getFinalImageHeight(), theFilter.getFinalImageBuffer(), 0, theFilter.getFinalImageWidth()));
    canvasFilteredImage.setImage(theFilteredImage);
    canvasFilteredImage.setBounds(0, 0, theFilter.getFinalImageWidth(), theFilter.getFinalImageHeight());
    labelFilteredImage.setText(filteredCaption);
    labelFilteredImage.setAlignment(1);
    panelFilteredImage.add("South", labelFilteredImage);
    labelFilteredImage.setBackground(Color.lightGray);
    labelFilteredImage.setFont(new Font("SansSerif", 0, 10));
    scrollPaneParams = new ScrollPane(0);
    panelParams = new Panel();
    nbParameters = paramsName.size();
    int i = WinHeight - (33 + 7 * Yspc + logoHeight + imageHeight + 23);
    if (i < Yspc + 2 + 24)
    i = Yspc + 2 + 24;
    scrollPaneParams.setBounds(0, 0, WinWidth - 10, i);
    panelParams.setLayout(new GridLayout(nbParameters, 1, 5, Yspc / 2));
    scrollPaneParams.add(panelParams);
    panelParams.setBackground(sepColor);
    panelParameters = new Panel[nbParameters];
    labelParameters = new Label[nbParameters];
    textFieldParameters = new TextField[nbParameters];
    labelComments = new Label[nbParameters];
    for (int j = 0; j < nbParameters; j++)
    panelParameters[j] = new Panel();
    panelParameters[j].setLayout(new FlowLayout(0, 5, 1));
    panelParams.add(panelParameters[j]);
    panelParameters[j].setBackground(parColor);
    labelParameters[j] = new Label();
    labelParameters[j].setText((String)paramsName.elementAt(j));
    panelParameters[j].add(labelParameters[j]);
    labelParameters[j].setForeground(fgColor);
    labelParameters[j].setFont(new Font("Dialog", 1, 12));
    textFieldParameters[j] = new TextField(8);
    textFieldParameters[j].setText(paramsValue.elementAt(j).toString());
    panelParameters[j].add(textFieldParameters[j]);
    textFieldParameters[j].setBackground(fgColor);
    textFieldParameters[j].addKeyListener(this);
    labelComments[j] = new Label();
    labelComments[j].setText((String)paramsComment.elementAt(j));
    panelParameters[j].add(labelComments[j]);
    labelComments[j].setForeground(fgColor);
    add(scrollPaneParams);
    panelHelp = new Panel();
    labelHelp = new Label();
    panelHelp.setLayout(new FlowLayout(1, 5, 0));
    add(panelHelp);
    panelHelp.setBackground(bgColor);
    labelHelp.setText(" Change colour values and press enter ");
    labelHelp.setAlignment(1);
    panelHelp.add(labelHelp);
    labelHelp.setForeground(helpColor);
    return null;
    private String readParams(String string1)
    Object object1;
    String string2;
    if (string1 == null)
    return "Filename of filter's parameters needed";
    try
    URL uRL = new URL(getDocumentBase(), string1);
    URLConnection uRLConnection = uRL.openConnection();
    uRLConnection.setDoInput(true);
    uRLConnection.setUseCaches(false);
    BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(uRLConnection.getInputStream()));
    string2 = null;
    catch ()
    return object1.getMessage();
    catch ()
    return object1.getMessage();
    catch ()
    return object1.getMessage();
    if (bufferedReader != null)
    Object object2;
    try
    for (object2 = bufferedReader.readLine(); object2 != null && string2 == null; object2 = bufferedReader.readLine())
    string2 = extractFormat(object2);
    catch ()
    string2 = object2.getMessage();
    finally
    bufferedReader.close();
    if (string2 != null)
    return string2;
    else
    return null;
    private String extractFormat(String string1)
    if (string1.length() == 0)
    return null;
    int i = 0;
    int j = string1.indexOf(" ", i);
    if (j == -1)
    return "Bad format error (space missing)";
    String string2 = string1.substring(i, j);
    if (string2.equals("TITLE"))
    i = j;
    j = string1.indexOf(34, i);
    if (j == -1)
    return "Bad format (Double quote in TITLE missing)";
    i = j + 1;
    j = string1.indexOf(34, i);
    if (j == -1)
    return "Bad format (Double quote in TITLE missing)";
    title = string1.substring(i, j);
    return null;
    if (string2.equals("ORIGINALCAPTION"))
    i = j;
    j = string1.indexOf(34, i);
    if (j == -1)
    return "Bad format (Double quote in ORIGINALCAPTION missing)";
    i = j + 1;
    j = string1.indexOf(34, i);
    if (j == -1)
    return "Bad format (Double quote in ORIGINALCAPTION missing)";
    originalCaption = string1.substring(i, j);
    return null;
    if (string2.equals("FILTEREDCAPTION"))
    i = j;
    j = string1.indexOf(34, i);
    if (j == -1)
    return "Bad format (Double quote in FILTEREDCAPTION missing)";
    i = j + 1;
    j = string1.indexOf(34, i);
    if (j == -1)
    return "Bad format (Double quote in FILTEREDCAPTION missing)";
    filteredCaption = string1.substring(i, j);
    return null;
    if (string2.equals("LOGO"))
    i = j + 1;
    j = string1.length();
    logoFileName = string1.substring(i, j);
    return null;
    if (string2.equals("ORIGINALIMAGE"))
    i = j + 1;
    j = string1.length();
    originalImageFileName = string1.substring(i, j);
    return null;
    if (!string2.equals("PARAM"))
    return null;
    i = j;
    j = string1.indexOf(34, i);
    if (j == -1)
    return "Bad format in a PARAM line";
    i = j + 1;
    j = string1.indexOf(34, i);
    if (j == -1)
    return "Bad format in a PARAM line";
    paramsName.addElement(string1.substring(i, j));
    i = j + 2;
    j = string1.indexOf(32, i);
    if (j == -1)
    return "Bad format in a PARAM line";
    try
    paramsValue.addElement(new Double(string1.substring(i, j)));
    j = string1.indexOf(34, i);
    catch (NumberFormatException e)
    return "Bad format in a PARAM line";
    if (j == -1)
    return "Bad format (Double quote in PARAM comment missing)";
    i = j + 1;
    j = string1.indexOf(34, i);
    if (j == -1)
    return "Bad format (Double quote in PARAM comment missing)";
    paramsComment.addElement(string1.substring(i, j));
    return null;
    public EasyFilter()
    logoHeight = 33;
    Yspc = 5;

    Addition to my above submission
    To clarify, I'll offer the US$20 to the FIRST person who offers me a workable solution to the problem, not to everyone!!!
    JMGRAHAM

  • Suggestions required for transferring cost from GL account to a Project

    Hi,
    We have a requirement where we want to transfer cost captured in GL to PA in a specific project.
    For example:
    Incurred a misc cost 100 (outside project) and posted to GL (a/c 600010)
    Dr 60010, Cr 120010
    Later, realized this should be absorbed as a project cost (a/c 220010)
    We need some mechanism to capture cost in project ABC such that Dr 220010, Cr 600010
    If we use Web ADI to upload 'Costed' transactions: Dr 220010 Cr <NULL> (GL Transfer Status - Accepted)
    If we use Web ADI to upload 'Accounted' transaction: Dr 220010 Cr 600010 (GL Transfer Status - Received), but in this case the entry is no passed to GL, to nullify the a/c balance in 600010
    Appreciate suggestions from experts, to address the requirement.
    Ashutosh

    Hi
    You can reverse the transaction posted in GL.
    Then load the amount to Projects, as costed, not accounted EI.
    When distributing the cost in PA it will generate the right accounting, and you could interface it to GL.
    Dina

  • Suggestion Required for delivery address creation process

    Dear All,
    in my business process here i have suggested the creation of delivery address at the compnay code level. That is all the delivery address  are attached to the business partner of company code so that the delivery address across organization is visible to all the  users  and they can search and select any delivery address they want.
    please let me know if that has  got any performnce  issue or if that is the righ procatice .. considering we have thousands of delivery addresss to be created.
    cheers
    Iftekhar Alam

    Hello lrsapsd
    You first need to decide the business processes that you would (can) cover within SAP and which will be out of SAP.  Check out SAP for Real Estate Industry Solution, If you can not go that way, here is my proposal:
    1. Adv in News Papers: Outside SAP
    2. Selling of tender forms: Outside SAP
    3. Accept tenders with refundable deposits: Enter them as quotes, You may use AV-Quotation f.Contract or AG-Quotation. Bidders (Renters) will be sold-tos or Prospects and quote will be priced manually with the amount they bid to pay for rent. Deposits may be collected via a Debit Memo and posted to a Temporary  Holding Account.
    4. Agreement with highest Quoted: Reject all the Bids except the one with highest quote, Convert that quote into Rental Contract (MV) with Periodic Billing Plan. Billing Plan Type- 02; Date Determination Rule- 50.
    5. Collect 3 months rent in Advance: Can be managed with Billing Plan and/or down payment.
    6. collect the rent every month- Monthly billing of rent using Periodic Billing Plan
    7. At the end of the period refund the deposit- Credit Memo Req and Credit Memo, can be automated using contract end date and triggered by workflow with Status control  of contract if needed.
    Hope this helps.

  • Java mapping or UDF required for a requirement!!!

    I am doing idoc to file scenario and stuck with the mapping in the following case. I think an UDF or JAVA mapping will do the bill. can some one help me in this regard please.
    IDoc message type, IDoc basic type, IDoc extension
    PAYEXT.PEXR2002.ZEXR2002.
    <u><b>conditions:</b></u>
    IF E1IDB02 BA-FIIKWAER = CNY
          then MID(E1EDKA1 BE-NAME1,12,11)
    IF E1IDB02 BA-FIIKWAER <> CNY and LEN(E1EDKA1 BE-NAME1)<=35
         then MID(E1EDKA1 BE-STRAS,1,35)
    IF E1IDB02 BA-FIIKWAER <> CNY and LEN(E1EDKA1 BE-NAME1)>35
         then MID(E1EDKA1 BE-NAME1,36,35)
    This will be mapped to "Info Line 1" field in file.
    Thanks,
    Kiran

    Hi Mr.Kiran,
    here is the code
    pass the following fields to Context UDF
    1.E1IDB02-FIIKWAER
    2.E1EDKA1-NAME1
    3.E1EDKA1-STRAS
      for(int k = 0;k<FIIKWAER.length;k++)
         if(FIIKWEAR[k].equalsIgnoreCase("CNY"))
            result.addValue(NAME1[k].substring(11,12));
         else if(!(FIIKWEAR[k].equalsIgnoreCase("CNY"))&&(NAME1[k].length() <= 35))
           result.addValue(STRAS[k].substring(1,35));
         else if(!(FIIKWEAR[k].equalsIgnoreCase("CNY"))&&(NAME1[k].length() > 35))
          result.addValue(NAME1[k].substring(35,36));

  • Suggestion required for with or without BPM

    I have a requirement IDOC-XI-SOAP.
    I am using multimapping 1:N  one idoc gets spilt into say three wsdl, A B and C.
    My first requirement is if A fails then B and C should not be sent.
    If I use only EOIO without BPM then I will need to identify B and C for the corresponding A in the queue and remove it.
    That looks tedious as sometimes B and C may not be there for A and is there any way to identify the related messages?
    This can be achieved through BPM I believe.
    My second requirement is IDOC2 should not be processed before IDOC1.
    So If I used BPM will this be guaranteed? is BPM EOIO. (Even after transformation step?) If not then can it be configured?
    Thanks in advance.

    Hi all,
    Just bringing this topic up again as I have stuck at one place. and found not much help on SDN.
    I have designed this requirement using BPM.
    That is IDOC-BPM-SOAP.
    Within BPM I make a synchronous call to Webservice. if there is a fault exception thrown the BPM workflow stops at that point and no further process steps are carried out. This is working fine as per the requirement.
    But this does not get blocked up in the BPM queue. I want to stop the next IDOC from processing before handling the prviously errored IDOC scenario.
    Now I briefly understand that since BPM is doing a sync call these are not placed in the queue. Is there a way I can handle this so that these interfaces are placed in the BPM queue (which starts with XBQO$PE_WS.....).
    I have tried with exception branch, even this stops the BPM workflow but does not block the queue, or the workflow gets processed successfully.
    Is there anyway I can block the queue if the BPM synch call fails?

  • Is Logical System required for Solution Manager to work?

    Hi all
    We will be upgrading to SAP ERP in the near future and will have to use Solution Manager.
    We only have one company code and no business areas in our configuration. So that, we do not need ALE, consequently, we have not defined/used a logical system.
    Do we now need to define a logical system and assign our client to it, in order to use Solution Manager?
    tia
    Manuel

    Hi Manuel,
    in logical components the term "Logical System" is used to discribe the combination of system and client in an ABAP system. This does not mean you have to define logical systems in ALE customizing. That is not required as far as I know.
    Regards
    Andreas

  • Suggestion required for using row level security

    We have a scenario to provide row level security to some of the transaction tables like HR_EMPLOYEE which has a foreign key column DEPT_ID to HR_DEPARTMENTS table. This table may grow up to about 5 million records. There could be regular SELECT operations on this table and not so frequent UPDATES compared to the SELECT operation.
    We were looking at the following approaches...
    Table :
    HR_EMPLOYEE
         EMPNO
         DEPT_ID
         LAST_NAME
         FIRST_NAME
    1. Enable Oracle Label Security policy on this table and use static predicates.
    In this approach we add the OLS policy column (POLICY_COLUMN) and add predicate to access data.
    e.g. we will be giving access to global data by predicate like
    OR POLICY_COLUMN =CHAR_TO_LABEL('POLICY_NAME','C::DEPT1')
    where C::DEPT is the OLS Label
    2. Using VPD policy. We donot add any column, instead use the existing column DEPT_ID to provide row label security. In this approach the DEPT_ID is to be compared against an additional table and DOMINATES function will be used to verify the permission for the user to access the data.
    e.g. In this approach, the policy function is like
    'DOMINATES(char_to_label(''POLICY_NAME'', SA_SESSION.LABEL(''POLICY_NAME''))
    ,char_to_label(''POLICY_NAME'', POLICY_PKG.GET_LABEL_FROM_DEPTID(DEPT_ID))) = 1'
    The GET_LABEL_FROM_DEPTID function returns the OLS label for the corresponding department. This is compared with the user's session label and appropriate rows are given access.
    Can someone suggest on which of the above approaches is more performance effective considering the number of records and the additional OLS column added to the table.

    Hi there,
    would you be able to describe as detailed as possible what you want to achieve? From my first glimpse at your code, it seems as if you are using both OLS and VPD in a rather extraordinary way.
    Best, Peter

  • Suggestions required for automating and customising signatures.

    Hi,
    We are looking for a solution where by we take control of signatures away from users and have them administered centrally from the server and use AD attributes to customise the signatures. We are currently trailing software Exclaimer! which gives a wealth of
    signature options, however we have hit a roadblock for which we need advice.
    The large majority of our users work in groups, each group works out of a 'Shared Mailbox' and they are all given Send As permission so that they can send email from that mailbox. As an example they all send from a mailbox with the address
    [email protected]
    We now want to add their signatures from the server when the emails go out and in the process customise the signature with their attributes e.g. full name, title, contact details, company etc.  The issue we have run into is the because they are sending
    from a Group Mailbox the Exclaimer software has no way of identifying which user is sending emails and therefore cannot attribute that persons particular information. I have spoken to Exclaimer and they advise the only way around this is by having users 'Send
    on behalf of' which we do not want to do.
    Can anyone recommend a solution either within Exchange Server (we are using 2010) or Windows Server (we are using 2008 R2) or third-party software which would allow us to achieve the desired outcome.
    Thanks.

    You can use this PowerShell script (http://gallery.technet.microsoft.com/office/6f7eee4b-1f42-499e-ae59-1aceb26100de) to setup custom signatures based on AD information.
    I am not sure how this would behave for using a shared mailbox as the script sets the default signature in Outlook, but doesn't technically prevent the user from changing the signature configuration.  I have had the script run at logon so that all users
    receive the signature template which auto-populates based on AD attributes.  It checks for a custom registry value that you can comment out so it runs every logon to overwrite any changes users may make to their signatures after logging in.
    Might be something worth testing at least for what you are looking to do.

  • Fields required for Solution Manager

    Hi,
    Can anybody knows solution manager message start time and end time fields in any datasource.
    I required these fields.
    Thanks and Regards,
    SGK.

    Hi Manuel,
    in logical components the term "Logical System" is used to discribe the combination of system and client in an ABAP system. This does not mean you have to define logical systems in ALE customizing. That is not required as far as I know.
    Regards
    Andreas

  • E72: Suggestions required for Mobile Instant Messa...

    Hello,
    Can someone suggest good mobile Im client that supports XMPP service  for E72 ?
    Thanks
    venks

    I asked for suggestions ppl and i m still waiting

Maybe you are looking for

  • How can I downgrade to iOS 6 on my iPhone 5?

    I went for it and trusted that the download of the new ios7 was only about security improvements.  That's what said on my phone just before I went ahead and downloaded this new iOS.  IT *****!!  I can't read anything due to the lack of contrast betwe

  • Problem in Asset

    I am going to post one entry from F-90, which is related to my CWIP Asset. But while I am going to post the entry system gives me this error- **SYST: Abnormal termination (ANLB-LGJAN not equal to ANLC-GJAHR) Asset VALC0000019874790000** **Message no.

  • How to fetch records from LDB ADA...

    Hello Experts, How do I get the asset balances(acquisition values, etc) using LDB ADA in my custom report? I searched the forums and I did not find any suitable posts regarding my requirement. Hope you can help me guys. Thank you and take care!

  • I cannot enable save passwords!

    When I go into tools, options, security, the save password option is not highlighted and working. It has worked in the past, but is now not enabling me to activate the option.

  • Copying sales document type

    Hi I want to copy OR nad define my own as zor how do i do it