• Jueves 14 de Noviembre de 2024, 16:52

Autor Tema:  Bapi_po_create  (Leído 5907 veces)

senzao18

  • Miembro HIPER activo
  • ****
  • Mensajes: 553
    • Ver Perfil
Bapi_po_create
« en: Jueves 16 de Noviembre de 2006, 19:31 »
0
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

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
  1.  
  2. *&---------------------------------------------------------------------*
  3. *& Report  ZBAPI_PO_CREATE
  4. *&
  5. *&---------------------------------------------------------------------*
  6. *&
  7. *&
  8. *&---------------------------------------------------------------------*
  9.  
  10. REPORT  zbapi_po_create.
  11.  
  12. DATA: s_po_header                LIKE bapiekkoc.
  13. DATA : ti_po_items               LIKE      bapiekpoc OCCURS 0 WITH HEADER LINE,
  14.        ti_po_item_schedules      LIKE      bapieket OCCURS 0 WITH HEADER LINE,
  15.        ti_return                 LIKE      bapireturn OCCURS 0 WITH HEADER LINE,
  16.        ti_afs_po_items           LIKE      /afs/bapiekpo2 OCCURS 0 WITH HEADER LINE,
  17.        ti_afs_po_item_schedules  LIKE      /afs/bapieket2 OCCURS 0 WITH HEADER LINE.
  18.  
  19.  
  20. DATA : v_purchaseorder       LIKE      bapiekkoc-po_number.
  21.  
  22. CLEAR s_po_header.
  23.  
  24. **Cabecera EKKO.
  25. s_po_header-doc_type = 'ZTCD'.   "Clase de documento de compras
  26. s_po_header-suppl_plnt = 'Z000'.  " Centro suministrador en el pedido de transporte
  27. s_po_header-doc_date = sy-datum. "Fecha del documento de compras
  28. s_po_header-co_code = 'CDPT'.  "Sociedad
  29. s_po_header-pur_group = 'G03'.   "Grupo de compras
  30. s_po_header-purch_org = 'CDPT'.  "Organización de compras
  31. s_po_header-langu = sy-langu.
  32. **Fin Cabecera
  33.  
  34. ***Posiciones EKPO.
  35. CLEAR ti_po_items.
  36. ti_po_items-po_item = 1. "Número de posición del documento de compras
  37. ti_po_items-material = 'OB-TS5104-4441'. "Número de material
  38. ti_po_items-pur_mat = 'OB-TS5104-4441'. "Número de material
  39. ti_po_items-store_loc = 'A001'. "Almacén
  40. ti_po_items-plant = 'A001'. "Centro
  41. ti_po_items-item_cat = 'V'. "Tipo de posición del documento de compras.
  42. *ti_po_items-unit = 'PAA'. "Unidad de medida de pedido
  43. APPEND ti_po_items.
  44.  
  45. CLEAR ti_afs_po_items.
  46. ti_afs_po_items-po_item = 1. "Número de posición del documento de compras
  47. ti_afs_po_items-grid_number = 'OB-TS5104-4441'. "Número de material
  48. APPEND ti_afs_po_items.
  49.  
  50.  
  51. ***Fin Posiciones EKPO.
  52. *
  53. *Reparto EKET.
  54. CLEAR ti_po_item_schedules.
  55. ti_po_item_schedules-po_item = '1'. "Número de posición del documento de compras.
  56. ti_po_item_schedules-serial_no = '1'. "Contador de repartos.
  57. ti_po_item_schedules-quantity = '1'. "Cantidad de reparto.
  58. ti_po_item_schedules-deliv_date = sy-datum. "Fecha de Entrega.
  59. APPEND ti_po_item_schedules.
  60.  
  61.  
  62. CLEAR ti_afs_po_item_schedules.
  63. ti_afs_po_item_schedules-item_number = 1. "Número de posición del documento de compras.
  64. ti_afs_po_item_schedules-del_sche_number = 1. "Contador de repartos.
  65. ti_afs_po_item_schedules-sche_line_no = 1.
  66. ti_afs_po_item_schedules-sch_size = 'M'. "Valor matriz
  67. ti_afs_po_item_schedules-quantity1 = 1. "Cantidad
  68. ti_afs_po_item_schedules-ordered_qty = 1. "Cantidad pedida.
  69. ti_afs_po_item_schedules-deadline_date = sy-datum. "Fecha de Entrega.
  70. APPEND ti_afs_po_item_schedules.
  71.  
  72.  
  73. ***Fin Reparto EKET.
  74.  
  75. CALL FUNCTION 'BAPI_PO_CREATE'
  76.   EXPORTING
  77.     po_header                        = s_po_header
  78. *   PO_HEADER_ADD_DATA               =
  79. *   HEADER_ADD_DATA_RELEVANT         =
  80. *   PO_ADDRESS                       =
  81. *   SKIP_ITEMS_WITH_ERROR            = 'X'
  82. *   ITEM_ADD_DATA_RELEVANT           =
  83. *   HEADER_TECH_FIELDS               =
  84.  IMPORTING
  85.    purchaseorder                    = v_purchaseorder
  86.   TABLES
  87.     po_items                         = ti_po_items
  88. *   PO_ITEM_ADD_DATA                 =
  89.     po_item_schedules                = ti_po_item_schedules
  90. *   PO_ITEM_ACCOUNT_ASSIGNMENT       =
  91. *   PO_ITEM_TEXT                     =
  92.     return                           = ti_return
  93. *   PO_LIMITS                        =
  94. *   PO_CONTRACT_LIMITS               =
  95. *   PO_SERVICES                      =
  96. *   PO_SRV_ACCASS_VALUES             =
  97. *   PO_SERVICES_TEXT                 =
  98. *   PO_BUSINESS_PARTNER              =
  99. *   EXTENSIONIN                      =
  100. *   POADDRDELIVERY                   =
  101.    afs_po_items                     = ti_afs_po_items
  102.    afs_po_item_schedules            = ti_afs_po_item_schedules.
  103.  
  104. IF NOT v_purchaseorder IS INITIAL.
  105.   CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
  106.    EXPORTING
  107.      wait          = 'X'
  108. *           IMPORTING
  109. *             RETURN        =
  110.             .
  111.   WRITE : / v_purchaseorder.
  112.   LOOP AT ti_return.
  113.     WRITE: / ti_return-message.
  114.   ENDLOOP.
  115. ELSE.
  116.   CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
  117.  
  118.   LOOP AT ti_return.
  119.     WRITE: / ti_return-message.
  120.   ENDLOOP.
  121.  
  122. ENDIF.
  123.  
  124.  

Un ejemplillo me ayudaria mucho jeje..
---------------------------------------
Erick Aragon Zepeda
Dessarrollo de Aplicaciones .NET
http]
Blog de Articulos
Mi Blog
NoSolocodigo -->

veronikbv

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Re: Bapi_po_create
« Respuesta #1 en: Sábado 12 de Mayo de 2007, 02:09 »
0
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: