0% encontró este documento útil (0 votos)
26 vistas22 páginas

Clase 2

Este documento describe una clase llamada ZCL_BCM_ESTADO_PAGOS que se utiliza para cargar estados de pagos. La clase contiene atributos y métodos para procesar respuestas de pagos de bancos como Bancolombia y Bogotá.

Cargado por

Luis Meneses
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
26 vistas22 páginas

Clase 2

Este documento describe una clase llamada ZCL_BCM_ESTADO_PAGOS que se utiliza para cargar estados de pagos. La clase contiene atributos y métodos para procesar respuestas de pagos de bancos como Bancolombia y Bogotá.

Cargado por

Luis Meneses
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 22

ZCL_BCM_ESTADO_PAGOS Release 750 Sistema CB1

_______________________________________________________________________________________________

Clase: ZCL_BCM_ESTADO_PAGOS
Status: Activo

Propiedades
Descripción: Carga estado pagos
Creac.instancia: Público
Final
No liberado
Cálculo de coma fija
Categoría: Tipo de objeto general
Clase desarrollo: ZCCB_BCM
Idioma maestro: ES
Creado por: 1061800176
Creado el: 10.11.2023

Atributos
Atributos públicos
Atributo Cl. Descripción
Tipo ref. Val.inicial
____________________________________________________________________________
GT_BAPIRET Stat. Tabla con informaciones de retorno BAPI
TIPO BAPIRETTAB
GV_DUMMY Stat.
TIPO C
L_PROXY_DATA Stat.
TIPO BNK_CPAY_ORD_NOTIF_ASYNC
NOMBRE_ARCHIVO Stat.
TIPO STRING
NIT_EMPRESA Stat.
TIPO STRING
SECUENCIA Stat.
TIPO STRING
CANTIDAD_REG Stat.
TIPO STRING
VALOR_TOTAL Stat.
TIPO STRING
MENSAJE Stat.
TIPO STRING
GS_REGUT Stat. Datos de gestión TemSe
TIPO REGUT
GS_BATCH_HEADER Stat.
TIPO BNK_BATCH_HEADER
GT_DETALLE_BANCOLOMBIA Stat. Respuesta pagos PAB
TIPO ZTTBCM_RTA_BANCOLOMBIA

_______________________________________________________________________________________________
05.03.2024 11:42:37 1
ZCL_BCM_ESTADO_PAGOS Release 750 Sistema CB1
_______________________________________________________________________________________________

Atributo Cl. Descripción


Tipo ref. Val.inicial
____________________________________________________________________________
GT_DETALLE Stat. Detalle pagos para respuesta
TIPO ZTTBCM_DETALLE_PAGOS
GT_DETALLE_BOGOTA Stat. Formato respuesta disfon
TIPO ZTTBCM_RTA_BOGOTA_DET
GS_CAB_BOGOTA Stat. Estructura formato respuesta DISFON cabecera
TIPO ZSTBCM_RTA_BOGOTA_CAB
____________________________________________________________________________

Métodos
Métodos públicos
RESPUESTA_BANCOLOMBIA
Descripción: Craga estados bancolombia
Método estático
Parámetros import.
I_FILENAME TYPE STRING
IT_CONTENIDO TYPE ZTT_RESP_BANCOLOMBIA (Respuesta pagos Bancolombia)
method RESPUESTA_BANCOLOMBIA.
DATA: lv_tipo TYPE c LENGTH 1,
l_feh TYPE c LENGTH 1 VALUE 'X',
lo_cpon TYPE REF TO ii_bnk_cpay_ord_notification,
"cg_proxy_class TYPE REF TO seoclname,
lv_result_text TYPE string,
lx_ai_application_fault TYPE REF TO cx_ai_application_fault,
lx_msg_fault TYPE REF TO cx_sapplco_standard_msg_fault,
lx_transformation_error TYPE REF TO cx_transformation_error,
lx_proxy_fault TYPE REF TO cx_proxy_fault,
lt_excep TYPE sapplco_exchange_log_data_tab,
ls_sapplco_exchange_log_data TYPE sapplco_exchange_log_data,
ls_bapiret TYPE LINE OF bapirettab,
lt_bapiret2 TYPE bapirettab,
l_par1 TYPE sy-msgv1,
l_par2 TYPE sy-msgv2,
l_par3 TYPE sy-msgv3,
l_par4 TYPE sy-msgv4,
l_dummy_proxy,
l_subrc TYPE sy-subrc.
STATICS:
BEGIN OF l_string_proxy,
part1 TYPE symsgv,
part2 TYPE symsgv,
part3 TYPE symsgv,
part4 TYPE symsgv,
END OF l_string_proxy.
CONSTANTS: cg_ob TYPE c LENGTH 1 VALUE '(',
cg_cb TYPE c LENGTH 1 VALUE ')'.
CONSTANTS cg_proxy_class TYPE seoclname VALUE 'CL_BNK_CPAY_ORD_NOTIFICATION'.
***---Identificar tipo de archivo de respuesta ---***

_______________________________________________________________________________________________
05.03.2024 11:42:37 2
ZCL_BCM_ESTADO_PAGOS Release 750 Sistema CB1
_______________________________________________________________________________________________

IF i_filename CS 'ACUS'. "Acuse de recibido


lv_tipo = 'A'.
ELSEIF i_filename CS 'RTA'. "Estado pagos
lv_tipo = 'R'.
ENDIF.
****---Selección de información de acuerdo con el tipo de archivo de respuesta ---***
IF lv_tipo = 'A'.
zcl_bcm_estado_pagos=>acuse_recibido_bancolombia( EXPORTING it_contenido =
it_contenido
i_filename =
i_filename ).
ELSEIF lv_tipo = 'R'.
zcl_bcm_estado_pagos=>rta_pagos_bancolombia( EXPORTING it_contenido =
it_contenido
i_filename =
i_filename ).
ENDIF.
***---Inicialización log de mensajes carga de estados ---***
MESSAGE s036(bnk_com_intf) WITH '******' INTO gv_dummy. "#EC MG_PAR_CNT
CALL METHOD cl_bnk_file_communication=>appl_log
CHANGING
ct_return = gt_bapiret.
***---Estado general del lote ---***
zcl_bcm_estado_pagos=>estado_lote( EXPORTING i_tipo = lv_tipo ).
***---Estado detalle pagos respuesta carga ---***
zcl_bcm_estado_pagos=>detalle_lote_bancolombia( EXPORTING i_tipo = lv_tipo ).
***---Actualización de estados en el monitor ---***
*-- Switch-Off FEH flag
EXPORT feh_switch = l_feh TO MEMORY ID 'BNK'.
*
CREATE OBJECT lo_cpon TYPE (cg_proxy_class).
TRY.
CALL METHOD lo_cpon->execute_asynchronous
EXPORTING
input = l_proxy_data.
CATCH cx_sapplco_standard_msg_fault INTO lx_msg_fault.
lt_excep = lx_msg_fault->standard-fault_detail.
LOOP AT lt_excep INTO ls_sapplco_exchange_log_data.
*
MOVE: 'E' TO ls_bapiret-type,
ls_sapplco_exchange_log_data-text TO ls_bapiret-message.
SPLIT ls_sapplco_exchange_log_data-id AT cg_ob INTO: ls_bapiret-number
ls_bapiret-id.
REPLACE ALL OCCURRENCES OF cg_cb IN ls_bapiret-id WITH ``.
* APPEND LS_BAPIRET TO ET_BAPIRET2.
MOVE ls_bapiret-message TO l_string_proxy.
l_par1 = l_string_proxy-part1.
l_par2 = l_string_proxy-part2.
l_par3 = l_string_proxy-part3.
l_par4 = l_string_proxy-part4.
MESSAGE e000(bnk_com_intf) WITH l_par1 l_par2 l_par3 l_par4
INTO l_dummy_proxy. "#EC MG_PAR_CNT
CALL METHOD cl_bnk_file_communication=>appl_log
CHANGING

