Bapi_po_create1

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • vcoll
    Junior Member
    • feb
    • 3

    #1

    Bapi_po_create1

    Hola Foro aca una consulta sobre esta bapi que me esta matando.

    Resulta que necesito crear ordenes de servicio, los datos que ingreso me generan la orden de servicio pero necesito que ademas me cree una distribucion porcentual (tx me21n) por cuenta/orden este es el codigo que uso y me funciona pero necesito que me cree la distribucion porcentual con los datos que le doy(la tabla en la que la graba es ESKL).

    FORM CREAR_ORDEN_SERVICIO.
    DATA: w_poheader LIKE bapimepoheader,
    w_poheaderx LIKE bapimepoheaderx.

    DATA: gv_pedido LIKE bapimepoheader-po_number.

    DATA: poaccount LIKE bapimepoaccount OCCURS 0 WITH HEADER LINE,
    poaccountx LIKE bapimepoaccountx OCCURS 0 WITH HEADER LINE,
    po_item LIKE bapimepoitem OCCURS 0 WITH HEADER LINE,
    po_itemx LIKE bapimepoitemx OCCURS 0 WITH HEADER LINE,
    service LIKE bapiesllc OCCURS 0 WITH HEADER LINE,
    srvaccessvalues LIKE bapiesklc OCCURS 0 WITH HEADER LINE.

    W_TOTAL = 212.

    * Carga datos de Cabecera del pedido de Compra
    CLEAR w_poheader.
    w_poheader-doc_type = 'SV'.
    w_poheader-vendor = '2035639373'. "P_LIFNR.
    w_poheader-langu = 'EN'.
    w_poheader-purch_org = '2405'. "'101'.
    w_poheader-pur_group = '153'. "'043'.
    w_poheader-currency = 'PEN'.
    w_poheader-comp_code = '153'. "P_BUKRS.
    w_poheader-creat_date = sy-datum.
    w_poheader-created_by = 'STEFANINI'.

    * Marca los campos para que se tomen.
    CLEAR w_poheaderx.
    w_poheaderx-doc_type = 'X'.
    w_poheaderx-vendor = 'X'.
    w_poheaderx-purch_org = 'X'.
    w_poheaderx-pur_group = 'X'.
    w_poheaderx-currency = 'X'.
    w_poheaderx-comp_code = 'X'.
    w_poheaderx-creat_date = 'X'.
    w_poheaderx-created_by = 'X'.

    *Posiciones de pedido
    po_item-po_item = '10'.
    po_item-quantity = '1'.
    po_item-short_text = 'TEXTO TAXI'.
    po_item-acctasscat = 'F'.
    po_item-item_cat = 'F'.
    po_item-po_unit = 'EA'.
    po_item-matl_group = '774'. "'768'.
    po_item-plant = '3202'. "'0690'.
    po_item-quantity = '1' .
    po_item-conv_num1 = '1'.
    po_item-conv_den1 = '1'.
    po_item-price_unit = '1'.
    po_item-prnt_price = 'X'.
    po_item-unlimited_dlv = 'X'.
    po_item-gr_ind = 'X' .
    po_item-ir_ind = 'X' .
    po_item-gr_basediv = 'X'.
    po_item-pckg_no = '2748'.
    po_item-preq_name = sy-uname.
    APPEND po_item. CLEAR po_item.

    *Flags de Posiciones de pedido
    po_itemx-po_item = '10'.
    po_itemx-quantity = 'X'.
    po_itemx-short_text = 'X'.
    po_itemx-acctasscat = 'X'.
    po_itemx-item_cat = 'X'.
    po_itemX-po_unit = 'X'.
    po_itemx-matl_group = 'X'.
    po_itemx-plant = 'X'.
    po_itemx-quantity = 'X' .
    po_itemx-conv_num1 = 'X'.
    po_itemx-conv_den1 = 'X'.
    po_itemx-price_unit = 'X'.
    po_itemx-prnt_price = 'X'.
    po_itemx-unlimited_dlv = 'X'.
    po_itemx-gr_ind = 'X' .
    po_itemx-ir_ind = 'X' .
    po_itemx-gr_basediv = 'X'.
    po_itemx-pckg_no = 'X'.
    po_itemx-preq_name = 'X'.
    APPEND po_itemx. CLEAR po_itemx.

    *Imputacion de pedido
    poaccount-po_item = '10'.
    poaccount-serial_no = '01'.
    poaccount-creat_date = sy-datum .
    poaccount-gl_account = '0068101009'.
    poaccount-orderid = '000711000001'.
    APPEND poaccount. CLEAR poaccount.

    *Flags de imputacion
    poaccountx-po_item = '10'.
    poaccountx-po_itemx = 'X' .
    poaccountx-serial_no = 'X'.
    poaccountx-creat_date = 'X' .
    poaccountx-gl_account = 'X'.
    poaccountx-orderid = 'X'.
    APPEND poaccountx. CLEAR poaccountx.

    * Distribucion de imputacion
    srvaccessvalues-pckg_no = '0000002748'.
    srvaccessvalues-line_no = '0000000001' .
    srvaccessvalues-serno_line = '01'.
    srvaccessvalues-percentage = '50'.
    srvaccessvalues-serial_no = '01'.
    srvaccessvalues-NET_VALUE = '106'.
    srvaccessvalues-quantity = '106'.
    APPEND srvaccessvalues. CLEAR srvaccessvalues.

    srvaccessvalues-pckg_no = '0000002749'.
    srvaccessvalues-line_no = '0000000002' .
    srvaccessvalues-serno_line = '01'.
    srvaccessvalues-percentage = '25'.
    srvaccessvalues-serial_no = '01'.
    srvaccessvalues-NET_VALUE = '53'.
    srvaccessvalues-quantity = '53'.
    APPEND srvaccessvalues. CLEAR srvaccessvalues.

    srvaccessvalues-pckg_no = '0000002750'.
    srvaccessvalues-line_no = '0000000003' .
    srvaccessvalues-serno_line = '01'.
    srvaccessvalues-percentage = '25'.
    srvaccessvalues-serial_no = '01'.
    srvaccessvalues-NET_VALUE = '53'.
    srvaccessvalues-quantity = '53'.
    APPEND srvaccessvalues. CLEAR srvaccessvalues.


    * Servicios encabezado
    service-pckg_no = '2748'.
    service-line_no = '0000000001' .
    service-ext_line = '0000000000' .
    service-outl_level = '0'.
    service-outl_no = ' '.
    service-outl_ind = 'X'.
    service-subpckg_no = '2749'.
    service-edition = '0000' .
    service-ovf_tol = '0'.
    service-gr_price = '0'.
    service-from_line = '1'.
    service-DISTRIB = '2'.
    service-short_text = 'texto taxiXX'.
    APPEND service. CLEAR service.

    * servicio 1 asociado al encabezado
    service-pckg_no = '2749'.
    service-line_no = '0000000002' .
    service-ext_line = '10' .
    service-outl_level = '0'.
    service-subpckg_no = '0000000000'.
    service-edition = '0000' .
    service-base_uom = 'EA' .
    service-quantity = '1' .
    service-price_unit = '1' .
    service-ovf_tol = '0' .
    service-short_text = 'TEXTO TAXIAA'.
    service-gr_price = 212.
    service-matl_group = '768'.
    APPEND service. CLEAR service .


    DATA: return LIKE bapiret2 OCCURS 0 WITH HEADER LINE.
    DATA: purchaseorder LIKE BAPIMEPOHEADER-PO_NUMBER.
    *Creamos el Pedido de Servicio
    CALL FUNCTION 'BAPI_PO_CREATE1'
    EXPORTING
    poheader = w_poheader
    poheaderx = w_poheaderx
    no_price_from_po = 'X'
    IMPORTING
    exppurchaseorder = purchaseorder
    TABLES
    return = return
    poitem = po_item
    poitemx = po_itemx
    poaccount = poaccount
    poaccountx = poaccountx
    poservices = service
    posrvaccessvalues = srvaccessvalues.
    IF NOT purchaseorder IS INITIAL.
    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
    ENDIF.
    ENDFORM.
  • vstarke
    Member
    • feb
    • 60

    #2
    consulta

    buenas, tu ejemplo cae preciso para lo que necesito, pero resulta que al ejecutarlo me indica como error que no hay código de material y no crea nada.... sabes por qué razón sucede esto?...

    Comentario

    • K-MUS
      Member
      • feb
      • 87

      #3
      donde esta el matnr ??? o sea el codigo de material ?

      Comentario

      • vstarke
        Member
        • feb
        • 60

        #4
        buenas tardes señores... logré encontrarle solución al error... era referente al grupo de material de la línea de servicio, se estaba enviando mal a la BAPI, se mandaba el grupo de material de la cabecera... gracias!...

        Comentario

        • vamp_01
          Senior Member
          • jun
          • 109

          #5
          Pregunta de donde sacas el pck-no?

          gracias

          Comentario

          Trabajando...