Files
MBS/PROYECTO/codir/coprmt006.4gl
T

745 lines
25 KiB
Plaintext

{
------------------------------------------------------------------
PROGRAMA : COPRMT006
OBJETIVO : Capturar, Modificar, Eliminar registros de la
Tabla de Requisiciones.
PROGRAMADOR : Ing. Juan Soto.
FECHA REALIZACION : Septiembre 1, 1992.
------------------------------------------------------------------
}
GLOBALS "coprgb000.4gl"
MAIN
DEFER INTERRUPT
CALL STARTLOG("COPRMT06.TXT")
CALL ARG_VAL(1) RETURNING usuarios
CALL ARG_VAL(2) RETURNING clave
CALL ARG_VAL(3) RETURNING impresor
# CONNECT TO "exterior" AS "IFMX"
CONNECT to "smarmotech_t" AS "MSSQL" USER usuarios USING clave
SELECT a.* INTO p_companias.* FROM companias a
CALL coprmt006()
END MAIN
FUNCTION coprmt006()
CLEAR SCREEN
OPTIONS
FORM LINE 8,
ERROR LINE 23,
COMMENT LINE 21
# OPEN FORM cofmmt006 FROM "cofmmt006"
# DISPLAY FORM cofmmt006
OPEN WINDOW w WITH FORM "cofmmt006"
ATTRIBUTE(TEXT="File:cofmmt006",STYLE="dialog")
MENU "OPCIONES"
COMMAND "Consultar-modificar"
"<Esc> Realiza Busqueda <Delete> Cancela Operacion"
CALL copcmf006()
COMMAND "Opciones" "Numero Requisicion Automatico o Manual"
CALL determina()
COMMAND "Salir" "Retorna Menu Anterior"
EXIT MENU
END MENU
CLOSE WINDOW w
END FUNCTION
FUNCTION copcmf006()
DEFINE usuario RECORD
usuario CHAR(9),
fecha LIKE cotb00008.fech_crea
END RECORD
CLEAR FORM
# Aqui se prepara para la captura del criterio de seleccion
CONSTRUCT criterio ON cotb00006.num_req,cotb00006.fech_req,
cotb00006.departamento,cotb00006.cod_emp_sec
FROM num_req,fech_req,departamento,cod_emp_sec
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
RETURN
END IF
LET SELEC = " SELECT UNIQUE num_req,fech_req,departamento,",
"cod_emp_sec,uso,prioridad ",
" FROM cotb00006 ",
" WHERE ",
criterio clipped,
" and status_t is null ",
" ORDER BY 1"
PREPARE busca8 FROM selec
DECLARE datos SCROLL CURSOR FOR busca8
OPEN datos
FETCH FIRST datos INTO requisi.*
IF status >= 0 THEN
IF status = NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
RETURN
END IF
END IF
SELECT a.nom1_emp,a.apell1_emp INTO descrip2,descrip1
FROM adtb00003 a,adtb00001 b
WHERE a.num_emp = requisi.cod_emp_sec and
b.departamento = requisi.departamento and
a.departamento = b.departamento
LET descrip2 = descrip2 clipped," ",descrip1 clipped
SELECT nom_dpto INTO descrip1 FROM adtb00001
WHERE @departamento = requisi.departamento and
status_t is null
DISPLAY BY NAME requisi.*,descrip1,descrip2
LABEL vuelve:
MENU "OPCIONES "
COMMAND "Siguiente"
"Presenta en pantalla el proximo registro encontrado"
FETCH NEXT datos INTO requisi.*
IF status = NOTFOUND THEN
LET numero_msg = 4
CALL msg(numero_msg)
END IF
SELECT a.nom1_emp,a.apell1_emp INTO descrip2,descrip1
FROM adtb00003 a,adtb00001 b
WHERE a.num_emp = requisi.cod_emp_sec and
b.departamento = requisi.departamento and
a.departamento = b.departamento
LET descrip2 = descrip2 clipped," ",descrip1 clipped
SELECT nom_dpto INTO descrip1 FROM adtb00001
WHERE @departamento = requisi.departamento and
status_t is null
DISPLAY BY NAME requisi.*,descrip1,descrip2
COMMAND "Anterior"
"Presenta en pantalla el registro anterior encontrado"
FETCH PREVIOUS datos INTO requisi.*
IF status = NOTFOUND THEN
LET numero_msg = 5
CALL msg(numero_msg)
END IF
SELECT a.nom1_emp,a.apell1_emp INTO descrip2,descrip1
FROM adtb00003 a,adtb00001 b
WHERE a.num_emp = requisi.cod_emp_sec and
b.departamento = requisi.departamento and
a.departamento = b.departamento
LET descrip2 = descrip2 clipped," ",descrip1 clipped
SELECT nom_dpto INTO descrip1 FROM adtb00001
WHERE @departamento = requisi.departamento and
status_t is null
DISPLAY BY NAME requisi.*,descrip1,descrip2
COMMAND "Primero"
"Presenta en pantalla el primer registro encontrado"
FETCH FIRST datos INTO requisi.*
SELECT a.nom1_emp,a.apell1_emp INTO descrip2,descrip1
FROM adtb00003 a,adtb00001 b
WHERE a.num_emp = requisi.cod_emp_sec and
b.departamento = requisi.departamento and
a.departamento = b.departamento
LET descrip2 = descrip2 clipped," ",descrip1 clipped
SELECT nom_dpto INTO descrip1 FROM adtb00001
WHERE @departamento = requisi.departamento and
status_t is null
DISPLAY BY NAME requisi.*,descrip1,descrip2
LET numero_msg = 5
CALL msg(numero_msg)
COMMAND "Ultimo"
"Presenta en pantalla el ultimo registro encontrado"
FETCH LAST datos INTO requisi.*
SELECT a.nom1_emp,a.apell1_emp INTO descrip2,descrip1
FROM adtb00003 a,adtb00001 b
WHERE a.num_emp = requisi.cod_emp_sec and
b.departamento = requisi.departamento and
a.departamento = b.departamento
LET descrip2 = descrip2 clipped," ",descrip1 clipped
SELECT nom_dpto INTO descrip1 FROM adtb00001
WHERE @departamento = requisi.departamento and
status_t is null
DISPLAY BY NAME requisi.*,descrip1,descrip2
LET numero_msg = 4
CALL msg(numero_msg)
COMMAND "Escoger"
"<Esc> Actualiza Registro <Delete> Cancela Operacion"
{
LET p_fechas = requisi.fech_req
CALL prd()
IF bandera = 1 THEN
LET bandera = 0
GOTO vuelve
END IF
}
INPUT BY NAME requisi.* WITHOUT DEFAULTS ATTRIBUTE (YELLOW)
BEFORE FIELD num_req
NEXT FIELD fech_req
AFTER INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
RETURN
END IF
IF requisi.num_req IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD num_req
END IF
IF requisi.departamento IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD departamento
END IF
IF requisi.cod_emp_sec IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD cod_emp_sec
END IF
EXIT INPUT
END INPUT
DECLARE jh CURSOR FOR
SELECT tipo_inv,cod_n,cod_grupo,cod_tipo,cod_sec,cod_sp,cod_sp_sec,precio,cantidad,
procesada
FROM cotb00008
WHERE @num_req = requisi.num_req
LET idx = 1
FOREACH jh INTO arr_requisi[idx].tipo_inv, arr_requisi[idx].cod_n,arr_requisi[idx].cod_grupo,
arr_requisi[idx].cod_tipo,arr_requisi[idx].cod_sec,
arr_requisi[idx].cod_sp,arr_requisi[idx].cod_sp_sec,
arr_requisi[idx].precio,arr_requisi[idx].cantidad,
arr_requisi[idx].procesada
LET arr_requisi[idx].total_p = arr_requisi[idx].cantidad *
arr_requisi[idx].precio
LET idx = idx + 1
END FOREACH
CALL set_count(idx - 1)
INPUT ARRAY arr_requisi WITHOUT DEFAULTS FROM s_requisi.* ATTRIBUTE (YELLOW)
BEFORE ROW
LET curr = ARR_CURR()
LET scr_l = SCR_LINE()
ON ACTION suplidor
IF arr_requisi[curr].cod_n IS NOT NULL THEN
LET identifica = "R"
CALL busca_sp()
IF int_flag THEN
LET int_flag = false
NEXT FIELD cod_sp
END IF
LET identifica = null
IF not int_flag THEN
DISPLAY arr_requisi[curr].cod_sp TO
s_requisi[scr_l].cod_sp
DISPLAY arr_requisi[curr].cod_sp_sec TO
s_requisi[scr_l].cod_sp_sec
DISPLAY BY NAME suplidor.nom_sp
NEXT FIELD precio
END IF
LET int_flag = false
END IF
AFTER ROW
IF arr_requisi[curr].cod_n IS NOT NULL THEN
IF arr_requisi[curr].precio IS NULL OR
arr_requisi[curr].precio <=0 THEN
LET numero_msg = 207
CALL msg(numero_msg)
NEXT FIELD precio
END IF
END IF
IF arr_requisi[curr].cod_n IS NOT NULL THEN
IF arr_requisi[curr].precio is null THEN
LET arr_requisi[curr].precio = 0
END IF
IF arr_requisi[curr].cantidad IS NULL THEN
LET arr_requisi[curr].cantidad = 0
END IF
IF not int_flag then
IF m_articulos.base IS NULL THEN
LET m_articulos.base = 0
END IF
IF m_articulos.base > 0 THEN
LET arr_requisi[curr].total_p = (arr_requisi[curr].precio /
m_articulos.base) *
arr_requisi[curr].cantidad
END IF
IF m_articulos.base = 0 THEN
LET arr_requisi[curr].total_p = arr_requisi[curr].precio *
arr_requisi[curr].cantidad
END IF
DISPLAY arr_requisi[curr].total_p TO s_requisi[scr_l].total_p
END IF
LET identifica = "R"
CALL producto(arr_requisi2[curr].tipo_inv,arr_requisi2[curr].cod_n,arr_requisi2[curr].cod_grupo,
arr_requisi2[curr].cod_tipo,arr_requisi2[curr].cod_sec)
RETURNING articulos.descrip_esp,articulos.unidad_med
IF existe = "S" THEN
LET existe = "N"
END IF
DISPLAY BY NAME articulos.unidad_med
DISPLAY BY NAME articulos.descrip_esp
DISPLAY BY NAME m_articulos.base
END IF
BEFORE FIELD cantidad
IF arr_requisi[curr].cod_n IS NOT NULL THEN
LET identifica = "R"
CALL producto(arr_requisi2[curr].tipo_inv,arr_requisi2[curr].cod_n,arr_requisi2[curr].cod_grupo,
arr_requisi2[curr].cod_tipo,arr_requisi2[curr].cod_sec)
RETURNING articulos.descrip_esp,articulos.unidad_med
DISPLAY BY NAME articulos.unidad_med
DISPLAY BY NAME articulos.descrip_esp
DISPLAY BY NAME m_articulos.base
IF arr_requisi[curr].cod_sp IS NOT NULL AND
arr_requisi[curr].cod_sp_sec IS NOT NULL THEN
LET identifica = "R"
CALL nom_suplidor()
DISPLAY BY NAME suplidor.nom_sp
END IF
END IF
AFTER FIELD cod_sp_sec
IF arr_requisi[curr].cod_n IS NOT NULL THEN
IF arr_requisi[curr].cod_sp IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD cod_sp
END IF
IF arr_requisi[curr].cod_sp_sec IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD cod_sp
END IF
CALL nom_suplidor()
IF existe = "N" THEN
NEXT FIELD cod_sp
END IF
DISPLAY BY NAME suplidor.nom_sp
SELECT unique cod_sp_sec FROM cotb00008
WHERE cod_sp = arr_requisi[curr].cod_sp and
cod_sp_sec = arr_requisi[curr].cod_sp_sec
END IF
AFTER FIELD cantidad
IF arr_requisi[curr].cod_n IS NOT NULL THEN
IF arr_requisi[curr].cantidad IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD cantidad
END IF
SELECT UNIQUE cod_sp FROM cotb00008
WHERE cod_sp = arr_requisi[curr].cod_sp
IF status < 0 THEN
NEXT FIELD total_p
END IF
END IF
AFTER FIELD precio
IF arr_requisi[curr].cod_n IS NOT NULL THEN
IF arr_requisi[curr].precio IS NULL OR
arr_requisi[curr].precio <=0 THEN
LET numero_msg = 207
CALL msg(numero_msg)
NEXT FIELD precio
END IF
END IF
# Verifica si el usuario tiene permiso de digitar el precio en la requisicion
IF arr_requisi[curr].cod_n IS NOT NULL THEN
IF arr_requisi[curr].precio IS NOT NULL THEN
IF m_articulos.base is null THEN
LET m_articulos.base = 0
END IF
IF m_articulos.base > 0 THEN
LET arr_requisi[curr].total_p = (arr_requisi[curr].precio /
m_articulos.base) *
arr_requisi[curr].cantidad
END IF
IF m_articulos.base = 0 THEN
LET arr_requisi[curr].total_p = arr_requisi[curr].precio *
arr_requisi[curr].cantidad
END IF
DISPLAY arr_requisi[curr].total_p TO s_requisi[scr_l].total_p
END IF
END IF
AFTER INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
RETURN
END IF
IF arr_requisi[curr].cod_n IS NOT NULL THEN
# Busca y Chequea el Nombre De La Materia Prima
LET identifica = "R"
CALL producto(arr_requisi2[curr].tipo_inv,arr_requisi2[curr].cod_n,arr_requisi2[curr].cod_grupo,
arr_requisi2[curr].cod_tipo,arr_requisi2[curr].cod_sec)
RETURNING articulos.descrip_esp,articulos.unidad_med
# Busca y Chequea el nombre del suplidor
CALL nom_suplidor()
IF existe = "N" THEN
NEXT FIELD cod_sp
END IF
DISPLAY BY NAME suplidor.nom_sp
IF arr_requisi[curr].precio IS NULL OR
arr_requisi[curr].precio <=0 THEN
LET numero_msg = 207
CALL msg(numero_msg)
NEXT FIELD precio
END IF
# Verifica si el usuario tiene permiso de digitar el precio en la requisicion
IF arr_requisi[curr].precio IS NOT NULL THEN
IF m_articulos.base is null THEN
LET m_Articulos.base = 0
END IF
IF m_articulos.base > 0 THEN
LET arr_requisi[curr].total_p = (arr_requisi[curr].precio /
m_articulos.base) *
arr_requisi[curr].cantidad
END IF
IF m_articulos.base = 0 THEN
LET arr_requisi[curr].total_p = arr_requisi[curr].precio *
arr_requisi[curr].cantidad
END IF
DISPLAY arr_requisi[curr].total_p TO s_requisi[scr_l].total_p
END IF
END IF
CALL limpia()
EXIT INPUT
END INPUT
UPDATE cotb00006 SET fech_req = requisi.fech_req,
departamento = requisi.departamento,
cod_emp_sec = requisi.cod_emp_sec,
prioridad = requisi.prioridad,
uso = requisi.uso,
us_mod = SUSER_SNAME(),
fech_mod = GETDATE()
WHERE @num_req = requisi.num_req
SELECT unique us_crea,max(fech_crea) INTO usuario.* FROM cotb00008
WHERE num_req = requisi.num_req
GROUP BY us_crea
DELETE FROM cotb00008 WHERE num_req = requisi.num_req
FOR idx = 1 TO arr_requisi.getLength()
IF arr_requisi[idx].cod_n IS NOT NULL AND
arr_requisi[idx].cod_grupo IS NOT NULL AND
arr_requisi[idx].cod_tipo IS NOT NULL AND
arr_requisi[idx].cod_sec IS NOT NULL THEN
INSERT INTO cotb00008 (num_req,tipo_inv,cod_n,cod_grupo,
cod_tipo,cod_sec,cantidad,
precio,cod_sp,cod_sp_sec,
procesada,us_crea,fech_crea,
us_mod,fech_mod)
VALUES (requisi.num_req,arr_requisi[idx].tipo_inv,
arr_requisi[idx].cod_n,
arr_requisi[idx].cod_grupo,
arr_requisi[idx].cod_tipo,
arr_requisi[idx].cod_sec,
arr_requisi[idx].cantidad,
arr_requisi[idx].precio,
arr_requisi[idx].cod_sp,
arr_requisi[idx].cod_sp_sec,
arr_requisi[idx].procesada,
usuario.*,SUSER_SNAME(),GETDATE())
END IF
END FOR
LET numero_msg = 13
CALL msg(numero_msg)
COMMAND KEY ("N") "aNular"
UPDATE cotb00006 set status_t = "N",
us_mod = SUSER_SNAME(),
fech_mod = GETDATE()
WHERE num_req = requisi.num_req
UPDATE cotb00008 set status_t = "E"
WHERE num_req = requisi.num_req
LET numero_msg = 39
CALL msg(numero_msg)
COMMAND "Retornar"
"Retorna al menu anterior"
CLEAR FORM
EXIT MENU
END MENU
END FUNCTION
FUNCTION repite()
DEFINE ant_sp,ant_sp_sec SMALLINT
LET ant_art.cod_n = arr_requisi[curr].cod_n
LET ant_art.cod_grupo = arr_requisi[curr].cod_grupo
LET ant_art.cod_tipo = arr_requisi[curr].cod_tipo
LET ant_art.cod_sec = arr_requisi[curr].cod_sec
LET ant_sp = arr_requisi[curr].cod_sp
LET ant_sp_sec = arr_requisi[curr].cod_sp_sec
FOR idx = 1 TO arr_count()
IF idx != curr THEN
IF arr_requisi[idx].cod_n IS NOT NULL AND
arr_requisi[idx].cod_grupo IS NOT NULL AND
arr_requisi[idx].cod_tipo IS NOT NULL AND
arr_requisi[idx].cod_sec IS NOT NULL THEN
IF arr_requisi[idx].cod_n = ant_art.cod_n AND
arr_requisi[idx].cod_grupo = ant_art.cod_grupo AND
arr_requisi[idx].cod_tipo = ant_art.cod_tipo AND
arr_requisi[idx].cod_sec = ant_art.cod_sec and
arr_requisi[idx].cod_sp = ant_sp and
arr_requisi[idx].cod_sp_sec = ant_sp_sec THEN
LET numero_msg = 21
CALL msg(numero_msg)
LET verdad = "S"
ELSE
IF verdad != "S" THEN
LET verdad = "N"
END IF
END IF
END IF
END IF
END FOR
END FUNCTION
FUNCTION nom_suplidor()
LET existe = "S"
LET suplidor.nom_sp = null
SELECT nom_sp INTO suplidor.nom_sp FROM cotb00001
WHERE cod_sp = arr_requisi[curr].cod_sp and
cod_sp_sec = arr_requisi[curr].cod_sp_sec and
status_t is null
IF status = notfound THEN
LET numero_msg = 25
CALL msg(numero_msg)
LET existe = "N"
END IF
IF arr_requisi[curr].cod_n = 1 THEN
IF existe = "S" THEN
SELECT unique cod_sp FROM cotb00002
WHERE cod_sp = arr_requisi[curr].cod_sp and
cod_sp_sec = arr_requisi[curr].cod_sp_sec and
cod_n = arr_requisi[curr].cod_n and
cod_grupo = arr_requisi[curr].cod_grupo and
cod_tipo = arr_requisi[curr].cod_tipo and
cod_sec = arr_requisi[curr].cod_sec and
status_t is null
IF status = notfound THEN
LET numero_msg = 133
CALL msg(numero_msg)
END IF
END IF
END IF
END FUNCTION
FUNCTION determina()
OPEN WINDOW realiza AT 10,10 WITH 5 ROWS,43 COLUMNS ATTRIBUTE (BORDER)
MENU "OPCION"
COMMAND "Automatica"
"Enumera de Forma Automatica"
SELECT UNIQUE MAX(num_req) INTO requisi.num_req FROM cotb00006
LET manual = "N"
EXIT MENU
COMMAND "Manual"
"El usuario tiene que enumerar el documento"
LET manual = "S"
EXIT MENU
END MENU
CLOSE WINDOW realiza
END FUNCTION
FUNCTION limpia()
IF arr_requisi[curr].cod_n IS NULL THEN
LET arr_requisi[curr].cod_n = null
LET arr_requisi[curr].cod_grupo = null
LET arr_requisi[curr].cod_tipo = null
LET arr_requisi[curr].cod_sec = null
DISPLAY arr_requisi[curr].cod_n TO s_requisi[scr_l].cod_n
DISPLAY arr_requisi[curr].cod_grupo TO s_requisi[scr_l].cod_grupo
DISPLAY arr_requisi[curr].cod_tipo TO s_requisi[scr_l].cod_tipo
DISPLAY arr_requisi[curr].cod_sec TO s_requisi[scr_l].cod_sec
END IF
IF arr_requisi[curr].cod_grupo IS NULL THEN
LET arr_requisi[curr].cod_n = null
LET arr_requisi[curr].cod_grupo = null
LET arr_requisi[curr].cod_tipo = null
LET arr_requisi[curr].cod_sec = null
DISPLAY arr_requisi[curr].cod_n TO s_requisi[scr_l].cod_n
DISPLAY arr_requisi[curr].cod_grupo TO s_requisi[scr_l].cod_grupo
DISPLAY arr_requisi[curr].cod_tipo TO s_requisi[scr_l].cod_tipo
DISPLAY arr_requisi[curr].cod_sec TO s_requisi[scr_l].cod_sec
END IF
IF arr_requisi[curr].cod_tipo IS NULL THEN
LET arr_requisi[curr].cod_n = null
LET arr_requisi[curr].cod_grupo = null
LET arr_requisi[curr].cod_tipo = null
LET arr_requisi[curr].cod_sec = null
DISPLAY arr_requisi[curr].cod_n TO s_requisi[scr_l].cod_n
DISPLAY arr_requisi[curr].cod_grupo TO s_requisi[scr_l].cod_grupo
DISPLAY arr_requisi[curr].cod_tipo TO s_requisi[scr_l].cod_tipo
DISPLAY arr_requisi[curr].cod_sec TO s_requisi[scr_l].cod_sec
END IF
IF arr_requisi[curr].cod_sec IS NULL THEN
LET arr_requisi[curr].cod_n = null
LET arr_requisi[curr].cod_grupo = null
LET arr_requisi[curr].cod_tipo = null
LET arr_requisi[curr].cod_sec = null
DISPLAY arr_requisi[curr].cod_n TO s_requisi[scr_l].cod_n
DISPLAY arr_requisi[curr].cod_grupo TO s_requisi[scr_l].cod_grupo
DISPLAY arr_requisi[curr].cod_tipo TO s_requisi[scr_l].cod_tipo
DISPLAY arr_requisi[curr].cod_sec TO s_requisi[scr_l].cod_sec
END IF
END FUNCTION
FUNCTION busca_sp()
OPEN WINDOW busqueda AT 8,8 WITH FORM "cofmwd004"
ATTRIBUTE (BORDER,FORM LINE FIRST + 2,COMMENT LINE LAST)
LET int_flag = false
CONSTRUCT criterio ON a.nom_sp FROM nom_sp
LET selec3 = "SELECT a.cod_sp,a.cod_sp_sec,a.nom_sp FROM cotb00001 a ",
" WHERE ",
" a.status_t is null AND ",
criterio clipped,
"ORDER BY a.nom_sp "
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
GO TO sale4
END IF
PREPARE busca3 FROM selec3
IF status >= 0 THEN
IF status = notfound THEN
LET numero_msg = 12
CALL msg(numero_msg)
END IF
END IF
DECLARE johnn3 CURSOR FOR busca3
LET idx = 1
FOREACH johnn3 INTO busca_su2[idx].*
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
EXIT FOREACH
END IF
IF status = notfound THEN
EXIT FOREACH
END IF
LET busca_su1[idx].codigo_1 = busca_su2[idx].cod_sp using "&&","-",
busca_su2[idx].cod_sp_sec using "&&&&"
LET busca_su1[idx].nom_sp = busca_su2[idx].nom_sp
LET idx = idx + 1
END FOREACH
CALL set_count(idx-1)
DISPLAY ARRAY busca_su1 TO s_desp3.*
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
GO TO sale4
END IF
LET curr1 = arr_curr()
IF identifica = "R" THEN
LET arr_requisi[curr].cod_sp = busca_su1[curr1].codigo_1[1,2]
LET arr_requisi[curr].cod_sp_sec = busca_su1[curr1].codigo_1[4,7]
LET suplidor.nom_sp = busca_su1[curr1].nom_sp
END IF
LABEL sale4:
CLOSE WINDOW busqueda
END FUNCTION