Issue ALTER USER command without DBA previlage ...

1 > don't want to give DBA previlage, or create DB link ..
2 > we know SYSTEM / PASSWORD, Hard code in PL/SQL programme
3 > Dynamically generate sql ('aleter user .. ')
4 > Issue command in procedure .
In short we want to give previlage to help desk to change application users password on request .. but without giving DBA previlages .. as programmer knows System user's password .. so he can hard code in procedure and issue stmt with username SYSTEM..
Help is highly appreciated ..
null

Hi,
You can even give the users to change their own password as user can alter its own password without having dba privileges.or else if you want to give that right to help desk then connect to the user you want to change the password and change it. you need not hardcode system.
hope this helps you.
regards
gaurav
null

Similar Messages

  • Auditing the  ALTER USER command

    How exactly does one use FGA to capture the "tail-end" of the ALTER USER command? Could you provide or point me toward an example with detailed "how to" information?
    Thanks.

    You need to have "ALTER USER " privilege to change the password for any other user.
    It seems you are not login with scott user and actually "Scott.tiger"
    it shld be
    Alter user scott identified by tiger;

  • Alter user command failed

    Hello,
    I login to my audit vault database as "/as sysdba" and tried to unlock the user. I must have missed something because I thought SYS can do almost everything. Any ideas?
    SQL> ALTER USER "AV" ACCOUNT UNLOCK;
    ALTER USER "AV" ACCOUNT UNLOCK
    ERROR at line 1:
    ORA-01031: insufficient privileges
    Thanks.

    feverlove wrote:
    Hello,
    I login to my audit vault database as "/as sysdba" and tried to unlock the user. I must have missed something because I thought SYS can do almost everything. Any ideas?
    SQL> ALTER USER "AV" ACCOUNT UNLOCK;
    ALTER USER "AV" ACCOUNT UNLOCK
    ERROR at line 1:
    ORA-01031: insufficient privileges
    Thanks.By default, Oracle Database Vault is enabled in the Audit Vault Server. Oracle Database Vault restricts access to the data in the Audit Vault Server from any user, including users who have administrative access. For Oracle Audit Vault, Oracle Database Vault protects the Audit Vault Server by using a realm. To ensure that the data in the Audit Vault Server is protected, do not disable Oracle Database Vault.
    Please check if data vault is enabled:
    SELECT * FROM V$OPTION WHERE PARAMETER = 'Oracle Database Vault';
    Read more about:
    http://download.oracle.com/docs/cd/E14472_01/doc.102/e14459/avadm_mng_security.htm
    Best Regards,
    Gokhan
    If this question is answered, please mark appropriate posts as correct/helpful and the thread as closed. Thanks

  • ALTER USER를 실행한 사용자를 확인하는 방법(SYSTEM EVENT TRIGGER)

    제품 : ORACLE SERVER
    작성날짜 : 2002-11-07
    ALTER USER를 실행한 사용자를 확인하는 방법(SYSTEM EVENT TRIGGER)
    ================================================================
    PURPOSE
    자신이나 또는 다른 user들의 password를 바꾸는 등의 alter user command를
    사용한 사용자를 확인하는 방법을 알아보자.
    Explanation & Example
    1. 사용자 정보를 저장할 event table을 생성한다.
    Create event table and users to store the alterations made:
    SQL> connect / as sysdba;
    create table event_table
    ora_sysevent varchar2(20),
    ora_login_user varchar2(30),
    ora_instance_num number,
    ora_database_name varchar2(50),
    ora_dict_obj_name varchar2(30),
    ora_dict_obj_type varchar2(20),
    ora_dict_obj_owner varchar2(30),
    timestamp date
    create user test1 identified by test1;
    grant create session, alter user to test1;
    create user test2 identified by test2;
    grant create session to test2;
    2. SYS user에서 AFTER ALTER Client Event Trigger 를 생성한다.
    Note: This step creates a trigger and it is fired whenever the user "test1"
    issues ALTER command (It can be ALTER USER or ALTER TABLE)
    SQL> CREATE or REPLACE TRIGGER after_alter AFTER ALTER on database
    BEGIN
    IF (ora_dict_obj_type='USER') THEN
    insert into event_table
    values (ora_sysevent,
    ora_login_user,
    ora_instance_num,
    ora_database_name,
    ora_dict_obj_name,
    ora_dict_obj_type,
    ora_dict_obj_owner,
    sysdate);
    END IF;
    END;
    3. test1 user로 접속한 후 test2 user의 password를 변경하는 작업을 실행한다.
    SQL> connect test1/test1
    SQL> alter user test2 identified by foo;
    4. test2 user의 password가 test1 user에 의해 변경되면 그런 내용을
    event_table 에서 확인할 수 있다.
    Now that we have altered the "test2" user password from user "test1", the
    event_table should have captured this details.
    Now Login in as sys and Query on event_table:
    SQL> connect / as sysdba;
    SQL> select * from event_table;
    ORA_SYSEVENT ORA_LOGIN_USER ORA_INSTANCE_NUM
    ORA_DATABASE_NAME
    ORA_DICT_OBJ_NAME ORA_DICT_OBJ_TYPE
    ORA_DICT_OBJ_OWNER TIMESTAMP
    ALTER TEST1 1
    T901.IDC.ORACLE.COM
    TEST2 USER
    13-JUN-02
    event_table의 내용을 조회하여 LOGIN_USER와 ALTERED USER 는
    ORA_LOGIN_USER와 ORA_DICT_OBJ_NAME column을 통해 확인할 수 있다.
    비슷한 방법으로 아래의 event에서 trigger를 생성하여 확인할 수 있다.
    1) BEFORE DROP
    2) AFTER DROP
    3) BEFORE ANALYZE
    4) AFTER ANALYZE
    5) BEFORE DDL
    6) AFTER DDL
    7) BEFORE TRUNCATE
    8) AFTER TRUNCATE
    Related Documents
    Oracle Application Developer's Guide

  • How to tell if a user is issuing 'alter session statements'

    When I run 'alter session' from sqlplus in my schema, this does not get parsed and go to v$sql or show up in v$open_cursor. I have a user that is running queries from informatica. He says he is passing alter session statements through informatica, I want to see if they actually get there. The person is not real versed in oracle and I don't know informatica.
    i cant turn on trace cause he connects and disconnects and this would run immediately, I am not in a position to turn on system level tracing, add a trigger, or turn on auditing (not allowed).
    anyway to tell from a data dictionary view or something like that if these were issued by a given session? The queries run for a few minutes, so I have a bit before his session disconnects to query the data. I can't get him to change his code to stay connected. Is there a view that shows parameter changes for a given session?
    oracle: 10.2.0.5
    4 alter session commands are:
    Alter session set sort_area_size=999999999;
    Alter session set hash_area_size=999999999;
    Alter session set db_file_multiblock_read_count = 128;
    alter session enable parallel dml;
    Edited by: Guess2 on Jul 17, 2012 12:49 PM

    i cant turn on trace cause he connects and disconnects and this would run immediately, I am not in a position to turn on system level tracing, add a trigger, or turn on auditing (not allowed). If Informatica connects to Oracle via network, capturing TCP/IP traffic and mining in it may be your last resort.
    you can get session's PDML status from
    select pdml_status from v$session;
    i cant turn on trace cause he connects and disconnects and this would run immediatelythis contradicts to your following statement
    The queries run for a few minutes, so I have a bit before his session disconnects to query the data.
    I can't get him to change his code to stay connected. Informatica should have debug. Ask him if he can go step by step.
    Edited by: user11181920 on Jul 17, 2012 5:53 PM

  • Let group leader change his memeber's pwd without giving him 'alter user' p

    Hi, all
    Is there any way that I can let a group leader to reset his own member's password without giving him the 'alter user' privilege ?
    I know I can use following simplified procedure to allow one person to change his own password, but I am looking for a way to let leader to reset when his members forget their pwd, and the following script can't work. I also created the synonym and grant 'execute on' to him. Can someone help me on this?
    Thanks in advance.
    CREATE OR REPLACE PROCEDURE change_pwd ( v_username in varchar2, v_pwd in varchar2)
    authid current_user
    is
    BEGIN
    execute immediate 'alter user '||m_username||' identified by '||v_pwd ;
    END ;
    ----

    SQL> @example
    SQL> spool capture.log
    SQL> create user alladmin identified by adminall;
    User created.
    SQL> grant connect to alladmin;
    Grant succeeded.
    SQL> grant resource to alladmin;
    Grant succeeded.
    SQL> grant alter user to alladmin;
    Grant succeeded.
    SQL> create user member1 identified by No1knows;
    User created.
    SQL> grant connect to member1;
    Grant succeeded.
    SQL> create user member2 identified by No1knows;
    User created.
    SQL> grant connect to member2;
    Grant succeeded.
    SQL> create user gl1 identified by secret;
    User created.
    SQL> grant connect to gl1;
    Grant succeeded.
    SQL> grant resource to gl1;
    Grant succeeded.
    SQL> connect alladmin/adminall
    Connected.
    SQL> CREATE OR REPLACE PROCEDURE change_pwd ( v_username in varchar2)
      2  is
      3  m_username varchar2(100);
      4  v_pwd varchar2(30) := 'FUBAR1';
      5  BEGIN
      6  select user into m_username from dual;
      7  if (m_username = 'GL1')
      8  then
      9       execute immediate 'alter user '||v_username||' identified by '||v_pwd ;
    10  end if;
    11  END ;
    12  /
    Procedure created.
    SQL> grant execute on change_pwd to gl1;
    Grant succeeded.
    SQL> connect gl1/secret
    Connected.
    SQL> exec alladmin.change_pwd('MEMBER1');
    PL/SQL procedure successfully completed.
    SQL> exec alladmin.change_pwd('MEMBER2');
    PL/SQL procedure successfully completed.
    SQL> connect member1/FUBAR1
    Connected.
    SQL> select user from dual;
    USER
    MEMBER1
    SQL> connect member2/FUBAR1
    Connected.
    SQL> select user from dual;
    USER
    MEMBER2
    SQL> exit
    Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
    With the Partitioning, OLAP and Data Mining optionsAny more questions?

  • At line-selection & at user-command event issue

    hi
    i am working on a interactive report,with at line & at user command event,on list 3 i have used a pf status,to trigger the at user command event,till that i was working with at line selection,which are working fine,but on list 3,i am able to see my pf status,but at user command event is not working properly,its still working like at line selection event,if i clk on record,it take to for nxt action,which i want to do through the action button of pf status.
    In debugging i checked that it coming to at user command,but the action in sy-user is 'PICK' & its doing the operation.
    WHEN '3'.
          IF itab4[] IS NOT INITIAL.
            SET PF-STATUS 'Z203'.
            LOOP AT itab4.
              AT FIRST.
                WRITE:/1 'Material' ,18 'Name'.
              ENDAT.
              WRITE:/1 itab4-matnr,8 itab4-maktx.
              HIDE:itab4-matnr.
            ENDLOOP.
          ELSE.
            WRITE:/ 'No Data Found'.
          ENDIF.
      ENDCASE.
      BREAK-POINT.
    AT USER-COMMAND.
      CASE sy-ucomm.
        WHEN 'CALL'.
          PERFORM bdc_mm02.
      ENDCASE.
    pls tel me how to use at line selection & at user command in same report to make both events working efficiently.
    regds
    vipin

    Check whether you have assigned Function Key F2 to your function code 'CALL'. If so change that function key. The function key F2 is always linked to function code 'PICK'.
    Regards
    Sathar

  • MAXL - Alter User issue

    Hi All,
    Does Alter User MAXL work for an external user?
    We use Alter User to add users to groups. This works fine for native users, say
    Alter user user1 add to group1 ;
    From the above statement it is not sure if user1 is a native or an external user. I think the default is native.
    Is there any special way to specify that the user is an external user?
    Appreciate your thoughts.
    Thanks,
    -Ethan.

    Hi Cameron,
    Thank you for the link.
    I think LCM works only when both the source & destination are in Shared services mode.
    In my case, source is not in Shared services.
    All I want to know is, Is there any utility to assign "Server access" to external LDAP users?
    Here is the problem.
    I need to assign filter access to many users & groups.
    I can create native groups & assign filters using MAXLS
    I can Alter external LDAP users to assign them to groups using MAXL, ONLY after I give them server access & refersh security, because users will not be recognized in MAXL if they don't have server access privelege.
    The complete process cannot be executed in one flow.
    I have to manually assign server access to each user or manually include each user to a group & then assign server access to the group.
    I am wondering if there is any thing in MAXL or any other utility to assign server access to the users.
    This would be very helpful.
    Thanks,
    -Ethan.

  • Oracle Security - Controlling the 'alter user' privilege

    Hi,
    1. DB 10.1.0.5 and 10.2.0.3
    2. "Admin User" needs to be able to change some users passwords in database.
    3. Create user adminuser - grant alter user to adminuser.
    4. DBAs will grant "approle" role to list of required users. DBAs will maintain control of who gets this role.
    4. Create system trigger on alter database - will prevent "adminuser" from changing passwords for accounts not authorized - Script does not fire for DBAs and anyone changing their own password.
    The trigger works as intended - the "adminuser" account can only change the specific set of users.
    Question: We've discovered that the "adminuser" can also use the "alter user" privilege to change default tablespace and tablespace quota. User should only be able to change password.
    Anyone have ideas on adding to the trigger to make sure the "adminuser" is only altering the password?
    I am playing with the ora_is_alter_column system event, thinking that maybe the password column in user$ would be changed but so far I can't get this to work: Here is my trigger --
    CREATE OR REPLACE TRIGGER SYS.PASSWORD_CONTROL AFTER ALTER ON DATABASE
    DECLARE
    DBACHK varchar2(50);
    USRCHK varchar2(50);
    BEGIN
    BEGIN
    -- Ensure users can change their own passwords --
    IF
    ora_login_user = ora_dict_obj_name
    THEN
    RETURN;
    ELSE
    -- Do not apply trigger to DBA group --
    select grantee into DBACHK from dba_role_privs where granted_role='DBA'
    and grantee = ora_login_user;
    IF
    DBACHK = ora_login_user
    THEN
    RETURN;
    END IF;
    END IF;
    EXCEPTION
    WHEN NO_DATA_FOUND
    THEN
    NULL;
    END;
    BEGIN
    select grantee into USRCHK from dba_role_privs where
    granted_role='DISCUSR' and grantee = ora_dict_obj_name;
    IF
    ora_dict_obj_type = 'USER'
    and ora_dict_obj_name = USRCHK
    ---- Need to check that only the password is being change -- the line below does not work
    and ora_is_alter_column('PASSWORD') = TRUE
    THEN
    RETURN;
    ELSE
    RAISE_APPLICATION_ERROR(-20003,
    'You are not allowed to alter user.');
    END IF;
    EXCEPTION
    WHEN NO_DATA_FOUND
    THEN
    RAISE_APPLICATION_ERROR(-20003,
    'You are not allowed to alter user.');
    END;
    END;

    user602453 wrote:
    Ed, thank you for your reply. But, let me explain in more detail.
    More detail is always helpful. ;-)
    >
    A specific user has been assigned as the application administrator. This admininstrator is responsible for reseting application user passwords. The DBA (me) recognizes the DB security issues so I am trying to craft a solution that will allow the application administrator the ability to change only the password of the application users.
    I see that this may be out your hands, but I'd still question the wisdom of having an apps administrator being the one to change user passwords. Especially if that were a model where the users couldn't change their own passwords. I might accept it if the app admin were acting more of a helper to a clueless user.
    Since the only way to change user passwords is to grant the 'alter user' privilege I need a system trigger to keep the user from changing non-application user passwords. Also, because I support nearly 100 production databases that support about 35 different applications I need a solution that can apply to multiple databases. I've been assured that there will only be one administrator charged with resetting passwords.
    So,
    Given those requirements, I have this trigger that will allow the the specific administrator to change the password of a specific set of user while not impacting DBAs or people wanting to change their own password. The way I've implemented this is to create a "dummy" role and assigning the role to the application user. The trigger will allow the administrator to change the password only if the user has the role assigned. The role has no privileges, it is just a way to "mark" the user as an application user. The administrator cannot grant this "dummy" role, only the DBA can.
    Hope that clears things up.I still see another problem in that it still comes back to the dba to create the apps user in the first place, and to assign that dummy role to the user. Also, I'd hope that this proposed apps admin user is a role assigned to a real user. If not, as I mentioned before, you have no real accountability to who is using that account. Simply saying "it shall not be shared", even if written in corporate policy, won't secure it, and you won't be able to trace it. Well, you could turn on auditing and capture the OS userid in the audit log.

  • Database Crash after "alter user"

    Hi,
    I've a problem with oracle 8i databases on windows 2000 server, clustered (active-passive).
    When I try to change sys password as sysdba the instance crashes without error messages in alterlog and without dump files.
    ie:
    sqlplus /nolog
    SQL>conn sys/pwd@db as sysdba
    SQL>alter user sys identified by pwd2;
    this command works and the password file is updated, but the database cluster resource changed its status to "failed"
    Is there a relationship with password file and microsoft cluster service or oralce fail safe?
    this don't happens neither in standalone server nor clustered 10g databases

    I think yes.
    Check MOS FailSafe Database Goes Offline After Changing SYS Password - 167496.1
    HTH
    -Anantha

  • INS0003 OWB Repository Installation cannot continue without DBA privileges

    Hi:
    I´ve installed oracle database 10120 and today installed oracle warehouse builder 10.1, the installation haven´t problems, but when i try to execute OWB Repository Assistant i have the follow message error:
    INS0003 OWB Repository Installation cannot continue without DBA privileges
    If i connect me to OEM and check the privileges for sys or system user don't have any problem if i connect me as sysdba.
    I created a new user with all privileges and the error is the same.
    How could i fix my problem?
    Thanks for your help.
    Alex.

    This issue is normally caused because you have not setup sys to connect as sysdba per newer database setup procedures, test with connect "/ as sysdba" in sql*plus.
    If you cannot connect from SQLPlus by just the '/ as sysdba' login, then check the Note 50507.1 via Metalink as this describes the different ways you can connect to Oracle as an
    administrative user.
    Hope this helps,
    Keith
    Product Management
    Oracle Warehouse Builder

  • "Alter Database" command  in Database Standby

    Hi community.
    I have the following situation:
    I've ASE 15.7 CE SP121 in two enviroments: System Production and System Standby. The Standby is maintained with load of dump transaction generated in production every 10 minutes.
    Now I need increase a database in data portion in 100GB. I know that I must make this in each enviroment (Production and Standby), also I know that I can execute alter database command while the database in the System Standby is offline.
    The process that I make is:
    Stop dump transaction in production.
    Stop Load transaction in Standby.
    Alter database "on" in Production. Result is Sucessfull.
    Alter database "on" in Standby. Result is error:
         In this step, I receipt the following error:
    The database DBUSER is in the middle of a load sequence. Altering it will not let you load other transaction dumps in the dump-set. If you still prefer to do it please use OVERRIDE option.
    In this situation I have that put online database and increase the size. Obiously, I can't load more dump transaction and I should generate a full dump database in production, load this dump in standby and load dump transations after to load of dump database (full).
    I simulate my situation in a enviorement of test with pubs3 and then of load the last dump transaction, I can do alter database  in my DB standby without problems and after of this process I continue load dump transaction.
    I don't understand why receipt this error?
    Any recomendation?
    Thanks!
    Cristian Lopez.

    I can't recall trying to extend an offline database so what I'd probably do (short of waiting for a definitive answer from someone @ SAP/Sybase ... either here in the forum or from tech support) ...
    1 - Assuming you have to perform a full database dump/load after issuing 'alter database', decide on a good time to perform the full database dump/load and then ...
    2 - follow your steps (above) and then try restarting the log dump/load and ...
    3a - if the log dump/load succeeds ... you've got nothing else to do
    3b - if the log dump/load fails, then proceed with the full database dump/load

  • ORA-02231 error when issue ALTER DATABASE FORCE LOGGING

    Hi,
    Does everybody know why I faced ORA-02231 when issue below command in oracle,
    SQL> ALTER DATABASE FORCE LOGGING;
    ALTER DATABASE FORCE LOGGING
    ERROR at line 1:
    ORA-02231: missing or invalid option to ALTER DATABASE
    SQL> ALTER DATABASE FORCE LOGGING ;
    ALTER DATABASE FORCE LOGGING
    ERROR at line 1:
    ORA-02231: missing or invalid option to ALTER DATABASE
    SQL> ALTER DATABASE FORCE LOGGING
    2
    SQL> ALTER TABLESPACE BIIS FORCE LOGGING
    2 ;
    ALTER TABLESPACE BIIS FORCE LOGGING
    ERROR at line 1:
    ORA-02142: missing or invalid ALTER TABLESPACE option
    I use this oracle version:
    Oracle9i Enterprise Edition Release 9.0.1.1.1 - Production
    PL/SQL Release 9.0.1.1.1 - Production
    CORE 9.0.1.1.1 Production
    TNS for 32-bit Windows: Version 9.0.1.1.0 - Production
    NLSRTL Version 9.0.1.1.1 - Production
    Thanks.

    Hi Jaffar,
    After I checked that you are correct.
    I can issue the command without problem in oracle 9i Rel.2.
    Thanks for your information.
    Tarman.

  • Alter user

    Hi,
    When im using these command the session remains hang
    alter user username identified by password
    kindly let me know the issues behind these
    Thanks

    oracle version?
    whats in the alertlog?
    Post last 10 lines.

  • User command is not getting triggered in interactive ALV with LIST display

    Hi experts,
    I have developed an interactive ALV report with LIST display. Here, the issue is, when i double click a record in the primary ALV list, the control must go to the USER COMMAND event which i have written in my report. But the user command event is not getting triggered at all when i double click any record.
    It gives the following information instead.
    "Choose a valid function".
    (My user command name and its respective form name are same.)
    Here is my code..
    START-OF-SELECTION.
      CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
        EXPORTING
          i_callback_program       = sy-repid
          i_structure_name         = p_table
          i_callback_user_command  = 'TST1'
          i_callback_pf_status_set = 'SET_PF_STATUS'
        TABLES
          t_outtab                 = <dyn_table>
        EXCEPTIONS
          program_error            = 1
          OTHERS                   = 2.
      IF sy-subrc <> 0.
      ENDIF.
    FORM tst1 USING r_ucomm LIKE sy-ucomm
                    rs_selfield TYPE slis_selfield.
    * Local data declaration
      DATA: li_tab TYPE REF TO data,
            l_line TYPE REF TO data.
    * Local field-symbols
      FIELD-SYMBOLS:<l_tab> TYPE table,
                    <l_wa>  TYPE ANY.
    * Create table
      CREATE DATA li_tab TYPE STANDARD TABLE OF (p_table).
      ASSIGN li_tab->* TO <l_tab>.
    * Create workarea
      CREATE DATA l_line LIKE LINE OF <l_tab>.
      ASSIGN l_line->* TO <l_wa>.  CASE r_ucomm.
    *   When a record is selected
        WHEN '&IC1'.
    *     Read the selected record
          READ TABLE <dyn_table> ASSIGNING <dyn_wa> INDEX
          rs_selfield-tabindex.      IF sy-subrc = 0.
    *       Store the record in an internal table
            APPEND <dyn_wa> TO <l_tab>.
    *       Fetch the field catalog info
            CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
              EXPORTING
                i_program_name         = 'Z_DEMO_PDF_JG'
                i_structure_name       = p_table
              CHANGING
                ct_fieldcat            = i_fieldcat
              EXCEPTIONS
                inconsistent_interface = 1
                program_error          = 2
                OTHERS                 = 3.
    Please advice what is the msitake i have done here..

    Read the following code:
    pass the  i_callback_user_command = g_user_command to the ALV function module and write the FORM user_command USING ucomm    LIKE sy-ucomm
                            selfield TYPE slis_selfield.
    as shown below.
    thanx
    Data for ALV display
    DATA  : gt_fieldcat TYPE slis_t_fieldcat_alv,
            gt_events           TYPE slis_t_event,
            g_variant LIKE disvariant,
            g_user_command      TYPE slis_formname VALUE 'USER_COMMAND',
            g_status            TYPE slis_formname VALUE 'SET_PF_STATUS',
            gt_list_top_of_page TYPE slis_t_listheader,
            g_repid LIKE sy-repid,
            gf_pos TYPE i
    Data for ALV display
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
               EXPORTING
              i_callback_program      = g_repid
                 i_callback_program      = sy-repid
                 it_fieldcat             = gt_fieldcat[]
           it_events               = gt_events[]
              i_callback_user_command = g_user_command
                 i_save                  = 'A'
                 is_variant              = g_variant
               TABLES
                 t_outtab                = it_print.
    FORM user_command USING ucomm    LIKE sy-ucomm
                            selfield TYPE slis_selfield.
      CASE ucomm.
        WHEN '&IC1'.
          CASE selfield-sel_tab_field.
            WHEN '1-KUNNR'.
              READ TABLE it_print INTO wa_print INDEX selfield-tabindex.
              IF sy-subrc = 0.
                SET PARAMETER ID 'BPA' FIELD wa_print-kunnr.
                CALL TRANSACTION 'BP'.
              ENDIF.
            WHEN '1-MATNR'.
              READ TABLE it_print INTO wa_print INDEX selfield-tabindex.
              IF sy-subrc = 0.
                SET PARAMETER ID 'JP_ISS' FIELD wa_print-matnr.
                CALL TRANSACTION 'JP29' AND SKIP FIRST SCREEN..
               GET PARAMETER ID 'WRK' FIELD wa_zprint-werks.
               SET PARAMETER ID 'VKO' FIELD wa_zprint-vkorg.
               SET PARAMETER ID 'VTW' FIELD wa_zprint-vtweg.
               CALL TRANSACTION 'JP29' AND SKIP FIRST SCREEN.
              ENDIF.
    Endcase.
    Endform.

Maybe you are looking for