jueves, 25 de enero de 2018

Reportes desde el Cluster de Nomina (Get Payroll)

Dynpro del reporte


*&---------------------------------------------------------------------*
REPORT ZHCM_RPT MESSAGE-ID SY.
*----------------------------------------------------------------------*
* DEFINICIÓN DE INFOTIPOS
*----------------------------------------------------------------------*
INFOTYPES0001,0002,0006,0008,0014,0185.
*----------------------------------------------------------------------*
* DEFINICIÓN DE TABLAS
*----------------------------------------------------------------------*
TABLESPERNR,PYORGSCREENPYTIMESCREEN.         
NODESPAYROLL TYPE PAY99_RESULT.                           
  *----------------------------------------------------------------------*
* DEFINICIÓN DE VARIABLES
*----------------------------------------------------------------------*
DATAGV_MOLGA TYPE MOLGA. * PAYROLL
DATA MYLIST LIKE PC261 OCCURS .  
DATA WA_MYLIST LIKE LINE OF MYLIST.  
DATA PAY TYPE REF TO CL_PAY.  "GLOBAL CLASS
DATAWA_RT    LIKE LINE OF PAYROLL-INTER-RT,
      IT_VERSC TYPE PC202 OCCURS WITH HEADER LINE,
      IT_RT    TYPE PC207 OCCURS WITH HEADER LINE,
      IT_BT    TYPE PC209 OCCURS WITH HEADER LINE,
      IT_EVP   TYPE PC261 OCCURS WITH HEADER LINE,
      IT_V0    TYPE PC20C OCCURS WITH HEADER LINE.
*
DATABEGIN OF GT_CLUSTER OCCURS 0,
        SEQNR  TYPE CDSEQ"Nº de secuencia
        EVP   TYPE PC261,
        VERSC TYPE PC202,
        RT    TYPE STANDARD TABLE OF PC207,
      END OF   GT_CLUSTER.
