Poor Extraction - ABAP Code
Hi SDNers
We have a performance problem in our BW system which is due to poor extraction: 300,000 records take about 4 hours to extract. I have traced this and found that a SELECT SINGLE statement is used in LOOP-ENDLOOP construction and when a record is found, it is processed in around 10ms (which seems fairly OK). However, when a record isn't found, the access takes upwards of 200ms and sometimes as much as 11 seconds! Long accesses also occasionally take hundreds of milliseconds, even when a record was found.
From an SQL point of view, the stats are up-to-date and the access is supported by a fully qualified and appropriate secondary index therefore, I wondered if the following code could be improved. Should we be SELECTing SINGLE within a loop? Here's the code:-
loop at DATA_PACKAGE.
move-corresponding DATA_PACKAGE to itab.
Select SINGLE AC_DOC_NO from /BI0/AFIAR_O0300
into zAC_DOC_NUM
where COMP_CODE = DATA_PACKAGE-COMP_CODE
AND ORG_DOC_NO = DATA_PACKAGE-BILL_NUM
AND FI_AWTYP = 'VBRK'.
IF SY-SUBRC = 0.
DATA_PACKAGE-BILL_NUM = zAC_DOC_NUM.
append itab.
ELSE.
DELETE DATA_PACKAGE.
ENDIF.
endloop.
As you may have guessed, I'm not an ABAPer!
Thanks for the help guys!!!
Des
Hi,
you should do the following:
data: it_ods type hashed table of /bi0/afiar_o0300
with unique key comp_code org_doc_no fi_awtyp,
wa_ods type /bi0/afiar_o0300.
may be you need to define the table with non unique key.
select * into table it_ods
from /bi0afiar_o0300 for all entries in data_package
where COMP_CODE = DATA_PACKAGE-COMP_CODE
AND ORG_DOC_NO = DATA_PACKAGE-BILL_NUM
AND FI_AWTYP = 'VBRK'.
loop at DATA_PACKAGE.
move-corresponding DATA_PACKAGE to itab.
Instead of your select.
*Select SINGLE AC_DOC_NO from /BI0/AFIAR_O0300
*into zAC_DOC_NUM
*where COMP_CODE = DATA_PACKAGE-COMP_CODE
*AND ORG_DOC_NO = DATA_PACKAGE-BILL_NUM
*AND FI_AWTYP = 'VBRK'.
read table it_ods into wa_ods
with table key comp_code = data_package-comp_code
org_doc_no = data_package-bill_num
fi_awtyp = 'VBRK'.
IF SY-SUBRC = 0.
DATA_PACKAGE-BILL_NUM = zAC_DOC_NUM.
append itab.
ELSE.
DELETE DATA_PACKAGE.
ENDIF.
endloop.
Additionally make sure that there is an index on comp_code, org_doc_no and fi_awtyp on your ods.
regards
Siggi
Similar Messages
-
How to extract data from info cube into an internal table using ABAP code
HI
Can Anyone plz suggest me
How to extract data from info cube into an internal table using ABAP code like BAPI's or function modules.
Thankx in advance
regds
AJAYHI Dinesh,
Thankq for ur reply
but i ahve already tried to use the function module.
When I try to Use the function module RSDRI_INFOPOV_READ
I get an information message "ERROR GENERATION TEST FRAME".
can U plz tell me what could be the problem
Bye
AJAY -
Need help in ABAP code to Enhance the Extract Structure ?????
Hi all,
I want to enhance the extract structure to get KBETR & KBRUE fields of KONP table since it didnt allow me to add those fields while creating the generic extractor because of currency key problems. I want to read all KONP records into internal table with KNUMH (Key). Next, I want to fill them into ZZKBETR & ZZKBRUE of Extract Structure ZOXUR40065 in loop.
DATA:
i_t_zrebate like ZOXUR40065 occurs 0 with header line,
reb_tabix like sy-tabix.
TABLES: KONP.
Could you please help me in completing the ABAP code?
Thanks,
Venkat.Hello Manga,
I have included the following code in ZXRSAU01:
WHEN 'ZREBATE'.
PERFORM ZREBATE_EXIT TABLES C_T_DATA.
After Double click on ZREBATE_EXIT on perform statement, it created ZXRSAF01 include and the following code is added in it:
FORM ZREBATE_EXIT TABLES FP_C_T_DATA STRUCTURE ZOXUR40065.
DATA:
i_t_zrebate like ZOXUR40065 occurs 0 with header line,
reb_tabix like sy-tabix.
FIELD-SYMBOLS: <l_c_t_data> TYPE ZOXUR40065.
LOOP AT fp_c_t_data ASSIGNING <l_c_t_data>.
reb_tabix = sy-tabix.
select single KBETR KBRUE
into (<l_c_t_data>-ZZKBETR,
<l_c_t_data>-ZZKBRUE,
from KONP
where KNUMH eq <l_c_t_data>-KNUMH.
if sy-subrc eq 0.
MODIFY fp_c_t_data FROM <l_c_t_data> INDEX reb_tabix.
endif.
CLEAR:reb_tabix.
ENDLOOP.
ENDFORM.
When I tried to Activate this ZXRSAF01 include, it fails with 'The FORM "ZREBATE_EXIT" does not exist'.
Should it be FP_C_T or P_C_T? I found P_C_T in ZXRSAF01 include.
What is wrong with it, please ?
Can't I add this whole code in main include ZXRSAU01itself?
The Extractor ZREBATE is based on KONA, KONH & KONP tables. This Extractor and KONA table have the same 4000 records and KONP has 13000 records. I want to extract KBERT & KBRUE from KONP.
Thanks in advance.
Regards,
Venkat -
Date range selection in abap code in infopackage
Hi!
I have a field called "OPEN_DATE".
When the infopackage is runned, I need the abap code to fint the current date, and from that, make a date range from the first day of current month to the last day of current month
Ex:
Current date = 12.12.2008
Abap code should extract 01.12.2008 - 31.12.2008
Thanks!Hi helge,
Data: l_idx like sy-tabix.
Data: date_low like sy-datum,
date_high like sy-datum.
Date_low = sy-datum.
date_low+6(2) = '01'.
CALL FUNCTION 'SLS_MISC_GET_LAST_DAY_OF_MONTH'
EXPORTING
DAY_IN = Date_low
IMPORTING
LAST_DAY_OF_MONTH = date_high
read table l_t_range with key
fieldname = 'OPEN_DATE'.
l_idx = sy-tabix.
Pass Range values to L_T_Range Table.
Move date_low to L_T_Range -Low.
Move date_high to L_T_Range -High.
L_T_Range -Sign = u2018Iu2019. *****(Here: I u2013 Include, E u2013 Exclude)
L_T_Range -Option = u2018BTu2019.****( Here: BT u2013 Between )
modify l_t_range index l_idx.
p_subrc = 0.
Regards, -
Abap Code TO ENHANCE DATASOURCE with KEY FIELD OF SOURCE TABLE
Dear Friends, Please help me to resolve this important issue at my end.
<b>Requirement</b>: enhance the STRUCTURAL data source which is
based on the table VISTSU , now this table has a <b>key INTERNO</b> (Data Element : SECAINTRENO) which i want to enhance in datasource
SGONR = STRUCTURAL NUMBER present in extract structure of datasource
Solution: I am not able to see any records for zzinterno enhance field in datasource rsa3 (Extractor CHECKER). Can u help me correct the ABAP code or tell me the way to pull the records for ZZINTERNO from VISTSU table.
Thanks
Poonam Roy
ABAP Code
data: l_s_REIS_STRUCTURAL_ATTR like REIS_STRUCTURAL_ATTR.
case i_datasource.
WHEN '0STRUCTURAL_ATTR'.
loop at C_t_data into l_s_REIS_STRUCTURAL_ATTR.
l_tabix = sy-tabix.
clear I_VISTSU .
select single * from VISTSU into i_VISTSU where SG0NR = l_s_REIS_STRUCTURAL_ATTR-SGONR.
if sy-subrc = 0.
l_s_REIS_STRUCTURAL_ATTR-ZZINTRENO = I_VISTSU -INTRENO.
modify C_t_data from l_s_REIS_STRUCTURAL_ATTR index l_tabix.
endif.
endloop.
endcase.Try the below code.
data: l_s_REIS_STRUCTURAL_ATTR like REIS_STRUCTURAL_ATTR.
data: temp_interno like VISTSU -INTRENO.
data: h_tabix LIKE sy-tabix.
case i_datasource.
WHEN '0STRUCTURAL_ATTR'.
loop at C_t_data into l_s_REIS_STRUCTURAL_ATTR.
MOVE SY-TABIX TO H_TABIX.
clear temp_interno.
select single INTERNO from VISTSU into temp_interno where SG0NR = l_s_REIS_STRUCTURAL_ATTR-SGONR.
if sy-subrc = 0.
l_s_REIS_STRUCTURAL_ATTR-ZZINTRENO = temp_interno.
endif.
modify C_t_data from l_s_REIS_STRUCTURAL_ATTR index H_TABIX.
ENDLOOP.
ENDCASE.
Regards, Siva -
ABAP Code for summation of key figure
Hi Guys,
I am new to ABAP and my requirement is as follows-
I have an infocube containing data like
Location Item Amount Month
India TV 10 Jan
India DVD 10 Jan
India XBOX 10 Jan
US TV 10 Jan
US XBOX 15 Jan
US DVD 20 Jan
UK XBOX 30 Jan
UK TV 20 Jan
UK DVD 15 Jan
India TV 20 Feb
US DVD 20 Feb
UK XBOX 10 Feb
India TV 20 Mar
Now by using open hub, I want to extract a file which would display report as -
Output file
15-Oct-2010
Location Item Amount
India TV 50
India DVD 10
India XBOX 10
US TV 10
US DVD 40
US XBOX 15
UK TV 20
UK DVD 15
UK XBOX 40
which means it should sum based on combination of location and item and create one single row.
I need some ABAP code which could be written in expert routine so as to to calculate single rows of amount for all data packets of infocube.
Kindly suggest on how to proceed on it.
Thanks in advance
Moderator Message: Even if you are new-to-ABAP, it does not imply that you can expect others to do your work. If you are a BI consultant, take the help of an ABAP consultant or self-learn the basic concepts of ABAP. If you are an ABAPer, go back to the training center.
Edited by: kishan P on Oct 15, 2010 10:34 AMFollow this white paper .... called, "How to .... Calculate with Attributes":
https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/72f4a790-0201-0010-5b89-a42a32223ffc
Brian -
How to transfer data in change log table of dso to z-table using abap code
Hi can you please explain me how to transfer data in change log table of dso to z-table using abap code ,with out using Function module concept
PROGRAM NAME: ZBW_DELTA_TO_GSTAR **
report ZBW_DELTA_TO_GSTAR no standard page heading
line-size 120
line-count 75
message-id ZBW_MSG_CLS.
tables: ZGIV_DLTA_EBV_BB,
ZGIV_DLTA_EM2_BL,
ZGIV_DLTA_EM2_BK.
Selection Screen Definitions
SELECTION-SCREEN: BEGIN OF BLOCK INNER WITH FRAME TITLE TEXT-001.
SELECTION-SCREEN: SKIP 1.
PARAMETERS: EBVBB RADIOBUTTON GROUP ROLL,
EM2BL RADIOBUTTON GROUP ROLL,
EM2BK RADIOBUTTON GROUP ROLL.
SELECTION-SCREEN: END OF BLOCK INNER.
Data: WS_UPDATE_FLAG Type C,
UCounter(9) Type N,
ICounter(9) Type N.
DATA: T_ZGIV_DLTA_EBV_BB Type Standard Table of ZGIV_DLTA_EBV_BB,
s_ZGIV_DLTA_EBV_BB LIKE line of T_ZGIV_DLTA_EBV_BB.
DATA: T_ZGIV_DLTA_EM2_BK Type Standard Table of ZGIV_DLTA_EM2_BK,
s_ZGIV_DLTA_EM2_BK LIKE line of T_ZGIV_DLTA_EM2_BK.
DATA: T_ZGIV_DLTA_EM2_BL Type Standard Table of ZGIV_DLTA_EM2_BL,
s_ZGIV_DLTA_EM2_BL LIKE line of T_ZGIV_DLTA_EM2_BL.
Standard Internal Tables - Describe usage.
data: begin of i_AEPSD_O0140 occurs 0.
include structure /BIC/AEPSD_O0140.
data: end of i_AEPSD_O0140.
data: begin of i_AEPSD_O0240 occurs 0.
include structure /BIC/AEPSD_O0240.
data: end of i_AEPSD_O0240.
data: begin of i_AEPSD_O0340 occurs 0.
include structure /BIC/AEPSD_O0340.
data: end of i_AEPSD_O0340.
data: begin of i_GIV_DLTA_EBV_BB occurs 0.
include structure ZGIV_DLTA_EBV_BB.
data: end of i_GIV_DLTA_EBV_BB.
data: begin of i_GIV_DLTA_EM2_BK occurs 0.
include structure ZGIV_DLTA_EM2_BK.
data: end of i_GIV_DLTA_EM2_BK.
data: begin of i_GIV_DLTA_EM2_BL occurs 0.
include structure ZGIV_DLTA_EM2_BL.
data: end of i_GIV_DLTA_EM2_BL.
Miscellaneous Program Variables and Constants.
TOP-OF-PAGE
top-of-page.
START-OF-SELECTION
start-of-selection.
Clear: i_GIV_DLTA_EBV_BB,
i_GIV_DLTA_EM2_BK,
i_GIV_DLTA_EM2_BL,
UCounter, ICounter.
IF EBVBB = 'X'.
PERFORM 100_EXTRACT_EBV_BB_DELTA_RECS.
ELSEIF EM2BK = 'X'.
PERFORM 100_EXTRACT_EM2_BK_DELTA_RECS.
ELSE.
PERFORM 100_EXTRACT_EM2_BL_DELTA_RECS.
ENDIF.
FORM 100_EXTRACT_EBV_BB_DELTA_RECS
FORM 100_EXTRACT_EBV_BB_DELTA_RECS.
Refresh: i_AEPSD_O0140,
i_GIV_DLTA_EBV_BB.
Clear: UCounter, ICounter, s_ZGIV_DLTA_EBV_BB .
Select * From /BIC/AEPSD_O0140
Into TABLE i_AEPSD_O0140.
IF SY-Subrc = 0.
LOOP AT i_AEPSD_O0140.
MOVE-CORRESPONDING i_AEPSD_O0140 TO s_ZGIV_DLTA_EBV_BB.
MOVE SY-DATUM to s_ZGIV_DLTA_EBV_BB-create_dt.
INSERT ZGIV_DLTA_EBV_BB FROM s_ZGIV_DLTA_EBV_BB.
IF SY-Subrc = 0.
ICounter = ICounter + 1.
ELSE.
UPDATE ZGIV_DLTA_EBV_BB FROM s_ZGIV_DLTA_EBV_BB.
IF SY-Subrc = 0.
UCounter = UCounter + 1.
ELSE.
Message E067 with SY-DATUM ' ' SY-UZEIT ' '.
ENDIF.
ENDIF.
ENDLOOP.
ENDIF.
ENDFORM. "100_EXTRACT_EBV_BB_DELTA_RECS
FORM 100_EXTRACT_EM2_BK_DELTA_RECS
FORM 100_EXTRACT_EM2_BK_DELTA_RECS.
Refresh: i_AEPSD_O0240,
i_GIV_DLTA_EM2_BK.
Clear: UCounter, ICounter, s_ZGIV_DLTA_EM2_BK .
Select * From /BIC/AEPSD_O0240
Into TABLE i_AEPSD_O0240.
IF SY-Subrc = 0.
LOOP AT i_AEPSD_O0240.
MOVE-CORRESPONDING i_AEPSD_O0240 TO s_ZGIV_DLTA_EM2_BK.
MOVE SY-DATUM to s_ZGIV_DLTA_EM2_BK-create_dt.
INSERT ZGIV_DLTA_EM2_BK FROM s_ZGIV_DLTA_EM2_BK.
IF SY-Subrc = 0.
ICounter = ICounter + 1.
ELSE.
UPDATE ZGIV_DLTA_EM2_BK FROM s_ZGIV_DLTA_EM2_BK.
IF SY-Subrc = 0.
UCounter = UCounter + 1.
ELSE.
Message E067 with SY-DATUM ' ' SY-UZEIT ' '.
ENDIF.
ENDIF.
ENDLOOP.
ENDIF.
ENDFORM. "100_EXTRACT_EM2_BK_DELTA_RECS
FORM 100_EXTRACT_EM2_BL_DELTA_RECS
FORM 100_EXTRACT_EM2_BL_DELTA_RECS.
Refresh: i_AEPSD_O0340,
i_GIV_DLTA_EM2_BL.
Clear: UCounter, ICounter, s_ZGIV_DLTA_EM2_BL .
Select * From /BIC/AEPSD_O0340
Into TABLE i_AEPSD_O0340.
IF SY-Subrc = 0.
LOOP AT i_AEPSD_O0340.
MOVE-CORRESPONDING i_AEPSD_O0340 TO s_ZGIV_DLTA_EM2_BL.
MOVE SY-DATUM to s_ZGIV_DLTA_EM2_BL-create_dt.
INSERT ZGIV_DLTA_EM2_BL FROM s_ZGIV_DLTA_EM2_BL.
IF SY-Subrc = 0.
ICounter = ICounter + 1.
ELSE.
UPDATE ZGIV_DLTA_EM2_BL FROM s_ZGIV_DLTA_EM2_BL.
IF SY-Subrc = 0.
UCounter = UCounter + 1.
ELSE.
Message E067 with SY-DATUM ' ' SY-UZEIT ' '.
ENDIF.
ENDIF.
ENDLOOP.
ENDIF.
ENDFORM. "100_EXTRACT_EM2_BL_DELTA_RECS
END-OF-SELECTION
end-of-selection.
perform D1000_REPORT_DATA.
D1000_REPORT_DATA
form D1000_REPORT_DATA.
*Display the title of the program
write: /25 SY-TITLE.
skip.
Diaplay the details of the user and time
write: /1 'Executed by', 15 SY-UNAME, 30 'Date',
38 SY-DATUM, 53 'Time', 60 SY-UZEIT.
skip 2.
write: / 'Delta Records have been extracted ',
/ 'Updates : ', UCounter,
/ 'Inserts : ', ICounter.
skip.
skip 3.
write: /20 'End of the report'.
endform. "D1000_REPORT_DATA
chgeck it out this also may hep you -
Error in ABAP code generation?
Hi,
I am using OWB 10.1 to generate ABAP code for SAP-Data-Extraction. For extracting date values there are two APAB lines which (want to) produce one line in the result SQLLDR-Script. ABAP will accept only around 73 characters per line and this is the reason for the two lines.
But ABAP does not accept a line break inside a string and thus this code runs into an ABAP-error.
This all seems to be standard - has anyone a solution?
generated ABAP-lines:
Line1: TRANSFER ',ERDAT_DATUM_AN_DEM_DER_SATZ_HI DATE ''yyyymmdd'' NULLIF
Line2: ERDAT_DATUM_AN_DEM_DER_SATZ_HI=''00000000''' TO DATAFILENAME.
many thanksHello Jean-Pierre,
many thanks for your answer. Not the expected solution but it works. Another solution we found is to put an ampersand behind the first line, which tells ABAP that this is a line break. But also here manually work is necessary and also changing generated code.
Cheers
Stefan -
LKM SAP BW to Oracle (SQLLDR) generates sintax error in ABAP code.
Hi Experts,
We are installing a SAP BW KM's in ODI 11g.
Actually, we are able to make reverse ingeneering succesfully.
Now we want to use the LKM in order to extract SAP data.
The KM fails, in step Generate ABAP Code. The code is uploaded to SAP system but with sintaxis errors.
That's the beginning of the SAPAbapExecuteOpenTool_8001_7001.log.
+##################################################+
+############ Open Tool Logger ####################+
+##################################################+
+############ Upload value: 1+
+############ Execute value: 1+
+############ BASE RKM FLAG: 0+
+############ ZRFC_RUN_INSTALL: 1+
+############ Abap Function Name: ZODI_8001_7001+
+############ Sap Host Name: XXXXXXXX+
+############ Sap User Name: XXXX+
+############ Sap password: ********+
+############ Sap Client: 100+
+############ Sap language: ES+
+############ Sap system no: 00+
+############ Sap Connection Pool Name: SAP_ODI_LKM_POOL_GLOBAL+
+############ Sap Connection Pool Size: 10+
+############ Sap Function group name: ZODIBW_LKM_FGRP+
+############ File Delimiter:+
+############ File Name: ZODI_8001_7001.txt+
+############ FTP Host: XXXXXXXXX+
+############ FTP User: ftpbi+
+############ FTP Password: ********+
+############ FTP Passive Mode: 1+
+############ FTP Transfer Time out: 100000+
+############ User abap parameter names: IV_DELIMITER,CHAR1;IV_FILENAME,CHAR255;IV_USER,CHAR35;IV_PWD,CHAR35;IV_HOST,CHAR35;IV_HASHVALUE,CHAR35;IV_PATH,CHAR35;IV_REQUID_L,RSSID;IV_REQUID_H,RSSID+
+############ Abap rfc table parameters: RETURN,BAPIRETURN;ET_FILE_RETURN,BAPIRET2+
+############ Log File Name: /tmp/SAPAbapExecuteOpenTool_8001_7001.log+
+############ OpenHub Path: /tmp/+
+############ Delta Extraction First Request ID : 0+
+############ Delta Extraction Last Request ID : 0+
+############ SAP Development Class : ZODIBW_PCKG+
+############ Max Row Count :+
+############ Fetch Batch Size :+
+############ Hash Value Marker: HVM+
+############ Generated Program:+
*** ODS DSO extraction
TYPES: BEGIN OF ty_final,
+/BIC/AZOFI_UTE00_/BIC/ZFI_SOCOR+
TYPE
+/BIC/AZOFI_UTE00-/BIC/ZFI_SOCOR,+
+/BIC/AZOFI_UTE00_SOURSYSTEM+
TYPE
+/BIC/AZOFI_UTE00-SOURSYSTEM,+
END OF ty_final.
In the SAP GUI shows a sintaxis error.
Functions Module ZODI_8001_7001. line 25
The name "/BIC/AZOFI_UTE00_/BIC/ZFI_SOCOR" is longer that allowed.
+30 characters.+
Really the TYPE "/BIC/AZOFI_UTE00_/BIC/ZFI_SOCOR" has 31 characters.
The sufix "/BIC/" is the "NAMESPACE", a SAP grouping concept.
AZOFI_UTE00 is a table name.
ZFI_SOCOR is a column name.
Are this sufix correct in the APAP code?
Has anyone had that problem?
Any comment will be wellcome.
Thank's in advance.Hi Somchai,
r U able to resolve ur issue ..........i'm also struck there at the same point.
I am using shared folder for file transfer and my error message is
java.lang.RuntimeException: Error occured in open tool execute method...Error in executing ABAP program...Error in executing ABAP program...Error occurred when creating dataset\\<hostname>\bi-interface$\ZODI_11001_12001_GLOBAL.txt
Thanks.
Edited by: Drona on Mar 26, 2012 7:25 AM -
Simple Abap Code Case i_chabsnm is not working
Please help me asap, I am trying to enhance the BW datasource with only one field "Responsible" in 0refx_2 datasource . I am getting the error in code that case i_chabasnm is unknown and tables not defined by data statement
please help me to correct the code I am just picking the field RESPONSIBLE from Table VIBDPR
Abap Code below:
Tables: VIBDPR. "Property master data table
data: l_tabix like sy-tabix.
case i_CHABASNM.
*Enhancement of Property Master Record
WHEN '0REFX_2'.
case i_datasource.
WHEN '0REFX_2'.
data: l_s_REIS_MEASUREMENT_TRAN like REIS_MEASUREMENT_TRAN.
loop at i_t_data into l_s_REIS_MEASUREMENT_TRAN.
l_tabix = sy-tabix.
select single * from VIBDPR where BUKRS = l_s_ REIS_MEASUREMENT_TRAN - BUKRS.
if sy-subrc = 0.
l_s_BIW_VIBDPR_s-ZZRESPONSIBLE = VIBDPR-RESPONSIBLE.
modify i_t_data from l_s_ REIS_MEASUREMENT_TRAN index l_tabix.
endif.
endloop.
endcase.
endcaseI am getting the error in cmid abap code that
REIS_MEASUREMENT_TRAN shall be a flat structure but that is the extract structure in datasource 0refx_2 so what should i change on this
Tables: VIBDPR. "Property master data table
data: l_tabix like sy-tabix.
data: i_CHABASNM.
case i_CHABASNM.
*Enhancement of Property Master Record
WHEN '0REFX_2'.
case i_datasource.
WHEN '0REFX_2'.
data: l_s_REIS_MEASUREMENT_TRAN like REIS_MEASUREMENT_TRAN.
loop at i_t_data into l_s_REIS_MEASUREMENT_TRAN.
l_tabix = sy-tabix.
select single * from VIBDPR where BUKRS = l_s_ REIS_MEASUREMENT_TRAN - BUKRS.
if sy-subrc = 0.
l_s_BIW_VIBDPR_s-ZZRESPONSIBLE = VIBDPR-RESPONSIBLE.
modify i_t_data from l_s_ REIS_MEASUREMENT_TRAN index l_tabix.
endif.
endloop.
endcase.
endcase -
ABAP code to get MM Movement Types into BI
Hi All,
I need help in ABAP code to extract data on MM tables for Purchase Price Variance Raw Material. I'm getting material documents for all reversals 102 movement type and not extracting followed up 544 or 543 values for same documents. I don't have much idea about ABAP in depth.
program using BSIS, BKPF , EKBE, MSEG, MKPF, EKPO tables to extract data.
See below pieces of code from program.
DATA: TEMP_AWKEY LIKE BKPF-AWKEY,
YEAR(4) TYPE N,
WRX_AMT TYPE BSEG-DMBTR,
PRD_AMT TYPE BSEG-DMBTR,
WP_AMT TYPE BSEG-DMBTR,
QTY TYPE BSEG-MENGE,
I_BSIS_WA TYPE I_BSIS_TYPE,
MATDOC TYPE MSEG-MBLNR,
MATDOC_YEAR TYPE MSEG-MJAHR,
PERIOD(2) TYPE N.
DATA:
ITAB_MSEG TYPE HASHED TABLE OF ITAB_MSEG_TYPE WITH UNIQUE KEY MBLNR MJAHR ZEILE WITH HEADER LINE INITIAL SIZE 0,
ITAB_MSEG2 TYPE HASHED TABLE OF ITAB_MSEG_TYPE WITH UNIQUE KEY MBLNR MJAHR ZEILE WITH HEADER LINE INITIAL SIZE 0,
READ TABLE ITAB_BSEG WITH TABLE KEY BUKRS = I_BSIS-BUKRS BELNR = I_BSIS-BELNR GJAHR = I_BSIS-GJAHR BUZEI = I_BSIS-BUZEI .
IF SY-SUBRC EQ 0.
MOVE :
ITAB_BSEG-MEINS TO I_BSIS-MEINS,
ITAB_BSEG-SHKZG TO I_BSIS-SHKZG,
ITAB_BSEG-MATNR TO I_BSIS-MATNR,
ITAB_BSEG-WERKS TO I_BSIS-WERKS,
ITAB_BSEG-MENGE TO I_BSIS-MENGE,
ITAB_BSEG-BEWAR TO I_BSIS-BEWAR,
ITAB_BSEG-DMBTR TO I_BSIS-DMBTR,
ITAB_BSEG-KTOSL TO I_BSIS-KTOSL,
ITAB_BSEG-XREF3 TO I_BSIS-XREF3,
ITAB_BSEG-PEINH TO I_BSIS-PEINH,
ITAB_BSEG-EBELN TO I_BSIS-EBELN,
ITAB_BSEG-EBELP TO I_BSIS-EBELP.
IF ITAB_BSEG-SHKZG = 'H' .
I_BSIS-DMBTR = I_BSIS-DMBTR * -1.
ITAB_BSEG-DMBTR = ITAB_BSEG-DMBTR * -1.
ENDIF.
IF NOT I_BSIS[] IS INITIAL.
SELECT * FROM MSEG
INTO CORRESPONDING FIELDS OF TABLE ITAB_MSEG
FOR ALL ENTRIES IN I_BSIS
WHERE MBLNR = I_BSIS-MATDOC
AND MJAHR = I_BSIS-MATDOC_YEAR
ORDER BY PRIMARY KEY.
LOOP AT ITAB_MSEG.
LOOP AT I_BSIS WHERE MATDOC = I_MSEG_WE-MBLNR. "AND MATDOC_YEAR = I_MSEG_WE-MJAHR.
MOVE :
ITAB_MSEG-BWART TO I_BSIS-BWART.
MODIFY I_BSIS TRANSPORTING BWART.
ENDLOOP.
ENDLOOP.
IF WA_ZBW_MM_PPVCALC-BWART = ' '.
MATDOC_YEAR = WA_ZBW_MM_PPVCALC-AWKEY+10(4).
MATDOC = WA_ZBW_MM_PPVCALC-AWKEY(10).
SELECT * FROM MSEG
INTO CORRESPONDING FIELDS OF TABLE ITAB_MSEG2
FOR ALL ENTRIES IN I_BSIS
WHERE MBLNR = MATDOC
AND MJAHR = MATDOC_YEAR
ORDER BY PRIMARY KEY.
LOOP AT ITAB_MSEG2.
WA_ZBW_MM_PPVCALC-BWART = ITAB_MSEG2-BWART.
ENDLOOP.
ENDIF.
Please let me know where I need to change the logic to pick all movement types documents.
Thanks,
SAP_BI_AP
Edited by: SAP_BI_AP on Jun 23, 2010 10:35 PMHi
There is one std tcode COOIS where u can get the information what u have asked
Pls check
regards
Vijay -
Abap Code help in Extractor!!!
Hi all
I am not an abaper, I am using Bw 3.5; I need to write a code in "ZBSIS" and "ZBSAS" Extractor Include program ZXRSAU01: so that the report based on cube "ZBSISAS" shows values for field Transaction key "ZKTOSL".
The field "KTOSL" is not active in R/3 Directory and gets filled in program RFWERE00 in Tcode F.19 in R/3.
I have to use the same logic in extractor as used in that program.
The logic is:
FORM GET_'KTOSL USING IAMOUNT LIKE EXTRACT-DMBTR
CHANGING 'EKTOSL' LIKE POST_COLLECT-'KTOSL'.
IF IAMOUNT < 0.
'EKTOSL' = 'GNB'
ELSE.
'EKTOSL' = 'BNG'
ENDIF.
ENDFORM.
Can any of you advice me on abap code for this logic?
I appreciate your help.
Thanks in advance
IshiHi,
You can use the following code in ZXRSAU01.
CASE i_datasource.
WHEN 'ZBSIS'.
DATA: g_wa_extractstructure LIKE <give the extractstructure of your datasource from RSA2>.
LOOP AT C_T_DATA into g_wa_extractstructure.
IF g_wa_extractstructure-DMBTR LT 0.
g_wa_extractstructure-ZKTOSL = 'GNB'
ELSE.
g_wa_extractstructure-ZKTOSL = 'BNG'
ENDIF.
MODIFY c_t_data FROM g_wa_extractstructure.
ENDLOOP.
ENDCASE.
Note:- . The same code can be used for ZBSAS. Please make sure to give the extract structure name in the field marked in <->.
Thanks,
Nithin reddy. -
ABAP Code Date Selection for InfoPackage Scheduler
Hello Group
I need to automate the selection of valid condition records for an extraction that have a From and To date range.
I noticed there is an option (Routine for time interval) to write ABAP code along with a template that is available in the InfoPackage.
I think the logic for the selection would be any record
Valid from <= today
Valid to >= today
Can anyone help with the ABAP code?
The template is as follows:
program conversion_routine.
Type pools used by conversion program
type-pools: rsarc, rsarr, rssm.
tables: rsldpsel.
Global code used by conversion rules
$$ begin of global - insert your declaration only below this line -
TABLES: ...
DATA: ...
$$ end of global - insert your declaration only before this line -
form compute_time_dependent_dates
changing p_datefrom type d
p_dateto type d
p_subrc like sy-subrc.
Insert source code to current selection field
$$ begin of routine - insert your code only below this line -
p_datefrom =
p_dateto =
p_subrc = 0.
$$ end of routine - insert your code only before this line -
endform.
Thank You for your help!!
FrankI resolved the problem . I have changed the order of read table l_t_range because I need the header .
In the loop at datos I add the line l_t_range-iobjnm = 'ZXGE_UNO'.
The problem wasn't the call RFC it was that I built l_t_range bad. I need the infoObject name.
This is correct!!
READ TABLE L_T_RANGE WITH KEY
FIELDNAME = '/BIC/ZXGE_UNO'.
LOOP AT DATOS.
L_T_RANGE-FIELDNAME = '/BIC/ZXGE_UNO'.
L_T_RANGE-IOBJNM = 'ZXGE_UNO'.
L_T_RANGE-SIGN = 'I'.
L_T_RANGE-OPTION = 'EQ'.
CONCATENATE '00' DATOS-WA+3(4) INTO L_T_RANGE-LOW.
APPEND L_T_RANGE.
ENDLOOP.
*READ TABLE L_T_RANGE WITH KEY+
+*FIELDNAME = '/BIC/ZXGE_UNO'.+
+* L_IDX = SY-TABIX.+
+* MODIFY L_T_RANGE INDEX L_IDX
Thanks a lot
Ana -
IS there is any another Area for writing ABAP Codes ( Variable Exit)
Can we extractor & aggragate the Data from Lookup DSO . & show in Report of (ODS1) .
Can we extract/Aggregate Data at run time of Query .
Please help me what are the Area/Tool where we can write the ABAP Codes in displaying a report in BEx QueryHi
Point 1: U r saying DSO is BI 7 &ODS 3.X .But Actually we will use lookup while uploading
Ex : Data Flow : ODS1 - CUBE (Before Uploading data to Cube from ODS1 you need some data from ODS2.Then you will use lookup at teh ODS1-CUBE TRansformation level)
Point 2 : As per my understand when you can execute the query the OLAP Processor will pick the data display the in theoutput as per your stucrure.Means during Run Time of query
1. Extracting Data from Cube
2. Claculating based on the Query Structure deisgned ( Means Aggregarion of Data etc.......) and displays the output.
Point 3: Customer exit for BEx query will written in SE38/CMOD.
Regards
Ram. -
Need ABAP Code to enhance the 0PRODORDER_ATTR?
I want to enhance the datasource 0PRODORDER_ATTR with the below JCDS Table fields like UDATE,STAT,OBJNR,INACT,CHGNR.
Can anyone please let me know the ABAP Code need to be written in the CMOD to populate the data for the above fields in the 0PRODORDER_ATTR?Hi,
You can use below code to enhancemnt .
You need to change the table, structure and field names
Below code you have to write in tocde CMOD if you are enhancing the master data. It applies for any master data, although, I have taken 0VENDOR_ATTR as the example. I assume that You have already added/appended the fields in the extract structure of 0VENDOR_ATTR i.e. to the structure BIW_LFA1_S. ( Check this link for how to enhance the DataSource : https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/b0af763b-066e-2910-a784-dc6731660f46 )
We have enhanced the datasorce for the following two fields from table LFA1:
ERDAT- Date on which the Record Was Created
KRAUS - Credit information number.
We have also enhaced the structure for the following fields from table LFB1.
MINDK - Minority Indicators
ZTERM - Terms of payment key
CERDT - Certification date.
Now we will poulate these two fields in the code written in CMOD tcode. Here is the code:
Go to the tcode CMOD in R3 and select the component EXIT_SAPLRSAP_002. Write this code in INCLUDE ZXLOFU01.
data : l_t_data like biw_lfa1_s.
data : l_tabix like sy-tabix.
CASE i_datasource.
WHEN '0VENDOR_ATTR'.
LOOP AT i_t_data INTO l_t_data.
l_tabix = sy-tabix.
CLEAR: l_t_data-yyerdat,
l_t_data-yykraus.
SELECT SINGLE erdat kraus FROM lfa1 INTO
( l_t_data-yyerdat, l_t_data-yykraus)
WHERE lifnr EQ l_t_data-lifnr.
SELECT SINGLE mindk zterm cerdt FROM lfb1 INTO
(l_t_data-yymindk, l_t_data-yyzterm, l_t_data-yycerdt)
WHERE lifnr = l_t_data-lifnr.
MODIFY i_t_data FROM l_t_data INDEX l_tabix.
CLEAR: l_t_data, l_tabix.
ENDLOOP.
ENDCASE.
Labels parameters
Maybe you are looking for
-
Question regarding material for Forms and Reports
Hi, I'm good at SQL, now that i would like to learn Forms and Reports in Database. But i dont know like where to start and how to start. Could someone please help me out like what i need to do to learn them. As i said i'm very much new to these conce
-
Hi Gurus, I need your help 1) Want to configure a pricing condition which can be used only in a purchase order, but NOT in a contract/outline agreement. Is it possible? If yes, then how? 2) Want to configure a pricing condition which when added in a
-
ILife does not appear as purchased in the Mac App Store
I already bought the CD iLife 11 but in the Mac App Store does not appear as Purchased, how can I do it? Thanksi
-
PDF File "explodes" after applying Redactions
I have a few pdf files which had some parts which should not appear in the final version. So I used "Search and redact" to find those parts and marked them for redaction. So far, so good, but as soon as I apply the redactions and save the files, they
-
What should the "other" be on your storage mine is over 2GB is that to much?
My phone is holding 2.08 GB of OTHER on it. Is this normal or is there things I caqn delete to reduce the OTHER?