You are on page 1of 43

Implementation Paper

Índice

ÍNDICE.....................................................................................................................................................................................1

OBJETIVO...............................................................................................................................................................................2

PROBLEMA............................................................................................................................................................................2
DESCRIPCIÓN BREVE..............................................................................................................................................................2
CLAVE DE BÚSQUEDA.............................................................................................................................................................2
DESCRIPCIÓN DETALLADA.....................................................................................................................................................2
PANTALLAS.............................................................................................................................................................................2
SOLUCIÓN..............................................................................................................................................................................3
DESCRIPCIÓN..........................................................................................................................................................................3
Parametrización de las vías de pago de emisión y caída para cheques de pago diferido...........................................3
Sustitución para vía de pago CPD-caída por pago automático................................................................................12
Creación de job para ZRFCHKU00_CME (asigna nro cheque en el campo asignación del documento de pago)-
estándar modificado para que tenga en cuenta los Cheques de pago diferido (CME).............................................12
Explicación de la utilización de la tr. F110 para generar la caída de los CPD y su utilización con el reporte
ZFIBIASIG (carga el campo asignación de la REGUP en el campo asignación del documento de pago).............18
Planificación de caída de los CPD con reporte ZFIBIASIG para que sea transparente para el usuario..................23
Activación de user exit para que Extracto automático cargue el nro de cheque (o de operación) en el campo
asignación.................................................................................................................................................................26
Anexo I: Código del programa ZRFCHKU00_CME..............................................................................................29
Anexo IIa: Código del programa ZFIBIASIG.........................................................................................................37
Anexo IIb: Código del programa ZFIBIASIG_INCLUDE.....................................................................................39
Firmas......................................................................................................................................................................................42

Fecha : 7/06/2019 Página 1 de 43


Módulo: 01
RDS Nro: Implementation Paper Versión:
FI-AP/BA
FI-AP-003
Autor: Fecha de creación
21/06/2005
Descripción breve: Solución integral cheques emitidos

Objetivo
Documentar el diseño integral de una solución para cheques emitidos, contando con que el campo asignación
de la partida del banco quede cargado con el nro de cheque, para poder conciliarlo con el extracto bancario.

Problema
Descripción Breve
Consolidar una solución de las varias que existen para resolver el problema indicado arriba en el contexto de las
empresas que operan en Argentina1.

Clave de búsqueda
Cheque, Cheque de pago diferido, CPD, Campo Asignación, ZUONR, CME, FBZP, FBKP, extracto bancario,
F110, F-53, F-58, FF.5

Descripción Detallada
Se buscó diseñar una solución para cheques emitidos (al día y de pago diferido con CME) y con la característica
de que el campo asignación de la partida del banco quede cargada con el nro de cheque, para poder conciliar,
así sea que el pago haya sido efectuado de manera manual (F-53+FCH5, F-40+FCH5, o F-58) o automática
(F110).

Pantallas
N/A

Fecha : 7/06/2019 Página 2 de 43


Módulo: 01
RDS Nro: Implementation Paper Versión:
FI-AP/BA
FI-AP-003
Autor: Fecha de creación
21/06/2005
Descripción breve: Solución integral cheques emitidos

Solución
Descripción

Parametrización de las vías de pago de emisión y caída para cheques de pago diferido

Operaciones CME para EFECTOS/CPD


Path: IMG Gestión Financiera / Contabilidad Bancaria / Operaciones Contables / Operaciones con Efectos /
Efectos a Paga / Almacenar cuenta asociada alternativa para efectos a pagar
Transacción: FBKP

Se parametriza el indicador CME = S (Efectos Descontables) según los siguientes parámetros:

Fecha : 7/06/2019 Página 3 de 43


Módulo: 01
RDS Nro: Implementation Paper Versión:
FI-AP/BA
FI-AP-003
Autor: Fecha de creación
21/06/2005
Descripción breve: Solución integral cheques emitidos

211210003 = Cheques diferidos emitidos

Sociedad para Pagos


Path: IMG Gestión Financiera / Contabilidad de Deudores y Acreedores / Operaciones Contables / Salida de
Pagos / Salida de Pagos Automática / Selección Vía de Pago/Banco para programa de pagos / Instalar todas
las Sociedades para Pagos
Transacción: FBZP

Seleccionar la sociedad y configurarla para Pagos. Lo importante es colocar aquí el indicador CME de cheques
emitidos, que en este caso es el S:

Fecha : 7/06/2019 Página 4 de 43


Módulo: 01
RDS Nro: Implementation Paper Versión:
FI-AP/BA
FI-AP-003
Autor: Fecha de creación
21/06/2005
Descripción breve: Solución integral cheques emitidos

CME = A (Anticipos)
CME = F (Solicitud de Anticipos)
CME = S (Cheques Diferidos). Para poder colocar aquí el S, se debió modificar temporalmente sus
características (FBKP > K S)

se agregó en esta pantalla de FBZP, y se volvió a colocar como Efecto

Sociedad Pagadora
Path: IMG Gestión Financiera / Contabilidad de Deudores y Acreedores / Operaciones Contables / Salida de
Pagos / Salida de Pagos Automática / Selección Vía de Pago/Banco para programa de pagos / Instalar
Sociedad Pagadora para Pagos

Fecha : 7/06/2019 Página 5 de 43


Módulo: 01
RDS Nro: Implementation Paper Versión:
FI-AP/BA
FI-AP-003
Autor: Fecha de creación
21/06/2005
Descripción breve: Solución integral cheques emitidos

Transacción: FBZP

Días de vencimiento de los efectos. En este caso se indicó que un cheque diferido pude emitirse con
vencimiento mínimo a 1 día y máximo a 360 días

Vías de Pago en el País


Path: IMG Gestión Financiera / Contabilidad de Deudores y Acreedores / Operaciones Contables / Salida de
Pagos / Salida de Pagos Automática / Selección Vía de Pago/Banco para programa de pagos / Vías de Pago
por País para Pagos
Transacción: FBZP

Las vías de pago parametrizadas que nos importan son la 1 y la 2:

Fecha : 7/06/2019 Página 6 de 43


Módulo: 01
RDS Nro: Implementation Paper Versión:
FI-AP/BA
FI-AP-003
Autor: Fecha de creación
21/06/2005
Descripción breve: Solución integral cheques emitidos

La configuración interna de una vía de pago para cheques es la siguiente:

Si “crear efecto antes vencimiento” está tildado, no aparece el campo Fecha vencimiento en el
programa de pagos automáticos:

Fecha : 7/06/2019 Página 7 de 43


Módulo: 01
RDS Nro: Implementation Paper Versión:
FI-AP/BA
FI-AP-003
Autor: Fecha de creación
21/06/2005
Descripción breve: Solución integral cheques emitidos

Nótese que se utiliza el programa de pagos estándar de SAP R/3. (En la configuración de las vías
de pago por sociedad, se asignará el correspondiente formulario para las vías de pago de cheques
automáticos).

Falta Asignar
el programa a
via de pago 2

Notar arriba que se define el programa ZFIBIASIG para que se ejecute en la caída del cheque y genere un
batch input en el campo asignación de la partida de banco.

Monedas permitidas: en todas, ARS.

Fecha : 7/06/2019 Página 8 de 43


Módulo: 01
RDS Nro: Implementation Paper Versión:
FI-AP/BA
FI-AP-003
Autor: Fecha de creación
21/06/2005
Descripción breve: Solución integral cheques emitidos

Vías de Pago en la Sociedad


