Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

Report

Former Member
0 Likes
409

Hi,

Plzzzzzzz anyone solve my problem....

In my report, i have a radio button for LTA taken and another is for LTA not taken...

In the 1st radion button, LTA taken records are coming but in the second radio button, LTA not taken records are not coming...here, in second radio button, records are coming, but whole employee records..means..LTA taken and LTA not taken..both..

Plz check my code and tell me...

**********************************************

REPORT ZHR_LTA NO STANDARD PAGE HEADING LINE-SIZE 100 .

TABLES : PA0015, "HR Master Record: Infotype 0008 (Basic Pay)

PA0001 , "HR Master Record: Infotype 0001 (Org. Assignment)

PA0002 , "HR Master Record: Infotype 0002 (Personal Data)

T001P . "Personnel Area/Subarea

TYPE-POOLS : SLIS .

DATA : BEGIN OF ITAB OCCURS 0 ,

PERNR LIKE PA0001-PERNR , "Personel no.

ENAME LIKE PA0001-ENAME , "Employee name

Z_DESIGNATION LIKE PA0001-Z_DESIGNATION , "Designation

BEGDA LIKE PA0015-BEGDA , "LTA VALID DATE

ENDDA LIKE PA0015-ENDDA , " LTA VALID DATE

BETRG LIKE PA0015-BETRG , " LTA Amount

END OF ITAB .

DATA : BEGIN OF ITAB1 OCCURS 0 ,

PERNR LIKE PA0001-PERNR , "Personel no.

ENAME LIKE PA0001-ENAME , "Employee name

Z_DESIGNATION LIKE PA0001-Z_DESIGNATION , "Designation

END OF ITAB1 .

DATA : BEGIN OF ITAB3 OCCURS 0.

INCLUDE STRUCTURE ITAB.

DATA : END OF ITAB3.

DATA : X TYPE I.

************************************************************************

DATA : W_CONTAINER TYPE SCRFNAME VALUE 'CL_GRID',

W_CPROG TYPE LVC_S_LAYO,

G_REPID LIKE SY-REPID,

W_SAVE TYPE C,

W_EXIT TYPE C,

CL_GRID TYPE REF TO CL_GUI_ALV_GRID,

CL_CUSTOM_CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER,

IT_FLD_CATALOG TYPE SLIS_T_FIELDCAT_ALV,

WA_FLD_CATALOG TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE ,

LAYOUT TYPE SLIS_LAYOUT_ALV,

COL_POS LIKE SY-CUCOL ,

ALVFC TYPE SLIS_T_FIELDCAT_ALV.

************************************************************************

SELECTION-SCREEN : BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001 .

SELECT-OPTIONS : PERNR FOR PA0001-PERNR .

SELECT-OPTIONS : ENDDA FOR PA0015-ENDDA OBLIGATORY.

SELECTION-SCREEN : END OF BLOCK B1 .

PARAMETER : TKN RADIOBUTTON GROUP A,

NTKN RADIOBUTTON GROUP A.

************************************************************************

IF TKN = 'X'.

PERFORM FILL_CATALOG1 USING:

'PERNR' 'ITAB' 'Personal No.',

'ENAME' 'ITAB' 'Emp Name',

'Z_DESIGNATION' 'ITAB' 'Designation',

'BEGDA' 'ITAB' 'Valid from',

'ENDDA' 'ITAB' 'End Date',

'BETRG' 'ITAB' 'Amount'.

ELSE.

PERFORM FILL_CATALOG1 USING:

'PERNR' 'ITAB' 'Personal No.',

'ENAME' 'ITAB' 'Emp Name',

'Z_DESIGNATION' 'ITAB' 'Designation'.

ENDIF.

*************************************************************************************

IF TKN = 'X'.

SELECT M1~PERNR M1~ENDDA M1~BEGDA M1~BETRG M2~ENAME M2~Z_DESIGNATION INTO CORRESPONDING FIELDS OF TABLE ITAB

FROM PA0015 AS M1 INNER JOIN PA0001 AS M2 ON M1~PERNR = M2~PERNR

WHERE M1~PERNR IN PERNR AND M1~SUBTY EQ '4004' AND M2~ENDDA EQ '99991231' AND PERSG = '1'

AND M1~BEGDA GE ENDDA-LOW AND M1~ENDDA LE ENDDA-HIGH .

