‎2008 Feb 20 11:14 AM
Hi.
I need to create screen like SE 11 initial screen. I want sample code Radio button with input fields ,pls help me
To be reward all helpfull answer.
Jay
‎2008 Feb 20 11:28 AM
Try this
parameters : p_a radiobutton group rad1,
: p_b radiobutton group rad1,
: p_c radiobutton group rad1.
if p_a = 'X'.
.
.
.
endif.
if p_b = 'X'.
.
.
.
.
endif.
if p_c = 'X'.
.
.
.
endif.
Edited by: chinmaye ramamurthy on Feb 20, 2008 12:29 PM
‎2008 Feb 20 11:35 AM
Hi,
Check out the below code
REPORT zsptud01 LINE-SIZE 80
LINE-COUNT 65
NO STANDARD PAGE HEADING.
TABLES: dd02l, dd03l.
selection screen
SELECTION-SCREEN BEGIN OF BLOCK b00 WITH FRAME TITLE text-b00.
*
SELECTION-SCREEN BEGIN OF BLOCK b01 WITH FRAME TITLE text-b01.
PARAMETERS: tabname LIKE dd02l-tabname OBLIGATORY.
SELECTION-SCREEN END OF BLOCK b01.
*
SELECTION-SCREEN BEGIN OF BLOCK b03 WITH FRAME TITLE text-b03.
PARAMETERS: path(30) TYPE c DEFAULT 'C:\SAPWorkdir'.
SELECTION-SCREEN END OF BLOCK b03.
*
SELECTION-SCREEN BEGIN OF BLOCK b04 WITH FRAME TITLE text-b04.
PARAMETERS: p_exp RADIOBUTTON GROUP radi,
p_imp RADIOBUTTON GROUP radi,
p_clear AS CHECKBOX.SELECTION-SCREEN END OF BLOCK b04.
SELECTION-SCREEN END OF BLOCK b00.
data
DATA: q_return LIKE syst-subrc,
err_flag(1) TYPE c,
answer(1) TYPE c,
w_text1(62) TYPE c,
w_text2(40) TYPE c,
winfile(128) TYPE c,
w_system(40) TYPE c,
winsys(7) TYPE c,
zname(8) TYPE c,
w_line(80) TYPE c.
internal tables
DATA : BEGIN OF textpool_tab OCCURS 0.
INCLUDE STRUCTURE textpool.
DATA : END OF textpool_tab.
table for subroutine pool
DATA : itab(80) OCCURS 0.
events
INITIALIZATION.
PERFORM check_system.
*
AT SELECTION-SCREEN ON tabname.
PERFORM check_table_exists.
*
START-OF-SELECTION.
PERFORM init_report_texts.
PERFORM request_confirmation.
*
END-OF-SELECTION.
IF answer = 'J'.
PERFORM execute_program_function.
ENDIF.
*
TOP-OF-PAGE.
PERFORM process_top_of_page.
forms
---------------------------------------------------------------------
FORM CHECK_TABLE_EXISTS *
---------------------------------------------------------------------
FORM check_table_exists.
SELECT SINGLE * FROM dd02l
INTO CORRESPONDING FIELDS OF dd02l
WHERE tabname = tabname.
CHECK syst-subrc NE 0.
MESSAGE e402(mo) WITH tabname.
ENDFORM.
---------------------------------------------------------------------
FORM INIT_REPORT_TEXTS *
---------------------------------------------------------------------
FORM init_report_texts.
READ TEXTPOOL syst-repid
INTO textpool_tab LANGUAGE syst-langu.
LOOP AT textpool_tab
WHERE id EQ 'R' OR id EQ 'T'.
REPLACE '&1............................'
WITH tabname INTO textpool_tab-entry.
MODIFY textpool_tab.
ENDLOOP.
ENDFORM.
---------------------------------------------------------------------
FORM REQUEST_CONFIRMATION *
---------------------------------------------------------------------
FORM request_confirmation.
import selected, confirm action
IF p_imp = 'X'.
build message text for popup
CONCATENATE 'Data for table'
tabname
'will be imported' INTO w_text1 SEPARATED BY space.
check if delete existing selected, and change message text
IF p_clear = ' '.
w_text2 = 'and appended to the end of existing data'.
ELSE.
w_text2 = 'Existing Data will be deleted'.
ENDIF.
CALL FUNCTION 'POPUP_TO_CONFIRM_STEP'
EXPORTING
defaultoption = 'N'
textline1 = w_text1
textline2 = w_text2
titel = 'Confirm Import of Data'
cancel_display = ' '
IMPORTING
answer = answer
EXCEPTIONS
OTHERS = 1.
ELSE.
export selected, set answer to yes so export can continue
answer = 'J'.
ENDIF.
ENDFORM.
---------------------------------------------------------------------
FORM EXECUTE_PROGRAM_FUNCTION *
---------------------------------------------------------------------
FORM execute_program_function.
PERFORM build_file_name.
CLEAR: q_return,err_flag.
IF p_imp = 'X'.
PERFORM check_file_exists.
CHECK err_flag = ' '.
PERFORM func_import.
ELSE.
PERFORM func_export.
ENDIF.
ENDFORM.
---------------------------------------------------------------------
FORM BUILD_FILE_NAME *
---------------------------------------------------------------------
FORM build_file_name.
MOVE path TO winfile.
WRITE '\' TO winfile+30.
WRITE tabname TO winfile+31.
WRITE '.TAB' TO winfile+61(4).
CONDENSE winfile NO-GAPS.
ENDFORM.
---------------------------------------------------------------------
FORM CHECK_FILE_EXISTS *
---------------------------------------------------------------------
FORM check_file_exists.
CALL FUNCTION 'WS_QUERY'
EXPORTING
filename = winfile
query = 'FE'
IMPORTING
return = q_return
EXCEPTIONS
OTHERS = 1.
IF syst-subrc NE 0 OR q_return NE 1.
err_flag = 'X'.
ENDIF.
ENDFORM.
---------------------------------------------------------------------
FORM func_export *
---------------------------------------------------------------------
FORM func_export.
CLEAR itab. REFRESH itab.
APPEND 'PROGRAM SUBPOOL.' TO itab.
APPEND 'FORM DOWNLOAD.' TO itab.
APPEND 'DATA: BEGIN OF IT_TAB OCCURS 0.' TO itab.
CONCATENATE 'INCLUDE STRUCTURE'
tabname
'.' INTO w_line SEPARATED BY space.
APPEND w_line TO itab.
APPEND 'DATA: END OF IT_TAB.' TO itab.
CONCATENATE 'SELECT * FROM'
tabname
'INTO TABLE IT_TAB.' INTO w_line SEPARATED BY space.
APPEND w_line TO itab.
APPEND 'CALL FUNCTION ''WS_DOWNLOAD''' TO itab.
APPEND 'EXPORTING' TO itab.
CONCATENATE 'filename = ' ''''
winfile '''' INTO w_line SEPARATED BY space.
APPEND w_line TO itab.
APPEND 'filetype = ''DAT''' TO itab.
APPEND 'TABLES' TO itab.
APPEND 'DATA_TAB = IT_TAB.' TO itab.
APPEND 'DESCRIBE TABLE IT_TAB LINES sy-index.' TO itab.
APPEND 'FORMAT COLOR COL_NORMAL INTENSIFIED OFF.' TO itab.
APPEND 'WRITE: /1 syst-vline,' TO itab.
APPEND '''EXPORT'',' TO itab.
APPEND '15 ''data line(s) have been exported'',' TO itab.
APPEND '68 syst-index,' TO itab.
APPEND '80 syst-vline.' TO itab.
APPEND 'ULINE.' TO itab.
APPEND 'ENDFORM.' TO itab.
GENERATE SUBROUTINE POOL itab NAME zname.
PERFORM download IN PROGRAM (zname).
ENDFORM.
---------------------------------------------------------------------
FORM func_import *
---------------------------------------------------------------------
FORM func_import.
CLEAR itab. REFRESH itab.
APPEND 'PROGRAM SUBPOOL.' TO itab.
APPEND 'FORM UPLOAD.' TO itab.
APPEND 'DATA: BEGIN OF IT_TAB OCCURS 0.' TO itab.
CONCATENATE 'INCLUDE STRUCTURE'
tabname
'.' INTO w_line SEPARATED BY space.
APPEND w_line TO itab.
APPEND 'DATA: END OF IT_TAB.' TO itab.
APPEND 'DATA: BEGIN OF IT_TAB2 OCCURS 0.' TO itab.
CONCATENATE 'INCLUDE STRUCTURE'
tabname
'.' INTO w_line SEPARATED BY space.
APPEND w_line TO itab.
APPEND 'DATA: END OF IT_TAB2.' TO itab.
APPEND 'CALL FUNCTION ''WS_UPLOAD''' TO itab.
APPEND 'EXPORTING' TO itab.
CONCATENATE 'filename = ' ''''
winfile '''' INTO w_line SEPARATED BY space.
APPEND w_line TO itab.
APPEND 'filetype = ''DAT''' TO itab.
APPEND 'TABLES' TO itab.
APPEND 'DATA_TAB = IT_TAB.' TO itab.
IF p_clear = 'X'.
CONCATENATE 'SELECT * FROM'
tabname
'INTO TABLE IT_TAB2.' INTO w_line SEPARATED BY space.
APPEND w_line TO itab.
APPEND 'LOOP AT IT_TAB2.' TO itab.
CONCATENATE 'DELETE'
tabname
'FROM IT_TAB2.' INTO w_line SEPARATED BY space.
APPEND w_line TO itab.
APPEND 'ENDLOOP.' TO itab.
APPEND 'COMMIT WORK.' TO itab.
ENDIF.
APPEND 'LOOP AT IT_TAB.' TO itab.
CONCATENATE 'MODIFY'
tabname
'FROM IT_TAB.' INTO w_line SEPARATED BY space.
APPEND w_line TO itab.
APPEND 'ENDLOOP.' TO itab.
APPEND 'DESCRIBE TABLE IT_TAB LINES sy-index.' TO itab.
APPEND 'FORMAT COLOR COL_NORMAL INTENSIFIED OFF.' TO itab.
APPEND 'WRITE: /1 syst-vline,' TO itab.
APPEND '''IMPORT'',' TO itab.
APPEND '15 ''data line(s) have been imported'',' TO itab.
APPEND '68 syst-index,' TO itab.
APPEND '80 syst-vline.' TO itab.
APPEND 'ULINE.' TO itab.
APPEND 'ENDFORM.' TO itab.
GENERATE SUBROUTINE POOL itab NAME zname.
PERFORM upload IN PROGRAM (zname).
ENDFORM.
---------------------------------------------------------------------
Form CHECK_SYSTEM
Check users workstation is running
WINDOWS 95, or WINDOWS NT.
OS/2 uses 8.3 file names which are no good for
this application as filenames created are 30 char
same as table name.
You could change the logic to only use the first 8 chars
of the table name for the filename, but you could possibly
get problems if users had exported already with a table
with the same first 8 chars.
As an alternate method you could request the user to input
the full path including filename and remove the logic to
build the path using the table name.
---------------------------------------------------------------------
FORM check_system.
CALL FUNCTION 'WS_QUERY'
EXPORTING
query = 'WS'
IMPORTING
return = winsys.
IF winsys NE 'WN32_95'.
WRITE: 'Windows NT or Windows 95/98 is required'.
EXIT.
ENDIF.
ENDFORM. " CHECK_SYSTEM
---------------------------------------------------------------------
FORM PROCESS_TOP_OF_PAGE *
---------------------------------------------------------------------
FORM process_top_of_page.
FORMAT COLOR COL_HEADING INTENSIFIED ON.
ULINE.
CONCATENATE syst-sysid
syst-saprl
syst-host INTO w_system SEPARATED BY space.
WRITE : AT /1(syst-linsz) w_system CENTERED.
WRITE : AT 1 syst-vline, syst-uname.
syst-linsz = syst-linsz - 11.
WRITE : AT syst-linsz syst-repid(008).
syst-linsz = syst-linsz + 11.
WRITE : AT syst-linsz syst-vline.
LOOP AT textpool_tab WHERE id EQ 'R'.
WRITE : AT /1(syst-linsz) textpool_tab-entry CENTERED.
ENDLOOP.
WRITE : AT 1 syst-vline, syst-datum.
syst-linsz = syst-linsz - 11.
WRITE : AT syst-linsz syst-tcode(004).
syst-linsz = syst-linsz + 11.
WRITE : AT syst-linsz syst-vline.
LOOP AT textpool_tab WHERE id EQ 'T'.
WRITE : AT /1(syst-linsz) textpool_tab-entry CENTERED.
ENDLOOP.
WRITE : AT 1 syst-vline, syst-uzeit.
syst-linsz = syst-linsz - 11.
WRITE : AT syst-linsz 'Page', syst-pagno.
syst-linsz = syst-linsz + 11.
WRITE : AT syst-linsz syst-vline.
ULINE.
FORMAT COLOR COL_HEADING INTENSIFIED OFF.
LOOP AT textpool_tab WHERE id EQ 'H'.
WRITE : AT /1(syst-linsz) textpool_tab-entry.
ENDLOOP.
ULINE.
ENDFORM
Regards,
Chandru
‎2008 Feb 20 12:02 PM
ABAP GUI:
-
ABAP screens can be created using the following two statements:
1. PARAMETERS
2. SELETION-SCREEN
The following statements are used in common:
1. PARAMETERS to create input boxes, checkboxes and radiobuttons.
2. SELECTION-SCREEN BEGIN OF LINE - END OF LINE. - This statement is used to create input fields in a same row.
3. SELECTION-SCREEN COMMENT. - This statement is used to specify the positions and label names for each input field declared using begin of line - end of line.
eg. code
-
selection-screen begin of line.
selection-screen comment 10(15) lb2 for field a.
parameters : a(10).
selection-screen comment 50(15) lb3 for field b.
parameters : b(10).
selection-screen comment (15) lb4.
parameters : c(10).
selection-screen end of line.
selection-screen pushbutton 10(10) LB1 user-command PB1.
initialization.
lb1 = 'PRINT'.
lb2 = 'enter A value'.
lb3 = 'enter B value'.
at SELECTION-SCREEN.
case sy-ucomm.
when 'PB1'.
LEAVE TO LIST-PROCESSING.
write 😕 a, b .
endcase.
4. SELECTION-SCREEN POSITION.
This statement is used to specify the position of input fields. There are two attributes for specifying position using this statement. They are:
POS_LOW
POS_HIGH
EG.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN POSITION POS_LOW.
PARAMETERS A(10).
SELECTION-SCREEN POSITION POS_HIGH.
PARAMETERS B(10).
SELECTION-SCREEN END OF LINE.
5. SELECTION-SCREEN BEGIN OF SCREEN - END OF SCREEN.
- This statement is used to create a screen in GUI. A screen number should be specified for each user-defined screen. This screen can be called within the program using the following statement:
CALL selection-SCREEN <screen_number>.
eg.
SELECTION-SCREEN BEGIN OF SCREEN 100 TITLE T1.
SELECTION-SCREEN BEGIN OF BLOCK B1.
PARAMETERS : CH1 AS CHECKBOX,
CH2 AS CHECKBOX,
CH3 AS CHECKBOX.
SELECTION-SCREEN END OF BLOCK B1.
SELECTION-SCREEN BEGIN OF BLOCK B2.
PARAMETERS : RB1 RADIOBUTTON GROUP A,
RB2 RADIOBUTTON GROUP A,
RB3 RADIOBUTTON GROUP A.
SELECTION-SCREEN END OF BLOCK B2.
SELECTION-SCREEN PUSHBUTTON /10(10) LB1 USER-COMMAND PB1.
SELECTION-SCREEN END OF SCREEN 100.
SELECTION-SCREEN BEGIN OF SCREEN 200 AS WINDOW TITLE T2.
PARAMETERS : D(10), E(10), F(10).
SELECTION-SCREEN END OF SCREEN 200.
initialization.
t1 = 'SELECT CHECKBOXES AND RADIOBUTTONS'.
T2 = 'PARAMETERS'.
at selection-screen.
case sy-ucomm.
WHEN 'PB1'.
CALL SCREEN 200.
ENDCASE.
6. SELECTION-SCREEN BEGIN OF BLOCK - END OF BLOCK.
This statement is used to create blocks within the screen area.
7. SELECTION-SCREEN PUSHBUTTON. - This statement is used to create pushbuttons in GUI.
SYNTAX:
SELECTION-SCREEN PUSHBUTTON <starting position>(pushbutton length) <label_Variable> USER-COMMAND <pushbutton_name>.
Whenever a pushbutton is created and executed, a system variable SY-UCOMM holds the arguments for the pushbutton.
INITIALIZATION and AT SELECTION-SCREEN are the selection-screen events. Using these type of events, ABAP is called as event-driven programming. Whenever the selection-screen programs are executed, the order of execution of events will be:
INITIALIZATION.
AT SELECTION-SCREEN.
START-OF-SELECTION.
TOP-OF-PAGE.
END-OF-PAGE.
END-OF-SELECTION.
EG. CODE
PARAMETERS : A(10), B(10).
SELECTION-SCREEN PUSHBUTTON /10(10) LB1 USER-COMMAND PB1.
INITIALIZATION.
LB1 = 'PRINT A'.
AT SELECTION-SCREEN.
CASE SY-UCOMM.
WHEN 'PB1'.
LEAVE TO LIST-PROCESSING.
WRITE 😕 A, B.
ENDCASE.
In the above code,
AT SELECTION-SCREEN event is used to hold the event functionalities of the pushbuttons declared within the program. Whenever a pushbutton is created and executed, AT SELECTION-SCREEN event get triggered.
INITIALIZATION event is used to declare initial display values for the pushbutton component in the selection-screen.
SY-UCOMM system variable holds the arguments of pushbutton and passes these arguments dynamically to the screen.
LEAVE TO LIST-PROCESSING statement is used to print the statements in LPS, because these statements cannot be printed inside selection-screen.
After executing the program, use 'BACK' statement in the command prompt of LPS to come back to the selection-screen and then come back to the program.
EG. CODE 2
PARAMETERS : A(10), B(10).
SELECTION-SCREEN PUSHBUTTON /10(10) LB1 USER-COMMAND PB1.
selection-screen skip.
SELECTION-SCREEN PUSHBUTTON /10(10) LB2 USER-COMMAND PB2.
INITIALIZATION.
LB1 = 'PRINT A'.
lb2 = 'EXIT'.
AT SELECTION-SCREEN.
CASE SY-UCOMM.
WHEN 'PB1'.
LEAVE TO LIST-PROCESSING.
WRITE 😕 A, B.
WHEN 'PB2'.
LEAVE PROGRAM.
ENDCASE.
8. SELECTION-SCREEN SKIP.
This statement is used to create a blank line within the selection-screen components.
9. SELECTION-SCREEN ULINE.
This statement is used to draw a horizontal line within the selection-screen component.
10. SELECT-OPTIONS.
EG. CODE:
TABLES MARA.
SELECT-OPTIONS STALIN FOR MARA-MTART.
SELECT * FROM MARA WHERE MTART IN STALIN.
WRITE 😕 MARA-MTART.
ENDSELECT.
WRITE 😕 STALIN-LOW, STALIN-HIGH, STALIN-SIGN, STALIN-OPTION.
Whenever a range is created using SELECT-OPTIONS statement, SAP creates an internal table with the same variable name (STALIN in this case) in the background with the following fields:
LOW
HIGH
SIGN
OPTION
11. SELECTION-SCREEN FUNCTION KEYS.
The pushbuttons declared in the header part of the screen are referred to as FUNCTION KEYS. A user can be allowed to create only 5 function keys.
SYNTAX:
SELECTION-SCREEN FUNCTION KEY <function_key_number>.
SSCRFIELDS is a predefined structure used to assign display values for function keys.
TABLES SSCRFIELDS.
PARAMETERS : A(10), B(10).
SELECTION-SCREEN FUNCTION KEY 1.
SELECTION-SCREEN FUNCTION KEY 2.
SELECTION-SCREEN FUNCTION KEY 3.
SELECTION-SCREEN FUNCTION KEY 4.
SELECTION-SCREEN FUNCTION KEY 5.
INITIALIZATION.
SSCRFIELDS-FUNCTXT_01 = 'STALIN'.
SSCRFIELDS-FUNCTXT_02 = 'JEGAN'.
SSCRFIELDS-FUNCTXT_03 = 'SYED'.
SSCRFIELDS-FUNCTXT_04 = 'DEEPA'.
SSCRFIELDS-FUNCTXT_05 = 'KARTHIK'.
AT SELECTION-SCREEN.
CASE SY-UCOMM.
WHEN 'FC02'.
CALL TRANSACTION 'SE80'.
WHEN 'FC01'.
CALL TRANSACTION 'SE11'.
WHEN 'FC03'.
CALL TRANSACTION 'SE37'.
WHEN 'FC04'.
CALL TRANSACTION 'SE38'.
WHEN 'FC05'.
LEAVE PROGRAM.
ENDCASE.
When we create function keys, SAP automatically generates name for each function key. The name of first function key is 'FC01' , the second one is 'FC02', etc.
So the name range for function keys start from FC01 - FC05.
EG. PROGRAM TO CALL SELECTION-SCREEN WITH PUSHBUTTONS
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 10(15) LB1.
PARAMETERS : A(10).
SELECTION-SCREEN COMMENT 40(15) LB2.
PARAMETERS : B(10).
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN PUSHBUTTON 10(10) LB3 USER-COMMAND PB1.
SELECTION-SCREEN SKIP.
SELECTION-SCREEN PUSHBUTTON /10(10) LB5 USER-COMMAND PB3.
SELECTION-SCREEN SKIP.
SELECTION-SCREEN PUSHBUTTON /10(10) LB4 USER-COMMAND PB2.
*SELECTION-SCREEN BEGIN OF SCREEN 200 AS WINDOW TITLE T2.
SELECTION-SCREEN BEGIN OF BLOCK B1.
PARAMETERS : CH1 AS CHECKBOX, CH2 AS CHECKBOX, CH3 AS CHECKBOX.
SELECTION-SCREEN END OF BLOCK B1.
SELECTION-SCREEN BEGIN OF BLOCK B2.
PARAMETERS : RB1 RADIOBUTTON GROUP A,
RB2 RADIOBUTTON GROUP A,
RB3 RADIOBUTTON GROUP A.
SELECTION-SCREEN END OF BLOCK B2.
*SELECTION-SCREEN END OF SCREEN 200.
INITIALIZATION.
LB1 = 'ENTER A VALUE'.
LB2 = 'ENTER B VALUE'.
LB3 = 'DISPLAY'.
LB4 = 'EXIT'.
LB5 = 'CALL NEXT'.
AT SELECTION-SCREEN.
CASE SY-UCOMM.
WHEN 'PB1'.
LEAVE TO LIST-PROCESSING.
WRITE : A, B.
IF CH1 = 'X'.
LEAVE TO LIST-PROCESSING.
WRITE 'FIRST CHECKBOX IS SELECTED'.
ENDIF.
IF CH2 = 'X'.
WRITE 😕 'SECOND CHECKBOX IS SELECTED'.
ENDIF.
IF CH3 = 'X'.
WRITE 😕 'THIRD CHECKBOX IS SELECTED'.
ENDIF.
IF RB1 = 'X'.
WRITE 😕 'FIRST RADIOBUTTON'.
ELSEIF RB2 = 'X'.
WRITE 😕 'SECOND RADIOBUTTON'.
ELSEIF RB3 = 'X'.
WRITE 😕 'THIRD RADIOBUTTON'.
ENDIF.
WHEN 'PB2'.
LEAVE PROGRAM.
WHEN 'PB3'.
CALL SELECTION-SCREEN 200.
ENDCASE.
Regards,
Priya.