Enable Multiple entry at table maintanance at a time by more then one user
Hello all,
My requirment is to enable the multple user, can login to the same table for making there entry simultaneosuly . i have created the table and table maintance as well. and i have created the new lock object and added the code accrdingly and i have used the custom fm which is generated in the tablemainta function group.
forex: table xyz user 1 , 2, 3, 4, 5,so on..
table should allow all user tomake there entry at time and the entry edited one user should be disabled to other user. I have gone the forum i didnt found the correct one ..plz guide me
regards
raju
>
swathi4 m wrote:
> This is not happening.
What is not happening? If you want to control update access to a database table, you'll need to implement a lock object. Read the SAP help on lock objects or search this forum.
Similar Messages
-
I have to make Multiple entry at table maintanance at a time
Hello all,
My requirment is to enable the multple user can loginto the same table for making there entry simultaneosuly .
i have created the table and table maintance as well. and i have created the new lock object and added the code accrdingly and i have used the custom fm which is generated in the tablemainta function group.
forex: table xyz
user 1 , 2, 3, 4, 5,so on..
table should allow all user tomake there entry at time and the entry edited one user should be disabled to other user.
I have gone the forum i didnt found the correct one ..plz guide me ..plz find the attached code .i got this code and referredthe samein my prog ..any suggestions on the below.
1. Create table ZTEST_SHUKS3.
2. Create table maintenance generator for the table.
3 Create lock object EYTSS_E433SH in SE11. Give it name as EZTEST_SHUKS3.
4 create a report ZREP_SHUKS3 and transaction code ZTEST_SHUKS3 to call this report. This tcode will call table mainatance generator of table ZTEST_SHUKS3 .
5 create the report as below
6 Now open table maintenance function group(ZTEST_SHUKS3) in SE80.We know for table maintenance SAP automatically creates code in the function group. Now we will make some modification in that existing code to change the behavior. Open the screen you created through table maintenance and add one module.
screen: 0001
double clik on screen and add one module in PBO of the screen
loop at extract with control
tctrl_ZTEST_SHUKS3 CURSOR NEXTLINE.
MODULE LIST SHOW LISTE
ADD HERE
MODULE m_change_locking
Check the code below to be added in the module m_change_locking.
MODULE m_change_locking OUTPUT.
*Call the function module corresponding to the lock object we created
CALL FUNCTION 'ENQUEUE_EZTEST_SHUKS3'
EXPORTING
matnr = ztest_shuks3-matnr
werks = ztest_shuks3-werks
EXCEPTIONS
foreign_lock = 1
system_failure = 2
OTHERS = 3.
IF sy-subrc NE 0.
row is locked..hence gray..
LOOP AT SCREEN.
screen-input = 0.
MODIFY SCREEN.
ENDLOOP.
ENDIF.
ENDMODULE. " m_change_locking OUTPUT
REPORT zrep_shuks3.
**Selection range for view maintenance
DATA:
BEGIN OF selekttab OCCURS 1. "Selektionsbereich
INCLUDE STRUCTURE vimsellist.
DATA: END OF selekttab,
**Table of inactive CUA functions for view maintenance
BEGIN OF excl_cua_funct OCCURS 1. "inaktive CUA-Fkt bei View-Pflege
INCLUDE STRUCTURE vimexclfun.
DATA: END OF excl_cua_funct.
DATA: lt_enq_del TYPE STANDARD TABLE OF seqg3,
lt_enq_read TYPE STANDARD TABLE OF seqg7,
lw_enq_read TYPE seqg7,
lw_enq_del TYPE seqg3,
lv_subrc TYPE sy-subrc.
*Read all the lock details in system
CALL FUNCTION 'ENQUE_READ2'
EXPORTING
gclient = sy-mandt
gname = ' '
guname = '*'
TABLES
enq = lt_enq_read.
*We will search entry for table level lock for our table
LOOP AT lt_enq_read INTO lw_enq_read
WHERE gname EQ 'RSTABLE'
AND garg CS 'ZTEST_SHUKS3'.
MOVE-CORRESPONDING lw_enq_read TO lw_enq_del.
APPEND lw_enq_del TO lt_enq_del.
ENDLOOP.
*Delete table level lock entry for our table
CALL FUNCTION 'ENQUE_DELETE'
EXPORTING
check_upd_requests = 1
IMPORTING
subrc = lv_subrc
TABLES
enq = lt_enq_del.
*Now call the table maintenace generator.
CALL FUNCTION 'VIEW_MAINTENANCE_CALL'
EXPORTING
action = 'U'
view_name = 'ZTEST_SHUKS3'
show_selection_popup = 'X'
TABLES
dba_sellist = selekttab
excl_cua_funct = excl_cua_funct.
I followed the same steps but still not getting the multiple user enable .
plz help
regards
Raju
Edited by: abaprthree on Jul 22, 2009 7:54 PMHi,
I think you are looking for the report which will allow only for entries not for change. In this case, at PBO you write the code to make all the rows in display mode which have records using LOOP at SCREEN .....ENDLOOP. When you click on on NEW ENTRY button, add blank rows and put user entries. When you save,check for existing entries in the table because many users are entering the data at the same time, so check for duplicates KEY entries and UPDATE the table on SAVE button. If you will go in this way, I don't think you have to go for LOCK object. It's required only if you are going for EDIT mode. -
How can I restrict more then one user to access the table?
Hi !
I have a problem and two solutions and I am a bit confused as to
which one is the best one and/or can there be any better way of
handling the problem ?
Problem : I have to update a key field of a table when I update
it in the form 5.0 screen. I am basically doing a maintenance of
a table and if a certain field is updated then the change has to
be reflected in two more tables. But the issue is that the field
is a part of the key in those two tables. So all I can think of
is that I need to insert new set or rows for that new value of
the field and delete the old set of records for old values of
the field.
There are two ways of doing it;
1.One option can be to explicitely define two cursors separately
and fetch the values in them one by one and then insert the new
records and then delete the old records in both the tables. This
I feel will be a cumbersome process both in terms of processing
time and the coding.
2.Second option I was thinking can be to create two flat tables
(without keys) and insert the values in them and update the
changed field there and then insert the rows in the respective
tables. Delete the old records in the main tables and delets the
records in these flat tables. This is a bit more faster and
easier to predict and code. This seems to be a better option for
me.
Any comments on these ?
In both the cases I was thinking of making some provision so
that more then one person can't update the table simultaneously.
Since if there are more then one persons doing the processing
then some inconsistency might creep into the whole process.
This is easier to do in the second process as if I check the
data in the flat tables and if there is some data then I can
presume that some one is doing the processing and I can ask the
other person to hold for a while. But in this case how can I
stop more then two people to simultaneously check for the empty
table and start inserting the record ?
I was just thinking of having a sepatare table having only one
field and this will be a key field and as the process begins the
process will insert a fix value say 'Y' in the key field and at
the end of the process the record will be deleted and this way
we can restrict the user to access the process more then one at
a time..? Since you can't have same value of the key in a table
more then once.
Any better way of handling it will be deeply appreciated.
How about locking the table at the begining and releasing the
lock at the end ? Will there be any issue in that? since I am
inserting and deleting the rows in the same transaction.
Comments welcome,
Shobhit
nullHow about performing the update IN the database using a stored
procedure?
By using non-database fields on your form to get the
information, you can then call the procedure in the database to
perform the updates. If an error occurs in the procedure you
rollback, if necessary, and send a message or status back to the
form. If it succeeds you might wish to commit and then re-
execute the form's query -- using either the original key values
or the new key values...
null -
To delete multiple entries in table control in module pool
Hi,
Please help me out to know , <b>how to delete multiple entries from table control</b> when multiple lines in table control are selected.
Regards,
Irfan Hussainhai,
you can do it inthis way.
in the PAI event.
loop at <table control name>
module del_itab.
endloop.
in the nodule,write the folowing code.
if <tablecontrol>-fieldname = 'X'.
delete <tablecontrol-itab>
endif.
cheers -
How to maintain the entries using table maintanance??
Hi,
I have created a Ztable. and I have created table maintanance generator, then attached the table to a
Tcode. but I am unable to maintain the entries in table maintanance??
Can anyone help me out
Regards
DeviHi this will help u.
Hi,
Go to SE11 enter table name ->change
Utilities-> Table Maintenance Generator
delete the Table maintenance by pressing delete button on menu,
then start creating it again.
Enter Auth.Group as &NC&
Enter function group < some name>
Maintenance Type -> One step
Overview screen -> some Number (1 or 2)
Press create
enter dev class and save, activate.
Go to SM 30 and check again.
Reward if useful
Regards,
Hema Sundara. -
How to insert multiple entries in table control
Hi All,
I want to insert multiple entries in table control in BDC program.Can any body help in this regard.
Thanks,
Satish.Hi,
Go through the following 2 example programs:
THis is example to upload the Bank details of the Vendor which has the TC.
REPORT zprataptable2
NO STANDARD PAGE HEADING LINE-SIZE 255.
DATA : BEGIN OF itab OCCURS 0,
i1 TYPE i,
lifnr LIKE rf02k-lifnr,
bukrs LIKE rf02k-bukrs,
ekorg LIKE rf02k-ekorg,
ktokk LIKE rf02k-ktokk,
anred LIKE lfa1-anred,
name1 LIKE lfa1-name1,
sortl LIKE lfa1-sortl,
land1 LIKE lfa1-land1,
akont LIKE lfb1-akont,
fdgrv LIKE lfb1-fdgrv,
waers LIKE lfm1-waers,
END OF itab.
DATA : BEGIN OF jtab OCCURS 0,
j1 TYPE i,
banks LIKE lfbk-banks,
bankl LIKE lfbk-bankl,
bankn LIKE lfbk-bankn,
END OF jtab.
DATA : cnt(4) TYPE n.
DATA : fdt(20) TYPE c.
DATA : c TYPE i.
INCLUDE bdcrecx1.
START-OF-SELECTION.
CALL FUNCTION 'WS_UPLOAD'
EXPORTING
filename = 'C:\first1.txt'
filetype = 'DAT'
TABLES
data_tab = itab.
CALL FUNCTION 'WS_UPLOAD'
EXPORTING
filename = 'C:\second.txt'
filetype = 'DAT'
TABLES
data_tab = jtab.
LOOP AT itab.
PERFORM bdc_dynpro USING 'SAPMF02K' '0100'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RF02K-KTOKK'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'RF02K-LIFNR'
itab-lifnr.
PERFORM bdc_field USING 'RF02K-BUKRS'
itab-bukrs.
PERFORM bdc_field USING 'RF02K-EKORG'
itab-ekorg.
PERFORM bdc_field USING 'RF02K-KTOKK'
itab-ktokk.
PERFORM bdc_dynpro USING 'SAPMF02K' '0110'.
PERFORM bdc_field USING 'BDC_CURSOR'
'LFA1-LAND1'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'LFA1-ANRED'
itab-anred.
PERFORM bdc_field USING 'LFA1-NAME1'
itab-name1.
PERFORM bdc_field USING 'LFA1-SORTL'
itab-sortl.
PERFORM bdc_field USING 'LFA1-LAND1'
itab-land1.
PERFORM bdc_dynpro USING 'SAPMF02K' '0120'.
PERFORM bdc_field USING 'BDC_CURSOR'
'LFA1-KUNNR'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_dynpro USING 'SAPMF02K' '0130'.
PERFORM bdc_field USING 'BDC_CURSOR'
'LFBK-BANKN(01)'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=ENTR'.
cnt = 0.
LOOP AT jtab WHERE j1 = itab-i1.
cnt = cnt + 1.
CONCATENATE 'LFBK-BANKS(' cnt ')' INTO fdt.
PERFORM bdc_field USING fdt jtab-banks.
CONCATENATE 'LFBK-BANKL(' cnt ')' INTO fdt.
PERFORM bdc_field USING fdt jtab-bankl.
CONCATENATE 'LFBK-BANKN(' cnt ')' INTO fdt.
PERFORM bdc_field USING fdt jtab-bankn.
IF cnt = 5.
cnt = 0.
PERFORM bdc_dynpro USING 'SAPMF02K' '0130'.
PERFORM bdc_field USING 'BDC_CURSOR'
'LFBK-BANKS(01)'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=P+'.
PERFORM bdc_dynpro USING 'SAPMF02K' '0130'.
PERFORM bdc_field USING 'BDC_CURSOR'
'LFBK-BANKN(02)'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=ENTR'.
ENDIF.
ENDLOOP.
PERFORM bdc_dynpro USING 'SAPMF02K' '0130'.
PERFORM bdc_field USING 'BDC_CURSOR'
'LFBK-BANKS(01)'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=ENTR'.
PERFORM bdc_dynpro USING 'SAPMF02K' '0210'.
PERFORM bdc_field USING 'BDC_CURSOR'
'LFB1-FDGRV'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'LFB1-AKONT'
itab-akont.
PERFORM bdc_field USING 'LFB1-FDGRV'
itab-fdgrv.
PERFORM bdc_dynpro USING 'SAPMF02K' '0215'.
PERFORM bdc_field USING 'BDC_CURSOR'
'LFB1-ZTERM'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_dynpro USING 'SAPMF02K' '0220'.
PERFORM bdc_field USING 'BDC_CURSOR'
'LFB5-MAHNA'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_dynpro USING 'SAPMF02K' '0310'.
PERFORM bdc_field USING 'BDC_CURSOR'
'LFM1-WAERS'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'LFM1-WAERS'
itab-waers.
PERFORM bdc_dynpro USING 'SAPMF02K' '0320'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RF02K-LIFNR'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=ENTR'.
PERFORM bdc_dynpro USING 'SAPLSPO1' '0300'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=YES'.
PERFORM bdc_transaction USING 'XK01'.
ENDLOOP.
PERFORM close_group.
ABAP Name : ZMM_PR_UPLOAD_MAT
Description : PR Upload BDC Program(With Material)
Created by : Anji Reddy V
Created on : 04/11/2004
Description : This Program is used to Upload the Purchase
Requisition data Using the Transaction ME51N.
Modification Log:
Date Programmer Correction Description
04/11/2004 Anji Reddy Initial
REPORT zmm_pr_upload_mat
NO STANDARD PAGE HEADING
LINE-SIZE 255.
Standard Include for Selection Screen
INCLUDE bdcrecx1.
Internal Table for Upload Data
DATA: BEGIN OF i_pr OCCURS 0,
Header Screen
sno(3), " SNo
bsart(004), " PR Type
epstp(001), " Item Category
knttp(001), " Account Assignment
eeind(010), " Delivery Date
lpein(001), " Category of Del Date
werks(004), " Plant
lgort(004), " Storage Location
ekgrp(003), " Purchasing Group
matkl(009), " Material Group
bednr(010), " Tracking No
afnam(012), " Requisitioner
Item Details
matnr(018), " Material No
menge(017), " Quantity
badat(010),
frgdt(010),
preis(014), " Valuation Price
waers(005), " Currency
peinh(005),
wepos(001),
repos(001),
sakto(010), " GL Account
kostl(010), " Cost Center
bnfpo(005),
END OF i_pr.
Internal Table for header Data
DATA: BEGIN OF it_header OCCURS 0,
sno(3), " SNo
bsart(004), " PR Type
epstp(001), " Item Category
knttp(001), " Account Assignment
eeind(010), " Delivery Date
werks(004), " Plant
lgort(004), " Storage Location
ekgrp(003), " Purchasing Group
matkl(009), " Material Group
bednr(010), " Tracking No
afnam(012), " Requisitioner
END OF it_header.
Internal Table for Item Data
DATA: BEGIN OF it_item OCCURS 0,
sno(3), " SNo
matnr(018), " Material No
menge(017), " Quantity
preis(014), " Valuation Price
sakto(010), " GL Account
kostl(010), " Cost Center
END OF it_item.
Data Variables & Constants
CONSTANTS : c_x VALUE 'X'. " Flag
DATA : v_l(2), " Counter
v_rowno(5), " Row No
v_2(2), " Counter
v_rows LIKE sy-srows, " Rows in TC
v_field(45). " String
Parameters
PARAMETERS: p_file LIKE ibipparms-path. " Filename
At selection-screen on Value Request for file Name
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
Get the F4 Values for the File
CALL FUNCTION 'F4_FILENAME'
EXPORTING
program_name = syst-cprog
dynpro_number = syst-dynnr
IMPORTING
file_name = p_file.
Start of Selection
START-OF-SELECTION.
Open the BDC Session
PERFORM open_group.
Upload the File into internal Table
CALL FUNCTION 'UPLOAD'
EXPORTING
filename = p_file
filetype = 'DAT'
TABLES
data_tab = i_pr
EXCEPTIONS
conversion_error = 1
invalid_table_width = 2
invalid_type = 3
no_batch = 4
unknown_error = 5
gui_refuse_filetransfer = 6
OTHERS = 7.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
SORT i_pr BY sno.
LOOP AT i_pr.
MOVE-CORRESPONDING i_pr TO it_item.
APPEND it_item.
CLEAR it_item.
AT END OF sno.
READ TABLE i_pr INDEX sy-tabix.
MOVE-CORRESPONDING i_pr TO it_header.
APPEND it_header.
CLEAR it_header.
ENDAT.
ENDLOOP.
SORT it_header BY sno.
SORT it_item BY sno.
v_rows = sy-srows - 6.
Upload the Data from Internal Table
LOOP AT it_header.
Header Data
PERFORM bdc_dynpro USING 'SAPMM06B' '0100'.
PERFORM bdc_field USING 'BDC_CURSOR'
'EBAN-BEDNR'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'EBAN-BSART'
it_header-bsart.
PERFORM bdc_field USING 'RM06B-EPSTP'
it_header-epstp.
PERFORM bdc_field USING 'EBAN-KNTTP'
it_header-knttp.
PERFORM bdc_field USING 'RM06B-EEIND'
it_header-eeind.
PERFORM bdc_field USING 'RM06B-LPEIN'
it_header-lpein.
PERFORM bdc_field USING 'EBAN-WERKS'
it_header-werks.
PERFORM bdc_field USING 'EBAN-LGORT'
it_header-lgort.
PERFORM bdc_field USING 'EBAN-EKGRP'
it_header-ekgrp.
PERFORM bdc_field USING 'EBAN-MATKL'
it_header-matkl.
PERFORM bdc_field USING 'EBAN-BEDNR'
it_header-bednr.
PERFORM bdc_field USING 'EBAN-AFNAM'
it_header-afnam.
Item Details
v_l = 0.
To add no. of rows
v_2 = 0 .
As the screen is showing 13 rows defaulted to 130
v_rowno = 130 .
LOOP AT it_item WHERE sno = it_header-sno.
v_l = v_l + 1.
IF v_l = 14 .
IF v_2 = 12 .
v_2 = 12 .
v_l = 2 .
From second time onwards it is displaying 12 rows only
v_rowno = v_rowno + 120 .
PERFORM bdc_dynpro USING 'SAPMM06B' '0106'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RM06B-BNFPO'.
PERFORM bdc_field USING 'RM06B-BNFPO'
v_rowno.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
ELSE.
V_2 initialized to 12 for second screen purpose
v_2 = 12 .
v_l = 2 .
PERFORM bdc_dynpro USING 'SAPMM06B' '0106'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RM06B-BNFPO'.
PERFORM bdc_field USING 'RM06B-BNFPO'
v_rowno .
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
ENDIF.
ENDIF.
PERFORM bdc_dynpro USING 'SAPMM06B' '0106'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
CLEAR v_field.
CONCATENATE 'EBAN-MATNR(' v_l ')' INTO v_field.
PERFORM bdc_field USING v_field it_item-matnr.
CLEAR v_field.
CONCATENATE 'EBAN-MENGE(' v_l ')' INTO v_field.
PERFORM bdc_field USING v_field it_item-menge.
PERFORM bdc_dynpro USING 'SAPMM06B' '0102'.
PERFORM bdc_field USING 'BDC_CURSOR'
'EBAN-PREIS'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'EBAN-PREIS'
it_item-preis.
PERFORM bdc_dynpro USING 'SAPMM06B' '0505'.
PERFORM bdc_field USING 'BDC_CURSOR'
'EBKN-SAKTO'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=ENTE'.
PERFORM bdc_field USING 'EBKN-SAKTO'
it_item-sakto.
Cost Center
PERFORM bdc_dynpro USING 'SAPLKACB' '0002'.
PERFORM bdc_field USING 'BDC_CURSOR'
'COBL-KOSTL'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=ENTE'.
PERFORM bdc_field USING 'COBL-KOSTL'
it_item-kostl.
PERFORM bdc_field USING 'BDC_OKCODE'
'=ENTE'.
ENDLOOP.
PERFORM bdc_dynpro USING 'SAPMM06B' '0106'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RM06B-BNFPO'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=BU'.
Call The Transaction
PERFORM bdc_transaction USING 'ME51'.
ENDLOOP.
Close the BDC Session
PERFORM close_group.
reward for useful answers.
Regards,
Anji -
I cannot delete multiple entries from table
Hi
i am trying to delete multiple entries from table while keeping some data.
for example I have the following table
Plant Item
US101 777
US101 888
US101 999
US101 666
I want to keep the rows where the item is 777 and 888 for plant US101 and keep delete the rest data
I wrote the following code
Delete source_package where Plant = 'US101' and Item NE '777' or '888'.
but all the rows get deleted.
I tried deleting single row and it worked.
Delete source_package where Plant = 'US101' and Item NE '777' .
How can I delete multiple rows.
thanksHi Bhat Vaidya,
Plz refer the following code.. IT will solve ur problem..
REPORT ZSDN_TEST.
data: BEGIN OF it_data OCCURS 10,
plant(4),
item_num TYPE string,
END OF it_data.
data: str type string.
data: it_final like it_data OCCURS 10 WITH HEADER LINE.
it_data-plant = 'US01'. it_Data-item_num = 777. append it_data.
it_data-plant = 'US01'. it_Data-item_num = 888. append it_data.
it_data-plant = 'US01'. it_Data-item_num = 999. append it_data.
it_data-plant = 'US01'. it_Data-item_num = 666. append it_data.
delete it_data where plant = 'US01' and item_num ne 777 and item_num ne 888.
LOOP AT it_data.
write:it_data-plant,it_data-item_num.
skip.
ENDLOOP.
Regards,
Apoorv -
No entry in table T001P when running time eval
Hi,
Can someone tell me, why this error occurs. "No entry in table T001P" when running time evaluation PT60. I checked his Infotype 1 and has the Personal Area/Subarea assigned.
Thanks,
Swarna.Hi,
Please check these tables:
V_001P_ALL
V_503_AL
Or try creating a blank entry in table T001P.
Hope this helps,
Reward points if helpful,
Thank You, -
Common diemsions and more then one fact table join problem
Hi,
I have 5 common dimension and 3 fact table which in the same subject area. When I want to display results from more then one fact table sending database then query more then one and I think BI server join this two different result on OBI server. But I think if obi server sending database query for exp. WITH SAWITH0 .... the results get effective.
+++002002:2ea0000:2ea000f:----2009/03/14 10:12:59
-------------------- SQL Request:
SET VARIABLE QUERY_SRC_CD='Report';SELECT "- Common Dimensions"."Year Month" saw_0, "- Subs. Tariff"."Subscriber Current Tariff Type" saw_1, "- Common Measures".Arpu saw_2, "- Common Measures"."Gross Margin" saw_3, "- Call Out"."Callout Dur" saw_4, "- Case".Case_Info_Num saw_5 FROM "CUSTOMER PROFILING" WHERE ("- Common Dimensions"."Year Month" = 200901) AND ("- Subs. Tariff"."Subscriber Current Tariff Type" = 'PREPAID') ORDER BY saw_0, saw_1
+++002002:2ea0000:2ea000f:----2009/03/14 10:12:59
-------------------- General Query Info:
Repository: Star, Subject Area: CUSTOMER PROFILING REV, Presentation: CUSTOMER PROFILING
+++002002:2ea0000:2ea000f:----2009/03/14 10:13:00
-------------------- Sending query to database named CENTRAVEA (id: <<471777>>):
select T223282.DIM_TIME_MONTH_ID as c1,
T221204.DIM_SUBS_CURRENT_TARIFF_TYPE as c2,
avg(T223490.FACT_CP_ARPU) as c3,
sum(T223490.FACT_CP_GROSS_MARGIN) as c4,
sum(T223490.FACT_CP_CO_DUR) as c5
from
DM.DIM_SUBSCRIBER T221204 /* A_DIM_SUBSCRIBER */ ,
DM.DIM_TIME_MONTH T223282 /* A_DIM_TIME_MONTH */ ,
DM.FACT_CUST_PROFILING_PART3 T223490 /* A_FACT_CUST_PROFILING_PART3 */
where ( T221204.DIM_SUBS_ID = T223490.DIM_SUBS_ID and T221204.DIM_SUBS_CURRENT_TARIFF_TYPE = 'PREPAID' and T223282.DIM_TIME_MONTH_ID = T223490.DIM_TIME_MONTH_ID and T223282.DIM_TIME_MONTH_ID = 200901 and T223490.DIM_TIME_MONTH_ID = 200901 )
group by T221204.DIM_SUBS_CURRENT_TARIFF_TYPE, T223282.DIM_TIME_MONTH_ID
order by c1, c2
+++002002:2ea0000:2ea000f:----2009/03/14 10:13:00
-------------------- Sending query to database named CENTRAVEA (id: <<471881>>):
select T223282.DIM_TIME_MONTH_ID as c1,
T221204.DIM_SUBS_CURRENT_TARIFF_TYPE as c2,
sum(T223294.FACT_CP_CASE_INFO_NO) as c3
from
DM.DIM_SUBSCRIBER T221204 /* A_DIM_SUBSCRIBER */ ,
DM.DIM_TIME_MONTH T223282 /* A_DIM_TIME_MONTH */ ,
DM.FACT_CUST_PROFILING_PART1 T223294 /* A_FACT_CUST_PROFILING_PART1 */
where ( T221204.DIM_SUBS_ID = T223294.DIM_SUBS_ID and T221204.DIM_SUBS_CURRENT_TARIFF_TYPE = 'PREPAID' and T223282.DIM_TIME_MONTH_ID = T223294.DIM_TIME_MONTH_ID and T223282.DIM_TIME_MONTH_ID = 200901 and T223294.DIM_TIME_MONTH_ID = 200901 )
group by T221204.DIM_SUBS_CURRENT_TARIFF_TYPE, T223282.DIM_TIME_MONTH_ID
order by c1, c2
I have another subject area and which defined like this subject area contain two dimension and 5 fact table. If I want to display results on this subject area I can see best sql for my database
My problem is why this two different subject areas create different queries. I think following query is the best for database.
Thanks for your help
+++002002:2ea0000:2ea0015:----2009/03/14 10:30:06
-------------------- SQL Request:
SET VARIABLE QUERY_SRC_CD='Report';SELECT "Dim - Segments"."Marketing Segment" saw_0, "Fact - Campaign Response"."Fact Campaign Award Amount" saw_1, "Fact - Customer Interaction"."Issue Response Cost" saw_2 FROM "AVEA ALL" ORDER BY saw_0
+++002002:2ea0000:2ea0015:----2009/03/14 10:30:06
-------------------- General Query Info:
Repository: Star, Subject Area: AVEA ALL, Presentation: AVEA ALL
+++002002:2ea0000:2ea0015:----2009/03/14 10:30:06
-------------------- Sending query to database named AVEA ALL (id: <<474694>>):
WITH
SAWITH0 AS (select sum(T51461.FACT_CMPGN_AWARD_AMOUNT) as c1,
T49384.DIM_MARKETING_SGMNT_DESC as c2
from
DM.DIM_MARKETING_SEGMENT T49384 /* DIM_BI_MARKETING_SEGMENT */ ,
DM.FACT_CMPGN_RESPONSE T51461 /* FACT_BI_CMPGN_RESPONSE */
where ( T49384.DIM_MARKETING_SGMNT_ID = T51461.DIM_MARKETING_SGMNT_ID )
group by T49384.DIM_MARKETING_SGMNT_DESC),
SAWITH1 AS (select sum(T51503.FACT_CUST_INT_ISSUE_RES_COST) as c1,
T49384.DIM_MARKETING_SGMNT_DESC as c2
from
DM.DIM_MARKETING_SEGMENT T49384 /* DIM_BI_MARKETING_SEGMENT */ ,
DM.FACT_CUST_INTERACTN T51503 /* FACT_BI_CUST_INTERACTN */
where ( T49384.DIM_MARKETING_SGMNT_ID = T51503.DIM_MARKETING_SGMNT_ID )
group by T49384.DIM_MARKETING_SGMNT_DESC)
select distinct case when SAWITH0.c2 is not null then SAWITH0.c2 when SAWITH1.c2 is not null then SAWITH1.c2 end as c1,
SAWITH0.c1 as c2,
SAWITH1.c1 as c3
from
SAWITH0 full outer join SAWITH1 On SAWITH0.c2 = SAWITH1.c2
order by c1I find solution on Oracle® Business Intelligence Suite Enterprise Edition Release Notes.
If you use a version of Oracle Database 10g Release 2 prior to 10.2.0.3, then you might encounter an issue with a Full Outer Join that causes severe database performance issues and appears to hang the database when the Oracle BI Server sends to the database SQL queries that include WITH clauses.
To work around this issue when using Oracle Database 10g Release 1 or 2, upgrade to Oracle Database 10g Release 2 Patch Set 2 (for 10.2.0.3). For performance reasons, this is the preferred workaround.
To work around this issue without installing Patch Set 2, modify the Database Features table using the Administration Tool. This configuration prevents the Oracle BI Server from sending SQL constructs that expose the issue in an unpatched Oracle Database 10g.
To modify the Database Features table:
In the Administration Tool, open the properties of the Physical Database metadata object.
Navigate to the Features tab.
Ensure the values for the PERF_PREFER_MINIMAL_WITH_USAGE and PERF_PREFER_INTERNAL_STITCH_JOIN entries are selected, that is, set to True. -
Load more than one user groups to system session variable GROUP from table
hi, I found that the value of the system session variable GROUP can be assigned by setting a sql in initialization blocks.
however, if there are some users with more than one user group.
can this be done by table driven (using sql in initialization blocks) ?
thanks !!Referencing GROUP session variable in initialization blocks for different types of authentication
http://108obiee.blogspot.com/2009/10/referencing-group-session-variable-in.html
Users are assigned to multiple groups from external table with semicolons, see example two and three from the post.
Regards
Goran
http://108obiee.blogspot.com -
How we can lock No more than one user can use the table at a single time
Hi Abapers,
0) which function modules to lock & unlock a table.
1) When you execute the program, we can check if there is any lock on this table. If yes, the user should be able to only view the table contents and not modify.
2) If there is no lock, then lock the table and go into change mode.
3) On exiting from the program, unlock the table using the function module.
4) more than one user can't modify the table just display.
Note: If there is any lock, display message saying table is locked.
Plz help me for this requirement.
Thanks
NaniHello Nani
Have a look at the lock object EMMARAE (<i>Lock MARA and MARM/MAKT exclusively</i>) in transaction SE11.
Inspect the F1 help for field <b>Lock mode</b>:
DE ENQMODE
Short Text
Lock mode
Definition
Defines how to synchronize table record access by several users.
The following modes exist:
Exclusive lock
The locked data can be read or processed by one user only. A request
for another exclusive lock or for a shared lock is rejected.
Shared lock
Several users can read the same data at the same time, but as soon
as a user edits the data, a second user can no longer access this
data. Requests for further shared locks are accepted, even if they
are issued by different users, but exclusive locks are rejected.
Exclusive but not cumulative lock
Exclusive locks can be requested by the same transaction more than
once and handled successively, but an exclusive but not cumulative
lock can only be requested once by a given transaction. All other
lock requests are rejected.
If you want to lock a standard table search whether the table is used in lock objects (<i>Where-Used-List</i>). If it is a customer table you have to create your own lock object (including two function modules: one for enqueuing and the other for dequeuing).
The lock modules can be found in menu <b>GoTo -> Lock Modules</b>.
Given these lock modules the logic should be quite clear after starting the program:
1. Request lock -> if successful, continue in Change mode; -> if failed, continue in Display mode
2. Before leaving the report remove lock (note: no problem if no lock has been set in the beginning).
Regards
Uwe -
Fetching The more then One Company ID by using PLSQL Table on Block B1(FORM
I have two blocks in Form (Forms 10g) .On the Block B2 I have populated the Company Id by using the PLSQL Table.Now I selected more than two company ID from that Block ...I just want to keep the Company ID in the Temp Field on the Block B1.which I have selected on the Block B2.Any idea how can I assign more then one Company ID to That Temp Field on B1.
This doesn't appear to have any connection to JMS or indeed to Java. Wrong forum. Locking.
-
Using more then one table/view in same Report
Hi,
I am using Discoverer Plus Version 9.0.4.43.15.
Is it possible to use more then one table/view in a report without the tables/views being joined in any way? It would be like using two different datasets in the same report without the datasets having anything to do with one another. Right now when I select items from the available tab I can only pick tables that relate to one another in some way.
Or is it possible to use more the one table in the same report? Each table using a different query/view/table.
ThanksSpence,
try following type of query using set operator UNION / UNION ALL:
select col1,col2
from t1
union all
select col1,col2
from t2
If you don't have restrictions then this is the best way. -
Is it possible to update more then one table (just out of curiousity)?
Something like (I know the following doesn't actually work but that's the basic logic):
UPDATE ps_vchr_hdr_stg a, ps_vchr_line_stg b
SET a.voucher_style = 'ADJ', b.po_id = ' '
WHERE a.key1 = b.key1
AND a.key2= b.key2
and a.gross_amt < 0Hi, I don't think it is possible:
UPDATE {table_reference | [THE] (subquery1)} [alias]
SET
{column_name = {sql_expression | (subquery2)}
| (column_name [, column_name]...) = (subquery3)}
[, {column_name = {sql_expression | (subquery2)}
| (column_name [, column_name]...) = (subquery3)}]...
[WHERE {search_condition | CURRENT_OF cursor_name}] [RETURNING]
[row_expression [, row_expression]... INTO
{variable_name | :host_variable_name}
[, {variable_name | :host_variable_name}]...];If you need to perform 2 or more operations put it into procedure or function as separate statements.
Regards,
Tomas -
Linking One table with more then one tablespace
Hi,
Can anybody help to link one table to more then one tablespace?
Thanks in advance.If the table is not partitionned you cannot store a table in different tablespaces. If the table is partitionned you can store each partition in a different tablespace. Example from 10.2 Data Warehousing Guide:
CREATE TABLE sales_composite
(salesman_id NUMBER(5),
salesman_name VARCHAR2(30),
sales_amount NUMBER(10),
sales_date DATE)
PARTITION BY RANGE(sales_date)
SUBPARTITION BY HASH(salesman_id)
SUBPARTITION TEMPLATE(
SUBPARTITION sp1 TABLESPACE ts1,
SUBPARTITION sp2 TABLESPACE ts2,
SUBPARTITION sp3 TABLESPACE ts3,
SUBPARTITION sp4 TABLESPACE ts4)
(PARTITION sales_jan2000 VALUES LESS THAN(TO_DATE('02/01/2000','MM/DD/YYYY'))
PARTITION sales_feb2000 VALUES LESS THAN(TO_DATE('03/01/2000','MM/DD/YYYY'))
PARTITION sales_mar2000 VALUES LESS THAN(TO_DATE('04/01/2000','MM/DD/YYYY'))
PARTITION sales_apr2000 VALUES LESS THAN(TO_DATE('05/01/2000','MM/DD/YYYY'))
PARTITION sales_may2000 VALUES LESS THAN(TO_DATE('06/01/2000','MM/DD/YYYY')));Edited by: P. Forstmann on 13 févr. 2010 09:08
Maybe you are looking for
-
when I try to delete a folder with a locked file from my AirDisk, I get the spinning beachball and the foce quit won't relaunch the finder. Unplugging the airport doesn't help either. the only thing I can do it restart the computer. I have a 27" 2010
-
How to set up with cacheing DNS for local network?
Our new Lion Server has a static IP Address pointed to over the internet by our registrar's zone file. Planning the Lion Server installation process with the intent of hosting Web, Mail and Open Directory services to a small number of users who are n
-
Transferring data to a New Hard Drive?
Is there a way to transfer everything from my Main Hard drive (boot volume, programs, plugins, etc.) to an external firewire drive and then back onto a new larger hard drive that will replace the old one with any certainty that it will work without d
-
Control cost and control quantity in production order cost analysis
Hi, When I checked the WIP value, I found there are two field, control cost and control quantity, in the cost analysis of production order which has some relationship with WIP calculation. But I do not know where the control cost from and by what the
-
Charger keeps shutting off or wont charge mac book pro
the led on the charged says that my macbook pro is fully charged but on the screen it says not charging. the computer isnt fully charged because when I unplug it. the computer dies. my charger also gets really hot on the end that attaches to the comp