Creacion de Pedidos con BAPI

por | Sep 6, 2012 | Sin categoría | 0 Comentarios

Sap ofrece muchas alternativas para la emulacion de sus procesos graficos mediante programacion para permitir la carga en masa de datos. Un ejemplo de este es la BAPI para creacion de pedidos BAPI_PO_CREATE1, que bien se puede usar para generar pedidos en base a un fichero previamente cargado.

FUNCTION BAPI_PO_CREATE1.
EXPORTING
 VALUE(POHEADER) LIKE BAPIMEPOHEADER STRUCTURE BAPIMEPOHEADER
 VALUE(POHEADERX) LIKE BAPIMEPOHEADERX STRUCTURE
 BAPIMEPOHEADERX OPTIONAL
 VALUE(POADDRVENDOR) LIKE BAPIMEPOADDRVENDOR STRUCTURE
 BAPIMEPOADDRVENDOR OPTIONAL
 VALUE(TESTRUN) LIKE BAPIFLAG-BAPIFLAG OPTIONAL
 VALUE(MEMORY_UNCOMPLETE) LIKE BAPIFLAG-BAPIFLAG OPTIONAL
 VALUE(MEMORY_COMPLETE) LIKE BAPIFLAG-BAPIFLAG OPTIONAL
 VALUE(POEXPIMPHEADER) LIKE BAPIEIKP STRUCTURE BAPIEIKP
 OPTIONAL
 VALUE(POEXPIMPHEADERX) LIKE BAPIEIKPX STRUCTURE BAPIEIKPX
 OPTIONAL
 VALUE(VERSIONS) LIKE BAPIMEDCM STRUCTURE BAPIMEDCM OPTIONAL
 VALUE(NO_MESSAGING) LIKE BAPIFLAG-BAPIFLAG OPTIONAL
 VALUE(NO_MESSAGE_REQ) LIKE BAPIFLAG-BAPIFLAG OPTIONAL
 VALUE(NO_AUTHORITY) LIKE BAPIFLAG-BAPIFLAG OPTIONAL
 VALUE(NO_PRICE_FROM_PO) LIKE BAPIFLAG-BAPIFLAG OPTIONAL
IMPORTING
 VALUE(EXPPURCHASEORDER) LIKE BAPIMEPOHEADER-PO_NUMBER
 VALUE(EXPHEADER) LIKE BAPIMEPOHEADER STRUCTURE BAPIMEPOHEADER
 VALUE(EXPPOEXPIMPHEADER) LIKE BAPIEIKP STRUCTURE BAPIEIKP
 TABLES
 RETURN STRUCTURE BAPIRET2 OPTIONAL
 POITEM STRUCTURE BAPIMEPOITEM OPTIONAL
 POITEMX STRUCTURE BAPIMEPOITEMX OPTIONAL
 POADDRDELIVERY STRUCTURE BAPIMEPOADDRDELIVERY OPTIONAL
 POSCHEDULE STRUCTURE BAPIMEPOSCHEDULE OPTIONAL
 POSCHEDULEX STRUCTURE BAPIMEPOSCHEDULX OPTIONAL
 POACCOUNT STRUCTURE BAPIMEPOACCOUNT OPTIONAL
 POACCOUNTPROFITSEGMENT STRUCTURE BAPIMEPOACCOUNTPROFITSEGMENT
 OPTIONAL
 POACCOUNTX STRUCTURE BAPIMEPOACCOUNTX OPTIONAL
 POCONDHEADER STRUCTURE BAPIMEPOCONDHEADER OPTIONAL
 POCONDHEADERX STRUCTURE BAPIMEPOCONDHEADERX OPTIONAL
 POCOND STRUCTURE BAPIMEPOCOND OPTIONAL
 POCONDX STRUCTURE BAPIMEPOCONDX OPTIONAL
 POLIMITS STRUCTURE BAPIESUHC OPTIONAL
 POCONTRACTLIMITS STRUCTURE BAPIESUCC OPTIONAL
 POSERVICES STRUCTURE BAPIESLLC OPTIONAL
 POSRVACCESSVALUES STRUCTURE BAPIESKLC OPTIONAL
 POSERVICESTEXT STRUCTURE BAPIESLLTX OPTIONAL
 EXTENSIONIN STRUCTURE BAPIPAREX OPTIONAL
 EXTENSIONOUT STRUCTURE BAPIPAREX OPTIONAL
 POEXPIMPITEM STRUCTURE BAPIEIPO OPTIONAL
 POEXPIMPITEMX STRUCTURE BAPIEIPOX OPTIONAL
 POTEXTHEADER STRUCTURE BAPIMEPOTEXTHEADER OPTIONAL
 POTEXTITEM STRUCTURE BAPIMEPOTEXT OPTIONAL
 ALLVERSIONS STRUCTURE BAPIMEDCM_ALLVERSIONS OPTIONAL
 POPARTNER STRUCTURE BAPIEKKOP OPTIONAL
 POCOMPONENTS STRUCTURE BAPIMEPOCOMPONENT OPTIONAL
 POCOMPONENTSX STRUCTURE BAPIMEPOCOMPONENTX OPTIONAL
 POSHIPPING STRUCTURE BAPIITEMSHIP OPTIONAL
 POSHIPPINGX STRUCTURE BAPIITEMSHIPX OPTIONAL
 POSHIPPINGEXP STRUCTURE BAPIMEPOSHIPPEXP OPTIONAL

