Showing posts with label Internal Table. Show all posts
Showing posts with label Internal Table. Show all posts

Check Statement

The CHECK statement checks a condition first inside a loop. If the condition is true then rest of the statements inside that loop will be executed. If the condition is false then the program controller terminates the current loop pass and it will go to the next loop iteration. Hence the condition is the prerequisite of CHECK statement. No condition will lead the syntax error of the program. Outside of the loop CHECK will leave the current processing block of the program.

REPORT  zabap_gui.

* Declaring the local structure of internal table
TYPES:
      BEGIN OF ty_tab,
        item     TYPE char10,
        quantity TYPE i,
        price    TYPE i,
      END OF ty_tab.

* Declaring the Standard internal table with non unique key
DATA:
      itab TYPE STANDARD TABLE OF ty_tab,
      wtab TYPE ty_tab.

* Entering records to each field
wtab-item = 'Rice'. wtab-quantity = 2. wtab-price = 80.

* Now one single row has been fulfilled with data
* Next appending one single row data into the table
APPEND wtab TO itab.

wtab-item = 'Sugar'. wtab-quantity = 1. wtab-price = 90.
APPEND wtab TO itab.

wtab-item = 'Tea'. wtab-quantity = 1. wtab-price = 100.
APPEND wtab TO itab.

wtab-item = 'Rice'. wtab-quantity = 3. wtab-price = 150.
APPEND wtab TO itab.

wtab-item = 'Horlicks'. wtab-quantity = 1. wtab-price = 200.
APPEND wtab TO itab.

wtab-item = 'Sugar'. wtab-quantity = 2. wtab-price = 70.
APPEND wtab TO itab.

* Sorting the itab by item.
SORT itab BY item.

WRITE:  /3 'Item',
        13 'Quantity(KG)',
        28 'Price(Rs)'.
WRITE / '=========================================='.
SKIP. " Skipping one single line

LOOP AT itab INTO wtab.

* If the condition is true then it will execute further statements
* If CHECK condition is false then it will move to the next iteration of loop
  CHECK wtab-item = 'Rice'.

  WRITE:  /3 wtab-item,
          12 wtab-quantity,
          25 wtab-price.
  CLEAR wtab.
ENDLOOP.

SKIP.
WRITE '=========================================='.






Whenever the check condition finds Rice item it goes to the rest of the statements of current loop. If the condition finds false (other than Rice) it leaves the current loop iteration and goes to the next loop pass.

Continue Statement


The CONTINUE statement is used inside a loop only. When the program controller finds the CONTINUE statement it quits the current loop pass. Hence all other statements after the CONTINUE will not be executed inside that loop. The program controller then goes to the next loop iteration.

REPORT  zabap_gui.

* Declaring the local structure of internal table
TYPES:
      BEGIN OF ty_tab,
        item     TYPE char10,
        quantity TYPE i,
        price    TYPE i,
      END OF ty_tab.

* Declaring the Standard internal table with non unique key
DATA:
      itab TYPE STANDARD TABLE OF ty_tab,
      wtab TYPE ty_tab.

* Entering records to each field
wtab-item = 'Rice'. wtab-quantity = 2. wtab-price = 80.

* Now one single row has been fulfilled with data
* Next appending one single row data into the table
APPEND wtab TO itab.

wtab-item = 'Sugar'. wtab-quantity = 1. wtab-price = 90.
APPEND wtab TO itab.

wtab-item = 'Tea'. wtab-quantity = 1. wtab-price = 100.
APPEND wtab TO itab.

wtab-item = 'Rice'. wtab-quantity = 3. wtab-price = 150.
APPEND wtab TO itab.

wtab-item = 'Horlicks'. wtab-quantity = 1. wtab-price = 200.
APPEND wtab TO itab.

wtab-item = 'Sugar'. wtab-quantity = 2. wtab-price = 70.
APPEND wtab TO itab.

WRITE:  /3 'Item',
        13 'Quantity(KG)',
        28 'Price(Rs)'.
WRITE / '=========================================='.
SKIP. " Skipping one single line

LOOP AT itab INTO wtab.
  IF wtab-item = 'Rice'.

* Continue always moves to the next iteration of the loop    
    CONTINUE.
  ENDIF.

  WRITE:  /3 wtab-item,
          12 wtab-quantity,
          25 wtab-price.
  CLEAR wtab.
ENDLOOP.

SKIP.
WRITE '=========================================='.