Path: IMG Gestión Financiera / Contabilidad de Deudores y Acreedores / Operaciones Contables / Salida de
Pagos / Salida de Pagos Automática / Selección Vía de Pago/Banco para programa de pagos / Vías de Pago
por Sociedad para Pagos
Transacción: FBZP

Se deben asignar todas las vías de pago creadas en el país, para poder ser utilizadas en cada sociedad:

Fecha : 7/06/2019 Página 9 de 43


Módulo: 01
RDS Nro: Implementation Paper Versión:
FI-AP/BA
FI-AP-003
Autor: Fecha de creación
21/06/2005
Descripción breve: Solución integral cheques emitidos

Esta via de pago no debe agrupar partidas (de ahí que se marcó Pago indiv.), porque tiene que haber una por
cada CME de Cheques diferidos que se dé de baja (c/u representa a 1 cheque).

Determinación de Bancos
Path: IMG Gestión Financiera / Contabilidad de Deudores y Acreedores / Operaciones Contables / Salida de
Pagos / Salida de Pagos Automática / Selección Vía de Pago / Banco para programa de pagos /
Determinación de Bancos para Pagos
Transacción: SPRO

En este punto se deben configurar las características de los bancos relacionados con la vía de pago a nivel de
sociedad. En el orden de jerarquía se configuran todas las vías de pago con su jerarquía 1 y su banco propio
correspondiente a cada vía de pago. Nos importan la 1 y la 2:

Fecha : 7/06/2019 Página 10 de 43


Módulo: 01
RDS Nro: Implementation Paper Versión:
FI-AP/BA
FI-AP-003
Autor: Fecha de creación
21/06/2005
Descripción breve: Solución integral cheques emitidos

En las cuentas bancarias se configuran todas las vías de pago con su correspondiente cuenta bancaria y
cuenta contable asociada. Nos importan la 1 y la 2:

Nótese que la cuenta transitoria es la cuenta clearing pagadora de cada uno de los bancos correspondientes a
la vía de pago. En caso de utilizarse una vía de pago para cheques diferidos, también se incorpora la cuenta de
compensación.
Para cargar la cta transitoria en la vía de pago 2, se modificó esta vía de pago para que sea temporalmente una
cuenta de efectos y luego se revirtió ese cambio.

En los importes previstos se configuran los topes para salidas de pago por cuenta bancaria:

Sustitución para vía de pago CPD-caída por pago automático

Transacción OBBH
Esta sustitución hace que si se trata de un documento de pago, de un CME de acreedores Haber (39), si ese
CME es el “S” (parametrizado arriba) y la vía de pago es 1, la reemplace por la vía de pago 2 (que el prog. de
pagos automáticos levantará para hacer caer en su fecha de vencimiento).

Fecha : 7/06/2019 Página 11 de 43


Módulo: 01
RDS Nro: Implementation Paper Versión:
FI-AP/BA
FI-AP-003
Autor: Fecha de creación
21/06/2005
Descripción breve: Solución integral cheques emitidos

En el ejemplo se incluyó como clase de documento la Z3 porque es la de Carga Inicial de Partidas Abiertas de
Proveedores.

Creación de job para ZRFCHKU00_CME (asigna nro cheque en el campo asignación del
documento de pago)-estándar modificado para que tenga en cuenta los Cheques de pago
diferido (CME)

Primero se debe guardar la variante (esto se hace sólo 1 vez)

TX. FCHU

Fecha : 7/06/2019 Página 12 de 43


Módulo: 01
RDS Nro: Implementation Paper Versión:
FI-AP/BA
FI-AP-003
Autor: Fecha de creación
21/06/2005
Descripción breve: Solución integral cheques emitidos

Grabar como variante.

Fecha : 7/06/2019 Página 13 de 43


Módulo: 01
RDS Nro: Implementation Paper Versión:
FI-AP/BA
FI-AP-003
Autor: Fecha de creación
21/06/2005
Descripción breve: Solución integral cheques emitidos

Al campo Fecha creación se lo marca como Variable de Selección...

Fecha : 7/06/2019 Página 14 de 43


Módulo: 01
RDS Nro: Implementation Paper Versión:
FI-AP/BA
FI-AP-003
Autor: Fecha de creación
21/06/2005
Descripción breve: Solución integral cheques emitidos

Fecha : 7/06/2019 Página 15 de 43


Módulo: 01
RDS Nro: Implementation Paper Versión:
FI-AP/BA
FI-AP-003
Autor: Fecha de creación
21/06/2005
Descripción breve: Solución integral cheques emitidos

Colocar la fecha que se desee.

Se programará un job para que su ejecución sea automática cada 12 hs:


SM36

Fecha : 7/06/2019 Página 16 de 43


Módulo: 01
RDS Nro: Implementation Paper Versión:
FI-AP/BA
FI-AP-003
Autor: Fecha de creación
21/06/2005
Descripción breve: Solución integral cheques emitidos

Grabar y clic en , fecha hora:

Luego , , ,

Y grabar.

El usuario de finanzas puede controlar la asignación de los cheques:


SM37

Fecha : 7/06/2019 Página 17 de 43


Módulo: 01
RDS Nro: Implementation Paper Versión:
FI-AP/BA
FI-AP-003
Autor: Fecha de creación
21/06/2005
Descripción breve: Solución integral cheques emitidos

Si posee el id , generó un spool. Se lo marca y clic en .

Haciendo clic en vemos los cheques asignados:

Fecha : 7/06/2019 Página 18 de 43


Módulo: 01
RDS Nro: Implementation Paper Versión:
FI-AP/BA
FI-AP-003
Autor: Fecha de creación
21/06/2005
Descripción breve: Solución integral cheques emitidos

Esto significa que el pago (con cheque) tendrá el nro de cheque (Entorno > Información de cheques) en el
campo asignación de la posición correspondiente. Si el pago fue automático (F110 con Vía de Pago que
genera CME e imprime cheque), será en la partida 39S del CME ...

Y si fue manual (F-58 o F-53 + FCH5), en la partida 50 del Banco.

Cheques que no pudieron ser asignados automáticamente:

Los cheques que salen en el log como “referencia a actualizar manualmente”:

Son aquellos que SAP no pudo asignar directamente por ej., porque hay más de una partida pagadora
apuntando al mismo cheque, o dos cheques al mismo doc. de pago (FB03 > Entorno > Info cheques):

Fecha : 7/06/2019 Página 19 de 43


Módulo: 01
RDS Nro: Implementation Paper Versión:
FI-AP/BA
FI-AP-003
Autor: Fecha de creación
21/06/2005
Descripción breve: Solución integral cheques emitidos

En este caso el usuario debe ingresar a cada uno de esos documentos y asignar el cheque manualmente
(FB02 > Nro doc > Doble clic en la partida a modificar)

Explicación de la utilización de la tr. F110 para generar la caída de los CPD y su utilización con el
reporte ZFIBIASIG (carga el campo asignación de la REGUP en el campo asignación del
documento de pago)

Todos los días se debe generar la caída de los Cheques de Pago Diferido que hayan vencido (Mariva,
Via de Pago 2).

De manera similar a lo visto previamente, se genera la variante para el programa ZFIBIASIG:

En la SE38 ejecutar el programa ZFIBIASIG

Fecha : 7/06/2019 Página 20 de 43


Módulo: 01
RDS Nro: Implementation Paper Versión:
FI-AP/BA
FI-AP-003
Autor: Fecha de creación
21/06/2005
Descripción breve: Solución integral cheques emitidos

Fecha : 7/06/2019 Página 21 de 43


Módulo: 01
RDS Nro: Implementation Paper Versión:
FI-AP/BA
FI-AP-003
Autor: Fecha de creación
21/06/2005
Descripción breve: Solución integral cheques emitidos