ELSE.

SELECT DISTINCT M1~PERNR M2~ENAME M2~Z_DESIGNATION INTO CORRESPONDING FIELDS OF TABLE ITAB

FROM PA0015 AS M1 INNER JOIN PA0001 AS M2 ON M1~PERNR = M2~PERNR

WHERE M1~PERNR IN PERNR AND M1~SUBTY NE '4004' AND M2~ENDDA EQ '99991231' AND PERSG = '1'.

ENDIF.

*

*SELECT PERNR ENAME Z_DESIGNATION INTO CORRESPONDING FIELDS OF TABLE ITAB1

  • FROM PA0001 WHERE ENDDA EQ '99991231' AND PERSG = '1' .

IF SY-SUBRC <> 0 .

MESSAGE 'DATA NOT FOUND.' TYPE 'I' .

ENDIF .

SORT ITAB BY PERNR .

*************************************************************************************

IF TKN = 'X'.

SORT ITAB BY PERNR .

ELSE.

LOOP AT ITAB1.

IF NTKN EQ 'X'.

DELETE ITAB1.

CONTINUE.

ENDIF.

ENDLOOP.

ENDIF.

*************************************************************************************

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

I_CALLBACK_PROGRAM = 'ZHR_LTA'

IS_LAYOUT = LAYOUT

IT_FIELDCAT = IT_FLD_CATALOG

I_DEFAULT = 'X'

I_SAVE = 'A'

TABLES

T_OUTTAB = ITAB

EXCEPTIONS

PROGRAM_ERROR = 1

OTHERS = 2.

IF SY-SUBRC <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

**ENDFORM.

FORM FILL_CATALOG1 USING P_FIELDNAME TYPE ANY

P_REF_TABLE TYPE ANY

P_SCRTEXT TYPE ANY.

CLEAR : WA_FLD_CATALOG.

WA_FLD_CATALOG-FIELDNAME = P_FIELDNAME.

WA_FLD_CATALOG-TABNAME = P_REF_TABLE.

WA_FLD_CATALOG-SELTEXT_S = P_SCRTEXT.

WA_FLD_CATALOG-SELTEXT_M = P_SCRTEXT.

WA_FLD_CATALOG-SELTEXT_L = P_SCRTEXT.

APPEND WA_FLD_CATALOG TO IT_FLD_CATALOG.

ENDFORM. " fill_catalog1

*************************

Please do it an urgent basis...

thanks.

Edited by: Prince Kumar on Jun 4, 2008 10:21 PM

3 REPLIES 3
Read only

Former Member
0 Likes
376

I have no HR knowledge but I don't see any difference in WHERE clause of both queries.

Just difference is for 2nd query you are selecting distinct values.

I hope therre should be difference in where clause depending on radio button selected.

Please chek that again.

Thnx,

Ags.

Read only

0 Likes
376

Hi Dear,

In my 1st radio button, i m fatching records for employees who had taken LTA ...for that i take a condition in it..SUBTY EQ '4004' (by which we know that LTA Taken)..

In else, I want to fatch records for employees who not take LTA till date..(But here, is not any clue for LTA not taken employees)

What should be the condition, i m unable to take proper condition for it...

Tell me...

Edited by: Prince Kumar on Jun 4, 2008 10:59 PM

Read only

0 Likes
376

This looks mighty fishy.


  SORT itab BY pernr .         " You sort the table reguardless
************************************************************************
  IF tkn = 'X'.
    SORT itab BY pernr .       " Now you sort it again?
  ELSE.
    LOOP AT itab1.               " Now you loop thru the table when NTKN
      IF ntkn EQ 'X'.            " we already know this is true since it's a Radio Button
        DELETE itab1.            "  so you delete everything in this table
        CONTINUE.                " Don't need this line at all
      ENDIF.
    ENDLOOP.
  ENDIF.

You may as well have coded it this way, but I don't think it's what you want.


  IF tkn = 'X'.
    SORT itab BY pernr .  " Since pernr is the first field in itab,  simply SORT ITAB.
  ELSE.
    refresh itab1.
    clear   itab1.
  ENDIF.

Even more of an issue, this is the only place that you reference itab1. So itab1 is empty anyway.

Both SELECTs store in itab.

Edited by: Paul Chapman on Jun 4, 2008 1:50 PM