Quantcast
Channel: SCN: Message List - Business Content and Extractors
Viewing all articles
Browse latest Browse all 5631

Re: Enhanced field is not populating data while loading full load

$
0
0

AL,

 

  There is huge ABAP code has written for this enhancement and it is not optimized. Below is the logic used to populate data to enhanced field.

 

CMOD Enhancement Code:


FORM zjbw_reg_awd_tran  TABLES   c_t_data STRUCTURE zoxdj10029.

 

  DATA: l_t_zoxdj10029 LIKE zoxdj10029 OCCURS 0 WITH HEADER LINE.

  DATA: l_tabix LIKE sy-tabix.

  DATA : zstell TYPE stell,

         zistat TYPE istat_d,

 

         molga TYPE molga,

         relid TYPE relid,

         ipend TYPE ipend,

         rundt TYPE rundt,

         paydt TYPE pay_date,

 

         wa_rgdir TYPE pc261,

         wa_pay_result TYPE pay99_result,

         wa_rt TYPE pc207,

         wa_evp TYPE PC261,

         ws_year(4) TYPE n,

 

*         it_rt TYPE STANDARD TABLE OF pc207,

         rgdir TYPE STANDARD TABLE OF pc261,

         pay_result TYPE  pay99_result.

 

* Declarations for Payment Date

 

  TYPES : BEGIN OF ty_pa0001,

 

            pernr TYPE persno,

            begda TYPE begda,

            endda TYPE endda,

            abkrs TYPE abkrs,

            werks TYPE persa,

 

          END OF ty_pa0001.

 

  TYPES : BEGIN OF ty_pa0015,

 

            pernr TYPE persno,

            subty TYPE subty,

            begda TYPE begda,

            endda TYPE endda,

 

           END OF ty_pa0015.

 

  DATA : itab_pa0001 TYPE STANDARD TABLE OF ty_pa0001,

         wa_pa0001 LIKE LINE OF itab_pa0001.

 

  DATA : itab_lgart LIKE STANDARD TABLE OF zcm_rwds_lim,

         wa_lgart   LIKE LINE OF itab_lgart.

 

  DATA : itab_pa0015 TYPE STANDARD TABLE OF ty_pa0015,

         wa_pa0015 LIKE LINE OF itab_pa0015.

 

  DATA : itab_t549a LIKE STANDARD TABLE OF t549a,

         wa_t549a LIKE LINE OF itab_t549a,

         itab_t549q LIKE STANDARD TABLE OF t549q,

         wa_t549q LIKE LINE OF itab_t549q,

         itab_t549s LIKE STANDARD TABLE OF t549s,

         wa_t549s LIKE LINE OF itab_t549s.

 

  DATA : ws_lgart TYPE lgart.

 

*Begin of Add: 701081979: Max Attn Recommendation

STATICS: lt_t549s_buffer TYPE TABLE OF t549s,

         lt_t549q_buffer TYPE TABLE OF t549q.

*End of Add: 701081979: Max Attn Recommendation

 

* Declarations for Payment Date

 

  l_t_zoxdj10029[] = c_t_data[].

 

* Select Payroll Area and personnel area from PA0001

 

  SELECT pernr begda endda abkrs werks FROM pa0001

         INTO CORRESPONDING FIELDS OF TABLE itab_pa0001

         FOR ALL ENTRIES IN l_t_zoxdj10029

         WHERE pernr = l_t_zoxdj10029-pernr.

 

  IF sy-subrc = 0.

 

    SORT itab_pa0001 BY pernr.

 

  ENDIF.

 

* Select Wage Type details from table ZCM_RWDS_LIM

 

  SELECT * FROM zcm_rwds_lim INTO TABLE itab_lgart.

 

 

* Select  Additional payment details from PA0015.

 

  SELECT pernr subty begda endda FROM pa0015

         INTO CORRESPONDING FIELDS OF TABLE itab_pa0015

         FOR  ALL ENTRIES IN l_t_zoxdj10029

         WHERE pernr = l_t_zoxdj10029-pernr

         AND   begda = l_t_zoxdj10029-paydt

         AND   endda = l_t_zoxdj10029-paydt.

 

  IF sy-subrc = 0.

 

    SORT itab_pa0015 BY pernr.

 

  ENDIF.

 

*SELECT DATA FROM T549A , T549Q AND T549S

 

  SELECT * FROM t549a INTO CORRESPONDING FIELDS OF TABLE itab_t549a.

 

*Begin of Add: 701081979: Max Attn Recommendation

IF lt_t549q_buffer[] IS INITIAL.

*End of Add: 701081979: Max Attn Recommendation

  SELECT * FROM t549q INTO CORRESPONDING FIELDS OF TABLE itab_t549q.

*Begin of Add: 701081979: Max Attn Recommendation

  IF sy-subrc = 0.

    lt_t549q_buffer[] = itab_t549q[].

  ENDIF.

ENDIF.

*End of Add: 701081979: Max Attn Recommendation

 

*Begin of Add: 701081979: Max Attn Recommendation