Para el ejemplo se utilizarán los cheques vencidos de los siguientes acreedores:

F110:

Fecha : 7/06/2019 Página 22 de 43


Módulo: 01
RDS Nro: Implementation Paper Versión:
FI-AP/BA
FI-AP-003
Autor: Fecha de creación
21/06/2005
Descripción breve: Solución integral cheques emitidos

En la solapa de Impresión... se coloca la variante definida anteriormente:

Si la fecha de ejecucion de la propuesta (en el ejemplo, 19.06.05), es la fecha del día, no es necesario
. Si no lo es, actualizarla y colocarle la fecha correcta.

Clic en marcando crear medio de pago:

Fecha : 7/06/2019 Página 23 de 43


Módulo: 01
RDS Nro: Implementation Paper Versión:
FI-AP/BA
FI-AP-003
Autor: Fecha de creación
21/06/2005
Descripción breve: Solución integral cheques emitidos

Las partidas abiertas CME han sido compensadas y ya no figuran como partidas abiertas (este es un
listado de partidas compensadas):

La posicion 29S cancela el CME pendiente, y en la posición 50 del banco se ha asentado el nro de
cheque:

Como se ve en el mayor que sigue, los cheques han pasado a la cuenta pagadora del banco, y en el
campo asignación figura el nro de cheque:

Fecha : 7/06/2019 Página 24 de 43


Módulo: 01
RDS Nro: Implementation Paper Versión:
FI-AP/BA
FI-AP-003
Autor: Fecha de creación
21/06/2005
Descripción breve: Solución integral cheques emitidos

Planificación de caída de los CPD con reporte ZFIBIASIG para que sea transparente para el
usuario

Transacción F110S

Fecha : 7/06/2019 Página 25 de 43


Módulo: 01
RDS Nro: Implementation Paper Versión:
FI-AP/BA
FI-AP-003
Autor: Fecha de creación
21/06/2005
Descripción breve: Solución integral cheques emitidos

Notar, en la variante, los campos de fecha que se marcan como Variable de selección:

Fecha : 7/06/2019 Página 26 de 43


Módulo: 01
RDS Nro: Implementation Paper Versión:
FI-AP/BA
FI-AP-003
Autor: Fecha de creación
21/06/2005
Descripción breve: Solución integral cheques emitidos

Grabar

Tr. SM36

Fecha : 7/06/2019 Página 27 de 43


Módulo: 01
RDS Nro: Implementation Paper Versión:
FI-AP/BA
FI-AP-003
Autor: Fecha de creación
21/06/2005
Descripción breve: Solución integral cheques emitidos

Luego , , , y grabar para liberarlo.

Los documentos generados cada día se pueden chequear en el log del job o también listando los documentos
(FB03) ya que el id.de propuesta y su fecha se graban en el texto de cabecera de los documentos.

Activación de user exit para que Extracto automático cargue el nro de cheque (o de operación)
en el campo asignación

Transacción SMOD
Ampliación FEB00001
Verificar

Doble clic en el EXIT.

Estamos en el Módulo funciones EXIT_RFEBBU10_001. Doble clic en


INCLUDE ZXF01U01
para crearlo.

Fecha : 7/06/2019 Página 28 de 43


Módulo: 01
RDS Nro: Implementation Paper Versión:
FI-AP/BA
FI-AP-003
Autor: Fecha de creación
21/06/2005
Descripción breve: Solución integral cheques emitidos

Este es el código para que el nro de cheque vaya al campo asignación, y que además en el texto de posición se
grabe:
EXT-EL + (Código de operación empresarial datanet) + (Texto que trae Datanet)

*&---------------------------------------------------------------------*
*& Include ZXF01U01 *
*& HUG - Softtek Argentina - 21.06.2005 *
*&---------------------------------------------------------------------*
e_febko = i_febko.
e_febep = i_febep.

IF sy-tcode = 'FF.5'.
IF NOT e_febep-chect IS INITIAL. "Ins
e_febep-zuonr = e_febep-chect.
ELSE. "Ins
e_febep-zuonr = e_febep-valut. "Ins
ENDIF. "Ins

READ TABLE t_febre INDEX 2.

CONCATENATE 'EXT-EL '


e_febep-vorgc "Código de operación empresarial datanet
t_febre-vwezw "Texto que trae la posición de Datanet
INTO e_febep-sgtxt "Texto de posición
SEPARATED BY space.
ELSE.

ENDIF.

Grabar y activar.

En la SMOD, marcar el exit y activarlo

Ej:

Fecha : 7/06/2019 Página 29 de 43


Módulo: 01
RDS Nro: Implementation Paper Versión:
FI-AP/BA
FI-AP-003
Autor: Fecha de creación
21/06/2005
Descripción breve: Solución integral cheques emitidos

Anexo I: Código del programa ZRFCHKU00_CME

************************************************************************
* Copy The Check Number In A Reference Document Field *
*----------------------------------------------------------------------*
* -> If a further field of the document is to be filled with *
* the check number, additional lines, which correspond *
* with ** (double star) characterized lines, must are inserted. *
************************************************************************
* Hugo Glagovsky Softtek-21/06/2005
* Copia del programa estándar RFCHKU00 y modificación para adaptarlo a la
* utilización de CME (para cheques de pago diferido).
************************************************************************

REPORT ZRFCHKU00_CME
MESSAGE-ID FS
NO STANDARD PAGE HEADING
LINE-SIZE 132.

*----------------------------------------------------------------------*
* Data Declarations *
*----------------------------------------------------------------------*
INCLUDE FF05LCDV. "function module BELEG_WRITE_DOCUMENT
INCLUDE FF05LCDF. "form CD_CALL_BELEG

TABLES:
* -> If further fields of a document are to be filled with
* the check number, additional reference flags must be maintained
* in the value table of the domain of PAYR-IREFE.
PAYR, "Payment transfer medium file
T001, "Company Codes
BSEG, "Accounting document segment
RFSDO, "Data elements for selection
BSEC, BSED, BSET. "Dummy Tables for
"function module CHANGE_DOCUMENT

TYPES:
BEGIN OF PROTOCOL_LINE, "Protocol line
ZBUKR LIKE PAYR-ZBUKR,
VBLNR LIKE PAYR-VBLNR,
GJAHR LIKE PAYR-GJAHR,
HBKID LIKE PAYR-HBKID,
HKTID LIKE PAYR-HKTID,
RZAWE LIKE PAYR-RZAWE,
CHECT LIKE PAYR-CHECT,
END OF PROTOCOL_LINE.

RANGES:
R_LAUFD FOR PAYR-LAUFD, "Date on which the program is to be run
R_LAUFI FOR PAYR-LAUFI. "Additional identification

DATA:
T_PAYR LIKE PAYR OCCURS 0 WITH HEADER LINE,
T_BKPF LIKE BKPF OCCURS 1 WITH HEADER LINE,
T_BSEG LIKE BSEG OCCURS 0 WITH HEADER LINE,
T_BKDF LIKE BKDF OCCURS 0 WITH HEADER LINE,
T_BSEC LIKE BSEC OCCURS 0 WITH HEADER LINE,
T_BSED LIKE BSED OCCURS 0 WITH HEADER LINE,
T_BSET LIKE BSET OCCURS 0 WITH HEADER LINE,
T_LAUFK LIKE ILAUFK OCCURS 0 WITH HEADER LINE,
T_UPDATE TYPE PROTOCOL_LINE OCCURS 0 WITH HEADER LINE,
T_QUEUE TYPE PROTOCOL_LINE OCCURS 0 WITH HEADER LINE,
T_ERROR TYPE PROTOCOL_LINE OCCURS 0 WITH HEADER LINE,
t_multi TYPE protocol_line OCCURS 0 WITH HEADER LINE,
W_XBSEG LIKE FBSEG,
W_YBSEG LIKE FBSEG,
I_REFKZ LIKE PAYR-IREFE,
I_NOPROT TYPE C VALUE 'X',
I_PTYPE TYPE C,
I_PAGEEND TYPE C VALUE 'X',
I_INTENSIFIED TYPE C,
IS_ZBUKR(10) TYPE C,