_______________________________________________________________________________________________
05.03.2024 11:42:37 3
ZCL_BCM_ESTADO_PAGOS Release 750 Sistema CB1
_______________________________________________________________________________________________

ct_return = lt_bapiret2.
ENDLOOP.
* RAISE proxy_fault.
CATCH cx_ai_application_fault INTO lx_ai_application_fault.
lv_result_text = lx_ai_application_fault->if_message~get_text( ).
MOVE lv_result_text TO l_string_proxy.
SHIFT l_string_proxy LEFT DELETING LEADING space.
l_par1 = l_string_proxy-part1.
l_par2 = l_string_proxy-part2.
l_par3 = l_string_proxy-part3.
l_par4 = l_string_proxy-part4.
MESSAGE e000(bnk_com_intf) WITH l_par1 l_par2 l_par3 l_par4
INTO l_dummy_proxy. "#EC MG_PAR_CNT
CALL METHOD cl_bnk_file_communication=>appl_log
CHANGING
ct_return = lt_bapiret2.
" RAISE proxy_fault.
ENDTRY.
*--- Success message which contains the batch ID
ls_bapiret-type = sy-msgty.
ls_bapiret-id = sy-msgid.
ls_bapiret-number = sy-msgno.
ls_bapiret-message_v1 = sy-msgv1.
ls_bapiret-message_v2 = sy-msgv2.
ls_bapiret-message_v3 = sy-msgv3.
ls_bapiret-message_v4 = sy-msgv4.
APPEND ls_bapiret TO lt_bapiret2.
IF sy-subrc <> 0.
l_subrc = 5.
"RAISE proxy_error.
ELSE.
*-- add messages to log
LOOP AT lt_bapiret2 INTO ls_bapiret.
MESSAGE ID ls_bapiret-id TYPE ls_bapiret-type NUMBER ls_bapiret-number WITH
ls_bapiret-message_v1
ls_bapiret-message_v2 ls_bapiret-message_v3 ls_bapiret-message_v4 INTO
gv_dummy. "#EC MG_PAR_CNT
CALL METHOD cl_bnk_file_communication=>appl_log
CHANGING
ct_return = gt_bapiret.
ENDLOOP.
ENDIF.
COMMIT WORK.
CLEAR:
gt_bapiret,gv_dummy,l_proxy_data,nombre_archivo,nit_empresa,secuencia,cantidad_reg,
valor_total,mensaje,gs_regut,gs_batch_header,gt_detalle_bancolombia,gt_detalle.
endmethod.

RESPUESTA_BANCO_BOGOTA
Descripción: Craga estados Banco de Bogotá
Método estático
Parámetros import.
I_FILENAME TYPE STRING

_______________________________________________________________________________________________
05.03.2024 11:42:37 4
ZCL_BCM_ESTADO_PAGOS Release 750 Sistema CB1
_______________________________________________________________________________________________

IT_CONTENIDO TYPE ZTT_RESP_BANCOLOMBIA (Respuesta pagos Bancolombia)


METHOD respuesta_banco_bogota.
DATA: lv_tipo TYPE c LENGTH 1,
l_feh TYPE c LENGTH 1 VALUE 'X',
lo_cpon TYPE REF TO ii_bnk_cpay_ord_notification,
"cg_proxy_class TYPE REF TO seoclname,
lv_result_text TYPE string,
lx_ai_application_fault TYPE REF TO cx_ai_application_fault,
lx_msg_fault TYPE REF TO cx_sapplco_standard_msg_fault,
lx_transformation_error TYPE REF TO cx_transformation_error,
lx_proxy_fault TYPE REF TO cx_proxy_fault,
lt_excep TYPE sapplco_exchange_log_data_tab,
ls_sapplco_exchange_log_data TYPE sapplco_exchange_log_data,
ls_bapiret TYPE LINE OF bapirettab,
lt_bapiret2 TYPE bapirettab,
l_par1 TYPE sy-msgv1,
l_par2 TYPE sy-msgv2,
l_par3 TYPE sy-msgv3,
l_par4 TYPE sy-msgv4,
l_dummy_proxy,
l_renum TYPE STRING,
l_subrc TYPE sy-subrc.
STATICS:
BEGIN OF l_string_proxy,
part1 TYPE symsgv,
part2 TYPE symsgv,
part3 TYPE symsgv,
part4 TYPE symsgv,
END OF l_string_proxy.
CONSTANTS: cg_ob TYPE c LENGTH 1 VALUE '(',
cg_cb TYPE c LENGTH 1 VALUE ')'.
CONSTANTS cg_proxy_class TYPE seoclname VALUE 'CL_BNK_CPAY_ORD_NOTIFICATION'.
lv_tipo = 'R'.
****---Selección de información de acuerdo con el tipo de archivo de respuesta ---***
zcl_bcm_estado_pagos=>rta_pagos_banco_bogota( EXPORTING it_contenido =
it_contenido
i_filename = i_filename
CHANGING
l_renum = l_renum ).
IF gs_cab_bogota-estado IS NOT INITIAL.
lv_tipo = 'R'.
ELSE.
lv_tipo = 'R'.
ENDIF.
***---Inicialización log de mensajes carga de estados ---***
MESSAGE s036(bnk_com_intf) WITH '******' INTO gv_dummy. "#EC MG_PAR_CNT
CALL METHOD cl_bnk_file_communication=>appl_log
CHANGING
ct_return = gt_bapiret.
***---Estado general del lote ---***
zcl_bcm_estado_pagos=>estado_lote( EXPORTING i_tipo = lv_tipo ).
***---Estado detalle pagos respuesta carga ---***
zcl_bcm_estado_pagos=>detalle_lote_bogota( EXPORTING i_tipo = lv_tipo

_______________________________________________________________________________________________
05.03.2024 11:42:37 5
ZCL_BCM_ESTADO_PAGOS Release 750 Sistema CB1
_______________________________________________________________________________________________

l_renum = l_renum ).
***---Actualización de estados en el monitor ---***
*-- Switch-Off FEH flag
EXPORT feh_switch = l_feh TO MEMORY ID 'BNK'.
*
CREATE OBJECT lo_cpon TYPE (cg_proxy_class).
TRY.
CALL METHOD lo_cpon->execute_asynchronous
EXPORTING
input = l_proxy_data.
CATCH cx_sapplco_standard_msg_fault INTO lx_msg_fault.
lt_excep = lx_msg_fault->standard-fault_detail.
LOOP AT lt_excep INTO ls_sapplco_exchange_log_data.
*
MOVE: 'E' TO ls_bapiret-type,
ls_sapplco_exchange_log_data-text TO ls_bapiret-message.
SPLIT ls_sapplco_exchange_log_data-id AT cg_ob INTO: ls_bapiret-number
ls_bapiret-id.
REPLACE ALL OCCURRENCES OF cg_cb IN ls_bapiret-id WITH ``.
* APPEND LS_BAPIRET TO ET_BAPIRET2.
MOVE ls_bapiret-message TO l_string_proxy.
l_par1 = l_string_proxy-part1.
l_par2 = l_string_proxy-part2.
l_par3 = l_string_proxy-part3.
l_par4 = l_string_proxy-part4.
MESSAGE e000(bnk_com_intf) WITH l_par1 l_par2 l_par3 l_par4
INTO l_dummy_proxy. "#EC MG_PAR_CNT
CALL METHOD cl_bnk_file_communication=>appl_log
CHANGING
ct_return = lt_bapiret2.
ENDLOOP.
* RAISE proxy_fault.
CATCH cx_ai_application_fault INTO lx_ai_application_fault.
lv_result_text = lx_ai_application_fault->if_message~get_text( ).
MOVE lv_result_text TO l_string_proxy.
SHIFT l_string_proxy LEFT DELETING LEADING space.
l_par1 = l_string_proxy-part1.
l_par2 = l_string_proxy-part2.
l_par3 = l_string_proxy-part3.
l_par4 = l_string_proxy-part4.
MESSAGE e000(bnk_com_intf) WITH l_par1 l_par2 l_par3 l_par4
INTO l_dummy_proxy. "#EC MG_PAR_CNT
CALL METHOD cl_bnk_file_communication=>appl_log
CHANGING
ct_return = lt_bapiret2.
" RAISE proxy_fault.
ENDTRY.
*--- Success message which contains the batch ID
ls_bapiret-type = sy-msgty.
ls_bapiret-id = sy-msgid.
ls_bapiret-number = sy-msgno.
ls_bapiret-message_v1 = sy-msgv1.
ls_bapiret-message_v2 = sy-msgv2.
ls_bapiret-message_v3 = sy-msgv3.

_______________________________________________________________________________________________
05.03.2024 11:42:37 6
ZCL_BCM_ESTADO_PAGOS Release 750 Sistema CB1
_______________________________________________________________________________________________

ls_bapiret-message_v4 = sy-msgv4.
APPEND ls_bapiret TO lt_bapiret2.
IF sy-subrc <> 0.
l_subrc = 5.
"RAISE proxy_error.
ELSE.
*-- add messages to log
LOOP AT lt_bapiret2 INTO ls_bapiret.
MESSAGE ID ls_bapiret-id TYPE ls_bapiret-type NUMBER ls_bapiret-number WITH
ls_bapiret-message_v1
ls_bapiret-message_v2 ls_bapiret-message_v3 ls_bapiret-message_v4 INTO
gv_dummy. "#EC MG_PAR_CNT
CALL METHOD cl_bnk_file_communication=>appl_log
CHANGING
ct_return = gt_bapiret.
ENDLOOP.
ENDIF.
COMMIT WORK.
CLEAR:
gt_bapiret,gv_dummy,l_proxy_data,nombre_archivo,nit_empresa,secuencia,cantidad_reg,
valor_total,mensaje,gs_regut,gs_batch_header,gt_detalle_bancolombia,gt_detalle.
ENDMETHOD.

Métodos privados
CAMBIAR_ESTADO_MONITOR
Descripción: Cambiar estado de pagos en monitor
Método estático
method CAMBIAR_ESTADO_MONITOR.
endmethod.

ACUSE_RECIBIDO_BANCOLOMBIA
Descripción: Organizar información acuse recibido Bancolombia
Método estático
Parámetros import.
IT_CONTENIDO TYPE ZTT_RESP_BANCOLOMBIA (Respuesta pagos Bancolombia)
I_FILENAME TYPE STRING
METHOD acuse_recibido_bancolombia.
DATA: ls_string TYPE string,
fecha_pago TYPE string,
hora_pago TYPE string,
long_datos TYPE i,
lv_str2 TYPE string,
lv_buscnom TYPE string.
LOOP AT it_contenido INTO ls_string.
IF sy-tabix = 1.
***---Información general de estado del archivo de pagos---***
long_datos = strlen( ls_string ).
nit_empresa = ls_string(13).
secuencia = ls_string+13(2).
cantidad_reg = ls_string+15(6).
valor_total = ls_string+21(18).

_______________________________________________________________________________________________
05.03.2024 11:42:37 7
ZCL_BCM_ESTADO_PAGOS Release 750 Sistema CB1
_______________________________________________________________________________________________

IF i_filename IS NOT INITIAL.


SPLIT i_filename AT '_' INTO lv_str2 nombre_archivo fecha_pago hora_pago.
ENDIF.
ELSEIF sy-tabix = 2.
mensaje = ls_string.
ENDIF.
ENDLOOP.
***---Búsqueda del pago a partir del nombre del archivo enviado ---***
CONCATENATE '%' nombre_archivo '%' INTO lv_buscnom.
SELECT SINGLE *
FROM regut
INTO gs_regut
WHERE fsnam LIKE lv_buscnom.
IF sy-subrc = 0.
"Buscar cabecera del lote de pagos
SELECT SINGLE * FROM bnk_batch_header
INTO gs_batch_header
WHERE zbukr = gs_regut-zbukr AND laufd_f = gs_regut-laufd AND laufi_f =
gs_regut-laufi.
IF sy-subrc = 0.
"buscar detalle del pago
SELECT a~item_no a~batch_no a~lifnr a~vblnr a~laufd_o a~laufi_o a~zbukr
a~hbkid b~ubnks b~ubnkl b~stcd1 b~zstc1 b~rwbtr b~wa
FROM bnk_batch_item AS a
INNER JOIN reguh AS b
ON ( b~laufd = a~laufd_o AND b~laufi = a~laufi_o AND b~zbukr = a~zbukr AND
a~lifnr = b~lifnr AND a~vblnr = b~vblnr )
INTO TABLE gt_detalle
WHERE a~guid = gs_batch_header-guid AND b~xvorl <> 'X'.
IF sy-subrc = 0.
SORT gt_detalle BY item_no batch_no.
DELETE ADJACENT DUPLICATES FROM gt_detalle COMPARING ALL FIELDS.
ENDIF.
ENDIF.
ENDIF.
ENDMETHOD.

ESTADO_LOTE
Descripción: Estado general lote de pagos
Método estático
Parámetros import.
I_TIPO TYPE C
METHOD estado_lote.
DATA: wa_detalles_cab TYPE sapplco_collective_payment_ord,
ls_motivo TYPE ztbcm_motiv_rech,
ls_t012 TYPE t012.
l_proxy_data-cpay_ord_notif_message-cpay_ord_notification-id-content =
gs_regut-renum.
l_proxy_data-cpay_ord_notif_message-cpay_ord_notification-execution_status_code-
content = 'PAIN'.
IF i_tipo = ''. "archivo respuesta a carga
IF mensaje CS 'exitosamente'.

_______________________________________________________________________________________________
05.03.2024 11:42:37 8
ZCL_BCM_ESTADO_PAGOS Release 750 Sistema CB1
_______________________________________________________________________________________________

l_proxy_data-cpay_ord_notif_message-cpay_ord_notification-execution_status_no
te-content = 'RCVD'.
wa_detalles_cab-note-content = mensaje.
APPEND wa_detalles_cab TO
l_proxy_data-cpay_ord_notif_message-cpay_ord_notification-rejection_reason.
ELSEIF mensaje CS 'rechazado'.
l_proxy_data-cpay_ord_notif_message-cpay_ord_notification-execution_status_note-
content = 'RJCT'.
wa_detalles_cab-note-content = mensaje.
APPEND wa_detalles_cab TO
l_proxy_data-cpay_ord_notif_message-cpay_ord_notification-rejection_reason.
ELSEIF gt_detalle IS NOT INITIAL OR mensaje IS INITIAL AND gs_cab_bogota IS NOT
INITIAL.
SELECT SINGLE * FROM t012
INTO ls_t012
WHERE bukrs = gs_batch_header-zbukr AND hbkid = gs_batch_header-hbkid.
IF sy-subrc = 0.
SELECT SINGLE * FROM ztbcm_motiv_rech
INTO ls_motivo
WHERE bankl = ls_t012-bankl AND codigo = gs_cab_bogota-estado.
IF sy-subrc = 0.
l_proxy_data-cpay_ord_notif_message-cpay_ord_notification-execution_status_note-
content = ls_motivo-status_externo.
wa_detalles_cab-note-content = mensaje.
APPEND wa_detalles_cab TO
l_proxy_data-cpay_ord_notif_message-cpay_ord_notification-rejection_reason.
ENDIF.
ENDIF.
ENDIF.
ELSEIF i_tipo = 'R' or i_tipo = 'A'. "Archivo respuesta a pagos
IF gt_detalle IS NOT INITIAL.
l_proxy_data-cpay_ord_notif_message-cpay_ord_notification-execution_status_note-
content = 'ABCD'.
APPEND wa_detalles_cab TO
l_proxy_data-cpay_ord_notif_message-cpay_ord_notification-rejection_reason.
ENDIF.
ENDIF.
ENDMETHOD.

RTA_PAGOS_BANCOLOMBIA
Descripción: Organizar información respuesta pagos Bancolombia
Método estático
Parámetros import.
IT_CONTENIDO TYPE ZTT_RESP_BANCOLOMBIA (Respuesta pagos Bancolombia)
I_FILENAME TYPE STRING
METHOD rta_pagos_bancolombia.
DATA: ls_string TYPE string,
fecha_pago TYPE string,
hora_pago TYPE string,
long_datos TYPE i,
lv_str2 TYPE string,
lv_buscnom TYPE string,

_______________________________________________________________________________________________
05.03.2024 11:42:37 9
ZCL_BCM_ESTADO_PAGOS Release 750 Sistema CB1
_______________________________________________________________________________________________

ls_det_bcolo TYPE zstbcm_rta_bancolombia.


IF i_filename IS NOT INITIAL.
SPLIT i_filename AT '_' INTO lv_str2 nombre_archivo fecha_pago hora_pago.
ENDIF.
LOOP AT it_contenido INTO ls_string.
ls_det_bcolo-nit_empresa = ls_string(13).
ls_det_bcolo-fecha_transmision = ls_string+13(8).
ls_det_bcolo-secuencia = ls_string+21(2).
ls_det_bcolo-tipo_registro = ls_string+23(1).
ls_det_bcolo-nit_beneficiario = ls_string+24(15).
ls_det_bcolo-nombre_beneficiario = ls_string+39(30).
ls_det_bcolo-cod_banco_destino = ls_string+69(9).
ls_det_bcolo-cuenta_destino = ls_string+78(17).
ls_det_bcolo-tipo_cuenta = ls_string+95(1).
ls_det_bcolo-tipo_transaccion = ls_string+96(2).
ls_det_bcolo-valor = ls_string+98(18).
ls_det_bcolo-referencia = ls_string+116(22).
"ls_det_bcolo-concepto = ls_string+125(13).
CONDENSE ls_det_bcolo-referencia NO-GAPS.
ls_det_bcolo-cod_respuesta = ls_string+138(3).
ls_det_bcolo-num_cheque = ls_string+141(8).
ls_det_bcolo-fecha_aplicacion = ls_string+149(8).
APPEND ls_det_bcolo TO gt_detalle_bancolombia.
CLEAR ls_det_bcolo.
ENDLOOP.
***---Búsqueda del lote a partir del nombre del archivo enviado ---***
CONCATENATE '%' nombre_archivo '%' INTO lv_buscnom.
SELECT SINGLE *
FROM regut
INTO gs_regut
WHERE fsnam LIKE lv_buscnom.
IF sy-subrc = 0.
"Buscar cabecera del lote de pagos
SELECT SINGLE * FROM bnk_batch_header
INTO gs_batch_header
WHERE zbukr = gs_regut-zbukr AND laufd_f = gs_regut-laufd AND laufi_f =
gs_regut-laufi.
IF sy-subrc = 0 AND gt_detalle_bancolombia IS NOT INITIAL.
SELECT a~item_no a~batch_no a~lifnr a~vblnr a~laufd_o a~laufi_o a~zbukr
a~hbkid b~ubnks b~ubnkl b~stcd1 b~zstc1 b~rwbtr b~wa
FROM bnk_batch_item AS a
INNER JOIN reguh AS b
ON ( b~laufd = a~laufd_o AND b~laufi = a~laufi_o AND b~zbukr = a~zbukr AND
a~lifnr = b~lifnr AND a~vblnr = b~vblnr )
INTO TABLE gt_detalle
WHERE a~guid = gs_batch_header-guid AND b~xvorl <> 'X'.
IF sy-subrc = 0.
SORT gt_detalle BY item_no batch_no.
DELETE ADJACENT DUPLICATES FROM gt_detalle COMPARING ALL FIELDS.
ENDIF.
ENDIF.
ENDIF.
ENDMETHOD.

_______________________________________________________________________________________________
05.03.2024 11:42:37 10
ZCL_BCM_ESTADO_PAGOS Release 750 Sistema CB1
_______________________________________________________________________________________________

