Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

Bapi for invoice creation

Former Member
0 Kudos

Hi All,

can u tell me the Bapi's used to create billing order with respect to delivery order and invoice order ......

thanks in advance

1 REPLY 1

Former Member
0 Kudos

Hi

see the sample code and do accordingly

Check this example of creating a sales order and for creating delivery...and PGI

************SALES ORDER INPUT CREATION.

PARAMETERS: p_auart TYPE auart OBLIGATORY.

PARAMETERS: p_vkorg TYPE vkorg OBLIGATORY.

PARAMETERS: p_vtweg TYPE vtweg OBLIGATORY.

PARAMETERS: p_spart TYPE vtweg OBLIGATORY.

PARAMETERS: p_sold TYPE kunnr OBLIGATORY.

PARAMETERS: p_ship TYPE kunnr OBLIGATORY.

*ITEM

PARAMETERS: p_matnr TYPE matnr OBLIGATORY.

PARAMETERS: p_menge TYPE kwmeng OBLIGATORY.

PARAMETERS: p_plant TYPE werks_d OBLIGATORY.

PARAMETERS: p_itcat TYPE pstyv OBLIGATORY.

  • DATA DECLARATIONS.

DATA: v_vbeln LIKE vbak-vbeln.

DATA: header LIKE bapisdhead1.

DATA: headerx LIKE bapisdhead1x.

DATA: item LIKE bapisditem OCCURS 0 WITH HEADER LINE.

DATA: itemx LIKE bapisditemx OCCURS 0 WITH HEADER LINE.

DATA: partner LIKE bapipartnr OCCURS 0 WITH HEADER LINE.

DATA: return LIKE bapiret2 OCCURS 0 WITH HEADER LINE.

DATA: lt_schedules_inx TYPE STANDARD TABLE OF bapischdlx

WITH HEADER LINE.

DATA: lt_schedules_in TYPE STANDARD TABLE OF bapischdl

WITH HEADER LINE.

  • HEADER DATA

header-doc_type = p_auart.

headerx-doc_type = 'X'.

header-sales_org = p_vkorg.

headerx-sales_org = 'X'.

header-distr_chan = p_vtweg.

headerx-distr_chan = 'X'.

header-division = p_spart.

headerx-division = 'X'.

headerx-updateflag = 'I'.

  • PARTNER DATA

partner-partn_role = 'AG'.

partner-partn_numb = p_sold.

APPEND partner.

partner-partn_role = 'WE'.

partner-partn_numb = p_ship.

APPEND partner.

  • ITEM DATA

itemx-updateflag = 'I'.

item-itm_number = '000010'.

itemx-itm_number = 'X'.

item-material = p_matnr.

itemx-material = 'X'.

item-plant = p_plant.

itemx-plant = 'X'.

item-target_qty = p_menge.

itemx-target_qty = 'X'.

item-target_qu = 'EA'.

itemx-target_qu = 'X'.

item-item_categ = p_itcat.

itemx-item_categ = 'X'.

APPEND item.

APPEND itemx.

  • Fill schedule lines

lt_schedules_in-itm_number = '000010'.

lt_schedules_in-sched_line = '0001'.

lt_schedules_in-req_qty = p_menge.

APPEND lt_schedules_in.

  • Fill schedule line flags

lt_schedules_inx-itm_number = '000010'.

lt_schedules_inx-sched_line = '0001'.

lt_schedules_inx-updateflag = 'X'.

lt_schedules_inx-req_qty = 'X'.

APPEND lt_schedules_inx.

  • Call the BAPI

CALL FUNCTION 'BAPI_SALESDOCU_CREATEFROMDATA1'

EXPORTING

sales_header_in = header

sales_header_inx = headerx

IMPORTING

salesdocument_ex = v_vbeln

TABLES

return = return

sales_items_in = item

sales_items_inx = itemx

sales_schedules_in = lt_schedules_in

sales_schedules_inx = lt_schedules_inx

sales_partners = partner.

  • Check the return table.

LOOP AT return WHERE type = 'E' OR type = 'A'.

EXIT.

ENDLOOP.

IF sy-subrc = 0.

WRITE: / 'Error in creating document'.

ELSE.

COMMIT WORK AND WAIT.

WRITE: / 'Document ', v_vbeln, ' created'.

ENDIF.

************DELIVERY CREATION.

DATA: BEGIN OF t_vbap OCCURS 0,

vbeln LIKE vbap-vbeln,

posnr LIKE vbap-posnr,

zmeng LIKE vbap-kwmeng,

matnr LIKE vbap-matnr,

werks LIKE vbap-werks,

END OF t_vbap.

DATA: t_request TYPE STANDARD TABLE OF bapideliciousrequest

WITH HEADER LINE.

DATA: t_created TYPE STANDARD TABLE OF bapideliciouscreateditems

WITH HEADER LINE.

DATA: t_return TYPE STANDARD TABLE OF bapiret2 WITH HEADER LINE.

SELECT vbeln posnr zmeng matnr werks

INTO TABLE t_vbap

FROM vbap

WHERE vbeln = v_vbeln.

LOOP AT t_vbap.

t_request-document_numb = t_vbap-vbeln.

t_request-document_item = t_vbap-posnr.

t_request-quantity_sales_uom = t_vbap-zmeng.

t_request-quantity_base__uom = t_vbap-zmeng.

t_request-id = 1.

t_request-document_type = 'A'.

t_request-delivery_date = sy-datum.

t_request-material = t_vbap-matnr.

t_request-plant = t_vbap-werks.

t_request-date = sy-datum.

t_request-goods_issue_date = sy-datum.

t_request-goods_issue_time = sy-uzeit.

