Search This Blog

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.



 

How to add/edit/delete table entry with no authorization

As a technical consultant, there may have been scenarios where you might want to maintain a desired entry in database table, but you do not have authorization to do it!! To add/edit/delete a table record when you have no authorization -

1) In t-code SE11 or SE16, select the entry you want to edit and click on 'Display' button (F7)









2) In the command editor, type /h and press ENTER















3) Again press ENTER and you will see the below code. You need to change the field code to edit/add/delete table entry.

































4) Change the value of field code to
a) EDIT to change existing records
b) INSR to create a new record
c) DELE to delete the record




5) Press F8. Now you can make changes to the table entry and SAVE.













How to find BADI used in the transaction or program




1.     Transaction Code: SE24

Object Type: CL_EXITHANDLER

Click ‘Display’ button


2.     In the ‘Method’ tab, Double click GET_INSTANCE which will open its source code


3.    Set Breakpoint at

CALL METHOD cl_exithandler=>get_class_name_by_interface

Run your transaction code. The debugger will stop at the breakpoint. Check the value for EXIT_NAME to get the BADI’s implemented for this transaction code.

Memory overflow in buffer synchronization in SM21


1.    Get the number of the process and go to SM50
2.    Select the PID (Process ID)
3.    From the menu bar select Process>>Trace>>Display File
4.    In the developer trace, there should be a list of tables showing up that the buffers are complaining about. Examples below are possible...

B Thu Apr 17 06:19:54 2008
B ***LOG BS0=> escalation level 2 for buffer synchronization reached [dbsync#3
@ 3557]
dbsync 3557
B Begin of notebook trace
B class = 7 table = /BI0/STCTSESUID
B class = 7 table = /BI0/STCTSTEPUID
B class = 7 table = /BI0/STCTSTEPUID
B class = 7 table = /BI0/STCTTIMSTMP
B class = 7 table = /BI0/STCTSTEPUID
B class = 7 table = /BI0/STCTTIMSTMP

5.    Look at the buffered tables and decide about which ones need to be changed from buffered to non-buffered. SE13 is the transaction to do that. The buffered tables need to be tables that have a large amount of reads, as compared to writes
OR
Contact SAP Basis guys to increase the tablespace.

ABAP Interview questions

1) In a SELECT query, when FOR ALL ENTRIES IN <itab> is used, and itab is empty, then what will be fetched by select query?
Ans: All the entries from the SELECT table as FOR ALL ENTRIES is disregarded if itab is empty.
i.e. For query, SELECT * from MARA FOR ALL ENTRIES IN i_tab WHERE matnr EQ i_tab-matnr -> If i_tab is empty, then all the records will be fetched from MARA 

2) How many Function Modules at max can be assigned to Function Group?
Ans: 99

3) How can READ statement be performance tuned?
Ans: First SORT the internal table and then use READ statement WITH KEY BINARY SEARCH

4) How can nested loops be performance tuned?
Ans: Parallel cursor method - The inner nested loops starts from index.
v_index = 1.
LOOP AT t_vbak ASSIGNING <fs_vbak>.
   LOOP AT t_vbap FROM v_index ASSIGNING <fs_vbap>.
       IF <fs_vbap>-vbeln NE <fs_vbak>-vbeln.
           v_index = sy-tabix.
           EXIT.
       ELSE.
           v_index - v_index + 1.
       ENDIF.
    ENDLOOP.

5) How do you define exceptions in function modules?

6) How do you generate interactive ALV report?

7) How would you upload logo in SAP Scripts?
Ans: Upload TIFF image using standard program RSTXLDMC or transaction code SE78 and use INCLUDE statement to upload the same in script
/: INCLUDE <logofileuploadedthruse78> OBJECT TEXT ID ST