2008 Jul 01 10:20 AM
Hai Friends,
The following is my Selection Screen:
Material Number:
Date:
Cost Center:
When the user enters the input the first ALV should give the details of the materials and the second ALV should give the detail description of the first ALV. both should be in the single page.
Kindly answer to the question at the earliest.
thanks.
2008 Jul 01 10:32 AM
Hi,
The answer to your question is Block ALV.
Check these programs:
BALVBT01
BCALV_TEST_BLOCK_LIST
Sample code is given below.
Regards,
Wajid Hussain P
* * * *
REPORT z_block_alv.
************************************************************************
*PROGRAM... Z_BLOCK_ALV
*TITLE... Demo : Block ALV
*AUTHOR... Wajid, Zensar Technologies
*DATE WRITTEN 02/25/2008
*R/3 RELEASE
----
*COPIED FROM....
*
----
*PROGRAM TYPE... Executable
*DEV. CLASS... $TMP
*LOGICAL DB...
----
*SCREENS...
*GUl TITLE...
*GUl STATUS...
*TRANSACTIONS...
*USER EXITS...
----
*CHANGE HISTORY
*Date By Correction Number & Brief Description Release
*
************************************************************************
TABLES: ekko.
TYPE-POOLS : slis. " Purchasing Document Header
&----
*& Type Declarations
&----
TYPES : BEGIN OF t_ekpo,
matnr LIKE ekpo-matnr, "#EC SET extended check off
menge LIKE ekpo-menge, " Quantity
meins LIKE ekpo-meins, " UoM
ebeln LIKE ekpo-ebeln,
END OF t_ekpo,
BEGIN OF t_makt,
matnr LIKE makt-matnr, " Material
maktx LIKE makt-maktx, " Material Description
END OF t_makt,
BEGIN OF t_adrc,
name1 LIKE adrc-name1, " Name1
name2 LIKE adrc-name2, " Name2
city1 LIKE adrc-city1, " City1
city2 LIKE adrc-city2, " City2
END OF t_adrc,
BEGIN OF t_lfa1,
lifnr LIKE lfa1-lifnr, " Vendor
adrnr LIKE lfa1-adrnr, " Address
END OF t_lfa1,
BEGIN OF t_ekko,
ebeln LIKE ekko-ebeln,
lifnr LIKE ekko-lifnr, " Vendor's account number
END OF t_ekko.
&----
*& Internal Tables & Structures
&----
DATA : it_ekpo TYPE TABLE OF t_ekpo WITH HEADER LINE,
it_makt TYPE TABLE OF t_makt WITH HEADER LINE,
it_adrc TYPE TABLE OF t_adrc WITH HEADER LINE,
it_lfa1 TYPE TABLE OF t_lfa1 WITH HEADER LINE,
it_ekko TYPE TABLE OF t_ekko WITH HEADER LINE.
DATA : BEGIN OF it_list1 OCCURS 0,
EBELN LIKE EKKO-EBELN,
matnr LIKE ekpo-matnr, " Material
meins LIKE ekpo-meins, " UoM
menge LIKE ekpo-menge, " Quantity
maktx LIKE makt-maktx, " Material Description
END OF it_list1,
BEGIN OF it_list2 OCCURS 0,
lifnr LIKE lfa1-lifnr,
adrnr LIKE adrc-addrnumber,
name1 LIKE adrc-name1,
name2 LIKE adrc-name2,
city1 LIKE adrc-city1,
city2 LIKE adrc-city2,
END OF it_list2.
DATA : it_flcat1 TYPE TABLE OF slis_fieldcat_alv,
it_flcat2 LIKE it_flcat1,
it_events1 TYPE slis_t_event,
it_events2 LIKE it_events1,
i_layout1 TYPE slis_layout_alv,
i_layout2 LIKE i_layout1.
DATA : i_print TYPE slis_print_alv.
&----
*& Selection Screen
&----
*SELECT-OPTIONS : S_EBELN FOR EKKO-EBELN. " Purchasing Document Number
PARAMETERS : p_ebeln TYPE ekko-ebeln OBLIGATORY. " Purchasing Document Number
&----
*& Initialization
&----
i_print-reserve_lines = 1.
&----
*& Start-of-Selection
&----
PERFORM select_form.
PERFORM build_flcat.
PERFORM display_block.
&----
*& Form SELECT_FORM
&----
text
----
--> p1 text
<-- p2 text
----
FORM select_form .
FIRST LIST
Get the Material Data for given Purchasing Document
SELECT matnr
menge
meins
ebeln
FROM ekpo
INTO TABLE it_ekpo
WHERE ebeln = p_ebeln.
IF NOT it_ekpo[] IS INITIAL.
Get Material Description for each Material
SELECT matnr
maktx
FROM makt
INTO TABLE it_makt
FOR ALL ENTRIES IN it_ekpo
WHERE matnr = it_ekpo-matnr.
ELSE.
MESSAGE 'No Materials found' TYPE 'I'.
STOP.
ENDIF.
Populate internal table IT_LIST1
IF NOT it_ekpo[] IS INITIAL.
LOOP AT it_ekpo.
MOVE : it_ekpo-matnr TO it_list1-matnr,
it_ekpo-meins TO it_list1-meins,
it_ekpo-menge TO it_list1-menge.
READ TABLE it_makt WITH KEY matnr = it_ekpo-matnr.
IF sy-subrc EQ 0 .
MOVE : it_makt-maktx TO it_list1-maktx.
ENDIF.
APPEND it_list1.
ENDLOOP.
ENDIF.
SECOND LIST
Get the Vendor Number for given Purchase Order #
SELECT SINGLE ebeln
lifnr
FROM ekko
INTO (it_ekko-ebeln, it_ekko-lifnr)
WHERE ebeln = p_ebeln.
IF sy-subrc IS INITIAL.
Get Address of the Vendor
SELECT SINGLE adrnr
FROM lfa1
INTO it_lfa1-adrnr
WHERE lifnr = it_ekko-lifnr.
ELSE.
MESSAGE 'No Vendor Found' TYPE 'I'.
STOP.
ENDIF.
IF sy-subrc IS INITIAL.
Get Address Details of the Vendor
SELECT name1
name2
city1
city2
FROM adrc
INTO TABLE it_adrc
(IT_ADRC-NAME1, IT_ADRC-NAME2, IT_ADRC-CITY1, IT_ADRC-CITY2)
WHERE addrnumber = it_lfa1-adrnr.
ENDIF.
*LOOP AT IT_EKKO.
MOVE IT_EKKO-LIFNR TO IT_LIST2-LIFNR.
*ENDLOOP.
*
*LOOP AT IT_LFA1.
MOVE IT_LFA1-ADRNR TO IT_LIST2-ADRNR.
*ENDLOOP.
*
*LOOP AT IT_ADRC.
MOVE : IT_ADRC-NAME1 TO IT_LIST2-NAME1,
IT_ADRC-NAME2 tO IT_LIST2-NAME2,
IT_ADRC-CITY1 TO IT_LIST2-CITY1,
IT_ADRC-CITY2 TO IT_LIST2-CITY2.
*ENDLOOP.
ENDFORM. " SELECT_FORM
&----
*& Form DISPLAY_BLOCK
&----
text
----
--> p1 text
<-- p2 text
----
FORM display_block .
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_INIT'
EXPORTING
i_callback_program = sy-repid
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = ' '
IT_EXCLUDING =
.
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
EXPORTING
is_layout = i_layout1
it_fieldcat = it_flcat1[]
i_tabname = 'IT_LIST1'
it_events = it_events1[]
IT_SORT =
I_TEXT = ' '
TABLES
t_outtab = it_list1
EXCEPTIONS
program_error = 1
maximum_of_appends_reached = 2
OTHERS = 3
.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
EXPORTING
is_layout = i_layout2
it_fieldcat = it_flcat2[]
i_tabname = 'IT_ADRC'
it_events = it_events2[]
IT_SORT =
I_TEXT = ' '
TABLES
t_outtab = it_adrc[]
EXCEPTIONS
program_error = 1
maximum_of_appends_reached = 2
OTHERS = 3
.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
is_print = i_print
I_SCREEN_START_COLUMN = 0
I_SCREEN_START_LINE = 0
I_SCREEN_END_COLUMN = 0
I_SCREEN_END_LINE = 0
IMPORTING
E_EXIT_CAUSED_BY_CALLER =
ES_EXIT_CAUSED_BY_USER =
EXCEPTIONS
program_error = 1
OTHERS = 2
.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDFORM. " DISPLAY_BLOCK
&----
*& Form BUILD_FLCAT
&----
text
----
--> p1 text
<-- p2 text
----
FORM build_flcat .
DATA : wa_flcat1 LIKE LINE OF it_flcat1,
wa_flcat2 LIKE wa_flcat1.
&----
*& Fieldcatalog for List1
&----
CLEAR wa_flcat1.
wa_flcat1-col_pos = 1.
wa_flcat1-fieldname = 'MATNR'.
wa_flcat1-tabname = 'IT_LIST1'.
wa_flcat1-seltext_l = 'MATERIAL'.
APPEND wa_flcat1 TO it_flcat1.
CLEAR wa_flcat1.
wa_flcat1-col_pos = 4.
wa_flcat1-fieldname = 'MEINS'.
wa_flcat1-tabname = 'IT_LIST1'.
wa_flcat1-seltext_l = 'UOM'.
APPEND wa_flcat1 TO it_flcat1.
CLEAR wa_flcat1.
wa_flcat1-col_pos = 3.
wa_flcat1-fieldname = 'MENGE'.
wa_flcat1-tabname = 'IT_LIST1'.
wa_flcat1-seltext_l = 'QUANTITY'.
APPEND wa_flcat1 TO it_flcat1.
CLEAR wa_flcat1.
wa_flcat1-col_pos = 2.
wa_flcat1-fieldname = 'MAKTX'.
wa_flcat1-tabname = 'IT_LIST1'.
wa_flcat1-seltext_l = 'DESCRIPTION'.
APPEND wa_flcat1 TO it_flcat1.
&----
*& Fieldcatalog for List2
&----
CLEAR wa_flcat2.
wa_flcat2-col_pos = 1.
wa_flcat2-fieldname = 'LIFNR'.
wa_flcat2-tabname = 'IT_LIST2'.
wa_flcat2-seltext_l = 'VENDOR'.
APPEND wa_flcat2 TO it_flcat2.
CLEAR wa_flcat2.
wa_flcat2-col_pos = 2.
wa_flcat2-fieldname = 'ADRNR'.
wa_flcat2-tabname = 'IT_LIST2'.
wa_flcat2-seltext_l = 'ADDRESS '.
APPEND WA_FLCAT2 TO IT_FLCAT2.
CLEAR wa_flcat2.
wa_flcat2-col_pos = 3.
wa_flcat2-fieldname = 'NAME1'.
wa_flcat2-tabname = 'IT_LIST2'.
wa_flcat2-seltext_l = 'FIRST NAME '.
APPEND wa_flcat2 TO it_flcat2.
CLEAR wa_flcat2.
wa_flcat2-col_pos = 4.
wa_flcat2-fieldname = 'NAME2'.
wa_flcat2-tabname = 'IT_LIST2'.
wa_flcat2-seltext_l = 'LAST NAME '.
APPEND wa_flcat2 TO it_flcat2.
CLEAR wa_flcat2.
wa_flcat2-col_pos = 5.
wa_flcat2-fieldname = 'CITY1'.
wa_flcat2-tabname = 'IT_LIST2'.
wa_flcat2-seltext_l = 'CITY1 '.
APPEND wa_flcat2 TO it_flcat2.
CLEAR wa_flcat2.
wa_flcat2-col_pos = 6.
wa_flcat2-fieldname = 'CITY2'.
wa_flcat2-tabname = 'IT_LIST2'.
wa_flcat2-seltext_l = 'CITY2 '.
APPEND wa_flcat2 TO it_flcat2.
ENDFORM. " BUILD_FLCAT
Edited by: Wajid Hussain P on Jul 1, 2008 3:09 PM
Hi,
The answer to your question is Block ALV.
Check these programs:
BALVBT01
BCALV_TEST_BLOCK_LIST
Sample code is given below.
Regards,
Wajid Hussain P
* * * *
REPORT z_block_alv.
************************************************************************
*PROGRAM... Z_BLOCK_ALV
*TITLE... Demo : Block ALV
*AUTHOR... Wajid, Zensar Technologies
*DATE WRITTEN 02/25/2008
*R/3 RELEASE
----
*COPIED FROM....
*
----
*PROGRAM TYPE... Executable
*DEV. CLASS... $TMP
*LOGICAL DB...
----
*SCREENS...
*GUl TITLE...
*GUl STATUS...
*TRANSACTIONS...
*USER EXITS...
----
*CHANGE HISTORY
*Date By Correction Number & Brief Description Release
*
************************************************************************
TABLES: ekko.
TYPE-POOLS : slis. " Purchasing Document Header
&----
*& Type Declarations
&----
TYPES : BEGIN OF t_ekpo,
matnr LIKE ekpo-matnr, "#EC SET extended check off
menge LIKE ekpo-menge, " Quantity
meins LIKE ekpo-meins, " UoM
ebeln LIKE ekpo-ebeln,
END OF t_ekpo,
BEGIN OF t_makt,
matnr LIKE makt-matnr, " Material
maktx LIKE makt-maktx, " Material Description
END OF t_makt,
BEGIN OF t_adrc,
name1 LIKE adrc-name1, " Name1
name2 LIKE adrc-name2, " Name2
city1 LIKE adrc-city1, " City1
city2 LIKE adrc-city2, " City2
END OF t_adrc,
BEGIN OF t_lfa1,
lifnr LIKE lfa1-lifnr, " Vendor
adrnr LIKE lfa1-adrnr, " Address
END OF t_lfa1,
BEGIN OF t_ekko,
ebeln LIKE ekko-ebeln,
lifnr LIKE ekko-lifnr, " Vendor's account number
END OF t_ekko.
&----
*& Internal Tables & Structures
&----
DATA : it_ekpo TYPE TABLE OF t_ekpo WITH HEADER LINE,
it_makt TYPE TABLE OF t_makt WITH HEADER LINE,
it_adrc TYPE TABLE OF t_adrc WITH HEADER LINE,
it_lfa1 TYPE TABLE OF t_lfa1 WITH HEADER LINE,
it_ekko TYPE TABLE OF t_ekko WITH HEADER LINE.
DATA : BEGIN OF it_list1 OCCURS 0,
EBELN LIKE EKKO-EBELN,
matnr LIKE ekpo-matnr, " Material
meins LIKE ekpo-meins, " UoM
menge LIKE ekpo-menge, " Quantity
maktx LIKE makt-maktx, " Material Description
END OF it_list1,
BEGIN OF it_list2 OCCURS 0,
lifnr LIKE lfa1-lifnr,
adrnr LIKE adrc-addrnumber,
name1 LIKE adrc-name1,
name2 LIKE adrc-name2,
city1 LIKE adrc-city1,
city2 LIKE adrc-city2,
END OF it_list2.
DATA : it_flcat1 TYPE TABLE OF slis_fieldcat_alv,
it_flcat2 LIKE it_flcat1,
it_events1 TYPE slis_t_event,
it_events2 LIKE it_events1,
i_layout1 TYPE slis_layout_alv,
i_layout2 LIKE i_layout1.
DATA : i_print TYPE slis_print_alv.
&----
*& Selection Screen
&----
*SELECT-OPTIONS : S_EBELN FOR EKKO-EBELN. " Purchasing Document Number
PARAMETERS : p_ebeln TYPE ekko-ebeln OBLIGATORY. " Purchasing Document Number
&----
*& Initialization
&----
i_print-reserve_lines = 1.
&----
*& Start-of-Selection
&----
PERFORM select_form.
PERFORM build_flcat.
PERFORM display_block.
&----
*& Form SELECT_FORM
&----
text
----
--> p1 text
<-- p2 text
----
FORM select_form .
FIRST LIST
Get the Material Data for given Purchasing Document
SELECT matnr
menge
meins
ebeln
FROM ekpo
INTO TABLE it_ekpo
WHERE ebeln = p_ebeln.
IF NOT it_ekpo[] IS INITIAL.
Get Material Description for each Material
SELECT matnr
maktx
FROM makt
INTO TABLE it_makt
FOR ALL ENTRIES IN it_ekpo
WHERE matnr = it_ekpo-matnr.
ELSE.
MESSAGE 'No Materials found' TYPE 'I'.
STOP.
ENDIF.
Populate internal table IT_LIST1
IF NOT it_ekpo[] IS INITIAL.
LOOP AT it_ekpo.
MOVE : it_ekpo-matnr TO it_list1-matnr,
it_ekpo-meins TO it_list1-meins,
it_ekpo-menge TO it_list1-menge.
READ TABLE it_makt WITH KEY matnr = it_ekpo-matnr.
IF sy-subrc EQ 0 .
MOVE : it_makt-maktx TO it_list1-maktx.
ENDIF.
APPEND it_list1.
ENDLOOP.
ENDIF.
SECOND LIST
Get the Vendor Number for given Purchase Order #
SELECT SINGLE ebeln
lifnr
FROM ekko
INTO (it_ekko-ebeln, it_ekko-lifnr)
WHERE ebeln = p_ebeln.
IF sy-subrc IS INITIAL.
Get Address of the Vendor
SELECT SINGLE adrnr
FROM lfa1
INTO it_lfa1-adrnr
WHERE lifnr = it_ekko-lifnr.
ELSE.
MESSAGE 'No Vendor Found' TYPE 'I'.
STOP.
ENDIF.
IF sy-subrc IS INITIAL.
Get Address Details of the Vendor
SELECT name1
name2
city1
city2
FROM adrc
INTO TABLE it_adrc
(IT_ADRC-NAME1, IT_ADRC-NAME2, IT_ADRC-CITY1, IT_ADRC-CITY2)
WHERE addrnumber = it_lfa1-adrnr.
ENDIF.
*LOOP AT IT_EKKO.
MOVE IT_EKKO-LIFNR TO IT_LIST2-LIFNR.
*ENDLOOP.
*
*LOOP AT IT_LFA1.
MOVE IT_LFA1-ADRNR TO IT_LIST2-ADRNR.
*ENDLOOP.
*
*LOOP AT IT_ADRC.
MOVE : IT_ADRC-NAME1 TO IT_LIST2-NAME1,
IT_ADRC-NAME2 tO IT_LIST2-NAME2,
IT_ADRC-CITY1 TO IT_LIST2-CITY1,
IT_ADRC-CITY2 TO IT_LIST2-CITY2.
*ENDLOOP.
ENDFORM. " SELECT_FORM
&----
*& Form DISPLAY_BLOCK
&----
text
----
--> p1 text
<-- p2 text
----
FORM display_block .
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_INIT'
EXPORTING
i_callback_program = sy-repid
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = ' '
IT_EXCLUDING =
.
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
EXPORTING
is_layout = i_layout1
it_fieldcat = it_flcat1[]
i_tabname = 'IT_LIST1'
it_events = it_events1[]
IT_SORT =
I_TEXT = ' '
TABLES
t_outtab = it_list1
EXCEPTIONS
program_error = 1
maximum_of_appends_reached = 2
OTHERS = 3
.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
EXPORTING
is_layout = i_layout2
it_fieldcat = it_flcat2[]
i_tabname = 'IT_ADRC'
it_events = it_events2[]
IT_SORT =
I_TEXT = ' '
TABLES
t_outtab = it_adrc[]
EXCEPTIONS
program_error = 1
maximum_of_appends_reached = 2
OTHERS = 3
.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
is_print = i_print
I_SCREEN_START_COLUMN = 0
I_SCREEN_START_LINE = 0
I_SCREEN_END_COLUMN = 0
I_SCREEN_END_LINE = 0
IMPORTING
E_EXIT_CAUSED_BY_CALLER =
ES_EXIT_CAUSED_BY_USER =
EXCEPTIONS
program_error = 1
OTHERS = 2
.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDFORM. " DISPLAY_BLOCK
&----
*& Form BUILD_FLCAT
&----
text
----
--> p1 text
<-- p2 text
----
FORM build_flcat .
DATA : wa_flcat1 LIKE LINE OF it_flcat1,
wa_flcat2 LIKE wa_flcat1.
&----
*& Fieldcatalog for List1
&----
CLEAR wa_flcat1.
wa_flcat1-col_pos = 1.
wa_flcat1-fieldname = 'MATNR'.
wa_flcat1-tabname = 'IT_LIST1'.
wa_flcat1-seltext_l = 'MATERIAL'.
APPEND wa_flcat1 TO it_flcat1.
CLEAR wa_flcat1.
wa_flcat1-col_pos = 4.
wa_flcat1-fieldname = 'MEINS'.
wa_flcat1-tabname = 'IT_LIST1'.
wa_flcat1-seltext_l = 'UOM'.
APPEND wa_flcat1 TO it_flcat1.
CLEAR wa_flcat1.
wa_flcat1-col_pos = 3.
wa_flcat1-fieldname = 'MENGE'.
wa_flcat1-tabname = 'IT_LIST1'.
wa_flcat1-seltext_l = 'QUANTITY'.
APPEND wa_flcat1 TO it_flcat1.
CLEAR wa_flcat1.
wa_flcat1-col_pos = 2.
wa_flcat1-fieldname = 'MAKTX'.
wa_flcat1-tabname = 'IT_LIST1'.
wa_flcat1-seltext_l = 'DESCRIPTION'.
APPEND wa_flcat1 TO it_flcat1.
&----
*& Fieldcatalog for List2
&----
CLEAR wa_flcat2.
wa_flcat2-col_pos = 1.
wa_flcat2-fieldname = 'LIFNR'.
wa_flcat2-tabname = 'IT_LIST2'.
wa_flcat2-seltext_l = 'VENDOR'.
APPEND wa_flcat2 TO it_flcat2.
CLEAR wa_flcat2.
wa_flcat2-col_pos = 2.
wa_flcat2-fieldname = 'ADRNR'.
wa_flcat2-tabname = 'IT_LIST2'.
wa_flcat2-seltext_l = 'ADDRESS '.
APPEND WA_FLCAT2 TO IT_FLCAT2.
CLEAR wa_flcat2.
wa_flcat2-col_pos = 3.
wa_flcat2-fieldname = 'NAME1'.
wa_flcat2-tabname = 'IT_LIST2'.
wa_flcat2-seltext_l = 'FIRST NAME '.
APPEND wa_flcat2 TO it_flcat2.
CLEAR wa_flcat2.
wa_flcat2-col_pos = 4.
wa_flcat2-fieldname = 'NAME2'.
wa_flcat2-tabname = 'IT_LIST2'.
wa_flcat2-seltext_l = 'LAST NAME '.
APPEND wa_flcat2 TO it_flcat2.
CLEAR wa_flcat2.
wa_flcat2-col_pos = 5.
wa_flcat2-fieldname = 'CITY1'.
wa_flcat2-tabname = 'IT_LIST2'.
wa_flcat2-seltext_l = 'CITY1 '.
APPEND wa_flcat2 TO it_flcat2.
CLEAR wa_flcat2.
wa_flcat2-col_pos = 6.
wa_flcat2-fieldname = 'CITY2'.
wa_flcat2-tabname = 'IT_LIST2'.
wa_flcat2-seltext_l = 'CITY2 '.
APPEND wa_flcat2 TO it_flcat2.
ENDFORM. " BUILD_FLCAT
Edited by: Wajid Hussain P on Jul 1, 2008 3:09 PM
2008 Jul 01 10:32 AM
Hi,
The answer to your question is Block ALV.
Check these programs:
BALVBT01
BCALV_TEST_BLOCK_LIST
Sample code is given below.
Regards,
Wajid Hussain P
* * * *
REPORT z_block_alv.
************************************************************************
*PROGRAM... Z_BLOCK_ALV
*TITLE... Demo : Block ALV
*AUTHOR... Wajid, Zensar Technologies
*DATE WRITTEN 02/25/2008
*R/3 RELEASE
----
*COPIED FROM....
*
----
*PROGRAM TYPE... Executable
*DEV. CLASS... $TMP
*LOGICAL DB...
----
*SCREENS...
*GUl TITLE...
*GUl STATUS...
*TRANSACTIONS...
*USER EXITS...
----
*CHANGE HISTORY
*Date By Correction Number & Brief Description Release
*
************************************************************************
TABLES: ekko.
TYPE-POOLS : slis. " Purchasing Document Header
&----
*& Type Declarations
&----
TYPES : BEGIN OF t_ekpo,
matnr LIKE ekpo-matnr, "#EC SET extended check off
menge LIKE ekpo-menge, " Quantity
meins LIKE ekpo-meins, " UoM
ebeln LIKE ekpo-ebeln,
END OF t_ekpo,
BEGIN OF t_makt,
matnr LIKE makt-matnr, " Material
maktx LIKE makt-maktx, " Material Description
END OF t_makt,
BEGIN OF t_adrc,
name1 LIKE adrc-name1, " Name1
name2 LIKE adrc-name2, " Name2
city1 LIKE adrc-city1, " City1
city2 LIKE adrc-city2, " City2
END OF t_adrc,
BEGIN OF t_lfa1,
lifnr LIKE lfa1-lifnr, " Vendor
adrnr LIKE lfa1-adrnr, " Address
END OF t_lfa1,
BEGIN OF t_ekko,
ebeln LIKE ekko-ebeln,
lifnr LIKE ekko-lifnr, " Vendor's account number
END OF t_ekko.
&----
*& Internal Tables & Structures
&----
DATA : it_ekpo TYPE TABLE OF t_ekpo WITH HEADER LINE,
it_makt TYPE TABLE OF t_makt WITH HEADER LINE,
it_adrc TYPE TABLE OF t_adrc WITH HEADER LINE,
it_lfa1 TYPE TABLE OF t_lfa1 WITH HEADER LINE,
it_ekko TYPE TABLE OF t_ekko WITH HEADER LINE.
DATA : BEGIN OF it_list1 OCCURS 0,
EBELN LIKE EKKO-EBELN,
matnr LIKE ekpo-matnr, " Material
meins LIKE ekpo-meins, " UoM
menge LIKE ekpo-menge, " Quantity
maktx LIKE makt-maktx, " Material Description
END OF it_list1,
BEGIN OF it_list2 OCCURS 0,
lifnr LIKE lfa1-lifnr,
adrnr LIKE adrc-addrnumber,
name1 LIKE adrc-name1,
name2 LIKE adrc-name2,
city1 LIKE adrc-city1,
city2 LIKE adrc-city2,
END OF it_list2.
DATA : it_flcat1 TYPE TABLE OF slis_fieldcat_alv,
it_flcat2 LIKE it_flcat1,
it_events1 TYPE slis_t_event,
it_events2 LIKE it_events1,
i_layout1 TYPE slis_layout_alv,
i_layout2 LIKE i_layout1.
DATA : i_print TYPE slis_print_alv.
&----
*& Selection Screen
&----
*SELECT-OPTIONS : S_EBELN FOR EKKO-EBELN. " Purchasing Document Number
PARAMETERS : p_ebeln TYPE ekko-ebeln OBLIGATORY. " Purchasing Document Number
&----
*& Initialization
&----
i_print-reserve_lines = 1.
&----
*& Start-of-Selection
&----
PERFORM select_form.
PERFORM build_flcat.
PERFORM display_block.
&----
*& Form SELECT_FORM
&----
text
----
--> p1 text
<-- p2 text
----
FORM select_form .
FIRST LIST
Get the Material Data for given Purchasing Document
SELECT matnr
menge
meins
ebeln
FROM ekpo
INTO TABLE it_ekpo
WHERE ebeln = p_ebeln.
IF NOT it_ekpo[] IS INITIAL.
Get Material Description for each Material
SELECT matnr
maktx
FROM makt
INTO TABLE it_makt
FOR ALL ENTRIES IN it_ekpo
WHERE matnr = it_ekpo-matnr.
ELSE.
MESSAGE 'No Materials found' TYPE 'I'.
STOP.
ENDIF.
Populate internal table IT_LIST1
IF NOT it_ekpo[] IS INITIAL.
LOOP AT it_ekpo.
MOVE : it_ekpo-matnr TO it_list1-matnr,
it_ekpo-meins TO it_list1-meins,
it_ekpo-menge TO it_list1-menge.
READ TABLE it_makt WITH KEY matnr = it_ekpo-matnr.
IF sy-subrc EQ 0 .
MOVE : it_makt-maktx TO it_list1-maktx.
ENDIF.
APPEND it_list1.
ENDLOOP.
ENDIF.
SECOND LIST
Get the Vendor Number for given Purchase Order #
SELECT SINGLE ebeln
lifnr
FROM ekko
INTO (it_ekko-ebeln, it_ekko-lifnr)
WHERE ebeln = p_ebeln.
IF sy-subrc IS INITIAL.
Get Address of the Vendor
SELECT SINGLE adrnr
FROM lfa1
INTO it_lfa1-adrnr
WHERE lifnr = it_ekko-lifnr.
ELSE.
MESSAGE 'No Vendor Found' TYPE 'I'.
STOP.
ENDIF.
IF sy-subrc IS INITIAL.
Get Address Details of the Vendor
SELECT name1
name2
city1
city2
FROM adrc
INTO TABLE it_adrc
(IT_ADRC-NAME1, IT_ADRC-NAME2, IT_ADRC-CITY1, IT_ADRC-CITY2)
WHERE addrnumber = it_lfa1-adrnr.
ENDIF.
*LOOP AT IT_EKKO.
MOVE IT_EKKO-LIFNR TO IT_LIST2-LIFNR.
*ENDLOOP.
*
*LOOP AT IT_LFA1.
MOVE IT_LFA1-ADRNR TO IT_LIST2-ADRNR.
*ENDLOOP.
*
*LOOP AT IT_ADRC.
MOVE : IT_ADRC-NAME1 TO IT_LIST2-NAME1,
IT_ADRC-NAME2 tO IT_LIST2-NAME2,
IT_ADRC-CITY1 TO IT_LIST2-CITY1,
IT_ADRC-CITY2 TO IT_LIST2-CITY2.
*ENDLOOP.
ENDFORM. " SELECT_FORM
&----
*& Form DISPLAY_BLOCK
&----
text
----
--> p1 text
<-- p2 text
----
FORM display_block .
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_INIT'
EXPORTING
i_callback_program = sy-repid
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = ' '
IT_EXCLUDING =
.
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
EXPORTING
is_layout = i_layout1
it_fieldcat = it_flcat1[]
i_tabname = 'IT_LIST1'
it_events = it_events1[]
IT_SORT =
I_TEXT = ' '
TABLES
t_outtab = it_list1
EXCEPTIONS
program_error = 1
maximum_of_appends_reached = 2
OTHERS = 3
.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
EXPORTING
is_layout = i_layout2
it_fieldcat = it_flcat2[]
i_tabname = 'IT_ADRC'
it_events = it_events2[]
IT_SORT =
I_TEXT = ' '
TABLES
t_outtab = it_adrc[]
EXCEPTIONS
program_error = 1
maximum_of_appends_reached = 2
OTHERS = 3
.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
is_print = i_print
I_SCREEN_START_COLUMN = 0
I_SCREEN_START_LINE = 0
I_SCREEN_END_COLUMN = 0
I_SCREEN_END_LINE = 0
IMPORTING
E_EXIT_CAUSED_BY_CALLER =
ES_EXIT_CAUSED_BY_USER =
EXCEPTIONS
program_error = 1
OTHERS = 2
.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDFORM. " DISPLAY_BLOCK
&----
*& Form BUILD_FLCAT
&----
text
----
--> p1 text
<-- p2 text
----
FORM build_flcat .
DATA : wa_flcat1 LIKE LINE OF it_flcat1,
wa_flcat2 LIKE wa_flcat1.
&----
*& Fieldcatalog for List1
&----
CLEAR wa_flcat1.
wa_flcat1-col_pos = 1.
wa_flcat1-fieldname = 'MATNR'.
wa_flcat1-tabname = 'IT_LIST1'.
wa_flcat1-seltext_l = 'MATERIAL'.
APPEND wa_flcat1 TO it_flcat1.
CLEAR wa_flcat1.
wa_flcat1-col_pos = 4.
wa_flcat1-fieldname = 'MEINS'.
wa_flcat1-tabname = 'IT_LIST1'.
wa_flcat1-seltext_l = 'UOM'.
APPEND wa_flcat1 TO it_flcat1.
CLEAR wa_flcat1.
wa_flcat1-col_pos = 3.
wa_flcat1-fieldname = 'MENGE'.
wa_flcat1-tabname = 'IT_LIST1'.
wa_flcat1-seltext_l = 'QUANTITY'.
APPEND wa_flcat1 TO it_flcat1.
CLEAR wa_flcat1.
wa_flcat1-col_pos = 2.
wa_flcat1-fieldname = 'MAKTX'.
wa_flcat1-tabname = 'IT_LIST1'.
wa_flcat1-seltext_l = 'DESCRIPTION'.
APPEND wa_flcat1 TO it_flcat1.
&----
*& Fieldcatalog for List2
&----
CLEAR wa_flcat2.
wa_flcat2-col_pos = 1.
wa_flcat2-fieldname = 'LIFNR'.
wa_flcat2-tabname = 'IT_LIST2'.
wa_flcat2-seltext_l = 'VENDOR'.
APPEND wa_flcat2 TO it_flcat2.
CLEAR wa_flcat2.
wa_flcat2-col_pos = 2.
wa_flcat2-fieldname = 'ADRNR'.
wa_flcat2-tabname = 'IT_LIST2'.
wa_flcat2-seltext_l = 'ADDRESS '.
APPEND WA_FLCAT2 TO IT_FLCAT2.
CLEAR wa_flcat2.
wa_flcat2-col_pos = 3.
wa_flcat2-fieldname = 'NAME1'.
wa_flcat2-tabname = 'IT_LIST2'.
wa_flcat2-seltext_l = 'FIRST NAME '.
APPEND wa_flcat2 TO it_flcat2.
CLEAR wa_flcat2.
wa_flcat2-col_pos = 4.
wa_flcat2-fieldname = 'NAME2'.
wa_flcat2-tabname = 'IT_LIST2'.
wa_flcat2-seltext_l = 'LAST NAME '.
APPEND wa_flcat2 TO it_flcat2.
CLEAR wa_flcat2.
wa_flcat2-col_pos = 5.
wa_flcat2-fieldname = 'CITY1'.
wa_flcat2-tabname = 'IT_LIST2'.
wa_flcat2-seltext_l = 'CITY1 '.
APPEND wa_flcat2 TO it_flcat2.
CLEAR wa_flcat2.
wa_flcat2-col_pos = 6.
wa_flcat2-fieldname = 'CITY2'.
wa_flcat2-tabname = 'IT_LIST2'.
wa_flcat2-seltext_l = 'CITY2 '.
APPEND wa_flcat2 TO it_flcat2.
ENDFORM. " BUILD_FLCAT
Edited by: Wajid Hussain P on Jul 1, 2008 3:09 PM
2008 Jul 02 10:13 AM
Hai Hussain,
Thanks for ur timely help and your sample code. It is quite helpful for me. its working well.
Thanks
| User | Count |
|---|---|
| 3 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |