Application Development and Automation 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: 
Read only

Bapi for invoice creation

Former Member
0 Likes
1,071

Hi ,

Can any one tell me the Bapi to create invoice for Delivery.The Delivery is against a sales order not purchase order.i tried bapi_incominginvoice_create..but here the DOC_TYPE RE is Sales order ..most of the time this bapi talking for PO Only..can any one help me with another BAPI..

Thanks,

Challa.

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
631

Hi,

Try this sample proram



DATA: v_vbeln TYPE likp-vbeln.

* Parameters
PARAMETERS: p_vbeln LIKE v_vbeln.
PARAMETERS: p_fkart LIKE vbrk-fkart.
PARAMETERS: p_test  TYPE allgtest.

* Data declarations.
DATA: s_vbsk LIKE vbsk.
DATA: t_komfk TYPE STANDARD TABLE OF komfk,
      t_komv  TYPE STANDARD TABLE OF komv,
      t_thead TYPE STANDARD TABLE OF theadvb,
      t_vbfs  TYPE STANDARD TABLE OF vbfs,
      t_vbpa  TYPE STANDARD TABLE OF vbpavb,
      t_vbrk  TYPE STANDARD TABLE OF vbrkvb,
      t_vbrp  TYPE STANDARD TABLE OF vbrpvb,
      t_vbss  TYPE STANDARD TABLE OF vbss.

DATA: BEGIN OF s_likp,
vbeln TYPE vbeln,
vbtyp TYPE vbak-vbtyp,
END OF s_likp.

DATA: BEGIN OF s_lips,
vbeln TYPE vbeln,
posnr TYPE posnr,
END OF s_lips.

* Internal tables.
DATA: t_likp  LIKE TABLE OF s_likp.
DATA: t_lips  LIKE TABLE OF s_lips.
DATA: s_komfk        TYPE komfk.
DATA: s_vbfs         TYPE vbfs.
DATA: v_with_posting TYPE xfeld.
DATA: v_no_enqueue   TYPE xfeld.
DATA: v_message      TYPE string.

START-OF-SELECTION.

* Check the testrun.
  IF p_test IS INITIAL.
    v_with_posting = 'B'.
  ELSE.
    v_with_posting = 'H'.
    v_no_enqueue = 'X'.
  ENDIF.



* Get the data from VBAK.
  SELECT vbeln vbtyp FROM likp
  INTO TABLE t_likp
  WHERE vbeln = p_vbeln.

  IF sy-subrc <> 0.
    MESSAGE s208(00) WITH 'Invalid vbeln'.
    LEAVE LIST-PROCESSING.
  ENDIF.

* Get the data from VBAP.
  IF NOT t_likp IS INITIAL.
    SELECT vbeln posnr INTO TABLE t_lips
    FROM lips
    FOR ALL ENTRIES IN t_likp
    WHERE vbeln = t_likp-vbeln.
  ENDIF.

* Refresh.
  CALL FUNCTION 'RV_INVOICE_REFRESH'
       EXPORTING
            with_posting = 'B'
       TABLES
            xkomfk       = t_komfk
            xkomv        = t_komv
            xthead       = t_thead
            xvbfs        = t_vbfs
            xvbpa        = t_vbpa
            xvbrk        = t_vbrk
            xvbrp        = t_vbrp
            xvbss        = t_vbss.

* Build the internal table t_komfk.
  LOOP AT t_likp INTO s_likp.

    LOOP AT t_lips INTO s_lips WHERE vbeln = s_likp-vbeln.
* Fill the values.
      s_komfk-mandt  = sy-mandt.
      s_komfk-vbeln  = s_likp-vbeln.
      s_komfk-posnr  = s_lips-posnr.
      s_komfk-vbtyp  = s_likp-vbtyp.
      s_komfk-seldat = sy-datum.
      s_komfk-fkart  = p_fkart.
      APPEND s_komfk TO t_komfk.
      CLEAR: s_komfk.
    ENDLOOP.

  ENDLOOP.

* invoice create
  CALL FUNCTION 'RV_INVOICE_CREATE'
       EXPORTING
            vbsk_i        = s_vbsk
            with_posting  = v_with_posting
            id_no_enqueue = v_no_enqueue
       IMPORTING
            vbsk_e        = s_vbsk
       TABLES
            xkomfk        = t_komfk
            xkomv         = t_komv
            xthead        = t_thead
            xvbfs         = t_vbfs
            xvbpa         = t_vbpa
            xvbrk         = t_vbrk
            xvbrp         = t_vbrp
            xvbss         = t_vbss.

* Display the invoice created.
  LOOP AT t_vbfs INTO s_vbfs.
    CALL FUNCTION 'FORMAT_MESSAGE'
         EXPORTING
              id        = s_vbfs-msgid
              no        = s_vbfs-msgno
              v1        = s_vbfs-msgv1
              v2        = s_vbfs-msgv2
              v3        = s_vbfs-msgv3
              v4        = s_vbfs-msgv4
         IMPORTING
              msg       = v_message
         EXCEPTIONS
              not_found = 1
              OTHERS    = 2.
    IF sy-subrc <> 0.
      MESSAGE e208(00) WITH 'Error in calling function module'.
    ENDIF.

    WRITE: / s_vbfs-msgty, s_vbfs-msgv1, v_message.
  ENDLOOP.

* Refresh and clear.
  REFRESH: t_vbfs,
           t_komfk,
           t_komv,
           t_thead,
           t_vbfs,
           t_vbpa,
           t_vbrk,
           t_vbrp,
           t_vbss.

  CLEAR: t_vbfs,
         t_komfk,
         t_komv,
         t_thead,
         t_vbfs,
         t_vbpa,
         t_vbrk,
         t_vbrp,
         t_vbss.