APPEND t_request.

ENDLOOP.

CALL FUNCTION 'BAPI_DELIVERYPROCESSING_EXEC'

TABLES

request = t_request

createditems = t_created

return = t_return.

READ TABLE t_return WITH KEY type = 'E'.

IF sy-subrc = 0.

MESSAGE e208(00) WITH 'Delivery creation error'.

ENDIF.

COMMIT WORK.

*

************Post goods issue.

READ TABLE t_created INDEX 1.

DATA: vbkok_wa TYPE vbkok.

vbkok_wa-vbeln_vl = t_created-document_numb.

vbkok_wa-wabuc = 'X'.

DATA: v_error.

CALL FUNCTION 'WS_DELIVERY_UPDATE'

EXPORTING

vbkok_wa = vbkok_wa

delivery = t_created-document_numb

IMPORTING

ef_error_in_goods_issue_0 = v_error.

COMMIT WORK.

REPORT z_yaktest3 NO STANDARD PAGE HEADING MESSAGE-ID zi455.

*----


  • Internal table declaration *

----


DATA: gt_headerdata TYPE STANDARD TABLE OF bapi_incinv_create_header

INITIAL SIZE 0,

gt_itemdata TYPE STANDARD TABLE OF bapi_incinv_create_item

INITIAL SIZE 0,

gt_accountingdata TYPE STANDARD TABLE OF bapi_incinv_create_account

INITIAL SIZE 0,

gt_return TYPE STANDARD TABLE OF bapiret2

INITIAL SIZE 0.

DATA: gs_headerdata LIKE bapi_incinv_create_header.

DATA: gs_itemdata LIKE bapi_incinv_create_item.

DATA: gs_accountingdata TYPE bapi_incinv_create_account.

DATA: gs_return TYPE bapiret2.

DATA: l_date TYPE sy-datum.

l_date = sy-datum - 15.

  • Error flag *

DATA: l_errflag(1) TYPE c.

*----


  • Build Invoice header

*----


  • Document Type (Invoice)

gs_headerdata-invoice_ind = 'X'.

gs_headerdata-doc_type = 51.

  • Document Date

gs_headerdata-doc_date = l_date.

  • Posting Date

gs_headerdata-pstng_date = l_date.

  • Reference Document No

gs_headerdata-ref_doc_no = 323348.

gs_headerdata-gross_amount = 31.

  • Currency

gs_headerdata-currency = 'USD'.

  • Company Code

gs_headerdata-comp_code = 'D3'.

    • Baseline Date

gs_headerdata-bline_date = l_date.

*

**Tax Indicator

*gs_headerdata-calc_tax_ind = 'X'.

*----


  • Build order item(s) - Only 1 is used in this example

*----


  • Document Item

gs_itemdata-invoice_doc_item = 000001.

  • Purchase Order Number

gs_itemdata-po_number = 3700000011.

  • Purchase Order Item

gs_itemdata-po_item = 00010.

  • Quantity

gs_itemdata-quantity = 31.

gs_itemdata-po_unit = 'Z00'.

  • Item Amount

gs_itemdata-item_amount = 31.

gs_itemdata-tax_code = 'O0'.

gs_itemdata-taxjurcode = '0100000000'.

APPEND gs_itemdata TO gt_itemdata.

    • Document Item

*gs_itemdata-invoice_doc_item = '00002'.

*

    • Purchase Order Number

*gs_itemdata-po_number = '4700000158'.

*

    • Purchase Order Item

*gs_itemdata-po_item ='00020' .

*

    • Quantity

*gs_itemdata-quantity = '5'.

*gs_itemdata-po_unit = 'Z00'.

*

    • Item Amount

*gs_itemdata-item_amount = '5'.

*gs_itemdata-tax_code = 'O0'.

*gs_itemdata-taxjurcode = '0100000000'.

*

*APPEND gs_itemdata TO gt_itemdata.

*

  • Accounting Data

***gs_accountingdata-costcenter = 'DUMMY CCTR'.

*gs_accountingdata-invoice_doc_item = '00001'.

*gs_accountingdata-xunpl = 'X'.

*gs_accountingdata-tax_code = 'O0'.

*gs_accountingdata-taxjurcode = '0100000000'.

*gs_accountingdata-ITEM_AMOUNT = 100.

*gs_accountingdata-gl_account = '0003805101'.

*

*APPEND gs_accountingdata TO gt_accountingdata.

*CLEAR :gs_accountingdata.

*Call the BAPI to Create the Return Order

data: gv_INVOICE type BAPI_INCINV_FLD-INV_DOC_NO,

gv_YEAR type BAPI_INCINV_FLD-FISC_YEAR.

CALL FUNCTION 'BAPI_INCOMINGINVOICE_CREATE'

EXPORTING

headerdata = gs_headerdata

IMPORTING

INVOICEDOCNUMBER = gv_INVOICE

FISCALYEAR = gv_YEAR

TABLES

return = gt_return

itemdata = gt_itemdata.

  • accountingdata = gt_accountingdata.

PERFORM error.

*----


  • Check and write Return table

*----


FORM error.

LEAVE TO LIST-PROCESSING.

CLEAR l_errflag.

LOOP AT gt_return INTO gs_return.

WRITE: / gs_return-type, gs_return-message(200).

IF gs_return-type = 'E'.

l_errflag = 'X'.

ENDIF.

ENDLOOP.

PERFORM commit.

ENDFORM. " ERROR INPUT

*----


  • No errors - Commit

*----


FORM commit.

IF l_errflag IS INITIAL.

CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.

ENDIF.

ENDFORM. " COMMIT INPUT

Regards

Anji