DETALLE_LOTE_BANCOLOMBIA
Descripción: Estado general lote de pagos
Método estático
Parámetros import.
I_TIPO TYPE C
METHOD detalle_lote_bancolombia.
DATA: ls_det_bcolo TYPE zstbcm_rta_bancolombia,
ls_detalle TYPE zstbcm_detalle_pagos,
lt_paym_ord_not TYPE sapplco_pay_order_notif_tab,
wa_pay TYPE sapplco_pay_order_notification,
ls_motivos TYPE ztbcm_motiv_rech,
lt_rjct_reas TYPE sapplco_payment_order_noti_tab,
wa_rjct_reas TYPE sapplco_payment_order_notifica,
lv_id TYPE stcd1,
amount_external TYPE bapicurr_d,
lv_monto TYPE bapicurr_d,
return TYPE bapireturn,
max_number_of_digits TYPE i,
i_pmnt_stat TYPE bnk_com_pmnt_status VALUE 'ALL',
it_selcrit_values TYPE rsparams_tt,
ls_selec TYPE LINE OF rsparams_tt,
i_uname_auth TYPE syuname,
et_data TYPE bnk_t_batches_payments,
ls_data TYPE LINE OF bnk_t_batches_payments,
et_message TYPE powl_msg_tty.
max_number_of_digits = 23.
IF i_tipo = 'R' AND gt_detalle_bancolombia IS NOT INITIAL.
LOOP AT gt_detalle_bancolombia INTO ls_det_bcolo .
IF ls_det_bcolo-referencia IS NOT INITIAL.
READ TABLE gt_detalle INTO ls_detalle WITH KEY vblnr =
ls_det_bcolo-referencia.
IF sy-subrc = 0.
SELECT SINGLE *
FROM ztbcm_motiv_rech
INTO ls_motivos
WHERE banks = ls_detalle-ubnks AND bankl = ls_detalle-ubnkl AND codigo
= ls_det_bcolo-cod_respuesta.
wa_pay-id-content = ls_detalle-vblnr.
wa_pay-execution_status_code-content = 'PAIN'.
wa_pay-execution_status_note-content = ls_motivos-status_externo.
wa_rjct_reas-code-content = ls_motivos-codigo.
wa_rjct_reas-note-content = ls_motivos-descripcion.
APPEND wa_rjct_reas TO lt_rjct_reas.
wa_pay-rejection_reason = lt_rjct_reas.
APPEND wa_pay TO lt_paym_ord_not.
CLEAR: wa_pay, wa_rjct_reas, lt_rjct_reas.
ELSEIF sy-subrc <> 0.
"Formatear id de beneficiario
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
EXPORTING
input = ls_det_bcolo-nit_beneficiario

_______________________________________________________________________________________________
05.03.2024 11:42:37 11
ZCL_BCM_ESTADO_PAGOS Release 750 Sistema CB1
_______________________________________________________________________________________________

IMPORTING
output = lv_id.
"formatear monto.
IF ls_det_bcolo-valor IS NOT INITIAL.
amount_external = ls_det_bcolo-valor.
CALL FUNCTION 'BAPI_CURRENCY_CONV_TO_INTERNAL'
EXPORTING
currency = 'COP'
amount_external = amount_external
max_number_of_digits = max_number_of_digits
IMPORTING
amount_internal = lv_monto
return = return.
lv_monto = lv_monto * -1.
ENDIF.
"Búsqueda de pagos
IF lv_monto IS NOT INITIAL AND lv_id IS NOT INITIAL.
LOOP AT gt_detalle INTO ls_detalle.
IF ( ls_detalle-stcd1 CS lv_id OR ls_detalle-zstc1 CS lv_id ) AND
ls_detalle-rwbtr = lv_monto.
SELECT SINGLE *
FROM ztbcm_motiv_rech
INTO ls_motivos
WHERE banks = ls_detalle-ubnks AND bankl = ls_detalle-ubnkl AND
codigo = ls_det_bcolo-cod_respuesta.
IF sy-subrc = 0.
wa_pay-id-content = ls_detalle-vblnr.
wa_pay-execution_status_code-content = 'PAIN'.
wa_pay-execution_status_note-content = ls_motivos-status_externo.
wa_rjct_reas-code-content = ls_motivos-codigo.
wa_rjct_reas-note-content = ls_motivos-descripcion.
APPEND wa_rjct_reas TO lt_rjct_reas.
wa_pay-rejection_reason = lt_rjct_reas.
APPEND wa_pay TO lt_paym_ord_not.
CLEAR: wa_pay, wa_rjct_reas, lt_rjct_reas.
ENDIF.
ENDIF.
ENDLOOP.
ENDIF.
ENDIF.
ELSEIF ls_det_bcolo-referencia IS INITIAL.
"Formatear id de beneficiario
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
EXPORTING
input = ls_det_bcolo-nit_beneficiario
IMPORTING
output = lv_id.
"formatear monto.
IF ls_det_bcolo-valor IS NOT INITIAL.
amount_external = ls_det_bcolo-valor.
CALL FUNCTION 'BAPI_CURRENCY_CONV_TO_INTERNAL'
EXPORTING
currency = 'COP'
amount_external = amount_external

_______________________________________________________________________________________________
05.03.2024 11:42:37 12
ZCL_BCM_ESTADO_PAGOS Release 750 Sistema CB1
_______________________________________________________________________________________________

max_number_of_digits = max_number_of_digits
IMPORTING
amount_internal = lv_monto
return = return.
lv_monto = lv_monto * -1.
ENDIF.
"Búsqueda de pagos
IF lv_monto IS NOT INITIAL AND lv_id IS NOT INITIAL.
LOOP AT gt_detalle INTO ls_detalle.
IF ( ls_detalle-stcd1 CS lv_id OR ls_detalle-zstc1 CS lv_id ) AND
ls_detalle-rwbtr = lv_monto.
SELECT SINGLE *
FROM ztbcm_motiv_rech
INTO ls_motivos
WHERE banks = ls_detalle-ubnks AND bankl = ls_detalle-ubnkl AND
codigo = ls_det_bcolo-cod_respuesta.
IF sy-subrc = 0.
wa_pay-id-content = ls_detalle-vblnr.
wa_pay-execution_status_code-content = 'PAIN'.
wa_pay-execution_status_note-content = ls_motivos-status_externo.
wa_rjct_reas-code-content = ls_motivos-codigo.
wa_rjct_reas-note-content = ls_motivos-descripcion.
APPEND wa_rjct_reas TO lt_rjct_reas.
wa_pay-rejection_reason = lt_rjct_reas.
APPEND wa_pay TO lt_paym_ord_not.
CLEAR: wa_pay, wa_rjct_reas, lt_rjct_reas.
ENDIF.
ENDIF.
ENDLOOP.
ENDIF.
ENDIF.
CLEAR: lv_id,ls_motivos,wa_pay, wa_rjct_reas, lt_rjct_reas.
ENDLOOP.
l_proxy_data-cpay_ord_notif_message-cpay_ord_notification-payment_order_notification
= lt_paym_ord_not.
ELSEIF i_tipo = 'A'.
ls_selec-selname = 'BTCH_NO'.
ls_selec-sign = 'I'.
ls_selec-option = 'EQ'.
ls_selec-low = gs_batch_header-batch_no.
APPEND ls_selec TO it_selcrit_values.
"Buscar status de pagos en lote
CALL FUNCTION 'BNK_READ_BATCHES_PAYMENTS'
EXPORTING
i_pmnt_stat = 'ALL'
it_selcrit_values = it_selcrit_values
i_uname_auth = i_uname_auth
IMPORTING
et_data = et_data
TABLES
et_message = et_message.
LOOP AT gt_detalle INTO ls_detalle.
READ TABLE et_data INTO ls_data WITH KEY vblnr = ls_detalle-vblnr.
IF sy-subrc = 0 AND ls_data-status_id <> 'brj'.

_______________________________________________________________________________________________
05.03.2024 11:42:37 13
ZCL_BCM_ESTADO_PAGOS Release 750 Sistema CB1
_______________________________________________________________________________________________

