PDA

Ver la Versión Completa : Bapi_po_create1


Paola79
17/06/09, 14:57:02
Buenas tardes,

Estoy creando pedidos en la ME21N con la BAPI_PO_CREATE1, me crea el pedido correctamente, aunque cuando voy a visulaizarlo el importe neto lo pone a 0 (eso es un mal menor), el problema que tengo es que tengo que realizar la entrada de mercancias en la MIGO, y cuando la voy a hacer la entrada con el pedido que me ha creado la BAPI me dice que el pedido no tiene ninguna posición creada, no se si en la BAPI le faltará algo para la entrada de mercancias, el codigo es el siguiente:


REPORT z_prueba.
*---Para la creación del Pedido Tablas internas

DATA: header TYPE bapimepoheader.
DATA: headerx TYPE bapimepoheaderx.

DATA: account TYPE TABLE OF bapimepoaccount,
wa_account LIKE LINE OF account.

DATA: accountx TYPE TABLE OF bapimepoaccountx,
wa_accountx LIKE LINE OF accountx.

*Internal Tables to hold PO ITEM DATA
DATA: item TYPE TABLE OF bapimepoitem,
wa_item LIKE LINE OF item.

DATA: itemx TYPE TABLE OF bapimepoitemx,
wa_itemx LIKE LINE OF itemx.

*Internal table to hold messages from BAPI call
DATA: return TYPE TABLE OF bapiret2,
wa_return LIKE LINE OF return.

DATA: return2 TYPE TABLE OF bapiret2,
wa_return2 LIKE LINE OF return.


DATA: item_num TYPE bapimepoitem-po_item.

DATA: purchaseorder TYPE bapimepoheader-po_number.
DATA: precio_net TYPE bapimepoitem-net_price.
PARAMETER: vendor TYPE bapimepoheader-vendor DEFAULT '0002000046'.
*--- Seleccionamos el proveedor SAP correspondiente al proveedor amasis


header-comp_code = 'BC10' .
header-doc_type = 'CONS' .
header-vendor = '0002000046' .
header-purch_org = 'BC10' .
header-creat_date = sy-datum .
header-created_by = sy-uname .
header-pur_group = '109' .
header-langu = 'S'.
header-currency = 'EUR' .


headerx-comp_code = 'X'.
headerx-doc_type = 'X'.
headerx-vendor = 'X'.
headerx-creat_date = 'X'.
headerx-created_by = 'X'.
headerx-purch_org = 'X'.
headerx-pur_group ='X'.
headerx-langu = 'X'.
headerx-sales_pers = 'X'.
headerx-currency = 'X'.
break pfernandez.
ADD 10 TO item_num.
precio_net = '1.20'.
wa_item-po_item = item_num.
wa_item-quantity = '1'.
wa_item-short_text = 'prueba bapi_po_create1'.
wa_item-acctasscat = 'K' .
wa_item-matl_group = 'G_AM_LUBR' .
wa_item-plant = 'BC10' .
wa_item-quantity = '1' .
wa_item-po_unit = 'EA'.
wa_item-net_price = precio_net.
wa_item-price_unit = '1'.
wa_item-gr_pr_time = '0'.

APPEND wa_item TO item.

**&---------------------------------------------------------------------*
**POPULATE ITEM FLAG TABLE
**&---------------------------------------------------------------------*
wa_itemx-po_item = item_num.
wa_itemx-po_itemx = 'X'.
wa_itemx-short_text = 'X'.
wa_itemx-quantity = 'X'.
wa_itemx-tax_code = 'X'.
wa_itemx-acctasscat = 'X'.
wa_itemx-item_cat ='X'.
wa_itemx-matl_group = 'X'.
wa_itemx-plant = 'X'.
wa_itemx-trackingno = 'X'.
wa_itemx-agreement = 'X'.
wa_itemx-agmt_item = 'X'.
wa_itemx-stge_loc = 'X'.
wa_itemx-quantity = 'X'.
wa_itemx-po_unit = 'X'.
wa_itemx-conv_num1 = 'X'.
wa_itemx-conv_den1 = 'X'.
wa_itemx-net_price = 'X'.
wa_itemx-price_unit = 'X'.
wa_itemx-gr_pr_time = 'X'.
wa_itemx-prnt_price = 'X'.
wa_itemx-unlimited_dlv = 'X'.
wa_itemx-gr_ind = 'X'.
wa_itemx-ir_ind = 'X'.
wa_itemx-gr_basediv = 'X'.
wa_itemx-pckg_no = 'X'.

