SAP HCM ABAP PRESTAMOS

From SapWiki
Revision as of 20:56, 29 March 2020 by WikiSysop (talk | contribs) (Created page with "*cl_hrpa_loan_computations=>compute_estimated_end_of_loan *cl_hrpa_loan_computations=>read_payments_for_loan_id *cl_hrpa_loan_computations=>compute_repayment_plan == EJEMP...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
  • cl_hrpa_loan_computations=>compute_estimated_end_of_loan
  • cl_hrpa_loan_computations=>read_payments_for_loan_id
  • cl_hrpa_loan_computations=>compute_repayment_plan

EJEMPLO 01

*&---------------------------------------------------------------------*
*& Report  Y_TEST_LOAN
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT  y_test_loan.
TABLES pernr.
INFOTYPES: 0045.
DATA instance    TYPE REF TO cl_hrpa_loan_computations.
DATA gd_pclo_id TYPE pclo_id.
DATA gd_estimated_end_of_loan TYPE d.
DATA  data_ref   TYPE REF TO data.
DATA gd_message_handler TYPE REF TO if_hrpa_message_handler.
data gt_pagos type PCLO_PAYMENTS_TAB.
data gt_P0078_TAB type P0078_TAB.
data: gt_PCLO_REPAY_TAB type PCLO_REPAY_TAB,
     gt_PCLO_LOAN_CHANGES_TAB type PCLO_LOAN_CHANGES_TAB.
* create dummy message handler
 data dummy_handler type ref to cl_hrpa_dummy_message_handler.
 create object dummy_handler.
 message_handler = dummy_handler.
START-OF-SELECTION.
GET pernr.
 PROVIDE * FROM p0045 BETWEEN pn-begda AND pn-endda.
   CALL METHOD cl_hrpa_loan_computations=>get_loan_id_from_p0045
     EXPORTING
       p0045   = p0045
     RECEIVING
       loan_id = gd_pclo_id.
* CALCULO DE FECHA FINAL PRESTAMO
   TRY.
  CALL METHOD cl_hrpa_loan_computations=>compute_estimated_end_of_loan
       EXPORTING
         tclas                 = 'A'
         loan_id               = gd_pclo_id
         message_handler       = dummy_handler
       RECEIVING
         estimated_end_of_loan = gd_estimated_end_of_loan.
   ENDTRY.
* PAGOS DE PRESTAMO
TRY.
CALL METHOD cl_hrpa_loan_computations=>read_payments_for_loan_id
  EXPORTING
    tclas         = 'A'
    loan_id       = gd_pclo_id
*     ZAHLA         = '*'
*     SPRPS         = '*'
*     BEGDA         = LOW_DATE
*     ENDDA         = HIGH_DATE
*     NO_AUTH_CHECK = FALSE
  IMPORTING
    PAYMENTS_TAB  = gt_pagos
*     DATA_EXISTS   =
*     MISSING_AUTH  =
    .
 CATCH CX_HRPA_VIOLATED_ASSERTION .
ENDTRY.


TRY.
CALL METHOD cl_hrpa_loan_computations=>read_p0078_for_loan_id
 EXPORTING
   tclas         = 'A'
   loan_id       = gd_pclo_id
*    ZAHLA         = '*'
*    SPRPS         = '*'
*    BEGDA         = LOW_DATE
*    ENDDA         = HIGH_DATE
*    NO_AUTH_CHECK = FALSE
 IMPORTING
   P0078_TAB     = gt_P0078_TAB
*    DATA_EXISTS   =
*    MISSING_AUTH  =
   .
 CATCH CX_HRPA_VIOLATED_ASSERTION .
ENDTRY.
* GENERAR PLAN DE AMORTIZACION
TRY.
CALL METHOD cl_hrpa_loan_computations=>compute_repayment_plan
 EXPORTING
   tclas           = 'A'
   loan_id         = gd_pclo_id
*    NEW_CURRENCY    =
   message_handler = dummy_handler
 IMPORTING
   REPAYMENT_PLAN  =  gt_PCLO_REPAY_TAB
   LOAN_CHANGES    =  gt_PCLO_LOAN_CHANGES_TAB
*    IS_OK           =
   .
 CATCH CX_HRPA_VIOLATED_ASSERTION .
ENDTRY.
endPROVIDE.
END-OF-SELECTION.

Calculo fecha fin de préstamo

FORM calcula_fecha_fin using p0045 type p0045 
                    CHANGING p_endda.
  TYPES: BEGIN OF tp_dynfi,
           initf TYPE c,                " initialize if marked
           key   LIKE sy-tabix,
           darbt LIKE p0078-betrg,
           dbtcu LIKE p0078-btrcu,      "currency for repayment plan
           rate  LIKE p0045-anrte,
           ratec LIKE p0045-dbtcu,
           tilbg LIKE p0045-tilbg,
           zahld LIKE p0078-zahld,
           vari  TYPE disvariant,
         END   OF tp_dynfi.

  DATA ps_dynfi TYPE tp_dynfi.
  DATA: lt_p0078 TYPE p0078 OCCURS 0 WITH HEADER LINE.
  DATA lt_p0045 TYPE TABLE OF p0045 WITH HEADER LINE.

  SELECT * INTO CORRESPONDING FIELDS OF TABLE lt_p0078 FROM pa0078 WHERE pernr = p0045-pernr AND
                                                 dlart = p0045-dlart AND
                                                 objid = p0045-objps.

  ps_dynfi-rate = p0045-anrte.
  ps_dynfi-ratec = p0045-dbtcu.
  ps_dynfi-tilbg = p0045-begda.
  ps_dynfi-dbtcu = p0045-dbtcu.

  CALL FUNCTION 'PCLO_BUILD_REPAYMENT_PLAN'
    EXPORTING
      ps_p0045    = p0045
      pf_fday     = p0045-begda
      pf_lday     = p0045-endda    ""'99991231'
      pt_paym     = lt_p0078[]
      pf_rate     = ps_dynfi-rate
      pf_ratecurr = ps_dynfi-ratec                          "GWY534928
      pf_tilbg    = ps_dynfi-tilbg
      pf_curr     = ps_dynfi-dbtcu                    "GWY428607-5
      pf_variant  = ps_dynfi-vari
      pf_nodisp   = '1'
    IMPORTING
*     ps_paper    = gs_paper
      pf_dlend    = p0045-dlend
*     pf_effin    = gf_effin
      pt_plan     = gt_pclo_repay_tab.   "amounts have currency pf_curr

  p_endda = p0045-dlend.

ENDFORM.                    "CALCULa_fecha_fin