IF mensaje CS 'exitosamente'.
wa_pay-id-content = ls_detalle-vblnr.
wa_pay-execution_status_code-content = 'PAIN'.
wa_pay-execution_status_note-content = 'RCVD'.
wa_rjct_reas-code-content = 'REC'.
wa_rjct_reas-note-content = mensaje.
APPEND wa_rjct_reas TO lt_rjct_reas.
wa_pay-rejection_reason = lt_rjct_reas.
APPEND wa_pay TO lt_paym_ord_not.
CLEAR: wa_pay, wa_rjct_reas, lt_rjct_reas.
ELSEIF mensaje CS 'rechazado'..
wa_pay-id-content = ls_detalle-vblnr.
wa_pay-execution_status_code-content = 'PAIN'.
wa_pay-execution_status_note-content = 'RJCT'.
wa_rjct_reas-code-content = 'REJ'.
wa_rjct_reas-note-content = mensaje.
APPEND wa_rjct_reas TO lt_rjct_reas.
wa_pay-rejection_reason = lt_rjct_reas.
APPEND wa_pay TO lt_paym_ord_not.
CLEAR: wa_pay, wa_rjct_reas, lt_rjct_reas.
ENDIF.
CLEAR: lv_id,ls_motivos,wa_pay, wa_rjct_reas, lt_rjct_reas.
ENDIF.
ENDLOOP.
l_proxy_data-cpay_ord_notif_message-cpay_ord_notification-payment_order_notification
= lt_paym_ord_not.
ENDIF.
ENDMETHOD.

RTA_PAGOS_BANCO_BOGOTA
Descripción: Organizar información respuesta pagos Banco de Bogotá
Método estático
Parámetros import.
IT_CONTENIDO TYPE ZTT_RESP_BANCOLOMBIA (Respuesta pagos Bancolombia)
I_FILENAME TYPE STRING
Parámetros changing
L_RENUM TYPE STRING
METHOD rta_pagos_banco_bogota.
DATA: ls_string TYPE string,
fecha_pago TYPE string,
hora_pago TYPE string,
long_datos TYPE i,
lv_str2 TYPE string,
lv_str1 TYPE string,
lv_buscnom TYPE string,
ls_det_bbogo TYPE zstbcm_rta_bogota_det.
IF i_filename IS NOT INITIAL.
SPLIT i_filename AT '_' INTO lv_str1 lv_str2 nombre_archivo fecha_pago
hora_pago.
l_renum = nombre_archivo+3(10).
ENDIF.
LOOP AT it_contenido INTO ls_string.

_______________________________________________________________________________________________
05.03.2024 11:42:37 14
ZCL_BCM_ESTADO_PAGOS Release 750 Sistema CB1
_______________________________________________________________________________________________

CLEAR: long_datos.
IF sy-tabix = 1.
long_datos = strlen( ls_string ).
gs_cab_bogota-tipo_registro = ls_string(1).
gs_cab_bogota-fecha_generacion = ls_string+1(8).
gs_cab_bogota-hora_generacion = ls_string+9(6).
gs_cab_bogota-nit_empresa = ls_string+15(11).
gs_cab_bogota-tipo_cuenta_dis = ls_string+26(2).
gs_cab_bogota-cuenta_disp = ls_string+28(17).
gs_cab_bogota-fecha_abono = ls_string+45(8).
gs_cab_bogota-valor_total = ls_string+53(18).
"CONCATENATE ls_string+54(15) '.' ls_string+69(2) INTO
gs_cab_bogota-valor_total.
gs_cab_bogota-total_reg = ls_string+71(6).
IF long_datos > 106.
gs_cab_bogota-num_id_transmision = ls_string+77(20).
gs_cab_bogota-num_reg_rech = ls_string+97(6).
gs_cab_bogota-estado = ls_string+103(3).
gs_cab_bogota-desc_estado = ls_string+106.
ELSEIF long_datos < 103 AND long_datos > 97.
gs_cab_bogota-num_id_transmision = ls_string+77(20).
gs_cab_bogota-num_reg_rech = ls_string+97(6).
ELSEIF long_datos < 97 AND long_datos > 77.
gs_cab_bogota-num_id_transmision = ls_string+77(20).
ENDIF.
ELSE.
long_datos = strlen( ls_string ).
ls_det_bbogo-tipo_registro = ls_string(1).
ls_det_bbogo-nombre_beneficiario = ls_string+1(30).
ls_det_bbogo-tipo_id = ls_string+31(2).
ls_det_bbogo-id_beneficiario = ls_string+33(11).
ls_det_bbogo-tipo_cuenta_ben = ls_string+44(2).
ls_det_bbogo-cuenta_bene = ls_string+46(17).
ls_det_bbogo-cod_banco_ben = ls_string+63(4).
ls_det_bbogo-desc_banco_des = ls_string+67(20).
ls_det_bbogo-valor = ls_string+87(18).
"CONCATENATE ls_string+88(15) '.' ls_string+103(2) INTO ls_det_bbogo-valor.
IF long_datos > 142.
ls_det_bbogo-ciudad = ls_string+105(24).
ls_det_bbogo-factura = ls_string+129(10).
ls_det_bbogo-estado = ls_string+139(3).
ls_det_bbogo-desc_estado = ls_string+142.
ELSEIF long_datos <= 139 AND long_datos > 129.
ls_det_bbogo-ciudad = ls_string+105(24).
ls_det_bbogo-factura = ls_string+129(10).
ELSEIF long_datos <= 129 AND long_datos > 105.
ls_det_bbogo-ciudad = ls_string+105(24).
ENDIF.
APPEND ls_det_bbogo TO gt_detalle_bogota.
CLEAR ls_det_bbogo.
"Si el numero de Factura esta vacio de trae
ENDIF.
ENDLOOP.
**---Búsqueda del lote a partir del nombre del archivo enviado ---***

_______________________________________________________________________________________________
05.03.2024 11:42:37 15
ZCL_BCM_ESTADO_PAGOS Release 750 Sistema CB1
_______________________________________________________________________________________________

CONCATENATE '%' nombre_archivo '%' INTO lv_buscnom.


SELECT SINGLE *
FROM regut
INTO gs_regut
WHERE fsnam LIKE lv_buscnom.
IF sy-subrc = 0.
"Buscar cabecera del lote de pagos
SELECT SINGLE * FROM bnk_batch_header
INTO gs_batch_header
WHERE zbukr = gs_regut-zbukr AND laufd_f = gs_regut-laufd AND laufi_f =
gs_regut-laufi.
IF sy-subrc = 0. "AND gt_detalle_bogota IS NOT INITIAL.
SELECT a~item_no a~batch_no a~lifnr a~vblnr a~laufd_o a~laufi_o a~zbukr
a~hbkid b~ubnks b~ubnkl b~stcd1 b~zstc1 b~rwbtr b~wa
FROM bnk_batch_item AS a
INNER JOIN reguh AS b
ON ( b~laufd = a~laufd_o AND b~laufi = a~laufi_o AND b~zbukr = a~zbukr AND
a~lifnr = b~lifnr AND a~vblnr = b~vblnr )
INTO TABLE gt_detalle
WHERE a~guid = gs_batch_header-guid AND b~xvorl <> 'X'.
IF sy-subrc = 0.
SORT gt_detalle BY item_no batch_no.
DELETE ADJACENT DUPLICATES FROM gt_detalle COMPARING ALL FIELDS.
ENDIF.
ENDIF.
ENDIF.
ENDMETHOD.