DATALV_INPER LIKE PC261-INPER. *-----------------------------------------------------------------------
* DEFINICION DE INCLUDES
*-----------------------------------------------------------------------
INCLUDE SBAL_CONSTANTS.          "STANDAR
INCLUDE ZHCM_RPT_SIN_ZOOESTE_ALV.  
*-----------------------------------------------------------------------
INITIALIZATION.
*-----------------------------------------------------------------------
START-OF-SELECTION.
*-----------------------------------------------------------------------
  LV_INPER(4)   PYABRJ0.
  LV_INPER+4(2PYABRP0.
  "PN_PAPER
  PN_PAPER-PABRJ PYABRJ0.
  PN_PAPER-PABRP PYABRP0.
  "PNP - PY-
  PNPPABRJ PNPDISPJ PYABRJ1 PYABRJ0.
  PNPPABRP PNPDISPP  PYABRP1 PYABRP0.
  PNPBEGDA PNPBEGPS PNPDISBD PYBEGDA.
  PNPENDDA PNPENDPS PNPDISED PYENDDA.
  "PN
  PN-PAPER-PABRJ PN-PABRJ PYABRJ0.
  PN-PAPER-PABRP PN-PABRP PYABRP0.
  PN-BEGDA PN-BEGPS PN-BEGMC PYBEGDA.
  PN-ENDDA PN-ENDPS PN-ENDMC PYENDDA.
  "Area de Nómina
  PYABKRS-SIGN 'I'.
  PYABKRS-OPTION 'EQ'.
  PYABKRS-LOW PYXABKR.
  PYABKRS-HIGH ''.
  APPEND PYABKRS.

*-----------------------------------------------------------------------
  GET PERNR.

*-----------------------------------------------------------------------
  CLEAR MYLISTREFRESH MYLIST.
  CLEARGT_CLUSTERREFRESH GT_CLUSTER[].
  "Leo RGDIR
  CREATE OBJECT PAY.
  CALL METHOD PAY->READ_RESULT
    IMPORTING
      LIST MYLIST.
  "Filtro RGDIR
  DELETE MYLIST WHERE FPPER NE LV_INPER.
  DELETE MYLIST WHERE OCRSN NE SPACE.
  DELETE MYLIST WHERE SRTZA NE 'A'."Actual
  "Cargo RGDIR
  CALL METHOD PAY->WRITE_RESULT
    EXPORTING
      LIST MYLIST.

*-----------------------------------------------------------------------
  GET PERNR LATE.
 
*-----------------------------------------------------------------------
  RP-PROVIDE-FROM-LAST P0001 SPACE PYBEGDA PYENDDA.
  RP-PROVIDE-FROM-LAST P0002 SPACE PYBEGDA PYENDDA.
  RP-PROVIDE-FROM-LAST P0006 '1'   PYBEGDA PYENDDA.
  RP-PROVIDE-FROM-LAST P0008 SPACE PYBEGDA PYENDDA.
  RP-PROVIDE-FROM-LAST P0185 SPACE PYBEGDA PYENDDA.

 
  PERFORM GET_MOLGA USING PERNR-PERNR GV_MOLGA.

  LOOP AT GT_CLUSTER.
    CLEARIT_VERSC[]IT_EVP[]IT_V0[]IT_RT[]IT_BT[].
    MOVE-CORRESPONDING GT_CLUSTER-VERSC TO IT_VERSC.
    APPEND LINES OF GT_CLUSTER-RT TO IT_RT.
*
    I_OUTPUT_LIST-PERNR PERNR-PERNR.
    READ TABLE P0014 WITH KEY LGART '2S22'.
    IF SY-SUBRC EQ ).
      IF P0014-ANZHL EQ ).
        I_OUTPUT_LIST-AFILI 'S'.
      ELSE.
        I_OUTPUT_LIST-AFILI 'N'.
      ENDIF.
    ELSE.
      I_OUTPUT_LIST-AFILI 'N'.
    ENDIF.
 

    READ TABLE IT_RT WITH KEY LGART '/101'.
    IF SY-SUBRC EQ ).
      I_OUTPUT_LIST-TO_RE IT_RT-BETRG.
    ENDIF.

 
    READ TABLE IT_RT WITH KEY LGART '/106'.
    IF SY-SUBRC EQ ).
      I_OUTPUT_LIST-TO_IM IT_RT-BETRG.
    ENDIF.

 
    READ TABLE IT_RT WITH KEY LGART '9000'.
    IF SY-SUBRC EQ ).
      I_OUTPUT_LIST-JO_HO IT_RT-ANZHL.
    ENDIF.
    I_OUTPUT_LIST-TO_AC 0.
    LOOP AT IT_RT WHERE LGART EQ '2S05'
                     OR LGART EQ '2S22'
                     OR LGART EQ '2S23'.
      I_OUTPUT_LIST-TO_AC I_OUTPUT_LIST-TO_AC + IT_RT-BETRG.
    ENDLOOP.
    I_OUTPUT_LIST-WAERS 'USD'.
    APPEND I_OUTPUT_LIST.
  ENDLOOP.
*
*-----------------------------------------------------------------------
  GET PAYROLL.
 
*-----------------------------------------------------------------------
  CLEARIT_VERSC[]IT_EVP[]IT_V0[]IT_RT[]IT_BT[].
*
  MOVE-CORRESPONDING PAYROLL-INTER-VERSC TO IT_VERSC.
  MOVE-CORRESPONDING PAYROLL-EVP TO IT_EVP.
*
  LOOP AT PAYROLL-INTER-RT INTO IT_RT
    WHERE LGART EQ '/101'
       OR LGART EQ '2S22'
       OR LGART EQ '9000'
       OR LGART EQ '2S05'
       OR LGART EQ '2S23'
       OR LGART EQ '/106'.
    APPEND IT_RT.
  ENDLOOP.
* Paso los datos a la tabla interna
  GT_CLUSTER-SEQNR PAYROLL-EVP-SEQNR.
  MOVE-CORRESPONDING IT_EVP TO GT_CLUSTER-EVP.
  MOVE-CORRESPONDING IT_VERSC TO GT_CLUSTER-VERSC.
  APPEND LINES OF IT_RT TO GT_CLUSTER-RT.
  APPEND GT_CLUSTER.
 
*-----------------------------------------------------------------------
END-OF-SELECTION.
*-----------------------------------------------------------------------
  PERFORM MUESTRA_ALV.

*-----------------------------------------------------------------------
*Forms
*-----------------------------------------------------------------------
FORM GET_MOLGA USING PERNR TYPE PERNR_D MOLGA TYPE MOLGA.
...
ENDFORM.
*-----------------------------------------------------------------------


Definicion de la clase de reporte de Nómina

 y como siempre les comento, si hay otra forma mas facil me avisan