‎2008 Jun 04 6:06 AM
hai,
I have two internal tables i want to join them.
suppose itab1 with fields material & product_hierarchy. and another one is itab2 with fields product_hierarchy, matkl and so 0n.
now i want join them display into alv grid .
please message .
thanks u
‎2008 Jun 04 4:01 PM
Most efficient method assuming itab2 has much fewer entries than itab1.
sort itab2 by prodh.
loop at itab1.
clear itab2.
read table itab2 with key prodh = itab1-prodh using binary search.
* if sy-subrc eq 0. " Add this line if you want an inner join
itab3-matnr = itab1-matnr.
itab3-prodh = itab1-prodh.
itab3-matkl = itab3-matkl.
" etc.
append itab3.
* endif. " For inner join
endloop.
Use itab3 in your ALV.
‎2008 Jun 04 6:09 AM
Take a help with this code.
sort itab1 itab2 by product_hierarchy.
loop at itab1.
read table itab2 with key product_hierarchy = itab1-product_hierarchy.
if sy-subrc = 0.
join
endif.
endloop.
Amit.
‎2008 Jun 04 6:10 AM
Hi,
Use LOOP and READ TABLE statements to acheive your functionality.
Shruthi
‎2008 Jun 04 6:10 AM
hi,
say u have an internal table itab1 and itab2. itab3 has all fields that u want to display using alv.
loop at itab1.
read table itab2 with key field = itab1-field.
if sy-subrc = 0.
itab3 ---> populate itab3 here
endif.
endloop.
read will return only one record. if u have more than 1 mathcing record use LOOP instead of READ.
regards,
madhu
‎2008 Jun 04 7:00 AM
hiee....
you can use nested loop.
loop at itab1.
loop at itab2 where field1 = itab1-field1.
endloop.
endloop.
aur read is the best option.
loop at itab1.
read table itab2 with key field1 = itab1-field1.
endloop.
each record itab1 will be checked against record of itab2 for field1.you can try this.
‎2008 Jun 04 12:10 PM
Hi,
As mentioned you can do this as follows :
Loop at itab1.
read table itab2 with key product_hirarchy = itab1-product-hirarchy.
if sy-subrc is initial.
move-corresponding itab1 to itab3.
move-corresponding itab2 to itab3.
append itab3.
endif.
clear : itab1, itab2.
endif.
endloop.
itab3 is a concolidated table of itab 1 and itab2.
Hope this helps!!!
Regards,
Lalit Kabra
PS : reward if useful!!!
‎2008 Jun 04 12:56 PM
‎2008 Jun 04 1:38 PM
Hi,
In this case you can do one thing decalre a structure where you can have keep the fields tht u want to join use this code hope it helps you are gives u an idea...
Data: Begin of ITAB occurs 0,
ID like ZPER-ID,
NAME like ZPER-NAME,
CLASS like ZOFF-CLASS,
SPORTS like ZSPORTS-SPORTS,
END of ITAB.
select AID ANAME BCLASS FROM ZPER AS A INNER JOIN ZOFF AS B ON AID = B-ID INNER JOIN ZSPORTS AS C ON AID = CID INTO TABLE ITAB.
WHERE A~AGE > 21 " IF YOU ARE HAVING ANY CONDITION ELSE IGNORE THIS LINE"
LOOP AT ITAB.
WRITE:/ ITAB.
ENDLOOP.
Here i have joined 3 internal tables check it out any issue revery me back.
thks
‎2008 Jun 04 4:01 PM
Most efficient method assuming itab2 has much fewer entries than itab1.
sort itab2 by prodh.
loop at itab1.
clear itab2.
read table itab2 with key prodh = itab1-prodh using binary search.
* if sy-subrc eq 0. " Add this line if you want an inner join
itab3-matnr = itab1-matnr.
itab3-prodh = itab1-prodh.
itab3-matkl = itab3-matkl.
" etc.
append itab3.
* endif. " For inner join
endloop.
Use itab3 in your ALV.
‎2008 Jun 05 10:13 AM
hai ,
prevoius answers not getting.
so i am clear givig the program.
<<<<<<<<<<<<<<<<<<<<<<<<<<
TABLES: MARA.
TYPE-POOLS : SLIS.
TYPES : BEGIN OF TY,
MATNR TYPE MARA-MATNR,
PRDHA TYPE MARA-PRDHA,
END OF TY.
DATA : WA TYPE TY,
ITAB TYPE TABLE OF TY.
SELECT-OPTIONS : P_MATNR FOR MARA-MATNR.
SELECT MATNR PRDHA FROM MARA INTO TABLE ITAB WHERE MATNR IN P_MATNR.
DATA : WA_INFO TYPE BAPIMAT_PRODH,
ITAB_INFO TYPE TABLE OF BAPIMAT_PRODH.
LOOP AT ITAB INTO WA.
CALL FUNCTION 'BAPI_MATERIAL_GET_PRODUCTHIER'
EXPORTING
HIERARCHY_TYPE = 0
PRODUCT_HIERARCHY = WA-PRDHA
SALES_ORGANIZATION =
DISTRIBUTION_CHANNEL =
READ_REFERENCE = ' '
IMPORTING
RETURN =
TABLES
NODE_LIST = ITAB_INFO.
NODE_REFERENCE_LIST =
ENDLOOP.
DATA : WA_FIELDCAT TYPE SLIS_FIELDCAT_ALV,
GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.
PERFORM POPULATE.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_BYPASSING_BUFFER = ' '
I_BUFFER_ACTIVE = ' '
I_CALLBACK_PROGRAM = ' '
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = ' '
I_CALLBACK_TOP_OF_PAGE = ' '
I_CALLBACK_HTML_TOP_OF_PAGE = ' '
I_CALLBACK_HTML_END_OF_LIST = ' '
I_STRUCTURE_NAME =
I_BACKGROUND_ID = ' '
I_GRID_TITLE =
I_GRID_SETTINGS =
IS_LAYOUT =
IT_FIELDCAT = GT_FIELDCAT
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
IT_SORT =
IT_FILTER =
IS_SEL_HIDE =
I_DEFAULT = 'X'
I_SAVE = ' '
IS_VARIANT =
IT_EVENTS =
IT_EVENT_EXIT =
IS_PRINT =
IS_REPREP_ID =
I_SCREEN_START_COLUMN = 0
I_SCREEN_START_LINE = 0
I_SCREEN_END_COLUMN = 0
I_SCREEN_END_LINE = 0
I_HTML_HEIGHT_TOP = 0
I_HTML_HEIGHT_END = 0
IT_ALV_GRAPHICS =
IT_HYPERLINK =
IT_ADD_FIELDCAT =
IT_EXCEPT_QINFO =
IR_SALV_FULLSCREEN_ADAPTER =
IMPORTING
E_EXIT_CAUSED_BY_CALLER =
ES_EXIT_CAUSED_BY_USER =
TABLES
T_OUTTAB = ITAB_INFO.
FORM POPULATE .
WA_FIELDCAT-FIELDNAME = 'PROD_HIER'.
WA_FIELDCAT-TABNAME = 'ITAB_INFO'.
WA_FIELDCAT-REF_FIELDNAME = 'PROD_HIER'.
WA_FIELDCAT-reptext_ddic = 'PRODUCT HIERARCHY'.
wa_FIELDCAT-EMPHASIZE = 'C410'.
WA_FIELDCAT-key = '5'.
WA_FIELDCAT-OUTPUTLEN = '25'.
APPEND WA_FIELDCAT TO GT_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-FIELDNAME = 'PARENT_PROD_HIER'.
WA_FIELDCAT-TABNAME = 'ITAB_INFO'.
WA_FIELDCAT-REF_FIELDNAME = 'PARENT_PROD_HIER'.
WA_FIELDCAT-reptext_ddic = 'PARENT HIERARCHY'.
wa_FIELDCAT-EMPHASIZE = 'C410'.
WA_FIELDCAT-OUTPUTLEN = '25'.
WA_FIELDCAT-key = '5'.
APPEND WA_FIELDCAT TO GT_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-FIELDNAME = 'BROTHER_PROD_HIER'.
WA_FIELDCAT-TABNAME = 'ITAB_INFO'.
WA_FIELDCAT-REF_FIELDNAME = 'BROTHER_PROD_HIER'.
WA_FIELDCAT-reptext_ddic = 'BROTHER_PROD_HIER'.
WA_FIELDCAT-OUTPUTLEN = '25'.
wa_FIELDCAT-EMPHASIZE = 'C410'.
WA_FIELDCAT-key = '5'.
APPEND WA_FIELDCAT TO GT_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-FIELDNAME = 'NODE_LEVEL'.
WA_FIELDCAT-TABNAME = 'ITAB_INFO'.
WA_FIELDCAT-REF_FIELDNAME = 'NODE_LEVEL'.
WA_FIELDCAT-reptext_ddic = 'NODE LEVEL'.
wa_FIELDCAT-EMPHASIZE = 'C410'.
WA_FIELDCAT-key = '5'.
WA_FIELDCAT-OUTPUTLEN = '2O'.
APPEND WA_FIELDCAT TO GT_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-FIELDNAME = 'LANGU'.
WA_FIELDCAT-TABNAME = 'ITAB_INFO'.
WA_FIELDCAT-REF_FIELDNAME = 'LANGU'.
WA_FIELDCAT-reptext_ddic = 'LANGU'.
wa_FIELDCAT-EMPHASIZE = 'C410'.
WA_FIELDCAT-key = '5'.
WA_FIELDCAT-OUTPUTLEN = '10'.
APPEND WA_FIELDCAT TO GT_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-FIELDNAME = 'LANGU_ISO'.
WA_FIELDCAT-TABNAME = 'ITAB_INFO'.
WA_FIELDCAT-REF_FIELDNAME = 'LANGU_ISO'.
WA_FIELDCAT-reptext_ddic = 'LANGU_ISO'.
wa_FIELDCAT-EMPHASIZE = 'C410'.
WA_FIELDCAT-key = '5'.
WA_FIELDCAT-OUTPUTLEN = '20'.
APPEND WA_FIELDCAT TO GT_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-FIELDNAME = 'NODE_TEXT'.
WA_FIELDCAT-TABNAME = 'ITAB_INFO'.
WA_FIELDCAT-REF_FIELDNAME = 'NODE_TEXT'.
WA_FIELDCAT-reptext_ddic = 'NODE_TEXT'.
wa_FIELDCAT-EMPHASIZE = 'C410'.
WA_FIELDCAT-key = '5'.
WA_FIELDCAT-OUTPUTLEN = '20'.
APPEND WA_FIELDCAT TO GT_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-FIELDNAME = 'TEXT'.
WA_FIELDCAT-TABNAME = 'ITAB_INFO'.
WA_FIELDCAT-REF_FIELDNAME = 'TEXT'.
WA_FIELDCAT-reptext_ddic = 'TEXT'.
wa_FIELDCAT-EMPHASIZE = 'C410'.
WA_FIELDCAT-key = '5'.
WA_FIELDCAT-OUTPUTLEN = '25'.
APPEND WA_FIELDCAT TO GT_FIELDCAT.
CLEAR WA_FIELDCAT.
ENDFORM. " POPULATE
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
in this we want o/p matnr, prdha, product_hierarchy ..... etc.
thanks u.
‎2013 Mar 05 5:32 AM
HI Gert ,
Nice example,i have the same situtation here,but here i have to join three tables.,let say
itab1,itab2 and itab3. first i need to join itab1 and itab2 and then left outer join to itab3.
consider itab1 as header table nd itab2 and itab3 are item tables.please give me the sample code .
thankq.
‎2020 Apr 24 9:38 AM
Great answer and form! I totally don't understand why people writing here don't use the "code" option like you ?! It's so simple and the code reads a lot better!
Regards Paweł