DETALLE_LOTE_BOGOTA
Descripción: Estado general lote de pagos
Método estático
Parámetros import.
I_TIPO TYPE C
L_RENUM TYPE STRING
METHOD detalle_lote_bogota.
DATA: ls_det TYPE zstbcm_rta_bogota_det,
ls_detalle TYPE zstbcm_detalle_pagos,
lt_paym_ord_not TYPE sapplco_pay_order_notif_tab,
wa_pay TYPE sapplco_pay_order_notification,
ls_motivos TYPE ztbcm_motiv_rech,
lt_rjct_reas TYPE sapplco_payment_order_noti_tab,
wa_rjct_reas TYPE sapplco_payment_order_notifica,
lv_id TYPE stcd1,
amount_external TYPE bapicurr_d,
lv_monto TYPE bapicurr_d,
return TYPE bapireturn,
lv_nit TYPE string,
lv_moneda TYPE WAERS,
lv_pais TYPE DZBNKS,
lv_banco TYPE DZBNKL,
lv_factura(10) TYPE c,
max_number_of_digits TYPE i.

_______________________________________________________________________________________________
05.03.2024 11:42:37 16
ZCL_BCM_ESTADO_PAGOS Release 750 Sistema CB1
_______________________________________________________________________________________________

max_number_of_digits = 23.
IF ( i_tipo = 'R' OR i_tipo = 'A' ) AND gt_detalle_bogota IS NOT INITIAL.
LOOP AT gt_detalle_bogota INTO ls_det .
* IF ls_det-factura IS NOT INITIAL.
* LOOP AT gt_detalle INTO ls_detalle WHERE vblnr = ls_det-factura.
* SELECT SINGLE *
* FROM ztbcm_motiv_rech
* INTO ls_motivos
* WHERE banks = ls_detalle-ubnks AND bankl = ls_detalle-ubnkl AND codigo
= ls_det-estado.
* wa_pay-id-content = ls_detalle-vblnr.
* wa_pay-execution_status_code-content = 'PAIN'.
* wa_pay-execution_status_note-content = ls_motivos-status_externo.
* wa_rjct_reas-code-content = ls_motivos-codigo.
* wa_rjct_reas-note-content = ls_motivos-descripcion.
* APPEND wa_rjct_reas TO lt_rjct_reas.
* wa_pay-rejection_reason = lt_rjct_reas.
* APPEND wa_pay TO lt_paym_ord_not.
* CLEAR: wa_pay, wa_rjct_reas, lt_rjct_reas.
* lv_moneda = ls_detalle-WAERS.
* lv_banco = ls_detalle-ZBNKL.
* lv_pais = ls_detalle-ZBNKS.
* ENDLOOP.
* ELSEIF ls_det-factura IS INITIAL.
"Formatear id de beneficiario
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
EXPORTING
input = ls_det-id_beneficiario
IMPORTING
output = lv_id.
"formatear monto.
IF ls_det-valor IS NOT INITIAL.
amount_external = ls_det-valor.
amount_external = amount_external / 100.
CALL FUNCTION 'BAPI_CURRENCY_CONV_TO_INTERNAL'
EXPORTING
currency = 'COP'
amount_external = amount_external
max_number_of_digits = max_number_of_digits
IMPORTING
amount_internal = lv_monto
return = return.
lv_monto = lv_monto * -1.
ENDIF.
"Búsqueda de pagos
IF lv_monto IS NOT INITIAL AND lv_id IS NOT INITIAL.
LOOP AT gt_detalle INTO ls_detalle.
IF ( ls_detalle-stcd1 CS lv_id OR ls_detalle-zstc1 CS lv_id ) AND
ls_detalle-rwbtr = lv_monto.
SELECT SINGLE *
FROM ztbcm_motiv_rech
INTO ls_motivos
WHERE banks = ls_detalle-ubnks AND bankl = ls_detalle-ubnkl AND
codigo = ls_det-estado.

_______________________________________________________________________________________________
05.03.2024 11:42:37 17
ZCL_BCM_ESTADO_PAGOS Release 750 Sistema CB1
_______________________________________________________________________________________________

IF sy-subrc = 0.
wa_pay-id-content = ls_detalle-vblnr.
wa_pay-execution_status_code-content = 'PAIN'.
wa_pay-execution_status_note-content = ls_motivos-status_externo.
wa_rjct_reas-code-content = ls_motivos-codigo.
wa_rjct_reas-note-content = ls_motivos-descripcion.
APPEND wa_rjct_reas TO lt_rjct_reas.
wa_pay-rejection_reason = lt_rjct_reas.
APPEND wa_pay TO lt_paym_ord_not.
CLEAR: wa_pay, wa_rjct_reas, lt_rjct_reas.
ELSEIF sy-subrc <> 0 AND ls_det-estado = 'REJ'.
wa_pay-id-content = ls_detalle-vblnr.
wa_pay-execution_status_code-content = 'PAIN'.
wa_pay-execution_status_note-content = 'RJCT'.
wa_rjct_reas-code-content = ls_det-estado.
wa_rjct_reas-note-content = ls_det-desc_estado.
APPEND wa_rjct_reas TO lt_rjct_reas.
wa_pay-rejection_reason = lt_rjct_reas.
APPEND wa_pay TO lt_paym_ord_not.
CLEAR: wa_pay, wa_rjct_reas, lt_rjct_reas.
ENDIF.
ELSEIF ls_detalle-rwbtr = lv_monto.
SELECT SINGLE *
FROM ztbcm_motiv_rech
INTO ls_motivos
WHERE banks = ls_detalle-ubnks AND bankl = ls_detalle-ubnkl AND
codigo = ls_det-estado.
IF sy-subrc = 0.
wa_pay-id-content = ls_detalle-vblnr.
wa_pay-execution_status_code-content = 'PAIN'.
wa_pay-execution_status_note-content = ls_motivos-status_externo.
wa_rjct_reas-code-content = ls_motivos-codigo.
wa_rjct_reas-note-content = ls_motivos-descripcion.
APPEND wa_rjct_reas TO lt_rjct_reas.
wa_pay-rejection_reason = lt_rjct_reas.
APPEND wa_pay TO lt_paym_ord_not.
CLEAR: wa_pay, wa_rjct_reas, lt_rjct_reas.
ELSEIF sy-subrc <> 0 AND ls_det-estado = 'REJ'.
wa_pay-id-content = ls_detalle-vblnr.
wa_pay-execution_status_code-content = 'PAIN'.
wa_pay-execution_status_note-content = 'RJCT'.
wa_rjct_reas-code-content = ls_det-estado.
wa_rjct_reas-note-content = ls_det-desc_estado.
APPEND wa_rjct_reas TO lt_rjct_reas.
wa_pay-rejection_reason = lt_rjct_reas.
APPEND wa_pay TO lt_paym_ord_not.
CLEAR: wa_pay, wa_rjct_reas, lt_rjct_reas.
ENDIF.
ENDIF.
lv_moneda = ls_detalle-WAERS.
lv_banco = ls_detalle-ZBNKL.
lv_pais = ls_detalle-ZBNKS.
ENDLOOP.
ENDIF.

