cancel
Showing results for 
Search instead for 
Did you mean: 

BAPI_INCOMINGINVOICE_CREATE for Custom and Freight Vendors

former_member188916
Active Participant
0 Kudos

Dear Friends,

My client is an Indian Client mostly dealing in imported goods and selling them in Indian Market.

We have a number of vendor cost related to Import of goods which are routed through PO only and is loaded to the Inventory Cost.

It is a new set up so I am trying to use the BAPI "BAPI_INCOMINGINVOICE_CREATE" for Vendors cost like Freight Vendors, Custom Vendors and CHA Vendors.

But I am not able to use the vendor other than Material Vendor in this scenario.I am not sure In which table should we specify the vendor.

When I am trying to specify the vendor number in Header Table in Payee field : It is giving me following error :

FR003 Payee 7XXXX is not defined for account 4XXXX 1XXX.

When I tried to specify the Freight Vendor in delivery Vendor in Item Table,It is giving the following error:

M8                   524 You cannot process conditions for delivery costs

Please help me understand if we can use this BAPI for vendor Other than Material Vendor,If yes where we need to specify the same.

Regards,

Sapan Agarwal

Accepted Solutions (0)

Answers (4)

Answers (4)

Former Member
0 Kudos

Hi,

Please enter data as per screen shot.

here CHA vendor amount-Unpl.del.costs-12000

Regards

KKK

Former Member
0 Kudos

Hi,

I have used same BAPI for CHA Bill booking..

use below code for that..

*&---------------------------------------------------------*

*& PROGRAM       :  BAPI for Imcoming Invoice ZMM_INCOMING_INV

*& TITLE         :  BAPI for Imcoming Invoice

*& MODULE        :  MM/REPORT                             *

*& CREATED BY    :  KUNWAR VERMA

*& CREATED ON    :  20/06/2015

*& FUNCTIONAL    :  KUNWAR VERMA                           *

*& BUSINESS OWNER:                                         *

*& RELEASE       :  ECC 6.0                                *

*                                                          *

**************************************************************



REPORT ZMMC005 NO STANDARD PAGE HEADING .



TABLES: RBKP.



DATA: BEGIN OF IT_MKPF OCCURS 0,

      MBLNR LIKE MSEG-MBLNR,

      MJAHR LIKE MSEG-MJAHR,

      ZEILE LIKE MSEG-ZEILE,

      EBELN LIKE MSEG-EBELN,

      EBELP LIKE MSEG-EBELP,

      MENGE LIKE MSEG-MENGE,

      MEINS LIKE MSEG-MEINS,

      BPRME LIKE MSEG-BPRME,

      BPMNG LIKE MSEG-BPMNG,

      ERFMG LIKE MSEG-ERFMG,

      DMBTR LIKE MSEG-DMBTR,

      BWART LIKE MSEG-BWART,

      SHKZG LIKE MSEG-SHKZG,

      LFBNR LIKE MSEG-LFBNR,

      LFPOS LIKE MSEG-LFPOS,

      WERKS LIKE MSEG-WERKS,

      LGORT LIKE MSEG-LGORT,

      MATNR LIKE MSEG-MATNR,

      CHARG LIKE MSEG-CHARG,

      BUKRS LIKE MSEG-BUKRS,

      SMBLN LIKE MSEG-SMBLN,

      SMBLP LIKE MSEG-SMBLP,

      BUDAT LIKE MKPF-BUDAT,

      BLDAT LIKE MKPF-BLDAT,

*      PER   TYPE P DECIMALS 4,

      PER   TYPE STring,

*      DMBTR_F LIKE MSEG-DMBTR,

      DMBTR_F type P DECIMALS 4,

END OF IT_MKPF.



DATA: PER   LIKE MSEG-DMBTR,

*      DMBTR_F LIKE MSEG-DMBTR,

      DMBTR_F type P DECIMALS 4,

      TOTAL   LIKE MSEG-DMBTR.



DATA: BEGIN OF IT_MSEG_COLL OCCURS 0,

      MBLNR LIKE MSEG-MBLNR,

      MJAHR LIKE MSEG-MJAHR,

      DMBTR LIKE MSEG-DMBTR,

END OF IT_MSEG_COLL.





DATA: BEGIN OF IT_MKPF_COLL OCCURS 0,

      MBLNR LIKE MSEG-MBLNR,

      MJAHR LIKE MSEG-MJAHR,

      EBELN LIKE MSEG-EBELN,

      EBELP LIKE MSEG-EBELP,

      MENGE LIKE MSEG-MENGE,

      BPRME LIKE MSEG-BPRME,

      BPMNG LIKE MSEG-BPMNG,

      ERFMG LIKE MSEG-ERFMG,

      DMBTR LIKE MSEG-DMBTR,

END OF IT_MKPF_COLL.



DATA: BEGIN OF IT_FINAL OCCURS 0,

      MBLNR LIKE MSEG-MBLNR,

      MJAHR LIKE MSEG-MJAHR,

      DMBTR LIKE MSEG-DMBTR,

      INV_NO LIKE RBKP-BELNR,

      INV_YR LIKE MSEG-MJAHR,

      MSG(100),

