PDA

Ver la Versión Completa : Peido Con 'bapi_po_create1' Y Activo Fijo


Paola79
22/06/09, 17:19:50
Hola a todos,

Estoy intentando crear un pedido con activo fijo, el cual creo mediante la bapi 'BAPI_FIXEDASSET_CREATE1', me lo crea perfectamente pero a la hora de crear el pedido con la 'BAPI_PO_CREATE1', me dice que dicho activo fijo no existe. Qué puede ser, aqui os dejo el codigo.



gracias de antemano
DATA: key TYPE bapi1022_key.
DATA: generaldata TYPE bapi1022_feglg001. " OCCURS 0 WITH HEADER LINE.
DATA: generaldata_x TYPE bapi1022_feglg001x.
DATA: timedependentdata TYPE bapi1022_feglg003." OCCURS 0 WITH HEADER LINE.
DATA: timedependentdata_x TYPE bapi1022_feglg003x.
DATA: assetmaino TYPE bapi1022_1-assetmaino.
DATA: assetsubno TYPE bapi1022_1-assetsubno.
DATA: return1 TYPE bapiret2 OCCURS 0 WITH HEADER LINE.

DATA: wait TYPE bapita-wait VALUE 'X'.
DATA return2 LIKE bapiret2 OCCURS 0 WITH HEADER LINE.
*--- Rellenamos los datos para crear activo FIJO
key-companycode = 'BT10'.

generaldata-assetclass = 'MOBIL'.
generaldata_x-assetclass = 'X'.

generaldata-descript = 'PRUEBA'.
generaldata_x-descript = 'X'.

generaldata-quantity = '1'.


timedependentdata-costcenter = 'BT10'.
timedependentdata_x-costcenter = 'X'.

*--- Llamamos a la BAPI

CALL FUNCTION 'BAPI_FIXEDASSET_CREATE1'
EXPORTING
key = key
generaldata = generaldata
generaldatax = generaldata_x
timedependentdata = timedependentdata
timedependentdatax = timedependentdata_x

IMPORTING
asset = assetmaino
subnumber = assetsubno
return = return1.
break pfernandez.
IF assetmaino IS NOT INITIAL.

CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = wait
IMPORTING
return = return2.

ENDIF.

LOOP AT return1.
WRITE: / return1-message.
ENDLOOP.

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: return3 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 = 'BT10' .
header-doc_type = 'ROTA' .
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'.

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 = 'A' .
wa_item-matl_group = 'A_AM_MOTO' .
wa_item-plant = 'BT10' .
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'.
wa_item-gr_ind = 'X'.
wa_item-ir_ind = 'X'.
wa_item-gr_basediv = 'X'.
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'.
wa_itemx-gr_ind = 'X'.
wa_itemx-ir_ind = 'X'.
wa_itemx-gr_basediv = 'X'.
APPEND wa_itemx TO itemx.

**&---------------------------------------------------------------------*
**POPULATE ACCOUNT DATA.
**&---------------------------------------------------------------------*
wa_account-po_item = item_num .
wa_account-creat_date = sy-datum .
wa_account-asset_no = assetmaino.
wa_account-costcenter = 'BC10T0200' .
wa_account-sub_number = '0'.
APPEND wa_account TO account.
*
**&---------------------------------------------------------------------*
**POPULATE ACCOUNT FLAG TABLE.
**&---------------------------------------------------------------------*
wa_accountx-po_item = item_num.
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'.
wa_accountx-asset_no = 'X'.
wa_accountx-sub_number = '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.

IF purchaseorder IS NOT INITIAL.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'
IMPORTING
return = wa_return2 .

WAIT UP TO 2 SECONDS.
ENDIF.


LOOP AT return INTO wa_return.
WRITE: / wa_return-message.
ENDLOOP

Paola79
24/06/09, 09:14:04
sigo con el mismo problema alguien me puede echar una mano por favor...

Abaunus
25/06/09, 13:21:34
Estuve viendo el ejemplo; yo trabajé varias veces con la BAPI pero nunca con Activos Fijos...
Pregunta: ¿nunca le asignás Material?

Paola79
25/06/09, 13:35:54
No nunca se le asigna material, va en blanco.

Gracias

Abaunus
25/06/09, 15:46:33
Hola Paola:
No quiero decir cosas que no son, pero hasta donde tengo entendido la función BAPI_PO_CREATE1 genera pedidos de compra (a proveedor), por lo tanto siempre requiere un material...

Una posibilidad es que creer la orden de compra con material y después modifiques lo que necesites en esa orden con la función BAPI_PO_CHANGE.

No sé, es una posibilidad...

fenix_gold2k
20/11/09, 17:27:23
:D yo tengo la solucion a este problema, como el campo del activo es de 12 caracteres debes acompletar con 0 al principio ejemplo.

si tu activo es '123456789'
debe quedar asi '000123456789'.

pare ello puedes utilizar CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'.

saludos