Archive for the 'BASIS' Category

SAP: How to activate SAP webgui

Below are the steps on how to activate webgui on SAP ECC 6.0:

1. Go to your Instance Profile parameter using tcode RZ10 and set the icm/server_port_0 parameter to PROT=HTTP,PORT=8000

2. Now go to transaction SICF and activate the following:
/sap/public/bc/its/mimes
/sap/bc/gui/sap/its/webgui

3. Run transaction SIAC_PUBLISH_ALL_INTERNAL to publish internet services.

4. Now browse to http://<servername>:<icmport>/sap/bc/gui/sap/its/webgui/

As simple as that, you can now use SAP webgui.

SAP: Customized Tcode for View Maintenance Screen

Instead of going to transaction code SM30 to maintain your table, why not create your own t-code for that specific table maintenance screen. To do this, here’s the step by step procedure I stumbled upon on some SAP technical forums:

1. Go to t-code SE93.
2. Type in your customized t-code on the transaction code field.
3. Click on Create button.
4. Give it a short description and tick on the “Transaction with Parameters” radio button.
2. On the next screen, type “SM30″ in the transaction field.
3. Check mark the skip initial screen.
4. type “0″ on screen field
5. Under the Classification area, check mark on Inherit GUI attributes
6. Tick all GUI support checkboxes.
7. On the default value section, give this:

Name of Screen Field: VIEWNAME
Value: Your table name

Name of Screen Field: UPDATE
Value: X X

Creative Commons License

SAP: Setting Up Logon Rules

Go to transaction code RSPFPAR_LOGIN. It will give you a complete list of parameters for Logon Rules. Just refer to the Comment field for the parameter definition.

These parameters can be maintain through Profile Maintenance (RZ10). When SAP startup process reads a profile parameter, it checks first on the Instance Profile. If the parameter cannot be found on the instance profile then it will look on the Default profile. If neither profile contains the parameter, the default value is taken out of the startup program coding. With that, I suggest you to create or maintain parameters in Default Profile. Just ensure that a particular parameter appears only in the default and not in the instance profile.

For the profile to take effect, you have to restart your application server.

Creative Commons License

SAP: Basic of Lock Objects

Data inconsistency occurs when two or more users are editing/changing the same record on the same table at exactly the same time. To avoid this, we use Lock Objects.

Lock Objects enables the user to request a lock on a specific record before accessing it. In this way, changing/editing of records is only possible one at a time, thus avoiding data inconsistency.

There are three different lock modes:

exclusive lock/Write Lock (Mode ‘E’)
allow you to prevent data from being changed while you are changing it yourself. An exclusive lock, as its name suggests, locks an application object for exclusive use by the program that sets it. No other program can then set either a shared lock or an exclusive lock for the same application object.

Shared Lock/Read Lock (Mode ‘S’)
allow you to prevent data from being changed while you are reading it. They prevent other programs from setting an exclusive lock (write lock) to change the object. It does not, however, prevent other programs from setting further read locks.

Enhanced write lock (Mode ‘X’)
works like a write lock but are not accumulated while a program is being executed. It protects from further accesses within the same transaction.

To create a Lock Object, got to transaction SE11, click on Lock Object radio button and enter any name that starts with EZ or EY. (Example EZSAMPLE_LOCK)

When you activate a lock object, the system generates an ENQUEUE_ and a DEQUEUE_ function module that you can use on your ABAP programs.

ENQUEUE_<lockobject name> - adds the requested object in a queue(lock)
DEQUEUE_<lockobject name> - remove the requested object from being queued(unlock).

The basic procedure on requesting a lock:
1. Enqueue and lock the object for editing.
2. Read/write the data from the database.
4. dequeue and release the object.

To implement Lock Objects in ABAP programs, please refer to this post.

SAP: How to use Lock Objects in ABAP

Let say we have a customized table ZCUST_INFO that holds a specific customer information with MANDT(client number) and KUNNR(customer number) as the key field.

So let’s create a Lock Object for our customized table:
1. Go to transaction SE11
2. Click on Lock Object radio button and type-in EZCUST_INFO on name field and click on create button.
3. On Tables Tab, type-in ZCUST_INFO on name field and choose Write Lock on Lock Mode.
4. Go to Lock Parameter Tab and on the first row, type-in mandt on lock parameter, zcust_info on
table, and mandt on field.
5. On second row, type-in custnum on lock parameter, zcust_info on table, and kunnr on field.
6. Click save and activate.

Now let say we also have a dialog program for managing this the content of this table. We have screen 100 for our selection screen with customer number as selection parameter, screen 200 for editing screen, and screen 300 for display screen.

On the PBO of screen 200, let’s add the code below.

  CALL FUNCTION ‘ENQUEUE_EZCUST_INFO’
    EXPORTING
    MODE_ZCUST_INFO = ‘X’
    MANDT = sy-mandt
    CUSTNUM = <customer number from screen 100>
  EXCEPTIONS
    FOREIGN_LOCK = 1
    SYSTEM_FAILURE = 2
    OTHERS = 3.
  IF sy-subrc = 1.
    MESSAGE ‘This record is currently locked by another user!’ type ‘I’.
leave to screen 300.
  ENDIF.

The code above will request for lock on the table zcust_info specifically on the record specified on
the mandt and custnum parameter. If the record is already locked by another user, the user will be
prompted and will be redirected to screen 300 which is the display screen.

Lastly, on the PAI of screen 200, add the code below to release and unlock the object queued on the PBO:

  CALL FUNCTION ‘DEQUEUE_EZCUST_INFO’
    EXPORTING
    MODE_ZCUST_INFO = ‘X’
    MANDT = sy-mandt
    CUSTNUM = <customer number from screen 100>
  EXCEPTIONS
    FOREIGN_LOCK = 1
    SYSTEM_FAILURE = 2
    OTHERS = 3.