Fecha : 7/06/2019 Página 30 de 43


Módulo: 01
RDS Nro: Implementation Paper Versión:
FI-AP/BA
FI-AP-003
Autor: Fecha de creación
21/06/2005
Descripción breve: Solución integral cheques emitidos

IS_VBLNR(10) TYPE C,
IS_GJAHR(10) TYPE C,
IS_HBKID(10) TYPE C,
IS_HKTID(10) TYPE C,
IS_RZAWE(10) TYPE C,
IM_CHECT(20) TYPE C.

*----------------------------------------------------------------------*
* Selections *
*----------------------------------------------------------------------*
SELECT-OPTIONS:
S_ZBUK FOR PAYR-ZBUKR, "Paying company code
S_BANK FOR PAYR-HBKID, "Short key for a house bank
S_ACCO FOR PAYR-HKTID. "ID for account details

SELECTION-SCREEN:
SKIP 1,
BEGIN OF BLOCK BL0 WITH FRAME TITLE TEXT-001.
* TEXT-001: 'General selections'
SELECT-OPTIONS:
S_CHEC FOR PAYR-CHECT, "Check number
S_VBLN FOR PAYR-VBLNR, "Document number
S_ZALD FOR RFSDO-CHKLADAT, "Check date
S_CPUD FOR RFSDO-CHKLEDAT, "Print date
S_USER FOR RFSDO-CHKLUSER, "Print user
S_ZWEG FOR PAYR-RZAWE. "Payment method
SELECTION-SCREEN:
BEGIN OF LINE,
COMMENT 01(31) TEXT-002 FOR FIELD ZW_LAUFD.
* TEXT-002: 'Checks from a pay run'
PARAMETERS:
ZW_LAUFD LIKE PAYR-LAUFD. "Date on which the program is to be run
SELECTION-SCREEN POSITION 46.
PARAMETERS:
ZW_LAUFI LIKE PAYR-LAUFI, "Additional identification
ZW_XVORL LIKE REGUH-XVORL NO-DISPLAY.
SELECTION-SCREEN:
END OF LINE,
END OF BLOCK BL0.

SELECTION-SCREEN:
BEGIN OF BLOCK BL1 WITH FRAME TITLE TEXT-003,
* TEXT-003: 'Selection of a target field for the check number'
BEGIN OF LINE,
POSITION 1.
* Fill the reference document number with the check number
PARAMETERS: P_XBLNR RADIOBUTTON GROUP FUNC DEFAULT 'X'.
SELECTION-SCREEN: COMMENT 3(40) IL_XBLNR FOR FIELD P_XBLNR,
END OF LINE,
BEGIN OF LINE,
POSITION 1.
* Fill the allocation number with the check number
PARAMETERS: P_ZUONR RADIOBUTTON GROUP FUNC.
SELECTION-SCREEN: COMMENT 3(40) IL_ZUONR FOR FIELD P_ZUONR,
END OF LINE,
BEGIN OF LINE,
POSITION 1.
* Fill the reference key for line item with the check number
PARAMETERS: P_XREF3 RADIOBUTTON GROUP FUNC.
SELECTION-SCREEN: COMMENT 3(40) IL_XREF3 FOR FIELD P_XREF3,
END OF LINE,
**BEGIN OF LINE, POSITION 1.
** PARAMETERS: Further_Parameter RADIOBUTTON GROUP FUNC.
** SELECTION-SCREEN: COMMENT 3(50) Label_Variable.
**END OF LINE,
END OF BLOCK BL1.

*----------------------------------------------------------------------*
* Initialization *
*----------------------------------------------------------------------*
INITIALIZATION.
REFRESH T_LAUFK.
T_LAUFK-LAUFK = 'W'.
T_LAUFK-SIGN = 'E'.
APPEND T_LAUFK.

Fecha : 7/06/2019 Página 31 de 43


Módulo: 01
RDS Nro: Implementation Paper Versión:
FI-AP/BA
FI-AP-003
Autor: Fecha de creación
21/06/2005
Descripción breve: Solución integral cheques emitidos

PERFORM GET_LABEL USING 'PAYR' 'S': 'ZBUKR' IS_ZBUKR,


'VBLNR' IS_VBLNR,
'GJAHR' IS_GJAHR,
'HBKID' IS_HBKID,
'HKTID' IS_HKTID,
'RZAWE' IS_RZAWE.
PERFORM GET_LABEL USING 'PAYR' 'M': 'CHECT' IM_CHECT.
PERFORM GET_LABEL USING 'BKPF' 'L': 'XBLNR' IL_XBLNR.
PERFORM GET_LABEL USING 'BSEG' 'L': 'ZUONR' IL_ZUONR,
'XREF3' IL_XREF3.

*----------------------------------------------------------------------*
* Check Of The Selections *
*----------------------------------------------------------------------*
AT SELECTION-SCREEN ON S_ZBUK.
SELECT * FROM T001 WHERE BUKRS IN S_ZBUK.
AUTHORITY-CHECK OBJECT 'F_PAYR_BUK' ID 'BUKRS' FIELD T001-BUKRS
ID 'ACTVT' FIELD '02'.
* Authority check
IF SY-SUBRC <> 0.
SET CURSOR FIELD 'S_ZBUK'.
MESSAGE E515 WITH S_ZBUK.
ENDIF.
ENDSELECT.
* Company code check
IF SY-SUBRC <> 0.
MESSAGE E511 WITH S_ZBUK.
ENDIF.

*---------------------------------------------------------------------*
* F1-Help For Radiobuttons *
*---------------------------------------------------------------------*
AT SELECTION-SCREEN ON HELP-REQUEST FOR P_XBLNR.
CALL FUNCTION 'HELP_OBJECT_SHOW_FOR_FIELD'
EXPORTING CALLED_FOR_TAB = 'BKPF'
CALLED_FOR_FIELD = 'XBLNR'.
AT SELECTION-SCREEN ON HELP-REQUEST FOR P_ZUONR.
CALL FUNCTION 'HELP_OBJECT_SHOW_FOR_FIELD'
EXPORTING CALLED_FOR_TAB = 'BSEG'
CALLED_FOR_FIELD = 'ZUONR'.
AT SELECTION-SCREEN ON HELP-REQUEST FOR P_XREF3.
CALL FUNCTION 'HELP_OBJECT_SHOW_FOR_FIELD'
EXPORTING CALLED_FOR_TAB = 'BSEG'
CALLED_FOR_FIELD = 'XREF3'.

*---------------------------------------------------------------------*
* F4 For Payment Method *
*---------------------------------------------------------------------*
AT SELECTION-SCREEN ON VALUE-REQUEST FOR ZW_LAUFD.
CALL FUNCTION 'F4_ZAHLLAUF'
EXPORTING F1TYP = 'D'
F1NME = 'ZW_LAUFD'
F2NME = 'ZW_LAUFI'
IMPORTING LAUFD = ZW_LAUFD
LAUFI = ZW_LAUFI
TABLES LAUFK = T_LAUFK.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR ZW_LAUFI.
CALL FUNCTION 'F4_ZAHLLAUF'
EXPORTING F1TYP = 'I'
F1NME = 'ZW_LAUFI'
F2NME = 'ZW_LAUFD'
IMPORTING LAUFD = ZW_LAUFD
LAUFI = ZW_LAUFI
TABLES LAUFK = T_LAUFK.

