HI gurus,
i need to convert into hierarchy alv.This is my output format.
===============================================================
Customer number Customer name Customer address
================================================================
XXXXXX Hewlett-Packard Asia Alexandra post office
Contact id Contact name Last purchase date project id Oustanding status
abcd serene loi 28/03/07 10106 10107 O
efgh Kim Koh 8/9/2006 1 0104
Customer number Customer name Customer address
YYYYY Hewlett-Packard Asia pacific Alexandra post office
Contact id Contact name Last purchase date project id Oustanding status
123 sim yen 18/01/07 10106 10107
============================================================== This is my code.
REPORT zsdr_arnl50 NO STANDARD PAGE HEADING.
************************************************************************
TABLES *
************************************************************************
TABLES: kna1,
adrc,
bsid,
vbpa,
knvk.
************************************************************************
Data Declaration *
************************************************************************
DATA: it_vbak LIKE vbak OCCURS 0 WITH HEADER LINE.
DATA: it_bsid LIKE bsid OCCURS 0 WITH HEADER LINE.
DATA: it_zvbak LIKE zvbak OCCURS 0 WITH HEADER LINE.
DATA: BEGIN OF it_head OCCURS 0,
addrnumber TYPE adrc-addrnumber,
kunnr TYPE kna1-kunnr,
name1 TYPE kna1-name1,
name2 TYPE adrc-name2,
END OF it_head.
DATA: BEGIN OF it_body OCCURS 0,
adrnr type vbpa-adrnr,
parnr TYPE vbpa-parnr,
name1 TYPE knvk-name1,
erdat TYPE vbak-erdat,
pspid TYPE zvbak-pspid,
outst TYPE c,
END OF it_body.
DATA: BEGIN OF it_kna1 OCCURS 0,
kunnr TYPE kna1-kunnr,
name1 TYPE kna1-name1,
adrnr TYPE kna1-adrnr,
END OF it_kna1.
DATA: BEGIN OF it_knvk OCCURS 0,
parnr TYPE knvk-parnr,
name1 TYPE knvk-name1,
erdat TYPE knvk-erdat,
END OF it_knvk.
DATA: BEGIN OF it_adrc OCCURS 0,
addrnumber TYPE adrc-addrnumber,
name2 TYPE adrc-name2,
END OF it_adrc.
DATA: BEGIN OF it_vbpa OCCURS 0,
parvw TYPE vbpa-parvw,
kunnr TYPE vbpa-kunnr,
parnr TYPE vbpa-parnr,
adrnr LIKE vbpa-adrnr,
END OF it_vbpa.
DATA: v_date1 LIKE bseg-zfbdt.
DATA: v_days(10) TYPE n.
DATA: amt(3) TYPE n.
************************************************************************
ALV Declaration
************************************************************************
TYPE-POOLS: slis.
DATA: v_repid LIKE sy-repid.
DATA : it_fieldcat TYPE slis_t_fieldcat_alv,
it_header TYPE slis_tabname,
it_item TYPE slis_tabname. " table to store item data
DATA : ty_fieldcat TYPE slis_fieldcat_alv, " field catalog type
ty_keyinfo TYPE slis_keyinfo_alv. " key information type
************************************************************************
Selection Screen
************************************************************************
SELECTION-SCREEN BEGIN OF BLOCK a WITH FRAME TITLE text-001.
SELECTION-SCREEN BEGIN OF BLOCK b WITH FRAME TITLE text-000.
SELECT-OPTIONS: c_no FOR kna1-kunnr OBLIGATORY. "Customer Number
SELECTION-SCREEN: END OF BLOCK b.
SELECTION-SCREEN: END OF BLOCK a.
*****************************************************************
TOP OF PAGE.
****************************************************************
*TOP-OF-PAGE.
*****************************************************************
Initialazation
*****************************************************************
v_repid = sy-repid.
it_header = 'IT_head'.
it_item = 'IT_body'.
CLEAR ty_keyinfo.
*ty_keyinfo-header01 = 'addrnumber'.
*ty_keyinfo-item01 = 'adrnr'.
*ty_keyinfo-header02 = space.
*ty_keyinfo-item02 = 'PARNR'.
*****************************************************************
Start-of-selection
*****************************************************************
START-OF-SELECTION.
PERFORM get_data.
PERFORM disp.
PERFORM field_catalog.
PERFORM output.
&----
*& Form get_data
&----
text
----
--> p1 text
<-- p2 text
----
FORM get_data .
*************************Customer Number & Customer name*********************
SELECT kunnr name1 adrnr FROM kna1 INTO CORRESPONDING FIELDS OF TABLE it_kna1
WHERE kunnr IN c_no.
************************Customer Address************************************
SELECT addrnumber name2 FROM adrc INTO CORRESPONDING FIELDS OF TABLE it_adrc
FOR ALL ENTRIES IN it_kna1 WHERE addrnumber = it_kna1-adrnr.
***********************Contact ID*******************************************
SELECT parnr parvw kunnr adrnr FROM vbpa INTO CORRESPONDING FIELDS OF TABLE it_vbpa
FOR ALL ENTRIES IN it_adrc WHERE adrnr = it_adrc-addrnumber. " AND parvw = 'AP'.
***********************Contact Person***************************************
SELECT name1 parnr erdat FROM knvk INTO CORRESPONDING FIELDS OF TABLE it_knvk
FOR ALL ENTRIES IN it_vbpa WHERE parnr = it_vbpa-parnr.
************************Project ID *******************************
SELECT pspid kunnr FROM zvbak INTO CORRESPONDING FIELDS OF TABLE it_zvbak
FOR ALL ENTRIES IN it_kna1 WHERE kunnr = it_kna1-kunnr.
SELECT kunnr FROM bsid INTO CORRESPONDING FIELDS OF TABLE it_bsid
FOR ALL ENTRIES IN it_kna1 WHERE kunnr = it_kna1-kunnr..
ENDFORM. " get_data
&----
*& Form disp
&----
text
----
--> p1 text
<-- p2 text
----
FORM disp .
LOOP AT it_kna1.
LOOP AT it_adrc WHERE addrnumber = it_kna1-adrnr.
it_head-kunnr = it_kna1-kunnr.
it_head-name1 = it_kna1-name1.
it_head-name2 = it_adrc-name2.
APPEND it_head.
LOOP AT it_vbpa WHERE adrnr = it_adrc-addrnumber.
LOOP AT it_knvk WHERE parnr = it_vbpa-parnr.
SELECT erdat kunnr FROM vbak INTO CORRESPONDING FIELDS OF TABLE it_vbak
FOR ALL ENTRIES IN it_knvk WHERE erdat = it_knvk-erdat.
SORT it_vbak BY erdat DESCENDING.
READ TABLE it_vbak INDEX 1.
IF sy-subrc = 0.
it_body-erdat = it_vbak-erdat.
ENDIF.
LOOP AT it_zvbak WHERE kunnr = it_kna1-kunnr.
LOOP AT it_bsid WHERE kunnr = it_kna1-kunnr.
CLEAR : v_date1, v_days.
CALL FUNCTION 'J_1A_SD_CI_DUEDATE_GET' "TO GET OVERDUE DATE
EXPORTING
iv_vbeln = it_bsid-vbeln
iv_zterm = it_bsid-zterm
IMPORTING
ev_netdate = v_date1
EXCEPTIONS
fi_document_not_found = 1
payment_terms_incomplete = 2
invoice_not_found = 3.
CALL FUNCTION 'DAYS_BETWEEN_TWO_DATES' " CALCULATING THE OUTSTANDING DAYS
EXPORTING
i_datum_bis = sy-datum
i_datum_von = v_date1
IMPORTING
e_tage = v_days
EXCEPTIONS
days_method_not_defined = 1
OTHERS = 2.
IF v_days >= 1 AND v_days <= 30.
MOVE it_bsid-dmbtr TO amt.
ELSEIF v_days > 30 AND v_days <= 60.
MOVE it_bsid-dmbtr TO amt.
ELSEIF v_days > 60 AND v_days <= 90.
MOVE it_bsid-dmbtr TO amt.
ELSEIF v_days > 60 AND v_days <= 90.
MOVE it_bsid-dmbtr TO amt.
ELSEIF v_days > 90 AND v_days <= 150.
MOVE it_bsid-dmbtr TO amt.
ELSEIF v_days > 150 AND v_days <= 180.
MOVE it_bsid-dmbtr TO amt.
ELSEIF v_days > 180 AND v_days <= 210.
MOVE it_bsid-dmbtr TO amt.
ELSEIF v_days > 210 AND v_days <= 240.
MOVE it_bsid-dmbtr TO amt.
ELSEIF v_days > 240 AND v_days <= 280.
MOVE it_bsid-dmbtr TO amt.
ELSEIF v_days > 280 AND v_days <= 310.
MOVE it_bsid-dmbtr TO amt.
ELSEIF v_days > 310 AND v_days <= 340.
MOVE it_bsid-dmbtr TO amt.
ELSEIF v_days > 340 AND v_days <= 365.
MOVE it_bsid-dmbtr TO amt.
ENDIF.
IF sy-subrc <> 0.
it_body-outst = 'O'.
ENDIF.
it_body-pspid = it_zvbak-pspid.
it_body-parnr = it_vbpa-parnr.
it_body-name1 = it_knvk-name1.
APPEND it_body.
ENDLOOP.
ENDLOOP.
ENDLOOP.
ENDLOOP.
ENDLOOP.
ENDLOOP.
ENDFORM. " disp
********************************************************************
*FORM FOR ALV LAYOUT STRUCTURE
********************************************************************
&----
*& Form FIELD_CATALOG
&----
text
----
--> p1 text
<-- p2 text
----
FORM field_catalog .
ty_fieldcat-tabname = 'IT_HEAD'.
ty_fieldcat-fieldname = 'KUNNR'.
ty_fieldcat-seltext_l = 'CUSTOMER NO'.
ty_fieldcat-col_pos = 1.
ty_fieldcat-outputlen = 10.
APPEND ty_fieldcat TO it_fieldcat.
CLEAR ty_fieldcat.
ty_fieldcat-tabname = 'IT_HEAD'.
ty_fieldcat-fieldname = 'NAME1'.
ty_fieldcat-seltext_l = 'CUSTOMER NAME'.
ty_fieldcat-col_pos = 2.
ty_fieldcat-outputlen = 10.
ty_fieldcat-datatype = 'DATS'.
APPEND ty_fieldcat TO it_fieldcat.
CLEAR ty_fieldcat.
ty_fieldcat-tabname = 'IT_HEAD'.
ty_fieldcat-fieldname = 'NAME2'.
ty_fieldcat-seltext_l = 'CUSTOMER ADDRESS'.
ty_fieldcat-col_pos = 3.
ty_fieldcat-outputlen = 15.
APPEND ty_fieldcat TO it_fieldcat.
CLEAR ty_fieldcat.
ty_fieldcat-tabname = 'IT_BODY'.
ty_fieldcat-fieldname = 'PARNR'.
ty_fieldcat-seltext_l = 'CONTACT ID'.
ty_fieldcat-outputlen = 10.
APPEND ty_fieldcat TO it_fieldcat.
CLEAR ty_fieldcat.
ty_fieldcat-tabname = 'IT_BODY'.
ty_fieldcat-fieldname = 'NAME1'.
ty_fieldcat-seltext_l = 'CONTACT NAME'.
ty_fieldcat-outputlen = 10.
APPEND ty_fieldcat TO it_fieldcat.
CLEAR ty_fieldcat.
ty_fieldcat-tabname = 'IT_BODY'.
ty_fieldcat-fieldname = 'ERDAT'.
ty_fieldcat-seltext_l = 'LAST PURCHASE DATE'.
ty_fieldcat-outputlen = 10.
ty_fieldcat-datatype = 'SY-DATUM'.
APPEND ty_fieldcat TO it_fieldcat.
CLEAR ty_fieldcat.
ty_fieldcat-tabname = 'IT_BODY'.
ty_fieldcat-fieldname = 'PSPID'.
ty_fieldcat-seltext_l = 'PROJECT ID'.
ty_fieldcat-outputlen = 10.
APPEND ty_fieldcat TO it_fieldcat.
CLEAR ty_fieldcat.
ty_fieldcat-tabname = 'IT_BODY'.
ty_fieldcat-fieldname = 'OUTST'.
ty_fieldcat-seltext_l = 'UNITS'.
ty_fieldcat-outputlen = 3.
ty_fieldcat-datatype = 'CHAR'.
APPEND ty_fieldcat TO it_fieldcat.
CLEAR ty_fieldcat.
ENDFORM. " FIELD_CATALOG
&----
*& Form OUTPUT
&----
text
----
--> p1 text
<-- p2 text
----
FORM output .
CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
i_callback_program = v_repid
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = ' '
IS_LAYOUT =
it_fieldcat = it_fieldcat
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
IT_SORT =
IT_FILTER =
IS_SEL_HIDE =
I_SCREEN_START_COLUMN = 0
I_SCREEN_START_LINE = 0
I_SCREEN_END_COLUMN = 0
I_SCREEN_END_LINE = 0
I_DEFAULT = 'X'
I_SAVE = ' '
IS_VARIANT =
IT_EVENTS =
IT_EVENT_EXIT =
i_tabname_header = it_header
i_tabname_item = it_item
I_STRUCTURE_NAME_HEADER =
I_STRUCTURE_NAME_ITEM =
is_keyinfo = ty_keyinfo
IS_PRINT =
IS_REPREP_ID =
I_BYPASSING_BUFFER =
I_BUFFER_ACTIVE =
IMPORTING
E_EXIT_CAUSED_BY_CALLER =
ES_EXIT_CAUSED_BY_USER =
TABLES
t_outtab_header = it_head
t_outtab_item = it_body
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. "OUTPUT
Regards
siva.