cancel
Showing results for 
Search instead for 
Did you mean: 

Issue with tab strips

07-31-2025 6:49 AM
karan3032l Discoverer
367 views 0 comments
0 Likes
SAP Managed Tags
Subscribe

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.

image.png

0 Likes

Accepted Solutions (0)

Answers (0)