Bapi_po_create1

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • Paola79
    Member
    • oct
    • 62

    #1

    Bapi_po_create1

    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
    Member
    • mar
    • 55

    #2
    Estimada.

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

    Juan Carlos Flores
    Consultor ABAP

    "Pensar, programar... él solo compila y ejecuta"

    Comentario

    • Paola79
      Member
      • oct
      • 62

      #3
      Originalmente publicado por jcflores
      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

      Comentario

      • ballan
        Senior Member
        • oct
        • 671

        #4
        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

        Comentario

        • Paola79
          Member
          • oct
          • 62

          #5
          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

          Comentario

          • rboswaldo
            Junior Member
            • may
            • 9

            #6
            Bapi_po_create1

            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

            Comentario

            Trabajando...