END OF IT_FINAL.





DATA: BEGIN OF IT_FINAL1 OCCURS 0,

      MBLNR LIKE MSEG-MBLNR,

      MJAHR LIKE MSEG-MJAHR,

      DMBTR LIKE MSEG-DMBTR,

      INV_NO LIKE RBKP-BELNR,

      INV_YR LIKE MSEG-MJAHR,

      MSG(100),

END OF IT_FINAL1.





DATA: BEGIN OF IT_FINAL_S OCCURS 0,

      MBLNR LIKE MSEG-MBLNR,

      MJAHR LIKE MSEG-MJAHR,

      ZEILE LIKE MSEG-ZEILE,

      EBELN LIKE MSEG-EBELN,

      EBELP LIKE MSEG-EBELP,

      MENGE LIKE MSEG-MENGE,

      MEINS LIKE MSEG-MEINS,

      ERFMG LIKE MSEG-ERFMG,

      DMBTR LIKE MSEG-DMBTR,

      BWART LIKE MSEG-BWART,

      SHKZG LIKE MSEG-SHKZG,

      LFBNR LIKE MSEG-LFBNR,

      LFPOS LIKE MSEG-LFPOS,

      WERKS LIKE MSEG-WERKS,

      LGORT LIKE MSEG-LGORT,

      MATNR LIKE MSEG-MATNR,

      BUKRS LIKE MSEG-BUKRS,

      BUDAT LIKE MKPF-BUDAT,

      BLDAT LIKE MKPF-BLDAT,

      PER   LIKE MSEG-DMBTR,

*     DMBTR_F LIKE MSEG-DMBTR,

      DMBTR_F type P DECIMALS 4,

END OF IT_FINAL_S.



DATA:IT_MKPF1 LIKE IT_MKPF OCCURS 0 WITH HEADER LINE.

DATA:IT_MSEG LIKE IT_MKPF OCCURS 0 WITH HEADER LINE.

DATA:IT_RBKP LIKE RBKP OCCURS 0 WITH HEADER LINE.



DATA:IT_HEAD LIKE BAPI_INCINV_CREATE_HEADER,

     IT_ITEM LIKE BAPI_INCINV_CREATE_ITEM OCCURS 0 WITH HEADER LINE,

     IT_ACCT LIKE BAPI_INCINV_CREATE_ACCOUNT OCCURS 0 WITH HEADER LINE,

     IT_GL LIKE BAPI_INCINV_CREATE_GL_ACCOUNT OCCURS 0 WITH HEADER LINE,

     IT_MAT LIKE BAPI_INCINV_CREATE_MATERIAL OCCURS 0 WITH HEADER LINE,

     IT_VEN LIKE BAPI_INCINV_CREATE_VENDORSPLIT OCCURS 0 WITH HEADER LINE,

     IT_RET LIKE BAPIRET2 OCCURS 0 WITH HEADER LINE ,

     IT_WITHTAXDATA  LIKE STANDARD TABLE OF BAPI_INCINV_CREATE_WITHTAX WITH HEADER LINE.



DATA: INV_DOC LIKE BAPI_INCINV_FLD-INV_DOC_NO,

      FISC_YR LIKE BAPI_INCINV_FLD-FISC_YEAR.

DATA: ZINVDOC(50) TYPE C, ZFISCYR(30) TYPE C , CNT type MBLPO.

**Alv Declarations

DATA : IT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE,

       IT_EVENTS   TYPE SLIS_T_EVENT,

       WA_EVENT    TYPE SLIS_ALV_EVENT,

       GT_LIST_TOP_OF_PAGE TYPE SLIS_T_LISTHEADER,

       WA_LINE TYPE SLIS_LISTHEADER,

       IT_LIST_TOP_OF_PAGE TYPE SLIS_T_LISTHEADER,

       G_TOP_OF_PAGE  TYPE SLIS_FORMNAME VALUE 'TOP_OF_PAGE'.



DATA : IT_FIELDCAT1 TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE,

       IT_EVENTS1   TYPE SLIS_T_EVENT,

       WA_EVENT1    TYPE SLIS_ALV_EVENT,

       GT_LIST_TOP_OF_PAGE1 TYPE SLIS_T_LISTHEADER,

       WA_LINE1 TYPE SLIS_LISTHEADER,

       IT_LIST_TOP_OF_PAGE1 TYPE SLIS_T_LISTHEADER,

       G_TOP_OF_PAGE1  TYPE SLIS_FORMNAME VALUE 'TOP_OF_PAGE'.

DATA: DMBTR LIKE MSEG-DMBTR.



" SELECTION SCREEN..............................









SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.

PARAMETERS: P_BUKRS LIKE MSEG-BUKRS OBLIGATORY DEFAULT '1000'.

SELECTION-SCREEN END OF BLOCK B1.

SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME TITLE TEXT-002.