*----------------------------------------------------------------------*
* List Title *
*----------------------------------------------------------------------*
TOP-OF-PAGE.
FORMAT COLOR COL_BACKGROUND INTENSIFIED ON.
CASE I_PTYPE.
WHEN 'U'.
IF P_XBLNR = 'X'.
WRITE TEXT-004.

Fecha : 7/06/2019 Página 32 de 43


Módulo: 01
RDS Nro: Implementation Paper Versión:
FI-AP/BA
FI-AP-003
Autor: Fecha de creación
21/06/2005
Descripción breve: Solución integral cheques emitidos

* TEXT-004: 'Reference document numbers with check numbers'


ELSEIF P_ZUONR = 'X'.
WRITE TEXT-005.
* TEXT-005: 'Allocation numbers with check numbers'
ELSEIF P_XREF3 = 'X'.
WRITE TEXT-006.
* TEXT-006: 'Reference keys for line items with check numbers'
** ELSEIF Further_Parameter = 'X'.
** WRITE Text_element_with_list_header_text.
ENDIF.
WHEN 'Q'.
WRITE TEXT-007.
* TEXT-007: 'By other users closed documents'
WHEN 'E'.
WRITE TEXT-008.
* TEXT-008: 'Error with the document update'
WHEN 'M'.
WRITE text-009.
* TEXT-009: 'Maintain the check reference manually'
ENDCASE.
WRITE 84 SY-PAGNO.
FORMAT COLOR COL_HEADING INTENSIFIED ON.
WRITE: / SY-ULINE(88),
/01 SY-VLINE NO-GAP, IS_ZBUKR, "Company code
12 SY-VLINE NO-GAP, IS_VBLNR, "Document number
23 SY-VLINE NO-GAP, IS_GJAHR, "Fiscal Year
34 SY-VLINE NO-GAP, IS_HBKID, "Bank key
45 SY-VLINE NO-GAP, IS_HKTID, "Bank account key
56 SY-VLINE NO-GAP, IS_RZAWE, "payment method
67 SY-VLINE NO-GAP, IM_CHECT, "Check number
88 SY-VLINE NO-GAP,
/ SY-ULINE(88).

END-OF-PAGE.
IF I_PAGEEND = 'X'.
WRITE: / SY-ULINE(88).
ENDIF.

*----------------------------------------------------------------------*
* Main Program *
*----------------------------------------------------------------------*
START-OF-SELECTION.
* Conversion of the payment method Parameters into Select-Options
IF NOT ZW_LAUFD IS INITIAL.
CLEAR R_LAUFD.
R_LAUFD-LOW = ZW_LAUFD.
R_LAUFD-OPTION = 'EQ'.
R_LAUFD-SIGN = 'I'.
APPEND R_LAUFD.
ENDIF.
IF NOT ZW_LAUFI IS INITIAL.
CLEAR R_LAUFI.
R_LAUFI-LOW = ZW_LAUFI.
R_LAUFI-OPTION = 'EQ'.
R_LAUFI-SIGN = 'I'.
APPEND R_LAUFI.
ENDIF.

* Reading of the payment transfer mediums, whose numbers are to filled


* in the selected field of document
SELECT * FROM PAYR INTO TABLE T_PAYR
WHERE IREFE = SPACE
AND VOIDR = 0
AND LAUFD IN R_LAUFD
AND LAUFI IN R_LAUFI
AND ZBUKR IN S_ZBUK
AND HBKID IN S_BANK
AND HKTID IN S_ACCO
AND RZAWE IN S_ZWEG
AND CHECT IN S_CHEC
AND ZALDT IN S_ZALD
AND PRIDT IN S_CPUD
AND PRIUS IN S_USER
AND VBLNR IN S_VBLN
AND VBLNR <> SPACE.

Fecha : 7/06/2019 Página 33 de 43


Módulo: 01
RDS Nro: Implementation Paper Versión:
FI-AP/BA
FI-AP-003
Autor: Fecha de creación
21/06/2005
Descripción breve: Solución integral cheques emitidos

LOOP AT T_PAYR.
CLEAR: T_BKPF, T_BSEG.
CLEAR: xbseg, ybseg, *bkpf, bkpf.
REFRESH: xbseg, ybseg.
REFRESH t_bkpf.
* if a payment document is referenced more than once,
* it is not possible to determine the check number
SELECT * FROM payr UP TO 2 ROWS
WHERE zbukr = t_payr-zbukr
AND vblnr = t_payr-vblnr
AND gjahr = t_payr-gjahr
AND voidr = 0.
ENDSELECT.
IF sy-dbcnt > 1.
MOVE-CORRESPONDING t_payr TO t_multi.
APPEND t_multi.
CONTINUE.
ENDIF.
* Reading of the document header
SELECT SINGLE * FROM BKPF INTO T_BKPF
WHERE BUKRS = T_PAYR-ZBUKR
AND BELNR = T_PAYR-VBLNR
AND GJAHR = T_PAYR-GJAHR.
CHECK SY-SUBRC = 0.
*BKPF = T_BKPF.
* Fill a field of the BKPF table with the check number
IF P_XBLNR = 'X'.
* Fill the reference document number with the check number
T_BKPF-XBLNR = T_PAYR-CHECT.
I_REFKZ = '1'.
** ELSEIF Further_Parameter_Of_A_BKPF_Field = 'X'.
** t_bkpf-Document_Field_Name = t_payr-chect.
** i_refkz = Defined_Reference_Item.
ELSE.
* Fill a field of the BSEG table with the check number
* Reading of the document items
SELECT * FROM BSEG INTO TABLE T_BSEG
WHERE BUKRS = T_PAYR-ZBUKR
AND BELNR = T_PAYR-VBLNR
AND GJAHR = T_PAYR-GJAHR
AND HKONT = T_PAYR-UBHKT.

***************************************************************************
* Begin Insert STK-HUG-21/06/2005
* Si el pago fue a la CME, no lo va a encontrar, porque la BSEG-HKONT tiene
* el nro de cuenta de la CME (ej., CPD Emitidos, 211210003) y en PAYR-UBHKT
* está la cuenta del banco (111210041), por lo tanto BSEG-HKONT nunca va a
* ser igual a PAYR-UBHKT si el pago fue con CME.
if sy-subrc ne 0.

* Busco si el pago se dio contra una CME en vez de Banco pagadora.


SELECT * FROM BSEG INTO TABLE T_BSEG
WHERE BUKRS = T_PAYR-ZBUKR
AND BELNR = T_PAYR-VBLNR
AND GJAHR = T_PAYR-GJAHR
AND UMSKS = 'W'. "CME de cheque

endif.
* End Insert STK-HUG-21/06/2005
**************************************************************************

CHECK SY-SUBRC = 0.
LOOP AT T_BSEG.
MOVE-CORRESPONDING T_BSEG TO W_YBSEG.
APPEND W_YBSEG TO YBSEG.
IF P_ZUONR = 'X'.
* Fill the allocation number with the check number
T_BSEG-ZUONR = T_PAYR-CHECT.
I_REFKZ = '2'.
ELSEIF P_XREF3 = 'X'.
* Fill the reference key for line item with the check number
T_BSEG-XREF3 = T_PAYR-CHECT.
I_REFKZ = '3'.

Fecha : 7/06/2019 Página 34 de 43


