REPORT ZHELLO7 MESSAGE-ID 00. TABLES T005T. DATA: greeting(20) VALUE 'Hello World', sel_cont(20), "selected continent string1(21), "dummy string variable string2(72), "dummy string variable cfield(80), "field the cursor is on ret_button1(10) VALUE '++++++++++', "screen return button ret_button2(10) VALUE '+ RETURN +'. "screen return button DATA: BEGIN OF loc OCCURS 20, "locations itab with three fields continent(20), "continent name nat(20), "nation/country name cap(20), "capitol city of the nation/country END OF loc. SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME. "3.0 SELECT-OPTIONS s_land1 FOR T005T-Land1. SELECTION-SCREEN ULINE. SELECTION-SCREEN SKIP. SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN COMMENT 5(36) TEXT-001. PARAMETERS color TYPE N. SELECTION-SCREEN END OF LINE. SELECTION-SCREEN SKIP. SELECTION-SCREEN END OF BLOCK b1. "3.0 START-OF-SELECTION. PERFORM build_loc. "populate loc with names PERFORM level0. AT LINE-SELECTION. GET CURSOR FIELD cfield. IF cfield CS 'ret_button'. SET USER-COMMAND 'BACK'. ELSE. CASE SY-LSIND. WHEN 1. PERFORM level1. WHEN 2. PERFORM level2. WHEN 3. PERFORM level3. ENDCASE. ENDIF. CLEAR cfield. AT SELECTION-SCREEN ON color. IF color LT 1 OR color GT 7. MESSAGE E208 WITH 'Color value must be between 1 and 7'. ENDIF. AT SELECTION-SCREEN ON s_land1. IF s_land1 IS INITIAL. MESSAGE E208 WITH 'Enter at least one country code'. ENDIF. TOP-OF-PAGE. WRITE: 'Demo program - First page'. PERFORM return_button. TOP-OF-PAGE DURING LINE-SELECTION. WRITE: 'Demo program - Page', SY-PAGNO. PERFORM return_button. FORM build_loc. loc-continent = 'North America'. loc-nat = 'Canada'. loc-cap = 'Ottawa'. APPEND loc. loc-nat = 'United States'. loc-cap = 'Washington'. APPEND loc. loc-nat = 'Mexico'. loc-cap = 'Mexico'. APPEND loc. loc-continent = 'South America'. loc-nat = 'Venezuela'. loc-cap = 'Caracas'. APPEND loc. loc-nat = 'Colombia'. loc-cap = 'Bogota'. APPEND loc. loc-nat = 'Ecuador'. loc-cap = 'Quito'. APPEND loc. loc-nat = 'Peru'. loc-cap = 'Lima'. APPEND loc. loc-nat = 'Bolivia'. loc-cap = 'La Paz'. APPEND loc. loc-nat = 'Chile'. loc-cap = 'Santiago'. APPEND loc. loc-nat = 'Argentina'. loc-cap = 'Buenos Aires'. APPEND loc. loc-nat = 'Uruguay'. loc-cap = 'Montevideo'. APPEND loc. loc-nat = 'Paraguay'. loc-cap = 'Asuncion'. APPEND loc. loc-nat = 'Brazil'. loc-cap = 'Brasilia'. APPEND loc. loc-continent = 'Western Europe'. loc-nat = 'United Kingdom'. loc-cap = 'London'. APPEND loc. loc-nat = 'Ireland'. loc-cap = 'Dublin'. APPEND loc. loc-nat = 'Norway'. loc-cap = 'Oslo'. APPEND loc. loc-nat = 'Sweden'. loc-cap = 'Stockholm'. APPEND loc. loc-nat = 'Finland'. loc-cap = 'Helsinki'. APPEND loc. loc-nat = 'Denmark'. loc-cap = 'Copenhagen'. APPEND loc. loc-nat = 'Netherlands'. loc-cap = 'The Hague'. APPEND loc. loc-nat = 'Belgium'. loc-cap = 'Brussels'. APPEND loc. loc-nat = 'France'. loc-cap = 'Paris'. APPEND loc. loc-nat = 'Spain'. loc-cap = 'Madrid'. APPEND loc. loc-nat = 'Portugal'. loc-cap = 'Lisbon'. APPEND loc. loc-nat = 'Italy'. loc-cap = 'Rome'. APPEND loc. loc-nat = 'Austria'. loc-cap = 'Vienna'. APPEND loc. loc-nat = 'Switzerland'. loc-cap = 'Bern'. APPEND loc. loc-nat = 'Germany'. loc-cap = 'Bonn'. APPEND loc. ENDFORM. "build_loc FORM level0. WRITE greeting. ENDFORM. "level0 FORM level1. IF cfield CS 'greeting'. CLEAR loc. LOOP AT loc. AT NEW continent. WRITE /12 loc-continent. HIDE loc-continent. ENDAT. ENDLOOP. CLEAR loc. WRITE /12 'Country list'. ENDIF. ENDFORM. "level1 FORM level2. IF SY-LISEL CS 'Country list'. WRITE: 15 '--Country-------------', /15 'Code Name'. ULINE /15(22). SELECT * FROM T005T WHERE Spras EQ SY-LANGU AND Land1 IN s_land1. WRITE: /15 T005T-Land1, T005T-Landx. HIDE: T005T-Landx, T005T-Natio. ENDSELECT. ELSEIF NOT loc-continent IS INITIAL. sel_cont = SY-LISEL+11. WRITE /12 sel_cont. LOOP AT loc WHERE continent = sel_cont. WRITE /15 loc-nat. HIDE: loc-nat, loc-cap. ENDLOOP. ELSE. EXIT. ENDIF. CLEAR: loc, T005T. ENDFORM. "level2 FORM level3. IF NOT loc IS INITIAL. CALL FUNCTION 'STRING_CONCATENATE' EXPORTING STRING1 = loc-cap STRING2 = '.' IMPORTING STRING = string1 EXCEPTIONS TOO_SMALL = 01. string2 = 'The capitol of '. string2+18 = loc-nat. string2+38 = ' is '. string2+42 = string1. CLEAR loc. ELSEIF NOT T005T IS INITIAL. IF T005T-Natio IS INITIAL. CALL FUNCTION 'STRING_CONCATENATE' EXPORTING STRING1 = T005T-Landx STRING2 = '.' IMPORTING STRING = string1 EXCEPTIONS TOO_SMALL = 01. string2 = 'We don''t know about the people from '. string2+38 = string1. ELSE. CALL FUNCTION 'STRING_CONCATENATE' EXPORTING STRING1 = T005T-Natio STRING2 = '.' IMPORTING STRING = string1 EXCEPTIONS TOO_SMALL = 01. string2 = 'The people from '. string2+18 = T005T-Landx. string2+35 = ' are called '. string2+48 = string1. ENDIF. CLEAR T005T. ELSE. EXIT. ENDIF. CONDENSE string2. SKIP 5. PERFORM color_write USING string2. ENDFORM. "level3 FORM color_write USING outstring. CASE color. WHEN 1. WRITE / outstring COLOR 1. WHEN 2. WRITE / outstring COLOR 2. WHEN 3. WRITE / outstring COLOR 3. WHEN 4. WRITE / outstring COLOR 4. WHEN 5. WRITE / outstring COLOR 5. WHEN 6. WRITE / outstring COLOR 6. WHEN 7. WRITE / outstring COLOR 7. ENDCASE. ENDFORM. "color_write FORM return_button. SKIP TO LINE 3. WRITE: 52 ret_button1 COLOR 3, /52 ret_button2 COLOR 3, /52 ret_button1 COLOR 3. IF SY-LSIND = 0. SKIP TO LINE 5. ELSE. SKIP TO LINE 3. ENDIF. ENDFORM. "return_button