PARAMETERS: P_DOCDT like MKpf-BUDAT OBLIGATORY DEFAULT Sy-datum, " Document date

            P_POSTDT like MKpf-BUDAT OBLIGATORY DEFAULT Sy-datum, " posting date

            P_MBLNR LIKE MKPF-MBLNR   OBLIGATORY,  " GRN doc No

            P_MJAHR LIKE MKPF-MJAHR   OBLIGATORY,  " doc Year

            P_XBLNR1 TYPE XBLNR1      OBLIGATORY , " Ref Doc No

            P_GSBER  LIKE INVFO-GSBER OBLIGATORY,  " Business Area

            P_LIFNR LIKE INVFO-LIFNR  OBLIGATORY,  " Vendor Code

            P_ZUONR  LIKE INVFO-ZUONR OBLIGATORY,  " Assignment

            P_BUPLA  LIKE INVFO-BUPLA OBLIGATORY,  " Business Place

            P_COND like KONV-KSCHL OBLIGATORY DEFAULT 'YCHA'. " Condition type

Skip 1.

SELECTION-SCREEN COMMENT /10(79) COMM1  MODIF ID MOD.

SELECTION-SCREEN END OF BLOCK B2.



SELECTION-SCREEN BEGIN OF BLOCK B3 WITH FRAME TITLE TEXT-003.

PARAMETERS:P_FRATH LIKE MKPF-FRATH  OBLIGATORY ,     " Unplaned Value...

           P_SER LIKE MKPF-FRATH,                    " service Tax Amount

           S_SER_TX LIKE BSIS-HKONT DEFAULT '194200'," Service Tax A/C

           P_WITHT LIKE LFBW-WITHT DEFAULT 'C1',     "  Withholding tax type

           PWT_CODE LIKE LFBW-WT_WITHCD DEFAULT 'C3',"Withholding Tax code

           P_NETAMT LIKE MSEG-DMBTR,                 " With tax amount

           P_IT_TXT LIKE INVFO-SGTXT .               " Item Text

SELECTION-SCREEN END OF BLOCK B3.





AT SELECTION-SCREEN OUTPUT.



COMM1 = 'Condition type YCHA for CHA Bill booking and YSHA for Freight Booking'.



* +++++++++++START-OF-SELECTION ......................................



START-OF-SELECTION.

*

*  AUTHORITY-CHECK OBJECT 'F_BKPF_BUK'

*            ID 'BUKRS' FIELD 'P_BUKRS'

*            ID 'ACTVT' FIELD '03'.

*  IF SY-SUBRC NE 0.

*    MESSAGE : 'You are not authorize for input company code' TYPE 'E'.

*  ELSE.

  PERFORM GET_DATA.

  PERFORM SIMULATE_DATA.

*  ENDIF.

*&---------------------------------------------------------------------*

*&      Form  GET_DATA

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM GET_DATA .

  SELECT SINGLE * FROM RBKP INTO IT_RBKP WHERE XBLNR = P_XBLNR1

                                          AND  STBLG = ' '

                                          AND  BUKRS = P_BUKRS %_HINTS MSSQLNT 'INDEX("RBKP" "RBKP~3")'. " Ref Document No checcking..

  IF SY-SUBRC NE 0.

    SELECT                                                                                                 " GRN no for distribution of Amount

        A~MBLNR

        A~MJAHR

        A~ZEILE

        A~EBELN

        A~EBELP

        A~MENGE

        A~MEINS

        A~BPRME

        A~BPMNG

        A~ERFMG

        A~DMBTR

        A~BWART

        A~SHKZG

        A~LFBNR

        A~LFPOS

        A~WERKS

        A~LGORT

        A~MATNR

        A~CHARG

        A~BUKRS

        A~SMBLN

        A~SMBLP

        B~BUDAT

        B~BLDAT

        INTO CORRESPONDING FIELDS OF TABLE IT_MKPF

        FROM  MSEG AS A INNER JOIN MKPF AS B ON

               A~MBLNR   = B~MBLNR AND A~MJAHR  = B~MJAHR

               WHERE B~MBLNR = P_MBLNR

               AND   B~MJAHR = P_MJAHR

               AND   A~EBELN NE ' '

               AND   BWART IN ('101') %_HINTS MSSQLNT 'INDEX("MSEG" "MSEG~M")'. "#EC CI_HINTS

    IF SY-SUBRC EQ 0.

      SELECT                                                                                       "  Check deleted item........

         A~MBLNR

         A~MJAHR

         A~ZEILE

         A~EBELN

         A~EBELP

         A~MENGE

         A~MEINS

         A~BPRME

         A~BPMNG

         A~ERFMG

         A~DMBTR

         A~BWART

         A~SHKZG

         A~LFBNR

         A~LFPOS

         A~WERKS

         A~LGORT

         A~MATNR

         A~CHARG

         A~BUKRS

         A~SMBLN

         A~SMBLP

         B~BUDAT

         B~BLDAT

         INTO CORRESPONDING FIELDS OF TABLE IT_MKPF1

         FROM  MSEG AS A INNER JOIN MKPF AS B ON

                A~MBLNR   = B~MBLNR AND A~MJAHR  = B~MJAHR

                FOR ALL ENTRIES IN IT_MKPF

                WHERE A~EBELN = IT_MKPF-EBELN

                  AND A~EBELP = IT_MKPF-EBELP

                  AND A~SMBLN = IT_MKPF-MBLNR

                  AND A~SMBLP = IT_MKPF-ZEILE

                  AND BWART IN ('102') %_HINTS MSSQLNT 'INDEX("MSEG" "MSEG~M")'. "#EC CI_HINTS

    ENDIF.

  ELSE.

    MESSAGE : 'Ref Document No duplicate entry is not allow' TYPE 'E'.

  ENDIF.



  IF NOT IT_MKPF1[] IS INITIAL.

    LOOP AT IT_MKPF.                                     " Remove deleted Item.......

      READ TABLE IT_MKPF1 WITH KEY SMBLN = IT_MKPF-MBLNR

                                   SMBLP = IT_MKPF-ZEILE.

      IF SY-SUBRC EQ 0.

        DELETE IT_MKPF.

      ENDIF.

    ENDLOOP.

  ENDIF.