_______________________________________________________________________________________________
05.03.2024 11:42:37 18
ZCL_BCM_ESTADO_PAGOS Release 750 Sistema CB1
_______________________________________________________________________________________________

* ENDIF.
* Envio de correo por pago exitoso
IF ls_motivos-STATUS_EXTERNO = 'ACSC' or ls_motivos-STATUS_EXTERNO = 'ACSP'
or ls_motivos-STATUS_EXTERNO = 'ACWC'.
*llenamos campo factura si viene vacio
"consultamos el acreedor atraves del nit
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
EXPORTING
INPUT = ls_det-ID_BENEFICIARIO
IMPORTING
OUTPUT = lv_nit
.
SELECT SINGLE LIFNR
into @data(lv_acreedor)
FROM lfa1
where STCD1 = @lv_nit.
*Envio de la factura al correo de notificacion
SELECT SINGLE d~XBLNR
INTO lv_factura
FROM REGUT as a
INNER JOIN BNK_BATCH_HEADER as b on a~LAUFD = b~LAUFD_F and a~LAUFI =
b~LAUFI_F
INNER JOIN BNK_BATCH_ITEM as c ON b~GUID = c~GUID and c~LIFNR =
lv_acreedor
INNER JOIN REGUP AS d ON c~LAUFD_O = d~LAUFD and c~LAUFI_O = d~LAUFI and
d~XVORL = ''
and d~LIFNR = lv_acreedor
WHERE a~renum = l_renum and d~XVORL = ''.
CALL FUNCTION 'ZBCMF_MAIL_APROVADO_BANCO'
EXPORTING
LV_CUENTA_BENE = ls_det-CUENTA_BENE
LV_BANCO = lv_banco
LV_VALOR = ls_det-valor
LV_NOMBRE = ls_det-NOMBRE_BENEFICIARIO
FECHA = gs_cab_bogota-fecha_generacion
LV_ACREEDOR = lv_acreedor
LV_TIPO = ls_det-TIPO_CUENTA_BEN
LV_FACTURA = lv_factura
lv_moneda = lv_moneda
lv_pais = lv_pais
.
* .
ENDIF.
CLEAR: lv_id,ls_motivos,wa_pay, wa_rjct_reas, lt_rjct_reas.
ENDLOOP.
SORT lt_paym_ord_not BY id-content.
DELETE ADJACENT DUPLICATES FROM lt_paym_ord_not COMPARING id-content.
l_proxy_data-cpay_ord_notif_message-cpay_ord_notification-payment_order_notification
= lt_paym_ord_not.
ELSEIF ( i_tipo = 'R' OR i_tipo = 'A' ) AND gt_detalle_bogota IS INITIAL.
LOOP AT gt_detalle INTO ls_detalle.
SELECT SINGLE *
FROM ztbcm_motiv_rech
INTO ls_motivos

_______________________________________________________________________________________________
05.03.2024 11:42:37 19
ZCL_BCM_ESTADO_PAGOS Release 750 Sistema CB1
_______________________________________________________________________________________________

WHERE banks = ls_detalle-ubnks AND bankl = ls_detalle-ubnkl AND codigo =


gs_cab_bogota-estado.
IF sy-subrc = 0.
wa_pay-id-content = ls_detalle-vblnr.
wa_pay-execution_status_code-content = 'PAIN'.
wa_pay-execution_status_note-content = ls_motivos-status_externo.
wa_rjct_reas-code-content = ls_motivos-codigo.
wa_rjct_reas-note-content = ls_motivos-descripcion.
APPEND wa_rjct_reas TO lt_rjct_reas.
wa_pay-rejection_reason = lt_rjct_reas.
APPEND wa_pay TO lt_paym_ord_not.
CLEAR: wa_pay, wa_rjct_reas, lt_rjct_reas.
ELSEIF sy-subrc <> 0 AND gs_cab_bogota-estado = 'REJ'.
wa_pay-id-content = ls_detalle-vblnr.
wa_pay-execution_status_code-content = 'PAIN'.
wa_pay-execution_status_note-content = 'RJCT'.
wa_rjct_reas-code-content = 'REJ'.
wa_rjct_reas-note-content = gs_cab_bogota-desc_estado.
APPEND wa_rjct_reas TO lt_rjct_reas.
wa_pay-rejection_reason = lt_rjct_reas.
APPEND wa_pay TO lt_paym_ord_not.
CLEAR: wa_pay, wa_rjct_reas, lt_rjct_reas.
ENDIF.
CLEAR: lv_id,ls_motivos,wa_pay, wa_rjct_reas, lt_rjct_reas.
ENDLOOP.
SORT lt_paym_ord_not BY id-content.
DELETE ADJACENT DUPLICATES FROM lt_paym_ord_not COMPARING id-content.
l_proxy_data-cpay_ord_notif_message-cpay_ord_notification-payment_order_notification
= lt_paym_ord_not.
ENDIF.
ENDMETHOD.

Métodos redefinidos

Tipos locales
*"* use this source file for any type of declarations (class
*"* definitions, interfaces or type declarations) you need for
*"* components in the private section
Definiciones de clases locales
*"* use this source file for the definition and implementation of
*"* local helper classes, interface definitions and type
*"* declarations
TYPES: BEGIN OF ty_det_pagos,
item_no TYPE bnk_com_btch_cnt,
batch_no TYPE bnk_com_btch_no,
lifnr TYPE lifnr,
vblnr TYPE vblnr,
laufd_o TYPE laufd,
laufi_o TYPE laufi,
zbukr TYPE dzbukr,
hbkid TYPE hbkid,
stcd1 TYPE stcd1,

_______________________________________________________________________________________________
05.03.2024 11:42:37 20
ZCL_BCM_ESTADO_PAGOS Release 750 Sistema CB1
_______________________________________________________________________________________________

zstc1 TYPE stcd1_z,


rwbtr TYPE rwbtr,
waers TYPE waers,
END OF ty_det_pagos.
TYPES: tyt_det_pagos TYPE TABLE OF ty_det_pagos.
Macros
*"* use this source file for any macro definitions you need
*"* in the implementation part of the class

_______________________________________________________________________________________________
05.03.2024 11:42:37 21
ZCL_BCM_ESTADO_PAGOS Release 750 Sistema CB1
_______________________________________________________________________________________________

Resumen
Propiedades 1

Atributos 1
Atributos públicos 1
Métodos 2
Métodos públicos 2
RESPUESTA_BANCOLOMBIA 2
RESPUESTA_BANCO_BOGOTA 4
Métodos privados 7
CAMBIAR_ESTADO_MONITOR 7
ACUSE_RECIBIDO_BANCOLOMBIA 7
ESTADO_LOTE 8
RTA_PAGOS_BANCOLOMBIA 9
DETALLE_LOTE_BANCOLOMBIA 11
RTA_PAGOS_BANCO_BOGOTA 14
DETALLE_LOTE_BOGOTA 16
Métodos redefinidos 20
Tipos locales 20

Definiciones de clases locales 20

Macros 21

_______________________________________________________________________________________________
05.03.2024 11:42:37 22

También podría gustarte