Thanks

Naren

3 REPLIES 3
Read only

0 Likes
631

there is no bapi avilable for this

Read only

Former Member
0 Likes
631

try this BAPI

BAPI_BILLINGDOC_CREATE

Thanks

Read only

Former Member
0 Likes
632

Hi,

Try this sample proram



DATA: v_vbeln TYPE likp-vbeln.

* Parameters
PARAMETERS: p_vbeln LIKE v_vbeln.
PARAMETERS: p_fkart LIKE vbrk-fkart.
PARAMETERS: p_test  TYPE allgtest.

* Data declarations.
DATA: s_vbsk LIKE vbsk.
DATA: t_komfk TYPE STANDARD TABLE OF komfk,
      t_komv  TYPE STANDARD TABLE OF komv,
      t_thead TYPE STANDARD TABLE OF theadvb,
      t_vbfs  TYPE STANDARD TABLE OF vbfs,
      t_vbpa  TYPE STANDARD TABLE OF vbpavb,
      t_vbrk  TYPE STANDARD TABLE OF vbrkvb,
      t_vbrp  TYPE STANDARD TABLE OF vbrpvb,
      t_vbss  TYPE STANDARD TABLE OF vbss.

DATA: BEGIN OF s_likp,
vbeln TYPE vbeln,
vbtyp TYPE vbak-vbtyp,
END OF s_likp.

DATA: BEGIN OF s_lips,
vbeln TYPE vbeln,
posnr TYPE posnr,
END OF s_lips.

* Internal tables.
DATA: t_likp  LIKE TABLE OF s_likp.
DATA: t_lips  LIKE TABLE OF s_lips.
DATA: s_komfk        TYPE komfk.
DATA: s_vbfs         TYPE vbfs.
DATA: v_with_posting TYPE xfeld.
DATA: v_no_enqueue   TYPE xfeld.
DATA: v_message      TYPE string.

START-OF-SELECTION.

* Check the testrun.
  IF p_test IS INITIAL.
    v_with_posting = 'B'.
  ELSE.
    v_with_posting = 'H'.
    v_no_enqueue = 'X'.
  ENDIF.



* Get the data from VBAK.
  SELECT vbeln vbtyp FROM likp
  INTO TABLE t_likp
  WHERE vbeln = p_vbeln.

  IF sy-subrc <> 0.
    MESSAGE s208(00) WITH 'Invalid vbeln'.
    LEAVE LIST-PROCESSING.
  ENDIF.

* Get the data from VBAP.
  IF NOT t_likp IS INITIAL.
    SELECT vbeln posnr INTO TABLE t_lips
    FROM lips
    FOR ALL ENTRIES IN t_likp
    WHERE vbeln = t_likp-vbeln.
  ENDIF.

* Refresh.
  CALL FUNCTION 'RV_INVOICE_REFRESH'
       EXPORTING
            with_posting = 'B'
       TABLES
            xkomfk       = t_komfk
            xkomv        = t_komv
            xthead       = t_thead
            xvbfs        = t_vbfs
            xvbpa        = t_vbpa
            xvbrk        = t_vbrk
            xvbrp        = t_vbrp
            xvbss        = t_vbss.

* Build the internal table t_komfk.
  LOOP AT t_likp INTO s_likp.

    LOOP AT t_lips INTO s_lips WHERE vbeln = s_likp-vbeln.
* Fill the values.
      s_komfk-mandt  = sy-mandt.
      s_komfk-vbeln  = s_likp-vbeln.
      s_komfk-posnr  = s_lips-posnr.
      s_komfk-vbtyp  = s_likp-vbtyp.
      s_komfk-seldat = sy-datum.
      s_komfk-fkart  = p_fkart.
      APPEND s_komfk TO t_komfk.
      CLEAR: s_komfk.
    ENDLOOP.

  ENDLOOP.

* invoice create
  CALL FUNCTION 'RV_INVOICE_CREATE'
       EXPORTING
            vbsk_i        = s_vbsk
            with_posting  = v_with_posting
            id_no_enqueue = v_no_enqueue
       IMPORTING
            vbsk_e        = s_vbsk
       TABLES
            xkomfk        = t_komfk
            xkomv         = t_komv
            xthead        = t_thead
            xvbfs         = t_vbfs
            xvbpa         = t_vbpa
            xvbrk         = t_vbrk
            xvbrp         = t_vbrp
            xvbss         = t_vbss.

* Display the invoice created.
  LOOP AT t_vbfs INTO s_vbfs.
    CALL FUNCTION 'FORMAT_MESSAGE'
         EXPORTING
              id        = s_vbfs-msgid
              no        = s_vbfs-msgno
              v1        = s_vbfs-msgv1
              v2        = s_vbfs-msgv2
              v3        = s_vbfs-msgv3
              v4        = s_vbfs-msgv4
         IMPORTING
              msg       = v_message
         EXCEPTIONS
              not_found = 1
              OTHERS    = 2.
    IF sy-subrc <> 0.
      MESSAGE e208(00) WITH 'Error in calling function module'.
    ENDIF.

    WRITE: / s_vbfs-msgty, s_vbfs-msgv1, v_message.
  ENDLOOP.

* Refresh and clear.
  REFRESH: t_vbfs,
           t_komfk,
           t_komv,
           t_thead,
           t_vbfs,
           t_vbpa,
           t_vbrk,
           t_vbrp,
           t_vbss.

  CLEAR: t_vbfs,
         t_komfk,
         t_komv,
         t_thead,
         t_vbfs,
         t_vbpa,
         t_vbrk,
         t_vbrp,
         t_vbss.

Thanks

Naren