Módulo: 01
RDS Nro: Implementation Paper Versión:
FI-AP/BA
FI-AP-003
Autor: Fecha de creación
21/06/2005
Descripción breve: Solución integral cheques emitidos

** ELSEIF Further_Parameter_Of_A_BSEG_Field = 'X'.


** t_bseg-Document_Field_Name = t_payr-chect.
** i_refkz = Defined_Reference_Item.
ENDIF.
MODIFY T_BSEG.
MOVE-CORRESPONDING T_BSEG TO W_XBSEG.
APPEND W_XBSEG TO XBSEG.
ENDLOOP.
UPD_BSEG = 'U'.
ENDIF.
BKPF = T_BKPF.
APPEND T_BKPF.
UPD_BKPF = 'U'.
* Enqueue document for update
CALL FUNCTION 'ENQUEUE_EFBKPF'
EXPORTING MODE_BKPF = 'E'
MANDT = SY-MANDT
BUKRS = T_BKPF-BUKRS
BELNR = T_BKPF-BELNR
GJAHR = T_BKPF-GJAHR
EXCEPTIONS FOREIGN_LOCK = 1
SYSTEM_FAILURE = 2
OTHERS = 3.
IF SY-SUBRC = 0.
* Enqueque payment transfer medium for update
CALL FUNCTION 'ENQUEUE_EFPAYR'
EXPORTING MODE_PAYR = 'E'
MANDT = SY-MANDT
ZBUKR = T_PAYR-ZBUKR
HBKID = T_PAYR-HBKID
HKTID = T_PAYR-HKTID
RZAWE = T_PAYR-RZAWE
CHECT = T_PAYR-CHECT
EXCEPTIONS FOREIGN_LOCK = 1
SYSTEM_FAILURE = 2
OTHERS = 3.
IF SY-SUBRC = 0.
* Document update
CALL FUNCTION 'CHANGE_DOCUMENT'
TABLES T_BKDF = T_BKDF
T_BKPF = T_BKPF
T_BSEC = T_BSEC
T_BSED = T_BSED
T_BSEG = T_BSEG
T_BSET = T_BSET
EXCEPTIONS OTHERS = 4.
IF SY-SUBRC = 0.
* Update of payment transfer medium
UPDATE PAYR SET IREFE = I_REFKZ
WHERE ZBUKR = T_PAYR-ZBUKR
AND HBKID = T_PAYR-HBKID
AND HKTID = T_PAYR-HKTID
AND RZAWE = T_PAYR-RZAWE
AND CHECT = T_PAYR-CHECT.
IF SY-SUBRC = 0.
* Fill the update protocol item table
MOVE-CORRESPONDING T_PAYR TO T_UPDATE.
APPEND T_UPDATE.
* Create a change document for the document modifications
OBJECTID = BKPF(21).
TCODE = 'FCHU'.
UTIME = SY-UZEIT.
UDATE = SY-DATUM.
USERNAME = SY-UNAME.
SET UPDATE TASK LOCAL.
PERFORM CD_CALL_BELEG.
COMMIT WORK.
ELSE.
ROLLBACK WORK.
MOVE-CORRESPONDING T_PAYR TO T_ERROR.
APPEND T_ERROR.
ENDIF.
ELSE.
ROLLBACK WORK.
MOVE-CORRESPONDING T_PAYR TO T_ERROR.

Fecha : 7/06/2019 Página 35 de 43


Módulo: 01
RDS Nro: Implementation Paper Versión:
FI-AP/BA
FI-AP-003
Autor: Fecha de creación
21/06/2005
Descripción breve: Solución integral cheques emitidos

APPEND T_ERROR.
ENDIF.
* Dequeque payment transfer medium after update
CALL FUNCTION 'DEQUEUE_EFPAYR'
EXPORTING MODE_PAYR = 'E'
MANDT = SY-MANDT
ZBUKR = T_PAYR-ZBUKR
HBKID = T_PAYR-HBKID
HKTID = T_PAYR-HKTID
RZAWE = T_PAYR-RZAWE
CHECT = T_PAYR-CHECT.
ELSE.
MOVE-CORRESPONDING T_PAYR TO T_QUEUE.
APPEND T_QUEUE.
ENDIF.
* Dequeue document after update
CALL FUNCTION 'DEQUEUE_EFBKPF'
EXPORTING MODE_BKPF = 'E'
MANDT = SY-MANDT
BUKRS = T_BKPF-BUKRS
BELNR = T_BKPF-BELNR
GJAHR = T_BKPF-GJAHR.
ELSE.
MOVE-CORRESPONDING T_PAYR TO T_QUEUE.
APPEND T_QUEUE.
ENDIF.
ENDLOOP.
* Protocol output of updated documents
LOOP AT T_UPDATE.
AT FIRST.
CLEAR I_NOPROT.
I_PTYPE = 'U'.
NEW-PAGE.
ENDAT.
PERFORM PROTOCOL_OUTPUT USING T_UPDATE.
AT LAST.
WRITE: / SY-ULINE(88).
CLEAR I_PAGEEND.
ENDAT.
ENDLOOP.
* Protocol output of closed documents
LOOP AT T_QUEUE.
AT FIRST.
I_PAGEEND = 'X'.
I_PTYPE = 'Q'.
NEW-PAGE.
ENDAT.
PERFORM PROTOCOL_OUTPUT USING T_QUEUE.
AT LAST.
WRITE: / sy-uline(88).
CLEAR i_pageend.
ENDAT.
ENDLOOP.
* Protocol output of multiple checks for
* one payment document.
LOOP AT t_multi.
AT FIRST.
i_pageend = 'X'.
i_ptype = 'M'.
NEW-PAGE.
ENDAT.
PERFORM protocol_output USING t_multi.
AT LAST.
WRITE: / SY-ULINE(88).
CLEAR I_PAGEEND.
ENDAT.
ENDLOOP.
* Protocol output of update errors
LOOP AT T_ERROR.
AT FIRST.
I_PAGEEND = 'X'.
I_PTYPE = 'E'.
NEW-PAGE.
ENDAT.
PERFORM PROTOCOL_OUTPUT USING T_ERROR.

Fecha : 7/06/2019 Página 36 de 43


Módulo: 01
RDS Nro: Implementation Paper Versión:
FI-AP/BA
FI-AP-003
Autor: Fecha de creación
21/06/2005
Descripción breve: Solución integral cheques emitidos

AT LAST.
WRITE: / SY-ULINE(88).
CLEAR I_PAGEEND.
ENDAT.
ENDLOOP.
* Check whether a document field was filled with a check number
IF I_NOPROT = 'X'.
MESSAGE I321.
ENDIF.

* 'form cd_call_beleg'
INCLUDE FF05LCDC.

*----------------------------------------------------------------------*
* Write A Protocol Item *
*----------------------------------------------------------------------*
FORM PROTOCOL_OUTPUT USING PLINE TYPE PROTOCOL_LINE.
IF I_INTENSIFIED = SPACE.
FORMAT COLOR COL_NORMAL INTENSIFIED OFF.
I_INTENSIFIED = 'X'.
ELSE.
FORMAT COLOR COL_NORMAL INTENSIFIED ON.
I_INTENSIFIED = ' '.
ENDIF.
WRITE: /01 SY-VLINE NO-GAP,
PLINE-ZBUKR NO-GAP, 12 SY-VLINE NO-GAP,
PLINE-VBLNR NO-GAP, 23 SY-VLINE NO-GAP,
PLINE-GJAHR NO-GAP, 34 SY-VLINE NO-GAP,
PLINE-HBKID NO-GAP, 45 SY-VLINE NO-GAP,
PLINE-HKTID NO-GAP, 56 SY-VLINE NO-GAP,
PLINE-RZAWE NO-GAP, 67 SY-VLINE NO-GAP,
PLINE-CHECT NO-GAP, 88 SY-VLINE NO-GAP.
ENDFORM.

