Table Maintanance Help Required
Hi All,
I am using two screens in my table maintanace. I am doing all my validations in screen2.After entering the data when i click on save button Ztable will update. this is working fine for single entry. When i am entering multiple entries for example both entries are duplicate then it is giving error message like duplicate entry after this displaying this message when i click on EXIT button unique record is showing in screen 1.
my two entries are
1. runrate maheed a01
2. runrate maheed a01
uniure record means single record i.e. runrate maheed a01 is showing on first screen. actually i dont want to display this entry in screen 1. is this possible if not please tell me any other alternate is exist.
Thanks,
Maheedahr.T
Hi ,
Please check the primary key combination of the z table. it do not allow you to insert 2 records with same primary key fields value.
regards,
Tanmay
Similar Messages
-
Table Maintanance Help Required-urgent
Hi All,
I generating table maintanance generator for the table zuser_Secobjects. In this table GUID is a primary key and APPLN,APPLN_TYPE,PARTNER_TYPE are the non primary keys. I am using two screens method here. on both screens i am not showing GUID ( i am hiding this field in screen1 and screen 2) whenvere new record is created for every record guid is going to create. now my reuirement when i click on position(pushbutton) name in screen 1 it has to show APPLN,APPLN_TYPE,PARTNER_TYPE where as these 4 fields are non primary keys . i am getting uniqire record using guid. so i am keeping guid as primary key.i can't keep these 4 fields as primary keys in the table zuser_secobjects.
anybody can faced this kind of problem if so please let me know whow to approach in this case.
thanks,
maheedhar.tHai Maheedhar,
I have also faced the related problem.
<b>Please refer the below links.</b>
<b>It will helps you a lot.</b>
https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/com.sap.km.cm.docs/library/abap/how%20to%20implement%20events%20in%20table%20maintenance.doc
Table Maintenance generator is required to do Manual entries in the Table. If the requirement is to update the table only programmatically and not manually then table maint. generator is not required.
Manual entries in table can be maintained ( New record can be inserted / existing can be modified ) using transaction SM 30, if the table maintenance for the table is generated.
<b>Don'forget to activate it.</b>
How to activate Table maint.
Goto SE11 and open the table.
Click UTILITIES -> Table Maint. Generator, Enter the details and click on Save. Then activate the table.
<b>Please refer the below links.</b>
https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/com.sap.km.cm.docs/library/abap/how%20to%20implement%20events%20in%20table%20maintenance.doc
<b>Reward points if it helps you.</b>
Regds,
Rama chary.Pammi -
Problem with constraint in a table..help required..
Hi ,
i need to create a table which has an attribute year_joined and need to set a constraint that the year_joined should be less than or equal to the current year (year obtained from sysdate (YYYY)) ..
can any one help me with the create statement required...
eg: create table test(year_joined number, constraint c_year check(year_joined< = ?));
i could not use a sub query in the create statement.
help req..
thanks,
sriSatyaki,
I tried but fail. Could you please tell the way how it can be implementaed in CHECK constraint.
SQL> CREATE TABLE T ( YERR_JOINED NUMBER(4) , CHECK (YERR_JOINED <='2007'));
Table created.
SQL> drop table t;
Table dropped.
SQL> CREATE TABLE T ( YERR_JOINED NUMBER(4) , CHECK (YERR_JOINED <= TO_CHAR(SYSDATE,'YYYY')));
CREATE TABLE T ( YERR_JOINED NUMBER(4) , CHECK (YERR_JOINED <= TO_CHAR(SYSDATE,'YYYY')))
ERROR at line 1:
ORA-02436: date or system variable wrongly specified in CHECK constraint
SQL> -
Internal table logic - help required
Hi,
I am working on BSEG table to determine offsetting line count and amount total for a posting line item and need
a small logic .
I have a table of currency fields like below and the table is such ( like BSEG ) that each line item will balance
itself with other line item . For example
Item
10 100
20 100-
30 200
40 250
50 450-
60 200-
70 200
80 600
90 100
100 200
110 300
If you see 10 & 20 balance out similarly ( 30,40 will balance with line item 50 ) , ( 60 & 70 balance each other ) ,
( 90,100, 110 balance with 80 ).
My requirement - If I loop on item 50 with amount 450- I need to get the posnr of the two items which balance
this amount ( which is 30 and 40 ). If I loop on item 80 with amount 600 then I need to get item 90. 100 and 110.
Please provide me a logic which will provide me the index of ther required item lines.
Regards
PraneethHi, execute this code.. might be helpful to you
TYPES: BEGIN OF test,
a TYPE i,
b TYPE i,
END OF test.
DATA: itab TYPE TABLE OF test,
wa TYPE test,
wa1 TYPE test,
c TYPE i,
d TYPE i,
n1 TYPE i,
n2 TYPE i.
PARAMETERS : p TYPE i.
wa-a = 1.
wa-b = 20.
APPEND wa TO itab.
wa-a = 2.
wa-b = 30.
APPEND wa TO itab.
wa-a = 3.
wa-b = 10.
APPEND wa TO itab.
wa-a = 4.
wa-b = 10.
APPEND wa TO itab.
wa-a = 5.
wa-b = 20.
APPEND wa TO itab.
READ TABLE itab INTO wa WITH KEY a = p.
c = wa-b.
LOOP AT itab INTO wa WHERE a GT p.
n1 = wa-a.
IF c EQ wa-b.
EXIT.
ENDIF.
LOOP AT itab INTO wa1 WHERE a GT wa-a.
IF wa-a = wa1-a.
EXIT.
ENDIF.
n2 = wa1-a.
d = wa-b + wa1-b.
IF c EQ d.
EXIT.
ENDIF.
ENDLOOP.
IF wa-a = wa1-a.
EXIT.
ELSEIF c EQ d.
EXIT.
ELSE.
CLEAR: n1, n2.
ENDIF.
ENDLOOP.
WRITE: n1 , n2. -
Internal Table Operation Help Required
Hi
I have to insert 8 counters p1-p8 in a field BANFN of ITAB1.
Like this their are 3 more fileds.I have to show the no. for PR released frm JAN-DEC in ALV format.I had doen the calualation,but unable to insert these conters in ITAB1 to do final calculation & display the result.
Please help me.
I had used : insert p1 into itab1-banfn where sy-index 1.
Like this I had tried out many comands,but al in vain.PLZ help me in this regard.
Regards.
VipinThere are 8 fileds in my internal table,in which 1st one is for MONTH(JAN-DEC).
The ALV is only suppose to display 12 rows,containing each month per row.
Now for each month I have to display the PR converted to PO & the avg lead time for each month.So I had calu all the data ,but now I have to insert 12 counters in 4 fields.one for No of PR converted to PO in each month,than one for AVG LEAD TIME for each month.so there has to be 12 + 12 counters for each row.Similar operation I have to perform for the PR pending fo PO.So there has to be 24 more counters for again 2 diff fileds.Now I had calcuated the data,but the problem is this ,,,,,how to insert each ctr in each row.
EG: insert ctr1 into itab1-banfn where itab1-mmyy = 'January' or sy-index = 1.
insert ctr2 into itab1-banfn where itab1-mmyy = 'Febuary' or sy-index = 2.
move crt1 to itab1-banfn where sy-index = 1.
None of the operation is working.
Like this i have to insert 48 counters in all rows for these 4 diff fileds.
Pl help me in thsi regard ,if possible.
regards. -
Live table insertion help required
I face issue of constraint violation the time when i try to insert record which already exist in table actually the table is getting populated on real basis and the record which i try to upload is around 2.5 million.
I need a PL/SQL code which perform insertion into live table and don't insert those records which already exists in live table.
I am new in PL/SQL and need your expert guidence
Please help
regards,In pl/sql you can trap oracle errors via an exception handler. For instance suppose you want to insert two rows, and the second row already exists (i.e. that row will get an oracle key-constraint error).
The way to deal with such an error in this case, would be to write a handler for the DUP_VAL_ON_INDEX error.
begin
begin
insert into some_table values(.. some values ..);
insert into some_table values(.. some other values ..);
exception when dup_val_on_index
then null;
end;
commit;
end;Above code will ignore the error for the second row, and will keep the first row inserted (and committed). -
Mutating table problem help required
Hi. I am rather hoping someone will be able to help me with this problem.
I have two tables, sa and mv. Create script below:
create table mv (
moduleId Char(2) CONSTRAINT ck_moduleId CHECK(moduleId in ('M1', 'M2', 'M3', 'M4', 'M5', 'M6', 'M7', 'M8')),
credits Number(2) CONSTRAINT ck_credits CHECK(credits in (10, 20, 40)),
constraint pk_mv primary key(moduleId)
create table sa (
stuId Char(2) CONSTRAINT ck_stuId CHECK(stuId in ('S1', 'S2', 'S3', 'S4', 'S5')),
moduleId Char(2),
constraint pk_sa primary key(stuId, moduleId),
constraint fk_moduleid foreign key(moduleId) references mv(moduleId)
And the scripts below is to insert data into both:
insert into mv VALUES('M1', 20)
insert into mv VALUES('M2', 20)
insert into mv VALUES('M3', 20)
insert into mv VALUES('M4', 20)
insert into mv VALUES('M5', 40)
insert into mv VALUES('M6', 10)
insert into mv VALUES('M7', 10)
insert into mv VALUES('M8', 20)
insert into sa VALUES('S1', 'M1')
insert into sa VALUES('S1', 'M2')
insert into sa VALUES('S1', 'M3')
insert into sa VALUES('S2', 'M2')
insert into sa VALUES('S2', 'M4')
insert into sa VALUES('S2', 'M5')
insert into sa VALUES('S3', 'M1')
insert into sa VALUES('S3', 'M6')
Now for the actual problems.
Firstly I need to try and overcome the mutating table problem by ensure that stuid = S1 in table sa can not take both moduleId M5 and M6.
Just one or the other. I have created a single trigger, but if fails because of the mutating table problem.
The second problem I need to overcome is that none of the stuids can have moduleIds where total credit value of more than 120 credits. Credit value is stored in the mv table.
Many thanks in advance for any assistance.Use a statement level trigger:
Firstly I need to try and overcome the mutating table problem by ensure that stuid = S1 in table sa can not take both moduleId M5 and M6.
SQL> create or replace trigger sa_trg
2 after insert or update on sa
3 declare
4 c number;
5 begin
6 select count(distinct moduleId) into c
7 from sa
8 where stuid = 'S1'
9 and moduleId in ('M5','M6');
10 if c > 1 then
11 raise_application_error(-20001,'S1 on both M5 and M6!!');
12 end if;
13 end;
14 /
Trigger created.
SQL> select * from sa;
ST MO
S1 M1
S1 M2
S1 M3
S2 M2
S2 M4
S2 M5
S3 M1
S3 M6
8 rows selected.
SQL> insert into sa values ('S1','M5');
1 row created.
SQL> insert into sa values ('S1','M6');
insert into sa values ('S1','M6')
ERROR at line 1:
ORA-20001: S1 on both M5 and M6!!
ORA-06512: at "SCOTT.SA_TRG", line 9
ORA-04088: error during execution of trigger 'SCOTT.SA_TRG'
The second problem I need to overcome is that none of the stuids can have moduleIds where total credit value of more than 120 credits. Credit value is stored in the mv table
SQL> create or replace trigger sa_trg
2 after insert or update on sa
3 declare
4 c number;
5 begin
6 select count(distinct moduleId) into c
7 from sa
8 where stuid = 'S1'
9 and moduleId in ('M5','M6');
10 if c > 1 then
11 raise_application_error(-20001,'S1 on both M5 and M6!!');
12 end if;
13
14 select count(*) into c from (
15 select stuid
16 from mv, sa
17 where sa.moduleid=mv.moduleid
18 group by stuid
19 having sum(credits)>120);
20
21 if c > 0 then
22 raise_application_error(-20002,'A student cannot have more than 120 credits!!');
23 end if;
24
25 end;
26 /
Trigger created.
SQL> select stuid, sum(credits)
2 from mv, sa
3 where sa.moduleid=mv.moduleid
4 group by stuid;
ST SUM(CREDITS)
S3 30
S2 80
S1 100
SQL> insert into sa
2 values ('S1','M4');
1 row created.
SQL> select stuid, sum(credits)
2 from mv, sa
3 where sa.moduleid=mv.moduleid
4 group by stuid;
ST SUM(CREDITS)
S3 30
S2 80
S1 120
SQL> insert into sa
2 values ('S1','M7');
insert into sa
ERROR at line 1:
ORA-20002: A student cannot have more than 120 credits!!
ORA-06512: at "SCOTT.SA_TRG", line 20
ORA-04088: error during execution of trigger 'SCOTT.SA_TRG'Max
http://oracleitalia.wordpress.com -
hi,
I've a htmlb tableview which gets the data from an internal table which is a data member of a model. I've two column fields in this view which are editable. What are the steps I need to follow in order to get the internal table updated with the values provided by the user in the editable fields of tableview.
could someone please provide me with the steps as to how to achieve this?
Thanks and Regards,
VamshiHi Vamshi,
Try this sample code,as it helps you considerably.
local types
types: itabtype type TABLE OF STD1.
types: begin of message_struct,
type type char10,
text type char100,
end of message_struct.
page attributes
addtab TYPE ITABTYPE
addtab_row TYPE STD1
add_flag TYPE FLAG
deltab TYPE ITABTYE
deltab_row TYPE STD1
ITAB TYPE ITABTYPE
iterator TYPE REF TO IF_HTMLB_TABLEVIEW_ITERATOR
message TYPE MESSAGE_STRUCT
STUDENT TYPE STRING
STATUS TYPE STRING
<b>layout</b>
<htmlb:content design="design2003" >
<htmlb:page title="test1" >
<htmlb:form>
<htmlb:tableView id = "tv1"
visibleRowCount = "20"
onRowSelection = "MyEventRowSelection"
selectionMode = "lineEdit"
table = "<%= ITAB %>"
iterator = "<%=iterator %>" />
<htmlb:button id = "save"
text = "Save Changes"
onClick = "myEvent" />
eventhandler OnCreate
this handler is called once the page is first created (stateful mode)
it performs a once-off data initialization or object creation
SELECT * FROM STD1
INTO CORRESPONDING FIELDS OF TABLE itab.
CREATE OBJECT iterator TYPE STD1ITERATOR.
eventhandler OnInputProcessing
event handler for checking and processing user input and
for defining navigation
DATA: ITAB_WA type Line of itabtype.
DATA: event TYPE REF TO cl_htmlb_event.
event = cl_htmlb_manager=>get_event( runtime->server->request ).
FIELD-SYMBOLS: <row> type STD1.
DATA: tv TYPE REF TO cl_htmlb_tableview.
tv ?= cl_htmlb_manager=>get_data(
request = runtime->server->request
name = 'tableView'
id = 'tv1' ).
IF tv IS NOT INITIAL.
DATA: tv_data TYPE REF TO cl_htmlb_event_tableview.
tv_data = tv->data.
IF tv_data->prevselectedrowindex IS NOT INITIAL.
FIELD-SYMBOLS: <row> type LINE OF ITABTYPE .
READ TABLE ITAB INDEX tv_data->prevselectedrowindex
ASSIGNING <row>.
DATA value TYPE string.
if <row> is assigned.
value = tv_data->get_cell_id( row_index =
tv_data->prevselectedrowindex
column_index = '1' ).
DATA: inputfield TYPE REF TO cl_htmlb_inputfield.
inputfield ?= cl_htmlb_manager=>get_data(
request = request
name = 'inputfield'
id = value ).
<row>-STUDENT = inputfield->value.
value = tv_data->get_cell_id( row_index =
tv_data->prevselectedrowindex
column_index = '2' ).
inputfield ?= cl_htmlb_manager=>get_data(
request = request
name = 'inputfield'
id = value ).
<row>-STATUS = inputfield->value.
ENDIF.
ENDIF.
WHEN 'add'.
tv ?= cl_htmlb_manager=>get_data(
request = runtime->server->request
name = 'tableView'
id = 'tv1' ).
IF tv IS NOT INITIAL.
tv_data = tv->data.
IF tv_data->prevselectedrowindex IS NOT INITIAL.
READ TABLE itab INDEX tv_data->prevselectedrowindex
ASSIGNING <row>.
endif.
endif.
WHEN 'add'.
add_flag = 'Y'.
WHEN 'add_save'.
ITAB_WA-STATUS = request->get_form_field( 'STUDENT' ).
ITAB_WA-STATUS = request->get_form_field( 'STATUS' ).
endcase. -
Hi,
Right now I am working in table control.
I have an internal table that is getting displayed onto the table control,the internal table has the primary key MATNR in it.
When the user enters an identical MATNR in the second row the validation should throw a message that'Entry already exists' and the entry should get deleted.
The internal table is filled up from the database table using the WBS Element.Then before saving the new entry ,the database entry for the WBS element is deleted.
After updating the Internal table the internal table is inserted into the database table.
Can anyone let me know how to validate the new entry against the entries already existing in the internal table.
Hope i am able to make the problem clear to you.In the PAI Event write the code inside the CHAIN & ENDCHAIN.
PROCESS AFTER INPUT.
*pai flow logic for tablecontrol 'MPRN'
LOOP AT i_mprn.
CHAIN.
FIELD: i_mprn-select,
i_mprn-mprn,
i_mprn-post_code,
i_mprn-dm_ndm
MODULE validate_mprn.
ENDCHAIN.
MODULE tabctrl_modify.
ENDLOOP.
MODULE validate_mprn INPUT.
IF sy-ucomm EQ 'MPSB'.
PERFORM validate_mprn.
ENDIF.
ENDMODULE. " validate_mprn INPUT -
Help required in creation of Dictionary table dynamically
Hello All,
I have created DDIC table created dynamically.
But what i require is! the dictionary table which i have created should be under the package name as given by the customer.
I have seen in FM DDIF_TABL_PUT the parameter dd02v-APPLCLASS is the write parameter to create the table under the required package. This field is of length char 4 only.
Normally the package name will be greater than char4 and also it happend in my case that the package name is more than char4.
Now i am unable to create the table dynamically under the specified pacakage of the customer
How can i solve this problem?
Can any one help me in this issue?
Regards,
GuptaHi Lakshman,
Thank you for your reply,
I have used the FM which you have mentioned but i didn't work. I mean when i see the attributes of the table, package is still empty.
Can you help me to solve the problem.
CALL FUNCTION 'TR_TADIR_INTERFACE'
EXPORTING
* WI_DELETE_TADIR_ENTRY = ' '
* WI_REMOVE_REPAIR_FLAG = ' '
* WI_SET_REPAIR_FLAG = ' '
* WI_TEST_MODUS = 'X'
wi_tadir_pgmid = 'R3TR'
wi_tadir_object = 'TABL'
wi_tadir_obj_name = lv_objname
* WI_TADIR_KORRNUM = ' '
* WI_TADIR_SRCSYSTEM = ' '
* WI_TADIR_AUTHOR = ' '
wi_tadir_devclass = 'ZV/HF/PLANNING'
* WI_TADIR_MASTERLANG = ' '
* WI_TADIR_CPROJECT = ' '
* WI_TADIR_VERSID = ' '
* WI_REMOVE_GENFLAG = ' '
* WI_SET_GENFLAG = ' '
* WI_READ_ONLY = ' '
* IV_SET_EDTFLAG = ' '
* IMPORTING
* NEW_GTADIR_ENTRY =
* NEW_TADIR_ENTRY =
EXCEPTIONS
tadir_entry_not_existing = 1
tadir_entry_ill_type = 2
no_systemname = 3
no_systemtype = 4
original_system_conflict = 5
object_reserved_for_devclass = 6
object_exists_global = 7
object_exists_local = 8
object_is_distributed = 9
obj_specification_not_unique = 10
no_authorization_to_delete = 11
devclass_not_existing = 12
simultanious_set_remove_repair = 13
order_missing = 14
no_modification_of_head_syst = 15
pgmid_object_not_allowed = 16
masterlanguage_not_specified = 17
devclass_not_specified = 18
specify_owner_unique = 19
loc_priv_objs_no_repair = 20
gtadir_not_reached = 21
object_locked_for_order = 22
change_of_class_not_allowed = 23
no_change_from_sap_to_tmp = 24
OTHERS = 25
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
Regards,
Lisa
Edited by: Lisa Roy on Apr 9, 2008 11:37 AM -
Help required on table maintenance generator
Hi all,
Would any one tell me what is the difference between one step and two step while creating a table maintenace generator for a table.
one more question is i would like to know which search the following code follows while it is executed.
select single vbeln
from vbak into l_vbeln
where vbeln in s_vbeln.
and
select vbeln
from vbak
into l_vbeln
up to 1 rows
where vbeln in s_vbeln.
please do reply soon for the questions.Hi
table maintanance Generator is used to manually
input values using transaction sm30
follow below steps
1) go to se11 check table maintanance check box under
attributes tab
2) utilities-table maintanance Generator->
create function group and assign it under
function group input box.
also assign authorization group default &NC& .
3)
select standard recording routine radio in table
table mainitainence generator to move table
contents to quality and production by assigning
it to request.
4) select maintaience type as single step.
5) maintainence screen as system generated numbers
this dialog box appears when you click on create
button
6) save and activate table
http://help.sap.com/saphelp_nw04/helpdata/en/cf/21ed2d446011d189700000e8322d00/content.htm
http://help.sap.com/saphelp_46c/helpdata/en/a7/5133ac407a11d1893b0000e8323c4f/frameset.htm
/message/2831202#2831202 [original link is broken]
One step, two step in Table Maintenance Generator
Single step: Only overview screen is created i.e. the Table Maintenance Program will have only one screen where you can add, delete or edit records.
Two step: Two screens namely the overview screen and Single screen are created. The user can see the key fields in the first screen and can further go on to edit further details.
Difference Between Select Single and Select UpTo One Rows
According to SAP Performance course the SELECT UP TO 1 ROWS is faster than SELECT SINGLE because you are not using all the primary key fields.
select single is a construct designed to read database records with primary key. In the absence of the primary key, it might end up doing a sequential search, whereas the select up to 1 rows may assume that there is no primary key supplied and will try to find most suitable index.
The best way to find out is through sql trace or runtime analysis.
Use "select up to 1 rows" only if you are sure that all the records returned will have the same value for the field(s) you are interested in. If not, you will be reading only the first record which matches the criteria, but may be the second or the third record has the value you are looking for.
The System test result showed that the variant Single * takes less time than Up to 1 rows as there is an additional level for COUNT STOP KEY for SELECT ENDSELECT UP TO 1 ROWS.
The 'SELECT SINGLE' statement selects the first row in the database that it finds that fulfils the 'WHERE' clause If this results in multiple records then only the first one will be returned and therefore may not be unique.
Mainly: to read data from
The 'SELECT .... UP TO 1 ROWS' statement is subtly different. The database selects all of the relevant records that are defined by the WHERE clause, applies any aggregate, ordering or grouping functions to them and then returns the first record of the result set.
Mainly: to check if entries exist.
Reward points for useful Answers
Regards
Anji -
What is authorisation object in table maintanance generator
Hi,
what is authorisation object and authorisation group in table maintanance generator
can u pls let me know what are these?? and y do we need these?
Thanks in advance
Ramahi,
Access to the transactions SM30 and SE16 is often regarded as a security risk on productive system. But with the right use of the authorization object S_TABU_DIS and the rarely used S_TABU_LIN, this isnt so.
With S_TABU_DIS you have the option to control access to groups of tables, and you have the option to distinguish between Update and Display access. If you dont want to give access to an entire table group, its quite easy in transaction SE54 to create a new authorization group and to reassign one or more tables/view to this group, thus achieving control of access to these specific tables.
If youre anxious about giving access to an entire table group, due to the fact that some tables have an open interface which allows table maintenance even in transaction SE16, the check this report developed and posted to the SAP Fans security forum by John A. Jarboe.
With the authorization object S_TABU_LIN you can even go a step further and control access to a table on record level, based on the key fields of the table. You can find an overall presentation of the object here.
The How-To guide below will demonstrate how to set up and use this authorization object.
The example is based on a small table ZMYTABLE. I have created a maintenance view and parameter transaction based on SM30 around this table.
Please notice that the parameter transaction is calling SM3o in update mode.
If the object is to be used with SE16 youll need to implement OSS note 763269.
S_TABU_LIN Customizing
We can find the customizing entries in the IMG under SAP NetWeaver à Application Server àSystem Administration àUsers and Administration à Line-oriented Authorizations.
First we need to define the organizational criterias.
In here create new criteria by pushing the New entries button.
In this example we will like to control access based on the key field Country, in order to do so create a criteria called Z_Country_Grp, with the name Country Grp. If we flag the table-ind flag the criteria will affect maintenance of all tables whose key fields are related to the domains specified in the attribute later.
In this example we only want to control the access to the specific table ZMYTABLE so we will leave it blank
Save the entry and assign it to a transport request.
Now mark the created line and switch to attributes
Create a new entry with the data shown below.
Save it and assign it to the transport request.
Notice that you can have up to 8 organizational criterion attributes.
Now we need to assign a table and a field to our attribute
In order to do so mark the attribute and switch to Table Fields
In here create a new entry and assign, in this example, the table ZMYTABLE, and the field name country to the attribute.
Please notice that only Key fields can be used !
Save and assign to transport request
Now we are ready for activating our organizational criteria this is the second bullet in the IMG
Just check the active flag and the check is activated.
Incorporate the authorization object in a role
We have now implemented the authorization check; next step is to implement it in the required roles.
In this example I have created a parameter transaction ZMYTRANSACTION - using SM30 around the table ZMYTABLE. I have create a small test role ICC_TEST, including only the transaction ZMYTRANSACTION, and a few support transactions.
In the authorization part I have inserted the object S_TABU_LIN manually (best practice is of course to assign it in SU24), but a manual insert will also do the trick J
Now when we change one the authorization fields by pushing the pencil the profile generator will ask us for the criteria.
Here we chose the Z_COUNTRY_GRP criteria that we have created.
Well now get the following popup, in this case we will grant change access, so we choose 02 Change for activity
In the list below well see the Organizational Attributes that we have created we have the option to use up to 8 attributes in the example we had only defined one attribute Country Grp - we assign the value DK thus only granting access to records with DK in the key field country.
To transfer the selection back to the profile generator press th transfer button or press F5.
Now we just need to generate the profile and assign it to a test user.
Now when this test user signs on to and executes the transaction only entries for Cty DK is displayed.
If the transaction is executed by a user with SAP_ALL all records are displayed,
Important Links For u:[http://www.sapsecurity.co.uk/sap-authorisation-objects.html]
Thanks And if helpful please reward points -
Error on extend an internal table, but the required space was not available
Hi All,
I am trying to retrieve cost data from COVP tables, as well as the quantity, cost centre, and price unit fields from MSEG / BSEG tables. Thing is, if the AWTYP value in COVP table = 'MKPF', i have to get the data from MSEG, otherwise, I need to get it from BSEG table.
I kept getting this error message:
<i>You attempted to extend an internal table, but the required space was not available.</i>
Anyone have any idea how to make my codes more efficient?
Please help. Thanks!
Regards,
Cecilia
REPORT ZMISCY004.
TABLES : COVP, BSIS, BSEG, MSEG, MAKT, CSKU.
PARAMETERS :
P_FILE(300) DEFAULT '\sapdcdatasaprptoh.txt' LOWER CASE.
DATA MSG_TEXT(50).
DATA :
XKOKRS LIKE COVP-KOKRS,
XBELNR LIKE COVP-BELNR,
XBUZEI LIKE COVP-BUZEI,
XGJAHR LIKE COVP-GJAHR,
XPERIO LIKE COVP-PERIO,
XWKGBTR LIKE COVP-WKGBTR,
XWTGBTR LIKE COVP-WTGBTR,
XREFBN LIKE COVP-REFBN,
XREFBZ LIKE COVP-REFBZ,
XKSTAR LIKE COVP-KSTAR,
XBEKNZ LIKE COVP-BEKNZ,
XMATNR LIKE COVP-MATNR,
XBUKRS LIKE COVP-BUKRS,
XREFGJ LIKE COVP-REFGJ,
XREFBK LIKE COVP-REFBK,
XLTEXT LIKE CSKU-LTEXT,
XMAKTX LIKE MAKT-MAKTX,
XAWTYP LIKE COVP-AWTYP,
XTWAER LIKE COVP-TWAER,
XSGTXT LIKE COVP-SGTXT,
BSEG_KOSTL LIKE BSEG-KOSTL,
BSEG_MEINS LIKE BSEG-MEINS,
BSEG_MENGE LIKE BSEG-MENGE,
MSEG_KOSTL LIKE MSEG-KOSTL,
MSEG_MENGE LIKE MSEG-MENGE,
MSEG_MEINS LIKE MSEG-MEINS.
DATA : BEGIN OF ITAB_COVP OCCURS 10,
KOKRS LIKE COVP-KOKRS,
BELNR LIKE COVP-BELNR,
BUZEI LIKE COVP-BUZEI,
GJAHR LIKE COVP-GJAHR,
PERIO LIKE COVP-PERIO,
WKGBTR(15) TYPE C,
WTGBTR(15) TYPE C,
REFBN LIKE COVP-REFBN,
REFBZ(3) TYPE C,
KSTAR LIKE COVP-KSTAR,
BEKNZ LIKE COVP-BEKNZ,
MATNR LIKE COVP-MATNR,
BUKRS LIKE COVP-BUKRS,
REFGJ LIKE COVP-REFGJ,
REFBK LIKE COVP-REFBK,
LTEXT LIKE CSKU-LTEXT,
MAKTX LIKE MAKT-MAKTX,
AWTYP LIKE COVP-AWTYP,
TWAER LIKE COVP-TWAER,
SGTXT LIKE COVP-SGTXT,
BSIS_WRBTR(13) TYPE C,
BSEG_KOSTL LIKE BSEG-KOSTL,
BSEG_MEINS LIKE BSEG-MEINS,
BSEG_MENGE LIKE BSEG-MENGE,
MSEG_KOSTL LIKE MSEG-KOSTL,
MSEG_MENGE LIKE MSEG-MENGE,
MSEG_MEINS LIKE MSEG-MEINS.
DATA : END OF ITAB_COVP.
SELECT M1~KOKRS
M1~BELNR
M1~BUZEI
M1~GJAHR
M1~PERIO
M1~WKGBTR
M1~WTGBTR
M1~REFBN
M1~REFBZ
M1~KSTAR
M1~BEKNZ
M1~MATNR
M1~BUKRS
M1~REFGJ
M1~REFBK
M1~AWTYP
M1~TWAER
M1~SGTXT
M4~KOSTL
M4~MENGE
M4~MEINS
INTO (XKOKRS,
XBELNR,
XBUZEI,
XGJAHR,
XPERIO,
XWKGBTR,
XWTGBTR,
XREFBN,
XREFBZ,
XKSTAR,
XBEKNZ,
XMATNR,
XBUKRS,
XREFGJ,
XREFBK,
XAWTYP,
XTWAER,
XSGTXT,
MSEG_KOSTL,
MSEG_MENGE,
MSEG_MEINS
FROM COVP AS M1
LEFT OUTER JOIN MSEG AS M4
ON M1~REFBN = M4~MBLNR AND M1~REFBZ = M4~ZEILE AND M1~REFGJ = M4~MJAHR
WHERE M1~SCOPE = 'OCOST' AND M1~AWTYP = 'BKPF'
OR M1~SCOPE = 'OCOST' AND M1~AWTYP = 'MKPF'
OR M1~KSTAR = '972022'.
IF XAWTYP = 'BKPF'.
SELECT KOSTL MENGE MEINS INTO (BSEG_KOSTL, BSEG_MENGE, BSEG_MEINS) FROM
BSEG WHERE BELNR = XREFBN AND BUZEI = XREFBZ AND GJAHR = XREFGJ AND
BUKRS = XREFBK.
ENDSELECT.
MOVE BSEG-KOSTL TO BSEG_KOSTL.
MOVE BSEG-MEINS TO BSEG_MEINS.
MOVE BSEG-MENGE TO BSEG_MENGE.
ELSE.
MOVE ' ' TO BSEG_KOSTL.
MOVE ' ' TO BSEG_MEINS.
MOVE ' ' TO BSEG_MENGE.
ENDIF.
*GET LTEST
SELECT LTEXT INTO XLTEXT
FROM CSKU
WHERE KTOPL = 'COAA' AND SPRAS = 'EN'.
*GET MAKTX
IF XMATNR <> ' '.
SELECT SINGLE * FROM MAKT WHERE MATNR = XMATNR.
MOVE MAKT-MAKTX TO XMAKTX.
ELSE.
MOVE ' ' TO XMAKTX.
ENDIF.
MOVE : XKOKRS TO ITAB_COVP-KOKRS,
XBELNR TO ITAB_COVP-BELNR,
XBUZEI TO ITAB_COVP-BUZEI,
XGJAHR TO ITAB_COVP-GJAHR,
XPERIO TO ITAB_COVP-PERIO,
XWKGBTR TO ITAB_COVP-WKGBTR,
XWTGBTR TO ITAB_COVP-WTGBTR,
XREFBN TO ITAB_COVP-REFBN,
XREFBZ TO ITAB_COVP-REFBZ,
XKSTAR TO ITAB_COVP-KSTAR,
XBEKNZ TO ITAB_COVP-BEKNZ,
XMATNR TO ITAB_COVP-MATNR,
XBUKRS TO ITAB_COVP-BUKRS,
XREFGJ TO ITAB_COVP-REFGJ,
XREFBK TO ITAB_COVP-REFBK,
XLTEXT TO ITAB_COVP-LTEXT,
XMAKTX TO ITAB_COVP-MAKTX,
XAWTYP TO ITAB_COVP-AWTYP,
XTWAER TO ITAB_COVP-TWAER,
XSGTXT TO ITAB_COVP-SGTXT,
BSEG_KOSTL TO ITAB_COVP-BSEG_KOSTL,
BSEG_MEINS TO ITAB_COVP-BSEG_MEINS,
BSEG_MENGE TO ITAB_COVP-BSEG_MENGE,
MSEG_KOSTL TO ITAB_COVP-MSEG_KOSTL,
MSEG_MENGE TO ITAB_COVP-MSEG_MENGE,
MSEG_MEINS TO ITAB_COVP-MSEG_MEINS.
APPEND ITAB_COVP.
CLEAR ITAB_COVP.
ENDSELECT.
ENDSELECT.
OPEN DATASET P_FILE FOR OUTPUT IN TEXT MODE.
IF SY-SUBRC NE 0.
WRITE: 'File cannot be opened. Reason:', MSG_TEXT.
EXIT.
ENDIF.
LOOP AT ITAB_COVP.
TRANSFER ITAB_COVP TO P_FILE.
ENDLOOP.
CLOSE DATASET P_FILE.Cecilia - I think your problemn is a nested select:
*GET LTEST
SELECT ltext INTO xltext
FROM csku
WHERE ktopl = 'COAA' AND spras = 'EN'.
*GET MAKTX
IF xmatnr <> ' '.
SELECT SINGLE * FROM makt WHERE matnr = xmatnr.
MOVE makt-maktx TO xmaktx.
ELSE.
MOVE ' ' TO xmaktx.
ENDIF.
MOVE : xkokrs TO itab_covp-kokrs,
etc.
mseg_meins TO itab_covp-mseg_meins.
APPEND itab_covp.
CLEAR itab_covp.
ENDSELECT.
Do you need to do the inner select for every cost element text?
Rob -
Help required network configuration - Gateway route settings get erased on reboot.
Oracle Linux 7
Linux myhostname 3.8.13-35.3.1.el7uek.x86_64 #2 SMP Wed Jun 25 15:27:43 PDT 2014 x86_64 x86_64 x86_64 GNU/Linux
#cat /etc/sysconfig/network-scripts/ifcfg-eno16780032
TYPE="Ethernet"
BOOTPROTO="none"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
NAME="eno16780032"
UUID="2d1107e3-8bd9-49b1-b726-701c56dc368b"
ONBOOT="yes"
IPADDR0="34.36.140.86"
PREFIX0="22"
GATEWAY0="34.36.143.254"
DNS1="34.36.132.1"
DNS2="34.34.132.1"
DOMAIN="corp.halliburton.com"
HWADDR="00:50:56:AC:3F:F9"
IPV6_PEERDNS="yes"
IPV6_PEERROUTES="yes"
NM_CONTROLLED="no"
#route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 34.36.143.254 0.0.0.0 UG 0 0 0 eno16780032
34.36.140.0 0.0.0.0 255.255.252.0 U 0 0 0 eno16780032
169.254.0.0 0.0.0.0 255.255.0.0 U 1002 0 0 eno16780032
When I reboot the machine, the first line in route table gets erased, I then run:
#route add default gw 34.36.143.254
After which network works fine.
Help required. I don't want to use NetworkManager.The following might be useful:
https://access.redhat.com/solutions/783533
"When transitioning from NetworkManager to using the network initscript, the default gateway parameter in the interface's ifcfg file will be depicted as 'GATEWAY0'. In order for the ifcfg file to be compatible with the network initscript, this parameter must be renamed to 'GATEWAY'. This limitation will be addressed in an upcoming release of RHEL7."
NetworkManager is now the default mechanism for RHEL 7. Personally I don't quite understand this, because as far as I can gather it is a program for systems to automatically detect and connect to known networks. I think such functionality can be useful when switching between wireless and wired networks, but for a server platform, I wonder. -
Help required with an error message.
"Table Z0CL_BATCLA for object class CHARGE does not exist"Hi
It means your Z0CL_BATCLA is not assigned to object CHARGE, you have to create the linke between object and table in the table TCDOB.
You can do it by trx SCDO, but in this case you have to change in standard object.
Max
Maybe you are looking for
-
Transfer SU numbers between WHs
Hi all. We are using stock transport orders (STO) between two plants. The delivering and the receiving plant/storage location are NOT HUM managed, but have WM whit SU. We need use the same number of SU on the receiving WH that had on the delivering W
-
Image Store function in PC Suite
I've installed the driver and downloaded the PC suite for my 6101 phone and CA-42 cable, onto a Dell dimension 2400 runing Windows XP. A DLA message appears at the beginning of the install, warning me that I won't be able to add anything to the insta
-
My iPod fourth genereation is closing apps down randomly shortly after I open them. Even the apps that were provided by apple won't stay open long. I've tried everything they've suggested and nothing has worked. What's wrong with my iPod and how can
-
Overheating issues Macbook Pro 13" (newest version)
I bought one of the new Macbook Pro's with Haswell, the version which I believe retails at £1,249 in the UK. I recently started playing the new Football Manager and after minutes of me turning the game on the laptop is becoming very hot, and in turn
-
Use keyboard for context menu??
Hi, I'm not sure if I'm using the correct terminology or not -- but here's my question (aided with a screenshot). Obviously, in that screenshot, I can't press "return" on the keyboard to Log Out. Is there a way to use my keyboard to select "Cancel"??