Regarding Thread Creation

Hello,
To create a thread in java there are two methods.
(1) by extending from thread class.
(2) by implementing runnable interface.
implementing runnable interface is the preferred method to create a thread because we still have the option to extend from any other class.
But does anybody know why java provides 2 methods for thread creation, why doesn't it provide only option 2 (i.e. by implementing runnable interface) when it is the preferred option.
Regards,
Sandy.

Though Runnable interface is preferred to create threads in Java,most programmers extends Thread class.As jschell would say, 'I am rather certain' that the opposite is true.
The reason behind of this is that you can have a clear logic of your code by using ThreadThat's not even true and it certainly isn't a reason to extend Thread rather than implement Runnable.
most of the system programming written in java used Thread class instead of Runnable interface .If you have some evidence on the point please produce it. The consensus of opinion on these forums has been the other way round for many years.

Similar Messages

  • Problem regarding the creation of Table using CSS.

    Hi ,
    Here I have a Problem regarding the creation of Table using CSS.
    In My Application i have a table with multiple rows(Rows are Dynamically added to the table).First i am setting the table with the following properties:
    width:900px;
    height : auto,
    Overflow : visible,
    Max-height: : 200px.
    If I use above properties,I'm getting a table with 5 or 6 rows(height upto 200px).After that i am getting the Vertical ScrollBar.
    The problem is when a table has many columns, Vertical and Horizontal Scrolls are coming at the time of setting the table. The table height is not Increasing dynamically.
    How can i use "height" property in CSS? (I want the table height to be increased when the columns are more.)
    Thanks & Regards
    Madhavi

    Hey humble user. Errr I'm trying to understand what ur trying to do. U want to create a section of a region destructively from an existing region right? If so select the option convert to new region (opt-comm-R or selecting it by right clicking). Check your audio bin to make sure. Whats the "merge" function? Are u refering to the glue tool?

  • Thread creation error: Not enough storage is available to process this command

    Two user in my company have this problem, I have already used the solution on the community but would come back after 2 to 3 weeks. They all have the message "Thread creation error: Not enough storage is available to process this command". I tried increase the virtual memory to 4Gb, update one client to the latest, reset IRPStackSize, delete temp folder.  one client is 7.5.XX with windows 7 and another is 6.20.0.104 with Windows XP,My machine is also 6.20 with windows 7 but I dont have this problem.   

    Version previous to 7.6 worked fine. After update I have got this message and mostly of Skype GUI turns black or vanishes. No possibility of making more than one call before crash, It is amazing that a thread started about two weeks ago has no technical answer, at least. What do I do with my credits and my appointments? Throw them away?

  • Thread creation error: Not enough storage space

    Hi,
      Recently (the past week or so), my desktop client for Skype has been crashing regularly. This is accompanied by large (over 1.2GB) amounts of memory usage. At semi-regular intervals (say every few hours), Skype will post an error with the text "Thread creation error: Not enough storage space..."
    I am using the latest build of Skype. I am not performing any Skype logging. This error is clearly an ongoing issue which has not been addressed, as prior threads have discussed this as well.

    Errors like this have been addressed and continue to be addressed.  Being that the errors are related to memory leakage of one form or the other, the problem can have several sources and be agitated by several programs.  I personally run the latest version on all my machines in a 24/7 capacity and have not run into the problem.  Some versions in the past created a similar error for me, yet the latest has not.  If you've already updated your IE's flash and that has not alleviated the problem, the only other solution is running an earlier release that doesn't crash for you or restart Skype more often.  I've had virtual video devices trigger this behavior by simply launching the video settings once.  The virtual device even when not in use continued to consume memory under Skype until it crashed.  So if you use any virtual audio/video components you may want to remove them to see if that changes anything.  Some people have also blocked ads when those were the source.
    http://community.skype.com/t5/Windows-desktop-clie​nt/low-storage/m-p/3974193/highlight/true#M344826

  • RoboCode crashes with SeedGenerator thread creation error?

    Hello everyone.
    I recently came across a game called RoboCode. It seems to be a tank battle simulator where you write the AI in Java.
    Unfortunately, it won't start on my Windows computers. I get this error:
    Exception in thread "SeedGenerator Thread" java.lang.InternalError: internal error: SeedGenerator thread creation error.
            at sun.security.provider.SeedGenerator$ThreadedSeedGenerator.run(Unknown Source)
            at java.lang.Thread.run(Unknown Source)Anyone got any idea why? I haven't the foggiest clue how to fix it or get around it - or even what it means.
    Thanks,
    -Kramy

    I'm awaiting a reply right now.
    But if Google couldn't turn up much, then it probably isn't a very common error? ;)

  • Regarding equipment creation..

    Hi Genius,
                  Now I want some details about Equipment creation in PM module, and what r all the table comes... please send some link to learn equipment creation.

    hi thanus,
                  This is vijay here, currently i m working with this epm module.
    for equipment creation you will use ie01 for change ie02 and for display ie03.
    some times you may be asked to create by regarding doccument no.
    then go to j3gi.
    well main fields are equipment no, recipient, sender, planning plant, maintenance plant, bussiness area, company code etc.
    there r lots of table.
    but usefull are
    equi,faglflaxa,j_3gbelp,j_3gbelk,iloa,ITOB,EQKTX,IMPTT,IMRG,CKBS,CKIS ETC
    REGARDS
    VIJAY DWIVEDI
    REWARDS IF USEFULL*
    FOR ANY FURTHER INFORMATION U CAN GET BACK TO ME

  • Regarding RFC creation

    hi all,
    after creation of RFC,we have to release the RFC or not.
    regards,
    subba reddy

    Hi Subbareddy,
    Yes you have to release the RFC after compeltion of creation.
    After creation of RFC first import it into XI system and then test it once.If everything is working fine then you have to create a request for transporting this RFC from Dev system to QUALITY system.After creatiing the transport request then you can release the RFC with that transport request.With out releasing the RFC you can't move from Dev system to Quality system.
    Plz close this post if you got the answer.
    Regards,
    Raju.

  • Regarding the creation of Webservice

    Hi,
    I have created a webservice and deployed sucessfully.
    I would like to modify it and I deleted the Virtual Interface and the webservice definition.
    After building the EJB module and EAR module, I cannot create the Webservice and the Virtual Interface.
    I need help in tracing the problem.
    Thanks and regards
    Vivek

    HI..
    Two roles are provided for creating Web services:
    ● Web Service Developer
    The Web service developer defines the Web service at design time. He or she knows the application logic as well as the resulting conditions for the communication type (for example, stateless/stateful), and the required security level. He or she defines these properties at an abstract level. Specific details, such as the transport binding or security concept to be used, are defined only later during the Web service configuration.
    ● Web Service Configurator
    The Web service configurator defines the behavior of the Web service at runtime. He or she knows the system landscape and the technical requirements of the application server where the Web service is to be called. On the basis of the abstract definition of the Web service, the configurator can decide during configuration which specific attributes should be assigned to the features defined at design time.
    Prerequisites
    To create or consume Web services, you need the authorizations associated with the role SAP_BC_WEBSERVICE_ADMIN. You must add the authorization S_ICF_ADMIN (authorization for the Internet Communication Framework) to your profile. You use the authorization S_SERVICE for starting external services.
    To create a Web service for a function module, function group, BAPI, or XI message interface with a predefined feature profile, use the Web Service Creation Wizard.
    To specify the features of the Web service yourself, follow the procedure described in Creating a Virtual Interface.
    You can also create Web services using the Web Service Creation Wizard, and then change the virtual interface and Web service definition in the Object Navigator (SE80), by choosing Enterprise Services ® Web Service Library.
    for more Information click on the following link
    http://help.sap.com/saphelp_nw04/helpdata/en/76/084e3ce0f9fe3fe10000000a114084/frameset.htm
    http://help.sap.com/saphelp_nw04/helpdata/en/76/084e3ce0f9fe3fe10000000a114084/frameset.htm
    Regards,
    Arun

  • Regarding spool creation with 0 pages...

    Hello,
    I am using following code for spool creation but it gets created with 0 pages. Even though I can see data the spool has 0 pages due to which it causes issues when I try to convert spool to pdf.
    DATA :
         lv_handle     TYPE sy-tabix,
         lv_spoolid    TYPE tsp01-rqident,
         lv_rc         TYPE c,
         lv_errmessage TYPE c,
          et_table     TYPE scarr OCCURS 0 WITH HEADER LINE.
    SELECT *
    FROM scarr
    INTO TABLE et_table.
    CALL FUNCTION 'RSPO_OPEN_SPOOLREQUEST'
      EXPORTING
        dest       = 'LP01'
      IMPORTING
        handle     = lv_handle
        spoolid    = lv_spoolid
        rc         = lv_rc
        errmessage = lv_errmessage.
    LOOP AT et_table.
      CALL FUNCTION 'RSPO_WRITE_SPOOLREQUEST'
        EXPORTING
          handle     = lv_handle
          text       = et_table-url
        IMPORTING
          rc         = lv_rc
          errmessage = lv_errmessage.
    ENDLOOP.
    CALL FUNCTION 'RSPO_CLOSE_SPOOLREQUEST'
      EXPORTING
        handle     = lv_handle
      IMPORTING
        rc         = lv_rc
        errmessage = lv_errmessage.
    DATA: v_pdf_bytecount TYPE i,
                   it_pdf          TYPE tlinetab.
    " convert spool number to PDF
    CALL FUNCTION 'CONVERT_ABAPSPOOLJOB_2_PDF'
      EXPORTING
        src_spoolid   = lv_spoolid
        no_dialog     = ' '
      IMPORTING
        pdf_bytecount = v_pdf_bytecount
      TABLES
        pdf           = it_pdf.
    Please help.
    Regards,
    Jainam.
    Edited by: Jainam Shah on Aug 26, 2009 5:53 PM
    Edited by: Jainam Shah on Aug 26, 2009 5:53 PM
    Edited by: Jainam Shah on Aug 26, 2009 6:07 PM

    Solved by my own.
    We need to use a FM as below to create page..
    CALL FUNCTION 'RSPO_PAGE_BREAK_SPOOLREQUEST'
      EXPORTING
        HANDLE                 = LV_HANDLE
      OPTIONS                =
      LENGTH                 =
    IMPORTING
      RC                     =
      ERRMESSAGE             =
    EXCEPTIONS
      HANDLE_NOT_VALID       = 1
      OTHERS                 = 2
    IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
             WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.

  • "Pause" Thread, thread creation & run performance

    Hello,
    I'm having an object executing tasks in response to events (I call it Executer)
    In "normal" execution mode, it's executing 2 types of tasks: tasks1 and tasks2.
    when a specific event occurs (pauseEvent), I want it to STOP executing tasks2 for a specific amount of time (in this example 100ms): I'm calling that a "pause"
    it will still be executing tasks1 in the meantime, and will resume executing tasks2 only after the pause has expired.
    to do so, when I receive a pauseEvent I create a new Thread (PauseThread) and start it.
    it itself calls the "setPause(boolean p)" method of Executer to set the "pause" flag to true
    then it waits for 100ms
    then it sets back the pause flag to false
    (Executer checks the pause flags before executing tasks2)
    class PauseThread extends Thread {
        private TaskExecuter  executer;
        private long                pauseTime;
        public PauseThread(Executer e, int t) {
            executer = e;
            pauseTime = t;
        public void run() {
            executer.setPause(true);
         try {
                sleep(pausetime);
            catch(InterruptedException e) {
                System.out.println("exception pause thread");
         executer.setPause(false);                
    }all is working fine.
    however, I'm trying to improve performances.
    the whole process of creating & starting the thread takes up to 50us, I want to reduce this as much as possible.
    obviously, I create & start a thread every time I want to do a pause, I'm thinking there MUST be a way to avoid this, and simply call the setTrue / Sleep / setFalse part of the thread instead.
    I was thinking about creating and starting the thread only once at the creation of my Executer, and calling the "pause()" method when needed:
    class PauseThread extends Thread {
        private TaskExecuter  executer;
        private long                pauseTime;
        public PauseThread(Executer e, int t) {
            executer = e;
            pauseTime = t;
        public void run() {
         while(true) {
        public void pause() {
            executer.setPause(true);
         try {
                sleep(pausetime);
            catch(InterruptedException e) {
                System.out.println("exception pause thread");
         executer.setPause(false);                
    }would that be correct ?
    I'm concerned with the performance hit of the "while(true)" (as I'm fighting for micro-seconds, even the slighliest useless cpu hit should be avoided)
    what if I had "sleep(1)" in my while loop ?
    I'm pretty sure there's a better way to do this, any idea ? maybe using wait / notify, however I get the feeling those methods are not designed for this use...
    any hint ?
    thanks !

    yes, I'm certainly reinventing the wheel ! but trying to understand it at the same time !
    what was your other suggestion ? Timer + TimerTask ? I've already implemented it and using it now ! as I said it's working good, 3x improvement ! simply trying to see if there's a way to avoid creating a TimerTask object at each run.
    coming back at the "piece of nonsense", what would this achieve:
    class PauseThread extends Thread {
        private TaskExecuter  executer;
        private long                pauseTime;
        private boolean           flag = false;
        public PauseThread(Executer e, int t) {
            executer = e;
            pauseTime = t;
        public void run() {
         while(true) {
                if(flag) {
                    flag = false;
                    sleep(pauseTime); // add try/catch
                    executer.setPause(false);
        public void startPause() {
            flag = true
    }then in my Executer, I create and start the PauseThread only once, and when I want to pause it, I simply do:
    setPause(true);
    pauseThread.startPause();in this case the sleep would execute in the run(), pause the "pause" thread, not the "executer" thread, no ?
    I will read about the concurrency classes...

  • Regarding DC creation(DTR)

    Hi all,
    i am trying to create DC in the existing serevr track with the present DTR. But at the time of creation i am geting errors. They are;-
    java.lang.reflect.InvocationTargetException
    Create DC failed:
    1) com.sap.tc.devconf.SyncException
    2)Jul 21, 2008 11:51:31 AM com.sap.ide.eclipse.component.core.DCController [Threadmain,5,main] ERROR: Create DC failed: Unable to sync file or folder.: Sync for folder C:\Documents and Settings\JB67375\.dtc\1\SCs\sap.com\SAP_ESS\_comp\ failed: Communication error cause: Read timed out
    Jul 21, 2008 11:51:25 AM com.tssap.dtr.client.lib.exceptions.ClientLibraryException [Threadmain,5,main] ERROR:
    VFS version: 7.00 645_VAL_REL 0010 (2005-09-17 17:36:45 CEST) com.tssap.dtr.client.lib.vfs.VfsException: Sync for folder C:\Documents and Settings\JB67375\.dtc\1\SCs\sap.com\SAP_ESS\_comp\ failed: Communication error cause: Read timed out
    Please help me out.
    Regards,
    Deepak

    Hi Deepak,
    Since the error is showing Read Timeout Error, can you just ping the DTR server from NWDS itself and check if the ping is successful or check the DTR URL..
    Thanks
    Namrata

  • Dynamic thread creation in Forums

    Dear All,
    Is it possible to create/start a new thread in Forums dynamically, based on some eventing ?
    Like, I have an jsp containing a check-box and a text-box, if this jsp is submitted with the check-box checked then a new thread should be automatically created in Forums section of the portal with the Subject as mentioned in text-box, without any manual intervention. Can it be achieved ?
    Regards,
    SM

    Again we have the same problem here. When you post it redirects you to
    /forums/thread.jspa?threadID=.....
    and since you don't have /irj in the url it automatically redirects you to :
    /irj/portal/forums?ForumsTarget=thread.jspa?threadID=...
    You have to create an "Forum Iview" with quick link "forums" as desribed in forum installation guide.
    1. In the portal, choose Content Administration -> Portal Content.
    2. In the Portal Content Studio locate the target folder for your new iView.
    3. In the context menu of the target folder, choose New -> iView.
    4. Select the custom iView template for forums.
    5. Enter the required values and then choose Finish.
    6. Select Open the object for editing.
    7. In the property editor for each of the forums iViews, perform the following steps:
    1. Select the property category Forums Configuration.
    2. For the property View on Forums, select Forums.
    3. Select the property category Navigation.
    4. For the property Quick link, enter forums.

  • Callbacks without excessive thread creation and memory leaks?

    Hi JNI experts,
    I haven't done any serious JNI programming in a couple years and I'm currently stuck with a tricky JNI problem:
    My JNI code is connected to a system driver and needs to do frequent callbacks into Java code. The standard way of doing this involves calling AttachCurrentThread and DetachCurrentThread before/after the callback to Java code. However, I noticed that AttachCurrentThread creates a new java.lang.Thread each time it is invoked. Let's just say that the callback is invoked from JNI very freqently, and creating a new Thread each time that happens is not acceptable behavior for my application. Among other things, it prevents me from using the Eclipse debugger because the large number of threads being created and destroyed effectively locks up Eclipse's debugger UI. Also, it creates a CPU load that is way higher than it should be for a light-weight operation.
    So, I deviated from the standard Attach/DetachCurrentThread pattern and moved the DetachCurrentThread to code that is only called when the native JNI service is terminated. As that effectively renders repeated AttachCurrentThread calls a no-op, the problem of excessive creation and destruction of threads went away, but instead I had a memory leak on my hands now. The JNI code needs to create some Java objects because it's easier to create those objects right away rather than passing a bunch of primitives to Java and assembling them into objects there. When I moved the DetachCurrentThread, those newly created objects were no longer garbage-collected even after the Java code had released all references.
    When you print the stack trace of the Java callback method there is always only one frame on the stack (since it is being invoked directly from JNI). However, I suspect that older stack frames from previous invocations keep hanging around somewhere else in memory if DetachCurrentThread is not called. In other words, moving DetachCurrentThread out of the callback is an even worse option. I tried using PopLocalFrame to get rid of left over stack frames, but that didn't seem to work.
    So, my question is: is there a way to make (natively initiated) callbacks from JNI to Java without memory leaks and without creating a new thread each time? Would it work if I created my own native thread that runs some sort of dispatch loop? What other options are there?
    Thanks for any ideas!

    Thanks for the quick reply, ejp! :-)
    Your comments were very helpful; let me clarify a few things:
    I don't know where you get this 'standard Attach/DetachCurrentThread pattern', but if the native callbacks always happen on the same native thread, you only need to attach it once when you get the first callback, and detach it when you get the last, if you can tell. ;-)Yes, the callback is always coming from the same native thread, but, unfortunately, I cannot tell when I get the last callback, and essentially the native service keeps running as long as the VM is running. When I say "standard pattern" I'm referring to the fact that pretty much every book, tutorial, or web site that talks about JNI callbacks shows code snippets where AttachCurrentThread is called, then the callback, and then DetachCurrentThread.
    The JNI code needs to create some Java objects because it's easier to create those objects right away rather than passing a bunch of primitives to Java and assembling them into objects there.Is it really? Are you sure?I'm pretty sure in this case, though your point is well taken. The native API that calls my JNI code produces packets of that contain about 15 pieces of information of different types (ints, longs, doubles). Several packets may arrive together in a single group. Handling the data on the Java side requires a Java callback method with 15 parameters for a single packet, and it's hard to reconstruct which packets belong to one group at that point. Creating corresponding Java objects in JNI and passing them inside an array to the callback function indeed turned out to be easier.
    I don't think just 'moving' the DetachCurrentThread is correct. You need to attach the thread that is doing the callbacks, as often as necessary but no oftener, and detach it when you can.I think I found the solution: my native code is starting a separate dispatcher thread that, as you suggested, attaches itself only once and then enters a dispatcher loop. The low-level call back function notifies that thread of new data via the standard Pthread API. The detach happens in JNI_OnUnload. This works without creating a new thread each time and garbage-collects the created objects properly. As the dispatcher method essentially never returns I also had to insert some DeleteLocalRef calls, because otherwise the local references prevented garbage collection.
    So, for now, it looks like I'm good to go. Thanks again for the reply!

  • Problem regarding the creation of sales order using bapi.

    Hai all,
    I am creating sales order using bapi but i am, get following error messages :
    TYPE ID  NUMBER MESSAGE
    E       VP   112       Please enter sold-to party or ship-to party
    E       V4   219       Sales document  was not changed
    I have entered all the parameters.
    my program is as follows :
    *& Report  ZSD_SALES_ORDER
    REPORT  ZSD_SALES_ORDER.
        Tables
    *table definitions
    TABLES:vbak,      "Sales Document: Header Data
            knvv,     "Customer Master Sales Data
            mara,     "General Material Data
            t001l,    "Plants/Branches
            mvke,     "Sales Data for Material
            vbap,     "Sales Document: Item Data
            konv.     "Conditions (Transaction Data)
        Types
    *type for upload data
    TYPES :BEGIN OF ty_upload,
           matnr(20) TYPE c,                  " Old material number
           quantity(20) TYPE c,               " Cumulative order quantity in sales units
    VALUE TYPE       BAPIKWERT1,
          value(20) TYPE c,                  " Condition value
                 value TYPE konv-kwert,                  " Condition value
    END OF ty_upload.
    *type for final output table
    TYPES :BEGIN OF ty_main,
               bismt  TYPE mara-bismt,    "Old material number
               matnr  TYPE vbap-matnr,    "Material Number
               kunnr  TYPE vbak-kunnr,    "customer number
               auart  TYPE vbak-auart,    "Sales Document Type
               vkorg  TYPE vbak-vkorg,    "Sales Organization
               vtweg  TYPE vbak-vtweg,    "Distribution Channel
               spart  TYPE vbak-spart,    "Division
               vbeln  TYPE vbak-vbeln,    "Sales document
               werks  TYPE marc-werks,    " Plant
               lgort  TYPE mard-lgort,    "Storage Location
               posnr  TYPE vbap-posnr,    "Sales Document Item
               parvw  TYPE vbpa-parvw,    "Partner function
               kwmeng TYPE vbap-kwmeng,   "Cumulative order quantity in sales units
               kschl  TYPE konv-kschl,    "Condition type
              kwert  TYPE konv-kwert,    "Condition value
    KWERT TYPE       BAPIKWERT1,
              kwert(20)  TYPE c,    "Condition value
               waers  TYPE konv-waers,    "Currency
         END OF ty_main.
    *type for old material number
    TYPES: BEGIN OF ty_matnr,
           matnr TYPE mara-matnr,
           bismt TYPE mara-bismt,
           END OF ty_matnr.
    *type for order number
    TYPES :BEGIN OF ty_output,
           vbeln  TYPE vbak-vbeln,       "Sales Document
         END OF ty_output.
        Constants                Begin with C_                           *
    CONSTANTS:
    c_zpmu(4) TYPE c VALUE 'ZPMU',
    c_zpmm(4) TYPE c VALUE 'ZPMM'.
    DATA: c_ch(1) TYPE c VALUE 'X'.
        Data                     Begin with W_                           *
    *global data for validations
    DATA: w_count TYPE i,
          w_vkorg TYPE vbak-vkorg,
          w_vtweg TYPE vbak-vtweg,
          w_spart TYPE vbak-spart,
          w_werks TYPE t001l-werks,
          w_check TYPE c,
          w_itemno TYPE posnr_va,
         W_COND TYPE C.
          w_cond(3) TYPE c.
        Internal tables          Begin with IT_                          *
    *internal table definitions
    DATA : it_upload TYPE STANDARD TABLE OF ty_upload ,
           wa_upload TYPE ty_upload.
    DATA : it_main TYPE STANDARD TABLE OF ty_main,
           wa_main TYPE ty_main.
    DATA: it_matnr TYPE STANDARD TABLE OF ty_matnr,
          wa_matnr TYPE ty_matnr.
    DATA : it_output TYPE STANDARD TABLE OF ty_output.
    Internal table for BAPI.
    DATA: it_bapisdhd1  TYPE STANDARD TABLE OF bapisdhd1,        "Sales and Distribution Document Header
          wa_bapisdhd1 TYPE bapisdhd1.
    DATA: it_bapisditm  TYPE STANDARD TABLE OF bapisditm ,       "Sales and Distribution Document Item
          wa_bapisditm TYPE bapisditm.
    DATA: it_bapiparnr  TYPE STANDARD TABLE OF bapiparnr,        "SD Document Partner: WWW
          wa_bapiparnr TYPE bapiparnr.
    DATA: it_bapischdl  TYPE STANDARD TABLE OF bapischdl,       "Schedule Lines
          wa_bapischdl TYPE bapischdl.
    DATA: it_bapicond TYPE STANDARD TABLE OF bapicond,       "Communication Fields for Maintaining Conditions in the Order
          wa_bapicond TYPE bapicond.
    DATA: it_bapiret2 TYPE STANDARD TABLE OF bapiret2,        "Return Parameter
          wa_bapiret2 TYPE bapiret2.
          Parameters              Begin with PR_                        *
    *selection screen definition
    SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME .
    PARAMETERS: pr_vkorg TYPE vbak-vkorg OBLIGATORY,
                pr_vtweg TYPE vbak-vtweg  OBLIGATORY,
                pr_spart TYPE vbak-spart  OBLIGATORY,
                pr_kunnr TYPE kna1-kunnr  OBLIGATORY,
                pr_werks TYPE marc-werks  OBLIGATORY,
                pr_lgort TYPE mard-lgort  OBLIGATORY.
    PARAMETERS: pr_auart TYPE vbak-auart OBLIGATORY,
               PR_AUGRU TYPE VBAK-AUGRU OBLIGATORY.
                            pr_augru TYPE vbak-augru.
    SELECTION-SCREEN END OF BLOCK blk1.
    SELECTION-SCREEN BEGIN OF BLOCK blk2 WITH FRAME.
    PARAMETERS : pr_file TYPE ibipparms-path OBLIGATORY.
    SELECTION-SCREEN END OF BLOCK blk2.
          At selection-screen                                           *
    AT SELECTION-SCREEN.
      PERFORM f006_validate_vkorg.
      PERFORM f007_validate_vtweg.
      PERFORM f008_validate_spart.
      PERFORM f009_validate_kunnr.
      PERFORM f010_validate_werks.
      PERFORM f011_validate_lgort.
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR pr_file.
    *for f4 help----
      PERFORM f003_f4_help.
          S T A R T   O F   S E L E C T I O N                           *
    START-OF-SELECTION.
    *for material ,quantity and value upload
      PERFORM f001_upload_file.
    *get data
      PERFORM  f003_get_data.
    *for check the data
      PERFORM f002_check_data .
      PERFORM f004_process.
    *for posting
      PERFORM f005_posting.
    END-OF-SELECTION.
          E N D       O F   S E L E C T I O N                           *
    *&      Form  f001_upload_file
          upload file
    FORM f001_upload_file .
      DATA : lw_fname TYPE string.
      CLEAR lw_fname.
      lw_fname = pr_file.
      REFRESH it_upload.
      CALL FUNCTION 'GUI_UPLOAD'
        EXPORTING
          filename                = lw_fname
          filetype                = 'ASC'
          has_field_separator     = c_ch
        TABLES
          data_tab                = it_upload
        EXCEPTIONS
          file_open_error         = 1
          file_read_error         = 2
          no_batch                = 3
          gui_refuse_filetransfer = 4
          invalid_type            = 5
          no_authority            = 6
          unknown_error           = 7
          bad_data_format         = 8
          header_not_allowed      = 9
          separator_not_allowed   = 10
          header_too_long         = 11
          unknown_dp_error        = 12
          access_denied           = 13
          dp_out_of_memory        = 14
          disk_full               = 15
          dp_timeout              = 16
          OTHERS                  = 17.
      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 it_upload INTO wa_upload.
       wa_upload-value = ( wa_upload-value ) / 10.
       MODIFY it_upload FROM wa_upload.
      ENDLOOP.
    ENDFORM.                    "F001_UPLOAD_FILE
    *&      Form  f003_f4_help
          f4 help
    FORM f003_f4_help .
      CALL FUNCTION 'F4_FILENAME'
        EXPORTING
          program_name  = syst-cprog
          dynpro_number = syst-dynnr
          field_name    = ' '
        IMPORTING
          file_name     = pr_file.
    ENDFORM.                    " f003_f4_help
    *&      Form  check_data
          text
    FORM f002_check_data .
      DATA: lw_lines TYPE i.
      DESCRIBE TABLE it_main LINES lw_lines.
      IF lw_lines LE 0.
        RETURN.
      ENDIF.
      SELECT a~matnr
             a~bismt FROM mara AS a INNER JOIN mvke AS b
                   ON amatnr = bmatnr
                   INTO CORRESPONDING FIELDS OF TABLE it_matnr
                   FOR ALL ENTRIES IN it_main
                   WHERE a~bismt = it_main-bismt.
      IF sy-subrc = 0.
        LOOP AT it_main INTO wa_main.
          CLEAR : wa_matnr.
          READ TABLE it_matnr INTO wa_matnr WITH KEY bismt = wa_main-bismt.
          IF sy-subrc = 0.
            MOVE: wa_matnr-matnr TO wa_main-matnr.
          ENDIF.
          MODIFY it_main FROM wa_main TRANSPORTING matnr WHERE bismt = wa_main-bismt.
        ENDLOOP.
      ELSE.
       MESSAGE e000(zmsd) WITH  text-001.
      ENDIF.
    ENDFORM.                    "CHECK_DATA
    *&      Form  F009_validate_vkorg
          text
    FORM f006_validate_vkorg .
      CLEAR w_vkorg.
      SELECT SINGLE vkorg
          INTO w_vkorg FROM tvko
          WHERE vkorg EQ pr_vkorg.
      IF sy-subrc <> 0.
        MESSAGE e000(zmsd) WITH text-012 pr_vkorg.
      ENDIF.
    ENDFORM.                    " F009_validate_vkorg
    *&      Form  f007_validate_vtweg
          text
    FORM f007_validate_vtweg .
      CLEAR:w_vtweg.
      SELECT SINGLE vtweg
           INTO w_vtweg FROM tvtw
           WHERE vtweg EQ pr_vtweg.
      IF sy-subrc <> 0.
        MESSAGE e089(zmsd).
      ENDIF.
    ENDFORM.                    " f007_validate_vtweg
    *&      Form  f008_validate_spart
          text
    FORM f008_validate_spart .
      CLEAR:w_spart.
      SELECT SINGLE spart
            INTO w_spart FROM tspa
            WHERE spart EQ pr_spart.
      IF sy-subrc <> 0.
        MESSAGE e087(zmsd).
      ENDIF.
    ENDFORM.                    " f008_validate_spart
    *&      Form  F010_validate_kunnr
          text
    FORM f009_validate_kunnr .
      DATA: l_kunnr TYPE kunnr.
      CLEAR: w_vkorg, w_vtweg,w_spart.
      SELECT  SINGLE  kunnr FROM  knvv
             INTO l_kunnr
             WHERE  kunnr  = pr_kunnr
             AND    vkorg  = pr_vkorg
             AND    vtweg  = pr_vtweg
             AND    spart  = pr_spart.
      IF sy-subrc <> 0.
       MESSAGE e000(zmsd) WITH text-010 pr_kunnr text-011 pr_vkorg  .
      ENDIF.
    ENDFORM.                    " F010_validate_kunnr
    *&      Form  f010_validate_werks
          text
    FORM f010_validate_werks .
      CLEAR:w_werks.
      SELECT SINGLE werks
            INTO w_werks FROM t001w
            WHERE werks EQ pr_werks.
      IF sy-subrc <> 0.
        MESSAGE e088(zmsd).
      ENDIF.
    ENDFORM.                    " f010_validate_werks
    *&      Form  F011_validate_lgort
          text
    FORM f011_validate_lgort .
      CLEAR:w_werks .
      SELECT   SINGLE werks  FROM  t001l
             INTO w_werks
             WHERE  werks  = pr_werks
             AND    lgort  = pr_lgort.
      IF sy-subrc <> 0.
        MESSAGE e000(zmsd) WITH text-007 pr_lgort text-008 pr_werks .
      ENDIF.
    ENDFORM.                    " F011_validate_lgort
    *&      Form  f003_get_data
          text
    FORM f003_get_data .
      CLEAR wa_main.
      REFRESH it_main.
      LOOP AT it_upload INTO wa_upload.
        CLEAR : wa_main.
        MOVE: wa_upload-matnr     TO  wa_main-bismt,
              wa_upload-quantity  TO  wa_main-kwmeng,
              wa_upload-value     TO  wa_main-kwert,
              pr_vkorg            TO  wa_main-vkorg,
              pr_vtweg            TO  wa_main-vtweg,
              pr_spart            TO  wa_main-spart,
              pr_kunnr            TO  wa_main-kunnr,
              pr_werks            TO  wa_main-werks,
              pr_lgort            TO  wa_main-lgort.
        APPEND wa_main TO it_main.
      ENDLOOP.
    ENDFORM.                    " f003_get_data
    *&      Form  f004_process
          text
    FORM f004_process .
    CLEAR w_check.
    LOOP AT it_main INTO wa_main.
       IF wa_main-matnr = ''.
         WRITE:/ text-006,
                     wa_main-bismt.
         w_check = 1.
       ENDIF.
       IF wa_main-kwmeng = 0.
         WRITE:/ text-005,
                 wa_main-bismt.
         w_check = 1.
       ENDIF.
       IF    pr_auart <> 'ZM01'.
         IF wa_main-kwert IS INITIAL.
           WRITE:/ text-004,
                    wa_main-bismt.
           w_check = 1.
         ENDIF.
       ENDIF.
    ENDLOOP.
    ENDFORM.                    " f004_process
    *&      Form  f005_posting
          text
    FORM f005_posting .
      CLEAR: w_itemno,
             w_cond.
      w_itemno = 10.
      w_cond = 1.
    IF w_check = '' OR w_check = 1.
      wa_bapisdhd1-doc_type = pr_auart.
      wa_bapisdhd1-ord_reason = pr_augru.
      LOOP AT it_main INTO wa_main.
        IF w_cond = 1.
          CLEAR: it_bapiret2,
                 it_bapisditm,
                 it_bapiparnr,
                 it_bapischdl,
                 it_bapicond.
          REFRESH:it_bapiret2,
                  it_bapisditm,
                  it_bapiparnr,
                  it_bapischdl,
                  it_bapicond.
          MOVE: wa_main-vkorg TO wa_bapisdhd1-sales_org,
                wa_main-vtweg TO wa_bapisdhd1-distr_chan,
                wa_main-spart TO wa_bapisdhd1-division.
          wa_bapisdhd1-wbs_eleM = 'Y561.1'.
          CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
            EXPORTING
              INPUT         = pr_kunnr
           IMPORTING
             OUTPUT        = pr_kunnr.
          wa_bapisdhd1-PURCH_NO_S = pr_kunnr.
          wa_bapisdhd1-PURCH_NO_C = pr_kunnr.
        ENDIF.
        MOVE: w_itemno TO wa_bapisditm-itm_number,
               wa_main-matnr TO wa_bapisditm-material,
              wa_main-BISMT TO wa_bapisditm-material,
              wa_main-werks TO wa_bapisditm-plant,
              wa_main-lgort TO wa_bapisditm-store_loc.
                           wa_bapisditm-target_qty = '10'.
        wa_bapisditm-PURCH_NO_S = pr_kunnr.
        wa_bapisditm-PURCH_NO_C = pr_kunnr.
        APPEND wa_bapisditm TO it_bapisditm.
        IF w_cond = 1.
          wa_bapiparnr-partn_numb = pr_kunnr.
          wa_bapiparnr-itm_number = 10.
            wa_bapiparnr-partn_role = 'SP'.
          APPEND wa_bapiparnr TO it_bapiparnr.
          wa_bapiparnr-partn_role = 'AG'.
          APPEND wa_bapiparnr TO it_bapiparnr.
          CLEAR wa_bapiparnr-partn_role.
                   wa_bapiparnr-partn_numb = pr_kunnr.
          wa_bapiparnr-partn_role = 'RE'.
          APPEND wa_bapiparnr TO it_bapiparnr.
          CLEAR wa_bapiparnr-partn_role.
                   wa_bapiparnr-partn_numb = pr_kunnr.
          wa_bapiparnr-partn_role = 'RG'.
          APPEND wa_bapiparnr TO it_bapiparnr.
          CLEAR wa_bapiparnr-partn_role.
                   wa_bapiparnr-partn_numb = pr_kunnr.
          wa_bapiparnr-partn_role = 'WE'.
          APPEND wa_bapiparnr TO it_bapiparnr.
        ENDIF.
        wa_bapischdl-itm_number = w_itemno.
        wa_bapischdl-req_qty    = wa_main-kwmeng.
         wa_bapischdl-PURCH_NO_S = pr_kunnr.
        APPEND wa_bapischdl TO it_bapischdl.
        wa_bapicond-itm_number = w_itemno.
        wa_bapicond-cond_type  = 'ZECL'.
         IF    ( wa_bapisdhd1-doc_type = 'ZPMU' ) OR ( wa_bapisdhd1-doc_type = 'ZPMM' ).
           wa_bapicond-cond_type  = 'ZVAL'.
         ELSE.
           wa_bapicond-cond_type  = 'ZMRP'.       "+PK12122006
         ENDIF.
        wa_bapicond-cond_value = wa_main-kwert.
        APPEND wa_bapicond TO it_bapicond.
        w_itemno = w_itemno + 10.
        w_cond   = w_cond + 1.
      ENDLOOP.
      data : SALESDOCUMENTIN like BAPIVBELN-VBELN.
      CALL FUNCTION 'BAPI_SALESORDER_CREATEFROMDAT2'
        EXPORTING
          order_header_in     = wa_bapisdhd1
        IMPORTING
          salesdocument       = SALESDOCUMENTIN
        TABLES
          return              = it_bapiret2
          order_items_in      = it_bapisditm
          order_partners      = it_bapiparnr
          order_schedules_in  = it_bapischdl
          order_conditions_in = it_bapicond.
      CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
        EXPORTING
          wait = c_ch.
    ENDIF.
      LOOP AT it_bapiret2 INTO wa_bapiret2.
        DATA : w_err(100) TYPE c,
        w_matnr TYPE matnr.
        IF wa_bapiret2-type = 'E' AND wa_bapiret2-id = 'V1' AND wa_bapiret2-number = 392.
          UNPACK wa_bapiret2-message_v1 TO w_matnr.
          READ TABLE it_matnr INTO wa_matnr WITH KEY matnr = w_matnr.
          IF sy-subrc EQ 0.
            CONCATENATE text-013 wa_matnr-bismt INTO w_err SEPARATED BY space.
            MESSAGE w_err TYPE 'S'.
          ENDIF.
        ENDIF.
        IF WA_BAPIRET2-TYPE = 'S'.  " Comment
          WRITE: 40 TEXT-009, WA_BAPIRET2-MESSAGE_V2+0(10).
        ENDIF.
      ENDLOOP.
    ENDFORM.                    " f005_posting
    I have given all the necessary parameters. it is telling that error is in parameter
    sales_header_in.
    I have checked it.
    i have assigned purch_no_s and purch_no_c of the structure BAPISDHD1(ORDER_HEADER_IN)
    in the bapi with customer number.
    and also i have assigned the partnumber of the structure BAPIPARNR ORDER_PARTNERS
    in the bapi with customer number.
    but still , it is diplaying the error message, please enter the sold to or ship to party number.
    how to resolve this error.
    this is urgent requirement.
    points will be awarded.
    thanking u in advance,
    a.srinivas.

    Hi,
    Did u have a look at the standard programs which make use of BAPI_SALESORDER_CREATEFROMDAT1
    Heres a list...
    LWSSOU08                     
    MV45WF0S                     
    MWWMJF21_BAPI_SALESORDER_CREAT
    RBUS2032                    
    Regards,
    Tanveer.
    <b>Please mark helpful answers</b>

  • Regarding MIGO Creation

    Hello,
    While creating MIGO in Material Management, I'm getting this error " Account Determination for entry OPB0 (OPerational Chart of Accounts) BSX BPGC (Group Chart of Accounts) ____3000 not possible."
    Please help me regarding this.
    Thanks rin Advance,

    Hi,
    Please send the full error message along with the message number.
    Regds
    Aloysius

Maybe you are looking for

  • My episodes are not showing up. What can I do?

    1. I just got my podcast accepted in itunes. 2. All my blog post was showing up in my podcast becuase I was using http://painting-with-a-palette-knife.com/feed 3. I change it into http://painting-with-a-palette-knife.com/category/podcast/feed so it w

  • 10g to 11g  import problem NETWORK_ACLS

    (I didn't mean to cross post this I just put it in the wrong place at first. it belongs here.. sorry 'bout that.) I'm uprading from 10 to 11g and have a problem importing. The table I'm trying to import has a trigger in it that uses the UTL_SMTP pack

  • IPad/iPhone 4 say they are syncing to iTunes but looks frozen

    I keep trying to sync up my iPad to my PC.  I've never had a problem before.  Says it is syncing up but sits for hours and nothing happens.  I have removed iTunes from my PC and downloaded it again, but the same situation happens.  I have the same pr

  • DrillDown in Pivot Table - answer

    How can I have a column title drill down in a pivot table? When you create a regular table the user can do a Drill down by clicking the column title or a particular element.. when he click over the column title he get a drill down for all the element

  • Trip - Daily Allowance calculation

    Hello, How can Daily Allowance be calcuted on the number of hours the employee that has gone for a trip. Trip not exceeding 6 hours - NIL Trip exceeding 6 hrs but less than 12 hours - 75 % Trip exceeding 12 hours - 100 % Thanks in advance BLITZZ Edit