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.t

    Hai 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,
    sri

    Satyaki,
    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
    Praneeth

    Hi, 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.
    Vipin

    There 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

  • Table view help required

    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,
    Vamshi

    Hi 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.

  • Table Control Help required

    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,
    Gupta

    Hi 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
    Rama

    hi,
    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 isn’t 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 don’t want to give access to an entire table group, it’s 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 you’re 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 you’ll 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 criteria’s. 
    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.
    We’ll now get the following popup, in this case we will grant change access, so we choose 02 – Change for activity
    In the list below we’ll 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...very urgent !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

    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