Desgraciadamente esta BAPI carece de una extensa documentación sobre su uso, y no solo la cantidad de parámetros hacen complicado su uso si no también la interrelación entre sus parámetros lo que lo hace realmente compleja de usar de una manera exitosa.

Para la creacion de un pedido de servicios sencillo bien puede valer este ejemplo:

      CALL FUNCTION 'BAPI_PO_CREATE1'
        EXPORTING
          POHEADER          = BAPIMEPOHEADER
          POHEADERX         = BAPIMEPOHEADERX
        IMPORTING
          EXPPURCHASEORDER  = PURCHASEORDER
        TABLES
          POTEXTHEADER      = BAPIMEPOTEXTHEADER
          RETURN            = RETURN
          POITEM            = BAPIMEPOITEM
          POITEMX           = BAPIMEPOITEMX
          POACCOUNT         = BAPIMEPOACCOUNT
          POACCOUNTX        = BAPIMEPOACCOUNTX
          POSERVICES        = BAPIESLLC
          POSRVACCESSVALUES = BAPIESKLC.

La llamada a esta funcion crearia un pedido con lineas de material y servicios asociados junto con la informacion contable.

Ahora para poder generar el pedido es necesario tener en cuenta que las tablas van relacionadas entre si, ya que en la misma llamada pueden crearse multiples lineas de material y servicios.

Para poder relacionar el numero de linea de pedido junto con sus datos de contabilizacion es sencillo, solo hay que vincular el valor PO_ITEM.

 NO_PED = NO_PED + 10.
 BAPIMEPOITEM-PO_ITEM = NO_PED.
 BAPIMEPOITEMX-PO_ITEM = NO_PED.
 PKG = PKG + 10.
 BAPIMEPOITEM-PCKG_NO = PKG.
 BAPIMEPOACCOUNT-PO_ITEM = NO_PED.
 BAPIMEPOACCOUNTX-PO_ITEM = NO_PED.

Por otro lado, para relacionar el numero de servicio con el pedido habría que usar el valor PCKG_NO.

    NO_SER = NO_SER + 10.
    BAPIESLLC-PCKG_NO = PKG + 1.
    BAPIESKLC-PCKG_NO = PKG + 1.
    BAPIESLLC-LINE_NO = NO_SER.
    BAPIESLLC-EXT_LINE = NO_SER.
    BAPIESKLC-LINE_NO = NO_SER .
    BAPIESKLC-SERNO_LINE = '01'.
    BAPIESKLC-PERCENTAGE = 100.
    BAPIESKLC-QUANTITY = BAPIESLLC-QUANTITY.

Algo importante a tener en cuenta es que hay que generar siempre un servicio de cabecera que es el que incluira todos los servicios que luego metemos en la pestaña correspondiente. Este podria ser un ejemplo de creacion de ese registro.

 

BAPIESLLC-PCKG_NO = PKG.
BAPIESLLC-SUBPCKG_NO = PKG + 1.
BAPIESLLC-OUTL_IND  = 'X'.

Y con eso ya podríamos generar un pedido rellenando el resto de los datos de las tablas con la información que necesitemos.

 

Related Posts

Obtencion del contenido mediante el scrapper

He habilitado una API para poder usar el scrapeador desde cualquier sitio. En esta caso la url es tal que asi: http://www.arturoemilio.es/scrap/?url= un ejemplo seria: http://www.arturoemilio.es/scrap/?url=www.20minutos.es/noticia/2024063/0/fiscalia-recurre/archivo-caso/recibimiento-etarra/ Si tienes alguna duda o sugerencia puedes dejar un comentario en este post.  

CSS Sprite for Google PageSpeed: Terminado

CSS Sprite for Google PageSpeed: Terminado

El plugin para Wordpress 3.6 ya ha sido ajustado al máximo que permiten los servidores y ciertamente el resultado es el esperado. En GTMetrix el frontal obtiene una puntuación de un 98% en PageSpeed y un 87% en YSlow. Aunque Wordpress es una plataforma de contenidos excepcionalmente buena y flexible lo cierto es que hay…

0 comentarios

Enviar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.