Problem in Implement multiple BADI
Hi,
i want to use one Definition in BADI for multiple implementation, but when i have been use in my program, it's give me a runtime error like below.
Runtime errors RAISE_EXCEPTION
Occurred on 12.07.2007 at 11:55:50
Exception condition "CAST_ERROR" raised.
Anyone help me for this.
sukhdev singh khobra
Hi,
Refer OSS note 1011198.
As a release of CRM 5.0, with the enhancement spot,the calls to the BADI
are to be done using GET BADI and CALL BADI syntax, and not with
CL_EXITHANDLER as before.
<b>Reward points</b>
Regards
Similar Messages
-
Problem in Implementing Filter BADI
Hi Experts ,
I have a problem in Implementing Standard BADI OIJ_NOMIT_VALIDATION , this one is a Filter BADI , with Filter type OIJ_NOMITEM_CHCK . i created a implementation ZOIJ_NOMIT_VALIDATION with filter ZOIJ_NOMIT and write code in method VALIDATE . But this is not triggered. Any additional configuration needed for this ?
Point will be awarded .
Thanks and regards
Renjith MPHi Ranjit,
After implementing the Filter BADI.You can define the Filter type <b>attributes</b> section.
Regards -
Hi All,
Facing a problem in BADI can u please help me out...
I am implementing sourcing dashboard.
I am facing problem while implementing the badi BBP_ECS_PO_OUT_BADI in SRM. and BBP_PO_INBOUND_BADI in R3.
i have written following code in BBP_ECS_PO_OUT_BADI in SRM
method IF_EX_BBP_ECS_PO_OUT_BADI~BBP_B46B_PO_OUTBOUND.
data : ls_item type BBP_PDS_PO_ITEM_D.
data : w_customer_fields type BBPS_IF_CUSTOMER_FIELDS_PI.
move 'POITEM' to w_customer_fields-refobject.
move 'CATALOGID' to w_customer_fields-fieldname.
move ls_item-catalogid to w_customer_fields-container.
append w_customer_fields to ct_bapi_customer_fields.
endmethod.
i have created field zsrmcatalogid field in R3 in EKPO table.and i am now implementing the Badi in R3 for BBP_PO_INBOUND_BADI .....in extended classic scenario.
i have written following code in R3 BADI
method IF_EX_BBP_PO_INBOUND_BADI~BBP_MAP_BEFORE_BAPI.
data : wa_customer_fields type bbps_if_customer_fields,
wa_bapi_te_mepoitem type bapi_te_mepoitem,
wa_bapi_te_mepoitemx type bapi_te_mepoitemx,
wa_extensionin type bapiparex.
data : txt_960(960) type c.
read table bbp_customer_fields into wa_customer_fields with key
refobject = 'POITEM' fieldname = 'CATALOGID'.
if sy-subrc eq 0.
move wa_customer_fields-container TO
wa_bapi_te_mepoitem-zsrmcatalogid.
wa_bapi_te_mepoitemx-zsrmcatalogid = 'X'.
endif.
clear txt_960.
clear wa_extensionin.
write wa_bapi_te_mepoitem to txt_960 left-justified.
wa_extensionin-structure = 'BAPI_TE_MEPOITEM'.
wa_extensionin-valuepart1 = txt_960(240).
wa_extensionin-valuepart2 = txt_960+240(240).
wa_extensionin-valuepart3 = txt_960+480(240).
wa_extensionin-valuepart4 = txt_960+720(240).
append wa_extensionin to bapi_extensionin.
clear txt_960.
clear wa_extensionin.
write wa_bapi_te_mepoitemx to txt_960 left-justified.
wa_extensionin-structure = 'BAPI_TE_MEPOITEMX'.
wa_extensionin-valuepart1 = txt_960(240).
wa_extensionin-valuepart2 = txt_960+240(240).
wa_extensionin-valuepart3 = txt_960+480(240).
wa_extensionin-valuepart4 = txt_960+720(240).
append wa_extensionin to bapi_extensionin.
endmethod.
But its not working...
The PO details are not passed from SRM to R3.......
Can anybody help me regarding how to debug the BADI in R3.
Thanks in Advance...Hi Ravi,
I never tried those BADIs to pass CUF fields.
But here an attempt to understand it.
First, have you maintained the mandatory R/3 CUF mapping table BBP_CUFMAP ?
Your SRM BADI is not correct, because you don't populate enough data.
There is a particular logic for ct_bapi_customer_fields (look at R/3 mapping in LBBP_BAPI_POF04, called before the R/3 BADI).
Following fields must be populated:
- REFOBJECT: ok with POITEM
- FIELDNAME: dummy name (CATALOGID) or real R/3 field (zsrmcatalogid)? --> used in mapping table BBP_CUFMAP to get the R/3 field
- REFFIELD1: missing: put PO_ITEM ?
- REFVAL1 : missing: put the PO item number (numc 5)
- CONTAINER: ok with final value we want to pass
I think that if SRM BADI and the R/3 mapping table are populated correctly, the fields are transfered to R/3 PO item without additionnal coding on R/3 BADI side.
The R/3 BADI goal is not to create BAPI_EXTENSIONIN. This is done by the Form MAPPING_CUSTOMER_FIELDS of include LBBP_BAPI_POF04.
Later on, the custom fields of BAPI_EXTENSIONIN are transfered automatically to EKPO fields via a move-corresponding.
In the way you coded R/3 BADI, you by-pass the Form MAPPING_CUSTOMER_FIELDS, to populate the BAPI_EXTENSIONIN by yourself.
This could work like this, but you missed one info: the PO item number (missing in SRM BADI) !!!
For debugging, what additional details do yo need ?
Rgds
Christophe -
Problem on Implementing badi ME_GUI_PO_CUST
Hi Expert,
I have implement BADI ME_GUI_PO_CUST, to add the new tab.
I have managed to View the tab in Both ME21N, and ME22N with implement SUBSCRIBE and MAP_DYNPRO_FIELDS.
method IF_EX_ME_GUI_PO_CUST~SUBSCRIBE
DATA: ls_subscriber LIKE LINE OF re_subscribers.
CHECK im_application = 'PO'.
CHECK im_element = 'ITEM'.
CLEAR re_subscribers[].
ls_subscriber-name = subscreen1.
ls_subscriber-dynpro = '0002'.
ls_subscriber-program = 'ZRPP_ME_GUI_PO_CUST_SCREEN'.
ls_subscriber-struct_name = 'CI_EKPODB'.
ls_subscriber-label = text-001.
ls_subscriber-position = 7.
ls_subscriber-height = 7.
APPEND ls_subscriber TO re_subscribers.
METHOD : IF_EX_ME_GUI_PO_CUST~MAP_DYNPRO_FIELDS
FIELD-SYMBOLS: <mapping> LIKE LINE OF ch_mapping.
LOOP AT ch_mapping ASSIGNING <mapping>.
CASE <mapping>-fieldname.
WHEN 'ZCNUM'. <mapping>-metafield = mmmfd_cust_01.
ENDCASE.
ENDLOOP.
Method IF_EX_ME_GUI_PO_CUST~MAP_DYNPRO_FIELDS
DATA: lw_fieldselection LIKE LINE OF ch_fieldselection.
LOOP AT ch_fieldselection INTO lw_fieldselection.
lw_fieldselection-fieldstatus = '+'.
MODIFY ch_fieldselection FROM lw_fieldselection.
ENDLOOP.
I need to store the value, and some of thread said it required methods:
TRANSPORT_FROM_MODEL
TRANSPORT_TO_DYNP
TRANSPORT_FROM_DYNP
TRANSPORT_TO_MODEL
I have click on the subcreen, or enter at the field, but it will not able to trigger the Above Methods.
How do I do for the to trigger above Methods? Or Should I added some additional code at screen program? I want SAVE the data actually into EKPO.
Thanks in advance.Hi Sim,
Recently we have the same reqirement.
You can have a look at the below code..
First method: SUBSCRIBE
DATA: ls_subscriber LIKE LINE OF re_subscribers.* we want to add a customer subscreen on the Header tab
CHECK im_application = 'PO'.
CHECK im_element = 'HEADER'.* each line in re_subscribers generates a subscreen. We add one subscreen in this example
CLEAR re_subscribers[].
* the name is a unique identifier for the subscreen and defined in this class definition
ls_subscriber-name = subscreen1.
* the dynpro number to use
ls_subscriber-dynpro = '0001'.
* the program where the dynpro can be found
ls_subscriber-program = 'SAPLZKMMM_KAU86037'.
* each subscreen needs his own DDIC-Structure
ls_subscriber-struct_name = 'CI_EKKODB'.
* a label can be defined
ls_subscriber-label = text-001.
* the position within the tabstrib can be defined
ls_subscriber-position = 13.
* the height of the screen can be defined here. Currently we suport two screen sizes:
* value <= 7 a sevel line subscreen
* value > 7 a 16 line subscreen
ls_subscriber-height = 7. APPEND ls_subscriber TO re_subscribers.Here, parameter u2018im_elementu2019 is defined as u2018HEADERu2019 as we are adding new tab in header section of PO.
Define a function group and take the main program and define it in ls_subscriber-program.
Also define a sub screen with the required fields and assign it to the parameter ls_subscriber-dynpro.
Then method MAP_DYNPRO_FIELDS
FIELD-SYMBOLS: <mapping> LIKE LINE OF ch_mapping.
LOOP AT ch_mapping ASSIGNING <mapping>. CASE <mapping>-fieldname. WHEN 'ZZPAYMENT_AGRE'. <mapping>-metafield = mmmfd_cust_03.
WHEN 'ZZPROJECT'. <mapping>-metafield = mmmfd_cust_04.
ENDCASE. ENDLOOP. TRANSPORT_FROM_MODEL:
DATA: l_header TYPE REF TO if_purchase_order_mm,
ls_mepoheader TYPE mepoheader,
ls_customer TYPE CI_EKKODB.*--------------------------------------------------------------------*
* system asks to transport data from the business logic into the view
*--------------------------------------------------------------------* CASE im_name. WHEN subscreen1.* is it an Header? im_model can be header or item.
mmpur_dynamic_cast l_header im_model.
CHECK NOT l_header IS INITIAL.* transport standard fields
ls_mepoheader = l_header->get_data( ).* store info for later use
MOVE-CORRESPONDING ls_mepoheader TO dynp_data_pbo.
WHEN OTHERS.
ENDCASE. TRANSPORT_TO_DYNP:
Define a FM 'ZK_KAU86037_PUSH' to push the values.CASE im_name. WHEN subscreen1. CALL FUNCTION 'ZK_KAU86037_PUSH'
EXPORTING
im_dynp_data = dynp_data_pbo. WHEN OTHERS.
ENDCASE. TRANSPORT_FROM_DYNP:
Define another FM 'ZK_KAU86037_POP'.CASE im_name. WHEN subscreen1. CALL FUNCTION 'ZK_KAU86037_POP'
IMPORTING
ex_dynp_data = dynp_data_pai. IF dynp_data_pai NE dynp_data_pbo.
* something has changed therefore we have to notify the framework
* to transport data to the model
re_changed = mmpur_yes.
ENDIF. WHEN OTHERS.
ENDCASE. TRANSPORT_TO_MODEL:
DATA: l_header TYPE REF TO if_purchase_order_mm,
ls_mepoheader TYPE mepoheader,
ls_customer TYPE CI_EKKODB,
l_po_header_handle TYPE REF TO cl_po_header_handle_mm.*--------------------------------------------------------------------*
* data have to be transported to business logic
*--------------------------------------------------------------------* CASE im_name. WHEN subscreen1.* is it an item? im_model can be header or item.
mmpur_dynamic_cast l_header im_model.
CHECK NOT l_header IS INITIAL. ls_mepoheader = l_header->get_data( ).* standard fields changed?
IF dynp_data_pbo-zzpayment_agre NE dynp_data_pai-zzpayment_agre
OR dynp_data_pbo-zzproject NE dynp_data_pai-zzproject.* update standard fields
ls_mepoheader-zzpayment_agre = dynp_data_pai-zzpayment_agre.
ls_mepoheader-zzproject = dynp_data_pai-zzproject.
CALL METHOD l_header->set_data
EXPORTING
im_data = ls_mepoheader.
ENDIF.
WHEN OTHERS. ENDCASE.
Then we have to implement one more BADI to display the tab and update the values.
Implement the BADI ME_PROCESS_PO_CUST. This cannot be used multiple times.
In this, we have methods (PROCESS_HEADER,PROCESS_ITEM).if we need to any validations for the fields we can write the logic here in this methods. In my case I need to check for the document type which I implemented in the method (PROCESS_HEADER).
Hope it helps you.
Thanks
Arbind -
Problem after Implementing BADI
Hi all,
I implemented BADI MB_MIGO_BADI it was working fine, but it was deleted
and again trying to implement second time it is showing the message
Implementation ZTEST_MIGO migrated (see long
for instructions) and choose enhancement spot and i implemented the BADI but
this time it is not triggering.
what might be the problem any help?
Thanks
Satish.Dear Satish,
Once u implement a BADI in ECC it will automatically generates the Enchament Spot. Here u deleted ur BADI implementation. Ur BADI got deleted and the enhancement for tht not get deleted. Thts y its showing error when u r creating the second time. So implement ur badi inside the Enhancement Spot using SE19.
With Regards,
Sumodh.P -
Problems with TRANSPORT_FROM_MODEL in BADI ME_GUI_PO_CUST
Hello,
I tried implementing the BADI ME_GUI_PO_CUST along with all it's methods and subsequently I also got the custom screen visible in PO header. But problem is whenever I click on this subscreen, the code for the method TRANSPORT_FROM_MODEL doesn't trigger. Instead, it triggers TRANSPORT_TO_DYNP and understandably the methods does nothing because it couldn't fetch any data. Kindly help understanding why TRANSPORT_FROM_MODEL doesn't trigger when I click on the custom tab at PO header and how can I correct the same?
Thanks,
Manuel ChiarelliHi Abhishek
but how did You solve this problem. I have the same ...
Kindly,
Wolf-Peter -
I am facing a problem in passing multiple values as out parameters from fo
Hi All,
i am facing a problem in passing multiple values as out parameters from for loop.
EX:
i have a select statment inside a loop like.....
PACKAGE SPEC:
create or replace PACKAGE EMP_PKG AS
TYPE TAB_NUM IS TABLE OF SCOTT.EMP.EMPNO%TYPE;
TYPE TAB_NAME IS TABLE OF SCOTT.EMP.ENAME%TYPE;
TYPE TAB_JOB IS TABLE OF SCOTT.EMP.JOB%TYPE;
temp_table TAB_NUM;
procedure test(temp_TAB_e_no OUT TAB_NUM,
temp_TAB_e_name OUT TAB_NAME,
temp_TAB_e_job OUT TAB_JOB);
END EMP_PKG;
PACKAGE BODY:
create or replace PACKAGE BODY EMP_PKG AS
v_e_no NUMBER;
procedure test(temp_TAB_e_no OUT TAB_NUM,
temp_TAB_e_name OUT TAB_NAME,
temp_TAB_e_job OUT TAB_JOB) IS
BEGIN
select EMPNO bulk collect into temp_table from emp;
for i in 1..temp_table.count loop
v_e_no := temp_table(i);
select empno,
ename,
job
into temp_TAB_e_no(i),
temp_TAB_e_name(i),
temp_TAB_e_job(i)
from emp
where empno = v_e_no;
end loop;
end test;
END EMP_PKG;
PROBLEM FACING IS:
I am expecting all rows returning from bellow select statment ...
select empno,
ename,
job
into temp_TAB_e_no(i),
temp_TAB_e_name(i),
temp_TAB_e_job(i)
from emp
where empno = v_e_no;
But,while running the SP , i am getting error like
ORA-06531: Reference to uninitialized collection
ORA-06512: at "SCOTT.EMP_PKG", line 16
why i am not getting all values as out parameters.please provide a solution for me.
Thanks in advance my friend.user9041629 wrote:
Hi All,
i am facing a problem in passing multiple values as out parameters from for loop.
EX:
i have a select statment inside a loop like.....
PACKAGE SPEC:
create or replace PACKAGE EMP_PKG AS
TYPE TAB_NUM IS TABLE OF SCOTT.EMP.EMPNO%TYPE;
TYPE TAB_NAME IS TABLE OF SCOTT.EMP.ENAME%TYPE;
TYPE TAB_JOB IS TABLE OF SCOTT.EMP.JOB%TYPE;
temp_table TAB_NUM;
procedure test(temp_TAB_e_no OUT TAB_NUM,
temp_TAB_e_name OUT TAB_NAME,
temp_TAB_e_job OUT TAB_JOB);
END EMP_PKG;
PACKAGE BODY:
create or replace PACKAGE BODY EMP_PKG AS
v_e_no NUMBER;
procedure test(temp_TAB_e_no OUT TAB_NUM,
temp_TAB_e_name OUT TAB_NAME,
temp_TAB_e_job OUT TAB_JOB) IS
BEGIN
select EMPNO bulk collect into temp_table from emp;
for i in 1..temp_table.count loop
v_e_no := temp_table(i);
select empno,
ename,
job
into temp_TAB_e_no(i),
temp_TAB_e_name(i),
temp_TAB_e_job(i)
from emp
where empno = v_e_no;
end loop;
end test;
END EMP_PKG;
PROBLEM FACING IS:
I am expecting all rows returning from bellow select statment ...
select empno,
ename,
job
into temp_TAB_e_no(i),
temp_TAB_e_name(i),
temp_TAB_e_job(i)
from emp
where empno = v_e_no;
But,while running the SP , i am getting error like
ORA-06531: Reference to uninitialized collection
ORA-06512: at "SCOTT.EMP_PKG", line 16
why i am not getting all values as out parameters.please provide a solution for me.
Thanks in advance my friend.Probably not a bad thing that this isn't working for you.
This is a horrible way to return the contents of a table.
Are you doing this for educational purpose, or ... what is your goal here? If you just want to return a result set to a client you'd want to look in to using a REF CURSOR and not a bunch of arrays combined with horribly procedural (slow) code. -
Implementation for BADI - /SAPAPO/ADVX
Hi,
I have created and activated an implementation for the BADI /SAPAPO/ADVX for the method USER_EXIT_MACRO. But this implementation is not triggering when i execute a macro in Transaction /SAPAPO/SDP94. Could you please let me know how to achieve this? (I am implementing this BADI to display the Units in SUOM instead of Base UOM).
Do we have any other BADI for changing the stock from UOM to SUOM?
Thanks,
RajinikanthHello Experts,
I have created one Z class in which i am using the methods of BADI /sapapo/advx , i have hard coded my macro id ,layout id and view id so that it will execute my code on execution of that particular macro.now my problem is how to read the data for particular keyfigure from the internal tables of this interface.i am not getting how to read te data and process it.
please help me on this.
Regards,
Saurabh Kulkarni -
Difference between Enhancement Implementation and BadI Implementation
What is the difference between Enhancement Implementation and BadI Implementation?
Hi Rajendra Prasad,
Enhancement spot : It is the point where you can add your code. It can have multiple implementations. All the implementations can active at a time but the sequence of executions of the implementations can be anything.
(or)
Enhancement points are regions where can insert our code to suit customer needs...Spots are subsets of points and created inside these points..for an enhancement point multiple active spots can exist.
For enhacement-sections : the main idea is to provide a spot to customise the existing process..eg:SAP has done a select criteria..but you need to filter it more by adding a where condition..in that case SAP suggests using Enhancement sections..At any time the first active enhancement section works...even if multiple sections are created(though ideally multiple sections are not allowed to be created)..if you do the procedure below you can see that enhancement-section when a spot is created for it...the code in the parent section is copied and given in the editable mode
Creating spots implementations for points/sections are given below................................................................
to Create a spot in the standard code...click on the spiral icon..screen changes to a different color...place cursor on ENHANCEMENT-POINT/ENHANCEMENT-SECTION keyword of the spot you require to create implementation for...righ click -> "enhancement implementation -> "create" -> a table control comes -> at the bottom "CREATE" button to be clicked" ...give a name and text in customer name space and save -> select the same name just given in the table control ..press 'Tick' .....you will get a space where code can be written..write the code.....save and activate
Also check the following blogs on enhancement framework
/people/thomas.weiss/blog/2006/01/24/what-the-new-enhancement-framework-is-for-150-its-basic-structure-and-elements-for-beginners
The new Enhancement Framework Part 2 - What Else You Need to Know Before Building an Enhancement
How To Define a New BAdI Within the Enhancement Framework - Part 3 of the Series
How to implement a BAdI And How to Use a Filter - Part 4 of the Series on the New Enhancement Framework
Source Code Enhancements - Part 5 of the Series on the New Enhancement Framework
Please go through this link also.
implicit enhancement and explicit enhancement
Reward points if it helps you
Cheers,
Swamy Kunche -
Problem while Binding multiple Parameters to View Object[Solved]
Hello,
I am facing problem while binding multiple parameters with different data types in View Object query. For example suppose I have following query in my view object.
SELECT Header.ADDED_BY
Header.BATCH_ID,
FROM BATCH_HEADER Header
WHERE :1='deptAdmin' and Header.BATCH_ID
in
select batch_id from batch_header_dept_mapping where dept_id in(SELECT * FROM TABLE(CAST(:0 AS TABLE_OF_VARCHAR)))
I am able to pass the Bind variables of Array type for : 0 , using Steve's ArrayOfStringDomain example. (ArrayOfStringDomain) .
But after passing value to second bind parameter ie.. :1 .
I am getting the error as follows.
## Detail 0 ##
java.sql.SQLSyntaxErrorException: ORA-00932: inconsistent datatypes: expected - got CHAR.
I tried to set
setWhereClauseParam(1,11); // 11 is Number
setWhereClauseParam(0,arr); // arr is arr = new Array(descriptor,conn,deptid); for in parameter.
But of no use , Please let me know if any thing missing form me or have any another solutions. Also please provide me any example if have.
Thank you,
Sandeep
Edited by: user11187811 on Oct 23, 2009 7:27 AM
Edited by: user11187811 on Oct 26, 2009 12:52 AM
Edited by: user11187811 on Oct 26, 2009 6:51 AMhi.
but when using non-Oracle named parameter binding styles as you've done (ie. , :1), regardless of what number you give each bind variable, they are sequenced 0, 1, 2 etc. As such your bind variable :1 is the 0th parameter, and your bind variable is the 1st parameter.Your statment is correct.
:1 i used was actually on 0th position and :0 was on 1 position. Like you said in sequence 0,1,2 etc. Now i get the answer and i corrected My mistake by assigning right values to right binding variable. and problem just solve.
Thanks Chris. -
Problem in Loading Multiple image in Single Sprite/MovieClip
Hi All,
I am having a killing problem in loading multiple images in single movie clip/sprite using a separate class.
Here is the ImageLoader.as class
package com.project.utils{
import com.project.*;
import com.project.utils.*;
import flash.events.EventDispatcher;
import flash.display.MovieClip;
import flash.events.Event;
import flash.events.ProgressEvent;
import flash.display.Loader;
import flash.events.IOErrorEvent;
import flash.net.URLLoader;
import flash.events.MouseEvent;
import flash.net.URLRequest;
import flash.display.Bitmap;
public class ImageLoader extends EventDispatcher {
public var imgloader:Loader;
public var imgMc:MovieClip;
public var imgObject:Object;
public var loaded:Number;
public function ImageLoader():void {
imgMc = new MovieClip();
imgObject = new Object();
imgloader = new Loader();
public function loadImage(imgHolder:MovieClip, imgObj:Object):void {
imgMc = new MovieClip();
imgObject = new Object();
imgloader = new Loader();
imgMc = imgHolder;
imgObject = imgObj;
imgloader.contentLoaderInfo.addEventListener(Event.COMPLETE,onImgLoad);
imgloader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS,onImgLoadProgress);
imgloader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR,onImageLoadFailed);
imgloader.load(new URLRequest(imgObj.FilePath));
private function onImgLoad(Evt:Event):void {
var image:Bitmap = Bitmap(Evt.target.content);
try {
imgMc.removeChildAt(0);
} catch (error:Error) {
imgMc.addChild(image);
try {
if (imgObject.URL != undefined) {
imgMc.buttonMode = true;
imgMc.removeEventListener(MouseEvent.CLICK, onImageClicked);
imgMc.addEventListener(MouseEvent.CLICK, onImageClicked);
} catch (err:Error) {
dispatchEvent(new CustomEvent("CustomEvent.ON_IMGE_LOAD"));
private function onImageClicked(evt:MouseEvent):void {
trace("Image Attrs:"+imgObject.URL +" Target "+imgObject.Target);
private function onImgLoadProgress(Evt:ProgressEvent):void {
if (Evt.bytesLoaded>0) {
loaded = Math.floor((Evt.bytesLoaded*100)/Evt.bytesTotal);
dispatchEvent(new CustomEvent("CustomEvent.ON_IMGE_LOAD_PROC",loaded));
private function onImageLoadFailed(Evt:IOErrorEvent):void {
trace("Image Loading Failed");
dispatchEvent(new CustomEvent("CustomEvent.ON_IMGE_LOAD_FAIL"));
Here I am loading some images using the above class in a for loop, like
for (var i=0; i < 3; i++) {
//imgLoader=new ImageLoader;
imgLoader.addEventListener("CustomEvent.ON_IMGE_LOAD",onImageLoad);
var target:MovieClip=videolist_mc["list" + mcCount + "_mc"];
target.list_mc.visible=false;
var imgObj:Object=new Object;
imgObj.FilePath=list[i].Thumbnail;
imgObj.Url=list[i].Url;
imgObj.Target=list[i].Target;
target.list_mc.urlObj=new Object ;
target.list_mc.urlObj=imgObj;
imgLoader.loadImage(target.list_mc.imgholder_mc,imgObj);
target.list_mc.lable_txt.htmlText="<b>" + list[i].Label + "</b>";
target.list_mc.imgholder_mc.buttonMode=true;
target.list_mc.imgholder_mc.addEventListener(MouseEvent.CLICK,onItemPressed);
mcCount++;
In this case, the ImageLoader.as works only on the last movie clip from the for loop. For example, if i am trying to load three image in three movie clips namely img_mc1,img_mc2 and img_mc3 using the for loop and ImageLoader.as, I am getting the image loaded in the third movie clip only img_mc.
See at the same time, If i uncomment onething in the for loop that is
//imgLoader=new ImageLoader;
its working like a charm. But I know creating class objects in a for loop is not a good idea and also its causes some other problems in my application.
So, help to get rid out of this problem.
Thanks
-Varunpackage com.project.utils{
import com.project.*;
import com.project.utils.*;
import flash.events.EventDispatcher;
import flash.display.MovieClip;
import flash.events.Event;
import flash.events.ProgressEvent;
import flash.display.Loader;
import flash.events.IOErrorEvent;
import flash.net.URLLoader;
import flash.events.MouseEvent;
import flash.net.URLRequest;
import flash.display.Bitmap;
public class ImageLoader extends EventDispatcher {
public var imgloader:Loader;
public var imgMc:MovieClip;
public var imgObject:Object;
public var loaded:Number;
public function ImageLoader():void {
// better add you movieclip to the stage if you want to view anything added to it.
imgMc = new MovieClip();
imgObject = new Object();
imgloader = new Loader();
public function loadImage(filepath:String):void {
imgloader.contentLoaderInfo.addEventListener(Event.COMPLETE,onImgLoad);
imgloader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS,onImgLoadPr ogress);
imgloader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR,onImageLoadF ailed);
imgloader.load(new URLRequest(filepath));
private function onImgLoad(Evt:Event):void {
var image:Bitmap = Bitmap(Evt.target.content);
try {
imgMc.removeChildAt(0);
} catch (error:Error) {
imgMc.addChild(image);
try {
if (imgObject.URL != undefined) {
imgMc.buttonMode = true;
imgMc.removeEventListener(MouseEvent.CLICK, onImageClicked);
imgMc.addEventListener(MouseEvent.CLICK, onImageClicked);
} catch (err:Error) {
dispatchEvent(new CustomEvent("CustomEvent.ON_IMGE_LOAD"));
private function onImageClicked(evt:MouseEvent):void {
trace("Image Attrs:"+imgObject.URL +" Target "+imgObject.Target);
private function onImgLoadProgress(Evt:ProgressEvent):void {
if (Evt.bytesLoaded>0) {
loaded = Math.floor((Evt.bytesLoaded*100)/Evt.bytesTotal);
dispatchEvent(new CustomEvent("CustomEvent.ON_IMGE_LOAD_PROC",loaded));
private function onImageLoadFailed(Evt:IOErrorEvent):void {
trace("Image Loading Failed");
dispatchEvent(new CustomEvent("CustomEvent.ON_IMGE_LOAD_FAIL"));
Here I am loading some images using the above class in a for loop, like
for (var i=0; i < 3; i++) {
var imgLoader:ImageLoader=new ImageLoader();
imgLoader.addEventListener("CustomEvent.ON_IMGE_LOAD",onImageLoad);
var target:MovieClip=videolist_mc["list" + mcCount + "_mc"];
target.list_mc.visible=false;
var imgObj:Object=new Object;
imgObj.FilePath=list[i].Thumbnail;
imgObj.Url=list[i].Url;
imgObj.Target=list[i].Target;
target.list_mc.urlObj=new Object ;
target.list_mc.urlObj=imgObj;
imgLoader.loadImage(pass the image file's path/name);
target.list_mc.lable_txt.htmlText="<b>" + list[i].Label + "</b>";
target.list_mc.imgholder_mc.buttonMode=true;
target.list_mc.imgholder_mc.addEventListener(MouseEvent.CLICK,onItemPressed);
mcCount++; -
How to implement multiple Value Helps within the same Application ??
Dear Experts,
I want to implement multiple value helps in the same view.For that I have declared exporting parameters of type 'wdy_key_value_table.' within the component controller for each of the value helps.While I do activate and test the application I get the following error :
The following error text was processed in the system HE6 : A row with the same key already exists.
The error occurred on the application server hsdnt24s11_HE6_00 and in the work process 4 .
The termination type was: RABAX_STATE
The ABAP call stack was:
Method: VALUESET_BSART of program /1BCWDY/9VSHJWRNR0EZPKFT3ZKC==CP
Method: IF_PO_VIEW1~VALUESET_BSART of program /1BCWDY/9VSHJWRNR0EZPKFT3ZKC==CP
Method: WDDOINIT of program /1BCWDY/9VSHJWRNR0EZPKFT3ZKC==CP
Method: IF_WDR_VIEW_DELEGATE~WD_DO_INIT of program /1BCWDY/9VSHJWRNR0EZPKFT3ZKC==CP
Method: DO_INIT of program CL_WDR_DELEGATING_VIEW========CP
Method: INIT_CONTROLLER of program CL_WDR_CONTROLLER=============CP
Method: INIT_CONTROLLER of program CL_WDR_VIEW===================CP
Method: INIT of program CL_WDR_CONTROLLER=============CP
Method: GET_VIEW of program CL_WDR_VIEW_MANAGER===========CP
Method: BIND_ROOT of program CL_WDR_VIEW_MANAGER===========CP
I dont know how to implement multiple value helps.Need your help on this.
Regards,
Mamai.Hi
Hint is : A row with the same key already exists it means , It is assigning the same value/Key to row and you are calling it at WDDOINIT so it giving error at the time of initialization .
Better way to do the coding at some event in view OR if not possible than just execute the first value help in wddoinit later clear all the value before gettig the other Value help. Code it at WdDoModify View to get its run time behaviour.
BR
Satish Kumar -
A problem while implementing a file to file senario
hi all :
There is some problem while implement a file to file senario. the file couldn't be sent or recieved.
and as I try to check Check the Sender File Adapter Status via
Runtime Workbench -> Component Monitoring -> Communication Channel Monitoring ,
It is found that Adapter Engine has error status with red light. Is it why the file couldn't be sent?
Could you please tell me how to make Adapter Engine available?
Thank you very much!!!Hi Sony
Error getting JPR configuration from SLD. Exception: No entity of class SAP_BusinessSystem for EC1.SystemHome.cnbjw3501 found
No access to get JPR configuration
Along with what experts suggested
What is the type of Business system is this. Standalone Java?
JPR can have problem if you have a business system thats not ABAP/Java type if this system is not having a SAP TS in landscape then create Java type.
Thanks
Gaurav -
Implementing Multiple operations in a web service in JCAPS 5.1.3
Hi,
I am using JCAPS 5.1.3 and have a requirement where in I have to implement multiple operations and expose them as a webservice.
The complexity of operations is medium, they have to log the input message into database.
In order to achieve this I have come up with two models:
Model-1:1.Create a Business process in eInsight and use event based decisons and implement various operations.
2.Create jcd operations in order to log messages into database.
3.Expose the business process as a webservice
Model-2:1.Create a jcd for each operation and make it Callable as an External SOAP web service.
2.Expose each jcd as a webservice
I would like to know which of these models gives better performance for the webservice .I see eInsight in earlier versions was low in performance.
Please let me know if you have any ideas on this.
Thanks in advance.
Regards,
Nag
Edited by: Nag4.5.3 on Jun 10, 2008 12:02 PMI'd try the idea #1 first. EInsight performances could be an issue only for very CPU-intensive operations, but as you need to interact with a database usually this I/O is going to be the real bottleneck. Instead, you should avoid eInsight not mainly because of hypothetical performance issues but when you foresee the need to write very complex logic, which is much easier to code and maintain in Java within JCDs than in BPEL. However remember that JCDs exposed as WS need the latest ESR Rollup to work properly, if I well recall they were single-threaded in plain JCAPS 5.1.3.
By the way, if your WSDL describes multiple operations you could probably implement them one by one by distinct eInsight BPs if you need to distribute them differently, you are not forced to use a single BP with event-based decisions, it is a matter of your taste and requirements. In my experience however in the past I had some annoying issues with WSDL exposing multiple operations and eInsight, hopefully those are gone with the latest Rollup but do some quick test yourself before betting all your money on it. -
Problem in posting multiple documents in FB70 through BDC...
Hi,
I am facing a problem while posting multiple documents from a flat file in FB70 thourgh BDC batch input by using session method. However, the session is getting terminated after posting the first document. Please clarify my problem.
Below is a sample of the data in my flat file -
Customer,Invoice Date,Posting Date,Amount,G/L Account,Amount in doc. Curr.
34,03.06.2009,03.06.2009,100,211000,100
34,03.06.2009,03.06.2009,200,211000,200
34,03.06.2009,03.06.2009,300,211000,300
And below is the sample code of my program.
REPORT ZANI2_BDC_FB70
NO STANDARD PAGE HEADING LINE-SIZE 255.
TYPES: BEGIN OF TY_STR_FB70,
ACCNT(20) TYPE C, "Customer
BLDAT(20) TYPE C, "Invoice Date
BUDAT(20) TYPE C, "Posting Date
WRBTR(20) TYPE C, "Basic Data - Amount
HKONT(20) TYPE C, "G/L Account
ITEM_WRBTR(20) TYPE C,
"Line Item Amount In Document Currency
END OF TY_STR_FB70,
BEGIN OF TY_STR_FILEDATA,
FIELDS TYPE STRING,
END OF TY_STR_FILEDATA.
* data definition
* Batchinputdata of single transaction
DATA: BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE,
* messages of call transaction
MESSTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE.
DATA: IT_STR_FILEDATA TYPE STANDARD TABLE OF TY_STR_FILEDATA,
WA_STR_FILEDATA TYPE TY_STR_FILEDATA,
IT_STR_FB70 TYPE STANDARD TABLE OF TY_STR_FB70,
WA_STR_FB70 TYPE TY_STR_FB70,
G_STR_FILENAME TYPE STRING,
G_FLG_ERROR TYPE I,
G_INDEX TYPE I,
G_STR_INDEX TYPE STRING,
G_STR_FIELDNAME TYPE STRING.
SELECTION-SCREEN BEGIN OF BLOCK INPUT.
PARAMETERS: P_FILE TYPE IBIPPARMS-PATH,
P_SES TYPE APQI-GROUPID.
SELECTION-SCREEN END OF BLOCK INPUT.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.
CALL FUNCTION 'F4_FILENAME'
EXPORTING
PROGRAM_NAME = SYST-CPROG
DYNPRO_NUMBER = SYST-DYNNR
FIELD_NAME = 'P_FILE'
IMPORTING
FILE_NAME = P_FILE.
Continued in the next thread.....Continued from the previous thread.
PERFORM OPEN_GROUP.
G_INDEX = 1.
LOOP AT IT_STR_FB70 INTO WA_STR_FB70.
PERFORM BDC_DYNPRO USING 'SAPMF05A' '1200'.
PERFORM BDC_FIELD USING 'RF05A-BUSCS'
'R'.
"Customer
PERFORM BDC_FIELD USING 'INVFO-ACCNT'
WA_STR_FB70-ACCNT.
"Invoice Date
PERFORM BDC_FIELD USING 'INVFO-BLDAT'
WA_STR_FB70-BLDAT.
"Posting Date
PERFORM BDC_FIELD USING 'INVFO-BUDAT'
WA_STR_FB70-BUDAT.
"Basic data - Amount
PERFORM BDC_FIELD USING 'INVFO-WRBTR'
WA_STR_FB70-WRBTR.
PERFORM BDC_FIELD USING 'INVFO-WAERS'
'EUR'.
G_STR_INDEX = G_INDEX.
IF G_INDEX < 10.
CONCATENATE '0' G_STR_INDEX INTO G_STR_INDEX.
ENDIF.
CONDENSE G_STR_INDEX NO-GAPS.
CLEAR G_STR_FIELDNAME.
CONCATENATE 'ACGL_ITEM-WRBTR(' G_STR_INDEX ')' INTO
G_STR_FIELDNAME.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
G_STR_FIELDNAME.
"'ACGL_ITEM-WRBTR(01)'.
"G/L Acct
CONCATENATE 'ACGL_ITEM-HKONT(' G_STR_INDEX ')' INTO
G_STR_FIELDNAME.
PERFORM BDC_FIELD USING G_STR_FIELDNAME
WA_STR_FB70-HKONT.
"Amount .
CONCATENATE 'ACGL_ITEM-WRBTR(' G_STR_INDEX ')' INTO
G_STR_FIELDNAME.
PERFORM BDC_FIELD USING G_STR_FIELDNAME
WA_STR_FB70-ITEM_WRBTR.
"PERFORM BDC_DYNPRO USING 'SAPMF05A' '1200'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=BU'.
CLEAR WA_STR_FB70.
ENDLOOP.
IF G_FLG_ERROR IS INITIAL.
PERFORM BDC_TRANSACTION USING 'FB70'.
ENDIF.
IF G_FLG_ERROR IS INITIAL.
PERFORM CLOSE_GROUP.
MESSAGE 'Session created successfully.' TYPE 'I'.
ENDIF.
ENDIF.
Continued in the next thread..
Maybe you are looking for
-
my video and music i save on my ext drive when i want to sync to my phone or ipad i drag folder into play list itunes and sync, before it did not save on my pc but now it save on my pc drive and took alots space, how can i do all my folder music and
-
Dear Community, I've got a problem with my MacBook Pro (late 2011) [2.4 Ghz/ 16GB RAM (upgraded)/ 256 GB SSD (upgraded)/ 500GB HDD (internal, upgraded (instead of DualDrive, iFixit-slot)). Since last week I am observing that the fan of my Macbook rev
-
How do I export addresses stored in a word document to my MacBook Address Book?
I have all my mailing addresses stored in a Word Doc and want to export them to my MacBook address book.
-
Windows 10 Remote Server Administration Tools (RSAT)
No offense, but the same question is 5 posts down and even has RSAT in the subject. I've lost count on the number of times this has been asked today
-
Notification of Work Items to an external email (Lotus Notes)
I have set up Automatic Forwarding in Transaction SO13 with Forward To setup, but I do not receive the workflow mail. We use Lotus Notes. Would this make a difference