IF lt_t549s_buffer[] IS INITIAL.

*End of Add: 701081979: Max Attn Recommendation

  SELECT * FROM t549s INTO CORRESPONDING FIELDS OF TABLE itab_t549s.

*Begin of Add: 701081979: Max Attn Recommendation

  IF sy-subrc = 0.

    lt_t549s_buffer[] = itab_t549s[].

  ENDIF.

ENDIF.

*End of Add: 701081979: Max Attn Recommendation

 

 

  LOOP AT l_t_zoxdj10029.

 

    l_tabix = sy-tabix.

 

* Payment Date

 

* Start - Get the Payroll Area and personnel area

 

    IF l_t_zoxdj10029-preas EQ '01' OR l_t_zoxdj10029-preas EQ '02' OR l_t_zoxdj10029-preas EQ '04'.

 

      LOOP AT itab_pa0001 INTO wa_pa0001 WHERE pernr = l_t_zoxdj10029-pernr

                                         AND      begda <= l_t_zoxdj10029-begda

                                         AND     endda >= l_t_zoxdj10029-begda.

 

        EXIT.

 

      ENDLOOP.

 

* End - Get the Payroll Area and personnel area

 

* Start - Read the Wage type from table ZCM_RWDS_LIM

 

      READ TABLE itab_lgart INTO wa_lgart WITH KEY molga = l_t_zoxdj10029-molga

                                                   mrcid = '****'

                                                   werks = wa_pa0001-werks

                                                   btrtl = '****'

                                                   awdtyp = l_t_zoxdj10029-awdtyp

                                                   endda = '99991231'.

 

      IF sy-subrc = 0.

 

        ws_lgart = wa_lgart-lgart.

 

      ELSE.

 

        READ TABLE itab_lgart INTO wa_lgart WITH KEY   molga = l_t_zoxdj10029-molga

                                                       mrcid = '****'

                                                       werks = '****'

                                                       btrtl = '****'

                                                       awdtyp = l_t_zoxdj10029-awdtyp

                                                       endda = '99991231'.

        IF sy-subrc = 0.

 

          ws_lgart = wa_lgart-lgart.

 

 

        ENDIF.

 

 

 

      ENDIF.

 

* END - Read the Wage type from table ZCM_RWDS_LIM

 

* Check if PA0015 record exists for the PERNR and Wage type found above - if not do not read payroll results.

 

      IF NOT l_t_zoxdj10029-paydt IS INITIAL.

 

        READ TABLE itab_pa0015 INTO wa_pa0015 WITH KEY pernr = l_t_zoxdj10029-pernr

                                                       subty = ws_lgart

                                                       begda = l_t_zoxdj10029-paydt

                                                       endda = l_t_zoxdj10029-paydt.

 

        IF sy-subrc = 0.

 

          CALL FUNCTION 'PYXX_GET_RELID_FROM_PERNR'

            EXPORTING

              employee                    = l_t_zoxdj10029-pernr

            IMPORTING

              relid                       = relid

              molga                       = molga

            EXCEPTIONS

              error_reading_infotype_0001 = 1

              error_reading_molga         = 2

              error_reading_relid         = 3

              OTHERS                      = 4.

 

          IF sy-subrc <> 0.

          ENDIF.

 