*----------------------------------------------------------------------*
* Get The Data Dictionary Label Of A Table Field *
*----------------------------------------------------------------------*
FORM GET_LABEL USING TABLE_NAME TYPE DDOBJNAME
LABEL_TYPE TYPE CLIKE
FIELD_NAME TYPE DFIES-FIELDNAME
CHANGING LABEL TYPE CLIKE.
DATA: lt_dfies like dfies occurs 0 with header line.

CALL FUNCTION 'DDIF_FIELDINFO_GET'


EXPORTING TABNAME = TABLE_NAME
FIELDNAME = FIELD_NAME
LANGU = SY-LANGU
tables DFIES_tab = lt_dfies
EXCEPTIONS NOT_FOUND =1
INTERNAL_ERROR = 2
OTHERS = 3.
IF SY-SUBRC = 0.
read table lt_dfies index 1.
CASE LABEL_TYPE.
WHEN 'S'. LABEL = lt_dfies-SCRTEXT_S.
WHEN 'M'. LABEL = lt_dfies-SCRTEXT_M.
WHEN 'L'. LABEL = lt_dfies-SCRTEXT_L.
ENDCASE.
ENDIF.
ENDFORM.

Fecha : 7/06/2019 Página 37 de 43


Módulo: 01
RDS Nro: Implementation Paper Versión:
FI-AP/BA
FI-AP-003
Autor: Fecha de creación
21/06/2005
Descripción breve: Solución integral cheques emitidos

Anexo IIa: Código del programa ZFIBIASIG


*&---------------------------------------------------------------------*
*& Report ZFIBIASIG *
*& *
*&---------------------------------------------------------------------*

REPORT ZFIBIASIG .

*--------------------------------------------------------------------*
* Batch Input para cargar el campo asignación mediante la FB09 *
*--------------------------------------------------------------------*
* Fecha : 10.06.2005 - STK Argentina *
*--------------------------------------------------------------------*

TABLES:
regup.

* Constantes del Programa


CONSTANTS:
cc_tcode LIKE tstc-tcode VALUE 'FB09'.

* Estructura del Archivo de Entrada


TYPES:
BEGIN OF type_regup,
bukrs LIKE regup-bukrs,
vblnr LIKE regup-vblnr,
gjahr LIKE regup-gjahr,
zuonr LIKE regup-zuonr,
END OF type_regup.

* Declaración de las variables


DATA:
t_regup TYPE type_regup OCCURS 0 WITH HEADER LINE.

*---------------------------------------------------------------------
* Parameters box 1
SELECTION-SCREEN BEGIN OF BLOCK block1 WITH FRAME TITLE text-001.
PARAMETERS:
p_laufd LIKE f110v-laufd OBLIGATORY,
p_laufi LIKE f110v-laufi OBLIGATORY,
pc_mode TYPE c DEFAULT 'N' NO-DISPLAY.
SELECTION-SCREEN END OF BLOCK block1.

INCLUDE zfibiasig_include.

AT SELECTION-SCREEN.

PERFORM validar_fecha.

************************************************************************
START-OF-SELECTION.

DATA: lc_subrc LIKE sy-subrc.


REFRESH: h_bdc.
CLEAR: i_nro_read, ni_nro_save, c_qid.

* Traigo las posiciones de los pagos


PERFORM obtener_datos.

LOOP AT t_regup.
* Cargar datos para la primera pantalla
PERFORM carga_sapmf05l_0102.

* Cargar datos para la segunda pantalla


PERFORM carga_sapmf05l_0300.

* Cargar datos para pop-up


PERFORM carga_saplkacb_0002.

* Llamada a la Transacción

Fecha : 7/06/2019 Página 38 de 43


Módulo: 01
RDS Nro: Implementation Paper Versión:
FI-AP/BA
FI-AP-003
Autor: Fecha de creación
21/06/2005
Descripción breve: Solución integral cheques emitidos

PERFORM process_data USING lc_subrc.


ENDLOOP.

END-OF-SELECTION.

*&---------------------------------------------------------------------*
*& Form obtener_datos
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM obtener_datos.

SELECT *
FROM regup
INTO CORRESPONDING FIELDS OF TABLE t_regup
WHERE laufd = p_laufd AND
laufi = p_laufi AND
xvorl = ''.
ENDFORM. " obtener_datos

*&---------------------------------------------------------------------*
*& Form carga_sapmf05l_0102
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM carga_sapmf05l_0102.

* Datos de la primera pantalla


PERFORM insert_line USING:
'X' 'SAPMF05L' '0102',
' ' 'BDC_OKCODE' '/00',
' ' 'RF05L-BELNR' t_regup-vblnr, " Nro de Documento
' ' 'RF05L-BUKRS' t_regup-bukrs, " Sociedad
' ' 'RF05L-GJAHR' t_regup-gjahr, " Ejercicio
' ' 'RF05L-XKSAK' 'X', " Cuentas de Mayor
' ' 'RF05L-XKANL' '',
' ' 'RF05L-XKDEB' '',
' ' 'RF05L-XKKRE' '',
' ' 'RF05L-BUZEI' ''. " Posición

ENDFORM. " carga_sapmf05l_0102


*&---------------------------------------------------------------------*
*& Form carga_sapmf05l_0300
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM carga_sapmf05l_0300.

* Datos de la segunda pantalla


PERFORM insert_line USING:
'X' 'SAPMF05L' '0300',
' ' 'BDC_OKCODE' '=AE',
' ' 'BSEG-ZUONR' t_regup-zuonr. " Asignación

ENDFORM. " carga_sapmf05l_0300


*&---------------------------------------------------------------------*
*& Form carga_saplkacb_0002
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM carga_saplkacb_0002.

Fecha : 7/06/2019 Página 39 de 43


Módulo: 01
RDS Nro: Implementation Paper Versión:
FI-AP/BA
FI-AP-003
Autor: Fecha de creación
21/06/2005
Descripción breve: Solución integral cheques emitidos

* Pop-Up
PERFORM insert_line USING:
'X' 'SAPLKACB' '0002',
' ' 'BDC_OKCODE' '=ENTE'.

ENDFORM. " carga_saplkacb_0002


*&---------------------------------------------------------------------*
*& Form validar_fecha
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM validar_fecha.

IF NOT p_laufd IS INITIAL.


SELECT SINGLE *
FROM regup
WHERE laufd = p_laufd AND
laufi = p_laufi.

IF NOT sy-subrc IS INITIAL.


MESSAGE s002(zfi) WITH 'Verificar fecha e identificación.'.
STOP.
ENDIF.
ENDIF.
ENDFORM. " validar_fecha

Anexo IIb: Código del programa ZFIBIASIG_INCLUDE


*&---------------------------------------------------------------------*
* Include ZFIBIASIG_INCLUDE.
*-----------------------------------------------------------------------
* Programa: Include ZFIBIASIG_INCLUDE.
* Descripción: Include auxiliar p/ batch input c/ arq. entrada
* Softtek Argentina
* Data : 10.06.2005
*-----------------------------------------------------------------------
TABLES:
abap, " Declaraciones de tipo de lenguaje interno ABAP
usr01. " Tabla de usuarios

TYPES:
x_msg_type(80) TYPE c,
BEGIN OF type_bdc, " Bdc table
tables LIKE bdcdata OCCURS 0,
END OF type_bdc.