Whenever the program controller finds Rice item it just ignores it and goes to next loop iteration. That is why Rice item is not coming to the output.

Hashed Internal Table


Hashed table is not an index table. It follows the hash algorithm. Here the declaration of key is must and also the key must be unique. Hence no duplicate entry will be in the hashed table. We can access records only by the key. Similar to sorted tables data can be inserted here by INSERT statement. Hashed tables are used when the internal table contains huge volume of data.


REPORT  zabap_gui.

* Declaring the local structure of internal table
TYPES:
      BEGIN OF ty_tab,
        item     TYPE char10,
        quantity TYPE i,
        price    TYPE i,
      END OF ty_tab.

* Declaring the Hashed internal table with non unique key
DATA:
      itab TYPE HASHED TABLE OF ty_tab WITH UNIQUE KEY item,
      wtab TYPE ty_tab.

* Entering records to each field
wtab-item = 'Rice'. wtab-quantity = 2. wtab-price = 80.

* Now one single row has been fulfilled with data
* Next inserting one single row data into the table
INSERT wtab INTO TABLE itab.

wtab-item = 'Suger'. wtab-quantity = 1. wtab-price = 90.
INSERT wtab INTO TABLE itab.

wtab-item = 'Tea'. wtab-quantity = 1. wtab-price = 100.
INSERT wtab INTO TABLE itab.

wtab-item = 'Rice'. wtab-quantity = 3. wtab-price = 150.
INSERT wtab INTO TABLE itab.

wtab-item = 'Horlicks'. wtab-quantity = 1. wtab-price = 200.
INSERT wtab INTO TABLE itab.

wtab-item = 'Suger'. wtab-quantity = 2. wtab-price = 70.
INSERT wtab INTO TABLE itab.

WRITE:  /3 'Item',
        13 'Quantity(KG)',
        28 'Price(Rs)'.
WRITE / '=========================================='.
SKIP. " Skipping one single line

LOOP AT itab INTO wtab.

  WRITE:  /3 wtab-item,
          12 wtab-quantity,
          25 wtab-price.
ENDLOOP.

SKIP.
WRITE '=========================================='.

Due to uniqueness of the key similar entries are ignored.















Hashed table can be sorted. If we sort this table it will be as follows.


Delete Table Statement


Internal table can be edited as per requirement. We can delete a particular line of it based on the condition. The statement is “DELETE TABLE itabFROM wtab.” Here itab is internal table and wtab is its work area. This statement can be used in any type of internal table whenever there is a requirement.

REPORT  zabap_gui.

* Declaring the local structure of internal table
TYPES:
      BEGIN OF ty_tab,
        item     TYPE char10,
        quantity TYPE i,
        price    TYPE i,
      END OF ty_tab.

* Declaring the Standard internal table with non unique key
DATA:
      itab TYPE STANDARD TABLE OF ty_tab,
      wtab TYPE ty_tab.

* Entering records to each field
wtab-item = 'Rice'. wtab-quantity = 2. wtab-price = 80.

* Now one single row has been fulfilled with data
* Next appending one single row data into the table
APPEND wtab TO itab.

wtab-item = 'Suger'. wtab-quantity = 1. wtab-price = 90.
APPEND wtab TO itab.

wtab-item = 'Tea'. wtab-quantity = 1. wtab-price = 100.
APPEND wtab TO itab.

wtab-item = 'Rice'. wtab-quantity = 3. wtab-price = 150.
APPEND wtab TO itab.

wtab-item = 'Horlicks'. wtab-quantity = 1. wtab-price = 200.
APPEND wtab TO itab.

wtab-item = 'Suger'. wtab-quantity = 2. wtab-price = 70.
APPEND wtab TO itab.

WRITE:  /3 'Item',
        13 'Quantity(KG)',
        28 'Price(Rs)'.
WRITE / '=========================================='.
SKIP. " Skipping one single line

LOOP AT itab INTO wtab.
  IF wtab-item = 'Rice'.
    DELETE TABLE itab FROM wtab.
  ELSEIF wtab-item = 'Suger'.
    DELETE TABLE itab FROM wtab.
  ENDIF.
ENDLOOP.

LOOP AT itab INTO wtab.
  WRITE:  /3 wtab-item,
          12 wtab-quantity,
          25 wtab-price.
ENDLOOP.

SKIP.
WRITE '=========================================='.
SKIP.





Whenever the program controller finds Rice & Suger it deletes from the internal table.