Call BAPI in BADI 'MB_DOCUMENT_BADI'
Hi all,
How can i call a BAPI in MB_DOCUMENT_BADI~MB_DOCUMENT_BEFORE_UPDATE ? I wrote code below but got "GOODSMVT_CODE" is the correct type, its length is incorrect." error.
DATA:
goodsmvt_header TYPE TABLE OF bapi2017_gm_head_01,
goodsmvt_code TYPE TABLE OF bapi2017_gm_code,
goodsmvt_headret TYPE TABLE OF bapi2017_gm_head_ret,
matdocumentyear TYPE bapi2017_gm_head_ret-doc_year,
goodsmvt_item TYPE TABLE OF bapi2017_gm_item_create, " OCCURS 0 WITH HEADER LINE,
goodsmvt_serialnumber TYPE TABLE OF bapi2017_gm_serialnumber. " OCCURS 0.
CALL FUNCTION 'BAPI_GOODSMVT_CREATE'
EXPORTING
goodsmvt_header = goodsmvt_header
goodsmvt_code = goodsmvt_code
testrun = ''
IMPORTING
goodsmvt_headret = goodsmvt_headret
materialdocument = materialdocument
matdocumentyear = matdocumentyear
TABLES
goodsmvt_item = goodsmvt_item
return = messages.
Best regards,
Munur
Hi,
I think field GOODSMVT_CODE is not table type, you mension it type table of 'BAPI2017_GM_CODE'.
Thanks,
Anmol.
Similar Messages
-
Calling Bapi through BADI gives data statement error
Dear Experts,
I am trying to call BAPI through BADI ME_PROCESS_REQ_CUST --> process_item.
I get an error stating that "The addition OCCURS no longer supported in OO objects"
If, I remove OCCURS statement I get an error stating that "Tables with headers are no longer supported in OO context" for the following data statement.
Appreciate, if you could provide possible solution to overcome the problem.
Regards
Kumar
BAPI code is as follows.
DATA: LV_TABIX LIKE SY-TABIX,
LT_WMDVSX LIKE BAPIWMDVS OCCURS 0 WITH HEADER LINE,
LT_WMDVEX LIKE BAPIWMDVE OCCURS 0 WITH HEADER LINE.
LV_TABIX = SY-TABIX.
CLEAR: LT_WMDVSX, LT_WMDVEX.
REFRESH: LT_WMDVSX, LT_WMDVEX.
Fill communication table
LT_WMDVSX-REQ_DATE = ET_PROCUREMENT_ITEM-DELIV_DATE.
LT_WMDVSX-REQ_QTY = ET_PROCUREMENT_ITEM-QUANTITY.
APPEND LT_WMDVSX.
Availability check with check rule '03'
CALL FUNCTION 'BAPI_MATERIAL_AVAILABILITY'
EXPORTING
PLANT = ET_PROCUREMENT_ITEM-PLANT
MATERIAL = ET_PROCUREMENT_ITEM-MATERIAL
UNIT = ET_PROCUREMENT_ITEM-UNIT
CHECK_RULE = '03'
TABLES
WMDVSX = LT_WMDVSX
WMDVEX = LT_WMDVEX
EXCEPTIONS
OTHERS = 1.
IF SY-SUBRC EQ 0.
READ TABLE LT_WMDVEX WITH KEY
COM_DATE = ET_PROCUREMENT_ITEM-DELIV_DATE.
IF SY-SUBRC EQ 0.
ET_PROCUREMENT_ITEM-AVAIL_QTY = LT_WMDVEX-COM_QTY.
ENDIF.
ENDIF.Hi,
Occurs is no more supported by SAP ( is an obsolete statement )
<b>Instead of following code</b>
DATA: LV_TABIX LIKE SY-TABIX,
LT_WMDVSX LIKE BAPIWMDVS OCCURS 0 WITH HEADER LINE,
LT_WMDVEX LIKE BAPIWMDVE OCCURS 0 WITH HEADER LINE.
you can use
data: LT_WMDVSX type standard table of BAPIWMDVS,
LT_WMDVEX type standrad table of BAPIWMDVE,
LS_WMDVSX like line of LT_WMDVSX , "( work area )
LS_WMDVEX like line of LT_WMDVEX. "(work area)
use workarea to get the data and then append the records from workarea to Internal tables
Reward points if usefull
Regards,
Mohan -
How to add error message to return structure of calling BAPI from a BADI
i have a bapi where a badi is triggered.this badi method has just importing and changing parameters.is there any way with which i can add error message to the return structure of calling bapi.please reply at the earliest.High points can be expected.
thanks got it
-
Call BAPI to Create Invoice During PGI(VL01N) via BADI
Hi,
Requirement: During PGI (VL01N), we have implemented a BADI (IF_EX_DELIVERY_PUBLISH) in method (PUBLISH_AFTER_SAVE) to call BAPI (BAPI_BILLINGDOC_CREATEMULTIPLE) to create invoice simultaneously with the PGI. In DEV box, the call BAPI is working fine (invoice is created). However in QA box there is a update termination occuring in the call BAPI, thus no invoice is being created. The thing is, how do I locate why the BAPI is terminating in QA but not in DEV? Is the BADI used correct? I have searched SAP Notes related to this termination when doing PGI in VL01N. Up to now we still do not know why in DEV is okay in QA it is not.
SAP Notes:
782447 Runtime error SAPSQL_ARRAY_INSERT_DUPREC when posting GIs
777409 Foreign trade: Update termination EXPIMP_POSTING
ST22 dump analysis:
In the source code you have the termination point in line 51
of the (Include) program "LV50EU05".
The program "SAPLV50E" was started in the update system.
The termination is caused because exception "CX_SY_OPEN_SQL_DB" occurred in
procedure "EXPIMP_POSTING" "(FUNCTION)", but it was neither handled locally nor
declared
in the RAISING clause of its signature.
The procedure is in program "SAPLV50E "; its source code begins in line
1 of the (Include program "LV50EU05 ".
Source code:
DESCRIBE TABLE XEIKP LINES LIN.
IF LIN GT 0.
INSERT EIKP FROM TABLE XEIKP. <<< the dump is happening in this standard logic
REFRESH XEIKP.
ENDIF.
Edited by: Mawi C. Ng on Sep 2, 2009 2:24 PMHi,
Based on the DUMP i can say that in the below statement :
INSERT EIKP FROM TABLE XEIKP. <<< the dump is happening in this standard logic
The program is trying to insert lines which have duplicate key values check the btable XEIKP at this point and see if the records that are there do they have key fields values that already exist. You can put a break-point at that statement and check.
Regards,
Himanshu -
BADI MB_DOCUMENT_BADI and method only working in debug mode
Hi SAP Experts,
I have a problem with badi MB_DOCUMENT_BADI. I implemented method MB_DOCUMENT_UPDATE, which is called from update
task.
My implementation calls a BAPI to update a standard sap table and I also update a custom table. When I put a breakpoint and the debugger gets to it, it runs wells. Everything gets updated properly.
With no breakpoints it doesnu2019t update anything. Iu2019m not sure what is causing this. Any help would be greatly appreciated.
<< Moderator message - Everyone's problem is important. But the answers in the forum are provided by volunteers. Please do not ask for help quickly. >>
Miguel
Edited by: Rob Burbank on Oct 28, 2011 2:18 PMHi,
Please see below:
CALL FUNCTION 'BAPI_EQUI_CHANGE'
EXPORTING
EQUIPMENT = <FS_UPD>-EQUNR "->equnr of looped table
DATA_GENERAL = K_DATA_GENERAL
DATA_GENERALX = K_DATA_GENERALX
DATA_SPECIFIC = K_SPECIFIC_DATA
DATA_SPECIFICX = K_SPECIFIC_DATAX
IMPORTING
DATA_GENERAL_EXP = K_DATA_GENERAL_EXP
RETURN = I_MESSAGE.
***This is called inside a loop, after the loop...
UPDATE "Z_MY_TABLE" FROM TABLE I_UPD_FM.
Inside the loop the data gets prepared for the custom and standard table.
Thanks all!
Miguel -
Problem with badi MB_DOCUMENT_BADI
Hi experts
i have a problem with the badi, MB_DOCUMENT_BADI this is i am using for MIGO transaction
my requirement is i need to call MR22 transaction in this badi but as this badi is calling in up date task i cann't use the call transaction statement and there is no BAPI available for MR22 transaction so could you please tell me is there any any way to process the session automatically after creating the session for MR22 transaction.
it would be great help for me
thanks in advanceLets the FM created is Z_Call_transaction_data. ( Make this FM as RFC enabled by selecting radiobutton Remote- Enabled Module in Attributes of the FM)
Call this FM in ur BADiI Method as :
Call function 'Z_Call_transaction_data.' starting new task 'TASK1'.
Import ...
Export...
You can ginve any name to this task.
If you want to debug it , execute ur code and when control reaches to FM , press F5 a new session will be opened .
Starting new task starts the code in new LUW. -
BADI MB_DOCUMENT_BADI
Hi All,
I have created one implementation to the BADI MB_DOCUMENT_BADI. This badi will hit while creation of material document.I have write the code in method MB_DOCUMENT_BEFORE_UPDATE such that it will act only for certain movement types specially for t-codeMb1a and MB31.
What problem I am facing i have used a error message "MB_DOCUMENT_BEFORE_UPDATE" in this method.If we got the erroe message then we dont need to post the material dcoument,but here problem is that if the material document could not posted then it corrupt the material and when we performing 261/101 we got error message like " Inconsistency between MM and ML for material and plant"
Can anybody elebrate the problem why its happining and what will be the solution to the issue.
Thanks ,
sandeep.Hi,
This needs to be handled in the program based on the user action, you can either 'exit' the program or 'continue' processing, refer the sample code below,
CALL FUNCTION 'POPUP_TO_CONFIRM'
EXPORTING
TITLEBAR = 'Confirm'
TEXT_QUESTION = 'Do you want to continue or exit'
TEXT_BUTTON_1 = 'Continue'
TEXT_BUTTON_2 = 'Exit'
DISPLAY_CANCEL_BUTTON = ' '
IMPORTING
ANSWER = LV_ANSWER.
IF LV_ANSWER = 1.
Handle the error,
endif.
Hope this helps,
Rgds, -
BADI MB_DOCUMENT_BADI dump error
Hi all,
am using BADI : MB_DOCUMENT_BADI,method MB_DOCUMENT_BEFORE_UPDATE,to have checks in MB1A(Goods Issue transaction).I have written a code to check some values,after checking and raising an error message if I press enter the following dump error is coming:
Error analysis
Short text of error message:
Internal error: Multiple call of update function module
Long text of error message:
Diagnosis
In the FORM routine Buchen_Ausfuehren (program SAPMM07M), an error
message was issued by a Business Add-In (BAdI) or function module.
This is not permitted, because it could lead to data
inconsistencies. For this reason, the update of the material
document was also terminated with a termination message (dump).
Note that this message (M7 372) is not the responsible error
message.
System Response
Procedure
Contact your system administrator.
Procedure for System Administration
If there is an active implementation of the Business Add-In
MB_DOCUMENT_BADI, check that no error message is issued in the
MB_DOCUMENT_BEFORE_UPDATE method.
Technical information about the message:
Message class....... "M7"
Number.............. 372
Variable 1.......... " "
Variable 2.......... " "
Variable 3.......... " "
Variable 4.......... " "
Hope am clear in my questian,
Thanks & Regards,
Rock.Hi,
This BADI is called in update task.
So as a result when you call your error message, SAP is retuning it as message type 'X" and an update termination occurs.
I was facing a similar problem becuase i was trying to update measurment doc via this badi.
Incase the measuring document was locked by some user my FM used to throw an error message and that would lead to a message type 'X' in this badi.
So if you want to do some validations only; please use the following BADI.
MB_MIGO_ITEM_BADI in the method ITEM_MODIFY.
Regards,
Ankur Parab -
hi friends,
i am new to abap.
can i get some step by step screen shots for bapi and badis ple?
Thanking u
suneel.Hi
DEFINING THE BADI
1) execute Tcode SE18.
2) Specify a definition Name : ZBADI_SPFLI
3) Press create
4) Choose the attribute tab. Specify short desc for badi.. and specify the type :
multiple use.
5) Choose the interface tab
6) Specify interface name: ZIF_EX_BADI_SPFLI and save.
7) Dbl clk on interface name to start class builder . specify a method name (name,
level, desc).
Method level desc
Linese;ection instance methos some desc
8) place the cursor on the method name desc its parameters to define the interface.
Parameter type refe field desc
I_carrid import spfli-carrid some
I_connid import spefi-connid some
9) save , check and activate adapter class proposed by system is
ZCL_IM_IM_LINESEL is genereated.
IMPLEMENTATION OF BADI DEFINITION
1) EXECUTE tcode se18.choose menuitem create from the implementation menubar.
2) Specify aname for implementation ZIM_LINESEL
3) Specify short desc.
4) Choose interface tab. System proposes a name fo the implementation class.
ZCL_IM_IMLINESEL which is already generarted.
5) Specify short desc for method
6) Dbl clk on method to insert code..(check the code in AAA).
7) Save , check and activate the code.
Some useful URL
http://www.esnips.com/doc/e06e4171-29df-462f-b857-54fac19a9d8e/ppt-on-badis.ppt
http://www.esnips.com/doc/10016c34-55a7-4b13-8f5f-bf720422d265/BADIs.pdf
http://www.esnips.com/doc/43a58f51-5d92-4213-913a-de05e9faac0d/Business-Addin.doc
http://www.esnips.com/doc/1e10392e-64d8-4181-b2a5-5f04d8f87839/badi.doc
www.sapgenie.com/publications/saptips/022006%20-%20Zaidi%20BADI.pdf
http://www.sapdevelopment.co.uk/enhance/enhance_badi.htm
http://help.sap.com/saphelp_nw04/helpdata/en/04/f3683c05ea4464e10000000a114084/content.htm
http://help.sap.com/saphelp_nw04/helpdata/en/e6/d54d3c596f0b26e10000000a11402f/content.htm
http://help.sap.com/saphelp_nw2004s/helpdata/en/c2/eab541c5b63031e10000000a155106/frameset.htm
Now write a sample program to use this badi method..
Look for BBB sample program.
AAA
data : wa_flights type sflight,
it_flights type table of sflight.
format color col_heading.
write:/ 'Flight info of:', i_carrid, i_connid.
format color col_normal.
select * from sflight
into corresponding fields of table it_flights
where carrid = i_carrid
and connid = i_connid.
loop at it_flights into wa_flights.
write:/ wa_flights-fldate,
wa_flights-planetype,
wa_flights-price currency wa_flights-currency,
wa_flights-seatsmax,
wa_flights-seatsocc.
endloop.
BBB
*& Report ZBADI_TEST *
REPORT ZBADI_TEST .
tables: spfli.
data: wa_spfli type spfli,
it_spfli type table of spfli with key carrid connid.
*Initialise the object of the interface.
data: exit_ref type ref to ZCL_IM_IM_LINESEL,
exit_ref1 type ref to ZIF_EX_BADISPFLI1.
selection-screen begin of block b1.
select-options: s_carr for spfli-carrid.
selection-screen end of block b1.
start-of-selection.
select * from spfli into corresponding fields of table it_spfli
where carrid in s_carr.
end-of-selection.
loop at it_spfli into wa_spfli.
write:/ wa_spfli-carrid,
wa_spfli-connid,
wa_spfli-cityfrom,
wa_spfli-deptime,
wa_spfli-arrtime.
hide: wa_spfli-carrid, wa_spfli-connid.
endloop.
at line-selection.
check not wa_spfli-carrid is initial.
create object exit_ref.
exit_ref1 = exit_ref.
call method exit_ref1->lineselection
EXPORTING
i_carrid = wa_spfli-carrid
i_connid = wa_spfli-connid.
clear wa_spfli.
what is BAPI?
BAPI stands for Business API(Application Program Interface).
A BAPI is remotely enabled function module ie it can be invoked from remote programs like standalone JAVA programs, web interface etc..
You can make your function module remotely enabled in attributes of Function module but
A BAPI are standard SAP function modules provided by SAP for remote access. Also they are part of Businees Objest Repository(BOR).
BAPI are RFC enabled function modules. the difference between RFc and BAPI are business objects. You create business objects and those are then registered in your BOR (Business Object Repository) which can be accessed outside the SAP system by using some other applications (Non-SAP) such as VB or JAVA. in this case u only specify the business object and its method from external system in BAPI there is no direct system call. while RFC are direct system call Some BAPIs provide basic functions and can be used for most SAP business object types. These BAPIs should be implemented the same for all business object types. Standardized BAPIs are easier to use and prevent users having to deal with a number of different BAPIs. Whenever possible, a standardized BAPI must be used in preference to an individual BAPI.
The following standardized BAPIs are provided:
Reading instances of SAP business objects
GetList ( ) With the BAPI GetList you can select a range of object key values, for example, company codes and material numbers.
The BAPI GetList() is a class method.
GetDetail() With the BAPI GetDetail() the details of an instance of a business object type are retrieved and returned to the calling program. The instance is identified via its key. The BAPI GetDetail() is an instance method. BAPIs that can create, change or delete instances of a business object type
The following BAPIs of the same object type have to be programmed so that they can be called several times within one transaction. For example, if, after sales order 1 has been created, a second sales order 2 is created in the same transaction, the second BAPI call must not affect the consistency of the sales order 2. After completing the transaction with a COMMIT WORK, both the orders are saved consistently in the database.
Create( ) and CreateFromData! ( )
The BAPIs Create() and CreateFromData() create an instance of an SAP business object type, for example, a purchase order. These BAPIs are class methods.
Change( )
The BAPI Change() changes an existing instance of an SAP business object type, for example, a purchase order. The BAPI Change () is an instance method.
Delete( ) and Undelete( ) The BAPI Delete() deletes an instance of an SAP business object type from the database or sets a deletion flag.
The BAPI Undelete() removes a deletion flag. These BAPIs are instance methods.
Cancel ( ) Unlike the BAPI Delete(), the BAPI Cancel() cancels an instance of a business object type. The instance to be cancelled remains in the database and an additional instance is created and this is the one that is actually canceled. The Cancel() BAPI is an instance method.
Add<subobject> ( ) and Remove<subobject> ( ) The BAPI Add<subobject> adds a subobject to an existing object inst! ance and the BAPI and Remove<subobject> removes a subobject from an object instance. These BAPIs are instance methods.
BAPI-step by step
http://www.sapgenie.com/abap/bapi/example.htm
list of all bapis
http://www.planetsap.com/LIST_ALL_BAPIs.htm
for BAPI's
http://www.sappoint.com/abap/bapiintro.pdf
http://www.sappoint.com/abap/bapiprg.pdf
http://www.sappoint.com/abap/bapiactx.pdf
http://www.sappoint.com/abap/bapilst.pdf
http://www.sappoint.com/abap/bapiexer.pdf
http://service.sap.com/ale
http://service.sap.com/bapi
http://help.sap.com/printdocu/core/Print46c/en/data/pdf/BCMIDAPII/CABFAAPIINTRO.pdf
http://help.sap.com/printdocu/core/Print46c/en/data/pdf/CABFABAPIREF/CABFABAPIPG.pdf
http://help.sap.com/printdocu/core/Print46c/en/data/pdf/BCFESDE8/BCFESDE8.pdf
http://www.planetsap.com/Bapi_main_page.htm
http://www.topxml.com/sap/sap_idoc_xml.asp
http://www.sapdevelopment.co.uk/
http://www.sapdevelopment.co.uk/java/jco/bapi_jco.pdf
Also refer to the following links..
www.sappoint.com/abap/bapiintro.pdf
www.sap-img.com/bapi.htm
www.sap-img.com/abap/bapi-conventions.htm
www.planetsap.com/Bapi_main_page.htm
www.sapgenie.com/abap/bapi/index.htm
Checkout !!
http://searchsap.techtarget.com/originalContent/0,289142,sid21_gci948835,00.html
http://techrepublic.com.com/5100-6329-1051160.html#
http://www.sap-img.com/bapi.htm
http://www.sap-img.com/abap/bapi-conventions.htm
http://www.sappoint.com/abap/bapiintro.pdf
u can check the below the material also
Example Code
U need to give the step_nr, item_nr, cond_count and cond_type so the correct conditon will be updated. If no condition exists for the given parameters, a new condition will be created.
U can find these parameters for a particular condition type in table KONV.
*& Form saveTransactionJOCR
text
--> p1 text
<-- p2 text
FORM saveTransactionJOCR .
data: salesdocument like BAPIVBELN-VBELN,
order_header_inx like bapisdh1x,
order_header_in like bapisdh1,
return type standard table of bapiret2 with header line,
conditions_in type standard table of bapicond with header line,
conditions_inx type standard table of bapicondx with header line,
logic_switch like BAPISDLS,
step_nr like conditions_in-cond_st_no,
item_nr like conditions_in-itm_number,
cond_count like conditions_in-cond_count,
cond_type like conditions_in-cond_type.
salesdocument = wa_order_information-VBELN.
LOGIC_SWITCH-COND_HANDL = 'X'.
order_header_inx-updateflag = 'U'.
conditions
clear conditions_in[].
clear conditions_inx[].
clear: step_nr,
item_nr,
cond_count,
cond_type.
step_nr = '710'.
item_nr = '000000'.
cond_count = '01'.
cond_type = 'ZCP2'.
CONDITIONS_IN-ITM_NUMBER = item_nr.
conditions_in-cond_st_no = step_nr.
CONDITIONS_IN-COND_COUNT = cond_count.
CONDITIONS_IN-COND_TYPE = cond_type.
CONDITIONS_IN-COND_VALUE = 666.
CONDITIONS_IN-CURRENCY = 'EUR'.
append conditions_in.
CONDITIONS_INX-ITM_NUMBER = item_nr.
conditions_inx-cond_st_no = step_nr.
CONDITIONS_INX-COND_COUNT = cond_count.
CONDITIONS_INX-COND_TYPE = cond_type.
CONDITIONS_INX-UPDATEFLAG = 'U'.
CONDITIONS_INX-COND_VALUE = 'X'.
CONDITIONS_INX-CURRENCY = 'X'.
append conditions_inx.
CALL FUNCTION 'BAPI_SALESORDER_CHANGE'
EXPORTING
SALESDOCUMENT = salesdocument
ORDER_HEADER_IN = order_header_in
ORDER_HEADER_INX = order_header_inx
LOGIC_SWITCH = logic_switch
TABLES
RETURN = return
CONDITIONS_IN = conditions_in
CONDITIONS_INX = conditions_inx
if return-type ne 'E'.
commit work and wait.
endif.
ENDFORM. " saveTransactionJOCR
Bdc to Bapi
The steps to be followed are :
1. Find out the relevant BAPI (BAPI_SALESORDER_CHANGE for VA02).
[for VA01 use BAPI_SALESORDER_CREATEFROMDAT2]
2. Create a Z program and call the BAPi (same as a Funtion module call).
2. Now, if you see this BAPi, it has
-> Importing structures.
eg: SALESDOCUMENT: this will take the Sales order header data as input.
-> Tables parameters:
eg: ORDER_ITEM_IN: this will take the line item data as input.
Note :
Only specify fields that should be changed
Select these fields by entering an X in the checkboxes
Enter a U in the UPDATEFLAG field
Always specify key fields when changing the data, including in the checkboxes
The configuration is an exception here. If this needs to be changed, you need to complete it again fully.
Maintain quantities and dates in the schedule line data
Possible UPDATEFLAGS:
U = change
D = delete
I = add
Example
1. Delete the whole order
2. Delete order items
3. Change the order
4. Change the configuration
Notes
1. Minimum entry:
You must enter the order number in the SALESDOCUMENT structure.
You must always enter key fields for changes.
You must always specify the update indicator in the ORDER_HEADER_INX.
2. Commit control:
The BAPI does not run a database Commit, which means that the application must trigger the Commit so that the changes are read to the database. To do this, use the BAPI_TRANSACTION_COMMIT BAPI.
For further details... refer to the Function Module documentation for the BAPi.
Bapi to VB(Visual Basic)
Long back I had used the following flow structure to acheive the same.
Report -> SM59 RFC destination -> COM4ABAP -> VB.exe
my report uses the rfc destination to create a COM session with com4abap. com4abap calls the vb.exe and manages the flow of data between sap and vb exe.
You need to have com4abap.exe
If com4abap is installed you will find it in sapgui installatin directory , C:\Program Files\SAPpc\sapgui\RFCSDK\com4abap.
else refer OSS note 419822 for installation of com4abap
after making the settings in com4abap to point to the vb program and setting up rfc destination in sm59 to point to com4abap session , you can use the following function modules to call the vb code.
for setting up com4abap and rfc destination please refer to the documentation for com4abap.
Invoke NEW DCOM session
call function 'BEGIN_COM_SESSION'
exporting
service_dest = service_dest "(this will be a RFC destination created in SM59)
importing
worker_dest = worker_dest
exceptions
connect_to_dcom_service_failed = 1
connect_to_dcom_worker_failed = 2
others = 3.
call function 'create_com_instance' destination worker_dest
exporting
clsid = g_c_clsid
typelib = g_c_typelib
importing
instid = g_f_oid
exceptions
communication_failure = 1 message g_f_msg
system_failure = 2 message g_f_msg
invalid_instance_id = 3
others = 4.
call function 'com_invoke' destination worker_dest
exporting
%instid = g_f_oid
%method = 'UpdatePDF'
sntemp = g_v_const_filent
snsysid = sy-sysid
snflag = 'N'
tables
rssaptable = g_t_pdfdetail1
%return = g_t_pdfdetail1 "t_test
exceptions
communication_failure = 1 message g_f_msg
system_failure = 2 message g_f_msg
invalid_instance_id = 3
others = 4.
then close the com session , using
FM delete_com_instance
FM END_COM_SESSION
http://help.sap.com/saphelp_nw2004s/helpdata/en/7e/5e114a4a1611d1894c0000e829fbbd/frameset.htm
http://www.sapgenie.com/abap/bapi/example.htm
http://help.sap.com/saphelp_46c/helpdata/en/9b/417f07ee2211d1ad14080009b0fb56/frameset.htm
http://searchsap.techtarget.com/originalContent/0,289142,sid21_gci948835,00.html
http://searchsap.techtarget.com/originalContent/0,289142,sid21_gci948835,00.html
http://techrepublic.com.com/5100-6329-1051160.html#
http://www.sap-img.com/bapi.htm
http://www.sap-img.com/abap/bapi-conventions.htm
http://www.sappoint.com/abap/bapiintro.pdf
http://www.sapgenie.com/abap/bapi/example.htm
http://help.sap.com/printdocu/core/Print46c/en/data/pdf/BCMIDAPII/CABFAAPIINTRO.pdf
http://help.sap.com/printdocu/core/Print46c/en/data/pdf/CABFABAPIREF/CABFABAPIPG.pdf
http://help.sap.com/printdocu/core/Print46c/en/data/pdf/BCFESDE8/BCFESDE8.pdf
http://help.sap.com/printdocu/core/Print46c/en/data/pdf/CABFABAPIREF/CABFABAPIPG.pdf
http://help.sap.com/printdocu/core/Print46c/en/data/pdf/BCMIDAPII/CABFAAPIINTRO.pdf
http://techrepublic.com.com/5100-6329-1051160.html#
http://www.sap-img.com/bapi.htm
http://www.sap-img.com/abap/bapi-conventions.htm
http://www.sappoint.com/abap/bapiintro.pdf
Reward points for useful Answers
Regards
Anji -
BAPI's , BADI ,BDC & IDOC's configuration in sap
Hi Experts,
can any one explain how to configure BAPI's , BADI ,BDC & IDOC's in SAP step by step, right answer will get reward points. if u have any noted pls forward to my email id pls....................................
amar
[email protected]Hi,
how to configure?
BAPI are remote functions that can be called by another system or same system...you can use standard BAPI or create your own BAPI. (transaction BAPI and SE37)
BADI are methods that you can re-define in order to change SAP standard logic for some functionalities...(transaction SE18 and SE19)
IDOC are structured files in a SAP format that can be customized and used to send or receive data instead of xml or txt or ....files. IDOC can be monitored and checked with a set of transactions.
Regards. -
Z implementation not getting picked for BADI - MB_DOCUMENT_BADI
Hi,
I have a done a z implemenatation for standard badi MB_DOCUMENT_BADI in ECC6.In Tcode MIIGO after giving 2 line items when i save it that Zimplemen is not getting picked.
In 4.6c the same Z implementation is getting picked.
can you please help me out in this.Hi Rajeev,
I am not sure about the definition of Badi and hence am assuming that the filter is set....and the value for the z implementation does not match the value passed from the call point. Can you please check this and confirm
Regards,
Jemin -
hi,
I Need BAPI and BADi Doc.
Please send doc to my mail id
[email protected]
thanks in advance
sarathBAPI.............
Business add-ins are enhancements to the standard version of the system.
Business Add-In is a new SAP enhancement technique based on ABAP Objects.
They can be inserted into the SAP system based on specific user requirements.
Each Business Add-In has:
at least one Business Add-In definition
a Business Add-In interface
a Business Add-In class that implements the interface
In order to enhance a program, a Business Add-In must first be defined
Subsequently two classes are automatically generated:
An interface with IF_EX_ inserted between the first and second characters of the BADI name.
An adapter class with CL_EX_ inserted between the first and second characters of the BADI name.
The Application developer creates an interface for this Add-In.
There are multiple ways of searching for BADI.
Finding BADI Using CL_EXITHANDLER=>GET_INSTANCE
Finding BADI Using SQL Trace (TCODE-ST05).
Finding BADI Using Repository Information System (TCODE- SE84).
1. Go to the Transaction, for which we want to find the BADI, take the example of Transaction VD02. Click on System->Status. Double click on the program name. Once inside the program search for CL_EXITHANDLER=>GET_INSTANCE.
Make sure the radio button In main program is checked. A list of all the programs with call to the BADIs will be listed.
The export parameter EXIT_NAME for the method GET_INSTANCE of class CL_EXITHANDLER will have the user exit assigned to it. The changing parameter INSTANCE will have the interface assigned to it. Double click on the method to enter the source code.Definition of Instance would give you the Interface name.
2. Start transaction ST05 (Performance Analysis).
Set flag field "Buffer trace"
Remark: We need to trace also the buffer calls, because BADI database tables are buffered. (Especially view V_EXT_IMP and V_EXT_ACT)
Push the button "Activate Trace". Start transaction VA02 in a new GUI session. Go back to the Performance trace session.
Push the button "Deactivate Trace".
Push the button "Display Trace".
The popup screen "Set Restrictions for Displaying Trace" appears.
Now, filter the trace on Objects:
V_EXT_IMP
V_EXT_ACT
Push button "Multiple selections" button behind field Objects
Fill: V_EXT_IMP and V_EXT_ACT
All the interface class names of view V_EXT_IMP start with IF_EX_. This is the standard SAP prefix for BADI class interfaces. The BADI name is after the IF_EX_.
So the BADI name of IF_EX_CUSTOMER_ADD_DATA is CUSTOMER_ADD_DATA
3. Go to Maintain Transaction (TCODE- SE93).
Enter the Transaction VD02 for which you want to find BADI.
Click on the Display push buttons.
Get the Package Name. (Package VS in this case)
Go to TCode: SE84->Enhancements->Business Add-inns->Definition
Enter the Package Name and Execute.
Here you get a list of all the Enhancement BADIs for the given package MB.
Have a look at http://help.sap.com/saphelp_nw04/helpdata/en/04/f3683c05ea4464e10000000a114084/content.htm
http://help.sap.com/saphelp_erp2005/helpdata/en/73/7e7941601b1d09e10000000a155106/frameset.htm
http://support.sas.com/rnd/papers/sugi30/SAP.ppt
http://www.sts.tu-harburg.de/teaching/sap_r3/ABAP4/abapindx.htm
http://members.aol.com/_ht_a/skarkada/sap/
http://www.ct-software.com/reportpool_frame.htm
http://www.saphelp.com/SAP_Technical.htm
http://www.kabai.com/abaps/q.htm
http://www.guidancetech.com/people/holland/sap/abap/
http://www.planetsap.com/download_abap_programs.htm
http://help.sap.com/saphelp_nw04/helpdata/en/c8/1975cc43b111d1896f0000e8322d00/content.htm
/people/thomas.weiss/blog/2006/04/03/how-to-define-a-new-badi-within-the-enhancement-framework--part-3-of-the-series
/people/thomas.weiss/blog/2006/04/18/how-to-implement-a-badi-and-how-to-use-a-filter--part-4-of-the-series-on-the-new-enhancement-framework
How to develop BADI
BADI................
There is nothing enigmatic or complicated about BAdIs. BAdIs are the most up-do-date technique of user-exits where SAP allows us to adjust a standard process to customer-specific requirements. Important: these user-exits are predefined by SAP.
The really challenging task is to find the appropriate BAdI (transaction SE18). If you have found the right one implementation is just a piece of cake:
(1) Define an implementation of your BAdI (transaction SE19) => This simply means: I am about to implement this BAdI.
(2) Generate automatically the class implementing the BAdI (which is usually an interface) (transaction SE19).
(3) Implement the method of this generated class (transaction SE24).
(4) Finally, do not forget to activate your implementation (SE19).
/people/sergey.korolev/blog/2005/03/14/the-time-for-me-to-have-a-badi-of-my-own
http://www.ct-software.com/reportpool_frame.htm
http://www.saphelp.com/SAP_Technical.htm
http://www.kabai.com/abaps/q.htm
http://help.sap.com/saphelp_nw2004s/helpdata/en/c2/eab541c5b63031e10000000a155106/frameset.htm
http://www.esnips.com/doc/e06e4171-29df-462f-b857-54fac19a9d8e/ppt-on-badis.ppt
http://www.esnips.com/doc/10016c34-55a7-4b13-8f5f-bf720422d265/BADIs.pdf
http://www.esnips.com/doc/43a58f51-5d92-4213-913a-de05e9faac0d/Business-Addin.doc
http://www.esnips.com/doc/1e10392e-64d8-4181-b2a5-5f04d8f87839/badi.doc
http://www.esnips.com/doc/3b7bbc09-c095-45a0-9e89-91f2f86ee8e9/BADI-Introduction.ppt
http://help.sap.com/saphelp_erp2005/helpdata/en/73/7e7941601b1d09e10000000a155106/frameset.htm
http://support.sas.com/rnd/papers/sugi30/SAP.ppt
http://www.sts.tu-harburg.de/teaching/sap_r3/ABAP4/abapindx.htm
http://members.aol.com/_ht_a/skarkada/sap/
http://www.ct-software.com/reportpool_frame.htm
http://www.saphelp.com/SAP_Technical.htm
http://www.kabai.com/abaps/q.htm
http://www.guidancetech.com/people/holland/sap/abap/
http://www.planetsap.com/download_abap_programs.htm
http://help.sap.com/saphelp_nw04/helpdata/en/c8/1975cc43b111d1896f0000e8322d00/content.htm
/people/thomas.weiss/blog/2006/04/03/how-to-define-a-new-badi-within-the-enhancement-framework--part-3-of-the-series
/people/thomas.weiss/blog/2006/04/18/how-to-implement-a-badi-and-how-to-use-a-filter--part-4-of-the-series-on-the-new-enhancement-framework -
Provide me the links to learn BAPI and BADI
Please send me the links to learn BAPI and BADI
Thanks in Advance,
VivenHai Viven
Go through the following Document & Links
Bapi to create customer master
BAPI_CUSTOMER_CREATEFROMDATA
BAPI_CUSTOMER_CREATEFROMDATA1
Or you can use FM SD_CUSTOMER_MAINTAIN_ALL
what is BAPI?
BAPI stands for Business API(Application Program Interface).
I have answered this question before..
A BAPI is remotely enabled function module ie it can be invoked from remote programs like standalone JAVA programs, web interface etc..
You can make your function module remotely enabled in attributes of Function module but
A BAPI are standard SAP function modules provided by SAP for remote access. Also they are part of Businees Objest Repository(BOR).
BAPI are RFC enabled function modules. the difference between RFc and BAPI are business objects. You create business objects and those are then registered in your BOR (Business Object Repository) which can be accessed outside the SAP system by using some other applications (Non-SAP) such as VB or JAVA. in this case u only specify the business object and its method from external system in BAPI there is no direct system call. while RFC are direct system call Some BAPIs provide basic functions and can be used for most SAP business object types. These BAPIs should be implemented the same for all business object types. Standardized BAPIs are easier to use and prevent users having to deal with a number of different BAPIs. Whenever possible, a standardized BAPI must be used in preference to an individual BAPI.
The following standardized BAPIs are provided:
Reading instances of SAP business objects
GetList ( ) With the BAPI GetList you can select a range of object key values, for example, company codes and material numbers.
The BAPI GetList() is a class method.
GetDetail() With the BAPI GetDetail() the details of an instance of a business object type are retrieved and returned to the calling program. The instance is identified via its key. The BAPI GetDetail() is an instance method. BAPIs that can create, change or delete instances of a business object type
The following BAPIs of the same object type have to be programmed so that they can be called several times within one transaction. For example, if, after sales order 1 has been created, a second sales order 2 is created in the same transaction, the second BAPI call must not affect the consistency of the sales order 2. After completing the transaction with a COMMIT WORK, both the orders are saved consistently in the database.
Create( ) and CreateFromData! ( )
The BAPIs Create() and CreateFromData() create an instance of an SAP business object type, for example, a purchase order. These BAPIs are class methods.
Change( )
The BAPI Change() changes an existing instance of an SAP business object type, for example, a purchase order. The BAPI Change () is an instance method.
Delete( ) and Undelete( ) The BAPI Delete() deletes an instance of an SAP business object type from the database or sets a deletion flag.
The BAPI Undelete() removes a deletion flag. These BAPIs are instance methods.
Cancel ( ) Unlike the BAPI Delete(), the BAPI Cancel() cancels an instance of a business object type. The instance to be cancelled remains in the database and an additional instance is created and this is the one that is actually canceled. The Cancel() BAPI is an instance method.
Add<subobject> ( ) and Remove<subobject> ( ) The BAPI Add<subobject> adds a subobject to an existing object inst! ance and the BAPI and Remove<subobject> removes a subobject from an object instance. These BAPIs are instance methods.
Check these Links out
http://searchsap.techtarget.com/ateQuestionNResponse/0,289625,sid21_cid558752_tax293481,00.html
http://www.sap-img.com/abap/interview-question-on-bapi-rfc-abap-objects-tables.htm
http://www.sap-img.com/fu033.htm
http://www.sap-img.com/abap/ale-bapi.htm
Please check out this thread..
Re: bapi
Also refer to the following links..
www.sappoint.com/abap/bapiintro.pdf
www.sap-img.com/bapi.htm
www.sap-img.com/abap/bapi-conventions.htm
www.planetsap.com/Bapi_main_page.htm
www.sapgenie.com/abap/bapi/index.htm
Checkout !!
http://searchsap.techtarget.com/originalContent/0,289142,sid21_gci948835,00.html
http://techrepublic.com.com/5100-6329-1051160.html#
http://www.sap-img.com/bapi.htm
http://www.sap-img.com/abap/bapi-conventions.htm
http://www.sappoint.com/abap/bapiintro.pdf
Java Connector(JCO) can call not only BAPI's but also the function modules which are remotely enabled..
BAPI's as i said earlier are remotely enabled function modules..
Hence, JCO can call also BAPI's(n not only BAPI's as u mentioned).
Badi's
BADI Link
http://help.sap.com/saphelp_erp2005/helpdata/en/73/7e7941601b1d09e10000000a155106/frameset.htm
http://support.sas.com/rnd/papers/sugi30/SAP.ppt
http://www.sts.tu-harburg.de/teaching/sap_r3/ABAP4/abapindx.htm
http://members.aol.com/_ht_a/skarkada/sap/
http://www.ct-software.com/reportpool_frame.htm
http://www.saphelp.com/SAP_Technical.htm
http://www.kabai.com/abaps/q.htm
http://www.guidancetech.com/people/holland/sap/abap/
http://www.planetsap.com/download_abap_programs.htm
http://help.sap.com/saphelp_nw04/helpdata/en/c8/1975cc43b111d1896f0000e8322d00/content.htm
http://www.allsaplinks.com/badi.html (BADI Implementations)
/people/thomas.weiss/blog/2006/04/03/how-to-define-a-new-badi-within-the-enhancement-framework--part-3-of-the-series [ How to imp. Badi & h to use filter]
/people/alwin.vandeput2/blog/2006/04/13/how-to-search-for-badis-trace-it ( HOw to find Badis )
/people/thomas.weiss/blog/2006/04/18/how-to-implement-a-badi-and-how-to-use-a-filter--part-4-of-the-series-on-the-new-enhancement-framework [ (PART _ 4) How to imp. Badi & h to use filter) ]
/people/thomas.weiss/blog/2006/05/03/source-code-enhancements--part-5-of-the-series-on-the-new-enhancement-framework [ (part - 5)
Regards
Sreeni -
Sample ABAP code for userexits, and calling bapi's
Hi,
Can someone please send me sample ABAP code
1) to do extractor enhancement using user exit.
2) ABAP program to call BAPI to read live cache order series data in SNP and write to Idocs through some ports.
3) ABAP routine to generate file name (based on date/country)in the infopackage to upload flatfiles.
Thank you very much in advance and appreciate any help.
Regards
Prasadhai ,
check this code...
*& Tables
tables : tstc, "SAP Transaction Codes
tadir, "Directory of Repository Objects
modsapt, "SAP Enhancements - Short Texts
modact, "Modifications
trdir, "System table TRDIR
tfdir, "Function Module
enlfdir, "Additional Attributes for Function Modules
tstct. "Transaction Code Texts
*& Variables
data : jtab like tadir occurs 0 with header line.
data : field1(30).
data : v_devclass like tadir-devclass.
*& Selection Screen Parameters
selection-screen begin of block a01 with frame title text-001.
selection-screen skip.
parameters : p_tcode like tstc-tcode obligatory.
selection-screen skip.
selection-screen end of block a01.
*& Start of main program
start-of-selection.
Validate Transaction Code
select single * from tstc
where tcode eq p_tcode.
Find Repository Objects for transaction code
if sy-subrc eq 0.
select single * from tadir
where pgmid = 'R3TR'
and object = 'PROG'
and obj_name = tstc-pgmna.
move : tadir-devclass to v_devclass.
if sy-subrc ne 0.
select single * from trdir
where name = tstc-pgmna.
if trdir-subc eq 'F'.
select single * from tfdir
where pname = tstc-pgmna.
select single * from enlfdir
where funcname = tfdir-funcname.
select single * from tadir
where pgmid = 'R3TR'
and object = 'FUGR'
and obj_name = enlfdir-area.
move : tadir-devclass to v_devclass.
endif.
endif.
Find SAP Modifactions
select * from tadir
into table jtab
where pgmid = 'R3TR'
and object = 'SMOD'
and devclass = v_devclass.
select single * from tstct
where sprsl eq sy-langu
and tcode eq p_tcode.
format color col_positive intensified off.
write:/(19) 'Transaction Code - ',
20(20) p_tcode,
45(50) tstct-ttext.
skip.
if not jtab[] is initial.
write:/(95) sy-uline.
format color col_heading intensified on.
write:/1 sy-vline,
2 'Exit Name',
21 sy-vline ,
22 'Description',
95 sy-vline.
write:/(95) sy-uline.
loop at jtab.
select single * from modsapt
where sprsl = sy-langu and
name = jtab-obj_name.
format color col_normal intensified off.
write:/1 sy-vline,
2 jtab-obj_name hotspot on,
21 sy-vline ,
22 modsapt-modtext,
95 sy-vline.
endloop.
write:/(95) sy-uline.
describe table jtab.
skip.
format color col_total intensified on.
write:/ 'No of Exits:' , sy-tfill.
else.
format color col_negative intensified on.
write:/(95) 'No User Exit exists'.
endif.
else.
format color col_negative intensified on.
write:/(95) 'Transaction Code Does Not Exist'.
endif.
Take the user to SMOD for the Exit that was selected.
at line-selection.
get cursor field field1.
check field1(4) eq 'JTAB'.
set parameter id 'MON' field sy-lisel+1(10).
call transaction 'SMOD' and skip first screen. -
hi
i developed one report and one bapi (to create sale order with ref to contract) every thing working fine.
now my client asked he want to call bapi program from report because my report output is input to bapi for this i maintained check box for every row in report and in application tool bar i maintained one key , suppose he selected one record and press on that key it should move to bapi up to this working fine .for this my logic is
SET PF-STATUS 'ZCON'.
At USER-COMMAND.
CASE SY-UCOMM.
WHEN 'BAPI'. "this is key
CALL TRANSACTION 'ZBC'. "zbc = my bapi tcode
endcase.
now i have to pass selected record values to bapi input automatically so what i have to write .
please share information
thanks in advance
Moderator message : Duplicate post locked. Continue with the original thread.
Edited by: Vinod Kumar on Sep 7, 2011 10:32 AMHello Bhavin,
you have marked your question an self solved. Would be fine if you post your solution.
Regards
Gregor
Maybe you are looking for
-
Flash Player in Acrobat Pro?
Hi there, I have very carefully installed (and uninstalled... and installed...) the latest flash player on my computer. I am also running Adobe Design Premium CS4. I note the flash player doesn't appear in the list of players in my acrobat settings.
-
I have a 2012 MacBook Pro and lately I've noticed my computer is running very hot while using Safari, and only Safari. My battery says normal, but since my comp is running hot the battery is draining very quickly while Safari is open. I cleared all c
-
Hi All, I have created an enhancement in VL01N while creating Delivery. Now when I do manual Delivery the code is working fine . Enhancement gets triggred and the desired output is achived. But the problem comes when the I uase BAPI to create the Del
-
I just bought PSE 12 and am trying to retrieve photos I stored with Adobe back when I got PSE9. I also had them backed up on an external drive but it is now fried. I was told that I could reconnect those little thumbprints with the question marks t
-
ModuleManager & ModuleEvent explanation ?
Anybody know why in the ModuleManager, only the "progress" ModuleEvent is correctly targetted to the ModuleInfoProxy listeners. "complete", "setup", "ready" are NOT dispatched to target listener. I didn't see any differences between "progress" event