‎2006 Dec 23 5:54 AM
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
‎2006 Dec 23 12:44 PM
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
‎2006 Dec 23 2:20 PM
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
‎2006 Dec 23 2:41 PM
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.
‎2006 Dec 23 6:06 PM
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
‎2006 Dec 24 4:54 AM
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.