‎2005 Jul 06 10:19 PM
Hi people,
I am trying to work with internal tables.
I have three tables:
DATA: itab TYPE bsid OCCURS 0 WITH HEADER LINE.
DATA: ktab TYPE kna1 OCCURS 0 WITH HEADER LINE.
DATA:BEGIN OF atab OCCURS 0,
kunnr LIKE bsid-kunnr,
no LIKE aging-no,
dmbtr LIKE bsid-dmbtr,
name1 LIKE kna1-name1,
stras LIKE kna1-stras,
ort01 LIKE kna1-ort01,
regio LIKE kna1-regio,
pstlz LIKE kna1-pstlz,
land1 LIKE kna1-land1,
END OF atab.
DATA: BEGIN OF ftab OCCURS 100,
kunnr LIKE bsid-kunnr,
name1 LIKE kna1-name1,
stras LIKE kna1-stras,
ort01 LIKE kna1-ort01,
regio LIKE kna1-regio,
pstlz LIKE kna1-pstlz,
current LIKE bsid-dmbtr,
amtunder_30 LIKE bsid-dmbtr,
amtunder_60 LIKE bsid-dmbtr,
amtunder_90 LIKE bsid-dmbtr,
over_90 LIKE bsid-dmbtr,
END OF ftab.
Now I have to write out the data into my FTAB from both ktab and atab.
all the customers have to be written but in atab the amount that are getting calculated have to be written also. Now for the entries coming from ATAB table, I am still getting values from the ktab table. Also, the name, stras, etc fields in the ATAB table are taking in the last entry from the KTAB table.
Can anybody help?
Thanks,
AM
‎2005 Jul 06 10:24 PM
Can you share the code you are using to merge the internal tables. This is help us undetstand the problem.
‎2005 Jul 07 2:42 AM
Here is the code:
TABLES: BSID,
KNB1,
KNKK,
KNA1.
DATA : BEGIN OF aging OCCURS 5,
no(1),
from(3),
to(5),
END OF aging.
DATA: itab TYPE bsid OCCURS 0 WITH HEADER LINE.
DATA: ktab TYPE kna1 OCCURS 0 WITH HEADER LINE.
DATA: BEGIN OF ctab OCCURS 0,
kunnr LIKE kna1-kunnr,
name1 LIKE kna1-name1,
stras LIKE kna1-stras,
ort01 LIKE kna1-ort01,
regio LIKE kna1-regio,
pstlz LIKE kna1-pstlz,
land1 LIKE kna1-land1,
END OF ctab.
DATA:BEGIN OF atab OCCURS 0,
kunnr LIKE bsid-kunnr,
no LIKE aging-no,
dmbtr LIKE bsid-dmbtr,
name1 LIKE kna1-name1,
stras LIKE kna1-stras,
ort01 LIKE kna1-ort01,
regio LIKE kna1-regio,
pstlz LIKE kna1-pstlz,
land1 LIKE kna1-land1,
END OF atab.
DATA: BEGIN OF ftab OCCURS 100,
kunnr LIKE bsid-kunnr,
name1 LIKE kna1-name1,
stras LIKE kna1-stras,
ort01 LIKE kna1-ort01,
regio LIKE kna1-regio,
pstlz LIKE kna1-pstlz,
current LIKE bsid-dmbtr,
amtunder_30 LIKE bsid-dmbtr,
amtunder_60 LIKE bsid-dmbtr,
amtunder_90 LIKE bsid-dmbtr,
over_90 LIKE bsid-dmbtr,
END OF ftab.
DATA: current LIKE bsid-dmbtr,
amtunder_30 LIKE bsid-dmbtr,
amtunder_60 LIKE bsid-dmbtr,
amtunder_90 LIKE bsid-dmbtr,
over_90 LIKE bsid-dmbtr.
DATA difday TYPE sy-dbcnt.
*sel-screen
PARAMETERS currdate LIKE sy-datum DEFAULT sy-datum.
DATA: date LIKE bsid-zfbdt,
zterm LIKE knb1-zterm,
crblb LIKE knkk-crblb.
DATA: l_kunnr LIKE kna1-kunnr.
START-OF-SELECTION.
* PERFORM GET-DATA.
*abbreviation !
APPEND '100130' TO aging.
APPEND '203160' TO aging.
APPEND '306190' TO aging.
APPEND '4091120' TO aging.
APPEND '51219999' TO aging.
SELECT * FROM kna1 INTO TABLE ktab WHERE erdat le currdate.
SELECT kunnr INTO l_kunnr FROM kna1.
ENDSELECT.
LOOP AT ktab.
*select data
SELECT * FROM bsid INTO TABLE itab
WHERE kunnr = ktab-kunnr and budat le currdate.
IF l_kunnr NE itab-kunnr.
MOVE ktab-kunnr TO ftab-kunnr.
MOVE ktab-name1 TO ftab-name1.
MOVE ktab-stras TO ftab-stras.
APPEND ftab.
ENDIF.
*migration
LOOP AT itab.
*correct sign
IF itab-shkzg = 'H'.
itab-dmbtr = itab-dmbtr * -1.
ENDIF.
IF itab-blart = 'AB'.
IF itab-rebzg NE SPACE.
SELECT zfbdt INTO date FROM bsid WHERE bsid~belnr =
itab-rebzg.
MOVE date TO itab-zfbdt.
ENDSELECT.
ENDIF.
ENDIF.
MOVE-CORRESPONDING itab TO atab.
IF l_kunnr EQ itab-kunnr.
MOVE ktab-name1 TO atab-name1.
MOVE ktab-stras TO atab-stras.
APPEND atab.
ENDIF.
*assigning age of invoices
difday = currdate - itab-zfbdt.
LOOP AT aging WHERE from LE difday
AND to GE difday.
ENDLOOP.
IF sy-subrc = 0.
MOVE aging-no TO atab-no.
ELSE.
*error -> check customizing of aging / bldat of invoice
MESSAGE s001(00) WITH 'cannot assign' .
ENDIF.
COLLECT atab.
ENDLOOP.
ENDLOOP.
CLEAR atab.
SORT atab.
LOOP AT atab.
IF atab-no = 1.
MOVE atab-dmbtr TO current.
ELSEIF atab-no = 2.
MOVE atab-dmbtr TO amtunder_30.
ELSEIF atab-no = 3.
MOVE atab-dmbtr TO amtunder_60.
ELSEIF atab-no = 4.
MOVE atab-dmbtr TO amtunder_90.
ELSE.
MOVE atab-dmbtr TO over_90.
ENDIF.
AT END OF kunnr.
MOVE atab-kunnr TO ftab-kunnr.
MOVE current TO ftab-current.
MOVE amtunder_30 TO ftab-amtunder_30.
MOVE amtunder_60 TO ftab-amtunder_60.
MOVE amtunder_90 TO ftab-amtunder_90.
MOVE over_90 TO ftab-over_90.
APPEND ftab.
ENDAT.
ENDLOOP.
SORT ftab.
LOOP AT ftab.
WRITE: / ftab-kunnr, ftab-name1, ftab-stras,
ftab-current,
ftab-amtunder_30, ftab-amtunder_60, ftab-amtunder_90,
ftab-over_90.
ENDLOOP.Thanks,
AM
‎2005 Jul 07 11:14 PM
Hey guys,
I solved this problem on my own.
Thanks for any help that anybody has provided.
Regards,
AM