I’m working on a tabstrip screen that contains two tabs: Expense Logic and Attendance Logic. I’ve noticed an issue where, after clicking the second tab and executing the logic, the screen automatically reverts back to the first tab (Expense Logic) when I navigate back.
What I need is:
The selected tab should remain active after execution — it should not switch back automatically.
Could you please help me resolve this issue?
I’ve attached the relevant portion of my code from the program ZABAB, along with a screenshot for your reference.
SELECTION-SCREEN BEGIN OF TABBED BLOCK tab_strip FOR 30 LINES.
SELECTION-SCREEN TAB (20) tab1 USER-COMMAND tab11 DEFAULT SCREEN 0100.
SELECTION-SCREEN TAB (40) tab2 USER-COMMAND tab22 DEFAULT SCREEN 0200.
SELECTION-SCREEN END OF BLOCK tab_strip.
SELECTION-SCREEN BEGIN OF SCREEN 0100 AS SUBSCREEN.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-001.
PARAMETERS: r_emp RADIOBUTTON GROUP rad1 USER-COMMAND asd1 DEFAULT 'X',
r_dept RADIOBUTTON GROUP rad1,
r_type RADIOBUTTON GROUP rad1.
PARAMETERS: P_name TYPE zemploys-emname MODIF ID m1,
p_year TYPE zexpense-year_no MODIF ID m2,
p_amt TYPE zexpense-amount MODIF ID m3,
p_dept TYPE zemploys-departmnt MODIF ID m4,
p_month TYPE zemploys-month_no MODIF ID m5,
P_expyr TYPE zexpense-expense_type MODIF ID m7,
p_mntnme TYPE zexpense-mnth_nme MODIF ID m8.
SELECT-OPTIONS: s_date FOR zexpense-expense_date MODIF ID m6.
SELECTION-SCREEN END OF BLOCK b1.
SELECTION-SCREEN END OF SCREEN 0100.
SELECTION-SCREEN BEGIN OF SCREEN 0200 AS SUBSCREEN.
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE TEXT-002.
PARAMETERS:
p_att1 RADIOBUTTON GROUP rad2 USER-COMMAND tad2, "DEFAULT 'X',
p_att2 RADIOBUTTON GROUP rad2,
p_att3 RADIOBUTTON GROUP rad2,
p_att4 RADIOBUTTON GROUP rad2,
p_att5 RADIOBUTTON GROUP rad2.
PARAMETERS: P_yrs TYPE zattendancedet-year_no MODIF ID a2,
P_emid TYPE ZATTENDANCEDEt-emid MODIF ID a3 MATCHCODE OBJECT zsh_active_emp,
P_depts TYPE zemploys-departmnt MODIF ID a5,
p_months TYPE ZATTENDANCEDEt-month_no MODIF ID a4.
SELECT-OPTIONS: S_dte FOR ZATTENDANCEDEt-date_NO MODIF ID a6.
SELECTION-SCREEN END OF BLOCK b2.
SELECTION-SCREEN END OF SCREEN 0200.
INITIALIZATION.
tab1 = 'Expense logics'.
tab2 = 'Attendance logics'.
gv_active_tab = 'TAB11'.
AT SELECTION-SCREEN.
CASE sy-ucomm.
WHEN 'TAB11' OR 'TAB22'.
gv_active_tab = sy-ucomm.
ENDCASE.
AT SELECTION-SCREEN OUTPUT.
CASE gv_active_tab.
WHEN 'TAB11'.
tab_strip-activetab = 'TAB11'.
WHEN 'TAB22'.
tab_strip-activetab = 'TAB22'.
ENDCASE.
LOOP AT SCREEN.
IF r_emp = 'X'.
IF screen-group1 = 'M1'.
screen-active = '0'.
MODIFY SCREEN.
ELSEIF screen-group1 = 'M2'.
screen-active = '1'.
MODIFY SCREEN.
ELSEIF screen-group1 = 'M3'.
screen-active = '1'.
MODIFY SCREEN.
ELSEIF screen-group1 = 'M4'.
screen-active = '1'.
MODIFY SCREEN.
ELSEIF screen-group1 = 'M5'.
screen-active = '1'.
MODIFY SCREEN.
ELSEIF screen-group1 = 'M6'.
screen-active = '1'.
MODIFY SCREEN.
ELSEIF screen-group1 = 'M7'.
screen-active = '0'.
MODIFY SCREEN.
ELSEIF screen-group1 = 'M8'.
screen-active = '0'.
MODIFY SCREEN.
ENDIF.
ENDIF.
IF r_dept = 'X'.
IF screen-group1 = 'M1'.
screen-active = '0'.
MODIFY SCREEN.
ELSEIF screen-group1 = 'M2'.
screen-active = '1'.
MODIFY SCREEN.
ELSEIF screen-group1 = 'M3'.
screen-active = '0'.
MODIFY SCREEN.
ELSEIF screen-group1 = 'M4'.
screen-active = '0'.
MODIFY SCREEN.
ELSEIF screen-group1 = 'M5'.
screen-active = '1'.
MODIFY SCREEN.
ELSEIF screen-group1 = 'M6'.
screen-active = '0'.
MODIFY SCREEN.
ELSEIF screen-group1 = 'M7'.
screen-active = '0'.
MODIFY SCREEN.
ELSEIF screen-group1 = 'M8'.
screen-active = '0'.
MODIFY SCREEN.
ENDIF.
ENDIF.
IF r_type = 'X'.
IF screen-group1 = 'M1'.
screen-active = '0'.
MODIFY SCREEN.
ELSEIF screen-group1 = 'M2'.
screen-active = '1'.
MODIFY SCREEN.
ELSEIF screen-group1 = 'M3'.
screen-active = '0'.
MODIFY SCREEN.
ELSEIF screen-group1 = 'M4'.
screen-active = '0'.
MODIFY SCREEN.
ELSEIF screen-group1 = 'M5'.
screen-active = '1'.
MODIFY SCREEN.
ELSEIF screen-group1 = 'M6'.
screen-active = '0'.
MODIFY SCREEN.
ELSEIF screen-group1 = 'M7'.
screen-active = '0'.
MODIFY SCREEN.
ELSEIF screen-group1 = 'M8'.
screen-active = '0'.
MODIFY SCREEN.
ENDIF.
ENDIF.
ENDLOOP.
LOOP AT SCREEN.
IF p_att1 = 'X'.
IF screen-group1 = 'A2'.
screen-active = '1'.
MODIFY SCREEN.
ELSEIF screen-group1 = 'A3'.
screen-active = '0'.
MODIFY SCREEN.
ELSEIF screen-group1 = 'A4'.
screen-active = '1'.
MODIFY SCREEN.
ELSEIF screen-group1 = 'A5'.
screen-active = '0'.
MODIFY SCREEN.
ELSEIF screen-group1 = 'A6'.
screen-active = '0'.
MODIFY SCREEN.
ENDIF.
ENDIF.
IF p_att2 = 'X'.
IF screen-group1 = 'A2'.
screen-active = '1'.
MODIFY SCREEN.
ELSEIF screen-group1 = 'A3'.
screen-active = '0'.
MODIFY SCREEN.
ELSEIF screen-group1 = 'A4'.
screen-active = '1'.
MODIFY SCREEN.
ELSEIF screen-group1 = 'A5'.
screen-active = '1'.
MODIFY SCREEN.
ELSEIF screen-group1 = 'A6'.
screen-active = '1'.
MODIFY SCREEN.
ENDIF.
ENDIF.
IF p_att3 = 'X'.
IF screen-group1 = 'A2'.
screen-active = '1'.
MODIFY SCREEN.
ELSEIF screen-group1 = 'A3'.
screen-active = '1'.
MODIFY SCREEN.
ELSEIF screen-group1 = 'A4'.
screen-active = '1'.
MODIFY SCREEN.
ELSEIF screen-group1 = 'A5'.
screen-active = '0'.
MODIFY SCREEN.
ELSEIF screen-group1 = 'A6'.
screen-active = '0'.
MODIFY SCREEN.
ENDIF.
ENDIF.
IF p_att4 = 'X'.
IF screen-group1 = 'A2'.
screen-active = '1'.
MODIFY SCREEN.
ELSEIF screen-group1 = 'A3'.
screen-active = '1'.
MODIFY SCREEN.
ELSEIF screen-group1 = 'A4'.
screen-active = '1'.
MODIFY SCREEN.
ELSEIF screen-group1 = 'A5'.
screen-active = '0'.
MODIFY SCREEN.
ELSEIF screen-group1 = 'A6'.
screen-active = '0'.
MODIFY SCREEN.
ENDIF.
ENDIF.
IF p_att5 = 'X'.
IF screen-group1 = 'A2'.
screen-active = '0'.
MODIFY SCREEN.
ELSEIF screen-group1 = 'A3'.
screen-active = '1'.
MODIFY SCREEN.
ELSEIF screen-group1 = 'A4'.
screen-active = '0'.
MODIFY SCREEN.
ELSEIF screen-group1 = 'A5'.
screen-active = '0'.
MODIFY SCREEN.
ELSEIF screen-group1 = 'A6'.
screen-active = '0'.
MODIFY SCREEN.
ENDIF.
ELSEIF screen-group1 = 'A7'.
screen-active = '0'.
MODIFY SCREEN.
ELSEIF screen-group1 = 'A8'.
screen-active = '0'.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
START-OF-SELECTION.
CASE gv_active_tab.
WHEN 'TAB11'.
IF r_emp = 'X'.
SELECT a~emid,
a~emname,
a~departmnt,
a~status,
a~month_no,
a~year_no,
b~expense_date,
b~expense_type,
b~amount
FROM zemploys AS a
INNER JOIN zexpense AS b
ON a~emid = b~emid
INTO CORRESPONDING FIELDS OF TABLE @IT_table.
LOOP AT it_table INTO wa_table.
IF p_month IS INITIAL AND p_year IS INITIAL AND p_dept IS INITIAL
AND p_amt IS INITIAL AND s_date IS INITIAL.
lv_total_expense = lv_total_expense + wa_table-amount.
WRITE: / 'Grand Total Expense:', lv_total_expense,
'Name :', wa_table-emname,
'Department :', wa_table-departmnt,
'Month :', wa_table-month_no,
'Year :', wa_table-year_no,
'Type :', wa_table-expense_type,
'Amount :', wa_table-amount.
ELSEIF p_month IS NOT INITIAL AND p_year IS NOT INITIAL
AND wa_table-month_no = p_month AND wa_table-year_no = p_year.
WRITE: / 'Name :', wa_table-emname,
'Month :', wa_table-month_no,
'Year :', wa_table-year_no,
'Amount :', wa_table-amount.
ELSEIF p_dept IS NOT INITIAL AND p_month IS INITIAL AND p_year IS INITIAL
AND wa_table-departmnt = p_dept.
lv_total_expense = lv_total_expense + wa_table-amount.
WRITE: / 'Name :', wa_table-emname,
'Month :', wa_table-month_no,
'Year :', wa_table-year_no,
'Department :' , wa_table-departmnt,
'Amount :', wa_table-amount.
ELSEIF p_amt IS NOT INITIAL AND s_date IS NOT INITIAL
AND wa_table-expense_date IN s_date AND wa_table-amount >= p_amt.
lv_total_expense = lv_total_expense + wa_table-amount.
WRITE: / 'Date :', wa_table-expense_date,
'Amount :', wa_table-amount.
ELSEIF p_year IS NOT INITIAL AND p_month IS INITIAL AND p_dept IS INITIAL
AND s_date IS INITIAL AND p_amt IS INITIAL
AND wa_table-year_no = p_year.
lv_total_expense = lv_total_expense + wa_table-amount.
WRITE: / 'Grand Total Expense:', lv_total_expense,
'Month :', wa_table-month_no,
'Year :', wa_table-year_no.
ENDIF.
ENDLOOP.
ELSEIF r_dept = 'X'.
IF p_month IS INITIAL AND p_year IS INITIAL.
SELECT emid,
month_no,
year_no,
SUM( amount ) AS total_exp
INTO TABLE @DATA(it_total_expense)
FROM zexpense
GROUP BY emid, month_no, year_no.
ELSE.
SELECT emid,
month_no,
year_no,
SUM( amount ) AS total_exp
FROM zexpense
WHERE ( month_no IS NOT INITIAL AND month_no = @p_month )
AND ( year_no IS NOT INITIAL AND year_no = @p_year )
GROUP BY emid, month_no, year_no
INTO TABLE @IT_total_expense.
ENDIF.
LOOP AT it_total_expense INTO DATA(wa_total_expense).
" Check if entry exists in ZMONTHSALARIES
SELECT SINGLE emid
FROM zmonthsalaries
WHERE emid = @wa_total_expense-emid
AND month_no = @wa_total_expense-month_no
AND year_no = @wa_total_expense-year_no
INTO @DATA(lv_exist_emid).
IF sy-subrc = 0.
zmonthsalaries-emid = wa_total_expense-emid.
zmonthsalaries-month_no = wa_total_expense-month_no.
zmonthsalaries-year_no = wa_total_expense-year_no.
zmonthsalaries-totalexpenses = wa_total_expense-total_exp.
zmonthsalaries-last_updated_date = sy-datum.
zmonthsalaries-last_updated_time = sy-uzeit.
MODIFY zmonthsalaries FROM zmonthsalaries.
WRITE: / 'Updated:', wa_total_expense-emid, 'Total Expense:', wa_total_expense-total_exp.
ELSE.
" Insert
zmonthsalaries-emid = wa_total_expense-emid.
zmonthsalaries-month_no = wa_total_expense-month_no.
zmonthsalaries-year_no = wa_total_expense-year_no.
zmonthsalaries-totalexpenses = wa_total_expense-total_exp.
zmonthsalaries-last_updated_date = sy-datum.
zmonthsalaries-last_updated_time = sy-uzeit.
INSERT zmonthsalaries FROM zmonthsalaries.
WRITE: / 'Inserted:', wa_total_expense-emid, 'Total Expense:', wa_total_expense-total_exp.
ENDIF.
ENDLOOP.
ELSEIF R_TYPE = 'X'.
CLEAR: ITK_TABLE, WAK_TABLE.
SELECT A~EMID,
A~EMNAME,
A~DEPARTMNT,
B~MONTH_NO,
B~MNTH_NME,
B~YEAR_NO,
SUM( B~AMOUNT ) AS TOTALEXPENSES
INTO TABLE @ITK_TABLE
FROM ZEMPLOYS AS A
INNER JOIN ZEXPENSE AS B ON A~EMID = B~EMID
GROUP BY A~EMID, A~EMNAME, A~DEPARTMNT, B~MONTH_NO, B~MNTH_NME, B~YEAR_NO.
LOOP AT ITK_TABLE INTO WAK_TABLE.
WRITE: / 'Employee:', WAK_TABLE-EMID, WAK_TABLE-EMNAME,
'Dept:', WAK_TABLE-DEPARTMNT,
'Month:', WAK_TABLE-MNTH_NME,
'Year:', WAK_TABLE-YEAR_NO,
'Total Expense:', WAK_TABLE-TOTALEXPENSES.
ENDLOOP.
ENDIF.
WHEN 'TAB22'.
IF p_att1 = 'X'.
IF p_months IS INITIAL AND p_yrs IS INITIAL.
SELECT emid,
month_no,
year_no,
COUNT(*) AS present_days
INTO CORRESPONDING FIELDS OF TABLE @IT_attendance
FROM zattendancedet
GROUP BY emid, month_no, year_no.
ELSEIF p_months IS NOT INITIAL AND p_yrs IS NOT INITIAL .
SELECT emid,
month_no,
year_no,
COUNT(*) AS present_days
INTO CORRESPONDING FIELDS OF TABLE @IT_attendance
FROM zattendancedet
WHERE month_no = @p_months
AND year_no = @P_yrs
AND atendnce_stus = 'P'
GROUP BY emid, month_no, year_no.
ENDIF.
LOOP AT it_attendance INTO wa_ATTENDANCE.
WRITE: / 'Employee ID:',wa_ATTENDANCE-emid,
'Year:', wa_ATTENDANCE-year_no,
'Month:',wa_ATTENDANCE-month_no,
'Total Present Days:',wa_ATTENDANCE-present_days.
ENDLOOP.
ELSEIF p_att2 = 'X'.
IF p_months IS INITIAL AND p_yrs IS INITIAL AND S_dte IS INITIAL AND p_depts IS INITIAL.
SELECT zemploys~emid,
zemploys~departmnt,
zattendancedet~month_no,
zattendancedet~year_no,
zattendancedet~date_no,
zemploys~emname,
SUM( CASE WHEN zattendancedet~atendnce_stus = 'P' THEN 1 ELSE 0 END ) AS present_days,
SUM( CASE WHEN zattendancedet~atendnce_stus = 'A' THEN 1 ELSE 0 END ) AS absent_days,
SUM( CASE WHEN zattendancedet~atendnce_stus = 'L' THEN 1 ELSE 0 END ) AS leave_days
INTO CORRESPONDING FIELDS OF TABLE @IT_attendance
FROM Zemploys
INNER JOIN zattendancedet
ON zemploys~emid = zattendancedet~emid
GROUP BY zemploys~emid,
zemploys~departmnt,
zattendancedet~month_no,
Zemploys~emname,
zattendancedet~year_no,
zattendancedet~date_NO.
ELSEIF p_months IS NOT INITIAL AND p_yrs IS NOT INITIAL AND S_dte IS NOT INITIAL AND p_depts IS NOT INITIAL .
SELECT zemploys~emid,
zemploys~departmnt,
zattendancedet~month_no,
zattendancedet~year_no,
zattendancedet~date_no,
zemploys~emname ,
SUM( CASE WHEN zattendancedet~atendnce_stus = 'P' THEN 1 ELSE 0 END ) AS present_days,
SUM( CASE WHEN zattendancedet~atendnce_stus = 'A' THEN 1 ELSE 0 END ) AS absent_days,
SUM( CASE WHEN zattendancedet~atendnce_stus = 'L' THEN 1 ELSE 0 END ) AS leave_days
INTO CORRESPONDING FIELDS OF TABLE @IT_attendance
FROM Zemploys
INNER JOIN zattendancedet
ON zemploys~emid = zattendancedet~emid
WHERE zemploys~departmnt = @p_depts
AND zattendancedet~month_no = @p_months
AND zattendancedet~year_no = @p_yrs
AND zattendancedet~Date_no IN @S_dte
GROUP BY zemploys~emid,
zemploys~departmnt,
zattendancedet~month_no,
Zemploys~emname,
zattendancedet~year_no,
zattendancedet~date_NO.
ENDIF.
LOOP AT it_attendance INTO wa_attendance.
WRITE: / 'Department:', wa_attendance-departmnt,
'Employee ID:', wa_attendance-emid,
'Employee Name:', wa_attendance-emname,
'Year:', wa_attendance-year_no,
'Month:', wa_attendance-month_no,
'Date:', wa_attendance-date_no,
'Total Present Days:',wa_attendance-present_days,
'Total Absent Days:', wa_attendance-absent_days,
'Total Leave Days:', wa_attendance-leave_days.
ENDLOOP.
ELSEIF p_att3 = 'X'.
IF p_months IS INITIAL AND p_yrs IS INITIAL AND p_emid IS INITIAL.
SELECT emid,
month_no,
year_no,
COUNT(*) AS present_days
INTO CORRESPONDING FIELDS OF TABLE @LT_present_data
FROM zattendancedet
GROUP BY emid, month_no, year_no.
ELSEIF p_months IS NOT INITIAL AND p_yrs IS NOT INITIAL AND p_emid IS NOT INITIAL .
SELECT emid,
month_no,
year_no,
COUNT(*) AS present_days
INTO CORRESPONDING FIELDS OF TABLE @LT_present_data
FROM zattendancedet
WHERE atendnce_stus = 'P'
AND month_no = @p_months
AND year_no = @p_yrs
AND emid = @p_emid
GROUP BY emid, month_no, year_no.
ENDIF.
LOOP AT lt_present_data INTO ls_present_data.
CLEAR wa_attendance_summary.
wa_attendance_summary-emid = ls_present_data-emid.
wa_attendance_summary-month_no = ls_present_data-month_no.
wa_attendance_summary-year_no = ls_present_data-year_no.
wa_attendance_summary-present_days = ls_present_data-present_days.
SELECT COUNT(*) INTO @wa_attendance_summary-workingdays
FROM zattendancedet
WHERE emid = @LS_present_data-emid
AND month_no = @LS_present_data-month_no
AND year_no = @LS_present_data-year_no.
IF wa_attendance_summary-workingdays > 0.
wa_attendance_summary-attendnpercent =
( ls_present_data-present_days * 100 ) / wa_attendance_summary-workingdays.
ELSE.
wa_attendance_summary-attendnpercent = 0.
ENDIF.
APPEND wa_attendance_summary TO it_attendance_summary.
ENDLOOP.
WRITE: / 'EMID', 'MONTH', 'YEAR','WORKINGDAYS','PRESENTDAYS', 'ATTENDANCE %'.
LOOP AT it_attendance_summary INTO wa_attendance_summary.
WRITE: / wa_attendance_summary-emid,
wa_attendance_summary-month_no,
wa_attendance_summary-year_no,
wa_attendance_summary-workingdays,
wa_attendance_summary-present_days,
wa_attendance_summary-attendnpercent.
ENDLOOP.
* endif.
ELSEIF p_att4 = 'X'.
IF p_months IS INITIAL AND p_yrs IS INITIAL AND p_emid IS INITIAL.
SELECT emid,
date_no,
day_no,
atendnce_stus,
leave_typ,
year_no,
month_no
INTO TABLE @LT_att
FROM zattendancedet.
elseif p_months IS not INITIAL AND p_yrs IS not INITIAL AND p_emid IS not INITIAL.
SELECT emid,
date_no,
day_no,
atendnce_stus,
leave_typ,
year_no,
month_no
INTO TABLE @LT_att
FROM zattendancedet
WHERE year_no = @p_yrs
AND emid = @p_emid
AND month_no = @p_months.
ENDif.
WRITE:/ sy-uline(60).
WRITE: / 'Employee Attendance Details - Month:', p_months, 'Year:', p_yrs, 60 sy-vline.
WRITE:/ sy-uline(60).
WRITE:/ sy-uline(130).
WRITE:/ 'EmpID' COLOR 2,20 sy-vline,'Date' COLOR 2,40 sy-vline,'Day' COLOR 2,60 sy-vline,'atendnce stus' COLOR 2, 80 sy-vline, 'Leave Type' COLOR 2, 100 sy-vline, 'year' COLOR 2, 120 sy-vline,'Month',130 sy-vline.
WRITE:/ sy-uline(130).
"Loop and Display Records
LOOP AT lt_att INTO wa_att.
WRITE:/ wa_att-emid COLOR 2,20 sy-vline, wa_att-date_no DD/MM/YYYY COLOR 2,40 sy-vline,wa_att-day_no COLOR 2,60 sy-vline, wa_att-atendnce_stus COLOR 2, 80 sy-vline, wa_att-leave_typ COLOR 2, 100 sy-vline,wa_att-month_no COLOR 2, 120 sy-vline,
wa_att-year_no, 130 sy-vline.
" Count attendance categories
CASE wa_att-atendnce_stus.
WHEN 'P'.
lv_present = lv_present + 1.
WHEN 'A'.
lv_absent = lv_absent + 1.
WHEN 'L'.
lv_leave = lv_leave + 1.
ENDCASE.
ENDLOOP.
"Summary Section
lv_total = lv_present + lv_absent + lv_leave.
WRITE:/ sy-uline(130).
WRITE: / 'Summary:'.
WRITE: / 'Total Working Days:', lv_total.
WRITE: / 'Total Present :', lv_present.
WRITE: / 'Total Absent :', lv_absent.
WRITE: / 'Total Leave :', lv_leave.
ELSEIF p_att5 = 'X'.
IF p_emid IS INITIAL.
SELECT emid,
emname
INTO CORRESPONDING FIELDS OF TABLE @IT_attendance
FROM zemploys.
ELSEIF p_emid IS not INITIAL.
SELECT emid,
emname
INTO CORRESPONDING FIELDS OF TABLE @IT_attendance
FROM zemploys
WHERE emid = @p_emid.
ENDIF.
LOOP AT it_attendance INTO wa_ATTENDANCE.
WRITE: / 'Employee ID:',wa_ATTENDANCE-emid,
'Name:', wa_ATTENDANCE-emname.
ENDLOOP.
ENDIF.
ENDCASE.
Request clarification before answering.
| User | Count |
|---|---|
| 5 | |
| 4 | |
| 4 | |
| 3 | |
| 2 | |
| 2 | |
| 2 | |
| 2 | |
| 2 | |
| 2 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.