En este módulo, desarrollaremos un sistema de gestión de inventarios utilizando RPG. Este estudio de caso te permitirá aplicar los conceptos aprendidos en los módulos anteriores y te dará una visión práctica de cómo construir una aplicación completa en RPG.
Objetivos del Estudio de Caso
- Comprender los requisitos del sistema de gestión de inventarios.
- Diseñar la estructura de datos necesaria.
- Implementar las funcionalidades básicas del sistema.
- Probar y depurar el sistema.
Requisitos del Sistema
El sistema de gestión de inventarios debe cumplir con los siguientes requisitos:
- Agregar nuevos productos al inventario.
- Actualizar la información de los productos existentes.
- Eliminar productos del inventario.
- Consultar la información de los productos.
- Generar reportes de inventario.
Diseño de la Estructura de Datos
Para este sistema, utilizaremos una tabla de base de datos para almacenar la información de los productos. La estructura de la tabla será la siguiente:
| Campo | Tipo de Dato | Descripción |
|---|---|---|
ProductID |
CHAR(10) | Identificador único del producto |
ProductName |
CHAR(50) | Nombre del producto |
Quantity |
INT | Cantidad en inventario |
Price |
DECIMAL(10,2) | Precio del producto |
Implementación del Sistema
- Crear la Tabla de Productos
Primero, crearemos la tabla de productos en la base de datos.
CREATE TABLE Products (
ProductID CHAR(10) PRIMARY KEY,
ProductName CHAR(50),
Quantity INT,
Price DECIMAL(10,2)
);
- Programa para Agregar Productos
A continuación, implementaremos un programa en RPG para agregar nuevos productos al inventario.
H DFTACTGRP(*NO) ACTGRP(*NEW)
D ProductID S 10A
D ProductName S 50A
D Quantity S 10I 0
D Price S 10P 2
/FREE
// Solicitar datos del producto
dsply 'Ingrese el ID del producto: ' '' ProductID;
dsply 'Ingrese el nombre del producto: ' '' ProductName;
dsply 'Ingrese la cantidad: ' '' Quantity;
dsply 'Ingrese el precio: ' '' Price;
// Insertar datos en la tabla
exec sql
INSERT INTO Products (ProductID, ProductName, Quantity, Price)
VALUES (:ProductID, :ProductName, :Quantity, :Price);
if sqlcod = 0;
dsply 'Producto agregado exitosamente.';
else;
dsply 'Error al agregar el producto.';
endif;
*inlr = *on;
/END-FREE
- Programa para Actualizar Productos
Implementaremos un programa para actualizar la información de los productos existentes.
H DFTACTGRP(*NO) ACTGRP(*NEW)
D ProductID S 10A
D ProductName S 50A
D Quantity S 10I 0
D Price S 10P 2
/FREE
// Solicitar ID del producto a actualizar
dsply 'Ingrese el ID del producto a actualizar: ' '' ProductID;
// Solicitar nuevos datos del producto
dsply 'Ingrese el nuevo nombre del producto: ' '' ProductName;
dsply 'Ingrese la nueva cantidad: ' '' Quantity;
dsply 'Ingrese el nuevo precio: ' '' Price;
// Actualizar datos en la tabla
exec sql
UPDATE Products
SET ProductName = :ProductName, Quantity = :Quantity, Price = :Price
WHERE ProductID = :ProductID;
if sqlcod = 0;
dsply 'Producto actualizado exitosamente.';
else;
dsply 'Error al actualizar el producto.';
endif;
*inlr = *on;
/END-FREE
- Programa para Eliminar Productos
Implementaremos un programa para eliminar productos del inventario.
H DFTACTGRP(*NO) ACTGRP(*NEW)
D ProductID S 10A
/FREE
// Solicitar ID del producto a eliminar
dsply 'Ingrese el ID del producto a eliminar: ' '' ProductID;
// Eliminar producto de la tabla
exec sql
DELETE FROM Products
WHERE ProductID = :ProductID;
if sqlcod = 0;
dsply 'Producto eliminado exitosamente.';
else;
dsply 'Error al eliminar el producto.';
endif;
*inlr = *on;
/END-FREE
- Programa para Consultar Productos
Implementaremos un programa para consultar la información de los productos.
H DFTACTGRP(*NO) ACTGRP(*NEW)
D ProductID S 10A
D ProductName S 50A
D Quantity S 10I 0
D Price S 10P 2
/FREE
// Solicitar ID del producto a consultar
dsply 'Ingrese el ID del producto a consultar: ' '' ProductID;
// Consultar datos del producto
exec sql
SELECT ProductName, Quantity, Price
INTO :ProductName, :Quantity, :Price
FROM Products
WHERE ProductID = :ProductID;
if sqlcod = 0;
dsply 'Nombre del producto: ' ProductName;
dsply 'Cantidad: ' Quantity;
dsply 'Precio: ' Price;
else;
dsply 'Producto no encontrado.';
endif;
*inlr = *on;
/END-FREE
- Generar Reportes de Inventario
Implementaremos un programa para generar reportes de inventario.
H DFTACTGRP(*NO) ACTGRP(*NEW)
D ProductID S 10A
D ProductName S 50A
D Quantity S 10I 0
D Price S 10P 2
/FREE
// Consultar todos los productos
exec sql
DECLARE C1 CURSOR FOR
SELECT ProductID, ProductName, Quantity, Price
FROM Products;
exec sql
OPEN C1;
exec sql
FETCH NEXT FROM C1 INTO :ProductID, :ProductName, :Quantity, :Price;
dow sqlcod = 0;
dsply 'ID: ' ProductID;
dsply 'Nombre: ' ProductName;
dsply 'Cantidad: ' Quantity;
dsply 'Precio: ' Price;
exec sql
FETCH NEXT FROM C1 INTO :ProductID, :ProductName, :Quantity, :Price;
enddo;
exec sql
CLOSE C1;
*inlr = *on;
/END-FREEPruebas y Depuración
Es importante probar cada funcionalidad del sistema para asegurarse de que todo funciona correctamente. Aquí hay algunos pasos para realizar pruebas:
- Agregar varios productos al inventario y verificar que se agreguen correctamente.
- Actualizar la información de algunos productos y verificar que los cambios se reflejen en la base de datos.
- Eliminar algunos productos y verificar que se eliminen correctamente.
- Consultar la información de varios productos y verificar que los datos sean correctos.
- Generar un reporte de inventario y verificar que incluya todos los productos con la información correcta.
Conclusión
En este estudio de caso, hemos desarrollado un sistema de gestión de inventarios utilizando RPG. Hemos cubierto la creación de la estructura de datos, la implementación de las funcionalidades básicas y la generación de reportes. Este ejercicio te ha permitido aplicar los conceptos aprendidos en los módulos anteriores y te ha dado una visión práctica de cómo construir una aplicación completa en RPG.
En el próximo módulo, exploraremos cómo integrar RPG con tecnologías modernas, como servicios web y APIs.
Curso de Programación RPG
Módulo 1: Introducción a la Programación RPG
- ¿Qué es RPG?
- Configuración de tu Entorno de Desarrollo
- Sintaxis y Estructura Básica
- Programa Hola Mundo
Módulo 2: Conceptos Básicos
- Tipos de Datos y Variables
- Operadores y Expresiones
- Estructuras de Control
- Funciones y Procedimientos
Módulo 3: Trabajando con Datos
Módulo 4: Técnicas Avanzadas de Programación
Módulo 5: RPG IV y Más Allá
Módulo 6: Integrando RPG con Tecnologías Modernas
Módulo 7: Aplicaciones del Mundo Real
- Construyendo una Aplicación Simple
- Estudio de Caso: Sistema de Gestión de Inventarios
- Estudio de Caso: Sistema de Nómina
- Mejores Prácticas y Revisión de Código
