Issue regarding internal tables
Dear all,
My issue is that , I need to enter data into a single internal table by fetching data from two sap tables using two different selct quries. I should not use joins or for all entries. And display the internal table data in the list.
Problem am facing is only one select query is geeting fetched and the other table data in not in the list.
Pleas provide the possible solutions.
Thanks & Regards,
Madhavi.M
DATA: BEGIN OF itab1 OCCURS 0,
qmnum LIKE qmel-qmnum,
qmtxt LIKE qmel-qmtxt,
indtx LIKE qmel-indtx,
qmdat LIKE qmel-qmdat,
ltrmn LIKE qmel-ltrmn,
priok LIKE qmel-priok,
aufnr LIKE qmel-aufnr,
bezdt LIKE qmel-bezdt,
qmnam LIKE qmel-qmnam,
qmart LIKE qmel-qmart,
END OF itab1.
DATA: BEGIN OF itab2 OCCURS 0,
qmnum LIKE qmih-qmnum,
btpln LIKE qmih-btpln,
ingrp LIKE qmih-ingrp,
END OF itab2.
DATA : itab3 TYPE TABLE OF z_notif WITH HEADER LINE.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-t01.
SELECT-OPTIONS : notnum FOR qmel-qmnum OBLIGATORY,
notype FOR qmel-qmart,
floc FOR qmih-btpln,
name FOR qmel-qmnam.
SELECTION-SCREEN END OF BLOCK b1.
START-OF-SELECTION.
To fetch the values in the internal table ****************
from ztable corresponding to the entries made *************
by the user in the selection screen ******************
SELECT qmnum qmtxt indtx qmdat ltrmn priok aufnr bezdt qmnam qmart INTO
TABLE itab1 FROM qmel WHERE qmnum IN notnum
AND qmart IN notype AND qmnam IN name.
SELECT qmnum btpln ingrp INTO TABLE itab2 FROM qmih FOR ALL ENTRIES IN
itab1 WHERE qmnum = itab1-qmnum AND btpln IN floc.
To move the contents of ITAB1 to ITAB3 ***************
LOOP AT itab1.
itab3-qmnum = itab1-qmnum.
itab3-qmtxt = itab1-qmtxt.
itab3-indtx = itab1-indtx.
itab3-qmdat = itab1-qmdat.
itab3-ltrmn = itab1-ltrmn.
itab3-priok = itab1-priok.
itab3-aufnr = itab1-aufnr.
itab3-bezdt = itab1-bezdt.
itab3-qmnam = itab1-qmnam.
itab3-qmart = itab1-qmart.
READ TABLE itab2 WITH KEY qmnum = itab1-qmnum.
To move the contents of ITAB2 to ITAB3 ***************
itab3-btpln = itab2-btpln.
itab3-ingrp = itab2-ingrp.
APPEND itab3.
ENDLOOP.
have a look at this example this may help you.....
reward if helpful.....
Similar Messages
-
Regarding Internal Table Field Validation [Modification]
Hi All,
I have a small issue with formatting of a field.
The Field is POTX1 - it would get the value as 'New MT-EPPE0097-COMP02',
Means i have one internal table field as i_error-POTX1 in that some times we get value as 'New MT-EPPE0097-COMP02'.
Whenever i get 'New' literal in that internal table field i have to remove that literal from that internal table field. And Left Justify the remaining part of the field.
Ex: 'New MT-EPPE0097-COMP02'
should become 'MT-EPPE0097-COMP02'.
For this first i have to find wether 'New' Literal exists in the Internal table field or not then i have to remove it.
Can anybody tell me how can i solve this issue.
Thanks in advance.
Thanks & Regards,
Rayeezuddin.Hi,
Take a look :
loop at i_error.
if i_error-potx1(3) = 'New'
w_potx1 = i_error-potx1.
i_error-potx1 = w_potx1+3(37).
MODIFY i_error.
endif.
ENDLOOP.
Regards,
Erwan.
Message was edited by: Erwan LE BRUN -
Regarding Internal Table Manipulation
Hi All,
I have a issue when working against Internal Table inside a function module.
Issue is:
My I.Table declaration is as below:
<b>DATA: BEGIN OF i_vbfa_tab OCCURS 0.
INCLUDE STRUCTURE vbfa.
DATA: END OF i_vbfa_tab.</b>
Then in code i had written following logic:
SELECT VBELV
VBELN
VBTYP_N
VBTYP_V
FROM VBFA
INTO ( V_VBELV, V_VBELN, V_VBTYP_N, V_VBTYP_V )
WHERE VBELN = V_SO_ORDER2 AND
VBTYP_N = 'G' AND
STUFE = '00'.
IF SY-SUBRC EQ 0.
I_VBFA_TABVBELN = V_VBELN.
I_VBFA_TABVBELV = V_VBELV.
I_VBFA_TABVBTYP_N = V_VBTYP_N.
I_VBFA_TABVBTYP_V = V_VBTYP_V.
APPEND I_VBFA_TAB.
CLEAR I_VBFA_TAB.
ENDIF.
Then when i am checking for <b>F2[Syntax]</b> it is giving error as <b>'The Field I_VBFA_TAB-VBELN is unknown'</b>. This is the case with all 4 assignment statements.
Can anybody tell me what is the issue over here.
What can i do to assign those values to internal table and append. I had tried with <b>MOVE</b> that is also giving same error.
Can anybody solve my issue.
Thanks in advance.
Thanks & Regards,
Prasad.If you are doing something like:
call function 'Z_FUNC'
tables i_vbfa_tab = vbfa_tab.
and in the FM:
function z_func
*" TABLES
*" i_vbfa_tab STRUCTURE vbfa OPTIONAL
perform get_vbfa.
and then in an include
form get_vbfa
SELECT VBELV
VBELN
VBTYP_N
VBTYP_V
FROM VBFA
INTO ( V_VBELV, V_VBELN, V_VBTYP_N, V_VBTYP_V )
WHERE VBELN = V_SO_ORDER2 AND
VBTYP_N = 'G' AND
STUFE = '00'.
I think you'll get the syntax arror you describe. Try:
call function 'Z_FUNC'
tables i_vbfa_tab = vbfa_tab.
and in the FM:
function z_func
*" TABLES
*" i_vbfa_tab STRUCTURE vbfa OPTIONAL
perform get_vbfa
<b> tables i_vbfa_tab.</b>
and then in the include
form get_vbfa
<b> tables i_vbfa structure vbfa.</b>
data: v_vbelv like vbfa-vbelv,
v_vbeln like vbfa-vbeln,
v_VBTYP_N like vbfa-VBTYP_N,
v_VBTYP_v like vbfa-VBTYP_v,
SELECT VBELV
VBELN
VBTYP_N
VBTYP_V
FROM VBFA
INTO ( V_VBELV, V_VBELN, V_VBTYP_N, V_VBTYP_V )
WHERE VBELN = V_SO_ORDER2 AND
VBTYP_N = 'G' AND
STUFE = '00'.
IF SY-SUBRC EQ 0.
I_VBFA_TABVBELN = V_VBELN.
I_VBFA_TABVBELV = V_VBELV.
I_VBFA_TABVBTYP_N = V_VBTYP_N.
I_VBFA_TABVBTYP_V = V_VBTYP_V.
APPEND I_VBFA_TAB.
CLEAR I_VBFA_TAB.
ENDIF.
I didn't test this, so if you use it, test it thoroughly.
Rob -
Issue in Internal Table for calculating MAX value
Hi Abapers,
I have internal table with data as follows:
Materail Currency Quantity Dominant_Currency
1 000000000007001896 GBP 396
2 000000000007001896 EUR 25
3 000000000007001310 USD 7
4 000000000007001310 GBP 646
5 000000000007001310 EUR 195
6 000000000007000949 GBP 947
7 000000000007000949 EUR 117
Now I have to find out the max quantity for each materail and currency against max quantity which will be put in the dominat currency fields of Internal Table.
Eg: For material 000000000007001896, 396 is the max quantity and Currency for this is GBP so dominant currency will be GBP for first 2 records.
Similarly 646 is max for 000000000007001310 therefore GBP will be dominant curr for the records containg material 000000000007001310
Please solve the issue.
Regards,
Rahul Sinhalv_quantity --> quantity parameter
sort itab by matnr quantity
loop at itab.
at new material.
clear lv_quantity.
endat,
if itab-quantity > lv_quantity.
lv_quantity = itab-quantity.
itab-dominant_curr = itab-curr.
modify itab transporting dominant_curr where material = itab-material.
endif.
"please write modify statement with some logic..so that it is called once for one item
endloop.
if you find any issue revert back. -
Hi All,
I have defined an internal table 'with occurs 0'.
While debuggining, i am observing that only 50,000 lines are getting populated in that internal table.
How to increase the capacity of the internal table, so that it can hold more number of lines?
Regards
PavanI would like to explaing you all about this issue.
I have defined an internal table as follows...
data: IT_CATSDB TYPE BAPICATS2 OCCURS 0 WITH HEADER LINE.
I have used a BAPI called "BAPI_CATIMESHEETRECORD_GETLIST" which will retirieve the Timesheet details of all employees within a given date range.
Now, the number of entries that we got from this BAPI are stored in the internal table it_catsdb.
I have observed that this internal table is holding max of 50k lines.
If i check the database table (CATSDB) for the same conditions in SE11, i am able to get around 1L lines.
Hence my report is showing incorrect output.
Kindly help me out with some logic, so that this internal table can hold as much as data possible without any restriction.....
Regards
Pavan -
Regarding internal table read.
Hi,
i want to read internal table and compare the one variable existing with in from date and to date.
the psudo code is like this
READ TABLE L_TABEMPLOYEE INTO L_WAEMPLOYEE WITH KEY EMPLOYEE = SOURCE_FIELDS_RULE-PERNR
ULTIMO BETWEEN L_WAEMPLOYEE-DATEFROM AND L_WAEMPLOYEE-DATETO.
but this statement gives error.
how to code for the same requirement.
regards,
swami.Hi,
Recode like this.It will definitely work
LOOP AT L_TABEMPLOYEE INTO L_WAEMPLOYEE
WHERE EMPLOYEE = SOURCE_FIELDS_RULE-PERNR
AND ULTIMO > L_WAEMPLOYEE-DATEFROM
AND ULTIMO < L_WAEMPLOYEE-DATETO.
<Write what you want to do here >
ENDLOOP.
Please reward if useful
Thanks Arjun
Edited by: Arjun Puthuruthy on Mar 26, 2008 10:52 AM -
Regarding Internal table and access performance
hey guys.
In my report , Somehow i reduced the query performance time by selecting minimum key fields and moved the selected records to internal table.
Now from this internal table i am restricting the loop
as per my requirements using where statements.(believing that internal table retrieval is more faster than database acces(using query)).
But still my performance goes down.
Could you pls suggest me how to reduce the execution time
in abap programming.
I used below commands.
Read using binary search.
loop ...where statement.
perform statements.
collect staements.
delete itab.(delete duplicates staements too)
sort itab(sorting).
For each above statements do we have any faster way to retrieval records.
If i see my bottle neck at se30.it shows
ABAP programming to 70 percent
database access to 20 percent
R3 system as 10percent.
now how to reduce this abap process.
could you pls reply.
ambichan.
ambichan.Hello Ambichan,
It is difficult to suggest the improvements without looking at the actual code that you are running. However, I can give you some general information.
1. READ using the BINARY SEARCH addition.
This is indeed a good way of doing a READ. But have you made sure that the internal table is <i>sorted by the required fields</i> before you use this statement ?
2. LOOP...WHERE statement.
This is also a good way to avoid looping through unnecessary entries. But further improvement can certainly be achieved if you use FIELD-SYMBOLS.
LOOP AT ITAB INTO <FIELD_SYMBOL_OF_THE_SAME_LINE-TYPE_AS_ITAB>.
ENDLOOP.
3. PERFORM statements.
A perform statement can not be optimized. what matters is the code that you write inside the FORM (or a subroutine).
4. COLLECT statements.
I trust you have used the COLLECT statement to simplify the logic. Let that be as it is. The code is more readable and elegant.
The COLLECT statement is somewhat performance intensive. It takes more time with a normal internal table (STANDARD). See if you can use an internal table of type SORTED. Even better, you can use a HASHED internal table.
5. DELETE itab.(delete duplicates staements too)
If you are making sure that you are deleting several entries based on a condition, then this should be okay. You cannot avoid using the DELETE statement if your functionality requires you to do so.
Also, before deleting the DUPLICATES, ensure that the internal table is sorted.
6. SORT statement.
It depends on how many entries there are in the internal table. If you are using most of the above points on the same internal table, then it is better that you define your internal table to be of type SORTED. That way, inserting entries will take a little more time (to ensure that the table is always sorted), but alll the other operations are going to be much faster.
Get back to me if you need further assistance.
Regards,
<a href="https://www.sdn.sap.com:443http://www.sdn.sap.comhttp://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/com.sap.sdn.businesscard.sdnbusinesscard?u=zwcc%2fwm4ups%3d">anand Mandalika</a>. -
Issue with internal table in object oriented ABAP.
Hello Gurus,
I am having trouble defining internal table in Object oriented ABAP. for following:
DATA: BEGIN OF IT_TAB OCCURS 0.
INCLUDE STRUCTURE ZCUSTOM.
DATA tot_sum TYPE char40.
DATA END OF IT_TAB.
Can someone help ?
Regards,
Jainam.
Edited by: Jainam Shah on Feb 5, 2010 8:33 PM
Edited by: Jainam Shah on Feb 5, 2010 8:33 PM
Moderator message - Please post in the correct forum. You can easily find out for yourself by looking at SAP help for internal tables using OOP - thread locked
Edited by: Rob Burbank on Feb 5, 2010 2:49 PMNo, you can not declare internal table with header line in OO context. You have to declare the work are/header line separately
Example:
TYPES: BEGIN OF ty_it_tab.
INCLUDE STRUCTURE mara.
TYPES: tot_sum TYPE char40.
TYPES: END OF ty_it_tab.
DATA: it_tab TYPE STANDARD TABLE OF ty_it_tab.
DATA: wk_tab TYPE ty_it_tab.
LOOP AT it_tab INTO wk_tab.
ENDLOOP.
Edited by: Dean Q on Feb 5, 2010 8:50 PM -
Memory space issue in internal table
Hi ,
My report is dumping because there is no memory space availabe for extending the memory of an internal table, after it gets filled with about 2500000 lakh records.
the dump analysis is as follows :-
Error analysis
The internal table (with the internal identifier "IT_317") could not be
enlarged any further. To enable error handling, the internal table had
to be deleted before this error log was formatted. Consequently, if you
navigate back from this error log to the ABAP Debugger, the table will
be displayed there with 0 lines.
When the program was terminated, the internal table concerned returned
the following information:
Line width: 1700
Number of lines: 106904
Allocated lines: 106904
New no. of requested lines: 8 (in 1 blocks)
How to correct the error
The amount of storage space (in bytes) filled at termination time was:
Roll area...................... 7272944
Extended memory (EM)........... 603339264
Assigned memory (HEAP)......... 396390176
Short area..................... " "
Paging area.................... 40960
Maximum address space.......... 529887568
You may able to find an interim solution to the problem
in the SAP note system. If you have access to the note system yourself,
use the following search criteria:
Please suggest what can be done.
Regards,
Vikas AryaHi,
This solution might not sound good. But give a thought.
While appending data u may take more than one internal table.
Append first 10lakh records to 1st table, Second 10 lakhs to second table etc.
But from where are u getting the source data? It should be present in some internal table correct?
Probably u can use dynamic internal tables concept.
Also check ur code carefully. After the place of appending if u are not going to use any internal tables then use FREE itab
statement to free the memory allocated.
Also reduce the global declarations as much as possible
Thanks,
Vinod. -
Issue In internal table data population in the o/p
Dear Guru , I have encountered an issue for which i am not able to findout the logic . I have an internal table through which i am populating the below data for detail report format :->
Plant Material Number Storage Loc Movement Type Avg Days
019 0820B0073 MOD3 101 space
019 0820B0073 MOD3 101 space
019 0820B0073 MOD3 101 space
019 0820B0073 MOD3 101 space
019 0820B0073 MOD3 101 space
020 0820B0074 MOD4 101 space
020 0820B0074 MOD4 101 2
020 0820B0074 MOD4 101 3
The requirment is like this the summary report should show o/p like below addition of all the rows with respect to plant , material, storage location and movement type :-
Plant Material Number Storage Loc Movement Type Avg Days
019 0820B0073 MOD3 101 space
020 0820B0074 MOD4 101 5
but when i am adding it with respect to plant, material, storage location and movement type the o/p i am getting is like below
Plant Material Number Storage Loc Movement Type Avg Days
019 0820B0073 MOD3 101 0
020 0820B0074 MOD4 101 5
becasue addition of 5 spaces ( Avg Days )of plant 019 is coming as ZERO --> 0
so Guru what logic i should use to get the proper o/p,..I have Used Following logic to perform summation with respect to plant, material , storage loc and movement type.
CLEAR: wa_mkpf_mseg, w_werks, w_matnr, w_lgort, w_bwart.
LOOP AT t_mkpf_mseg INTO wa_mkpf_mseg.
IF wa_mkpf_mseg-werks EQ w_werks AND wa_mkpf_mseg-matnr EQ w_matnr AND wa_mkpf_mseg-lgort EQ w_lgort AND wa_mkpf_mseg-bwart EQ w_bwart.
CLEAR: wa_p_coi.
READ TABLE t_p_coi INTO wa_p_coi WITH KEY werks = wa_mkpf_mseg-werks matnr = wa_mkpf_mseg-matnr lgort = wa_mkpf_mseg-lgort bwart = wa_mkpf_mseg-bwart.
IF sy-subrc = 0.
wa_p_coi-Avg Days = wa_p_coi-Avg Days + wa_mkpf_mseg-Avg Days.
MODIFY t_p_coi FROM wa_p_coi TRANSPORTING Avg Days .
CLEAR: wa_p_coi, wa_p_coi.
endif.
ELSE.
wa_p_coi-werks = wa_mkpf_mseg-werks.
wa_p_coi-matnr = wa_mkpf_mseg-matnr.
wa_p_coi-bwart = wa_mkpf_mseg-bwart.
wa_p_coi-lgort = wa_mkpf_mseg-lgort.
wa_p_coi-Avg Days = wa_mkpf_mseg-Avg Days .
APPEND wa_p_coi TO t_p_coi.
CLEAR: wa_p_coi.
ENDIF.
w_werks = wa_mkpf_mseg-werks.
w_matnr = wa_mkpf_mseg-matnr.
w_lgort = wa_mkpf_mseg-lgort.
w_bwart = wa_mkpf_mseg-bwart.
CLEAR: wa_mkpf_mseg.
ENDLOOP.The soln what i found after working out
CLEAR: wa_mkpf_mseg, w_werks, w_matnr, w_lgort, w_bwart.
LOOP AT t_mkpf_mseg INTO wa_mkpf_mseg.
IF wa_mkpf_mseg-werks EQ w_werks AND wa_mkpf_mseg-matnr EQ w_matnr AND wa_mkpf_mseg-lgort EQ w_lgort AND wa_mkpf_mseg-bwart EQ w_bwart.
CLEAR: wa_p_coi.
READ TABLE t_p_coi INTO wa_p_coi WITH KEY werks = wa_mkpf_mseg-werks matnr = wa_mkpf_mseg-matnr lgort = wa_mkpf_mseg-lgort bwart = wa_mkpf_mseg-bwart.
IF sy-subrc = 0.
if wa_p_coi-Avg Days = ' ' and wa_mkpf_mseg-Avg Days = ' '.
wa_p_coi-Avg Days = ' '.
ELSE
wa_p_coi-Avg Days = wa_p_coi-Avg Days + wa_mkpf_mseg-Avg Days.
Endif.
MODIFY t_p_coi FROM wa_p_coi TRANSPORTING Avg Days .
CLEAR: wa_p_coi, wa_p_coi.
endif.
ELSE.
wa_p_coi-werks = wa_mkpf_mseg-werks.
wa_p_coi-matnr = wa_mkpf_mseg-matnr.
wa_p_coi-bwart = wa_mkpf_mseg-bwart.
wa_p_coi-lgort = wa_mkpf_mseg-lgort.
wa_p_coi-Avg Days = wa_mkpf_mseg-Avg Days .
APPEND wa_p_coi TO t_p_coi.
CLEAR: wa_p_coi.
ENDIF.
w_werks = wa_mkpf_mseg-werks.
w_matnr = wa_mkpf_mseg-matnr.
w_lgort = wa_mkpf_mseg-lgort.
w_bwart = wa_mkpf_mseg-bwart.
CLEAR: wa_mkpf_mseg.
ENDLOOP. -
Regarding Internal table logic
Hi,
I have my internal table as follows:
DATA: BEGIN OF I_DATA OCCURS 0,
prgname TYPE SYST-REPID,
matnr TYPE mara-matnr,
berid TYPE mdma-berid,
END OF I_DATA.
Data that fills into can be as follows:
Ex:
PROGRAM1,1000,MRP1
PROGRAM1,1000,MRP1
PROGRAM1,2000,MRP1
PROGRAM2,1000,MRP1
PROGRAM2,1000,MRP1
PROGRAM2,2000,MRP1
PROGRAM3,1000,MRP1
PROGRAM3,1000,MRP1
PROGRAM3,2000,MRP1
It can any order in above way.
Then i will sort the above data as follows:
SORT I_DATA BY prgname matnr berid.
Now here my issue is:
DATA: t_objtxt LIKE solisti1 OCCURS 0 WITH HEADER LINE.
I need to push the above internal table data into T_OBJTXT internal table as follows:
It should first Display program Name as Program Name: Program3, Then column heading MATNR, BERID below it and data of that program[1st] below them till all the 1st program's data finished. Whenever MATNR value changes in this program list i need to print an ***** like line. TO indicate all the materials printed.
When 2nd program comes again i have to write Program Name: Program2, Then column heading MATNR, BERID below it and data of that program[1st] below them till all the 1st program's data finished. Whenever MATNR value changes in this program list i need to print an ***** like line. TO indicate all the materials printed.
When 3nd program comes again i have to write Program Name: Program3, Then column heading MATNR, BERID below it and data of that program[1st] below them till all the 1st program's data finished. Whenever MATNR value changes in this program list i need to print an ***** like line. TO indicate all the materials printed.
Etc. Same process we need to follow.
The final out put should be as below:
PROGRAM NAME : PROGRAM1
MATNR, BERID
1000,MRP!
1000,MRP1
2000,MRP1
PROGRAM NAME : PROGRAM2
MATNR, BERID
1000,MRP!
1000,MRP1
2000,MRP1
PROGRAM NAME : PROGRAM3
MATNR, BERID
1000,MRP!
1000,MRP1
2000,MRP1
Like wise o/p need to be send to I_OBJTXT and to email.
<b>The logic i have written is as follows:</b>
LOOP AT I__DATA.
AT NEW PRGNAME.
MOVE '*****************************************' TO t_objtxt-line.
APPEND t_objtxt.
CLEAR t_objtxt.
CONCATENATE t_objtxt-line 'PROGRAM NAME : '
I_DATA-PRGNAME
INTO t_objtxt-line.
APPEND t_objtxt.
CLEAR t_objtxt.
MOVE '*****************************************' TO t_objtxt-line.
APPEND t_objtxt.
CLEAR t_objtxt.
CONCATENATE TEXT-024 " Material
TEXT-025 " MRP
INTO t_objtxt-line
SEPARATED BY C_COMMA.
APPEND t_objtxt.
CLEAR t_objtxt.
MOVE '-----------------------------------------' TO t_objtxt-line.
CONCATENATE t_objtxt-line '------------------' INTO t_objtxt-line.
APPEND t_objtxt.
CLEAR t_objtxt.
ENDAT.
* MOVE '' TO t_objtxt-line.
* APPEND t_objtxt.
* CLEAR t_objtxt.
CONCATENATE I_DATA-MATNR
I_DATA-BERID
INTO t_objtxt-line
SEPARATED BY C_COMMA.
APPEND t_objtxt.
CLEAR t_objtxt.
AT END OF MATNR.
MOVE '' TO t_objtxt-line.
APPEND t_objtxt.
CLEAR t_objtxt.
MOVE '*****************************************' TO t_objtxt-line.
CONCATENATE t_objtxt-line '******************' INTO t_objtxt-line.
CONCATENATE t_objtxt-line '******************' INTO t_objtxt-line.
APPEND t_objtxt.
CLEAR t_objtxt.
ENDAT.
ENDLOOP.
The above logic is not working correctly.
Can anybody give me correct logic for the same.
Thanks in advance.
Thanks,
Deep.Can you paste the total code.
santhosh -
Logic issue with Internal Table
Hi All,
I have an internal table with following structure.
Name of Internal table: ITAB
Fields: userid login date number
Values: abc 01012008
abc 02012008
abc 02012008
abc 03012008
Now i should store the value for the field itab-number, based on the ita-logindate.
If the field logindate is having same date for 2 times (for the user 'abc'),
the field itab-number should have the value as '2' .
Basically i want to display a report to show how many times a user has logged into SAP system for a given date.......
How to incorporate this logic?
Regards
PavanHi,
Use the below logic.
data: begin of itab1 occurs 0,
uid like sy-uname,
date like sy-datum,
end of itab1.
data: begin of itab2 occurs 0,
uid like sy-uname,
date like sy-datum,
count type i,
end of itab2.
data v_count type i.
start-of-selection.
itab1-uid = 'abc'.
itab1-date = '20080101'.
append itab1.
itab1-uid = 'abc'.
itab1-date = '20080102'.
append itab1.
itab1-uid = 'abc'.
itab1-date = '20080102'.
append itab1.
itab1-uid = 'abc'.
itab1-date = '20080103'.
append itab1.
itab1-uid = 'abc'.
itab1-date = '20080104'.
append itab1.
sort itab1 by uid date.
loop at itab1.
v_count = v_count + 1.
at end of date.
itab2-uid = itab1-uid.
itab2-date = itab1-date.
itab2-count = v_count.
append itab2.
clear v_count.
endat.
endloop. -
AT END OF Issue in internal tables
Hi all,
My requirement is I have to sum all the VBRP-NETWR and VBRP-WAVWR Fields and move it to one table.
example;
AT END OF pernr.
SUM.
here I have to move the total value of VBRP-NETWR and *VBRP-WAVWR values to internal table fields (i.e *tab_item-netwr & tab_item-wavwr, how can we do this
ENDAT.
Please help me.
Thanks & Regards,
Sivaram KandulaHi,
sort tab_item by pernr.
loop at tab_item.
v_total_netwr = v_total_netwr + tab_item-netwr.
v_total_wavwr = v_total_wavwr + tab_item-wavwr)
At end of pernr.
move 'Y; to v_flg.
endat.
if v_flg eq 'Y'.
move v_total_netwr to another internal table and append
move v_total_wavwr to another internal table and append
clear: v_flg. clear : v_total_netwr, v_total_wavwr.
endif.
endloop.
Thanks
aRs -
Hi All,
I have an internal table as follows.
Now if the KUNNR, PRCTR and VERNA field are similar, i have to sum up the QTY columns accordingly.
I mean to say, in this case, the rows 1, 2 and 3 have same kunnr, prctr and verna fields. Henc ei should sum up the corresponding columns (qty1, qty2, qty3 and SUM) and make it as one row.
kunnr | prctr | verna | qty1 | qty2 | qty3 | sum
11 | 100 | Raj | 10.0 | 5.0 | 0.0 | 15.0
11 | 100 | Raj | 8.0 | 1.0 | 2.0 | 11.0
11 | 100 | Raj | 0.0 | 0.0 | 6.5 | 6.5
12 | 200 | Ram | 2.0 | 0.0 | 0.0 | 2.0
How to carry out this calculation....???
Regards
PavanHi Friend,
Use the Control Break Statement for this, Go through the following steps
1. Sort the Internal Table
2. Loop the Internal Table
3. Use the Control Break Statement
4. Sum
5. Write Statement
6. Endloop.
Ex.
sort itab.
loop at itab.
at end of kunnr.
sum.
write: 'mara-kunnr'.
endat.
endloop.
Hope the answer of your question.
Regards,
Md Ziauddin.
Edited by: MD ZIAUDDIN on Dec 31, 2008 7:40 PM -
Hi Experts,
I Have An issue while Appending into Internal table.
This is an outbound interface in which I have 7 different types of records. I am appending all the work area to an internal table with size 500 char. the problem is that the last field is blank in some records the spaces are trucated. I need those space at the end as that file will be encrypted and send.
Thanks in advance.
VijayHi Madhan,
Try below tricky code to get spaces.
DATA: BEGIN OF t_space OCCURS 0, " Data table
name(10) TYPE c,
dept(10) TYPE c,
last_fld(480) TYPE c, " Last field in data table, which you have to check
END OF t_space,
wa_space LIKE LINE OF t_space.
DATA: str_space TYPE string.
DATA: BEGIN OF t_final OCCURS 0, " Final table
text(500) TYPE c, " Single field with length 500 characters
END OF t_final,
wa_final LIKE LINE OF t_final.
"Below is tricky way to get ASCII value for space.
" Press ALT key and hold it and now press 255 in Numeric Keypad and now release ALT key.
"This is ASCII value for space
CONSTANTS: ascii_space VALUE ' '. " Give this space as mentioned in above line
wa_space-name = 'A'. wa_space-dept = 'IT'.
APPEND wa_space TO t_space.
wa_space-name = 'B'. wa_space-dept = 'CSE'.
APPEND wa_space TO t_space.
wa_space-name = 'C'. wa_space-dept = 'EEE'.
APPEND wa_space TO t_space.
wa_space-name = 'D'. wa_space-dept = 'ECE'.
APPEND wa_space TO t_space.
IF NOT t_space[] IS INITIAL.
DO 480 TIMES. " 480 times because it is length of the last_fld(480) in data table. Change it according to length of your last field
CONCATENATE str_space ascii_space INTO str_space.
ENDDO.
ENDIF.
LOOP AT t_space INTO wa_space.
CONCATENATE wa_space-name wa_space-dept INTO wa_final. "Concatenate all data fields into final workarea except final field
IF wa_space-last_fld IS INITIAL. " Check whether final field is empty
CONCATENATE wa_final str_space INTO wa_final. " Concatenate spaces at end of final work area
ENDIF.
APPEND wa_final TO t_final. " Append to Final table
ENDLOOP.
Hope you understand friend.
Maybe you are looking for
-
Script : how to change the Field name in standard program(ZM_MEDRUCK)
Hi Experts, I am working with SAP SCRIPT. i need to change the Field Name that is PO NO to Document No & PO DATE to Document Date. These are assigned in data declaration as gv_name and gv_date. Can anyone help me to change this Fields. Regards, Vijay
-
How to allow the user to upload a file from their desktop to MII Server?
Hi, Is there a way for the user to specify a file on their local computer to upload to the MII server for processing? We have a method that works for uploading from a shared network drive, but now the need/desire is to allow the user to upload a fil
-
Keep dropping wifi when waking from sleep
Please can anyone help I have a sky wifi box and when I wake up computer it does not seem to want to connect, it searches for a while and sometimes it finds the connection, but at other times I have to restart iMac Graham
-
Appraisal process. addiing a custom button and methods in HAP_MAIN_DOCUMENT
Hi, I want to add one button in VW_BODY_VIEW of component HAP_MAIN_DOCUMENT. Is it possible in configuration level or I have to use enhancement points? and the smae way, I have to create one more view in this component. Just want ti confirm whether
-
Unable to Collect "exclusive beneft"
Hello everyone, I'll get straight to the point. Inside of photoshop under HELP, whenever I click on complete/update adobe id.... it takes me to a page proclaiming that if I complete my a already complete adobe id I will recieve an exclusive benefit,