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

[0] Índice de Mensajes

Ir a la versión completa