‎2008 Apr 18 12:43 PM
Hi,
i have data like this in internal table header
ABC PQR XYZ 1
item
ABC PQR XYZ 2
ABC PQR XYZ 3
ABC PQR XYZ 4
but i want like this.
ABC PQR XYZ 1 2 3 4 ...how it possible logic please.?
Point is assuerd
‎2008 Apr 18 1:01 PM
this is an example, but works
DATA:
BEGIN OF numrec,
nums TYPE c,
END OF numrec.
DATA:
BEGIN OF baserec,
val1(3) TYPE c,
val2(3) TYPE c,
val3(3) TYPE c,
nums TYPE c,
END OF baserec.
DATA:
BEGIN OF allrec,
val1(3) TYPE c,
val2(3) TYPE c,
val3(3) TYPE c,
it_nums LIKE STANDARD TABLE OF numrec,
END OF allrec.
DATA:
it_base LIKE STANDARD TABLE OF baserec,
it_all like standard table of allrec.
START-OF-SELECTION.
baserec-val1 = 'ABC'.
baserec-val2 = 'PRQ'.
baserec-val3 = 'XYZ'.
baserec-nums = '1'.
APPEND baserec TO it_base.
baserec-nums = '2'.
APPEND baserec TO it_base.
baserec-nums = '3'.
APPEND baserec TO it_base.
baserec-nums = '4'.
APPEND baserec TO it_base.
LOOP AT it_base INTO baserec.
allrec-val1 = baserec-val1.
allrec-val2 = baserec-val2.
allrec-val3 = baserec-val3.
numrec-nums = baserec-nums.
APPEND numrec TO allrec-it_nums.
ENDLOOP.
APPEND allrec TO it_all.
LOOP AT it_all INTO allrec.
WRITE:/ allrec-val1,
allrec-val2,
allrec-val3.
LOOP AT allrec-it_nums INTO numrec.
WRITE numrec-nums.
ENDLOOP.
ENDLOOP.
‎2008 Apr 18 12:57 PM
hi monica use the alv hirarchial_list_display i can give the simple program..in this it will display like this..
header
item1
item2
item3..
&----
*& Report ZPR_02
*&
&----
*&
*&
&----
REPORT ZPR_02.
TYPE-POOLS: SLIS.
----
Tables Declaration.
----
TABLES: VBAK.
----
Constants
----
CONSTANTS : C_X VALUE 'X',
C_GT_VBAP TYPE SLIS_TABNAME VALUE 'IT_VBAP',
C_GT_VBAK TYPE SLIS_TABNAME VALUE 'IT_VBAK'.
----
*Internal tables and data declaration.
----
DATA: BEGIN OF IT_VBAK OCCURS 0,
VBELN LIKE VBAK-VBELN,
VKORG LIKE VBAK-VKORG,
WAERK LIKE VBAK-WAERK,
EXPAND TYPE XFELD,
END OF IT_VBAK,
BEGIN OF IT_VBAP OCCURS 0,
VBELN LIKE VBAP-VBELN,
POSNR LIKE VBAP-POSNR,
MATNR LIKE VBAP-MATNR,
NETWR LIKE VBAP-NETWR,
END OF IT_VBAP.
DATA: WA_FIELD_CAT TYPE SLIS_FIELDCAT_ALV,
IT_FIELD_CAT TYPE SLIS_T_FIELDCAT_ALV,
WA_KEYINFO TYPE SLIS_KEYINFO_ALV,
IT_LAYOUT TYPE SLIS_LAYOUT_ALV,
WA_SORT TYPE SLIS_SORTINFO_ALV,
IT_SORT TYPE SLIS_T_SORTINFO_ALV. " Sort table
----
*Selection Screen.
----
SELECTION-SCREEN: BEGIN OF LINE,
COMMENT 5(25) V_1 FOR FIELD P_MAX.
PARAMETER P_MAX(2) TYPE N DEFAULT 10 OBLIGATORY.
SELECTION-SCREEN: END OF LINE.
SELECTION-SCREEN: SKIP,
BEGIN OF LINE,
COMMENT 5(25) V_2 FOR FIELD P_EXPAND.
PARAMETER: P_EXPAND AS CHECKBOX DEFAULT 'X'.
SELECTION-SCREEN END OF LINE.
----
*Initialization
----
INITIALIZATION.
V_1 = 'Max No of Record read'.
V_2 = 'With expand'.
----
*Start Of selection.
----
START-OF-SELECTION.
*Selecting the data.
PERFORM SELECT_DATA.
*Populating the field catelogue.
PERFORM BUILD_FIELD_CAT.
*Displaying the final output.
PERFORM DISPLY_OUTPUT.
----
Form USER_COMMAND *
----
FORM USER_COMMAND USING I_UCOMM TYPE SY-UCOMM
IS_SELFIELD TYPE SLIS_SELFIELD. "#EC CALLED
DATA LS_VBAK LIKE IT_VBAK.
CASE I_UCOMM.
WHEN '&IC1'. " Pick
CASE IS_SELFIELD-TABNAME.
WHEN C_GT_VBAP.
WHEN C_GT_VBAK.
READ TABLE IT_VBAK INDEX IS_SELFIELD-TABINDEX INTO LS_VBAK.
IF SY-SUBRC EQ 0.
Sales order number
SET PARAMETER ID 'AUN' FIELD LS_VBAK-VBELN.
Display Sales Order
CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN.
ENDIF.
ENDCASE.
ENDCASE.
ENDFORM. " USER_COMMAND
&----
*& Form Select_data
&----
Selecting the data.
----
FORM SELECT_DATA .
SELECT VBELN
VKORG
WAERK FROM VBAK
INTO TABLE IT_VBAK
UP TO P_MAX ROWS.
IF NOT IT_VBAK[] IS INITIAL.
SELECT VBELN
POSNR
MATNR
NETWR FROM VBAP
INTO TABLE IT_VBAP
FOR ALL ENTRIES IN IT_VBAK
WHERE VBELN = IT_VBAK-VBELN.
ENDIF.
SORT IT_VBAP BY VBELN.
SORT IT_VBAK BY VBELN.
ENDFORM. " Select_data
&----
*& Form Build_field_cat
&----
Populating the field catelogue.
----
FORM BUILD_FIELD_CAT .
DEFINE M_FIELDCAT.
WA_FIELD_CAT-TABNAME = &1.
WA_FIELD_CAT-FIELDNAME = &2.
WA_FIELD_CAT-REF_TABNAME = &3.
WA_FIELD_CAT-CFIELDNAME = &4.
APPEND WA_FIELD_CAT TO IT_FIELD_CAT.
END-OF-DEFINITION.
DEFINE M_SORT.
WA_SORT-TABNAME = &1.
WA_SORT-FIELDNAME = &2.
WA_SORT-UP = C_X.
APPEND WA_SORT TO IT_SORT.
END-OF-DEFINITION.
M_FIELDCAT C_GT_VBAK 'VBELN' 'VBAK' ''.
M_FIELDCAT C_GT_VBAK 'VKORG' 'VBAK' ''.
M_FIELDCAT C_GT_VBAK 'WAERK' 'VBAK' ''.
M_FIELDCAT C_GT_VBAP 'POSNR' 'VBAP' ''.
M_FIELDCAT C_GT_VBAP 'MATNR' 'VBAP' ''.
M_FIELDCAT C_GT_VBAP 'NETWR' 'VBAP' ''.
M_SORT C_GT_VBAP 'NETWR'.
ENDFORM. " Build_field_cat
&----
*& Form disply_output
&----
Displaying the final output.
----
FORM DISPLY_OUTPUT .
IT_LAYOUT-GROUP_CHANGE_EDIT = C_X.
IT_LAYOUT-COLWIDTH_OPTIMIZE = C_X.
IT_LAYOUT-ZEBRA = C_X.
IT_LAYOUT-DETAIL_POPUP = C_X.
IT_LAYOUT-GET_SELINFOS = C_X.
IF P_EXPAND = C_X.
IT_LAYOUT-EXPAND_FIELDNAME = 'EXPAND'.
ENDIF.
WA_KEYINFO-HEADER01 = 'VBELN'.
WA_KEYINFO-ITEM01 = 'VBELN'.
WA_KEYINFO-ITEM02 = 'POSNR'.
CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = SY-CPROG
I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
IS_LAYOUT = IT_LAYOUT
IT_FIELDCAT = IT_FIELD_CAT
IT_SORT = IT_SORT
I_TABNAME_HEADER = C_GT_VBAK
I_TABNAME_ITEM = C_GT_VBAP
IS_KEYINFO = WA_KEYINFO
TABLES
T_OUTTAB_HEADER = IT_VBAK
T_OUTTAB_ITEM = IT_VBAP.
ENDFORM. " disply_output
regards,
venkat.
‎2008 Apr 18 1:01 PM
this is an example, but works
DATA:
BEGIN OF numrec,
nums TYPE c,
END OF numrec.
DATA:
BEGIN OF baserec,
val1(3) TYPE c,
val2(3) TYPE c,
val3(3) TYPE c,
nums TYPE c,
END OF baserec.
DATA:
BEGIN OF allrec,
val1(3) TYPE c,
val2(3) TYPE c,
val3(3) TYPE c,
it_nums LIKE STANDARD TABLE OF numrec,
END OF allrec.
DATA:
it_base LIKE STANDARD TABLE OF baserec,
it_all like standard table of allrec.
START-OF-SELECTION.
baserec-val1 = 'ABC'.
baserec-val2 = 'PRQ'.
baserec-val3 = 'XYZ'.
baserec-nums = '1'.
APPEND baserec TO it_base.
baserec-nums = '2'.
APPEND baserec TO it_base.
baserec-nums = '3'.
APPEND baserec TO it_base.
baserec-nums = '4'.
APPEND baserec TO it_base.
LOOP AT it_base INTO baserec.
allrec-val1 = baserec-val1.
allrec-val2 = baserec-val2.
allrec-val3 = baserec-val3.
numrec-nums = baserec-nums.
APPEND numrec TO allrec-it_nums.
ENDLOOP.
APPEND allrec TO it_all.
LOOP AT it_all INTO allrec.
WRITE:/ allrec-val1,
allrec-val2,
allrec-val3.
LOOP AT allrec-it_nums INTO numrec.
WRITE numrec-nums.
ENDLOOP.
ENDLOOP.
‎2008 Apr 18 1:10 PM
Hi Monica,
Try this...
i_header :
ABC PQR XYZ 1
i_item
ABC PQR XYZ 2
ABC PQR XYZ 3
ABC PQR XYZ 4
i_combine :
field1 type <field of ABC>
field2 type <field of PQR>
field3 type <field of XYZ>.
field4(255) type c..
sort l_header by
<ABC_field> <PQR_field>
<XYZ_field>
sort l_item by <ABC_field> <PQR_field>
<XYZ_field>
loop at i_header.
read table i_item with key field1 = i_header-field1 field2 = i_header-field2 field3 = i_header-field3 binary search.
if sy-subrc = 0.
loop at i_item.
if i_item-field1 = i_header-field1 and
i_item-field2 = i_header-field2 and
i_item-field3 = i_header-field3.
i_combine-field1 = i_header-field1.
i_combine-field2 = i_header-field2.
i_combine-field3 = i_header-field3.
if sy-tabix = 1.
i_combine-field4 = i_item-field4.
else.
concatenate i_combine-field4 i_item-field4 into
i_combine-field4 separated by space.
endif.
append i_combine
else.
exit.
endif.
endloop .
endif.
endloop.
Regards,
Mohaiyuddin
‎2008 Apr 18 1:48 PM
Check the Sample code.
You can do that using Dynamic Intenal tables.
Here i took 9 items, depending on your items build your fieldcatalog.
REPORT ztest_dynamic_code.
DATA: BEGIN OF it_tab OCCURS 0,
abc(3),
xyz(3),
pqr(3),
item,
END OF it_tab.
DATA: it_fieldcatalog TYPE lvc_t_fcat,
wa_fieldcat TYPE lvc_s_fcat.
DATA: i_dyntab TYPE REF TO data. " To create dyn.Itab
DATA:
w_dref TYPE REF TO data,
ind(2) TYPE n,
w_data TYPE REF TO data,
w_text(5),
w_grid TYPE REF TO cl_gui_alv_grid.
DATA: grid TYPE REF TO cl_gui_alv_grid,
cont TYPE REF TO cl_gui_custom_container.
FIELD-SYMBOLS: <t_itab> TYPE STANDARD TABLE,
<fs_wa> TYPE ANY,<fs> TYPE ANY.
DATA: in TYPE i.
*Data population
it_tab-abc = 'ABC'.
it_tab-xyz = 'XYZ'.
it_tab-pqr = 'PQR'.
DO 9 TIMES.
in = in + 1.
it_tab-item = in.
APPEND it_tab.
ENDDO.
*Field cat population.
wa_fieldcat-fieldname = 'ABC'.
wa_fieldcat-outputlen = 3.
wa_fieldcat-coltext = 'abc'.
APPEND wa_fieldcat TO it_fieldcatalog.
wa_fieldcat-fieldname = 'XYZ'.
wa_fieldcat-outputlen = 3.
wa_fieldcat-coltext = 'XYZ'.
APPEND wa_fieldcat TO it_fieldcatalog.
wa_fieldcat-fieldname = 'PQR'.
wa_fieldcat-outputlen = 3.
wa_fieldcat-coltext = 'pqr'.
APPEND wa_fieldcat TO it_fieldcatalog.
ind = 1.
DO 9 TIMES.
CONCATENATE 'ITEM' ind INTO wa_fieldcat-fieldname.
CONCATENATE 'ITEM' ind INTO wa_fieldcat-coltext.
wa_fieldcat-outputlen = 1.
APPEND wa_fieldcat TO it_fieldcatalog.
CLEAR wa_fieldcat .
ind = ind + 1.
ENDDO.
*-Dynamic Table creation
CALL METHOD cl_alv_table_create=>create_dynamic_table
EXPORTING
it_fieldcatalog = it_fieldcatalog
IMPORTING
ep_table = i_dyntab.
ASSIGN i_dyntab->* TO <t_itab>.
CREATE DATA w_data LIKE LINE OF <t_itab>.
ASSIGN w_data->* TO <fs_wa>.
SORT it_tab BY abc xyz pqr.
CLEAR ind.
ind = 4.
*-Final Internal table as per Requirement
LOOP AT it_tab.
ASSIGN COMPONENT 1 OF STRUCTURE <fs_wa> TO <fs>.
<fs> = it_tab-abc.
ASSIGN COMPONENT 2 OF STRUCTURE <fs_wa> TO <fs>.
<fs> = it_tab-xyz.
UNASSIGN <fs>.
ASSIGN COMPONENT 3 OF STRUCTURE <fs_wa> TO <fs>.
<fs> = it_tab-pqr.
UNASSIGN <fs>.
ASSIGN COMPONENT ind OF STRUCTURE <fs_wa> TO <fs>.
<fs> = it_tab-item.
UNASSIGN <fs>.
ind = ind + 1.
AT END OF pqr.
APPEND <fs_wa> TO <t_itab>.
ind = 4.
CLEAR <fs_wa>.
ENDAT.
ENDLOOP.
*-Display
CALL SCREEN 100.
*&---------------------------------------------------------------------*
*& Module STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE status_0100 OUTPUT.
DATA: layout TYPE lvc_s_layo.
CREATE OBJECT cont
EXPORTING
container_name = 'CONT'
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
create_error = 3
lifetime_error = 4
lifetime_dynpro_dynpro_link = 5
OTHERS = 6
.
IF sy-subrc NE 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
CREATE OBJECT grid
EXPORTING
i_parent = cont
EXCEPTIONS
error_cntl_create = 1
error_cntl_init = 2
error_cntl_link = 3
error_dp_create = 4
OTHERS = 5
.
IF sy-subrc NE 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
grid->set_table_for_first_display(
EXPORTING
is_layout = layout
CHANGING
it_outtab = <t_itab>
it_fieldcatalog = it_fieldcatalog
EXCEPTIONS
invalid_parameter_combination = 1
program_error = 2
too_many_lines = 3
).
IF sy-subrc NE 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDMODULE. " STATUS_0100 OUTPUT
‎2008 Apr 21 6:48 AM