*       Read Payroll Results

          CALL FUNCTION 'CU_READ_RGDIR'

            EXPORTING

              persnr          = l_t_zoxdj10029-pernr

            IMPORTING

              molga           = molga

            TABLES

              in_rgdir        = rgdir

            EXCEPTIONS

              no_record_found = 1

              OTHERS          = 2.

 

          IF sy-subrc EQ 0.

 

            READ TABLE rgdir INTO wa_rgdir

            WITH KEY srtza = 'O' fpend = l_t_zoxdj10029-paydt.

 

            IF sy-subrc EQ 0.

 

              CALL FUNCTION 'PYXX_READ_PAYROLL_RESULT'

                EXPORTING

                  clusterid                    = relid

                  employeenumber               = l_t_zoxdj10029-pernr

                  sequencenumber               = wa_rgdir-seqnr

                  read_only_international      = 'X'

                CHANGING

                  payroll_result               = pay_result

                EXCEPTIONS

                  illegal_isocode_or_clusterid = 1

                  error_generating_import      = 2

                  import_mismatch_error        = 3

                  subpool_dir_full             = 4

                  no_read_authority            = 5

                  no_record_found              = 6

                  versions_do_not_match        = 7

                  error_reading_archive        = 8

                  error_reading_relid          = 9

                  OTHERS                       = 10.

 

              IF sy-subrc EQ 0.

 

                READ TABLE PAY_RESULT-INTER-RT INTO wa_rt WITH KEY lgart = ws_lgart.

 

                IF sy-subrc EQ 0.

 

                  ipend = wa_rgdir-ipend.

                  rundt = wa_rgdir-rundt.

                  paydt = wa_rgdir-paydt.

 

                ENDIF.

 

 

              ENDIF.

 

 

 

             ENDIF.

 

 

 

         IF PAYDT IS INITIAL.

 

              READ TABLE rgdir INTO wa_rgdir

              WITH KEY srtza = 'P' fpend = l_t_zoxdj10029-paydt.

 

              IF sy-subrc = 0.

 

                CALL FUNCTION 'PYXX_READ_PAYROLL_RESULT'

                  EXPORTING

                    clusterid                    = relid

                    employeenumber               = l_t_zoxdj10029-pernr

                    sequencenumber               = wa_rgdir-seqnr

                    read_only_international      = 'X'

                  CHANGING

                    payroll_result               = pay_result

                  EXCEPTIONS

                    illegal_isocode_or_clusterid = 1

                    error_generating_import      = 2

                    import_mismatch_error        = 3

                    subpool_dir_full             = 4

                    no_read_authority            = 5

                    no_record_found              = 6

                    versions_do_not_match        = 7

                    error_reading_archive        = 8

                    error_reading_relid          = 9

                    OTHERS                       = 10.

 

                IF sy-subrc EQ 0.

 

 

                READ TABLE PAY_RESULT-INTER-RT INTO wa_rt WITH KEY lgart = ws_lgart.

 

                  IF sy-subrc EQ 0.

 

                  ipend = wa_rgdir-ipend.

                  rundt = wa_rgdir-rundt.

                  paydt = wa_rgdir-paydt.

 

                  ENDIF.

 

                ENDIF.

 

 

 

     ENDIF.

 

    ENDIF.

 

     IF PAYDT IS INITIAL.

 

                READ TABLE rgdir INTO wa_rgdir

                WITH KEY srtza = 'A' fpend = l_t_zoxdj10029-paydt.

 

                IF sy-subrc = 0.

 

                  CALL FUNCTION 'PYXX_READ_PAYROLL_RESULT'

                    EXPORTING

                      clusterid                    = relid

                      employeenumber               = l_t_zoxdj10029-pernr

                      sequencenumber               = wa_rgdir-seqnr

                      read_only_international      = 'X'

                    CHANGING

                      payroll_result               = pay_result

                    EXCEPTIONS

                      illegal_isocode_or_clusterid = 1

                      error_generating_import      = 2

                      import_mismatch_error        = 3

                      subpool_dir_full             = 4

                      no_read_authority            = 5

                      no_record_found              = 6

                      versions_do_not_match        = 7

                      error_reading_archive        = 8

                      error_reading_relid          = 9

                      OTHERS                       = 10.

 

                  IF sy-subrc EQ 0.

 

 

           READ TABLE PAY_RESULT-INTER-RT INTO wa_rt WITH KEY lgart = ws_lgart.

 

                    IF sy-subrc EQ 0.

 

 

                  ipend = wa_rgdir-ipend.

                  rundt = wa_rgdir-rundt.

                  paydt = wa_rgdir-paydt.

 

 

                    ENDIF.

 

                  ENDIF.

 

           ENDIF.

 

        ENDIF.

 

ENDIF.

 

            IF NOT ipend IS INITIAL .

 

              IF ipend EQ l_t_zoxdj10029-paydt.

 

         l_t_zoxdj10029-ZZPAYDT = paydt.

 

         MODIFY l_t_zoxdj10029 INDEX l_tabix.

 

              ELSE.

 

                ws_year = ipend(4).

 

                READ TABLE itab_t549a INTO wa_t549a WITH KEY abkrs = wa_pa0001-abkrs.

 

                IF sy-subrc = 0.

 

                  READ TABLE itab_t549q INTO wa_t549q WITH KEY permo = wa_t549a-permo

                                                               pabrj = ws_year

                                                               endda = ipend.

 

                  IF sy-subrc = 0.

 

                    READ TABLE itab_t549s INTO wa_t549s WITH KEY datmo = wa_t549a-datmo

                                                                 permo = wa_t549a-permo

                                                                 pabrj = ws_year

                                                                 pabrp = wa_t549q-pabrp

                                                                 datid = '01'.

         l_t_zoxdj10029-ZZPAYDT = wa_t549s-pdate.

         MODIFY l_t_zoxdj10029 INDEX l_tabix.

 

                  ENDIF.

 

                ENDIF.

 

 

              ENDIF.

 

            ENDIF.

 

 

 

          ENDIF. " End of Read RGDIR table

 

 

 

          CLEAR: wa_rgdir,

                 wa_pay_result,

                 wa_rt,

 

                rgdir[].

 

 

        ELSE.

 

          CONTINUE.

 

        ENDIF.

 

      ENDIF.

 

    CLEAR : wa_pa0001 , wa_lgart , wa_pa0015 .

    CLEAR : WA_T549A , WA_T549Q , WA_T549S.

    CLEAR : WS_LGART , MOLGA  , ipend , rundt , paydt.

 

  ENDLOOP.

 

 

  c_t_data[] = l_t_zoxdj10029[].

 

ENDFORM.                    " ZJBW_REG_AWD_TRAN

 

Thanks,

Prasad


Viewing all articles
Browse latest Browse all 5631

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>