‎2008 Jul 11 8:02 AM
Hi,
Where to add the logic to the pushbutton in the selection screen.In the PBO or PAI of that screen.If possible can anyone send an example for that?
‎2008 Jul 11 8:05 AM
hi,
see try this code.
TABLES sscrfields.
DATA flag(1) TYPE c.
SELECTION-SCREEN:
BEGIN OF SCREEN 500 AS WINDOW TITLE tit,
BEGIN OF LINE,
PUSHBUTTON 2(10) but1 USER-COMMAND cli1,
PUSHBUTTON 12(10) text-020 USER-COMMAND cli2,
END OF LINE,
BEGIN OF LINE,
PUSHBUTTON 2(10) but3 USER-COMMAND cli3,
PUSHBUTTON 12(10) text-040 USER-COMMAND cli4,
END OF LINE,
END OF SCREEN 500.
AT SELECTION-SCREEN.
MESSAGE i888(sabapdocu) WITH text-001 sscrfields-ucomm.
CASE sscrfields-ucomm.
WHEN 'CLI1'.
flag = '1'.
WHEN 'CLI2'.
flag = '2'.
WHEN 'CLI3'.
flag = '3'.
WHEN 'CLI4'.
flag = '4'.
ENDCASE.
START-OF-SELECTION.
tit = 'Four Buttons'.
but1 = 'Button 1'.
but3 = 'Button 3'.
CALL SELECTION-SCREEN 500 STARTING AT 10 10.
CASE flag.
WHEN '1'.
WRITE / 'Button 1 was clicked'.
WHEN '2'.
WRITE / 'Button 2 was clicked'.
WHEN '3'.
WRITE / 'Button 3 was clicked'.
WHEN '4'.
WRITE / 'Button 4 was clicked'.
WHEN OTHERS.
WRITE / 'No Button was clicked'.
ENDCASE.
Regards,
Jagadeesh.
‎2008 Jul 11 8:06 AM
hiii
for logic you need to add logic in PAI only.that is process after input..so after user enters value in textbox what logic should apply that will be there in PAI.for displaying purpose or like at selection screen if you want to maintein something then it will come in PBO event.
example
http://sap.mis.cmich.edu/sap-abap/abap09/sld011.htm
regards
twinkal
‎2008 Jul 11 8:08 AM
Hi
You need to write the logic in the PAI event of the selection-screen
so that after validation part is done you can process the values
Regards
pavan
‎2008 Jul 11 8:09 AM
Hey!
Check out this sample code.
REPORT z_prog.
DATA:
BEGIN OF fs_spfli,
carrid LIKE spfli-carrid, " Airline Code
connid LIKE spfli-connid, " Flight Connection Number
airpfrom LIKE spfli-airpfrom, " Departure airport
airpto LIKE spfli-airpto, " Destination airport
deptime LIKE spfli-deptime, " Departure time
arrtime LIKE spfli-arrtime, " Arrival time
END OF fs_spfli,
BEGIN OF fs_sflight,
carrid LIKE sflight-carrid, " Airline Code
connid LIKE sflight-connid, " Flight Connection Number
fldate LIKE sflight-fldate, " Flight date
seatsmax LIKE sflight-seatsmax, " Maximum seats in economy class
seatsocc LIKE sflight-seatsocc, " Occupied seats in economyclass
END OF fs_sflight,
w_checkbox TYPE c, " Variable for checkbox
w_currentline TYPE i, " Variable to display current
" line
w_lines TYPE i,
w_read TYPE c .
*"--------------------------------------------------------------------*
* Internal Table to hold flight schedule information *
*"--------------------------------------------------------------------*
DATA:
t_spfli LIKE
TABLE OF
fs_spfli.
*"--------------------------------------------------------------------*
* Internal Table to hold flight information *
*"--------------------------------------------------------------------*
DATA:
t_sflight LIKE
TABLE OF
fs_sflight,
t_sflight1 LIKE t_sflight.
*"--------------------------------------------------------------------*
* START-OF-SELECTION Event *
*"--------------------------------------------------------------------*
START-OF-SELECTION.
PERFORM get_data_spfli.
*"--------------------------------------------------------------------*
* END-OF-SELECTION Event *
*"--------------------------------------------------------------------*
END-OF-SELECTION.
SET PF-STATUS 'MENU'.
PERFORM display_data_spfli.
*"--------------------------------------------------------------------*
* TOP-OF-PAGE Event *
*"--------------------------------------------------------------------*
TOP-OF-PAGE.
PERFORM header_table_spfli.
*"--------------------------------------------------------------------*
* AT LINE-SELECTION EVENT *
*"--------------------------------------------------------------------*
AT LINE-SELECTION.
SET PF-STATUS space.
IF sy-lsind EQ 1 AND sy-lilli GE 4.
PERFORM get_data_sflight.
PERFORM display_data_sflight.
PERFORM flag_line.
ENDIF. " IF sy-lsind EQ 1..
*"--------------------------------------------------------------------*
* AT USER-COMMAND *
*"--------------------------------------------------------------------*
AT USER-COMMAND.
IF sy-lsind EQ 1.
SET PF-STATUS space.
CASE sy-ucomm.
WHEN 'DISPLAY'.
PERFORM get_data_sflight1.
PERFORM display_data_sflight.
WHEN 'SELECTALL'.
PERFORM select_all.
PERFORM flag_line.
WHEN 'DESELECTAL'.
PERFORM deselect_all.
PERFORM flag_line.
ENDCASE. " CASE sy-ucomm
ENDIF. " IF sy-lsind EQ 1
*"--------------------------------------------------------------------*
* TOP-OF-PAGE DURING LINE-SELECTION *
*"--------------------------------------------------------------------*
TOP-OF-PAGE DURING LINE-SELECTION.
PERFORM sec_list_heading.
*&---------------------------------------------------------------------*
*& Form get_data_spfli
*&---------------------------------------------------------------------*
* This subroutine fetches the data from SPFLI
*----------------------------------------------------------------------*
* This subroutine does not have parameters to pass
*----------------------------------------------------------------------*
FORM get_data_spfli .
SELECT carrid " Airline Code
connid " Flight Connection Number
airpfrom " Departure airport
airpto " Destination airport
deptime " Departure time
arrtime " Arrival time
FROM spfli
INTO TABLE t_spfli.
ENDFORM. " GET_DATA_SPFLI
*&---------------------------------------------------------------------*
*& Form display_data_spfli
*&---------------------------------------------------------------------*
* This subroutine displays the data of SPFLI
*----------------------------------------------------------------------*
* This subroutine does not have parameters to pass
*----------------------------------------------------------------------*
FORM display_data_spfli .
LOOP AT t_spfli INTO fs_spfli.
WRITE: /02 w_checkbox AS CHECKBOX,
05 w_read,
fs_spfli-carrid UNDER text-001,
fs_spfli-connid UNDER text-002,
fs_spfli-airpfrom UNDER text-003,
fs_spfli-airpto UNDER text-004,
fs_spfli-deptime UNDER text-005,
fs_spfli-arrtime UNDER text-006.
HIDE:
fs_spfli-carrid,
fs_spfli-connid.
ENDLOOP. " LOOP AT t_spfli..
ENDFORM. " DISPLAY_DATA_SPFLI
*&---------------------------------------------------------------------*
*& Form header_table_spfli
*&---------------------------------------------------------------------*
* This subroutine diplays the headings of table spfli
*----------------------------------------------------------------------*
* This subroutine does not have parameters to pass
*----------------------------------------------------------------------*
FORM header_table_spfli .
WRITE: /10 text-001 COLOR 4,
25 text-002 COLOR 4,
40 text-003 COLOR 4,
55 text-004 COLOR 4,
70 text-005 COLOR 4,
85 text-006 COLOR 4.
ENDFORM. " HEADER_TABLE
*&---------------------------------------------------------------------*
*& Form get_data_sflight
*&---------------------------------------------------------------------*
* This subroutine fetches the data from SFLIGHT
*----------------------------------------------------------------------*
* This subroutine does not have interface parameters to pass
*----------------------------------------------------------------------*
FORM get_data_sflight .
SELECT carrid " Airline Code
connid " Flight Connection Number
fldate " Flight date
seatsmax " Maximum seats in economy class
seatsocc " Occupied seats in economyclass
FROM sflight
INTO TABLE t_sflight
WHERE carrid EQ fs_spfli-carrid
AND connid EQ fs_spfli-connid.
ENDFORM. " GET_DATA_SFLIGHT
*&---------------------------------------------------------------------*
*& Form display_data_sflight
*&---------------------------------------------------------------------*
* This subroutine displays the SFLIGHT data
*----------------------------------------------------------------------*
* This subroutine does not have interface parameters to pass
*----------------------------------------------------------------------*
FORM display_data_sflight .
LOOP AT t_sflight INTO fs_sflight.
WRITE: / fs_sflight-carrid UNDER text-001,
fs_sflight-connid UNDER text-002,
fs_sflight-fldate UNDER text-007,
fs_sflight-seatsmax UNDER text-008 LEFT-JUSTIFIED,
fs_sflight-seatsocc UNDER text-009 LEFT-JUSTIFIED.
ENDLOOP.
CLEAR: fs_sflight.
ENDFORM. " DISPLAY_DATA_sflight
*&---------------------------------------------------------------------*
*& Form sec_list_heading
*&---------------------------------------------------------------------*
* This subroutine diplays the headings of table spfli
*----------------------------------------------------------------------*
* This subroutine does not have interface parameters to pass
*----------------------------------------------------------------------*
FORM sec_list_heading .
WRITE: /2 text-001 COLOR 4,
15 text-002 COLOR 4,
33 text-007 COLOR 4,
45 text-008 COLOR 4,
60 text-009 COLOR 4.
ENDFORM. " SEC_LIST_HEADING
*&---------------------------------------------------------------------*
*& Form get_data_sflight1
*&---------------------------------------------------------------------*
* This subroutine displays the data from SFLIGHT according to checkbox
* clicked.
*----------------------------------------------------------------------*
* This subroutine does not have interface parameters to pass
*----------------------------------------------------------------------*
FORM get_data_sflight1 .
DATA:
lw_checkbox TYPE c.
DESCRIBE TABLE t_spfli LINES w_lines.
DO w_lines TIMES.
w_currentline = 3 + sy-index.
CLEAR:
w_checkbox,
fs_spfli.
READ LINE w_currentline FIELD VALUE
w_checkbox INTO lw_checkbox
fs_spfli-carrid INTO fs_spfli-carrid
fs_spfli-connid INTO fs_spfli-connid.
IF sy-subrc EQ 0.
IF lw_checkbox EQ 'X'.
SELECT carrid " Airline Code
connid " Flight Connection Number
fldate " Flight Date
seatsmax " Max Seats
seatsocc " Occupied Seats
FROM sflight
INTO TABLE t_sflight1
WHERE carrid EQ fs_spfli-carrid
AND connid EQ fs_spfli-connid.
IF sy-subrc EQ 0.
APPEND LINES OF t_sflight1 TO t_sflight.
ENDIF. " IF sy-subrc EQ 0.
ENDIF. " IF lw_checkbox EQ 'X'
ENDIF. " IF sy-subrc EQ 0.
ENDDO. " DO w_lines TIMES
ENDFORM. " GET_DATA_SFLIGHT1
*&---------------------------------------------------------------------*
*& Form select_all
*&---------------------------------------------------------------------*
* This subroutine selects all the records of SPFLI
*----------------------------------------------------------------------*
* This subroutine does not have interface parameters to pass
*----------------------------------------------------------------------*
FORM select_all .
DESCRIBE TABLE t_spfli LINES w_lines.
DO w_lines TIMES.
w_currentline = sy-index + 3.
READ LINE w_currentline FIELD VALUE
w_checkbox INTO w_checkbox.
IF sy-subrc = 0.
MODIFY LINE w_currentline FIELD VALUE
w_checkbox FROM 'X'.
ENDIF. " IF sy-subrc = 0.
ENDDO. " DO lw_line TIMES.
ENDFORM. " SELECT_ALL
*&---------------------------------------------------------------------*
*& Form deselect_all
*&---------------------------------------------------------------------*
* This subroutine deselects all the records of SPFLI
*----------------------------------------------------------------------*
* This subroutine does not have interface parameters to pass
*----------------------------------------------------------------------*
FORM deselect_all .
DESCRIBE TABLE t_spfli LINES w_lines.
DO w_lines TIMES.
w_currentline = sy-index + 3.
READ LINE w_currentline FIELD VALUE
w_checkbox INTO w_checkbox.
IF sy-subrc = 0.
MODIFY LINE w_currentline FIELD VALUE
w_checkbox FROM ' '.
ENDIF. " IF sy-subrc = 0.
ENDDO. " DO lw_line TIMES.
ENDFORM. " DESELECT_ALL
*&---------------------------------------------------------------------*
*& Form flag_line
*&---------------------------------------------------------------------*
* This subroutine flags the line which has been read
*----------------------------------------------------------------------*
* This subroutine does not have interface parameters to pass
*----------------------------------------------------------------------*
FORM flag_line .
DESCRIBE TABLE t_spfli LINES w_lines.
DO w_lines TIMES.
w_checkbox = 'X'.
READ LINE sy-lilli FIELD VALUE
w_read INTO w_read
w_checkbox INTO w_checkbox.
IF sy-subrc EQ 0.
MODIFY CURRENT LINE
FIELD FORMAT w_checkbox INPUT OFF
FIELD VALUE w_read FROM '*'.
ENDIF. " IF sy-subrc EQ 0
ENDDO. " DO w_lines TIMES
ENDFORM. " FLAG_LINE
Regards
Abhijeet
Edited by: Abhijeet Kulshreshtha on Jul 11, 2008 9:10 AM
‎2008 Jul 11 8:10 AM
Hi,
In Module Pool Program After User Interaction like Clicking Button is Handled By PAI Module.
So Double clicking the PAI Module you will go to the Screen Editor.there you Can write code for clicking pushbutton using
Case Sy-Ucomm.
For example you have a screen 100.
In the 'Element list' tab of the screen, give "ok_code" as the name where "OK" is the type of screen element. Activate screen.
The flow logic for the screen looks like this:
PROCESS BEFORE OUTPUT.
MODULE STATUS_0100.
PROCESS AFTER INPUT.
MODULE USER_COMMAND_0100.
Create the modules STATUS_0100 and USER_COMMAND_0100 in the main program by simply double clicking on them.
The code for these modules can be something like this:
MODULE status_0100 OUTPUT.
SET PF-STATUS 'Example'. "Example is the name of the GUI status
ENDMODULE.
MODULE user_command_0100 INPUT.
CASE ok_code.
WHEN 'SAVE'.
"call a subroutine to save the data or give statements to save data.
WHEN 'BACK'.
LEAVE TO SCREEN 0.
WHEN 'EXIT'.
LEAVE PROGRAM.
ENDCASE.
ENDMODULE.
Regards,
Sujit
‎2008 Jul 11 8:14 AM
Hi Hema,
pushbutton will act on user interaction so it be done in the PAI and in selection screen we have pai events like
AT SELECTION-SCREEN on field,
AT SELECTION-SCREEN on block and
AT SELECTION-SCREEN etc.
general we do all our validation part in this events.
and if you want to process something depending on the pushbutton and then display go for start of selection event...
With luck,
pritam.