*  DATA: MSG(100).

*  IF IT_MKPF[] IS INITIAL.

*    CONCATENATE 'GRN No is deleted-' P_MBLNR INTO MSG.

*    MESSAGE : MSG TYPE 'E'.

*  ELSE.



    IT_MSEG[] = IT_MKPF[].

    LOOP  AT IT_MSEG.

      MOVE-CORRESPONDING IT_MSEG TO IT_MSEG_COLL.

      COLLECT IT_MSEG_COLL.

    ENDLOOP.



     LOOP AT IT_MSEG.

      MOVE-CORRESPONDING IT_MSEG TO IT_MKPF_COLL.

      COLLECT IT_MKPF_COLL.

    ENDLOOP.



    SORT IT_MSEG BY MBLNR EBELN EBELP.

    DELETE ADJACENT DUPLICATES FROM IT_MSEG COMPARING MBLNR EBELN EBELP.



    LOOP  AT IT_MSEG.

      READ TABLE IT_MKPF_COLL WITH KEY MBLNR = IT_MSEG-MBLNR

                                       MJAHR = IT_MSEG-MJAHR

                                       EBELN = IT_MSEG-EBELN

                                       EBELP = IT_MSEG-EBELP.

      IF SY-SUBRC EQ 0.

        IT_MSEG-DMBTR  = IT_MKPF_COLL-DMBTR.

        IT_MSEG-MENGE   = IT_MKPF_COLL-MENGE.

        MODIFY IT_MSEG TRANSPORTING DMBTR MENGE.

      ENDIF.



      READ TABLE IT_MSEG_COLL WITH KEY MBLNR = IT_MSEG-MBLNR MJAHR = IT_MSEG-MJAHR.

      IF SY-SUBRC EQ 0.

        IT_MSEG-PER = IT_MSEG-DMBTR / IT_MSEG_COLL-DMBTR.

*        DMBTR_F  = DMBTR_F + IT_MSEG-PER * ( P_FRATH ).

        IT_MSEG-DMBTR_F  = IT_MSEG-PER * ( P_FRATH ).

         DMBTR_F  = DMBTR_F + IT_MSEG-DMBTR_F.

        MODIFY IT_MSEG TRANSPORTING PER DMBTR_F.

      ENDIF.



      IT_FINAL_S-MBLNR   = IT_MSEG-MBLNR.

      IT_FINAL_S-MJAHR   = IT_MSEG-MJAHR.

      IT_FINAL_S-ZEILE   = IT_MSEG-ZEILE.

      IT_FINAL_S-EBELN   = IT_MSEG-EBELN.

      IT_FINAL_S-EBELP   = IT_MSEG-EBELP.

      IT_FINAL_S-MENGE   = IT_MSEG-MENGE.

      IT_FINAL_S-DMBTR   = IT_MSEG-DMBTR.

      IT_FINAL_S-DMBTR_F = IT_MSEG-DMBTR_F.

      APPEND IT_FINAL_S.

*      Clear: DMBTR_F.

    ENDLOOP.

    DELETE ADJACENT DUPLICATES FROM IT_MKPF COMPARING MBLNR MJAHR.

*  ENDIF.

ENDFORM.                    " GET_DATA

*&---------------------------------------------------------------------*

*&      Form  BAPI_INCOMING_INV_CREATE

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM BAPI_INCOMING_INV_CREATE .

