'An unimplemented or obsolete function was called'

I've just downloaded and installed Adobe Reader Version 9.3.0 for Mac (file size is 210.1MB).  However, when I try to download the 9.3.1 update I receive the message above.
Is my installation defective?
I downloaded Adobe Reader because I need to print out a file which has a '.do' extension.  (The file was downloaded from my health insurer's website and is needed for income tax purposes - the file name is a bit strange to me - 'displayPdf.do' and the site states it requires Adobe Reader to open).  I can open the document but I can't copy or Print it.
When I try to print the document I get a message 'The document could not be printed' and then a second message stating 'There were no pages selected to print'.  This is despite the fact that I go to Edit and Select All (and the pages show as being selected) before I try to print!
Can anyone tell me what I am doing incorrectly, PLEASE!

I also receive this error.
Adobe Reader X 11.0 on Mac OS X 10.7.5
Additionally. I'm unable to print any documents. The print dialog simply does not appear when I select File --> Print.
Any advice / fixes appreciated.

Similar Messages

  • Saving via Reader-Enabled plugins - An unimplemented or obsolete function was called

    Hello,
    I have recently Reader-Enabled my plugin, and am getting an issue using PDDocSave; getting "An unimplemented or obsolete function was called".
    Testing in X and XI has the same response.
    Reading Re: Acrobat Reader X and PDDocSave it seems that it is a bug in X, but I would have assumed something like this would be fixed by XI.
    The below code has it saving the file where it is, but I am also calling the function with the PDSaveCopy flag to a different location and get the same result.
    AVDoc avDoc = AVAppGetActiveDoc();
    PDDoc pdDoc = AVDocGetPDDoc(avDoc);
    ASFile asFile = PDDocGetFile(pdDoc);
    ASFileSys asFileSys = ASFileGetFileSys(asFile);
    ASPathName asPath = ASFileAcquirePathName(asFile);
    PDDocSave(pdDoc, PDSaveFull | PDSaveLinearized | PDSaveCollectGarbage, asPath, asFileSys, NULL, NULL);
    I thought perhaps the save flags may have been the issue, but eliminating one-by-one had no change.
    I don’t have the /READER_PLUGIN conditional on, if I do I cannot compile at all - Re: How can I save current document in my Reader plugin? 
    Thanks for your help. Thought I'd ask here before putting in a support request.

    One thing I notice in the docs for PDDocSave:
    IMPLEMENTATION LIMIT: the current implementation can
    only save a file to the same fileSys for the doc's current backing
    file, thus fileSys MUST BE NULL, otherwise the error XXX is raised.
    This is also reiterated in the other headers:
    @param fileSys The file system. If it is NULL, uses the fileSys
    of the document's current backing file. Files can only be
    saved to the same file system. fileSys must be either NULL
    or the default file system obtained with ASGetDefaultFileSys(),
    otherwise an error is raised.

  • Unimplemented or obsolete function

    I just purchased and installed Acrobat 9 (9.3.1) on an XP machine.  When I open a pdf where someone has added lines, note boxes, etc., I get this problematic "An unimplemented or obsolete function was called" error.  I click OK, but it just pops up again.  The only thing I can do is close the program with Task Manager.  The guy from telephone support said it was a scripting problem (like it was my fault) and I should contact their developer support.  I never had this problem with Acrobat 5 or with Reader 8, which I had to uninstall to load 9.
    Nothing like spending $250 on a new program that works worse than the old one.
    Anybody having similar problems with a solution or suggestion?
    Thanks.

    The error only occurs on files where I or someone else has edited a pdf with Acrobat.
    I can do a sticky note, but can't do a text box, draw line/circles or highlight, etc.  As soon as I perform one of these functions or try to scroll in the document, the obsolete function message hits and I have to shut the program down through task manager.
    I just tryed to create a form and when I click on any function in the form toolbar, I get a "failed to load application resource (internal error)" message.  I can fill out form fields if they already exist in the pdf.

  • MozCancelFullScreen() not working and firefox not exiting fullscreen even though this function was called on document

    I have a container which gets into full screen mode using mozRequestFullScreen() API but I want to get back to non-fullscreen mode after one of my custom event is fired.
    As soon as my custom event is fired, I call mozCancelFullScreen() API to exit full screen but this seems to be not working. Firefox is not exiting fullscreen even though this function was called on document.
    I have to press "Esc" to get into non-fullscreen mode.
    I am uding Firefox 21.0 version.

    Hi visionmax, could you post a link to your page, or create a demo on http://jsfiddle.net/ ?

  • DB_DBT_MALLOC was set when secondary db's callback function was called!

    I have a secondary db associated with a primary db,when i insert some test records into primary db
    ,i saw my sdb_callback was called twice!the first call with the correct data,but the seocond call
    was with wrong data,data.size was wrong ,with a big value and flags was set to DB_DBT_MALLOC ,
    what should i do when the callback was called twice?just return DB_DONOTINDEX?
    i modified the example code from source code/example_c/bench_001.c,make the bulk_fill the DB to
    have a secondary as following
    int sdb_callback(DB sdbp,          / secondary db handle */
                                  const DBT pkey,   / primary db record's key */
                                  const DBT pdata,  / primary db record's data */
                                  DBT skey)         / secondary db record's key */
         if(pdata->flags & DB_DBT_MALLOC)
              fprintf(stderr,"DB_DBT_MALLOC fired size:%d ksize:%d \r\n",pdata->size,pkey->size);
              return DB_DONOTINDEX;
         }else
              return DB_DONOTINDEX;
    FOR work WITH secondary db,i comment following out
         //if ((ret = dbp->set_flags(dbp, DB_DUP)) != 0) {
         //     dbp->err(dbp, ret, "set_flags");
         //     goto err;
         char sdb_filename[256];
         sprintf(sdb_filename, "s_%s",DATABASE );
         if ((ret = db_create(&sdbp, dbenv, 0)) != 0) {
              dbp->err(dbp, ret, "crate");
              exit(EXIT_FAILURE);
         /* set page size */
         if((ret = sdbp->set_pagesize(sdbp, pagesize)) != 0){
              dbp->err(dbp, ret, "crate");
              exit(EXIT_FAILURE);
         /* allow sorted duplicates. */
         /* try to open db*/
         ret = sdbp->open(sdbp, NULL, sdb_filename, NULL, DB_BTREE, DB_CREATE, 0664);
         if(ret != 0)
              dbp->err(dbp, ret, "%s: sdb open", DATABASE);
         dbp->associate(dbp, NULL, sdbp, sdb_callback, 0);
    then i run bulk_fill test,DB_DBT_MALLOC was OFTEN fired,but not every put!
    Edited by: feiman on May 23, 2010 4:35 AM

    following are codes from example_c bench_001.c
    i run ./a.out -B
    then it appears that when one record input to main db,secondary db's callback was called twice,except the FIRST record!!!
    #include <sys/types.h>
    #include <sys/time.h>
    #include <assert.h>
    #include <stdlib.h>
    #include <string.h>
    #ifdef _WIN32
    extern int getopt(int, char * const *, const char *);
    #else
    #include <unistd.h>
    #endif
    #include <db.h>
    #define     DATABASE     "bench_001.db"
    int     bulk_fill(DB_ENV *, DB *, int, u_int, int, int, int *, int *);
    int     compare_int(DB *, const DBT *, const DBT *);
    DB_ENV db_init(char , char *, u_int, int);
    int     main(int, char *[]);
    void     usage(void);
    const char
         progname = "bench_001";          / Program name. */
    int
    sdb_callback(DB sdbp,          / secondary db handle */
                                  const DBT pkey,   / primary db record's key */
                                  const DBT pdata,  / primary db record's data */
                                  DBT skey)         / secondary db record's key */
         skey->data = pkey->data;
         skey->size = pkey->size;
    fprintf(stderr,"callback called size:%d ksize:%d \r\n",pdata->size,pkey->size);
         return 0;
    * db_init --
    *     Initialize the environment.
    DB_ENV *
         db_init(home, prefix, cachesize, txn)
         char home, prefix;
    u_int cachesize;
    int txn;
         DB_ENV *dbenv;
         u_int32_t flags;
         int ret;
         if ((ret = db_env_create(&dbenv, 0)) != 0) {
              dbenv->err(dbenv, ret, "db_env_create");
              return (NULL);
         dbenv->set_errfile(dbenv, stderr);
         dbenv->set_errpfx(dbenv, prefix);
         (void)dbenv->set_cachesize(dbenv, 0,
              cachesize == 0 ? 50 * 1024 * 1024 : (u_int32_t)cachesize, 0);
         flags = DB_CREATE | DB_INIT_MPOOL;
         if (txn)
              flags |= DB_INIT_TXN | DB_INIT_LOCK;
         if ((ret = dbenv->open(dbenv, home, flags, 0)) != 0) {
              dbenv->err(dbenv, ret, "DB_ENV->open: %s", home);
              (void)dbenv->close(dbenv, 0);
              return (NULL);
         return (dbenv);
    * bulk_fill - bulk_fill a db
    *     Since we open/created the db with transactions (potentially),
    * we need to populate it with transactions. We'll bundle the puts
    * UPDATES_PER_BULK_PUT to a transaction.
    #define     UPDATES_PER_BULK_PUT     3
    int
         bulk_fill(dbenv, dbp, txn, datalen, num, dups, countp, iterp)
         DB_ENV *dbenv;
    DB *dbp;
    u_int datalen;
    int txn, num, dups;
    int countp, iterp;
         DBT key, data;
         u_int32_t flag = 0;
         DB_TXN *txnp;
         struct data {
              int id;
              char str[1];
         } *data_val;
         int count, i, iter, ret;
         void ptrk, ptrd;
         int iCnt = 0;
         time_t now,then;
         time(&now);
         time(&then);
         * Insert records into the database, where the key is the user
         * input and the data is the user input in reverse order.
         txnp = NULL;
         ret = 0;
         count = 0;
         iter = 0;
         ptrk = ptrd = NULL;
         data_val = malloc(datalen);
         memcpy(data_val->str, "0123456789012345678901234567890123456789",
              datalen - sizeof(data_val->id));
         memset(&key, 0, sizeof(DBT));
         memset(&data, 0, sizeof(DBT));
         * Need to account for proper buffer size,
         * The buffer must be at least as large as the page size of
         * the underlying database, aligned for unsigned integer
         * access, and be a multiple of 1024 bytes in size.
         key.ulen = (u_int32_t)UPDATES_PER_BULK_PUT *
              sizeof(u_int32_t) * datalen * 1024;
         key.flags = DB_DBT_USERMEM | DB_DBT_BULK;
         key.data = malloc(key.ulen);
         data.ulen = (u_int32_t)UPDATES_PER_BULK_PUT *
              (u_int32_t)datalen * 1024;
         data.flags = DB_DBT_USERMEM | DB_DBT_BULK;
         data.data = malloc(data.ulen);
         if (dups)
              flag |= DB_MULTIPLE;
         else
              flag |= DB_MULTIPLE_KEY;
         DB_MULTIPLE_WRITE_INIT(ptrk, &key);
         if (dups)
              DB_MULTIPLE_WRITE_INIT(ptrd, &data);
         for (i = 0; i < num; i++) {
              if (txn != 0 && (i+1) % UPDATES_PER_BULK_PUT == 0) {
                   if (txnp != NULL) {
                        ret = txnp->commit(txnp, 0);
                        txnp = NULL;
                        if (ret != 0)
                             goto err;
                   if ((ret =
                        dbenv->txn_begin(dbenv, NULL, &txnp, 0)) != 0)
                        goto err;
              data_val->id = 0;
              do {
                   if (dups) {
                        DB_MULTIPLE_WRITE_NEXT(ptrk, &key,
                             &i, sizeof(i));
                        assert(ptrk != NULL);
                        DB_MULTIPLE_WRITE_NEXT(ptrd, &data,
                             data_val, datalen);
                        assert(ptrd != NULL);
                   else {
                        DB_MULTIPLE_KEY_WRITE_NEXT(ptrk,
                             &key, &i, sizeof(i), data_val, datalen);
                        assert(ptrk != NULL);
                   if ((i+1) % UPDATES_PER_BULK_PUT == 0) {
                        switch (ret = dbp->put(dbp, txnp, &key, &data, flag)) {
                        case 0:
                             iter++;
                             free (key.data);
                             free (data.data);
                             memset(&key, 0, sizeof(DBT));
                             memset(&data, 0, sizeof(DBT));
                             key.ulen =
                                  (u_int32_t)UPDATES_PER_BULK_PUT *
                                  sizeof(u_int32_t) * datalen * 1024;
                             key.flags = DB_DBT_USERMEM|DB_DBT_BULK;
                             key.data = malloc(key.ulen);
                             data.ulen =
                                  (u_int32_t)UPDATES_PER_BULK_PUT *
                                  (u_int32_t)datalen * 1024;
                             data.flags =
                                  DB_DBT_USERMEM|DB_DBT_BULK;
                             data.data = malloc(data.ulen);
                             DB_MULTIPLE_WRITE_INIT(ptrk, &key);
                             if (dups)
                                  DB_MULTIPLE_WRITE_INIT(ptrd, &data);
                             break;
                        default:
                             dbp->err(dbp, ret, "Bulk DB->put");
                             free (key.data);
                             free (data.data);
                             goto err;
                   count++;
              } while (++data_val->id < dups);
         if ((num % UPDATES_PER_BULK_PUT) != 0) {
              switch (ret = dbp->put(dbp, txnp, &key, &data, flag)) {
              case 0:
                   iter++;
                   free (key.data);
                   free (data.data);
                   break;
              default:
                   free (key.data);
                   free (data.data);
                   dbp->err(dbp, ret, "Bulk DB->put");
                   goto err;
         if (txnp != NULL)
              ret = txnp->commit(txnp, 0);
         printf("%d\n", count);
         *countp = count;
         *iterp = iter;
         return (ret);
    err:     if (txnp != NULL)
                   (void)txnp->abort(txnp);
              return (ret);
    int
         main(argc, argv)
         int argc;
    char *argv[];
         extern char *optarg;
         extern int optind;
         DB dbp,sdbp;
         DB_ENV *dbenv;
         DB_TXN *txnp;
         struct timeval start_time, end_time;
         double secs;
         u_int cache, datalen, pagesize;
         int biter, ch, count, dups, env, init, iter, num;
         int ret, rflag, txn, bulk, delete;
         txnp = NULL;
         datalen = 20;
         iter = num = 100;
         env = 1;
         dups = init = rflag = txn = bulk = delete = 0;
         pagesize = 65536;
         cache = 1000 * pagesize;
         while ((ch = getopt(argc, argv, "c:d:EIi:l:n:p:RTBD")) != EOF)
              switch (ch) {
              case 'c':
                   cache = (u_int)atoi(optarg);
                   break;
              case 'd':
                   dups = atoi(optarg);
                   break;
              case 'E':
                   env = 0;
                   break;
              case 'I':
                   init = 1;
                   break;
              case 'i':
                   iter = atoi(optarg);
                   break;
              case 'l':
                   datalen = (u_int)atoi(optarg);
                   break;
              case 'n':
                   num = atoi(optarg);
                   break;
              case 'p':
                   pagesize = (u_int)atoi(optarg);
                   break;
              case 'R':
                   rflag = 1;
                   break;
              case 'T':
                   txn = 1;
                   break;
              case 'B':
                   bulk = 1;
                   break;
              case 'D':
                   delete = 1;
                   break;
              case '?':
              default:
                   usage();
         argc -= optind;
         argv += optind;
         /* Remove the previous database. */
         if (!rflag) {
              if (env)
                   (void)system("rm -rf BENCH_001; mkdir BENCH_001");
              else
                   (void)unlink(DATABASE);
         dbenv = NULL;
         if (env == 1 &&
              (dbenv = db_init("BENCH_001", "bench_001", cache, txn)) == NULL)
              return (-1);
         if (init)
              exit(0);
         /* Create and initialize database object, open the database. */
         if ((ret = db_create(&dbp, dbenv, 0)) != 0) {
              fprintf(stderr,
                   "%s: db_create: %s\n", progname, db_strerror(ret));
              exit(EXIT_FAILURE);
         dbp->set_errfile(dbp, stderr);
         dbp->set_errpfx(dbp, progname);
         if ((ret = dbp->set_bt_compare(dbp, compare_int)) != 0) {
              dbp->err(dbp, ret, "set_bt_compare");
              goto err;
         if ((ret = dbp->set_pagesize(dbp, pagesize)) != 0) {
              dbp->err(dbp, ret, "set_pagesize");
              goto err;
         if (dups && (ret = dbp->set_flags(dbp, DB_DUP)) != 0) {
              dbp->err(dbp, ret, "set_flags");
         goto err;
         if (env == 0 && (ret = dbp->set_cachesize(dbp, 0, cache, 0)) != 0) {
              dbp->err(dbp, ret, "set_cachesize");
              goto err;
         //if ((ret = dbp->set_flags(dbp, DB_DUP)) != 0) {
         //     dbp->err(dbp, ret, "set_flags");
         //     goto err;
         if (txn != 0)
              if ((ret = dbenv->txn_begin(dbenv, NULL, &txnp, 0)) != 0)
                   goto err;
         if ((ret = dbp->open(
              dbp, txnp, DATABASE, NULL, DB_BTREE, DB_CREATE, 0664)) != 0) {
                   dbp->err(dbp, ret, "%s: open", DATABASE);
                   if (txnp != NULL)
                        (void)txnp->abort(txnp);
                   goto err;
         char sdb_filename[256];
         sprintf(sdb_filename, "s_%s",DATABASE );
         if ((ret = db_create(&sdbp, dbenv, 0)) != 0) {
              dbp->err(dbp, ret, "crate");
              exit(EXIT_FAILURE);
         /* set page size */
         if((ret = sdbp->set_pagesize(sdbp, pagesize)) != 0){
              dbp->err(dbp, ret, "crate");
              exit(EXIT_FAILURE);
         /* allow sorted duplicates. */
         /* try to open db*/
         ret = sdbp->open(sdbp, NULL, sdb_filename, NULL, DB_BTREE, DB_CREATE, 0664);
         if(ret != 0)
              dbp->err(dbp, ret, "%s: sdb open", DATABASE);
         dbp->associate(dbp, NULL, sdbp, sdb_callback, 0);
         if (txnp != NULL)
              ret = txnp->commit(txnp, 0);
         txnp = NULL;
         if (ret != 0)
              goto err;
              if (bulk) {
                   /* Time the get loop. */
                   (void)gettimeofday(&start_time, NULL);
                   if ((ret = bulk_fill(dbenv, dbp, txn, datalen,
                        num, dups, &count, &biter)) != 0)
                        goto err;
                   (void)gettimeofday(&end_time, NULL);
                   secs =
                        (((double)end_time.tv_sec * 1000000 +
                        end_time.tv_usec) -
                        ((double)start_time.tv_sec * 1000000 +
                        start_time.tv_usec))
                        / 1000000;
                   printf("%d records put using %d batches",
                        count, biter);
                   printf(" in %.2f seconds: ", secs);
                   printf("%.0f records/second\n", (double)count / secs);
         /* Close everything down. */
         if ((ret = dbp->close(dbp, rflag ? DB_NOSYNC : 0)) != 0) {
              fprintf(stderr,
                   "%s: DB->close: %s\n", progname, db_strerror(ret));
              return (1);
         return (ret);
    err:     (void)dbp->close(dbp, 0);
         return (1);
    int
         compare_int(dbp, a, b)
         DB *dbp;
    const DBT a, b;
         int ai, bi;
         dbp = dbp;                    /* Lint. */
         * Returns:
         *     < 0 if a < b
         *     = 0 if a = b
         *     > 0 if a > b
         memcpy(&ai, a->data, sizeof(int));
         memcpy(&bi, b->data, sizeof(int));
         return (ai - bi);
    void
         usage()
         (void)fprintf(stderr, "usage: %s %s\n\t%s\n",
              progname, "[-EIRTBE] [-c cachesize] [-d dups]",
              "[-i iterations] [-l datalen] [-n keys] [-p pagesize]");
         exit(EXIT_FAILURE);
    }

  • Find Last time a procedure was called

    Hi DBAs,
    How to find when a procedure or function was called last time in 10g. For that matter even when a table was last accessed. If this can be done without enabling audit ? are there any such views or tricks to find such changes ?
    Thanks!

    Without auditing, this is not possible as a general rule.
    If a procedure has side effects, you could potentially look through the database to find those side effects. If it inserts a new row in a table with a CREATE_DATE of SYSDATE, that would be very helpful. If you're talking about a function that doesn't have side effects, however, that isn't an option. If the function or procedure runs for a relatively long period of time, its executions may be picked up in an AWR/ statspack report. But it's unlikely that every execution would be captured, it's unlikely that the history is kept particularly long, and it's not always trivial to search these reports for the last time a procedure was executed. And if you have a relatively quick procedure, it's unlikely that executions would ever be recorded.
    Segment-level statistics might give you hints about table accesses. But those statistics are cumulative since the last reboot. And there are likely background processes that touch every table at some interval (i.e. statistics gathering), which probably isn't the sort of "access" you're interested in.
    Justin

  • The Web Dynpro application was called up with the wrong URL parameters

    Hi all,
    I am using the systems below:
    ERP STACK :16
    EHP : 4
    EHP SP Stack :4
    EA-HR * : 604(SP12)
    SAP-HR * :604(SP12)
    XSS JAVA components : SAP ESS 603 SP05
    SAP MSS 600 SP16
    PCUI_GP 603 SP05
    Business Package : BP ERP05 ESS 1.41 SP04
    BP ERP05 MSS 1.41 SP04
    BP ERP05 COMMON PARTS 1.41 SP04
    I am getting below error after clicking on the appraisal document:
    App. Called Up Incorrectly
    The Web Dynpro application was called up with the wrong URL parameters.
    Note
    Enter the URL parameters and their use.
    You can find more information on the functions that you can perform in the catalog for appraisal templates in the Implementation Guide (IMG) for Objective Setting and Appraisals under Edit Forms.
    I already applied the below notes also:
    1468466 Performance Management Launchpad Configuration
    1463821 Performance Management Portal Configuration
    1416756 OBN Configuration in Performance Management
    1408243 Configuration for object-based navigation
    Plz advise me??
    Thanks,
    Anumit

    can you paste the exact error. also you can take a HTTP trace and see which resourse or UWL is being launched!

  • How to find Obsolete function modules ?

    Hi ,
    I am working on upgrade project R/3 4.6 to ECC 6.0 . I need to find obsolete function modules in program . I already have list of obsolete  FM .Is there any program or logic through which we can find all obsolete FM at single execution.
    Thanks & Regards
    Sandeep

    Hello Sandeep,
    I'm not sure if there's a standard report/program to list obsolete function modules, but you can manually check them in table RODIR (via SE16 transaction) - there's a flag properly called 'OBSOLETE'
    FYI, table TFDIR contains the FMs that were released.
    There are some notes which provid additional information on this topi:
    #109533: Use of SAP function modules
    #857904: Upgrade from Release 6.40 to 7.0 for customer programs
    #595310: ws_filename_get function module is obsolete
    Please be aware that those FMs are still there - all applications will have the old function modules installed for
    backwards compatibility and legacy reasons. However if you are writing your own code, these function modules will still be available, but not supported by SAP Support.
    I hope this information help you.
    Best regards,
    Tomas Black

  • Regarding Obsolete Function Modules

    Hi all,
            can anybody tell me the alternative ECC6.0 function modules of the following Obsolete function modules
    DOWNLOAD
    UPLOAD
    WS_DOWNLOAD
    WS_UPLOAD
    WS_FILENAME_GET
    WS_QUERY
    POPUP_TO_CONFIRM_STEP
    POPUP_TO_CONFIRM_WITH_MESSAGE
    thnks
    Sandeep

    here are replacement function modules for the obsolete ones.
    award points in case u feel this useful
    1. Obsolete Function Module: WS_UPLOAD.
          Replacement FM: GUI_UPLOAD.
    Note:
      1. If the FM ‘WS_UPLOAD' has file type as ASC, then we can use same file    
        type ASC for GUI_UPLOAD also.
    2. But if the FM 'WS_UPLOAD' has file type as DAT, we can not use DAT for  
      'GUI_UPLOAD' as it will give short dump.
        In this case we need use file type as ASC
          and
          HAS_FIELD_SEPARATOR = ‘X’.
    3. If the file name or file type of ws_upload have variables or constants   
        Instead of hard coding, then don’t use hard code values for gui_upload.
    3. The data type of file name always should be of character type for gui_upload
          The file type should be of Type Character and length 10.
      4. Always uncomment the exceptions for gui_upload.
      5. And also uncomment the code inside IF SY-SUBRC <> 0. and ENDIF after    
          gui_upload if the customer has not handled any exception in 46c version.
          If there is any code inside IF SY-SUBRC <> 0 and ENDIF for ws_upload in 46c
          version, Please use the same code in ECC also after gui_upload.
    Example:
       Example for File type ASC:
    CALL FUNCTION 'WS_UPLOAD'
          EXPORTING
               FILENAME                = P_FILE
               FILETYPE                = 'ASC'
         IMPORTING
              FILELENGTH              =
          TABLES
               DATA_TAB                = P_I_DATA
          EXCEPTIONS
               CONVERSION_ERROR        = 1
               FILE_OPEN_ERROR         = 2
               FILE_READ_ERROR         = 3
               INVALID_TABLE_WIDTH     = 4
               INVALID_TYPE            = 5
               NO_BATCH                = 6
               UNKNOWN_ERROR           = 7
               GUI_REFUSE_FILETRANSFER = 8
               CUSTOMER_ERROR          = 9
               OTHERS                  = 10.
    Replacement FM:
    DATA L_P_FILE TYPE STRING.
         L_P_FILE = P_FILE.
    CALL FUNCTION 'GUI_UPLOAD'
      EXPORTING
        FILENAME                      = L_P_FILE
        FILETYPE                      = ‘ASC’
      TABLES
        DATA_TAB                      = P_I_DATA
    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 NE 0.
        MESSAGE E033 WITH P_FILE ' could not be opened'(E03).
      ENDIF.
    Example for file type DAT:
    CALL FUNCTION 'WS_UPLOAD'
          EXPORTING
               FILENAME                = P_FILE
               FILETYPE                = 'DAT'
         IMPORTING
              FILELENGTH              =
          TABLES
               DATA_TAB                = P_I_DATA
          EXCEPTIONS
               CONVERSION_ERROR        = 1
               FILE_OPEN_ERROR         = 2
               FILE_READ_ERROR         = 3
               INVALID_TABLE_WIDTH     = 4
               INVALID_TYPE            = 5
               NO_BATCH                = 6
               UNKNOWN_ERROR           = 7
               GUI_REFUSE_FILETRANSFER = 8
               CUSTOMER_ERROR          = 9
               OTHERS                  = 10.
    Replacement FM:
    DATA L_P_FILE TYPE STRING.
         L_P_FILE = P_FILE.
    CALL FUNCTION 'GUI_UPLOAD'
      EXPORTING
        FILENAME                      = L_P_FILE
        FILETYPE                      = ‘ASC’
        HAS_FIELD_SEPARATOR           = ‘X’
      TABLES
        DATA_TAB                      = P_I_DATA
    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.
    Else.
    2. Obsolete FM       : WS_DOWNLOAD
        Replacement FM: GUI_DOWNLOAD.
    Note:
      1. If the FM ‘WS_DOWNLOAD' has file type as ASC, then we can use same file    
        Type ASC for GUI_DOWNLOAD also.
    2. If the FM 'WS_DOWNLOAD' has file type as DAT, we can use DAT for  
      'GUI_DOWNLOAD' 
    3. If the file name or file type of ws_upload have variables or constants   
        Instead of hard coding,then don’t use hard code values for gui_download.
        Declare variables and assign the ws_download variables to new variables  
        and use These in the new FM.
    4. The data type of file name always should be of character type for gui_upload
          The file type should be of Type Character and length 10.
    5. The data type of file name always should be of character type for gui_ download.
      6. Always uncomment the exceptions for gui_download.
      7. And also uncomment the code inside IF SY-SUBRC <> 0. and ENDIF after    
          Gui_upload if the customer has not handled any exception in 46c version.
          If there is any code inside IF SY-SUBRC <> 0 and ENDIF for ws_ download in 
          46c  version, Please use the same code in ECC also after gui_download.
    Example:
    CALL FUNCTION 'WS_DOWNLOAD'
          EXPORTING
               FILENAME            = P_FILENM
               FILETYPE            = 'DAT'       " split into records
          TABLES
               DATA_TAB            = L_ITAB
               FIELDNAMES          = T_HEAD
          EXCEPTIONS
               FILE_OPEN_ERROR     = 01
               FILE_WRITE_ERROR    = 02
               INVALID_FILESIZE    = 03
               INVALID_TABLE_WIDTH = 04
               INVALID_TYPE        = 05
               NO_BATCH            = 06
               UNKNOWN_ERROR       = 07.
    Replacement FM for above FM:
    DATA L_P_FILE TYPE STRING.
         L_P_FILE = P_FILENM.
    CALL FUNCTION 'GUI_DOWNLOAD'
      EXPORTING
       FILENAME                        = L_P_FILE
       FILETYPE                        = ‘DAT’
      TABLES
       DATA_TAB                        = L_ITAB
       FIELDNAMES                      = T_HEAD
    EXCEPTIONS
       FILE_WRITE_ERROR                = 1
       NO_BATCH                        = 2
       GUI_REFUSE_FILETRANSFER         = 3
       INVALID_TYPE                    = 4
       NO_AUTHORITY                    = 5
       UNKNOWN_ERROR                   = 6
       HEADER_NOT_ALLOWED              = 7
       SEPARATOR_NOT_ALLOWED           = 8
       FILESIZE_NOT_ALLOWED            = 9
       HEADER_TOO_LONG                 = 10
       DP_ERROR_CREATE                 = 11
       DP_ERROR_SEND                   = 12
       DP_ERROR_WRITE                  = 13
       UNKNOWN_DP_ERROR                = 14
       ACCESS_DENIED                   = 15
       DP_OUT_OF_MEMORY                = 16
       DISK_FULL                       = 17
       DP_TIMEOUT                      = 18
       FILE_NOT_FOUND                  = 19
       DATAPROVIDER_EXCEPTION          = 20
       CONTROL_FLUSH_ERROR             = 21
       OTHERS                          = 22.
    CALL FUNCTION 'POPUP_TO_CONFIRM_STEP'
    *EXPORTING
    *defaultoption  = 'N'
    *     extline1 = 'Soll das Include überschrieben werden?'(034)
    *     extline2 = i_inc-include
    *     itel     = 'Include existiert bereits!'(039)
    START_COLUMN   = 25
    START_ROW      = 6
    CANCEL_DISPLAY = 'X'
    IMPORTING
    answer = answer
    EXCEPTIONS
    OTHERS = 1.
    Replacement Method :
    DATA : l_question type string.
    Concatenate   'Soll das Include überschrieben werden?'(034)
                  i_inc-include
    into          l_question.
    CALL FUNCTION 'POPUP_TO_CONFIRM'
      EXPORTING
    TITLEBAR = 'Prepack deletion'(019)
    DIAGNOSE_OBJECT = ' '
    TEXT_QUESTION = l_question
    TEXT_BUTTON_1 = 'Yes'(020)
    *ICON_BUTTON_1  = ' '
    TEXT_BUTTON_2  = 'No'(021)
    *ICON_BUTTON_2  = ' '
    *DEFAULT_BUTTON = '2'
    DISPLAY_CANCEL_BUTTON = 'X'
    *USERDEFINED_F1_HELP  = ' '
    *START_COLUMN = 25
    *START_ROW = 6
    *POPUP_TYPE =
    *IV_QUICKINFO_BUTTON_1  = ' '
    *IV_QUICKINFO_BUTTON_2  = ' '
    IMPORTING
       ANSWER = answer
    TABLES
    *PARAMETER =
    EXCEPTIONS
    TEXT_NOT_FOUND = 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.
    Note : 
       In FM  POPUP_TO_CONFIRM_STEP' , the value for import parameter ANSWER is
           J (YES),
           N (NO).
    But for  POPUP_TO_CONFIRM , the value for import parameter ANSWER is
           1 (YES),
           2 (NO).
    So, please change these values accordingly while replacing with the new FM.
       CALL FUNCTION 'POPUP_TO_CONFIRM_WITH_MESSAGE'
            EXPORTING
                 DIAGNOSETEXT1 = TEXT-900
                 DIAGNOSETEXT2 = SY-MSGV1
                 DIAGNOSETEXT3 = TEXT-901
                 TEXTLINE1     = TEXT-902
                 TEXTLINE2     = TEXT-903
                 TITEL         = TEXT-904
            IMPORTING
                 ANSWER        = UP_ANSWER.
    replacement:
    The Diagnose object parameter Z_ZIMPCHK1_POPUP_TO_CONFIRM'
      is created in SE61 transaction as DIALOG TEXT object
        DATA: W_PARAM      TYPE SPAR,
               I_PARAMETERS TYPE STANDARD TABLE OF SPAR,
               W_TEXT_Q     TYPE STRING.
        MOVE TEXT-900   TO W_PARAM-VALUE.
        MOVE 'TEXT1'    TO W_PARAM-PARAM.
        APPEND W_PARAM TO I_PARAMETERS.
        WRITE SY-MSGV1  TO W_PARAM-VALUE.
        MOVE 'TEXT2'    TO W_PARAM-PARAM.
        APPEND W_PARAM TO I_PARAMETERS.
        WRITE TEXT-901  TO W_PARAM-VALUE.
        MOVE 'TEXT3'    TO W_PARAM-PARAM.
        APPEND W_PARAM TO I_PARAMETERS.
        CONCATENATE TEXT-902
                    TEXT-903
                    INTO
                    W_TEXT_Q.
        CALL FUNCTION 'POPUP_TO_CONFIRM'
          EXPORTING
           TITLEBAR                    = TEXT-904
           DIAGNOSE_OBJECT             = 'Z_ZIMPCHK1_POPUP_TO_CONFIRM'
           TEXT_QUESTION               = W_TEXT_Q
         IMPORTING
           ANSWER                      = UP_ANSWER
         TABLES
           PARAMETER                   = I_PARAMETERS
         EXCEPTIONS
           TEXT_NOT_FOUND              = 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.
    call function 'UPLOAD'
             exporting
                  filename = umsfile
                  filetype = 'ASC'
             tables
                  data_tab = umsatz.
    replacement :
    DATA : I_FILE_TABLE1 TYPE  TABLE OF FILE_TABLE,
           W_FILETABLE1  TYPE  FILE_TABLE,
           W_RC1         TYPE  I,
           W_P_DEF_FILE1 TYPE  STRING,
           W_P_FILE1     TYPE STRING,
           w_usr_act1    TYPE I.
      W_P_DEF_FILE1 = umsfile.
      CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG
           EXPORTING
            WINDOW_TITLE            =
            DEFAULT_EXTENSION       =
              DEFAULT_FILENAME        = W_P_DEF_FILE1
           CHANGING
              FILE_TABLE              = I_FILE_TABLE1
              RC                      = W_RC1
              USER_ACTION             = w_usr_act1
            FILE_ENCODING           =
           EXCEPTIONS
             FILE_OPEN_DIALOG_FAILED = 1
             CNTL_ERROR              = 2
             ERROR_NO_GUI            = 3
             NOT_SUPPORTED_BY_GUI    = 4
             others                  = 5      .
    IF sy-subrc = 0
          AND w_usr_act <>
          CL_GUI_FRONTEND_SERVICES=>ACTION_CANCEL.
         LOOP AT I_FILE_TABLE1  INTO W_FILETABLE1.
            W_P_FILE1 = W_FILETABLE1.
            EXIT.
          ENDLOOP.
      CALL FUNCTION 'GUI_UPLOAD'
        EXPORTING
          FILENAME                      = W_P_FILE1
         FILETYPE                      = 'ASC'
        TABLES
          DATA_TAB                      = umsatz
       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.
    ENDIF.
      CALL FUNCTION 'DOWNLOAD'
               EXPORTING
               BIN_FILESIZE            = ' '
               CODEPAGE                = ' '
                    FILENAME                = PT_FILE
                    FILETYPE                = 'DAT'
               ITEM                    = ' '
               MODE                    = ' '
               WK1_N_FORMAT            = ' '
               WK1_N_SIZE              = ' '
               WK1_T_FORMAT            = ' '
               WK1_T_SIZE              = ' '
               FILEMASK_MASK           = ' '
               FILEMASK_TEXT           = ' '
               FILETYPE_NO_CHANGE      = ' '
               FILEMASK_ALL            = ' '
               FILETYPE_NO_SHOW        = ' '
               SILENT                  = 'S'
               COL_SELECT              = ' '
               COL_SELECTMASK          = ' '
               NO_AUTH_CHECK           = ' '
          IMPORTING
               ACT_FILENAME            =
               ACT_FILETYPE            =
               FILESIZE                =
               CANCEL                  =
               TABLES
                    DATA_TAB                = BELEGE
               FIELDNAMES              =
               EXCEPTIONS
                    INVALID_FILESIZE        = 1
                    INVALID_TABLE_WIDTH     = 2
                    INVALID_TYPE            = 3
                    NO_BATCH                = 4
                    UNKNOWN_ERROR           = 5
                    GUI_REFUSE_FILETRANSFER = 6
                    OTHERS                  = 7.
    replacement:
    DATA: l_filename    TYPE string,
           l_filen       TYPE string,
           l_path        TYPE string,
           l_fullpath    TYPE string,
           l_usr_act     TYPE I.
    l_filename = PT_FILE.
    CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG
      EXPORTING
        DEFAULT_FILE_NAME    = l_filename
      CHANGING
        FILENAME             = l_filen
        PATH                 = l_path
        FULLPATH             = l_fullpath
        USER_ACTION          = l_usr_act
      EXCEPTIONS
        CNTL_ERROR           = 1
        ERROR_NO_GUI         = 2
        NOT_SUPPORTED_BY_GUI = 3
        others               = 4.
    IF sy-subrc = 0
          AND l_usr_act <>
          CL_GUI_FRONTEND_SERVICES=>ACTION_CANCEL.
    CALL FUNCTION 'GUI_DOWNLOAD'
      EXPORTING
      BIN_FILESIZE                    =
        FILENAME                        = l_fullpath
       FILETYPE                        = 'DAT'
      TABLES
        DATA_TAB                        = BELEGE
      FIELDNAMES                      =
    EXCEPTIONS
       FILE_WRITE_ERROR                = 1
       NO_BATCH                        = 2
       GUI_REFUSE_FILETRANSFER         = 3
       INVALID_TYPE                    = 4
       NO_AUTHORITY                    = 5
       UNKNOWN_ERROR                   = 6
       HEADER_NOT_ALLOWED              = 7
       SEPARATOR_NOT_ALLOWED           = 8
       FILESIZE_NOT_ALLOWED            = 9
       HEADER_TOO_LONG                 = 10
       DP_ERROR_CREATE                 = 11
       DP_ERROR_SEND                   = 12
       DP_ERROR_WRITE                  = 13
       UNKNOWN_DP_ERROR                = 14
       ACCESS_DENIED                   = 15
       DP_OUT_OF_MEMORY                = 16
       DISK_FULL                       = 17
       DP_TIMEOUT                      = 18
       FILE_NOT_FOUND                  = 19
       DATAPROVIDER_EXCEPTION          = 20
       CONTROL_FLUSH_ERROR             = 21
       OTHERS                          = 22
    IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    ENDIF.

  • Obsolete function module in ECC6 - what to use instead of that

    I have to upgrade from SAP 4.7 to ECC6 .
    Some obsolete function module are as follows:
    ADDRESS_MAINTAIN
    ADDRESS_UPDATE_OLD
    DD_PR_REDEFINE
    GRAPH_DIALOG
    HELPSCREEN_NA_CREATE
    Can anybody assist me which function module to use in place of this function module or which class methods to be used instead of these function modules ?
    Thanks...

    Hi Deepak,
    For ADDRESS_MAINTAIN you can go this way for now.
    DATA : func_name TYPE rs38l_fnam.
    func_name = 'ADDRESS_MAINTAIN'. "To escape the EPC Check
        DO.
          CALL FUNCTION func_name
            EXPORTING
              adrswa_in         = sadr
              processing_status = mode
              kennzeichen       = kz
              save_intern       = 'X'
              title             = am_title
            IMPORTING
              adrswa_out        = sadr
              returncode        = return
              update_flag       = am_save
            EXCEPTIONS
              not_found         = 4.
    we haven't found any replacement for this. so doing it this way.
    ADDRESS_UPDATE_OLD - No Replacement for this.
    DD_PR_REDEFINE - No Replacement for this.
    GRAPH_DIALOG - No Replacement for this.
    All the Above 3 FMs are still being used in ECC standard programs.
    Thanks,
    Sai
    Edited by: Sai Krishna Kowluri on Dec 5, 2008 7:34 AM
    Edited by: Sai Krishna Kowluri on Dec 5, 2008 7:37 AM

  • Shortdump occured due to function module called incorrectly

    Hi experts!
    Iam loading the deltas from 2lis_40_reval into 3 cubes.
    In one cube the dataload is successful,but in other two cubes deltas are unsuccessful.B'coz a shortdump was occured due to function module was called incorrectly.
    can any expert give me a solution.
    diya

    thanks for reply,
    i have seen in st22 for this shortdump,it is mentioned..
    'the function module interface allows you to specify only fields of particular type under "E_week".the "result" specified here is a different type.
    i observed the routines of all cubes.in one cube ,for zcalender year/week  a routine week is assigned but there
    "E_QTR = result".and zcalender/quater a routine is assined but there is"E_WEEK = result" .and also i checked the properties of zcalender year/week  & zcalender/quater .
    the lenth for both of these  is different.
    so,is b'coz of these data is not loading.if so can i change these routines in production.can u pls give the solution
    diya

  • PDImageSelectAlternate "is obsolete and never called in Acrobat 8". How switch to alternate images?

    PDImageSelectAlternate "is obsolete and never called in Acrobat 8". Then how can I switch to alternate images to display in Acrobat 8 and 9?

    The goal is to speed up screen redraw (using low resolution proxies). High-end prepress software usually provide option to generate alternate images while "normalizing" incoming PDFs. And (at least) Enfocus Pitstop can switch on/off their display in Acrobat 8 and later. The question is how they do it, if PDImageSelectAlternate "is never called". Well, I chose this subject as practice for my first plugin, because it seemed to me straightforward and simple. It looks like I was wrong.

  • Forms 9i/ DB 10g - Form Hangs when function is called

    Using 9i Web Forms on 10g Database Linux O/S
    I have the following function call in a form within a loop:
    :nbt02_lentrn.nbt_txn_descr := fn_get_trans_descr(ls_app_area_code,ls_txn_type);
    The function being called contains this code:
    FUNCTION fn_get_trans_descr(ps_app_area_code IN VARCHAR2,
    ps_txn_code IN VARCHAR2) RETURN VARCHAR2 IS
    CURSOR cur_txn_descr IS
    SELECT descr
    FROM financial_trans_types
    WHERE code = ps_txn_code
    AND aparea_code = ps_app_area_code;
    ls_txn_descr financial_trans_types.descr%TYPE;
    BEGIN
    OPEN cur_txn_descr;
    FETCH cur_txn_descr INTO ls_txn_descr;
    CLOSE cur_txn_descr;
    Return(ls_txn_descr);
    END;
    When the call is executed, the form hangs after the OPEN command. I have checked the parameters for their values and successfully executed the cursor in SQL.
    When I hardcode the function parameter values, the code executes successfully. Also, and perhaps most unusually, if I do either of the following before the function call, the code runs successfully:
    ls_txn_type     :=     ls_txn_type;
    :nbt02_lentrn.nbt_txn_descr := fn_get_trans_descr(ls_app_area_code,ls_txn_type);
         ls_txn_type     :=     NVL(ls_txn_type,NULL);
    :nbt02_lentrn.nbt_txn_descr := fn_get_trans_descr(ls_app_area_code,ls_txn_type);
    I have also extracted the call and placed it into a different form where it works fine!
    The variable ln_txn_type is populated via another call within the same loop. It's value alternates between null and a value for the record set.
    The same code works fine Client/Server and although I have a solution, I'm not sure what the problem is! Does anyone have any clues?

    Hello - your problem actually looks similar in symptoms to one I hit just a couple of days ago (see my post 'Forms hangs when using result of an OUT parameter to do an Insert ' on July 19th.)
    The problem I was having was if I had a variable which already had a value, then passed into an IN OUT parameter of a db stored proc, the proc set the value to null, and then I tried to use the variable in a table insert. The form would just hang completely. Like you, one workaround for the problem was to have a line like:
    my_var := NVL(my_var,NULL);
    to somehow 'fix' the variable before trying to use it further. Even though the variable seems null, and returns true for IF ... IS NULL, something had gone wrong with it that rendered it toxic to my form. This workaround should have no net effect, but it does somehow solve the problem. Like your problem, mine doesn't occur on client server, only on the newer version.
    I hit this problem using Forms 10g904, against a 9i database. Having talked it over with Oracle support, I've tried doing the same thing using 10g Release 2, and the problem disappears, so Oracle have obviously fixed it somewhere between the two releases - I'm currently investigating intermediate Patch Sets.
    Don't know if this is helpful, but all I can suggest is that you ensure you've applied the latest patchsets to your Forms (you can try it on the Builder first before patching your apps server installation.) If that doesn't do it, I'm guessing it's a case of use the workarounds, or go up to a higher version altogether of Forms.
    Sorry not to have any more optimistic advice!
    James

  • Obsolete function modules

    Hi can you please provide alternate replacement function modules for the following obsolete function modules in ECC.
    LOG_SYSTEM_GET_RFC_DESTINATION
    NAMETAB_GET
    VALUES_GET
    VALUES_DISPLAY
    WS_QUERY
    HELPSCREEN_NA_CREATE

    for WS_QUERY replacement are...
    GUI_GET_DESKTOP_INFO
    GUI_GET_FILE_INFO
    GUI_EXEC
    GUI_RUN
    CL_GUI_FRONTEND_SERVICES=>FILE_EXIST or WS_QUERY-Directory Exist is CL_GUI_FRONTEND_SERVICES=>DIRECTORY_EXIST
    also, check...
    http://help.sap.com/saphelp_46c/helpdata/en/d2/42f955cafe11d1ad0c080009b0fb56/content.htm
    Message was edited by:
            Ramesh Babu Chirumamilla

  • Replacements for obsolete function modules

    Hi,
    What is the best way to find out the replacement for the obsolete function modules? We are starting an upgrade project and are required to replace the obsolete function modules used in that. So before starting that I want to keep a list of obsolete function modules and their replacements ready.
    SS

    Hi,
    RODIR table gives not only FM, all obsoletes types.
    if you dont find, best way is when we check EPC for the program,
    in call function interface warnings shows, obsolete function modules.
    or do UCCHECK it will both obsolete and suggested replacements.
    Thanks
    Vinod

Maybe you are looking for