Thursday, 25 January 2024

ME21N - Create Purchase Order from PR Using FM BAPI_PO_CREATE1

 



*Get PR Data
  select into corresponding fields of table it_ebpo
    from eban
   where banfn g_banfn.


  describe table it_ebpo lines g_pr_cnt.

*  Get Net Price
  loop at it_ebpo into wa_ebpo.
    read table it_dat2 into wa_dat2 with key col_02 wa_ebpo-bednr "txz01
                                                     binary search.
    if sy-subrc eq 0.
      wa_ebpo-netpr wa_dat2-col_04.
      wa_ebpo-doctyp wa_dat2-col_17.
      wa_ebpo-kostl wa_dat2-col_16.
    endif.
    modify it_ebpo from wa_ebpo.
  endloop.


  it_ebpos[] it_ebpo[].

  delete adjacent duplicates from it_ebpos comparing banfn.

  clear pohead,poitem,poitemtext,poaccount.
  refresh poitem,poitemtext,poaccount.

  loop at it_ebpos into wa_ebpos.
    pohead-comp_code  =  '1000'.
    pohead-doc_type   =  wa_ebpos-doctyp.
    pohead-vendor     =  wa_ebpos-lifnr.
    pohead-purch_org  =  '1000'.
    pohead-pur_group  =   wa_ebpos-ekgrp.
    pohead-currency   'IDR' .
    pohead-doc_date   =  sy-datum.

*    Append pohead to pohead.

    poheadx-comp_code  c_x.
    poheadx-doc_type   c_x.
    poheadx-vendor     c_x.
    poheadx-purch_org  c_x.
    poheadx-pur_group  c_x.
    poheadx-currency   c_x.
    poheadx-doc_date   c_x.

  endloop.

*  memory_uncomplete =  c_x.

*    Item level
  loop at it_ebpo into wa_ebpo.
*      if sy-subrc eq 0.
    poitem-po_item     =  wa_ebpo-bnfpo.
    poitem-short_text  =  wa_ebpo-txz01.
*   poitem-material    =  it_dat2-co
    poitem-plant       =  wa_ebpo-werks.
*   poitem-stge_loc    = 0.
*   poitem-trackingno  =  it_dat2-col_06.
    poitem-matl_group  =  wa_ebpo-matkl"it_dat2-col_07.
    poitem-preq_no    =   wa_ebpo-banfn.
    poitem-preq_item =    wa_ebpo-bnfpo.
    poitem-quantity    =  wa_ebpo-menge.
    poitem-po_unit     =  wa_ebpo-meins.
    poitem-net_price   =  wa_ebpo-netpr.
*   poitem-acctasscat  =  it_dat2-col_11.
*   poitem-gr_basediv  =  ''.     "Effect on Costcentre
*   poitem-po_price = '2'.        "1 = Gross 2. Net price
    append poitem.

    poitemx-po_item     =   wa_ebpo-bnfpo"it_dat2-col_01."c_x.
    poitemx-po_itemx    c_x.
*   poitemx-short_text  = c_x.
*   poitemx-material    = c_x.
    poitemx-plant       c_x.
    poitemx-stge_loc    c_x.
    poitemx-trackingno   c_x.
    poitemx-matl_group  c_x.
    poitemx-preq_no    c_x.
    poitemx-preq_item   c_x.
    poitemx-quantity    c_x.
    poitemx-po_unit     c_x.
    poitemx-net_price   c_x.
*    poitemx-acctasscat  = c_x.
*    poitemx-gr_basediv  = c_x.   "Effect on Costcentre
*    poitemx-po_price = c_x.
    append poitemx.

    poaccount-po_item       wa_ebpo-bnfpo.
*   poaccount-quantity      = it_dat2-col_08.
*   poaccount-net_value     = it_dat2-col_10.
    poaccount-costcenter    wa_ebpo-kostl.
*   poaccount-orderid       = it_dat2-col_13.
    append poaccount.

    poaccountx-po_item    =   wa_ebpo-bnfpo"it_dat2-col_01.
    poaccountx-quantity   c_x.
    poaccountx-net_value  c_x.
    poaccountx-costcenter c_x.
    poaccountx-orderid    c_x.
    append poaccountx.
  endloop.

  call function 'BAPI_PO_CREATE1'
    exporting
      poheader         pohead
      poheaderx        poheadx
*          testrun          = 'X'
      memory_uncomplete 'X'
    importing
      exppurchaseorder ex_po_number
      expheader        exp_head
    tables
      return           return
      poitem           poitem
      poitemx          poitemx
      poaccount        poaccount
      poaccountx       poaccountx
      potextitem       poitemtext.

  if sy-subrc eq 0.
    call function 'BAPI_TRANSACTION_COMMIT'
      exporting
        wait 'X'.
    g_po_no ex_po_number.
  endif.

  data mess(35).
  mess ex_po_number.

  wait up to seconds.

No comments:

Post a Comment

Visitor

Code Syntax Try...Endtry

  Code : Report Try. Parameters  NUMBER  type  I . data  RESULT  type  P  decimals  2 . data  OREF  type  ref  to  CX_ROOT . data  TEXT  typ...