*fill the data For BAPI ............................................

  LOOP AT IT_MKPF.

    CLEAR IT_HEAD.

    IT_HEAD-INVOICE_IND    = 'X'.

    IT_HEAD-COMP_CODE      = IT_MKPF-BUKRS. " COMPANY CODE

    IT_HEAD-DOC_DATE       = P_DOCDT. " DOC DATE

    IT_HEAD-PSTNG_DATE     = P_POSTDT . " POSTING DATE

    IT_HEAD-REF_DOC_NO     = P_XBLNR1. " REF DOC NO

    IT_HEAD-CURRENCY       = 'INR'.    " CURRENCY

    IT_HEAD-BUSINESS_PLACE = P_BUPLA.  " BUSINESS PLACE

    IT_HEAD-ZZSECCO        = P_BUPLA.  " BUSINESS PLACE

    IT_HEAD-HEADER_TXT     = P_IT_TXT. " Header TEXT

    IT_HEAD-ITEM_TEXT      = P_IT_TXT. " ITEM TEXT

    IT_HEAD-DIFF_INV       = P_LIFNR . "  VENDOR CODE

    IT_HEAD-DOC_TYPE       = 'RE'.     " Doc type

    IT_HEAD-BUS_AREA       = P_GSBER.   " Business Area

    IT_HEAD-BLINE_DATE     = IT_MKPF-BUDAT . " Base Line Date

    IT_HEAD-PMNT_BLOCK     = 'B'. " payment block..

    IT_HEAD-CALC_TAX_IND   = 'X'. " Tax code Ind..

    IT_HEAD-ALLOC_NMBR     = P_ZUONR. " Assignment

    READ TABLE IT_MSEG_COLL WITH KEY MBLNR = IT_MKPF-MBLNR MJAHR = IT_MKPF-MJAHR.

    IF SY-SUBRC EQ 0.

*   IT_HEAD-GROSS_AMOUNT   = IT_MSEG_COLL-DMBTR  + P_FRATH + P_SER ."  total amount header

*   IT_HEAD-GROSS_AMOUNT   = P_FRATH + P_SER ."  total amount header "Commented By Kunwar Verma..

      IT_HEAD-GROSS_AMOUNT   = DMBTR_F + P_SER ."  total amount header  " Adde By Kunwar Verma..

    ENDIF.



    CLEAR: IT_ITEM , CNT , IT_GL , IT_WITHTAXDATA.



    LOOP AT IT_MSEG WHERE MBLNR = IT_MKPF-MBLNR AND MJAHR = IT_MKPF-MJAHR.

      IF SY-SUBRC EQ 0.

        CNT = CNT + 1.

        IT_ITEM-PO_NUMBER = IT_MSEG-EBELN.

*       IT_ITEM-REF_DOC   = IT_MSEG-MBLNR.

*       IT_ITEM-REF_DOC_YEAR  = IT_MSEG-MJAHR.

*       IT_ITEM-REF_DOC_IT  = IT_MSEG-ZEILE.

        IT_ITEM-PO_ITEM = IT_MSEG-EBELP.

        IT_ITEM-ITEM_AMOUNT = IT_MSEG-DMBTR_F.

        IT_ITEM-TAX_CODE = 'V0'.

        IT_ITEM-QUANTITY = IT_MSEG-MENGE.

        IT_ITEM-PO_PR_QNT  = IT_MSEG-BPMNG.

        IT_ITEM-PO_PR_UOM  = IT_MSEG-BPRME.

        IT_ITEM-PO_UNIT    = IT_MSEG-MEINS.

        IT_ITEM-COND_TYPE  = P_COND.

        IT_ITEM-INVOICE_DOC_ITEM = CNT . " ( i don't know what this is for so i gave this no.)

        APPEND IT_ITEM.



        IF CNT = '00001'.                " G/L Updation i.e service Tax ....

          IT_GL-INVOICE_DOC_ITEM  CNT.

          IT_GL-GL_ACCOUNT  = S_SER_TX.

          IT_GL-ITEM_AMOUNT = P_SER.

          IT_GL-DB_CR_IND   = 'S'.

          IT_GL-TAX_CODE    = ' '.

          IT_GL-BUS_AREA    = P_GSBER.

          IT_GL-COMP_CODE   = P_BUKRS.

          APPEND IT_GL.



          IT_WITHTAXDATA-SPLIT_KEY = CNT.          " Withholding Tax details

          IT_WITHTAXDATA-WI_TAX_TYPE = P_WITHT.

          IT_WITHTAXDATA-WI_TAX_CODE = PWT_CODE.

          IT_WITHTAXDATA-WI_TAX_BASE = P_NETAMT.

