Es un cliché sobre cómo extender un IDoc. Un
documento de Lakshmi Narayana Neeli explicó esto de manera muy detallada, cubriendo casi todo lo necesario para mejorar un IDoc saliente.
Por lo tanto, cuando un requisito necesita mostrar solo un precio adicional de la condición de precio específica del artículo del pedido de ventas (que tiene una bandera de estadísticas), salté a la solución mediante la extensión del tipo de IDoc ORDERS05 directamente con la inserción del nuevo segmento personalizado bajo el segmento de artículo E1EDP01.
El nuevo subsegmento de artículo significa cambios en toda la estructura del IDoc, y el lado receptor del IDoc no está dispuesto a hacer la adaptación, entonces notan que si el nuevo precio adicional sigue el tipo de subsegmento E1EDP05, será aceptable. Así que solo hay que encontrar dónde mejorar este subsegmento estándar.
SD10 es el código de proceso estándar para la confirmación del pedido de ventas utilizado por el IDoc saliente ORDERS05 en mi caso. El flujo de procesamiento es muy claro y está bien organizado dentro del módulo de función "IDOC_OUTPUT_ORDRSP". Será más rápido encontrar la salida de usuario correcta mediante CMOD (consulta la página 21 de
este enlace si no estás familiarizado con él), pero tener este FM como punto de inicio es una excelente experiencia para comprender el proceso estándar de llenado de datos del IDoc, lo que aumentará la eficiencia, ya sea en la depuración del IDoc o en la escritura de tu propia lógica de llenado de datos del IDoc.
1. La rutina 'fill_idoc_inttab' es un procedimiento de llenado de datos que contiene todos los segmentos del IDoc;
2. 'fill_item_segment' es el llenado de datos para todos los segmentos de nivel de artículo que son de tipo EDEDP*
3. 'fill_e1edp01' es el llenado de datos para el tipo de segmento E1DP01
que es el nivel principal de la condición de precio del artículo. Si uso segmentos personalizados como en la primera captura de pantalla, solo agrego código para completar el campo del segmento personalizado en EXIT_SAPLVEDC_002 que dentro de la rutina 'customer_function' contiene la 'CUSTOMER-FUNCTION' '002'.
4. 'fill_item_cond' es el llenado de datos para las condiciones de precio a nivel de artículo que quiero mejorar. Y 'fill_e1edp05' obviamente es para llenar datos para el subsegmento e1edp05.
5. La condición de precio adicional del artículo debe agregarse dentro de la rutina 'get_item_prices' en lugar de 'fill_e1edp05'.
Porque 'fill_e1edp05' solo llena la estructura de datos de segmentos con condiciones de precio de artículo filtradas por el sistema. Mi condición de precio adicional no está allí, necesito usar 'CUSTOMER-FUNCTION' '008' dentro de 'GET_ITEM_PRICES' que proporciona salidas de usuario EXIT_SAPLVEDC_008 para agregar condiciones de precio adicionales.
Solo agrega código para recuperar la condición de precio del artículo de DIKOMV con el número de pedido, número de artículo y nombre específico del tipo de condición; luego agregarlo a la tabla dikomvd que contiene todas las condiciones de precio de artículo contra IKOMVD en 'GET_ITEM_PRICES'.
if edidc-mestyp