Add on still exists eventhough SAP B1 exit (pls help..)
Dear all,
could you please help me to solve a problem relate to stop add-on in the memory whenever I close my SAP B1 ? I am still seing the application in the tab application on the windows task manager, I try to use this following :
Public Sub SBO_Application_AppEvent(ByVal EventType As SAPbouiCOM.BoAppEventTypes)
Select Case EventType
Case aet_ServerTerminition
End
End Select
End Sub
But failed. I appreciate your answer so much. TIA
Rgds,
Steve
This is how it should look like (in C#, sorry)
private void ApplHandler(BoAppEventTypes EventType)
switch (EventType)
case BoAppEventTypes.aet_CompanyChanged:
/// handle your company change here, usually redoing a SSO
return;
case BoAppEventTypes.aet_LanguageChanged:
/// handle your language change here
return;
case BoAppEventTypes.aet_ServerTerminition:
case BoAppEventTypes.aet_ShutDown:
/// handle your termination here
System.Environment.Exit( 0 );
return;
Similar Messages
-
Just bought iPad mini 2 last week. FaceTime is missing under settings. i can't even find it under restrictions. I have reset it but it's still the same, no facetime. Pls help me...
FaceTime is not available on devices purchased or used in certain countries, including Saudi Arabia and the United Arab Emirates. This is by government decree. The FaceTime app can't be downloaded or installed on these iPads.
Cheers, Tom -
I Bought it here in Kuwait. Actually my husband also bought another iPad mini here in Kuwait. And he have facetime in it. My iPad doesn't have it.
my husband and I bought it in the viva telecom store Together. But his iPad mini have facetime while mine doesn't have. there are 3 telecom companies here in Kuwait. My friends have facetime here. is there any way to install it if we go to other country?
-
Pls help - How can I add a typekit font to muse?
As Muse doesn't come with all typekit fonts already included in the dropdown list of webfonts, I'd like to know how I can add a typekit font to the dropdown menu so I can use it for my website. I have Adobe creative cloud membership.
I've searched the whole of the web and can't find anything about this at all - only about adding one of the existing muse typekit fonts which I already know how to do.
Why doesn't Adobe include all typekit fonts with Muse when you're already a full creative cloud subscriber?Done!
Date: Thu, 20 Dec 2012 03:13:17 -0700
From: [email protected]
To: [email protected]
Subject: Pls help - How can I add a typekit font to muse?
Re: Pls help - How can I add a typekit font to muse?
created by morgan_in_london in Help with using Adobe Muse - View the full discussion
You're very welcome - can I be cheeky and ask for a "correct answer" to be noted? :^D
Please note that the Adobe Forums do not accept email attachments. If you want to embed a screen image in your message please visit the thread in the forum to embed the image at http://forums.adobe.com/message/4935814#4935814
Replies to this message go to everyone subscribed to this thread, not directly to the person who posted the message. To post a reply, either reply to this email or visit the message page: http://forums.adobe.com/message/4935814#4935814
To unsubscribe from this thread, please visit the message page at http://forums.adobe.com/message/4935814#4935814. In the Actions box on the right, click the Stop Email Notifications link.
Start a new discussion in Help with using Adobe Muse by email or at Adobe Community
For more information about maintaining your forum email notifications please go to http://forums.adobe.com/message/2936746#2936746. -
I am new to SAP i dont know even basics also pls help me to learn
I want use SAP in qlikview pls help me
thanks in advanceHI Kumar,
This forum is specially for SAP BI application not for qlikview, for SAP BI Please refer below tutorial links
Official Product Tutorials – SAP BI Suite
http://scn.sap.com/docs/DOC-7725
Official Product Tutorials – SAP BusinessObjects Web Intelligence
http://scn.sap.com/docs/DOC-7819
Official Product Tutorials – SAP Crystal Reports 2011 / 2013
http://scn.sap.com/docs/DOC-8514
Official Product Tutorials – SAP BusinessObjects Crystal Reports for Enterprise
http://scn.sap.com/docs/DOC-8013
Official Product Tutorials – SAP BusinessObjects Dashboards
http://scn.sap.com/docs/DOC-7946
Thanks,
Daya -
I cannot update in my application store because the previous email add still exist even i have a new apple id
FAQ apple id http://support.apple.com/kb/he37
Doesn't matter if you have a new ID, all apps are tied to the apple id that was used to download it. -
I deleted all the music on my iPhone, but all the album artwork still exist. How do I clear and add a fresh batch of music? Also my iTunes no longer recognizes my iPhone under the "devices" tab so I am unable to manually sync. I have disconnected it makes a beep sound when reconnected so I know my computer is finding the phone, the iPhone also appears on Explorer. Stupid question but I can't figure it out and wasting too much time. Thank you.
It has always been very basic to always maintain a backup copy of your computer for this very occasion. Use your backup copy of your computer to put everything on the new one.
If for some reason you have failed to backup, big mistake, then you can transfer itunes purchases from the iphone to the computer: File>Transfer Purchases
You may be able to buy a 3rd party program to get any other music off of the iphone ( not supported by Apple).
When you sync the iphone, it will erase the current content and replace with content form the new computer.
"Not happy with itunes right now, more then a bit of a joke"
Not itunes fault that you did not do the very basics and maintain a backup copy. -
The Bug about 'DB_SECONDARY_BAD' still exists in BerkeleyDB4.8!
The Bug about 'DB_SECONDARY_BAD' still exists in BerkeleyDB4.8?
I'm sorry for my poor English, But I just cannot find anywhere else for help.
Thanks for your patience first!
I'm using BDB4.8 C++ API on Ubuntu 10.04, Linux Kernel 2.6.32-24-generic
$uname -a
$Linux wonpc 2.6.32-24-generic #43-Ubuntu SMP Thu Sep 16 14:17:33 UTC 2010 i686 GNU/Linux
When I update(overwrite) a record in database, I may get a DB_SECONDARY_BAD exception,
What's worse, This case doesn't always occures, it's random. So I think it probably a bug
of BDB, I have seen many issues about DB_SECONDARY_BAD with BDB4.5,4.6...
To reproduce the issue, I make a simplified test program from my real program.
The data to be stroed into database is a class called 'EntryData', It's defined in db_access.h,
where also defines some HighLevel API functions that hide the BDB calls, such as
store_entry_data(), which use EntryData as its argument. The EntryData have a string-type
member-data 'name' and a vector<string>-type mem-data 'labels', So store_entry_data() will
put the real data of EntryData to a contiguous memory block. The get_entry_data() returns
an EntryData builed up from the contiguous memory block fetched from database.
The comlete test program is post following this line:
/////////db_access.h////////////
#ifndef __DB_ACCESS_H__
#define __DB_ACCESS_H__
#include <string>
#include <vector>
#include <db_cxx.h>
class EntryData;
//extern Path DataDir; // default value, can be changed
extern int database_setup();
extern int database_close();
extern int store_entry_data(const EntryData&, u_int32_t = DB_NOOVERWRITE);
extern int get_entry_data(const std::string&, EntryData*, u_int32_t = 0);
extern int rm_entry_data(const std::string&);
class DBSetup
// 构造时调用database_setup, 超出作用域自动调用database_close .
// 该类没有数据成员.
public:
DBSetup() {
database_setup();
~DBSetup() {
database_close();
class EntryData
public:
typedef std::vector<std::string> LabelContainerType;
EntryData() {}
EntryData(const std::string& s) : name(s) {}
EntryData(const std::string& s, LabelContainerType& v)
: name(s), labels(v) {}
EntryData(const std::string&, const char*[]);
class DataBlock;
// 直接从内存块中构建, mem指针将会从数据库中获取,
// 它就是EntryData转化成的DataBlock中buf_ptr->buf的内容.
EntryData(const void* mem_blk, const int len);
~EntryData() {};
const std::string& get_name () const { return name; }
const LabelContainerType& get_labels() const { return labels; }
void set_name (const std::string& s) { name = s; }
void add_label(const std::string&);
void rem_label(const std::string&);
void show() const;
// get contiguous memory for all:
DataBlock get_block() const { return DataBlock(*this); }
class DataBlock
// contiguous memory for all.
public:
DataBlock(const EntryData& data);
// 引进一块内存作为 buf_ptr->buf 的内容.
// 例如从数据库中获取结果
DataBlock(void* mem, int len);
// 复制构造函数:
DataBlock(const DataBlock& orig) :
data_size(orig.data_size),
capacity(orig.capacity),
buf_ptr(orig.buf_ptr) { ++buf_ptr->use; }
// 赋值操作符:
DataBlock& operator=(const DataBlock& oth)
data_size = oth.data_size;
capacity = oth.capacity;
if(--buf_ptr->use == 0)
delete buf_ptr;
buf_ptr = oth.buf_ptr;
return *this;
~DataBlock() {
if(--buf_ptr->use == 0) { delete buf_ptr; }
// data()函数因 Dbt 构造函数不支持const char*而被迫返回 char*
// data() 返回的指针是应该被修改的.
const char* data() const { return buf_ptr->buf; }
int size() const { return data_size; }
private:
void pack_str(const std::string& s);
static const int init_capacity = 100;
int data_size; // 记录数据块的长度.
int capacity; // 已经分配到 buf 的内存大小.
class SmartPtr; // 前向声明.
SmartPtr* buf_ptr;
class SmartPtr
friend class DataBlock;
char* buf;
int use;
SmartPtr(char* p) : buf(p), use(1) {}
~SmartPtr() { delete [] buf; }
private:
std::string name; // entry name
LabelContainerType labels; // entry labels list
}; // class EntryData
#endif
//////db_access.cc/////////////
#include <iostream>
#include <cstring>
#include <cstdlib>
#include <vector>
#include <algorithm>
#include "directory.h"
#include "db_access.h"
using namespace std;
static Path DataDir("~/mydict_data"); // default value, can be changed
const Path& get_datadir() { return DataDir; }
static DbEnv myEnv(0);
static Db db_bynam(&myEnv, 0); // using name as key
static Db db_bylab(&myEnv, 0); // using label as key
static int generate_keys_for_db_bylab
(Db* sdbp, const Dbt* pkey, const Dbt* pdata, Dbt* skey)
EntryData entry_data(pdata->get_data(), pdata->get_size());
int lab_num = entry_data.get_labels().size();
Dbt* tmpdbt = (Dbt*) malloc( sizeof(Dbt) * lab_num );
memset(tmpdbt, 0, sizeof(Dbt) * lab_num);
EntryData::LabelContainerType::const_iterator
lab_it = entry_data.get_labels().begin(), lab_end = entry_data.get_labels().end();
for(int i = 0; lab_it != lab_end; ++lab_it, ++i) {
tmpdbt[ i ].set_data( (void*)lab_it->c_str() );
tmpdbt[ i ].set_size( lab_it->size() );
skey->set_flags(DB_DBT_MULTIPLE | DB_DBT_APPMALLOC);
skey->set_data(tmpdbt);
skey->set_size(lab_num);
return 0;
//@Return Value: return non-zero at error
extern int database_setup()
const string DBEnvHome (DataDir + "DBEnv");
const string dbfile_bynam("dbfile_bynam");
const string dbfile_bylab("dbfile_bylab");
db_bylab.set_flags(DB_DUPSORT);
const u_int32_t env_flags = DB_CREATE | DB_INIT_MPOOL;
const u_int32_t db_flags = DB_CREATE;
rmkdir(DBEnvHome);
try
myEnv.open(DBEnvHome.c_str(), env_flags, 0);
db_bynam.open(NULL, dbfile_bynam.c_str(), NULL, DB_BTREE, db_flags, 0);
db_bylab.open(NULL, dbfile_bylab.c_str(), NULL, DB_BTREE, db_flags, 0);
db_bynam.associate(NULL, &db_bylab, generate_keys_for_db_bylab, 0);
} catch(DbException &e) {
cerr << "Err when open DBEnv or Db: " << e.what() << endl;
return -1;
} catch(std::exception& e) {
cerr << "Err when open DBEnv or Db: " << e.what() << endl;
return -1;
return 0;
int database_close()
try {
db_bylab.close(0);
db_bynam.close(0);
myEnv.close(0);
} catch(DbException &e) {
cerr << e.what();
return -1;
} catch(std::exception &e) {
cerr << e.what();
return -1;
return 0;
// 返回Dbt::put()的返回值
int store_entry_data(const EntryData& e, u_int32_t flags)
int res = 0;
try {
EntryData::DataBlock blk(e);
// data()返回的buf中存放的第一个字符串便是 e.get_name().
Dbt key ( (void*)blk.data(), strlen(blk.data()) + 1 );
Dbt data( (void*)blk.data(), blk.size() );
res = db_bynam.put(NULL, &key, &data, flags);
} catch (DbException& e) {
cerr << e.what() << endl;
throw; // 重新抛出.
return res;
// 返回 Db::get()的返回值, 调用成功时 EntryData* e的值才有意义
int get_entry_data
(const std::string& entry_name, EntryData* e, u_int32_t flags)
Dbt key( (void*)entry_name.c_str(), entry_name.size() + 1 );
Dbt data;
data.set_flags(DB_DBT_MALLOC);
int res = db_bynam.get(NULL, &key, &data, flags);
if(res == 0)
new (e) EntryData( data.get_data(), data.get_size() );
free( data.get_data() );
return res;
int rm_entry_data(const std::string& name)
Dbt key( (void*)name.c_str(), name.size() + 1 );
cout << "to remove: \'" << name << "\'" << endl;
int res = db_bynam.del(NULL, &key, 0);
return res;
EntryData::EntryData(const std::string& s, const char* labels_arr[]) : name(s)
{ // labels_arr 需要以 NULL 结尾.
for(const char** i = labels_arr; *i != NULL; i++)
labels.push_back(*i);
EntryData::EntryData(const void* mem_blk, const int len)
const char* buf = (const char*)mem_blk;
int consumed = 0; // 已经消耗的mem_blk的大小.
name = buf; // 第一串为 name
consumed += name.size() + 1;
for (string label = buf + consumed;
consumed < len;
consumed += label.size() + 1)
label = buf + consumed;
labels.push_back(label);
void EntryData::add_label(const string& new_label)
if(find(labels.begin(), labels.end(), new_label)
== labels.end())
labels.push_back(new_label);
void EntryData::rem_label(const string& to_rem)
LabelContainerType::iterator iter = find(labels.begin(), labels.end(), to_rem);
if(iter != labels.end())
labels.erase(iter);
void EntryData::show() const {
cout << "name: " << name << "; labels: ";
LabelContainerType::const_iterator it, end = labels.end();
for(it = labels.begin(); it != end; ++it)
cout << *it << " ";
cout << endl;
EntryData::DataBlock::DataBlock(const EntryData& data) :
data_size(0),
capacity(init_capacity),
buf_ptr(new SmartPtr(new char[init_capacity]))
pack_str(data.name);
for(EntryData::LabelContainerType::const_iterator \
i = data.labels.begin();
i != data.labels.end();
++i) { pack_str(*i); }
void EntryData::DataBlock::pack_str(const std::string& s)
int string_size = s.size() + 1; // to put sting in buf separately.
if(capacity >= data_size + string_size) {
memcpy(buf_ptr->buf + data_size, s.c_str(), string_size);
else {
capacity = (data_size + string_size)*2; // 分配尽可能大的空间.
buf_ptr->buf = (char*)realloc(buf_ptr->buf, capacity);
memcpy(buf_ptr->buf + data_size, s.c_str(), string_size);
data_size += string_size;
//////////// test_put.cc ///////////
#include <iostream>
#include <string>
#include <cstdlib>
#include "db_access.h"
using namespace std;
int main(int argc, char** argv)
if(argc < 2) { exit(EXIT_FAILURE); }
DBSetup setupup_mydb;
int res = 0;
EntryData ed(argv[1], (const char**)argv + 2);
res = store_entry_data(ed);
if(res != 0) {
cerr << db_strerror(res) << endl;
return res;
return 0;
// To Compile:
// $ g++ -ldb_cxx -lboost_regex -o test_put test_put.cc db_access.cc directory.cc
//////////// test_update.cc ///////////
#include <iostream>
#include <cstdlib>
#include <string>
#include <boost/program_options.hpp>
#include "db_access.h"
using namespace std;
namespace po = boost::program_options;
int main(int argc, char** argv)
if(argc < 2) { exit(EXIT_SUCCESS); }
DBSetup setupup_mydb;
int res = 0;
po::options_description cmdopts("Allowed options");
po::positional_options_description pos_opts;
cmdopts.add_options()
("entry", "Specify the entry that will be edited")
("addlabel,a", po::value< vector<string> >(),
"add a label for specified entry")
("removelabel,r", po::value< vector<string> >(),
"remove the label of specified entry")
pos_opts.add("entry", 1);
po::variables_map vm;
store( po::command_line_parser(argc, argv).
options(cmdopts).positional(pos_opts).run(), vm );
notify(vm);
EntryData entry_data;
if(vm.count("entry")) {
const string& entry_to_edit = vm["entry"].as<string>();
res = get_entry_data( entry_to_edit, &entry_data );
switch (res)
case 0:
break;
case DB_NOTFOUND:
cerr << "No entry named: \'"
<< entry_to_edit << "\'\n";
return res;
break;
default:
cerr << db_strerror(res) << endl;
return res;
} else {
cerr << "No entry specified\n";
exit(EXIT_FAILURE);
EntryData new_entry_data(entry_data);
typedef vector<string>::const_iterator VS_CI;
if(vm.count("addlabel")) {
const vector<string>& to_adds = vm["addlabel"].as< vector<string> >();
VS_CI end = to_adds.end();
for(VS_CI i = to_adds.begin(); i != end; ++i) {
new_entry_data.add_label(*i);
if(vm.count("removelabel")) {
const vector<string>& to_rems = vm["removelabel"].as< vector<string> >();
VS_CI end = to_rems.end();
for(VS_CI i = to_rems.begin(); i != end; ++i) {
new_entry_data.rem_label(*i);
cout << "Old data| ";
entry_data.show();
cout << "New data| ";
new_entry_data.show();
res = store_entry_data(new_entry_data, 0); // set flags to zero permitting Over Write
if(res != 0) {
cerr << db_strerror(res) << endl;
return res;
return 0;
// To Compile:
// $ g++ -ldb_cxx -lboost_regex -lboost_program_options -o test_update test_update.cc db_access.cc directory.cc////////directory.h//////
#ifndef __DIRECTORY_H__
#define __DIRECTORY_H__
#include <string>
#include <string>
#include <sys/types.h>
using std::string;
class Path
public:
Path() {}
Path(const std::string&);
Path(const char* raw) { new (this) Path(string(raw)); }
Path upper() const;
void operator+= (const std::string&);
// convert to string (char*):
//operator std::string() const {return spath;}
operator const char*() const {return spath.c_str();}
const std::string& str() const {return spath;}
private:
std::string spath; // the real path
inline Path operator+(const Path& L, const string& R)
Path p(L);
p += R;
return p;
int rmkdir(const string& path, const mode_t mode = 0744, const int depth = -1);
#endif
///////directory.cc///////
#ifndef __DIRECTORY_H__
#define __DIRECTORY_H__
#include <string>
#include <string>
#include <sys/types.h>
using std::string;
class Path
public:
Path() {}
Path(const std::string&);
Path(const char* raw) { new (this) Path(string(raw)); }
Path upper() const;
void operator+= (const std::string&);
// convert to string (char*):
//operator std::string() const {return spath;}
operator const char*() const {return spath.c_str();}
const std::string& str() const {return spath;}
private:
std::string spath; // the real path
inline Path operator+(const Path& L, const string& R)
Path p(L);
p += R;
return p;
int rmkdir(const string& path, const mode_t mode = 0744, const int depth = -1);
#endif
//////////////////// All the code is above ////////////////////////////////
Use the under command
$ g++ -ldb_cxx -lboost_regex -o test_put test_put.cc db_access.cc directory.cc
to get a test program that can insert a record to database.
To insert a record, use the under command:
$ ./test_put ubuntu linux os
It will store an EntryData named 'ubuntu' and two labels('linux', 'os') to database.
Use the under command
$ g++ -ldb_cxx -lboost_regex -lboost_program_options -o test_update test_update.cc db_access.cc directory.cc
to get a test program that can update the existing records.
To update the record, use the under command:
$ ./test_update ubuntu -r linux -a canonical
It will update the with the key 'ubuntu', with the label 'linux' removed and a new
label 'canonical'.
Great thanks to you if you've read and understood my code!
I've said that the DB_SECONDARY_BAD exception is random. The same operation may cause
exception in one time and may goes well in another time.
As I've test below:
## Lines not started with '$' is the stdout or stderr.
$ ./test_put linux os linus
$ ./test_update linux -r os
Old data| name: linux; labels: os linus
New data| name: linux; labels: linus
$ ./test_update linux -r linus
Old data| name: linux; labels: linus
New data| name: linux; labels:
dbfile_bynam: DB_SECONDARY_BAD: Secondary index inconsistent with primary
Db::put: DB_SECONDARY_BAD: Secondary index inconsistent with primary
terminate called after throwing an instance of 'DbException'
what(): Db::put: DB_SECONDARY_BAD: Secondary index inconsistent with primary
已放弃
Look! I've received a DB_SECONDARY_BAD exception. But thus exception does not always
happen even under the same operation.
For the exception is random, you may have not the "luck" to get it during your test.
So let's insert a record by:
$ ./test_put t
and then give it a great number of labels:
$ for((i = 0; i != 100; ++i)); do ./test_update t -a "label_$i"; done
and then:
$ for((i = 0; i != 100; ++i)); do ./test_update t -r "label_$i"; done
Thus, the DB_SECONDARY_BAD exception is almost certain to happen.
I've been confused by the problem for times. I would appreciate if someone can solve
my problem.
Many thanks!
Wonder -
Can we add our own menu in sap easy access screen
can we add our own menu in sap easy access screen
along with the existing menu items...
ex : can i add the new menu item as help1 on that screen
regards
raghugo to transection se43 ...ther e u can create ur own menu list.. and ur cusomize transection to that perticular menu list.....
You can enter the area menu in the command field like any other transaction code, also in menu exits can be filled with a area menu.
You might play a little with S000 and S001 - when you enter them, the menu tree of easy access changes.
Do you search for the menu exits to append your area menu into the standard menu tree?
Message was edited by: kishan negi -
Hello,
I am quite disappointed about BDB 5. One of the most nasty bugs (#18104) still
exists. As soon as you want to use the set_thread_count() feature, BDB will not
free the thread-control-block. If you connect/disconnect, BDB will stop working
quite early. You can re-produce this issue with any `db_*` tool.
The testcase:
#include <stdlib.h>
#include <db.h>
#define DIRECTORY "/tmp/db"
int main()
/* open environment */
DB_ENV *handle;
int status = db_env_create( &handle, 0 );
status = handle->set_cachesize( handle, 0, 32*1024*1024, 0 );
status = handle->set_thread_count( handle, 0x100 );
status = handle->open( handle, DIRECTORY, DB_CREATE, 0644 );
if( status != 0 )
return 1;
/* raise error "Unable to allocate thread control block" */
for( ;; )
system( "db_stat -e -h " DIRECTORY " | grep process/thread | wc" );
return 0;
}Hi Sandra,
Hi Greg,
Our architecture is quite simple: a cron-job runs ENV->failchk() and ENV->txn_checkpoint()
once a minute (which should be fine, shouldn't it?)
The problem, neither ENV->close() nor ENV->failchk() removes outdated items from the
thread-control-block. One would expect, that the PID is added to the block as soon as the
process connects and removed when the process disconnects. But it is not.
If the block runs out of memory, BDB requires a recovery (see the down below testcase).
Usually ENV->failchk() cleans the thread-control-block, as soon as there are more items in
the block than "thread_count". Today three times it did not even remove them, if there were
more than "thread_count" items in the block - but this happend sporadic so it was difficult
to create a testcase.
Once ENV->failchk() cleans the thread-control-block, BDB works as expected. If a process
connects, the PID is added to the block, and as soon as the process disconnects, the PID is
removed from the thread-control-block. You can test this by looping the first loop 1090 times.
The testcase:
#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
#include <db.h>
#include <errno.h>
#define DIRECTORY "/tmp/db"
static int bdb_is_alive( DB_ENV *dbenv, pid_t pid, db_threadid_t tid, u_int32_t flags )
int status;
status = kill( pid, 0 );
if( status != -1 )
return 1;
if( errno == ESRCH )
return 0;
exit( 1 ); /* should never happen */
int main()
system( "mkdir -p " DIRECTORY );
system( "db_recover -h " DIRECTORY );
system( "rm -rfv " DIRECTORY "/*" );
/* open environment */
int status, i;
DB_ENV *handle;
status = db_env_create( &handle, 0 );
status = handle->set_cachesize( handle, 0, 32*1024*1024, 0 );
status = handle->set_thread_count( handle, 1091 );
status = handle->set_isalive( handle, bdb_is_alive );
status = handle->open( handle, DIRECTORY, DB_CREATE, 0644 );
if( status != 0 )
return 1; /* should never happen */
status = handle->failchk( handle, 0 );
status = handle->close( handle, 0 );
/* Now start workers (`db_stat`) + failchks() */
for( i=0; i < 1089; ++i ) /* thread_count - 2 */
fprintf(stderr,"Number of items in the thread-control-block: "); fflush(stdout);
system( "db_stat -e -h " DIRECTORY " | grep process/thread | wc -l" );
status = db_env_create( &handle, 0 );
status = handle->set_isalive( handle, bdb_is_alive );
status = handle->open( handle, DIRECTORY, DB_CREATE, 0644 );
if( status != 0 )
return 1; /* should never happen */
status = handle->failchk( handle, 0 ); /* strange - does not remove the process-entries created by `db_stat` */
if( status != 0 )
return 1; /* should never happen */
status = handle->close( handle, 0 );
/* raise error: "Unable to allocate thread control block" */
for( i=1; i < 422; ++i )
fprintf(stderr,"Number of items in the thread-control-block: "); fflush(stdout);
system( "db_stat -e -h " DIRECTORY " | grep process/thread | wc -l" );
/* You should see on stderr:
db_stat: Unable to allocate thread control block
db_stat: Unable to allocate thread control block
db_stat: DB_ENV->open: /tmp/db: Cannot allocate memory
fprintf(stderr,"BDB is dead now. Only `db_recover` helps...\n%s\n",db_version(NULL,NULL,NULL));
return 0;
} -
Urgent Entries for application 11 still exist in the extraction queue
Hi All,
In LBWE when i am trying to mainting structure its not allowing to add fields to ExtractStrucutre.
Following is the error iam getting.
Entries for application 11 still exist in the extraction queue ->
I have set the Update to inactive and trying to add fields to Extract strucutre .
Morover,
I have already deleted setuptable entries for this application Component 11 and i checked in rsa3, no records are there.
Regards,
C.V.
Message was edited by: P.C.V.PCV,
Here are the steps. Make sure you do them when there is no posting going on.
1) Using transaction SA38, execute program RMBWV311. This will send the data from the extraction queue to delta queue for application 11.
2) Run your 2lis_11_***** info packages to bring the delta records into BW. Make sure to run these info packages twice because the delta is cleared on R/3 only if you run them twice. It is designed this way to accomodate the delta repetition functionality.
Just to make sure, verify that you don't see any data in RSA7, LBWQ and if you use RSA3, the system should not extract any data.
You should be able to change the extract structure now.
Abdul -
SAP Standard Exits for ME51n/52n/53n
Hi Friends,
Please tell me is there any SAP standard Exits for Purchase requisition Me51n/me52n/me53n..
Thanks in Advance..........
Ravihi
this are
following enhancements that u can use
M06B0004 Number range and document number
M06B0005 Changes to comm. structure for overall release of requi
M06E0004 Changes to communication structure for release purch. d
M06E0005 Role determination for release of purchasing documents
ME590001 Grouping of requsitions for PO split in ME59
MEETA001 Define schedule line type (backlog, immed. req., previe
MEFLD004 Determine earliest delivery date f. check w. GR (only P
MELAB001 Gen. forecast delivery schedules: Transfer schedule imp
MEQUERY1 Enhancement to Document Overview ME21N/ME51N
MEVME001 WE default quantity calc. and over/ underdelivery toler
MM06E001 User exits for EDI inbound and outbound purchasing docu
MM06E003 Number range and document number
MM06E004 Control import data screens in purchase order
MM06E005 Customer fields in purchasing document
MM06E007 Change document for requisitions upon conversion into P
MM06E008 Monitoring of contr. target value in case of release or
MM06E009 Relevant texts for "Texts exist" indicator
MM06E010 Field selection for vendor address
MM06E011 Activate PReq Block
MMAL0001 ALE source list distribution: Outbound processing
MMAL0002 ALE source list distribution: Inbound processing
MMAL0003 ALE purcasing info record distribution: Outbound proces
MMAL0004 ALE purchasing info record distribution: Inbound proces
MMDA0001 Default delivery addresses
MMFAB001 User exit for generation of release order
welli mstill searching for that particular enhancement for ur requirment if i found i will let u know
this the enhancement that u can use
MEQUERY1 Enhancement to Document Overview ME21N/ME51N
in this
u can use the following componets
EXIT_SAPLMEQUERY_001
EXIT_SAPLMEQUERY_002
also there is one more
MM06E005 Customer fields in purchasing document
Cheers
Snehi
Edited by: snehi chouhan on Jul 31, 2008 1:32 PM -
Can we add the standard includes inside a function exit.
Hi,
Can we add the standard includes inside a function exit.
I want to add 4 to 5 standard includes. If iam adding it it says report or program already exists.
Can anyone tell me is it possible or we can modify the only the data which is coming to that function module .
Please help me on this.
Thanks,
Rose.hi santhosh,
The data needed for those includes are also exist in the funtion module exit. I want to add those includes and in one include just i want to add some 10 to 15 lines of code. Is it possible.
If i include all those includes inside the function exit it says report or program name already exists. When i double clicked on the error it takes me to a line in 1 include which has function-pool statement.
How can i eradicate this error.
Can u please help me on this. -
Locks to KM files created long time ago still exist
It was found in our portal that locks to some KM files still exist after one year has passed.
I understand that I can unlock the file one by one. My questions are:
1. How to unlock all of the files in one shot? I tried to just unlock the
whole folder but it seems it does not work. The only way I found is
either to unlock them one by one or run the resource report which can
unlock all the locked files.
2. What is the possible reason that those locks still exist after one
year of the lock creation time and what is the step we can take to
prevent this from happening again?
Thanks!Hi,
You can use the [Resource Locks Report|http://help.sap.com/saphelp_nw04/helpdata/en/14/a4d14030490b06e10000000a155106/frameset.htm] to unlock all the locked files in a given scope.
It will be available in Content Administration -> KM Content -> Tool Box-> Reports
I dont think locks will be removed even after 1 year without doing any thing to unlock
The lock may remain. Also we cannot have a permission only to lock/unlock a resource.
We can by the way remove the lock command from a specific KM Layout.
Regards
BP -
Is WebClient still existing in CRM7.0?
Experts:
Information about CRM WebClient is only seen under CRM2007 in SMP.
Is WebClient still existing in CRM7.0?
Blogs and links appreciated.
Best regards!Very much. Indeed going from strength to strength, got more advanced. I guess folks at SAP are taking time to keep pace with the documentation in SMP. The CRM 7 section is yet to be updated in SMP with more Webclient UI documentation. An SAP insider may throw more light on this.
Maybe you are looking for
-
The duplex issue in the Crystal report
I am developing Purchase Order print document. <p class="MsoNormal">I have a Crystal Reports 9 for Visual Studio .NET.</p> <p class="MsoNormal">My program prints set of the P/Os and each of metioned P/O has its own Terms and Condition Information.(
-
Pages 5.0 update - documents not opening
Pages has been updated to 5.0. Previous documents had information removed and then will not open saying that a higher version of Pages is required. New documents I have created since the update will also not open saying that I need a higher version
-
I created an extra iTunes library for my wife and now i can't find either of them
I created an extra iTunes library for my wife by following the instructions on Apples website and everything was working perfect. So when I opened iTunes i could select whether i was using her phone or mine. Everything was perfect then today I have t
-
[Microsoft][ODBC SQL Server Driver][SQL Server]
I have a stored procedure named windog_ReadSpecifications in a database called AssetDB and schema dbo, one of my users is getting the following errors when she try's to use a program which executes the stored procedure "Error description:COM error m
-
Flickr integration with Front Row?
I have what I think is the latest version of Front Row (2.2.1, 314). I've seen some conflicting hearsay on the various web forums that there is a way to view flickr photos within Front Row. But I don't see that functionality in Front Row. Anyone know