*          IT_WITHTAXDATA-WI_TAX_AMT = P_NETAMT.

          APPEND IT_WITHTAXDATA.

        ENDIF.

      ENDIF.

    ENDLOOP.

  ENDLOOP.



  CALL FUNCTION 'BAPI_INCOMINGINVOICE_CREATE'

    EXPORTING

      HEADERDATA       = IT_HEAD

    IMPORTING

      INVOICEDOCNUMBER = INV_DOC

      FISCALYEAR       = FISC_YR

    TABLES

      ITEMDATA         = IT_ITEM

      GLACCOUNTDATA    = IT_GL

      WITHTAXDATA      = IT_WITHTAXDATA

      RETURN           = IT_RET.



  IF NOT IT_RET[] IS INITIAL.

    ROLLBACK WORK.

    LOOP AT IT_RET.

      IT_FINAL-INV_NO = ' '.

      IT_FINAL-INV_YR = ' ' .

      IT_FINAL-MBLNR  = IT_MKPF-MBLNR .

      IT_FINAL-MSG    = IT_RET-MESSAGE.

      APPEND IT_FINAL.

    ENDLOOP.

  ELSE.

    COMMIT WORK.

    IT_FINAL-INV_NO = INV_DOC .

    IT_FINAL-INV_YR = FISC_YR .

    IT_FINAL-MBLNR  = IT_MKPF-MBLNR .

    IT_FINAL-MSG    = 'Invoice has been Created '.

    APPEND IT_FINAL.

  ENDIF.

  LOOP AT IT_FINAL.

    MOVE-CORRESPONDING IT_FINAL TO IT_FINAL1.

    APPEND IT_FINAL1.

  ENDLOOP.

ENDFORM.                    " BAPI_INCOMING_INV_CREATE

*&---------------------------------------------------------------------*

*&      Form  DISPALY_OUTPUT

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM DISPALY_OUTPUT .

  IT_FIELDCAT1-FIELDNAME = 'INV_NO'.

  IT_FIELDCAT1-TABNAME   = 'IT_FINAL1'.

  IT_FIELDCAT1-SELTEXT_M = 'Invoice No'.

  IT_FIELDCAT1-SELTEXT_L = 'Invoice No'.

  IT_FIELDCAT1-OUTPUTLEN = 18.

  APPEND IT_FIELDCAT1.

  CLEAR IT_FIELDCAT1.



  IT_FIELDCAT1-FIELDNAME = 'INV_YR'.

  IT_FIELDCAT1-TABNAME   = 'IT_FINAL1'.

  IT_FIELDCAT1-SELTEXT_M = 'Year'.

  IT_FIELDCAT1-SELTEXT_L = 'Year'.

  IT_FIELDCAT1-OUTPUTLEN = 5.

  APPEND IT_FIELDCAT1.

  CLEAR IT_FIELDCAT1.



  IT_FIELDCAT1-FIELDNAME = 'MBLNR'.

  IT_FIELDCAT1-TABNAME   = 'IT_FINAL1'.

  IT_FIELDCAT1-SELTEXT_M = 'GRN No'.

  IT_FIELDCAT1-SELTEXT_L = 'GRN No'.

  IT_FIELDCAT1-OUTPUTLEN = 12.

  APPEND IT_FIELDCAT1.

  CLEAR IT_FIELDCAT1.



  IT_FIELDCAT1-FIELDNAME = 'MSG'.

  IT_FIELDCAT1-TABNAME   = 'IT_FINAL1'.

  IT_FIELDCAT1-SELTEXT_M = 'Message'.

  IT_FIELDCAT1-SELTEXT_L = 'Message'.

  IT_FIELDCAT1-OUTPUTLEN = 120.

  APPEND IT_FIELDCAT1.

  CLEAR IT_FIELDCAT1.





  CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'

    EXPORTING

*     i_buffer_active          = ' '

      I_CALLBACK_PROGRAM       = SY-REPID

*     E_FORM_TOP_OF_PAGE       = 'TOP-OF-PAGE1'

*     E_FORM_TOP_OF_PAGE       = L_FORM_TOP_OF_PAGE

      I_CALLBACK_PF_STATUS_SET = 'SET_PF_STATUS'

    I_CALLBACK_USER_COMMAND  = 'USER_COMMAND'

**      is_layout          = st_layout

      IT_FIELDCAT              = IT_FIELDCAT1[]

      IT_EVENTS                = IT_EVENTS[]

    TABLES

      T_OUTTAB                 = IT_FINAL1[].



ENDFORM.                    " DISPALY_OUTPUT

*&---------------------------------------------------------------------*

*&      Form  TOP-OF-PAGE

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

FORM TOP-OF-PAGE.

  DATA: T_HEADER TYPE SLIS_T_LISTHEADER,

        WA_HEADER TYPE SLIS_LISTHEADER,

        T_LINE LIKE WA_HEADER-INFO.



  DATA: FR_DT(10),TO_DT(10),DATE(50),

        PLNT(50).



  WA_HEADER-TYP = 'H'.

  WA_HEADER-INFO = 'Incoming invoice creations'.

  APPEND WA_HEADER TO T_HEADER.

  CLEAR: WA_HEADER.



  WA_HEADER-TYP = 'S'.

  WA_HEADER-KEY = 'GRN No:'.

  WA_HEADER-INFO = P_MBLNR.

  APPEND WA_HEADER TO T_HEADER.

  CLEAR: WA_HEADER.



  WA_HEADER-TYP = 'S'.

  WA_HEADER-KEY = 'Ref Doc No:'.

  WA_HEADER-INFO = P_XBLNR1.

  APPEND WA_HEADER TO T_HEADER.

  CLEAR: WA_HEADER.



  READ TABLE IT_MSEG_COLL INDEX 1.

  TOTAL = IT_MSEG_COLL-DMBTR  + P_FRATH .

  SKIP 1.

  WA_HEADER-TYP = 'S'.

  WA_HEADER-KEY = 'Total Amount:'.

  WA_HEADER-INFO = TOTAL.

  APPEND WA_HEADER TO T_HEADER.

  CLEAR: WA_HEADER.



  CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'

    EXPORTING

      IT_LIST_COMMENTARY = T_HEADER.



