Functional Specification
Project Name: I222 – Agile
Document Owner
Project Lead (AB-Inbev) Stream
José de Jesús Contreras Logistics / Finance / Commercial / People
Version Control
Ver. Vendor Date Author Description
1.0 Everis 03/12/19 Carolina Configuración de Finanzas en
Padilla ZPFAR, en manual especificar
porque es llamada así la columna
1.1 Nubaj 12/12/19 Roberto Re-Configuración de Finanzas en
Avila ZPFAR, en manual especificar
porque es llamada así la columna
Table of Contents
1 OVERVIEW............................................................................................................................. 3
1.1 Scope........................................................................................................................... 3
1.2 Related Documents...................................................................................................... 3
2 DETAILED FUNCTIONAL SPECIFICATION..........................................................................3
2.1 Detailed Description of Requeriments..........................................................................3
2.2 Organizar los datos de entrada en estructuras.............................................................4
2.3 Obtención de datos de posición de Entrega Saliente en STR3....................................6
2.4 Obtención de datos de Folio de Transporte..................................................................7
2.5 Validación de Stock para lote.......................................................................................8
2.6 Actualización de datos de Picking de E. Saliente.........................................................9
2.7 Contabilización de Entrega Saliente...........................................................................10
2.8 Actualización de Folio de Transporte..........................................................................12
2.9 Actualización de TARA............................................................................................... 15
2.10 Recolección de Mensajes de retorno..........................................................................16
3 EXPECTED BENEFITS........................................................................................................ 16
4 REQUIREMENTS/CONSIDERATIONS/DEPENDENCIES...................................................16
1 Overview
1.1 Scope
Impacted areas & Country
Tener una transacción en SAP ECC para crear o borrar de
Description: forma “masiva” Ordenes Previsionales o Planeadas para el Proceso de
Producción desde un archivo fuente en Excel.
Improvement
Requirement type:
Comments:
Module / Country FI / MX Submodule SAP / Activos Fijos
Volume of 1 Millón de Registros User 10 Usuarios
information to be Concurrency
processed
SAP ZRARTR_DISMODELOTC Frecuency of Semanal
Transactions / ZRARTR_DISPMODELAR Use
Components:
Realizar el aprovisionamiento en Sonora desde la agencia MAC de forma
Expected Benefits:
automatizada, para no afectar la carga de trabajo a los usuarios.
1.2 Related Documents
Related documents to the project
Technical Specification [Link]
Solutions/Design/Logistic/
EWQsU3pi3c1PlQufLO3MD8YBjzcnfOPmVy7Mrf-KV1TisA?e=q3GmbN
Other documents [Link]
Solutions/Design/Logistic/
EWQsU3pi3c1PlQufLO3MD8YBjzcnfOPmVy7Mrf-KV1TisA?e=q3GmbN
2 Detailed Functional Specification
This must include all functional specification related to the project, is necessary to detail all the
processes, step by step, using screenshots to understand the actual situation and the changes
needed. This must include the Development Justification (Requirement Details). Why is
required?
2.1 Detailed Description of Requeriments
Como escenario se tiene que el documentador, posterior al despacho de la Entrega y su documentación
en el Sistema Legado Whoga, debe obtener la Entrega de Salida correspondiente desde la misma
herramienta, y con esto, abrir una Ventana de SAP ECC para mediante la Entrega llegar al Folio de
Transporte correspondiente y desde ahí editar manualmente con los datos de Sello, signatura, TARA, etc.
Posterior a la edición y validación de la información cargada, se procede a actualizar el estatus a “Fin de
transporte” y graban los cambios efectuados. Inmediatamente después, se valida mediante MMBE el
stock existente para el lote despachado. Con esto realizado, deben ejecutar la Transacción VL02N para
que en la Entrega de Salida ingresen el Almacén, Lote y Cantidad, para finalmente, contabilizar la
Entrega de Salida.
El requerimiento solicitado es la actualización automática de todos estos objetos, para con ello, acortar
los tiempos de ejecución y despacho de Entregas de Salidas provenientes del CROSS DOCK.
La solución se ejecutara en 9 pasos de la siguiente manera:
2.2 Organizar los datos de entrada en estructuras.
Como se explica en el punto 2.2.8, los datos de entrada que serán mandados al llamar el Servicio Web
llegarán a la siguiente estructura (será llena directamente de los datos provenientes del web-service), la
cual llamaremos en este caso STR1:
CAMP
O LONGITUD TIPO DESCRIPCIÓN
VBELN 10 CHAR Entrega de Salida
EXTI2 20 CHAR Sellos
EXTI1 13 CHAR No. De Contenedor
SIGNI 20 CHAR Signatura
TDLINE 132 CHAR TARA
TEXT3 40 CHAR Texto adicional 3
TKNUM 10 CHAR Nº transporte
WERKS 4 CHAR Centro
LGORT 4 CHAR Almacén
Quedando como el siguiente ejemplo:
En caso de darse la condición de que
[Link] = VACIO
Deberá obtenerse el mismo a partir de la entrega de salida; para esto hay que realizar la consulta del
primer valor en la tabla VTTP (campo TKNUM), donde:
[Link] = [Link]
Este resultado se vaciará en la estructura, por lo que:
[Link] = [Link]
Quedando de la siguiente manera:
La STR3 será la siguiente (Punto 2.2.8), las marcadas en amarillo provienen del web service.
CAMPO LONGITUD TIPO DESCRIPCIÓN
VBELN 10 CHAR Entrega de Salida
POSNR 6 NUMC Posición
POSNN 6 NUMC Posición (partición)
MATNR 18 CHAR Material
WERKS 4 CHAR Centro
LGORT 4 CHAR Almacén
CHARG 10 CHAR Lote
LFIMG 7 QUAN Cantidad
Aquí hay que notar que en cada registro en STR3:
[Link]=[Link]
[Link] = [Link]
[Link] = [Link]
Quedando de la siguiente manera:
Notar que VBELN, WERKS y LGORT son constantes, ya que provienen de STR1, porque todo será sobre
la misma entrega en el mismo centro y en el mismo almacén.
2.3 Obtención de datos de posición de Entrega Saliente en STR3.
Posterior a la preparación de STR1 y STR3, se deben obtener los datos de las posiciones de la entrega
correspondiente, para esto hay que realizar la consulta en la tabla LIPS(campo POSNR, en un SELECT
SINGLE), con base en un LOOP en la estructura STR3 donde:
[Link] = [Link]
[Link] = [Link]
Este resultado se vaciará en la estructura, por lo que:
[Link] = [Link]
Con esto STR3 pasará a este resultado:
Despues de finalizar el LOOP a STR3, realizar una ordenación de los resultados con base en [Link],
para ordenar por la posición de entrega.
Ya ordenados los registros en STR3, realizar nuevamente un LOOP a STR3, para asignarle el No. De
posición de partición, en el cual ante cada posición incrementar 1 al número ‘900001’ (siendo este para el
primer registro). Quedando de la siguiente manera:
Con esto, las estructuras STR1 y STR3 quedan completas para utilizarse en los siguientes pasos.
2.4 Obtención de datos de Folio de Transporte.
Para hacer la actualización del Folio de Transporte (Paso 8), se necesita primero hacer una extracción
completa (todos los campos) de VTTK, donde:
[Link] = [Link]
Esta extracción deberá vaciarse en una estructura que sea igual a VTTK, la cual llamaremos en este caso
STR2 (punto 2.2.8).
Ahora se procederá a realizar las validaciones y ejecución de BAPIS.
2.5 Validación de Stock para lote.
Antes de realizar movimientos sobre la Entrega Saliente, se deberá validar que la cantidad de PT
existente en Stock para los lotes que se despacharon en el Sistema Legado Whoga sea MAYOR O
IGUAL a la cantidad recibida del Web service.
Para esto, se realizará la consulta a la tabla MCHB, con base en un LOOP a la estructura STR3 donde:
[Link] = [Link]
[Link] = [Link]
[Link] = [Link]
[Link] = [Link]
Se realizará la validación donde:
SI [Link] >= [Link]
Agregar un incremento a una VARIABLE iniciada en 0 antes del LOOP a STR3.
Caso contrario, no incrementar la VARIABLE.
Finalizando el LOOP sobre STR3, se realizará una nueva validación donde:
SI VARIABLE == [Link] (Cantidad de registros)
Continuar con el paso 5.
Caso contrario, mandar a la tabla de retorno del Proxy el mensaje “Stock insuficiente para contabilizar
entrega” (IR AL PASO 9), ya que TODOS LOS LOTES DEBEN ESTAR CON STOCK SUFICIENTE
PARA DESPACHAR LA ENTREGA.
2.6 Actualización de datos de Picking de E. Saliente.
Tomando en cuenta que hay stock suficiente para contabilizar la entrega, se ejecutará la
SD_DELIVERY_UPDATE_PICKING, donde:
sl_vbkok_wa-vbeln_vl = [Link].
sl_vbkok_wa-vbtyp_vl = ‘A’.
sl_vbkok_wa-vbeln = [Link].
CLEAR sl_vbpok.
sl_vbpok-vbeln_vl = [Link].
sl_vbpok-posnr_vl = [Link].
sl_vbpok-vbeln = [Link].
sl_vbpok-posnn = [Link].
sl_vbpok-matnr = [Link].
sl_vbpok-charg = [Link].
sl_vbpok-werks = [Link].
sl_vbpok-lgort = [Link].
sl_vbpok-pikmg = [Link].
sl_vbpok-taqui = ‘X’.
APPEND sl_vbpok TO tl_vbpok.
*Aquí recaen todos los registros de STR3.
Al llamar la función:
CALL FUNCTION 'SD_DELIVERY_UPDATE_PICKING'
EXPORTING
vbkok_wa = sl_vbkok_wa
synchron = ‘X’
no_messages_update = ‘X’
if_error_messages_send = ‘X’
TABLES
vbpok_tab = tl_vbpok.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = abap_true.
Posterior a la ejecución se visualizan los cambios esperados.
2.7 Contabilización de Entrega Saliente.
Posterior a la actualización de la Entrega, para realizar la contabilización, ejecutar la
WS_DELIVERY_UPDATE, donde:
VBKOK_WA-VBELN_VL = [Link]
VBKOK_WA-WABUC = ‘X’
SYNCHRON = ‘X’
COMMIT = ’X’
DELIVERY = [Link]
IF_DATABASE_UPDATE = ‘1’
IF_ERROR_MESSAGES_SEND_0 = ‘X’
Posterior se puede observar el resultado esperado, ya que la entrega fue contabilizada:
SI Y SOLO SI esta ejecución no mandó mensajes de error, continuar con el paso 7, de lo contrario ir al
paso 9, mandando a la tabla de mensajes de retorno los errores encontrados.
2.8 Actualización de Folio de Transporte.
En caso de ser exitosa la contabilización, ahora se hará la actualización del Folio de Transporte, para
esto, se harán las siguientes modificaciones sobre la segunda estructura (STR2), la cual se llenó en el
paso 3, de modo que:
STR2.EXTI2 = STR1.EXTI2
STR2.EXTI1 = STR1.EXTI1
[Link] = [Link]
STR2.TEXT3 = STR1.TEXT3
[Link] = Fecha del día (p.e. 20180412)
[Link] = Fecha del día (p.e. 20180412)
[Link] = Fecha del día (p.e. 20180412)
[Link] = Fecha del día (p.e. 20180412)
[Link] = Fecha del día (p.e. 20180412)
[Link] = Fecha del día (p.e. 20180412)
[Link] = Fecha del día (p.e. 20180412)
[Link] = Hora de ejecución (p.e. 160400)
[Link] = Hora de ejecución (p.e. 160400)
[Link] = Hora de ejecución (p.e. 160400)
[Link] = Hora de ejecución (p.e. 160400)
[Link] = Hora de ejecución (p.e. 160400)
[Link] = Hora de ejecución (p.e. 160400)
[Link] = Hora de ejecución (p.e. 160400)
[Link] = 'X'
[Link] = 'X'
[Link] = 'X'
[Link] = 'X'
[Link] = 'X'
[Link] = 'X'
[Link] = 'X'
Posteriormente, se ejecutará la RV_SHIPMENT_UPDATE_DB, donde:
CALL FUNCTION 'RV_SHIPMENT_UPDATE_DB'
EXPORTING
i_flag_tra_complete = 'X'
* I_TRA_SAVE_CALLER =
TABLES
db_vttk_upd = STR2. //La estructura completa
IF sy-subrc EQ 0.
COMMIT WORK AND WAIT.
Con esto, se tendrá el siguiente resultado esperado:
A nivel tabla VTTK:
2.9 Actualización de TARA.
Para la actualización de TARA, ejecutar la SAVE_TEXT, donde:
sl_head-tdid = 'ZRP9'.
sl_head-tdspras = sy-langu.
sl_head-tdobject = 'VTTK'.
sl_head-tdname = [Link].
sl_lines-tdline = [Link].
APPEND sl_lines TO tl_lines.
CALL FUNCTION 'SAVE_TEXT'
EXPORTING
client = sy-mandt
header = sl_head
savemode_direct = abap_true
TABLES
lines = tl_lines
EXCEPTIONS
id = 1
language = 2
name = 3
object = 4
OTHERS = 5.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
Con esto, se ve el siguiente resultado esperado:
Con esto realizado, se termina el procesamiento de la Entrega Saliente y Folio de Transporte.
2.10 Recolección de Mensajes de retorno
Habiendo terminado con la ejecución de las BAPIS, ya sea de forma errónea o satisfactoria, se deberán
colectar los mensajes satisfactorios y erróneos obtenidos durante la ejecución, para que estos sean
devueltos por el Servicio Web.