SAP Program RPUWMTX0 - Wage type maintenance - Main logic

Description
Please read the on-line documentation of RPUWMXX0 for more information.
The following tables (views) are currently supported:

  • T512W - Wage Type Valuation

  • T512T - Wage Type Texts

  • T510J - Constant Valuations

  • T510L - Levels

  • T510S - Time Wage Type Selection Rule

  • T511 - Wage Types

  • T511B - Cumulation Types for Averages

  • T511M - Wage Type Models

  • T512C - Tax Exemptions

  • T512Z - Permissibility of W.T. per Infotype

  • T51D2 - Wage Type Classes

  • T51D4 - Cumulation Rules

  • T51RA - Wage Type / HR Creditor Mapping

  • T520S - Text Key for Data Carrier

  • T528C - Work Center Catalog

  • T52D7 - Assign Wage Types to Wage Type Groups

  • T52DZ - Assignment: Customizing - Model wage types

  • T539A - Default Wage Types for Basic Pay

  • T539J - Evaluation of Base Wage Types

  • T539R - Events for Standard Wage Maintenance

  • T539S - Wage Types for Standard Wage Maintenance

  • T541N - Guaranteed Net Amounts

  • T54C3 - CRT: Cumulation of wagetypes

  • T555K - Transfer to Time Wage Types

  • T555W - External Wage Types from Subsystem

  • T51D4 - Cumulation Rules

  • T51RA - Wage Type / HR Creditor Mapping

  • T520S - Text Key for Data Carrier

  • T528C - Work Center Catalog

  • T52D7 - Assign Wage Types to Wage Type Groups

  • T52DZ - Assignment: Customizing - Model wage types

  • T539A - Default Wage Types for Basic Pay

  • T539J - Evaluation of Base Wage Types

  • T539R - Events for Standard Wage Maintenance

  • T539S - Wage Types for Standard Wage Maintenance

  • T541N - Guaranteed Net Amounts

  • T54C3 - CRT: Cumulation of wagetypes

  • T555K - Transfer to Time Wage Types

  • T555W - External Wage Types from Subsystem

  • T558A - Transfer Payroll Account

  • T591B - Time Constraints for Wage Types

  • T599Y - Conversion of External Wage Types

  • T599Z - Time Wage Types to Third-Party Systems

  • T51T0 - Evaluation of wage types for tax reporting

  • T51P1 - Assignment of wage types.

  • T51P6 - Characteristics of deduction WTypes for arrears processing

  • T703K - Inc.Wages: Permitted Wage Types for Each Time Ticket Type

  • T703N - Incentive Wages: Allowed Wage Types

  • T703O - Incentive Wages: Convert Wage Types to Result Types

  • T513U - Secondary System Documentation

  • T5URC - Tax Authority / HR Creditor Mapping

  • This on-line documentation is for developers only who create thecountry version reports to maintain country-specific tables. For otherpurposes please read the on-line documentation of RPUWMXX0.

    Assumption --- IMPORTANT!
    Country grouping is Germany, i.e., MOLGA is 01.
    There are three tables T5D01, T5D02, T5D03.
    T5D01 has only a key field wage type LGART.
    Its key fields are MANDT, MOLGA, LGART and ENDDA.
    T5D02 has only a non-key field wage type LGAR2.
    Its key fields are MANDT, and MOLGA.
    T5D03 has both key field wage type LGART and non-keyfield wage type LGAR2.
    Its key fields are MANDT, MOLGA, LGART and PLANS.

    Step by step guide to create country version report
    RESET N1
    RESET N2
    Naming convention:
    Please follow the naming convention to create the country versionreport name. Here are some examples:
    RPUWMTD0 for Germany;
    RPUWMTU0 for USA;
    RPUWMTA0 for Austria;
    HSAUWMT0 for Saudi Arabia;
    HCNUWMT0 for China; and
    HMXUWMT0 for Mexico. etc.
    Let us use RPUWMTD0 as the report name and the report shouldlook like:
    REPORT RPUWMTD0.
    DATA: BEGIN OF COMMON PART 'WAGE_TYPE_MAINT'.
    INCLUDE RPUWD1X0.
    DATA: END OF COMMON PART.
    INCLUDE RPUWMDD0. "Table definition
    INCLUDE RPUWM1D0. "Check, process and change table
    INCLUDE RPUWM2D0. "Form routines for tables
    INCLUDE RPUWM3D0. "Correction/transport
    INCLUDE RPUWM0X0. "Common subroutines -- all conutry versions
    RPUWMDD0:
    This INCLUDE contains the data definitions. Here is how it looks like:
    *-------------------------------------------------*
    * INCLUDE RPUWMDD0 *
    *-------------------------------------------------*
    TABLES T512T. "It is needed for every country version
    TABLES: T5D01, "short text of T5D01
    T5D02, "short text of T5D02
    T5D03. "short text of T5D03
    *------ Export tables for Germany ----------------*
    DATA: BEGIN OF ET5D01 OCCURS 1.
    INCLUDE STRUCTURE T5D01.
    DATA: END OF ET5D01.
    DATA: BEGIN OF ET5D02 OCCURS 1.
    INCLUDE STRUCTURE T5D02.
    DATA: ART(1),
    END OF ET5D02.
    DATA: BEGIN OF ET5D03 OCCURS 1.
    INCLUDE STRUCTURE T5D03.
    DATA: ART(1),
    END OF ET5D03.
    RPUWM1D0:
    This INCLUDE contains three FORM routines:
    *-----------------------------------------------*
    * INCLUDE RPUWM1D0 *
    *-----------------------------------------------*
    *-----------------------------------------------*
    * Process of Germany-specific tables *
    *-----------------------------------------------*
    FORM COUNTRY_TABLES. <=== Please use the same FORM name
    PERFORM PROCESS_T5D01.
    PERFORM PROCESS_T5D02_FUNC.
    PERFORM PROCESS_T5D03.
    PERFORM PROCESS_T5D03_FUNC.
    ENDFORM. "end of COUNTRY_TABLES.
    FORM CHECK_COUNTRY_WAGETYPE. <=== Please use the same FORM name
    PERFORM CHECK_T5D01.
    PERFORM CHECK_T5D02.
    PERFORM CHECK_T5D03.
    ENDFORM. "end of CHECK_COUNTRY_WAGETYPE
    FORM CHANGE_COUNTRY_TABLES. <=== Please use the same FORM name
    PERFORM CHANGE_T5D01.
    PERFORM CHANGE_T5D02.
    PERFORM CHANGE_T5D03.
    ENDFORM. "end of CHANGE_COUNTRY_TABLES
    RPUWM2D0:
    This INCLUDE contains all the FORM routines that are used in INCLUDERPUWM1D0, plus some more FORM routines:
    *---------------------------------------------
    * INCLUDE RPUWM2U0
    *---------------------------------------------
    *-Check completeness for T5D01---------------
    FORM CHECK_T5D01.
    SELECT * FROM T5D01.
    PERFORM MAKE_WAGETYPE USING T5D01-LGART.
    ENDSELECT.
    ENDFORM. "end of CHECK_T5D01
    *-Check completeness for T5D02----------------
    FORM CHECK_T5D02.
    SELECT * FROM T5D02.
    PERFORM MAKE_WAGETYPE USING T5D02-LGAR2.
    ENDSELECT.
    ENDFORM. "end of CHECK_T5D02
    *-Check completeness for T5D03----------------
    FORM CHECK_T5D03.
    SELECT * FROM T5D03.
    PERFORM MAKE_WAGETYPE USING T5D03-LGART.
    PERFORM MAKE_WAGETYPE USING T5D03-LGAR2.
    ENDSELECT.
    ENDFORM. "end of CHECK_T5D03
    *------------------------------------------------------------------*
    *-------------------------------------------------------
    * Table T5D01 process
    *-------------------------------------------------------
    FORM PROCESS_T5D01.
    LOOP AT WAGETYPE.
    SELECT * FROM T5D01 WHERE MOLGA EQ MOLGA
    AND LGART EQ WAGETYPE-OLD.
    PERFORM PROCESS_T5D01_1.
    ENDSELECT.
    ENDFORM. "end of PROCESS_T5D01
    *----------------------------------------------
    * Table T5D01 process--more
    *----------------------------------------------
    FORM PROCESS_T5D01_1.
    DATA: BEGIN OF I5D01.
    INCLUDE STRUCTURE T5D01.
    DATA: END OF I5D01.
    DATA: BEGIN OF J5D01,
    MOLGA LIKE T5D01-MOLGA,
    LGART LIKE T5D01-LGART,
    END OF J5D01.
    CASE ACTION.
    WHEN INSERT.
    I5D01 = T5D01.
    I5D01-LGART = WAGETYPE-NEW.
    SELECT * FROM T5D01 WHERE MOLGA EQ MOLGA
    AND LGART EQ I5D01-LGART.
    EXIT.
    ENDSELECT.
    T5D01 = I5D01.
    IF SY-SUBRC EQ 0.
    CLEAR PROTOKOLL.
    PROTOKOLL-TABLE = 'T5D01'.
    PERFORM PROTOKOLL_AFTER_SELECT.
    MOVE-CORRESPONDING T5D01 TO J5D01.
    PROTOKOLL-KEY = J5D01.
    CONDENSE PROTOKOLL-KEY NO-GAPS.
    APPEND PROTOKOLL.
    ELSE.
    ET5D01 = T5D01.
    APPEND ET5D01.
    ENDIF.
    WHEN DELETE.
    ET5D01 = T5D01.
    APPEND ET5D01.
    ENDCASE.
    ENDFORM. "end of PROCESS_T5D01_1
    *--------------------------------------------------------------*
    FORM CHANGE_T5D01.
    DATA: BEGIN OF J5D01,
    MOLGA LIKE T5D01-MOLGA,
    LGART LIKE T5D01-LGART,
    END OF J5D01.
    LOOP AT ET5D01.
    CLEAR PROTOKOLL.
    PROTOKOLL-TABLE = 'T5D01'.
    T5D01 = ET5D01.
    CASE ACTION.
    WHEN INSERT.
    IF TEST EQ SPACE.
    INSERT T5D01.
    PERFORM PROTOKOLL_AFTER_INSERT USING SY-SUBRC.
    ENDIF.
    PROTOKOLL-MANDT = ET5D01-MANDT.
    WHEN DELETE.
    IF TEST EQ SPACE.
    DELETE T5D01.
    PERFORM PROTOKOLL_AFTER_DELETE USING SY-SUBRC.
    ENDIF.
    WHEN CHECKC.
    IF TEST EQ SPACE.
    DELETE T5D01.
    PERFORM PROTOKOLL_AFTER_DELETE USING SY-SUBRC.
    ENDIF.
    ENDCASE.
    MOVE-CORRESPONDING T5D01 TO J5D01.
    PROTOKOLL-KEY = J5D01.
    CONDENSE PROTOKOLL-KEY NO-GAPS.
    APPEND PROTOKOLL.
    ENDLOOP.
    ENDFORM. "end of CHANGE_T5D01
    *-------------------------------------------------------
    * Table T5D02 process
    *-------------------------------------------------------
    FORM PROCESS_T5D02_FUNC.
    DATA: BEGIN OF I5D02.
    INCLUDE STRUCTURE T5D02.
    DATA: END OF I5D02.
    SELECT * FROM T5D02.
    I5D02 = T5D02.
    LOOP AT WAGETYPE WHERE OLD EQ T5D02-LGAR2.
    PERFORM PROCESS_T5D02_1_FUNC USING I5D02.
    ENDLOOP.
    ENDSELECT.
    ENDFORM. "end of PROCESS_T5D02_FUNC
    *----------------------------------------------------
    * Table T5D02 process--more
    *----------------------------------------------------
    FORM PROCESS_T5D02_1_FUNC USING I5D02 STRUCTURE T5D02
    IF I5D02-LGAR2 EQ WAGETYPE-OLD.
    CASE ACTION.
    WHEN INSERT.
    I5D02-LGAR2 = WAGETYPE-NEW.
    WHEN DELETE.
    CLEAR I5D02-LGAR2.
    WHEN CHECKC.
    CLEAR I5D02-LGAR2.
    ENDCASE.
    ENDIF.
    ET5D02 = I5D02.
    ET5D02-ART = '1'.
    APPEND ET5D02.
    ENDFORM. "end of PROCESS_T5D02_1_FUNC
    *----------------------------------------------------
    FORM CHANGE_T5D02.
    DATA: BEGIN OF J5D02,
    ORDCD LIKE T5D02-LGAR2,
    END OF J5D02.
    LOOP AT ET5UG0.
    CLEAR PROTOKOLL.
    PROTOKOLL-TABLE = 'T5D02'.
    PROTOKOLL-FUNC_CHANGE = ET5D02-ART.
    T5D02 = ET5D02.
    CASE ACTION.
    WHEN INSERT.
    PROTOKOLL-MANDT = ET5UG0-MANDT.
    ENDCASE.
    MOVE-CORRESPONDING T5D02 TO J5D02.
    PROTOKOLL-KEY = J5D02.
    CONDENSE PROTOKOLL-KEY NO-GAPS.
    APPEND PROTOKOLL.
    ENDLOOP.
    ENDFORM. "end of CHANGE_T5D02
    *------------------------------------------------------------
    * Table T5D03 process
    *------------------------------------------------------------
    FORM PROCESS_T5D03.
    LOOP AT WAGETYPE.
    SELECT * FROM T5D03 WHERE MOLGA EQ MOLGA
    AND LGART EQ WAGETYPE-OLD.
    PERFORM PROCESS_T5D03_1.
    ENDSELECT.
    ENDLOOP.
    ENDFORM. "end of PROCESS_T5D03
    *----------------------------------------------------------
    * Table T5D03 process--more
    *----------------------------------------------------------
    FORM PROCESS_T5D03_1.
    DATA: BEGIN OF I5D03.
    INCLUDE STRUCTURE T5D03.
    DATA: END OF I5D03.
    DATA: BEGIN OF J5D03,
    MODIF LIKE T5D03-MOLGA,
    LGART LIKE T5D03-LGART,
    END OF J5D03.
    CASE ACTION.
    WHEN INSERT.
    I5D03 = T5D03.
    I5D03-LGART = WAGETYPE-NEW.
    SELECT * FROM T5D03 WHERE MOLGA EQ MOLGA
    AND LGART EQ I5D03-LGART.
    EXIT.
    ENDSELECT.
    T5D03 = I5D03.
    IF SY-SUBRC EQ 0.
    CLEAR PROTOKOLL.
    PROTOKOLL-TABLE = 'T5D03'.
    PERFORM PROTOKOLL_AFTER_SELECT.
    MOVE-CORRESPONDING T5D03 TO J5D03.
    PROTOKOLL-KEY = J5D03.
    CONDENSE PROTOKOLL-KEY NO-GAPS.
    APPEND PROTOKOLL.
    ELSE.
    ET5D03 = T5D03.
    APPEND ET5D03.
    ENDIF.
    WHEN DELETE.
    ET5D03 = T5D03.
    APPEND ET5D03.
    WHEN CHECKC.
    ET5D03 = T5D03.
    APPEND ET5D03.
    ENDCASE.
    ENDFORM. "end of PROCESS_T5D03_1
    *----------------------------------------------------
    * Table T5D03 process--update
    *----------------------------------------------------
    FORM PROCESS_T5D03_FUNC.
    DATA: BEGIN OF I5D03.
    INCLUDE STRUCTURE T5D03.
    DATA: END OF I5D03.
    SELECT * FROM T5D03 WHERE MOLGA EQ MOLGA.
    I5D03 = T5D03.
    IF T5D03-LGART+0(1) BETWEEN '0' AND '9'.
    LOOP AT WAGETYPE WHERE OLD EQ T5D03-LGAR2.
    PERFORM PROCESS_T5D03_1_FUNC USING I5D03.
    ENDLOOP.
    ENDIF.
    ENDSELECT.
    IF ACTION EQ INSERT.
    LOOP AT ET5D03 WHERE MOLGA EQ MOLGA.
    IF ET5D03-LGART+0(1) BETWEEN '0' AND '9'.
    LOOP AT WAGETYPE WHERE OLD EQ ET5D03-LGAR2
    T5D03 = ET5D03.
    I5D03 = T5D03.
    PERFORM PROCESS_T5D03_1_FUNC USING I5D03.
    ENDLOOP
    ENDIF.
    ENDLOOP.
    ENDIF.
    ENDFORM. "end of PROCESS_T5D03_FUNC
    FORM PROCESS_T512C_1_FUNC USING I512C STRUCTURE T512C.
    *---------------------------------------------------------
    * Table T5D03 process-update-more
    *---------------------------------------------------------
    FORM PROCESS_T5D03_1_FUNC USING I5D03 STRUCTURE T5D03.
    IF I5D03-LGAR2 EQ WAGETYPE-OLD.
    CASE ACTION.
    WHEN INSERT.
    I5D03-LGAR2 = WAGETYPE-NEW.
    WHEN DELETE.
    CLEAR I5D03-LGAR2.
    WHEN CHECKC.
    CLEAR I5D03-LGAR2.
    ENDCASE.
    ENDIF.
    LOOP AT ET5D03 WHERE MODIF EQ MOLGA
    AND LGART EQ I5D03-LGART
    AND PLANS EQ I5D03-PLANS.
    MOVE-CORRESPONDING I5D03 TO ET5D03.
    MODIFY ET5D03.
    EXIT.
    ENDLOOP.
    IF SY-SUBRC NE 0.
    ET5D03 = I5D03.
    ET5D03-ART = '1'.
    APPEND ET5D03.
    ENDIF.
    ENDFORM. "end of PROCESS_T5D03_1_FUNC
    *----------------------------------------------------
    FORM CHANGE_T5D03.
    DATA: BEGIN OF J5D03,
    MOLGA LIKE T5D03-MOLGA,
    LGART LIKE T5D03-LGART,
    LGART LIKE T5D03-PLANS,
    END OF J5D03.
    LOOP AT ET5D03.
    CLEAR PROTOKOLL.
    PROTOKOLL-TABLE = 'T5D03'.
    PROTOKOLL-FUNC_CHANGE = ET5D03-ART.
    T5D03 = ET5D03.
    CASE ACTION.
    WHEN INSERT.
    IF TEST EQ SPACE.
    INSERT T5D03.
    PERFORM PROTOKOLL_AFTER_INSERT USING SY-SUBRC.
    ENDIF.
    PROTOKOLL-MANDT = ET5D03-MANDT.
    WHEN DELETE.
    IF TEST EQ SPACE.
    IF ET5D03-ART EQ '1'.
    PERFORM PROTOKOLL_AFTER_INSERT USING SY-SUBRC.
    ELSE.
    DELETE T5D03.
    PERFORM PROTOKOLL_AFTER_DELETE USING SY-SUBRC.
    ENDIF.
    ENDIF.
    WHEN CHECKC.
    IF TEST EQ SPACE.
    IF ET5D03-ART EQ '1'.
    ELSE.
    DELETE T5D03.
    PERFORM PROTOKOLL_AFTER_DELETE USING SY-SUBRC.
    ENDIF.
    ENDIF.
    ENDCASE.
    MOVE-CORRESPONDING T5D03 TO J5D03.
    PROTOKOLL-KEY = J5D03.
    CONDENSE PROTOKOLL-KEY NO-GAPS.
    APPEND PROTOKOLL.
    ENDLOOP.
    ENDFORM. "end of CHANGE_T5D03
    RPUWM3D0:
    This INCLUDE looks like the following:
    *--------------------------------------------------------------------
    * INCLUDE RPUWM3D0
    *--------------------------------------------------------------------
    FORM FILL_COUNTRY_KORR_ENTRIES. <== Please use the same name
    DATA: BEGIN OF J5D01,
    MOLGA LIKE T5D01-MOLGA,
    LGART LIKE T5D01-LGART,
    END OF J5D01.
    * There is no need for T5D02 because it has no key field wage type
    DATA: BEGIN OF J5D03,
    MOLGA LIKE T5D03-MOLGA,
    LGART LIKE T5D03-LGART,
    PLANS LIKE T5D03-PLANS,
    END OF J5D03.
    LOOP AT ET5D01.
    CLEAR KORR.
    MOVE-CORRESPONDING ET5D01 TO J5D01.
    KORR-KEY = J5D01.
    CONDENSE KORR-KEY NO-GAPS.
    KORR-TABLE = 'T5D01'.
    APPEND KORR.
    ENDLOOP.
    LOOP AT ET5D03.
    CHECK ET5D03-ART IS INITIAL. <==== !!!
    CLEAR KORR.
    MOVE-CORRESPONDING ET5D03 TO J5D03.
    KORR-KEY = J5D03.
    CONDENSE KORR-KEY NO-GAPS.
    KORR-TABLE = 'T5D03'.
    APPEND KORR.
    ENDLOOP.
    ENDFORM. "end of FILL_COUNTRY_KORR_ENTRIES.
    *-----------------------------------------------------
    FORM COUNTRY_CORRECTION_LINK USING KEY_STAR. <== same name please
    *---- The entries in the following table are specific determined
    * If all the key fields are used in the correction table, Then
    * The * must be cleared in the correction editor.
    CASE KORR-TABLE.
    * WHEN 'T5D01'. CLEAR KEY_STAR. "because ENDDA is not included
    * WHEN 'T5D02'. CLEAR KEY_STAR. "because there is no change in T5D02
    WHEN 'T5D03'. CLEAR KEY_STAR.
    ENDCASE.
    ENDFORM. "end of COUNTRY_CORRECTION_LINK