Application Development Blog Posts
Learn and share on deeper, cross technology development topics such as integration and connectivity, automation, cloud extensibility, developing at scale, and security.
cancel
Showing results for 
Search instead for 
Did you mean: 
Former Member
0 Kudos

Intoduction:

You often need to determine wage types and their amounts from infotype 0008 ( basic pay). Using the function modules we can evaluate all these wage types information.

Input :

We can give the Employee numbers or Payroll area etc in selection screen.

Output:

We will display all the selected employees basic detail i.e. pernr, empname, total all wage types amount & its currency using Interactive ALV.

If we click on any particular we will display the second page output using alv.

Below is the code snippet to achieve this one.  And use PNP database for this report program.

Code Snippet

*&---------------------------------------------------------------------*

*& Report  ZR_C101_CSD122 ( By using PNP Ldb )

*&

*&---------------------------------------------------------------------*

*& Report program to print the employee basic pay details ( Infotype 😎

*& Using ALV Interactive Reprot.

*&---------------------------------------------------------------------*

REPORT  ZR_C101_CSD122.

** Declaration Part

TYPE-POOLS SLIS.        " Type pools declaration for ALV fieldcat purpose.

TABLES PERNR.

INFOTYPES: 0001, 0002, 0007, 0008.

DATA: WA_PBWLA TYPE PBWLA,

      PBWLA TYPE TABLE OF PBWLA,

      IT_FIELDCAT1 TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE,

      IT_FIELDCAT2 TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE.

DATA: BEGIN OF IT_PBWLA OCCURS 0,

        PERNR TYPE PERNR-PERNR,

        WAERS TYPE PBWLA-WAERS,

        LGART TYPE PBWLA-LGART,

        LGTXT TYPE T512T-LGTXT,

        BETRG TYPE PBWLA-BETRG,

        INDBW TYPE PBWLA-INDBW,

      END OF IT_PBWLA.

DATA: BEGIN OF IT_PAGE1 OCCURS 0,      " Internal table for First page ALV

       PERNR TYPE PERNR-PERNR,         " Which contains Emp no, Name, Hire date, Total All wage types amount

       EMPNAME(80) TYPE C,

       CURR TYPE PBWLA-WAERS,

       AMOUNT TYPE Q0008-SUMBB,

      END OF IT_PAGE1.

DATA: BEGIN OF IT_PAGE2 OCCURS 0,      " Internal table for Second page in ALV output

        PERNR TYPE PERNR-PERNR,

        LGART TYPE PBWLA-LGART,

        LGTXT TYPE T512T-LGTXT,

        WAERS TYPE PBWLA-WAERS,

        BETRG TYPE PBWLA-BETRG,

        INDBW TYPE PBWLA-INDBW,

      END OF IT_PAGE2.

DATA: BEGIN OF IT_T512T OCCURS 0,

        MOLGA TYPE T512T-MOLGA,

        LGART TYPE T512T-LGART,

        LGTXT TYPE T512T-LGTXT,

      END OF IT_T512T.

********** Start of selection event*****

START-OF-SELECTION.

** READ ALL THE WAGE TYPE DESCRIPTIONS .

  SELECT MOLGA LGART LGTXT FROM T512T

                           INTO TABLE IT_T512T

                           WHERE SPRSL = SY-LANGU.

  SORT IT_T512T BY LGART MOLGA.

** Get pernr event

GET PERNR.

** Read the latest record to header of infotype 8 internal table.

  RP-PROVIDE-FROM-LAST P0008 SPACE PN-BEGDA PN-ENDDA.

  IF PNP-SW-FOUND = 1.

** Call the function module to fill the employee all wage type details

    CALL FUNCTION 'RP_FILL_WAGE_TYPE_TABLE_EXT'

      EXPORTING

        BEGDA                        = P0008-BEGDA

        ENDDA                        = P0008-ENDDA

        INFTY                        = '0008'

        PERNR                        = PERNR-PERNR

      TABLES

        PP0001                       = P0001

        PP0007                       = P0007

        PP0008                       = P0008

        PPBWLA                       = PBWLA

      EXCEPTIONS

        ERROR_AT_INDIRECT_EVALUATION = 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.

** Get the total amount in basic pay infotype using the below function module.

    CALL FUNCTION 'HR_GET_TOTAL_AMOUNT_P0008'

      EXPORTING

        PERNR             = PERNR-PERNR

        P0008             = P0008

        P0001             = P0001

      IMPORTING

        AMOUNT            = IT_PAGE1-AMOUNT

        CURRENCY          = IT_PAGE1-CURR

      EXCEPTIONS

        NO_ENTRY_IN_T001P = 1

        NO_ENTRY_IN_T503  = 2

        OTHERS            = 3.

    IF SY-SUBRC <> 0.

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

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

    ENDIF.

** Concatinate the first and last name of employee

    RP-PROVIDE-FROM-LAST P0002 SPACE PN-BEGDA PN-ENDDA.

    CONCATENATE P0002-NACHN P0002-VORNA INTO IT_PAGE1-EMPNAME.

** Append the total amount of all wage types amount to ALV first page internal table.

    IT_PAGE1-PERNR = PERNR-PERNR.

    APPEND IT_PAGE1.

** Append all employee basic pay records to a single internal table ( it_pbwla).

    LOOP AT PBWLA INTO WA_PBWLA.

      READ TABLE IT_T512T WITH KEY LGART = WA_PBWLA-LGART MOLGA = WA_PBWLA-MOLGA BINARY SEARCH.

      MOVE IT_T512T-LGTXT TO IT_PBWLA-LGTXT.

      MOVE-CORRESPONDING WA_PBWLA TO IT_PBWLA.

      MOVE PERNR-PERNR TO IT_PBWLA-PERNR.

      APPEND IT_PBWLA.

      CLEAR IT_PBWLA.

    ENDLOOP.

  ENDIF.

END-OF-SELECTION.

** CALL THE INTERACTIVE ALV GRID DISPLAY FUNCTION TO DISPALY THE ALL

** EMPLOYEE DETAILS WITH TOTAL WAGE TYPES AMOUNT , EMP NAME, EMP NO.

  PERFORM APPEND_FIELDCAT USING 'PERNR' 'EMP NO' 'X' '' .

  PERFORM APPEND_FIELDCAT USING 'EMPNAME' 'EMP NAME' '' '' .

  PERFORM APPEND_FIELDCAT USING 'CURR' 'CUR FORMAT' '' '' .

  PERFORM APPEND_FIELDCAT USING 'AMOUNT' 'TOTAL WAGE TYPES AMOUNT' '' '' .

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

    EXPORTING

      I_CALLBACK_PROGRAM          = SY-REPID

*      I_CALLBACK_PF_STATUS_SET    = ' '

      I_CALLBACK_USER_COMMAND     = 'SECOND_PAGE'

*      I_CALLBACK_TOP_OF_PAGE      = ' '

*      IS_LAYOUT                   =

      IT_FIELDCAT      =      IT_FIELDCAT1[]

    TABLES

      T_OUTTAB                    = IT_PAGE1

    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.

*&---------------------------------------------------------------------*

*&      Form  APPEND_FIELDCAT

*&---------------------------------------------------------------------*

*      SUBROUTINE TO APPEND THE FIELDCATALOG FOR FIRST PAGE.

*----------------------------------------------------------------------*

*      -->P_0328   text

*      -->P_0329   text

*      -->P_0330   text

*      -->P_0331   text

*----------------------------------------------------------------------*

FORM APPEND_FIELDCAT  USING    VALUE(P_0328)

                               VALUE(P_0329)

                               VALUE(P_0330)

                               VALUE(P_0331).

  IT_FIELDCAT1-FIELDNAME = P_0328.

  IT_FIELDCAT1-SELTEXT_L = P_0329.

  IT_FIELDCAT1-HOTSPOT = P_0330.

  APPEND IT_FIELDCAT1.

  CLEAR IT_FIELDCAT1.

ENDFORM.                    " APPEND_FIELDCAT

*&---------------------------------------------------------------------*

*&      Form  SECOND_PAGE

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

FORM SECOND_PAGE USING R_UCOMM LIKE SY-UCOMM

                                   RS_SELFIELD TYPE SLIS_SELFIELD.

** CHECK WHETHER THE USER CLICKED ON EMP NUMBER OR NOT. IF

** YES DISPALY DETAILED WAGE TYPES INFORMATIN IN SECOND PAGE.

  IF RS_SELFIELD-FIELDNAME = 'PERNR'.

    LOOP AT IT_PBWLA WHERE PERNR = RS_SELFIELD-VALUE.

      MOVE-CORRESPONDING IT_PBWLA TO IT_PAGE2.

      APPEND IT_PAGE2.

      CLEAR IT_PAGE2.

    ENDLOOP.

** PROCESS THE ALV SECOND PAGE.

    PERFORM APPEND_FIELDCAT2 USING 'PERNR' 'EMP NO.' ''.

    PERFORM APPEND_FIELDCAT2 USING 'LGART' 'WAGE TYPE' ''.

    PERFORM APPEND_FIELDCAT2 USING 'LGTXT' 'DESCIRPTION' ''.

    PERFORM APPEND_FIELDCAT2 USING 'WAERS' 'CURRENCY' ''.

    PERFORM APPEND_FIELDCAT2 USING 'BETRG' 'AMOUNT' ''.

    PERFORM APPEND_FIELDCAT2 USING 'INDBW' 'IND EVAL' ''.

** CALL THE ALV FUNCTION MODULE.

    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

      EXPORTING

*        IS_LAYOUT     =

        IT_FIELDCAT   = IT_FIELDCAT2[]

      TABLES

        T_OUTTAB      = IT_PAGE2

      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.

  ENDIF.

ENDFORM.                    "SECOND_PAGE

*&---------------------------------------------------------------------*

*&      Form  APPEND_FIELDCAT2

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*      -->P_0459   text

*      -->P_0460   text

*      -->P_0461   text

*----------------------------------------------------------------------*

FORM APPEND_FIELDCAT2  USING    VALUE(P_0459)

                                VALUE(P_0460)

                                VALUE(P_0461).

  IT_FIELDCAT2-FIELDNAME = P_0459.

  IT_FIELDCAT2-SELTEXT_L = P_0460.

  APPEND IT_FIELDCAT2.

  CLEAR IT_FIELDCAT2.

ENDFORM.                    " APPEND_FIELDCAT2

Regards,

Mayure.