0recordmode doubt..
HI Friends,
i have some doubt about the 0recordmode.i know how it will function and what is its significance of it in DSO.
If i don add the field 0recordmode and even i can able to load the deltas and full loads but what my doubt is, in that case its not going to generate any log and it wont overwrite or update based on the previous loads to DSO. Is it correct or not?
for ex:if loaded 100 records and in delta i am loading 10 records in that 5 are old records and 5 are new records.so in this case it will insert the 10 records as new records as my DSO doesn't contain the field 0recordmode. is this correct or worng?
Please expalain in detail.
Please post your answers more specific to the question..
Thanks,
Ashok
Hi Ashok,
0RECORDMODE is used for sending type of image...for eg before image or after image and many others....
When there is delta loads from ODS to other target it contains in changelog entries for both the images(if already that key was sent)....Here u can fid the type of image...
If it is sent for first time then it'll have N (new image) else it will send a before image(for key already sent) and new records with key after image(same key).
So if u dont have this field in ur target...it wont be able to recongnize wat image is being received and then depending on ur update type(additive or overwrite) key figures will be updated....
Thanks...
Similar Messages
-
Hello
I still cant figure out how to make it work a Delta DS which needs to control deleted records. Up to now I have:
1. defined 0recordmode in Transfer Structure but is not in my ODS (do I need to define it there too?)
2. Read in related threads that code for filling 0RecordMode = D should be in Start Routine between IP and ODS ??? is this OK for handling individual records marked as deleted in r3?
3. my delta Ds is type AIE (functional module F2)
do I need to do any other settings or modifications ?
appreciate the most of your support!hello Srini
My start routine is suppose to only move D to 0recordmode whenever incoming (DS) delete_field is = to "X".
The problem now is that is mixing dates (I use last_modif_date as delta) but in ODS date is the creation date ???
If I have in psa:
document-itemmater--creatdate-modifdate-ammount-- deleteind
400030-----10--6812---25072006-0811200710uni--
x
400030-----30--6812---25072006-0811200710uni--
it appears in ODS as
document-lineitemmater--modifdate-ammount---- deleteind
400030-----10--6812---2507200610uni--
400030-----30--6812---0811200710uni--
and in Icube as
document-lineitemmater--modifdate-ammount---- deleteind
400030-----10--6812---25072006-- (-10uni) -
400030-----30--6812---08112007-- 10uni -
(note that also lineitem 30 I did not change but when modifying in R3 for lineitem 10 it changes the last-modif-date for all material with same code (in this case 6812) so it appears as modified on delta extract....
My code in the start routine is as follows: (appreciate your support !)
PROGRAM UPDATE_ROUTINE.
$$ begin of global - insert your declaration only below this line -
Communication Structure ZD_2_CVC_CHAR
DATA: BEGIN OF g_it_data_package OCCURS 0.
INCLUDE STRUCTURE /bic/cszd_3_zpic_zpdvymas.
DATA: END OF g_it_data_package.
$$ end of global - insert your declaration only before this line -
The follow definition is new in the BW3.x
TYPES:
BEGIN OF DATA_PACKAGE_STRUCTURE.
INCLUDE STRUCTURE /BIC/CSZD_3_ZPIC_ZPDVYMAS.
TYPES:
RECNO LIKE sy-tabix,
END OF DATA_PACKAGE_STRUCTURE.
DATA:
DATA_PACKAGE TYPE STANDARD TABLE OF DATA_PACKAGE_STRUCTURE
WITH HEADER LINE
WITH NON-UNIQUE DEFAULT KEY INITIAL SIZE 0.
FORM startup
TABLES MONITOR STRUCTURE RSMONITOR "user defined monitoring
MONITOR_RECNO STRUCTURE RSMONITORS " monitoring with record n
DATA_PACKAGE STRUCTURE DATA_PACKAGE
USING RECORD_ALL LIKE SY-TABIX
SOURCE_SYSTEM LIKE RSUPDSIMULH-LOGSYS
CHANGING ABORT LIKE SY-SUBRC. "set ABORT <> 0 to cancel update
$$ begin of routine - insert your code only below this line -
fill the internal tables "MONITOR" and/or "MONITOR_RECNO",
to make monitor entries
Move the data to a new internal table
g_it_data_package[] = DATA_PACKAGE[].
CLEAR: DATA_PACKAGE.
REFRESH: DATA_PACKAGE.
CHECK g_it_data_package[] IS NOT INITIAL.
Update the delete Indicator
LOOP AT g_it_data_package.
IF g_it_data_package-/bic/zd_picwhs = 'X'.
g_it_data_package-recordmode = 'D'.
ENDIF.
MOVE-CORRESPONDING g_it_data_package TO DATA_PACKAGE.
APPEND DATA_PACKAGE.
CLEAR DATA_PACKAGE.
ENDLOOP.
if abort is not equal zero, the update process will be canceled
ABORT = 0.
$$ end of routine - insert your code only before this line -
ENDFORM. -
Good morning … bom dia …
I have some doubts about RECORDMODE … follow ...
Is it necessary development some ABAP code in transformation ? … or in Initial / Final routine ?
In DTP from DSO to Cube, is mandatory choice the option “change log” ? Or make some filter to select only valid records ?
Is There some configuration on query ?
Or the goal is only know how recordmode works, based on the table ROOSOURCE ?
Thanks in advantage …. Obrigado …
Kokeny, Marcio
P.S.: I already read this some documents:
http://scn.sap.com/people/swapna.gollakota/blog/2007/12/27/how-does-a-datasource-communicates-delta-with-bw
(How does a datasource communicates "DELTA" with BW?)
http://scn.sap.com/docs/DOC-54330
(Recordmode Importance in SAP BI along with Delta Handling)
http://scn.sap.com/docs/DOC-29927
(Record mode Concept in SAP BI)
- Record Mode Concept in Delta Management
- 0RECORDMODE and Delta type Concepts in Delta ManagementHi,
Is it necessary development some ABAP code in transformation ? … or in Initial / Final routine ?
Why you got above doubt?
Routines are used as per needs. Not based on 0recordmode.
In DTP from DSO to Cube, is mandatory choice the option “change log” ? Or make some filter to select only valid records ?
Not mandatory. if we run first time dtp with delta mode option then no need to select change log option.
if we perform dtp as init and later delta then we need to choose changlog option for delta.
Is There some configuration on query ?
No. 0RECORDMODE is upto DSO level only to track changes.
Or the goal is only know how recordmode works, based on the table ROOSOURCE ?
0record mode works based on data source delta type.
Data source delta type you cam see from table ROOSOURCE and field deltyp - ABB.ABD.AIE...etc.
Thanks -
Doubt on Start Routines.
Hi BW Experts,
I have a doubt on writing routines.I have enchaced the fields Network and WBS Element along with the data source 0FI_AP_4.And in BW side, I am getting data for Network and WBS Element.My requirement is to display the records which is having network or WBS Element.In reporting, I am not getting data if i exclude with Unassigned values for Network and WBS Element. So I decided to write routines in Transformations.
If /BIC/0NETWORK NE EMPTY OR /BIC/0WBS_ELEMNT NE EMPTY
Then
Load the data to 0FIAP_O03 (ODS)
I dont know how to write this logic in the form of ABAP Coding.
Please help on this Issue.
Thanks,
Jelina.
Edited by: Jelina on Apr 23, 2008 9:01 AMThanks for everybody..
As per karthik suggestion, now i am not getting the error.
I have added this one line Coding in the End Routine.
DELETE RESULT_PACKAGE where NETWORK EQ '' OR WBS_ELEMT EQ ''
While loading the data from datasource to ODS through DTP, none of the records are loaded to ODS.It is showing 0 records in New data table. I hope the coding is correct. And also 20 records is having the value for Network and WBS element.Herwith i have attached the full coding also. Please find the attached Code and provide me the solution Thanks in advance.
End Routine Code :
PROGRAM trans_routine.
CLASS routine DEFINITION
CLASS lcl_transform DEFINITION.
PUBLIC SECTION.
Attributs
DATA:
p_check_master_data_exist
TYPE RSODSOCHECKONLY READ-ONLY,
*- Instance for getting request runtime attributs;
Available information: Refer to methods of
interface 'if_rsbk_request_admintab_view'
p_r_request
TYPE REF TO if_rsbk_request_admintab_view READ-ONLY.
PRIVATE SECTION.
TYPE-POOLS: rsd, rstr.
*Rule specific types
TYPES:
BEGIN OF tys_TG_1,
*Field: RECORD Data record number.
RECORD TYPE RSARECORD,
*InfoObject: 0COMP_CODE Company code.
COMP_CODE TYPE /BI0/OICOMP_CODE,
*InfoObject: 0CREDITOR Account number of supplier/vendor.
CREDITOR TYPE /BI0/OICREDITOR,
*InfoObject: 0FISCYEAR Fiscal year.
FISCYEAR TYPE /BI0/OIFISCYEAR,
*InfoObject: 0FISCPER Fiscal year / period.
FISCPER TYPE /BI0/OIFISCPER,
*InfoObject: 0FISCVARNT Fiscal year variant.
FISCVARNT TYPE /BI0/OIFISCVARNT,
*InfoObject: 0FISCPER3 Posting period.
FISCPER3 TYPE /BI0/OIFISCPER3,
*InfoObject: 0NETWORK Network.
NETWORK TYPE /BI0/OINETWORK,
*InfoObject: 0SUBNETWORK Subnetwork number.
SUBNETWORK TYPE /BI0/OISUBNETWORK,
*InfoObject: 0WBS_ELEMT Work Breakdown Structure Element (WBS Elem
*ent).
WBS_ELEMT TYPE /BI0/OIWBS_ELEMT,
*InfoObject: 0AC_DOC_NO Accounting document number.
AC_DOC_NO TYPE /BI0/OIAC_DOC_NO,
*InfoObject: 0ITEM_NUM Number of line item within accounting docum
*ent.
ITEM_NUM TYPE /BI0/OIITEM_NUM,
*InfoObject: 0FI_DSBITEM Due Date Item Number.
FI_DSBITEM TYPE /BI0/OIFI_DSBITEM,
*InfoObject: 0DCINDIC Debit/credit indicator.
DCINDIC TYPE /BI0/OIDCINDIC,
*InfoObject: 0FI_DOCSTAT Item Status.
FI_DOCSTAT TYPE /BI0/OIFI_DOCSTAT,
*InfoObject: 0C_CTR_AREA Credit Control Area.
C_CTR_AREA TYPE /BI0/OIC_CTR_AREA,
*InfoObject: 0DUNN_AREA Dunning area.
DUNN_AREA TYPE /BI0/OIDUNN_AREA,
InfoObject: 0ACCT_TYPE Account type.
ACCT_TYPE TYPE /BI0/OIACCT_TYPE,
InfoObject: 0SP_GL_IND Special G/L indicator.
SP_GL_IND TYPE /BI0/OISP_GL_IND,
InfoObject: 0AC_DOC_TYP Document type.
AC_DOC_TYP TYPE /BI0/OIAC_DOC_TYP,
InfoObject: 0POST_KEY Posting key.
POST_KEY TYPE /BI0/OIPOST_KEY,
InfoObject: 0VALUE_LC Amount in local currency.
VALUE_LC TYPE /BI0/OIVALUE_LC,
InfoObject: 0DOC_DATE Document Date.
DOC_DATE TYPE /BI0/OIDOC_DATE,
InfoObject: 0PSTNG_DATE Posting date in the document.
PSTNG_DATE TYPE /BI0/OIPSTNG_DATE,
InfoObject: 0CREATEDON Date on which the record was created.
CREATEDON TYPE /BI0/OICREATEDON,
InfoObject: 0CLEAR_DATE Clearing date.
CLEAR_DATE TYPE /BI0/OICLEAR_DATE,
InfoObject: 0LAST_DUNN Date of last dunning notice.
LAST_DUNN TYPE /BI0/OILAST_DUNN,
InfoObject: 0NETDUEDATE Due date for net payment.
NETDUEDATE TYPE /BI0/OINETDUEDATE,
InfoObject: 0DSCT_DATE1 Due date for cash discount 1.
DSCT_DATE1 TYPE /BI0/OIDSCT_DATE1,
InfoObject: 0DSCT_DATE2 Due date for cash discount 2.
DSCT_DATE2 TYPE /BI0/OIDSCT_DATE2,
InfoObject: 0DSCT_DAYS1 Days for Cash Discount 1.
DSCT_DAYS1 TYPE /BI0/OIDSCT_DAYS1,
InfoObject: 0DSCT_DAYS2 Days for Second Cash Discount.
DSCT_DAYS2 TYPE /BI0/OIDSCT_DAYS2,
InfoObject: 0NETTERMS Deadline for Net Conditions.
NETTERMS TYPE /BI0/OINETTERMS,
InfoObject: 0DSCT_PCT1 Percentage for Cash Discount 1.
DSCT_PCT1 TYPE /BI0/OIDSCT_PCT1,
InfoObject: 0DSCT_PCT2 Percentage for second cash discount.
DSCT_PCT2 TYPE /BI0/OIDSCT_PCT2,
InfoObject: 0PYMT_METH Payment method.
PYMT_METH TYPE /BI0/OIPYMT_METH,
InfoObject: 0PMNTTRMS Terms of Payment Key.
PMNTTRMS TYPE /BI0/OIPMNTTRMS,
InfoObject: 0PMNT_BLOCK Payment block key.
PMNT_BLOCK TYPE /BI0/OIPMNT_BLOCK,
InfoObject: 0REASON_CDE Reason code for payments.
REASON_CDE TYPE /BI0/OIREASON_CDE,
InfoObject: 0BLINE_DATE Baseline Date For Due Date Calculation.
BLINE_DATE TYPE /BI0/OIBLINE_DATE,
InfoObject: 0DUNN_BLOCK Dunning block.
DUNN_BLOCK TYPE /BI0/OIDUNN_BLOCK,
InfoObject: 0DUNN_KEY Dunning key.
DUNN_KEY TYPE /BI0/OIDUNN_KEY,
InfoObject: 0DEBIT_LC Debit amount in local currency.
DEBIT_LC TYPE /BI0/OIDEBIT_LC,
InfoObject: 0LOC_CURRCY Local currency.
LOC_CURRCY TYPE /BI0/OILOC_CURRCY,
InfoObject: 0CREDIT_LC Credit amount in local currency.
CREDIT_LC TYPE /BI0/OICREDIT_LC,
InfoObject: 0DEB_CRE_LC Amount in Local Currency with +/- Signs.
DEB_CRE_LC TYPE /BI0/OIDEB_CRE_LC,
InfoObject: 0DSC_AMT_LC Cash discount amount in local currency.
DSC_AMT_LC TYPE /BI0/OIDSC_AMT_LC,
InfoObject: 0DEBIT_DC Debit amount in foreign currency.
DEBIT_DC TYPE /BI0/OIDEBIT_DC,
InfoObject: 0DOC_CURRCY Document currency.
DOC_CURRCY TYPE /BI0/OIDOC_CURRCY,
InfoObject: 0CREDIT_DC Credit amount in foreign currency.
CREDIT_DC TYPE /BI0/OICREDIT_DC,
InfoObject: 0DEB_CRE_DC Foreign currency amount with signs (+/-).
DEB_CRE_DC TYPE /BI0/OIDEB_CRE_DC,
InfoObject: 0DISC_BASE Amount eligible for cash discount in docum
*ent currency.
DISC_BASE TYPE /BI0/OIDISC_BASE,
InfoObject: 0AMOUNT Amount.
AMOUNT TYPE /BI0/OIAMOUNT,
InfoObject: 0CURRENCY Currency Key.
CURRENCY TYPE /BI0/OICURRENCY,
InfoObject: 0DSC_AMT_DC Cash discount amount in document currency
DSC_AMT_DC TYPE /BI0/OIDSC_AMT_DC,
InfoObject: 0DUNN_LEVEL Dunning level.
DUNN_LEVEL TYPE /BI0/OIDUNN_LEVEL,
InfoObject: 0CHRT_ACCTS Chart of accounts.
CHRT_ACCTS TYPE /BI0/OICHRT_ACCTS,
InfoObject: 0GL_ACCOUNT G/L Account.
GL_ACCOUNT TYPE /BI0/OIGL_ACCOUNT,
InfoObject: 0RC_ACCOUNT Reconciliation Account.
RC_ACCOUNT TYPE /BI0/OIRC_ACCOUNT,
InfoObject: 0FI_SUBSID Account Number of the Branch.
FI_SUBSID TYPE /BI0/OIFI_SUBSID,
InfoObject: 0CLR_DOC_NO Clearing Document Number.
CLR_DOC_NO TYPE /BI0/OICLR_DOC_NO,
InfoObject: 0REF_DOC_NO Reference document number.
REF_DOC_NO TYPE /BI0/OIREF_DOC_NO,
InfoObject: 0INV_DOC_NO Invoice Number.
INV_DOC_NO TYPE /BI0/OIINV_DOC_NO,
InfoObject: 0INV_ITEM Invoice Item.
INV_ITEM TYPE /BI0/OIINV_ITEM,
InfoObject: 0INV_YEAR Invoice Year.
INV_YEAR TYPE /BI0/OIINV_YEAR,
InfoObject: 0DOC_NUMBER Sales document.
DOC_NUMBER TYPE /BI0/OIDOC_NUMBER,
InfoObject: 0REF_KEY1 Reference Key 1.
REF_KEY1 TYPE /BI0/OIREF_KEY1,
InfoObject: 0REF_KEY2 Reference Key 2.
REF_KEY2 TYPE /BI0/OIREF_KEY2,
InfoObject: 0REF_KEY3 Reference Key 3.
REF_KEY3 TYPE /BI0/OIREF_KEY3,
InfoObject: 0FI_XARCH Indicator: Original Document Archived.
FI_XARCH TYPE /BI0/OIFI_XARCH,
InfoObject: 0RECORDMODE BW Delta Process: Update Mode.
RECORDMODE TYPE RODMUPDMOD,
InfoObject: 0POSTXT Item Text.
POSTXT TYPE /BI0/OIPOSTXT,
InfoObject: 0COUNTRY Country key.
COUNTRY TYPE /BI0/OICOUNTRY,
InfoObject: 0SP_GL_TT Special G/L Transaction Type.
SP_GL_TT TYPE /BI0/OISP_GL_TT,
InfoObject: 0ALLOC_NMBR Allocation Number.
ALLOC_NMBR TYPE /BI0/OIALLOC_NMBR,
END OF tys_TG_1.
TYPES:
tyt_TG_1 TYPE STANDARD TABLE OF tys_TG_1
WITH NON-UNIQUE DEFAULT KEY.
$$ begin of global - insert your declaration only below this line -
... "insert your code here
$$ end of global - insert your declaration only before this line -
METHODS
end_routine
IMPORTING
request type rsrequest
datapackid type rsdatapid
EXPORTING
monitor type rstr_ty_t_monitors
CHANGING
RESULT_PACKAGE type tyt_TG_1
RAISING
cx_rsrout_abort.
METHODS
inverse_end_routine
IMPORTING
i_th_fields_outbound TYPE rstran_t_field_inv
i_r_selset_outbound TYPE REF TO cl_rsmds_set
i_is_main_selection TYPE rs_bool
i_r_selset_outbound_complete TYPE REF TO cl_rsmds_set
i_r_universe_inbound TYPE REF TO cl_rsmds_universe
CHANGING
c_th_fields_inbound TYPE rstran_t_field_inv
c_r_selset_inbound TYPE REF TO cl_rsmds_set
c_exact TYPE rs_bool.
ENDCLASS. "routine DEFINITION
$$ begin of 2nd part global - insert your code only below this line *
... "insert your code here
$$ end of 2nd part global - insert your code only before this line *
CLASS routine IMPLEMENTATION
CLASS lcl_transform IMPLEMENTATION.
Method end_routine
Calculation of result package via end routine
Note: Update of target fields depends on rule assignment in
transformation editor. Only fields that have a rule assigned,
are updated to the data target.
<-> result package
METHOD end_routine.
*=== Segments ===
FIELD-SYMBOLS:
<RESULT_FIELDS> TYPE tys_TG_1.
DATA:
MONITOR_REC TYPE rstmonitor.
*$*$ begin of routine - insert your code only below this line *-*
... "insert your code here
*DELETE RESULTPACKAGE where NETWORK EQ '' OR WBS_ELEMT EQ ''*_
*-- fill table "MONITOR" with values of structure "MONITOR_REC"
*- to make monitor entries
... "to cancel the update process
raise exception type CX_RSROUT_ABORT.
$$ end of routine - insert your code only before this line -
ENDMETHOD. "end_routine
Method inverse_end_routine
This subroutine needs to be implemented only for direct access
(for better performance) and for the Report/Report Interface
(drill through).
The inverse routine should transform a projection and
a selection for the target to a projection and a selection
for the source, respectively.
If the implementation remains empty all fields are filled and
all values are selected.
METHOD inverse_end_routine.
$$ begin of inverse routine - insert your code only below this line-
... "insert your code here
$$ end of inverse routine - insert your code only before this line -
ENDMETHOD. "inverse_end_routine
ENDCLASS. "routine IMPLEMENTATION -
hi i have a doubt....
in fbl1n transaction, there are open items and cleared items.
in it the cleared items for certain document types such as invoice etc is not present in the open item table (bsik)
however the cleared items for document types such as general voucher its present in the open items table (bsik)
is this possible as all cleared item entries shld b present in the open item table with an indicator set for cleared or not...
plz exlain!Hi
There are 2 tables(open and Closed Items) in FI for Account Payables and Account Receivables and GL accounts
1.Account payables: BSIK is Open Items and BSAK is Closed items
2.Account Receivables; BSID and BSAD for OPEN and closed items
3/GL accounts : BSIS and BSAS for Open and Closed Items
<b>Reward points for useful Answers</b>
Regards
Anji -
Doubt in creation of a new object
Hi All,
I have one doubt in creation of a new object.If a new object is to be created and it is not a subtype
of any existing object, then what should we enter in the Program field for creating the object?
I hope I am clear with my question.
Thanks in Advance,
Saket.Hi Saket,
Following will be required for created a custom business object.
1. Object Type - ZTEST (Internal Techincal Key)
2. Object Name - ZTESTNAME (Technical Key Name)
3. Name - TEST (Name of BO, it is used while selecting the object type)
4. Description - (Short Description of BO)
5. Program - ZTESTPROGRAM (ABAP program in which the methods of the object type are implemented)
6. Application - A or B.. etc (Area to which your BO is related)
Please remember that you can learn these basic things by giving F1 help on those fields and in HELP.SAP.COM.
Regards,
Gautham Paspala -
Hi Everyone,
Can we read and validate the attachment of the mail.If so how to do it.
Thanks in advance,
SakthiHi Sakthi,
Please refere the below links:
http://help.sap.com/saphelp_nw2004s/helpdata/en/ad/bf93409c663228e10000000a1550b0/frameset.htm
http://help.sap.com/saphelp_nw2004s/helpdata/en/0d/52b240ac052817e10000000a1550b0/frameset.htm
Let me know if you have any doubts regarding this.
Thanks,
sekhar. -
PI' RFC Connection pool doubt.
Hi PI exports:
i have a doubt about pi' RFC Connection pool ,pi RFC receive channel can set the conn pool size ,but when start the rfc receiver channel ,is there always only one Connection pool ,or there is only one Connection pool instance?
thinks
Edited by: kevin liang on Oct 19, 2009 6:45 AMHi,
Connection poolins size means how many number of connection you want to make open to send data to ECC, We can define maximum number of connection in Receiver RFC Adapter,Go to additional parameters section and define Max Number of connection give the number there,thats it.Internally it works as Connection poolin mechanism.
Regards,
Raj -
Small Doubt Regarding SY-MANDT
Hi All,
SELECT changenr FROM cdhdr CLIENT SPECIFIED INTO CORRESPONDING FIELDS OF TABLE it_cdhdr
WHERE mandant = syst-mandt
AND objectclas = 'MATERIAL'
AND objectid = wa_matl-matnr
AND tcode = 'MM02'.
I have written the select stament as shown above.
In this i have a doubt like adding a field sy-mandt in the where condition will increase the Efficiency of program or not.
regards,
raghu.Hi..
No doubt the efficency would be affected but from business point of view there will many things that need to be checked as in:
If you are viewing data from CDHDR and CDPOS which is client specific then you are not viewing complete data.
These tables give us and document changes made to a particular object in SAP but if anything is cross client like company code(lets assume) then changes to it wont be visible in all the clients..
so there can be some key information you can miss out while working on some of the objects.
else in this case its good to make query cross client.
regards
vishal -
Doubts with control break statements on internal table loops (AT/ENDAT)
Hi, i've had a couple of doubts for a long while which I hope someone can clarify today:
1) I know how to use the AT statements, however, i'm not sure I get correctly what this part of help regarding this commands means:
<i>"The control level structure with internal tables is static. It corresponds exactly to the sequence of columns in the internal table (from left to right). In this context, the criteria according to which you sort the internal table are unimportant."</i>
I've always sorted the internal table before the control break and it works that way. For example:
SORT ITAB BY EBELN EBELP.
LOOP AT ITAB.
AT NEW EBELN.
* Code for the order header
ENDAT.
ENDLOOP.
If I <b>don't</b> sort the internal table, it doesn't work! (i get dupplicated processing). In the example, if i have more than one register with the same EBELN and they're not consecutive, the header gets processed twice. I really don't get that part of the help text.
2) I know this: <i>"At the start of a new control level (i.e. immediately after AT), the following occurs in the output area of the current LOOP statement:
All character type fields (on the right) are filled with "*" after the current control level key.
All other fields (on the right) are set to their initial values after the current control level key."</i>
My doubt is: WHY is that this way? Because sometimes (most times) I need those fields INSIDE the statement! So when that happened i've solved it in one of three ways:
LOOP AT ITAB INTO WA_ITAB.
WA_ITAB_AUX = WA_ITAB.
AT NEW FIELD.
WA_ITAB = WA_ITAB_AUX.
* ...Rest of the code for the first register
ENDAT.
ENDLOOP.
LOOP AT ITAB INTO WA_ITAB.
AT NEW FIELD.
READ TABLE ITAB INDEX SY-TABIX INTO WA_ITAB.
* ...Rest of the code for the first register
ENDAT.
ENDLOOP.
* (Without AT)
LOOP AT ITAB INTO WA_ITAB.
IF WA_ITAB-FIELD <> FIELD_AUX.
FIELD_AUX = WA_ITAB_FIELD.
* ...Rest of the code for the first register
ENDIF.
ENDLOOP.
Is there any problem with this way of coding? Can be done better?
Thank you very much in advance.Hi..,
1)
See if u sort the table on a field on which u r using AT ENDAT .. then all the records which are having the same value for that field will form a group or those reocrds will be at one place.. so when u sort the table for all the records AT ENDAT will get executed onli once..
If u dont sort this table on this field then all these records will be at different places and in between there may be records with different value for this field.. so this AT ENDAT will get executed for each record !!
2)
No u cannot use the Right hand fields of the field in the table .. Because these AT events work as Group based operations... So till that field on which AT ENDAT is working it breaks that record into two groups.. One is the left hand fields including that field.. and right hand fields as another group.. and makes the right hand group as stars ****. Thats y u can observe that even any one field in the left hand group changes the AT ENDAT will get executed !!!!
Hope u understood !!!
regards,
sai ramesh -
CREATE PACKAGE EMP_PKG AS
CURSOR EMP_CUR IS
SELECT EMPNO,DEPTNO,SAL,HIREDATE
FROM EMP
WHERE DEPTNO=30;
PROCEDURE P_EMP;
PROCEDURE P_GET_SAL(V_EMPNO NUMBER);
PROCEDURE P_GET_LOC(V_EMPNO NUMBER);
Now inside my Package Body
INSIDE THE MAINPROCEDURE P_EMP
I WILL BE CALLING THE BELOW TWO PROCEDURES
PROCEDURE P_EMP
BEGIN
FOR I IN EMP_CUR LOOP
P_GET_SAL(I.EMPNO);-- DO I NEED TO LOOP AGAIN IN P_GET_SAL PROC?
P_GET_LOC(I.DEPTNO);
END LOOP;
END;
NOW WHAT IAM DOING IS
in my P_GET_SAL Procedure is
PROCEDURE P_GET_SAL(V_EMPNO NUMBER)
V_SAL EMP.SAL%TYPE;
BEGIN
FOR I IN EMP_CUR LOOP
SELECT SAL INTO V_SAL FROM EMP
WHERE EMPNO=I.EMPNO --DOUBT HERE
END;
I WANT TO KNOW WHETHER I NEED TO LOOP AGAIN
HERE OR INSTEAD OF THAT
PROCEDURE P_GET_SAL(V_EMPNO NUMBER)
V_SAL EMP.SAL%TYPE;
BEGIN
SELECT SAL INTO V_SAL FROM EMP
WHERE EMPNO =V_EMPNO;
END;
SINCE iam calling V_EMPNO WITH CURSOR FROM MY
MAINPROCEDURE ..
WILL THE PROCEDURE USES THE CURSOR VALUES
AND LOOP ITSELF FOR EVERY EMPLOYEE TO
GET THE SALALRY ?
PLEASE LET ME KNOW SINCE MY PACKAGE IS MORE THAN 3000
LINES I cant proceed unless its confirmed i can
do so ..Hi all,
Thanks for Looking into my Problem
I Got answer by MySelf ..i dont need to loop again my sub procedures
if i try to do that iam getting the error
ERROR at line 1:
ORA-06511: PL/SQL: cursor already open
Thank you all once again .. -
Doubt on Rows and Coloums in BEx Query Designer.
Hello, Experts.
I have a Doubt in BEx Query Designer.
In the Rows I have a Fiscal year Period, if the user enters the Fiscal year period for e.g. : 001/2006 .
in the columns i have forecast for the Fiscal year period which user entered ( 001/2006 ), and we have another column pervious ( Prior )fiscal year period ( 001/2005 ).
My Questions is , as we are Restricting with 001/2006 will the query retrieve the values of 2005 or not?
Thanks in Advance .
Sharpyes i am Doing Offest.
I moved this Fiscal year Period to Free char, and i Restricted with Pervious Fical Year period and Fical year period . it worked. but
when i kept this in Rows and deleted Previous Fiscal Year period . it is displaying blanks. in prior years forecast.
is it because i am Ristricting it to only fical year period which user entered
Colums--> Forcast ( User Entered year ) Prior year
Rows
Fiscal year period
Fiscal year period( user enterd )
Thanks -
Doubt regarding facebook integration for windows phone 8.1 silverlight app?
Hi,
I am developing a windows phone 8.1 silverlight application . For my application I integrated the facebook login. For this facebook integration I used the login with facebook app method.
My doubt is after getting the app id from the dev center , I updated the appid at developers.facebook.com , wmmanifest.xml (In extensions protocol (msft-appid without dashes)) . Or do I need to change the product id in the place holder also , I tried to
change the productid also but I am getting error like some signature is wrong try with different signature. I am confused how to do it .
Any help,
Thanks...
Suresh.MHi Suresh,
According to your description, I assume you want to complete facebook configuration in windows phone silverlight app. Please refer to the following link to see how.
http://facebooksdk.net/docs/phone/config/.
You can find code sample from
https://github.com/facebook-csharp-sdk/facebook-winclient-sdk/tree/master/Samples.
Facebook API is third-party library and it is our of our support range. You can post questions on here.
https://github.com/facebook-csharp-sdk/facebook-winclient-sdk/issues.
Regards,
We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place. Click HERE to participate
the survey. -
Dear Gurus,
i have a doubt regarding use of infoset in BI.
An infoset consist of , on the left, a DSO containing line items loaded from R/3.
On the right is a master data attribute loaded data from a user defined datasource based on a transparent table in r/3.
This master data has a single Key. Its a numeric like serial number field.
The transaction data in the DSO also has this field as part of the transaction data field (non-key).
A Left Outer Join is made between the 2 using several fields joining together. However, the key field in the master data is not joined even though both sides has it. Both this field in each are not joined.
So, by theory of a left outer join, All data not found in the master data will still be selected via the infoset.
I wish to understand :
1. by a 'join' does it mean its not a union? I assume so. But based on the meaning of left outer join, it sounds to me like a union?
Correct me if i am wrong.
2. what is the effect of not joining the master data key field to the same field found in the data part of the transaction data?
best regards
Basshi,
point 1:
am i right to say
If all data on the left is picked, and some latest data in the master data is not found in the left, only all the left side data is displayed am i right? so, what is not in the right (master data attr) will not be selected by the infoset?
left outer join will be more clear with an example to you, suppose you are joining cube and master data to pick attribute value from master data. let us say the master data has below value.
master data attribute
100 ABC
102 XYZ
103 DEF
Now in cube you have data
cube field
100
101
105
106
the infoset wll be returning the value as shown below for different scenarios
left outer join: all values in cube.
field attribute
100 ABC
101 # (no value in master data)
105 # (no value in master data)
106 # (no value in master data)
Inner join: common records
field attribute
100 ABC
Right outer join
field attribute
100 ABC
102 XYZ
103 DEF
point 2:
am i right to say
its just slower performance and the rest being similar effect as joining the key field?
So, if i join the key field it will be faster and the result is the same as not joining the key field of the master data to the transaction data?
no the join determines the amount of data it will be returning as explained above, you should define the joining conditions based on your business logic, like in the above case if the two fields should have same value and are the comparing criteria then you should join those as it would help in retrieving faster results.regards,
Arvind. -
Hi All,
I want to know the functionality of the Key Field in the DSO.
I know based on the Key Fields(Primary Key) data is pulled to DSO, but please explain me the below scenario
E.g
I have 3 records in the Extractor( Generic) and i am pulling data to DSO - Full load.
Material Qty Date
100 20 1-Jan-2010
100 30 5-Jan-2010
100 10 10-Jan-2010
In DSO i have only one Key field called 0MAT_NM (Material Number), but i have 3 records in the Extractor , shown above.
Now my Question is
On what basis data will be pulled to DSO?
Whether latest date records will be pulled to DSO or let me know correct method? because i have got material no 100
but date and Qty is different (means one time it is taking Qty - 30 and date as 1st Jan 2010, other run it is taking differnet).
Please clear my doubt.
Regards,
Nithi.in your dso you can have one record per key. keyfigures will be in addition or overwrite option. if in "addition' the value will be the sum of all the values for a given key. in 'overwrite', you'll only keep the last record written to the dso; char are always in overwrite, so you'll keep the last record written to the dso
M.
Maybe you are looking for
-
Open link in new tab loads the new page and moves to the bottom
I am using the latest update of Safari and had this happening in the previous version also. When I CMD+Click a link to load it in a new tab the new tab opens behind the active one (my choice of preferences) and when I click to make the new tab active
-
Photos do not display properly in Firefox
I am having a problem that my photos are "blowing up" when viewed in Foxfire. If I make the photos small enough to not do that in Foxfire, they are really small when viewed in Chrome and IE. I'm using the Weaver II themes in all of these but discover
-
Never had a problem updating Adobe Flash Player over the last maybe 10 times, It downloads to 50% and then bottoms out with a (general install error) message. So the I uninstalled and tried to re-install to no avail. I don't know if I updated si
-
Allan had problems with his webhost: http://identi.ca/notice/87871795 After I have added [allanbrokeit] Server = http://allanmcrae.com/$repo/$arch to my pacman.conf, I couldn't use update and install packages anymore: [karol@black ~]$ pacman -Syu war
-
What kind of memory for my Macbook Pro Laptop
Hello: I am thinking of getting more memory for my laptop. I am unsure on what brand to buy, so I appreciate any input you might have. I have 2 memory slots that have 2gb each. How much can I put in each slot? 4gb, 8gb? What kind of prices for the me