Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

internal table

Former Member
0 Likes
673

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

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
640

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.

5 REPLIES 5
Read only

Former Member
0 Likes
640

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.

Read only

Former Member
0 Likes
641

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.

Read only

Former Member
0 Likes
640

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

Read only

Former Member
0 Likes
640

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

Read only

Former Member
0 Likes
640

Thanks to all,

Point has been givn Poul..

Good logic.