Search This Blog

SAP ABAP Authorization


An authorization group is a group that can be defined to restrict access to executing/maintaining programs in SAP. An authorization group can be allocated for each program and users can then be given access to perform functions for specific authorization groups only.
The foundation of SAP security. Objects serve as a template for coding access checks in ABAP programs and for establishing user access rights. When values are defined for authorisation objects these are referred to as authorizations.

T-code SU21 Maintain Authorization Objects

T-code SU20 Maintain Authorization Fields
 



ABAP Code to check authorization -

Authorization Object
S_TCODE
Field
TCD
Values
Any transaction code


CALL 'AUTH_CHECK_TCODE'
     ID 'TCODE' FIELD objectname.

AUTHORITY-CHECK OBJECT 'S_TCODE'
             ID 'ACTVT' FIELD '02'  "Check display = 2 access
             
ID 'TCD' FIELD 'VA03'. " for transaction code VA03
 


How to find parameters of READ_TEXT function module

You need to know where to maintain the text to find the input parameters that you want to use for reading that text with function module READ_TEXT. You can ask the functional consultant as to where the text would be maintained by the user.

I am taking an example of maintaining text in billing document.

Go to T-code VF02. Enter the billing document number and press ENTER

Go to Header Texts 

Under the tab Head.text, find the text from the left pane that would be maintained. For example, I would be maintaining 'Form Header'. Double click Form Header and maintain the text value in the right pane and SAVE.

Repeat step 1 to 3. Before double clicking 'Form header', activate the debugger by typing '/h' in the command box.
Double click 'Form header' and when the debugger gets triggered, put a breakpoint at function module 'READ_TEXT'


Press F8. The debugger stops in the READ_TEXT function module. Press F7. Scrolling up you will find READ_TEXT function module. Double click the exporting parameters (OBJECT, NAME, ID, LANGUAGE) 

These are the values that we will be passing in our code to read the required text.

What is the difference between sy-index and sy-tabix

REPORT ztest.

TYPES: 
BEGIN OF x_emp,
        fname 
TYPE char15,
        lname 
TYPE char15,
       
END OF x_emp.
DATA: t_tab 
TYPE STANDARD TABLE OF x_emp,
      w_tab 
TYPE x_emp.

w_tab-fname = 
'Sam'.
w_tab-lname = 
'Winchester'.
APPEND w_tab TO t_tab.

w_tab-fname = 
'David'.
w_tab-lname = space.

APPEND w_tab TO t_tab.

w_tab-fname = 
'Dean'.
w_tab-lname = 
'Winchester'.
APPEND w_tab TO t_tab.

w_tab-fname = 
'Smith'.
w_tab-lname = space.

APPEND w_tab TO t_tab.

WRITE: / 
'**LOOP Example**'.
LOOP AT t_tab INTO w_tab.
  
IF w_tab-lname IS INITIAL.
    WRITE:/ 
'Index: ', sy-index, 'Tabix: ', sy-tabix.
  ELSE.
    WRITE:/ 
'Index: ', sy-index, 'Tabix: ', sy-tabix,
            
'First Name: ', w_tab-fname, 'Last Name: ', w_tab-lname.
  ENDIF.

ENDLOOP.
SKIP 3.

WRITE: / 
'**DO Example**'.
READ TABLE t_tab INTO w_tab INDEX 2.
DO TIMES.
  WRITE:/ 
'Index: ', sy-index, 'Tabix: ', sy-tabix,
              
'First Name: ', w_tab-fname, 'Last Name: ', w_tab-lname.
ENDDO.

SY-INDEX is used in DO...ENDDO/WHILE loop
SY-TABIX is used in LOOP...ENDLOOP i.e. for tracking line number of internal table
 
SY-TABIX: number of record in the internal table
SY-INDEX: index number of record which is currently executed in the loop...endloop

SY-TABIX

Current line of an internal table. SY-TABIX is set by the statements below, but only for index tables. The field is either not set or is set to 0 for hashed tables.

APPEND sets SY-TABIX to the index of the last line of the table, that is, it contains the overall number of entries in the table.
COLLECT sets SY-TABIX to the index of the existing or inserted line in the table. If the table has the type HASHED TABLE, SY-TABIX is set to 0.
LOOP AT sets SY-TABIX to the index of the current line at the beginning of each loop lass. At the end of the loop, SY-TABIX is reset to the value that it had before entering the loop. It is set to 0 if the table has the type HASHED TABLE.
READ TABLE sets SY-TABIX to the index of the table line read. If you use a binary search, and the system does not find a line, SY-TABIX contains the total number of lines, or one more than the total number of lines. SY-INDEX is undefined if a linear search fails to return an entry.
SEARCH <itab> FOR sets SY-TABIX to the index of the table line in which the search string is found.


SY-INDEX

In a DO or WHILE loop, SY-INDEX contains the number of loop passes (iterations) including the current pass.
Note: sy-index is different from INDEX used with READ statement. In the above example of DO...ENDDO, the record is read using INDEX 2, while you can see different values for sy-index displayed.