ENDFORM.                    "TOP-OF-PAGE

*&---------------------------------------------------------------------*

*&      Form  SIMULATE_DATA

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM SIMULATE_DATA .



  IT_FIELDCAT-FIELDNAME = 'MBLNR'.

  IT_FIELDCAT-TABNAME   = 'IT_FINAL_S'.

  IT_FIELDCAT-SELTEXT_M = 'GRN No'.

  IT_FIELDCAT-SELTEXT_L = 'GRN No'.

  IT_FIELDCAT-OUTPUTLEN = 12.

  APPEND IT_FIELDCAT.

  CLEAR IT_FIELDCAT.



  IT_FIELDCAT-FIELDNAME = 'ZEILE'.

  IT_FIELDCAT-TABNAME   = 'IT_FINAL_S'.

  IT_FIELDCAT-SELTEXT_M = 'Item'.

  IT_FIELDCAT-SELTEXT_L = 'Item'.

  IT_FIELDCAT-OUTPUTLEN = 5.

  APPEND IT_FIELDCAT.

  CLEAR IT_FIELDCAT.



  IT_FIELDCAT-FIELDNAME = 'EBELN'.

  IT_FIELDCAT-TABNAME   = 'IT_FINAL_S'.

  IT_FIELDCAT-SELTEXT_M = 'Purchase Order No'.

  IT_FIELDCAT-SELTEXT_L = 'Purchase Order No'.

  IT_FIELDCAT-OUTPUTLEN = 12.

  APPEND IT_FIELDCAT.

  CLEAR IT_FIELDCAT.



  IT_FIELDCAT-FIELDNAME = 'EBELP'.

  IT_FIELDCAT-TABNAME   = 'IT_FINAL_S'.

  IT_FIELDCAT-SELTEXT_M = 'Item'.

  IT_FIELDCAT-SELTEXT_L = 'Item'.

  IT_FIELDCAT-OUTPUTLEN = 5.

  APPEND IT_FIELDCAT.

  CLEAR IT_FIELDCAT.



  IT_FIELDCAT-FIELDNAME = 'DMBTR'.

  IT_FIELDCAT-TABNAME   = 'IT_FINAL_S'.

  IT_FIELDCAT-SELTEXT_M = 'GRN Amount'.

  IT_FIELDCAT-SELTEXT_L = 'GRN Amount'.

  IT_FIELDCAT-OUTPUTLEN = 11.

  APPEND IT_FIELDCAT.

  CLEAR IT_FIELDCAT.



  IT_FIELDCAT-FIELDNAME = 'MENGE'.

  IT_FIELDCAT-TABNAME   = 'IT_FINAL_S'.

  IT_FIELDCAT-SELTEXT_M = 'Qty'.

  IT_FIELDCAT-SELTEXT_L = 'Qty'.

  IT_FIELDCAT-OUTPUTLEN = 10.

  APPEND IT_FIELDCAT.

  CLEAR IT_FIELDCAT.



  IT_FIELDCAT-FIELDNAME = 'DMBTR_F'.

  IT_FIELDCAT-TABNAME   = 'IT_FINAL_S'.

  IT_FIELDCAT-SELTEXT_M = 'Distributed Amount'.

  IT_FIELDCAT-SELTEXT_L = 'Distributed Amount'.

  IT_FIELDCAT-OUTPUTLEN = 11.

  APPEND IT_FIELDCAT.

  CLEAR IT_FIELDCAT.



  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

    EXPORTING

*     i_buffer_active          = ' '

      I_CALLBACK_PROGRAM       = SY-REPID

      I_CALLBACK_TOP_OF_PAGE   = 'TOP-OF-PAGE'

      I_CALLBACK_PF_STATUS_SET = 'SET_PF_STATUS'

      I_CALLBACK_USER_COMMAND  = 'USER_COMMAND'

**      is_layout          = st_layout

      IT_FIELDCAT              = IT_FIELDCAT[]

      IT_EVENTS                = IT_EVENTS[]

    TABLES

      T_OUTTAB                 = IT_FINAL_S.



ENDFORM.                    " SIMULATE_DATA

*&---------------------------------------------------------------------*

*&      Form  SET_PF_STATUS

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*      -->RT_EXTAB   text

*----------------------------------------------------------------------*

FORM SET_PF_STATUS USING RT_EXTAB TYPE SLIS_T_EXTAB.        "#EC CALLED

  SET PF-STATUS 'STANDARD'.

ENDFORM. "Set_pf_status

*&---------------------------------------------------------------------*

