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_PO_Create1

Former Member
0 Likes
1,145

Hi all,

i have a problem while running this BAPI i get an exception FAILURE...Can any 1 help me to avoid tht.

&----


*& Report Y1MM_PODRG_TEST1 *

*& *

&----


*& *

*& *

&----


REPORT Y1MM_PODRG_TEST1 .

TABLES: MARA,

LFA1,

EINA,

EINE,

EBAN,

ZDRGSAH, ZDRGSAP,

T100.

*Internal Table to get the input Data

DATA: BEGIN OF I_INPUT OCCURS 0,

MATNR LIKE EKPO-MATNR,

ASQTY LIKE EKPO-MENGE,

EBELN LIKE EKPO-EBELN,

POSNR LIKE ZDRGSAP-POSNR,

INVNO LIKE ZDRGSAP-INVNO,

INVDT LIKE ZDRGSAH-INVDT,

NETPR LIKE ZDRGSAP-NETPR,

CNTNO LIKE ZDRGSAP-CNTNO,

SHCNM LIKE ZDRGSAH-SHCNM,

WERKS LIKE EKPO-WERKS,

LGORT LIKE EKPO-LGORT,

MATKL LIKE EKPO-MATKL,

END OF I_INPUT.

DATA: BEGIN OF I_ERROR OCCURS 0,

MATNR LIKE MARA-MATNR,

REMARK(255) TYPE C,

END OF I_ERROR.

DATA: I_MARA TYPE MARA OCCURS 0 WITH HEADER LINE,

I_EINA LIKE EINA OCCURS 0 WITH HEADER LINE,

I_EINE LIKE EINE OCCURS 0 WITH HEADER LINE.

*Data declaration.

DATA: V_FILE TYPE STRING, " Variable for uploading file

V_ITEM(5) TYPE C, " Line item number

V_ITNO(2) TYPE C,

P_WKURS LIKE ZDRGKURS-WKURS,

V_MATNR(20) TYPE C,

V_MENGE(20) TYPE C,

V_BANFN(20) TYPE C,

V_BNFPO(20) TYPE C,

V_BEDNR(20) TYPE C,

P_LIFNR LIKE LFA1-LIFNR,

V_FLAG,

P_LIFNRTXT(10),

P_WKURSTXT(9),

P_BSARTXT(4).

.

DATA: BEGIN OF I_INPUTXT OCCURS 0,

MATNR(18) ,

ASQTY(13) ,

EBELN(10) ,

POSNR(6) ,

INVNO(10) ,

INVDT(8) ,

NETPR(11) ,

CNTNO(11) ,

SHCNM(10) ,

WERKS(4) ,

LGORT(4) ,

MATKL(9) ,

END OF I_INPUTXT.

  • Constants

CONSTANTS : C_PD01 LIKE EINE-WERKS VALUE 'PD01',

C_X VALUE 'X'.

DATA : V_POSNR LIKE I_INPUTXT-POSNR.

*Structures to hold PO header data

DATA : HEADER LIKE BAPIMEPOHEADER ,

HEADERX LIKE BAPIMEPOHEADERX .

DATA : CHEADER LIKE BAPIMEPOCONDHEADER OCCURS 0 WITH HEADER LINE,

CHEADERX LIKE BAPIMEPOCONDHEADERX OCCURS 0 WITH HEADER LINE.

*data : cheaderx like bapimepocondheaderx.

*data : begin of cheaderx occurs 0,

  • cond_type like bapimepocondheaderx-cond_type,

  • end of cheaderx.

*Internal Tables to hold PO ITEM DATA

DATA : ITEM LIKE BAPIMEPOITEM OCCURS 0 WITH HEADER LINE,

ITEMX LIKE BAPIMEPOITEMX OCCURS 0 WITH HEADER LINE,

*Internal table to hold messages from BAPI call

RETURN LIKE BAPIRET2 OCCURS 0 WITH HEADER LINE.

DATA : W_HEADER(40) VALUE 'PO Header'.

DATA : WS_LANGU LIKE SY-LANGU.

*text-001 = 'PO Header' - define as text element

DATA : V_COMPANY LIKE HEADER-COMP_CODE VALUE 'SBA' ,

V_DOCTYP LIKE HEADER-DOC_TYPE VALUE 'ZSEA' ,

V_CDATE LIKE HEADER-CREAT_DATE,

V_VENDOR LIKE HEADER-VENDOR ,

V_PUR_ORG LIKE HEADER-PURCH_ORG VALUE 'SBAP' ,

V_PUR_GRP LIKE HEADER-PUR_GROUP VALUE 'PG1' .

*Selection Screen Declarations

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

PARAMETERS: P_INVNO LIKE ZDRGSAH-INVNO OBLIGATORY,

P_BSART LIKE EKKO-BSART.

SELECTION-SCREEN END OF BLOCK B1.

*selection-screen begin of block b2 with frame title text-002.

