Programación General > ABAP
Bapi_po_create
(1/1)
senzao18:
Alguien tendra un ejemplillo de como usar la BAPI BAPI_PO_CREATE lo que pasa es que estoy tratando de crear pedidos de traslado (ME21N).... Y no pilla....
Marca :
--- Citar ---Material OB-TS5104-4441 no está actualizado por Compras
--- Fin de la cita ---
Pero cuando yo entro a la tx ME21N para crear el traslado con ese material si lo hace bien y nunma me marca un warning sobre eso....
El codigo que tengo es el siguiente....
--- Código: Text --- *&---------------------------------------------------------------------**& Report ZBAPI_PO_CREATE*&*&---------------------------------------------------------------------**&*&*&---------------------------------------------------------------------* REPORT zbapi_po_create. DATA: s_po_header LIKE bapiekkoc.DATA : ti_po_items LIKE bapiekpoc OCCURS 0 WITH HEADER LINE, ti_po_item_schedules LIKE bapieket OCCURS 0 WITH HEADER LINE, ti_return LIKE bapireturn OCCURS 0 WITH HEADER LINE, ti_afs_po_items LIKE /afs/bapiekpo2 OCCURS 0 WITH HEADER LINE, ti_afs_po_item_schedules LIKE /afs/bapieket2 OCCURS 0 WITH HEADER LINE. DATA : v_purchaseorder LIKE bapiekkoc-po_number. CLEAR s_po_header. **Cabecera EKKO.s_po_header-doc_type = 'ZTCD'. "Clase de documento de comprass_po_header-suppl_plnt = 'Z000'. " Centro suministrador en el pedido de transportes_po_header-doc_date = sy-datum. "Fecha del documento de comprass_po_header-co_code = 'CDPT'. "Sociedads_po_header-pur_group = 'G03'. "Grupo de comprass_po_header-purch_org = 'CDPT'. "Organización de comprass_po_header-langu = sy-langu.**Fin Cabecera ***Posiciones EKPO.CLEAR ti_po_items.ti_po_items-po_item = 1. "Número de posición del documento de comprasti_po_items-material = 'OB-TS5104-4441'. "Número de materialti_po_items-pur_mat = 'OB-TS5104-4441'. "Número de materialti_po_items-store_loc = 'A001'. "Almacénti_po_items-plant = 'A001'. "Centroti_po_items-item_cat = 'V'. "Tipo de posición del documento de compras.*ti_po_items-unit = 'PAA'. "Unidad de medida de pedidoAPPEND ti_po_items. CLEAR ti_afs_po_items.ti_afs_po_items-po_item = 1. "Número de posición del documento de comprasti_afs_po_items-grid_number = 'OB-TS5104-4441'. "Número de materialAPPEND ti_afs_po_items. ***Fin Posiciones EKPO.**Reparto EKET.CLEAR ti_po_item_schedules.ti_po_item_schedules-po_item = '1'. "Número de posición del documento de compras.ti_po_item_schedules-serial_no = '1'. "Contador de repartos.ti_po_item_schedules-quantity = '1'. "Cantidad de reparto.ti_po_item_schedules-deliv_date = sy-datum. "Fecha de Entrega.APPEND ti_po_item_schedules. CLEAR ti_afs_po_item_schedules.ti_afs_po_item_schedules-item_number = 1. "Número de posición del documento de compras.ti_afs_po_item_schedules-del_sche_number = 1. "Contador de repartos.ti_afs_po_item_schedules-sche_line_no = 1.ti_afs_po_item_schedules-sch_size = 'M'. "Valor matrizti_afs_po_item_schedules-quantity1 = 1. "Cantidadti_afs_po_item_schedules-ordered_qty = 1. "Cantidad pedida.ti_afs_po_item_schedules-deadline_date = sy-datum. "Fecha de Entrega.APPEND ti_afs_po_item_schedules. ***Fin Reparto EKET. CALL FUNCTION 'BAPI_PO_CREATE' EXPORTING po_header = s_po_header* PO_HEADER_ADD_DATA =* HEADER_ADD_DATA_RELEVANT =* PO_ADDRESS =* SKIP_ITEMS_WITH_ERROR = 'X'* ITEM_ADD_DATA_RELEVANT =* HEADER_TECH_FIELDS = IMPORTING purchaseorder = v_purchaseorder TABLES po_items = ti_po_items* PO_ITEM_ADD_DATA = po_item_schedules = ti_po_item_schedules* PO_ITEM_ACCOUNT_ASSIGNMENT =* PO_ITEM_TEXT = return = ti_return* PO_LIMITS =* PO_CONTRACT_LIMITS =* PO_SERVICES =* PO_SRV_ACCASS_VALUES =* PO_SERVICES_TEXT =* PO_BUSINESS_PARTNER =* EXTENSIONIN =* POADDRDELIVERY = afs_po_items = ti_afs_po_items afs_po_item_schedules = ti_afs_po_item_schedules. IF NOT v_purchaseorder IS INITIAL. CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' EXPORTING wait = 'X'* IMPORTING* RETURN = . WRITE : / v_purchaseorder. LOOP AT ti_return. WRITE: / ti_return-message. ENDLOOP.ELSE. CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'. LOOP AT ti_return. WRITE: / ti_return-message. ENDLOOP. ENDIF.
Un ejemplillo me ayudaria mucho jeje..
veronikbv:
hola.. tngo un ejemplo pero con solicitud de pedidos... t lo copio..
*---------------------------------------------------------------------*
* FORM F_INICIALIZAR_ESTRUCTURAS *
*---------------------------------------------------------------------*
FORM F_INICIALIZAR_ESTRUCTURAS.
CLEAR PURCHASEORDER.
CLEAR : PO_HEADER,
PO_ITEMS,
PO_ITEM_SCHEDULES,
RETURN.
REFRESH: PO_ITEMS,
PO_ITEM_SCHEDULES,
RETURN.
*---------------------------------------------------------------------*
* Form F_BAPI1
*---------------------------------------------------------------------*
FORM F_BAPI1.
SELECT SINGLE * INTO CORRESPONDING FIELDS OF T_SOLPED
FROM EBAN
WHERE BANFN = G_BANFN
AND BNFPO = TZMM_COMPINT-BNFPO.
G_SUBRC = SY-SUBRC.
PERFORM F_LLENAR_POHEADER.
PERFORM F_LLENAR_POITEMS USING C_POS.
PERFORM F_LLENAR_PO_ITEM_SCHEDULES USING C_POS.
PERFORM F_CARGAR_BAPI1.
ENDFORM.
*---------------------------------------------------------------------*
* FORM F_LLENAR_POHEADER *
*---------------------------------------------------------------------*
FORM F_LLENAR_POHEADER.
CLEAR PO_HEADER.
* Clase de documento de compras
PO_HEADER-DOC_TYPE = C_BSART. "UB
IF G_SUBRC EQ 0.
* Organización de Compras
PO_HEADER-PURCH_ORG = T_SOLPED-EKORG. "FPU1
* Grupo de Compras
PO_HEADER-PUR_GROUP = T_SOLPED-EKGRP.
ENDIF.
* Centro suministrador
PO_HEADER-SUPPL_PLNT = TZMM_COMPINT-WERKSA.
* Lenguaje
PO_HEADER-LANGU = SY-LANGU.
ENDFORM.
*---------------------------------------------------------------------*
* FORM F_LLENAR_POITEMS *
*---------------------------------------------------------------------*
FORM F_LLENAR_POITEMS USING P_POS.
* Posición
PO_ITEMS-PO_ITEM = P_POS.
* Tipo de posición
IF G_SUBRC EQ 0.
PO_ITEMS-ITEM_CAT = T_SOLPED-PSTYP.
ENDIF.
* Centro
PO_ITEMS-PLANT = TZMM_COMPINT-WERKS.
* Almacén
PO_ITEMS-STORE_LOC = TZMM_COMPINT-LGORT.
* Clase de valoración
PO_ITEMS-VAL_TYPE = TZMM_COMPINT-BWTAR.
APPEND PO_ITEMS.
ENDFORM.
*---------------------------------------------------------------------*
* FORM F_LLENAR_PO_ITEM_SCHEDULES *
*---------------------------------------------------------------------*
FORM F_LLENAR_PO_ITEM_SCHEDULES USING P_POS.
PO_ITEM_SCHEDULES-PO_ITEM = P_POS.
PO_ITEM_SCHEDULES-PREQ_NO = G_BANFN.
PO_ITEM_SCHEDULES-PREQ_ITEM = TZMM_COMPINT-BNFPO.
APPEND PO_ITEM_SCHEDULES.
ENDFORM.
*---------------------------------------------------------------------*
* F_FORM CARGAR_BAPI1 *
*---------------------------------------------------------------------*
FORM F_CARGAR_BAPI1.
CLEAR RETURN.
REFRESH RETURN.
CALL FUNCTION 'BAPI_PO_CREATE'
EXPORTING
PO_HEADER = PO_HEADER
SKIP_ITEMS_WITH_ERROR = 'X'
IMPORTING
PURCHASEORDER = PURCHASEORDER
TABLES
PO_ITEMS = PO_ITEMS
PO_ITEM_SCHEDULES = PO_ITEM_SCHEDULES
RETURN = RETURN
EXCEPTIONS
OTHERS = 1.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT = 'X'.
IF NOT RETURN IS INITIAL.
* Log
LOOP AT RETURN.
CLEAR T_LOG.
MOVE-CORRESPONDING TZMM_COMPINT TO T_LOG.
T_LOG-TIPO = RETURN-TYPE.
T_LOG-MSG = RETURN-MESSAGE.
APPEND T_LOG.
ENDLOOP.
ENDIF.
ENDFORM.
tngo otro ejemplo con servicios... pero creo q el q t copie t servira mas...
tal vez t falta habilitar SKIP_ITEMS_WITH_ERROR = 'X' :lightsabre:
Navegación
Ir a la versión completa