Posts

Showing posts from July, 2021

Can Reach program ( 1 d arrray)

 data str_abap_rocks(100) value 'CanRachProgram'.  WRITE: str_abap_rocks. data:lt_int type table of i,     lt_ival type table of i,     lv_ind type i value 1,     lv_temp type i,     lv_target type i value 7. lt_ival = VALUE #( ( 3 ) ( 4 ) ( 7 ) ). lt_int = VALUE #( ( 0 ) ). *perform init_array using lt_int lv_target. *form init_array using lt_int type table of i lv_target type i. do lv_target times. lv_temp = lt_int[ 1 ]. append lv_temp to lt_int. enddo. *endform. *perform can_reach using lt_int lt_ival lv_target. *form can_reach using lt_int type table of i lt_ival type table of i lv_target type i. loop at lt_ival into data(wa_ival). if ( wa_ival <= lv_target ). lt_int[ wa_ival ] = 1. endif. endloop. while lv_ind <= lv_target. loop at lt_ival into wa_ival. if ( wa_ival + lv_ind <= lv_target and lt_int[ lv_ind ] > 0 ) lt_int[ wa_ival + lv_ind ] = 1. endif. endloop. lv_ind = lv_ind + 1. endwhile. *endform. write: lt_int[ lv_t...

Fibonacci - Tabulated 1d array manipulation

 data: lt_d type table of i,     wa_d type i,     lv_ind type i value 3,     lv_inp type i value 7. lt_d = VALUE #( ( 0 ) ( 1 ) ). do ( lv_inp - 2 ) times. wa_d = lt_d[ lv_ind - 1 ] + lt_d[ lv_ind - 2 ]. append wa_d to lt_d. lv_ind = lv_ind + 1. enddo. write: lt_d[ lv_inp ].

Max substring

 data str_abap_rocks(100) value 'ABAP Editor rocks!!!'.  WRITE: str_abap_rocks. *declaring data inline makes it constant and cant be overwritten. so need to use explicit data declarations as done in lv_str1 below. data:lv_str1 type string. data(lv_str) = 'abcab'. write:lv_str. data(lv_ind) = 0. data(lv_left) = 0. lv_str1 = ''. data(lv_len) = strlen( lv_str ). data(lv_pos) = 0. data(lv_len1) = 0. data(lv_maxl) = 0. data(lv_curl) = 0. while lv_ind < lv_len - 1. *write:/ lv_ind,lv_str+lv_ind(1). search lv_str1 for lv_str+lv_ind(1). if sy-subrc <> 0.     data(lv_s) = lv_str+lv_ind(1). *    write:/ lv_s.     data(lv_str2) = lv_str1 && lv_s.     lv_str1 = lv_str2. *    write:lv_str1. else.     lv_pos = sy-fdpos + 1.     lv_len1 = strlen( lv_str1 ) - lv_pos.     lv_str1 = lv_str1+lv_pos(1). endif. lv_curl = strlen( lv_str1 ). if lv_maxl < lv_curl. lv_maxl = lv_curl. endif. lv_ind = lv_...

Bubble Sort

 data str_abap_rocks(100) value 'ABAP Editor rocks!!!'.  WRITE: str_abap_rocks. types: begin of ty_id,         id type int4,         end of ty_id. types: ty_id2 type standard table of ty_id with empty key. data: it_d type table of int4,     it_d3 type table of ty_id,       wa_d type int4. data: lv_np type i,       lv_ns type i. it_d = VALUE #( ( 4 ) ( 1 ) ( 3 ) ( 2 ) ( 5 ) ). DESCRIBE table it_d lines data(lv_lines). write:/ lv_lines. new-line. lv_np = 0. lv_ns = 0. while sy-index < lv_lines. data(wa_bd) = it_d[ 1 ]. lv_np = lv_np + 1. loop at it_d into data(wa_cd) from 2 to lv_lines - sy-index + 1. if ( wa_bd  > wa_cd ). lv_ns = lv_ns + 1. it_d[ sy-tabix ] = wa_bd. it_d[ sy-tabix - 1 ] = wa_cd. else. wa_bd = wa_cd. endif. endloop. endwhile. WRITE: lv_ns. WRITE: lv_np. new-line. DATA(it_d2) = VALUE ty_id2( FOR wa_d2 IN it_d ( id = wa_d2 ) ).   LOOP at it_d2 into data(wa_d3).   ...