*parameters : item_num like item-po_item default '00010',

  • material like mara-matnr default '0011442062' ,

  • plant like item-plant default 'PD01' ,

  • quantity like item-quantity default 100.

*selection-screen end of block b2.

&----


START-OF-SELECTION.

&----


*DATA POPULATION

&----


WS_LANGU = SY-LANGU. "Language variable

  • To Upload the data into Internal table.

PERFORM F_UPLOAD_DATA.

  • To Validate the input data.

PERFORM F_CHECK_DATA.

  • if i_error[] is initial.

  • To process the data file

  • perform f_process_session.

  • elseif not i_error[] is initial.

  • To display the error message

  • perform f_display_error.

PERFORM BAPI_CALL_DATA.

  • endif.

END-OF-SELECTION.

&----


*Output the messages returned from BAPI call

&----


LOOP AT RETURN.

WRITE / RETURN-MESSAGE.

ENDLOOP.

&----


*& Form f_upload_data

&----


FORM F_UPLOAD_DATA .

refresh i_input.

SELECT MATWA AS MATNR ASQTY EBELN POSNR B~INVNO INVDT NETPR CNTNO

SHCNM INTO TABLE I_INPUT

FROM ZDRGSAH AS A JOIN ZDRGSAP AS B ON

A~INVNO = B~INVNO

WHERE B~INVNO EQ P_INVNO.

LOOP AT I_INPUT.

SELECT SINGLE * FROM EBAN

WHERE BANFN EQ I_INPUT-EBELN

AND BNFPO EQ I_INPUT-POSNR.

IF SY-SUBRC EQ 0.

MOVE EBAN-WERKS TO I_INPUT-WERKS.

MOVE EBAN-LGORT TO I_INPUT-LGORT.

MOVE EBAN-MATKL TO I_INPUT-MATKL.

MODIFY I_INPUT.

CLEAR I_INPUT.

ENDIF.

ENDLOOP.

ENDFORM. " f_upload_data

&----


*& Form f_check_data

&----


FORM F_CHECK_DATA .

IF NOT I_INPUT[] IS INITIAL.

SELECT * FROM MARA

INTO TABLE I_MARA

FOR ALL ENTRIES IN I_INPUT

WHERE MATNR EQ I_INPUT-MATNR.

ENDIF.

IF I_MARA[] IS INITIAL.

MESSAGE E000(ZCNC) WITH TEXT-001.

ENDIF.

READ TABLE I_INPUT INDEX 1.

IF SY-SUBRC EQ 0.

SELECT SINGLE LIFNR INTO P_LIFNR FROM ZDRGSUP

WHERE SHCNM = I_INPUT-SHCNM.

IF SY-SUBRC <> 0.

MESSAGE E000(ZCNC) WITH TEXT-002.

ENDIF.

ENDIF.

SELECT SINGLE WKURS INTO P_WKURS FROM ZDRGKURS

WHERE INVNO = P_INVNO.

IF SY-SUBRC NE 0.

MESSAGE E000(ZCNC) WITH TEXT-S11.

ENDIF.

  • call function 'CONVERSION_EXIT_ALPHA_OUTPUT'

  • exporting

  • input = p_lifnr

  • importing

  • output = p_lifnr.

P_LIFNRTXT = P_LIFNR.

P_WKURSTXT = P_WKURS.

P_BSARTXT = P_BSART.

LOOP AT I_INPUT.

MOVE-CORRESPONDING I_INPUT TO I_INPUTXT.

APPEND I_INPUTXT.

ENDLOOP.

ENDFORM. "f_check_data

&----


*& Form bapi_call_data

&----


  • text

----


FORM BAPI_CALL_DATA.

*POPULATE HEADER DATA FOR PO

V_CDATE = SY-DATUM.

HEADER-COMP_CODE = V_COMPANY .

HEADER-DOC_TYPE = V_DOCTYP .

HEADER-CREAT_DATE = V_CDATE .

HEADER-VENDOR = P_LIFNR .

HEADER-LANGU = WS_LANGU .

HEADER-QUOTATION = P_INVNO.

HEADER-EXCH_RATE = P_WKURS.

HEADER-EX_RATE_FX = 'X'.

HEADER-PURCH_ORG = V_PUR_ORG .

HEADER-PUR_GROUP = V_PUR_GRP .

HEADER-DOC_DATE = SY-DATUM.

&----


*POPULATE HEADER FLAG.

&----


HEADERX-COMP_CODE = C_X.

HEADERX-DOC_TYPE = C_X.

HEADERX-CREAT_DATE = C_X.

HEADERX-VENDOR = C_X.

HEADERX-LANGU = C_X.

HEADERX-QUOTATION = C_X.

HEADERX-EXCH_RATE = C_X.

HEADERX-EX_RATE_FX = C_X.

HEADERX-PURCH_ORG = C_X.

HEADERX-PUR_GROUP = C_X.

HEADERX-DOC_DATE = C_X.

**&----


**

**POPULATE HEADER DATA.CONDITIONS

**&----