*&      Form  USER_COMMAND

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*      -->W_UCOMM      text

*      -->WA_SELFIELD  text

*----------------------------------------------------------------------*

FORM USER_COMMAND USING W_UCOMM TYPE SY-UCOMM WA_SELFIELD TYPE SLIS_SELFIELD. "#EC CALLED   "#EC NEEDED

  CASE W_UCOMM.

    WHEN 'POST'.

      PERFORM BAPI_INCOMING_INV_CREATE.

     WHEN '&IC1'.

       IF wa_SELFIELD-FIELDNAME = 'BELNR'.

        READ TABLE IT_FINAL1 INDEX wa_SELFIELD-TABINDEX.

        IF SY-SUBRC = 0.

          SET PARAMETER ID 'RBN' FIELD IT_FINAL1-INV_NO.

          SET PARAMETER ID 'GJR' FIELD IT_FINAL1-INV_YR.

          CALL TRANSACTION 'MIR4' AND SKIP FIRST SCREEN.

        ENDIF.

        ELSEIF WA_SELFIELD-FIELDNAME = 'MBLNR'.

        READ TABLE IT_FINAL1 INDEX WA_SELFIELD-TABINDEX.

        IF SY-SUBRC = 0.

          SET PARAMETER ID 'MBN' FIELD IT_FINAL1-MBLNR.

          SET PARAMETER ID 'MJA' FIELD IT_FINAL1-MJAHR.

          CALL TRANSACTION 'MB03' AND SKIP FIRST SCREEN.

        ENDIF.

        ENDIF.

  ENDCASE.

PERFORM DISPALY_OUTPUT.

LEAVE PROGRAM.

ENDFORM.                    "USER_COMMAND


former_member188916
Active Participant
0 Kudos

Hi Kunwar,

Thank you for your reply.

I am just trying to execute this BAPI in my sandbox system currently.

When I am filling the data manually and trying to execute the data, it is giving me one error or other.

Can we post a CHA,Freight or Custome Invoice with amount not equal to MIGO amount using this BAPI.

If Yes Which all structure and table do we need to fill.

Regards,

Sapan

former_member233510
Active Contributor
0 Kudos

1) Please check the following link to know about the usage of this BAPI,

SAP Function BAPI_INCOMINGINVOICE_CREATE - Invoice Verification: Post Invoice

2) According to this link :BAPI_INCOMINGINVOICE_CREATE-VENDORITEMSPLITDATA

With this table, you pass on the data of the incoming invoice if you want to distribute the gross amount among several creditor lines.

former_member183424
Active Contributor
0 Kudos

Check this OSS note is applicable for your case  1148218 - BAPI: M8 332 split valuation and delivery costs. (though it is about message M8332, but it has a tag of message M8524).

former_member188916
Active Participant
0 Kudos

Hi Dibyendu,

This correction is already applied in our system.

I need help in identifying the fields for this BAPI, to be field in case of Other vendors.

I have gone through the Documentation, but it was not specified in there.

Regards,

Sapan

JL23
Active Contributor
0 Kudos

This BAPI can be used for all kind of invoices, as you can read in the docu to this BAPI in transaction SE37. 

Can you explain with more details what fields you are actually using. It somehow sounds to me as if you try to post a freight invoice from a carrier in the very same time as the product invoice from your main vendor.

Don't you get a separate invoice from your carrier?

former_member188916
Active Participant
0 Kudos

Dear Jurgen,

I am just trying to post a Invoice from Freight Vendor.

I am just passing the data in the two tables,Header and Item Table.

Regards,

Sapan

JL23
Active Contributor
0 Kudos

Had you already used this BAPI successfully before?

If yes, in what fields do you do it different now?

former_member188916
Active Participant
0 Kudos

I have not used this BAPI before this.

I have a new requirement and I am trying to use this instead of BDC.

I have gone through the documentation but still something is missing.

JL23
Active Contributor
0 Kudos

If you do MIRO, the vendor automatically appears after you entered the PO as reference, so it is with the BAPI, the vendor is determined based on the first PO .

If you want post unplanned delivery costs, then you have to change the vendor. In the BAPI you do this by moving the vendor number of your carrier  into the field DIFF_INV in the header structure.

former_member188916
Active Participant
0 Kudos

Thanks Jurgen,

I have been struggling to get this field.

Though I am still getting certain other errors as I am doing this for the first time.

Our scenario is not exactly the Un-Planned Delivery cost.

The Entry at the time of MIGO was

Currently I am trying to post the amount of 906,019 for the Custom Vendor using the BAPI in sandbox system.Which was taken as 944,138 at the time of MIGO.

Also I am trying to post in INR, PO currency is USD.

Can you help me post the same using the BAPI.

I am trying to post the following document (Simulation Using MIRO).

In MIRO I give the Header DATA,and change the vendor,

at line Item Level I select the Custom Line Item of PO and change the amount.

Line number 3 and 4 should be generated by the system itself, This is what is failing at the time of BAPI

Regards,

Sapan