APPEND wa_itemx TO itemx.

**&---------------------------------------------------------------------*
**POPULATE ACCOUNT DATA.
**&---------------------------------------------------------------------*
wa_account-po_item = '10' .
wa_account-creat_date = sy-datum .
wa_account-costcenter = 'BC10'."'BC10T0200' .

APPEND wa_account TO account.
*
**&---------------------------------------------------------------------*
**POPULATE ACCOUNT FLAG TABLE.
**&---------------------------------------------------------------------*
wa_accountx-po_item = '10' .
wa_accountx-po_itemx = 'X'.
wa_accountx-serial_nox = 'X'.
wa_accountx-creat_date = 'X'.
wa_accountx-costcenter = 'X'.
wa_accountx-gl_account = 'X'.
wa_accountx-co_area = 'X'.
wa_accountx-tax_code ='X'.

APPEND wa_accountx TO accountx.

CALL FUNCTION 'BAPI_PO_CREATE1'
EXPORTING
poheader = header
poheaderx = headerx
IMPORTING
exppurchaseorder = purchaseorder
TABLES
return = return
poitem = item
poitemx = itemx
poaccount = account
poaccountx = accountx.
break pfernandez.
IF purchaseorder IS NOT INITIAL.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'
IMPORTING
RETURN = wa_return2 .

BREAK pfernandez.
WAIT UP TO 2 SECONDS.
LOOP AT return INTO wa_return.
WRITE: / wa_return-message.
ENDLOOP.
ENDIF.

jcflores
17/06/09, 15:21:16
Estimada.

Y a nivel Base de Datos (Tablas), se esta registrando correctamente la PO al ejecutar la BAPI?

Paola79
17/06/09, 15:29:23
Estimada.

Y a nivel Base de Datos (Tablas), se esta registrando correctamente la PO al ejecutar la BAPI?

Hola jcflores ,

Si te refieres a si esta creado tanto en la ekko y en la EKPO, essta creado perfectamente.

Un saludo

ballan
17/06/09, 17:06:54
Creo que aqui

wa_item-po_item = item_num.
wa_item-quantity = '1'.
wa_item-short_text = 'prueba bapi_po_create1'.
wa_item-acctasscat = 'K' .
wa_item-matl_group = 'G_AM_LUBR' .
wa_item-plant = 'BC10' .
wa_item-quantity = '1' .
wa_item-po_unit = 'EA'.
wa_item-net_price = precio_net.
wa_item-price_unit = '1'.
wa_item-gr_pr_time = '0'.

te faltaria añadir

wa_item-GR_IND = 'X'.

Este es el flag de entrada de mercancias

Paola79
18/06/09, 07:42:18
Gracias Ballan,

Era lo que me faltaba.


El problema que tengo ahora es que me coge todo perfectamente, me crea el pedido perfecto y todo pero el PRECIO NETO en la bapi NET_PRICE me lo graba a 0.

Sabeis si es por algo problema de la BAPI ya que cuando lo devuelve es cuando lo pierde.

Muchas gracias

rboswaldo
18/06/09, 18:28:53
Seguramente el precio lo esta tomando del registro info y debe estar en 0 para evitar esto usa el campo PO_PRICE de la estructura de itmes con el valor 1 0 2 dependiendo que quieras con eso toma el precio que tu le indiques en NETPR

PO_PRICE Transferencia de precio: 1 = Bruto, 2 = Neto