FIELD-SYMBOLS: <tables_bdc> TYPE type_bdc, " Bdc table


<transaction> TYPE c. " Transaction
DATA:
t_time1 LIKE sy-uzeit, " Initial time
t_time2 LIKE sy-uzeit, " Final time
t_totalt LIKE sy-uzeit, " Total time
c_group_aux LIKE apqi-groupid,
messtab LIKE bdcmsgcoll OCCURS 0 WITH HEADER LINE," Message tabl
i_nro_read TYPE i, " Total for read records
ni_nro_save TYPE i, " Total for saved records
ni_save_bi TYPE i, " Total for saved records BI
i_reject TYPE i, " counts rejected records
h_bdc TYPE type_bdc OCCURS 0 WITH HEADER LINE, " Bdc table
h_bdc2 LIKE bdcdata OCCURS 0 WITH HEADER LINE, " Bdc table
c_qid LIKE apqi-qid, " Session Id
i_avance TYPE i, " Numero de avance de porcentage
i_reg TYPE i." Cantidad de registros del archivo entrada

DEFINE alert_message.
case &1.
when -1.
write: /5 '¡Error en la apertura del archivo!', &2.

Fecha : 7/06/2019 Página 40 de 43


Módulo: 01
RDS Nro: Implementation Paper Versión:
FI-AP/BA
FI-AP-003
Autor: Fecha de creación
21/06/2005
Descripción breve: Solución integral cheques emitidos

when -2.
write: /5 '¡Error en el cierre del archivo!', &2.
when -3.
write: /5 'DONE: ¡Sesión no puede ser cerrada!'.
when -4.
write: /5 'DONE: Archivo no puede ser cerrado!'.
when -5.
write: /5 'SUBMIT: ¡Job no puede ser abierto!'.
when -6.
write: /5 'SUBMIT: ¡Job no puede ser cerrado!'.
when -7.
write /5 'PROC: ¡Transacción no puede ser ejecutada!'.
when -8.
write /5 'PROC: ¡Archivo de entrada vacío!'.
when 0.
write /5 '¡Fin de Ejecución!'.
when 1.
write /5 'LOAD_FILE: ¡Archivo abierto exitosamente!'.
when 2.
write /5 'PROC: ¡Procesado exitosamente!'.
uline /5.
write:
/10 sy-title,
/10 'Usuario:', sy-uname, 'Programa', sy-repid,
/10 'Número de registros leidos:............:', 50 i_nro_read,
/10 'Número de registros en call transaction:', 50 ni_nro_save,
/10 'Número de registros en juego de datos..:', 50 ni_save_bi,
/10 'Hora inicial:..........................:', 52 t_time1,
/10 'Hora final:............................:', 52 t_time2,
/10 'Tiempo de ejecución:...................:', 52 t_totalt.
when 3.
write: /5 'PROC: ¡Sesion terminada exitosamente!', c_group_aux.
when 4.
write: /5 'SUBMIT: ¡Job fue creado exitosamente!'.
when 5.
write: /5 'SUBMIT: ¡Job ejecutado exitosamente!'.
when 6.
write: /5 'PROC: ¡Sesion abierta exitosamente!', c_group_aux.
when 7.
write /5 'PROC: ¡Archivo cerrado exitosamente!'.
when 9.
write /5 'UNLOAD: ¡Archivo guardado exitosamente!'.
endcase.
END-OF-DEFINITION.

*-----------------------------------------------------------------------
* FORM insert_line
*-----------------------------------------------------------------------
* Text -> Creates one record into the <tables_bdc> table with the
* transaction fields
*-----------------------------------------------------------------------
FORM insert_line USING
x_l_start TYPE c x_l_name TYPE c x_l_value TYPE any.

DATA: h_bdc_aux LIKE bdcdata.

MOVE x_l_start TO h_bdc_aux-dynbegin.


ASSIGN h_bdc TO <tables_bdc>.

IF x_l_start = 'X'.
MOVE:
x_l_name TO h_bdc_aux-program,
x_l_value TO h_bdc_aux-dynpro.
ELSE.
MOVE:
x_l_name TO h_bdc_aux-fnam,
x_l_value TO h_bdc_aux-fval.
ENDIF.
APPEND h_bdc_aux TO <tables_bdc>-tables.
ENDFORM.
*-----------------------------------------------------------------------
* FORM PROCESS_DATA
*-----------------------------------------------------------------------
* Text -> Opens BDC Group and inserts transaction data

Fecha : 7/06/2019 Página 41 de 43


Módulo: 01
RDS Nro: Implementation Paper Versión:
FI-AP/BA
FI-AP-003
Autor: Fecha de creación
21/06/2005
Descripción breve: Solución integral cheques emitidos

*-----------------------------------------------------------------------
FORM process_data USING p_lc_subrc.
DATA:
i_line TYPE i,
i_per TYPE i.

DESCRIBE TABLE h_bdc-tables LINES i_line.


CHECK NOT i_line IS INITIAL.
ASSIGN cc_tcode TO <transaction>.

REFRESH: messtab.

CALL TRANSACTION <transaction> USING <tables_bdc>-tables


MODE pc_mode
UPDATE 'S'
MESSAGES INTO messtab.

p_lc_subrc = sy-subrc.
REFRESH <tables_bdc>-tables.
ENDFORM.

*-----------------------------------------------------------------------
* FORM INSERT_BDC.
* Text -> Inserts transaction
*-----------------------------------------------------------------------
FORM insert_bdc.
DATA: aux_tcode LIKE tstc-tcode.
aux_tcode = <transaction>.
CALL FUNCTION 'BDC_INSERT'
EXPORTING
tcode = aux_tcode
TABLES
dynprotab = <tables_bdc>-tables
EXCEPTIONS
OTHERS = 1.
IF sy-subrc <> 0.
alert_message -7 ''.
ENDIF.
ENDFORM.

*---------------------------------------------------------------------*
* FORM VALUE_REQ_FILE *
*---------------------------------------------------------------------*
FORM value_req_file USING filename TYPE c. "#EC CALLED
DATA: c_file LIKE rlgrap-filename.

CALL FUNCTION 'WS_FILENAME_GET'


EXPORTING
def_filename = ' '
def_path = 'C:\'
mask = ',Textos,*.txt,Todos,*.*.'
mode = 'O'
title = text-l34
IMPORTING
filename = c_file
EXCEPTIONS
OTHERS.

IF sy-subrc EQ 0. "Somente se o nome foi alterado


filename = c_file. "Guarda o novo nome
ENDIF.

ENDFORM. " VALUE_REQ_FILE

*-----------------------------------------------------------------------
* Form STATUS_DISPLAY
*-----------------------------------------------------------------------
* Muestra en la pantalla el avance del programa
*-----------------------------------------------------------------------
FORM status_display USING l_porcent TYPE i value(l_texto) TYPE c.

DATA: c_aux(30) TYPE c.


c_aux = l_porcent.

CONDENSE c_aux NO-GAPS.

Fecha : 7/06/2019 Página 42 de 43


Módulo: 01
RDS Nro: Implementation Paper Versión:
FI-AP/BA
FI-AP-003
Autor: Fecha de creación
21/06/2005
Descripción breve: Solución integral cheques emitidos

CONCATENATE c_aux l_texto INTO c_aux SEPARATED BY space.

CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'


EXPORTING
percentage = l_porcent
text = c_aux
EXCEPTIONS
OTHERS = 1.
IF sy-subrc <> 0.
STOP.
ENDIF.
CLEAR: c_aux.

Fecha : 7/06/2019 Página 43 de 43

You might also like