Académique Documents
Professionnel Documents
Culture Documents
Í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
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
Solución
Descripción
Parametrización de las vías de pago de emisión y caída para cheques de pago diferido
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:
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)
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
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
Si “crear efecto antes vencimiento” está tildado, no aparece el campo Fecha vencimiento en el
programa de pagos automáticos:
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.
Se deben asignar todas las vías de pago creadas en el país, para poder ser utilizadas en cada sociedad:
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:
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:
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).
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)
TX. FCHU
Luego , , ,
Y grabar.
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 ...
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):
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).
F110:
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.
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:
Planificación de caída de los CPD con reporte ZFIBIASIG para que sea transparente para el
usuario
Transacción F110S
Notar, en la variante, los campos de fecha que se marcan como Variable de selección:
Grabar
Tr. SM36
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
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
ENDIF.
Grabar y activar.
Ej:
************************************************************************
* 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,
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.
*----------------------------------------------------------------------*
* 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.
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.
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.
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'.
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.
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.
REPORT ZFIBIASIG .
*--------------------------------------------------------------------*
* Batch Input para cargar el campo asignación mediante la FB09 *
*--------------------------------------------------------------------*
* Fecha : 10.06.2005 - STK Argentina *
*--------------------------------------------------------------------*
TABLES:
regup.
*---------------------------------------------------------------------
* 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.
LOOP AT t_regup.
* Cargar datos para la primera pantalla
PERFORM carga_sapmf05l_0102.
* Llamada a la Transacción
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.
* Pop-Up
PERFORM insert_line USING:
'X' 'SAPLKACB' '0002',
' ' 'BDC_OKCODE' '=ENTE'.
TYPES:
x_msg_type(80) TYPE c,
BEGIN OF type_bdc, " Bdc table
tables LIKE bdcdata OCCURS 0,
END OF type_bdc.
DEFINE alert_message.
case &1.
when -1.
write: /5 '¡Error en la apertura del archivo!', &2.
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.
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
*-----------------------------------------------------------------------
FORM process_data USING p_lc_subrc.
DATA:
i_line TYPE i,
i_per TYPE i.
REFRESH: 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.
*-----------------------------------------------------------------------
* Form STATUS_DISPLAY
*-----------------------------------------------------------------------
* Muestra en la pantalla el avance del programa
*-----------------------------------------------------------------------
FORM status_display USING l_porcent TYPE i value(l_texto) TYPE c.