**

  • CHEADER-COND_TYPE = 'ZCA1'.

  • APPEND CHEADER.

  • CHEADER-COND_TYPE = 'ZFA1'.

  • APPEND CHEADER.

  • CHEADER-COND_TYPE = 'ZINC'.

  • APPEND CHEADER.

  • CHEADER-COND_TYPE = 'ZIV1'.

  • APPEND CHEADER.

  • CHEADER-COND_TYPE = 'ZOT1'.

  • APPEND CHEADER.

*

**&----


**

**POPULATE HEADER CONDITION FLAG.

**&----


**

  • CHEADERX-COND_TYPE = C_X.

  • APPEND CHEADERX.

    • cheaderx-cond_type = c_x.

    • append cheaderx.

    • cheaderx-cond_type = c_x.

    • append cheaderx.

    • cheaderx-cond_type = c_x.

    • append cheaderx.

    • cheaderx-cond_type = c_x.

    • append cheaderx.

&----


*POPULATE ITEM DATA.

&----


  • perform bdc_field using v_bednr i_input-cntno.

  • item-price_unit = '100'.

  • itemx-net_price = c_x.

  • append itemx.

  • clear itemx.

  • endloop.

LOOP AT I_INPUTXT.

CONCATENATE I_INPUTXT-POSNR(4) '0' INTO V_POSNR.

ITEM-PO_ITEM = V_POSNR.

ITEM-PLANT = 'PD01'.

  • item-stge_loc = i_inputxt-lgort.

ITEM-MATERIAL = I_INPUTXT-MATNR.

ITEM-MATL_GROUP = I_INPUTXT-MATKL.

ITEM-QUANTITY = I_INPUTXT-ASQTY.

ITEM-PREQ_NO = I_INPUTXT-EBELN.

ITEM-PREQ_ITEM = V_POSNR.

ITEM-TRACKINGNO = I_INPUTXT-CNTNO.

  • item-preq_item = i_input-posnr.

  • item-net_price = item-price_unit * item-quantity.

APPEND ITEM.

&----


*POPULATE ITEM FLAG TABLE

**&----


*

CONCATENATE I_INPUTXT-POSNR(4) '0' INTO V_POSNR.

ITEMX-PO_ITEM = V_POSNR.

ITEMX-PO_ITEMX = C_X.

ITEMX-MATERIAL = C_X.

ITEMX-PLANT = C_X .

  • itemx-stge_loc = c_x .

ITEMX-QUANTITY = C_X .

ITEMX-STGE_LOC = C_X .

ITEMX-TAX_CODE = C_X .

ITEMX-ITEM_CAT = C_X .

ITEMX-PREQ_NO = C_X.

ITEMX-PREQ_ITEM = C_X.

ITEMX-ACCTASSCAT = C_X .

APPEND ITEMX.

ENDLOOP.

break-point.

&----


*BAPI CALL

&----


CALL FUNCTION 'BAPI_PO_CREATE1'

EXPORTING

POHEADER = HEADER

POHEADERX = HEADERX

  • POADDRVENDOR =

  • TESTRUN =

  • IMPORTING

  • EXPPURCHASEORDER =

  • EXPHEADER =

  • EXPPOEXPIMPHEADER =

TABLES

  • pocondheader = cheader

  • pocondheaderx = cheaderx

RETURN = RETURN

POITEM = ITEM

POITEMX = ITEMX.

&----


*Confirm the document creation by calling database COMMIT

&----


CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'

EXPORTING

WAIT = 'X'.

  • IMPORTING

  • RETURN =

  • refresh item.

  • refresh itemx.

  • endloop.

ENDFORM. "bapi_call_data

*

*if sy-subrc = 0.

  • loop at return.

  • write / return-message.

  • endloop.

*endif

5 REPLIES 5
Read only

Former Member
0 Likes
934

HI Santosh

While calling FM's, do make sure of the following:

1. Parameters/Tables which are not optional must sure be passed.

2. Make sure the type of parameters/tables are declared the same way as in FM. For FM's which do not have any specific type declaration we can ignore this condition...

3. Catch the exceptions if any to avoid dumps.

Kind Regards

Eswar

Read only

0 Likes
934

hi eshwar,

I am passing everything with same type but its been throwing the same exception FAILURE. Can u plz gimme an example if u hv created somthing like this or plzz check the program.

Regards,

santosh Kotra

Read only

0 Likes
934

Hi Eshwar,

While debugging the BAPI_PO_CREATE1 i got the exact position whr it is throwing the excetion, with tht wud u b able to help me out.

Regards,

Santosh Kotra.

Read only

0 Likes
934

Can you let us know the description of the exception you are encountering. Am not on SAP, but will see if i can help you.

Kind Regards

Eswar

Read only

0 Likes
934

Hi Eshwar,

the following description is given.

Runtime errors RAISE_EXCEPTION

Occurred on 24.12.2006 at 08:52:21

Exception condition "FAILURE" raised.

Regards,

Santosh Kotra.