ALV hierarchy report
Hi,
I am trying to create ALV report using FM: REUSE_ALV_HIERSEQ_LIST_DISPLAY
My Report format is as follows:
Shipto1 <Level 1>
Shipping plant1 <Level 2>
VBELN POSNR <Level 3>
VBELN POSNR <Level 3>
VBELN POSNR <Level 3>
Shipping plant2 <Level 2>
VBELN POSNR <Level 3>
VBELN POSNR <Level 3>
VBELN POSNR <Level 3>
Shipto2 <Level 1>
Shipping plant1 <Level 2>
VBELN POSNR <Level 3>
VBELN POSNR <Level 3>
VBELN POSNR <Level 3>
Shipping plant2 <Level 2>
VBELN POSNR <Level 3>
VBELN POSNR <Level 3>
VBELN POSNR <Level 3>
But I am not able to get 3 levels.
Is it possible to get this format using this function module?
Please advice.
Thanks in advance.
Regards,
Umesh Patil
Hi Umesh,
Please transfer your Report format to as:
Shipto1 <Level 1> Shipping plant1 <Level 1>
VBELN POSNR <Level 2>
VBELN POSNR <Level 2>
VBELN POSNR <Level 2>
Shipto1 <Level 1> Shipping plant2 <Level 1>
VBELN POSNR <Level 2>
VBELN POSNR <Level 2>
VBELN POSNR <Level 3>
Shipto2 <Level 1> Shipping plant1 <Level 1>
VBELN POSNR <Level 2>
VBELN POSNR <Level 2>
VBELN POSNR <Level 2>
Shipto2 <Level 1> Shipping plant2 <Level 1>
VBELN POSNR <Level 2>
VBELN POSNR <Level 2>
VBELN POSNR <Level 2>
Now u r able to use FM: REUSE_ALV_HIERSEQ_LIST_DISPLAY
Above format also able to help u in making Header and Detail Internal Table.
Regards,
Digesh.P
Similar Messages
-
Dear Experts,
Can anyone tell me how to create a ALV Hierarchial report with one HEADER table and multiple ITEM(child) tables.
thanks & regards,
gautamHi you can tray review this code for a example i found in the web and help me:
REPORT Z_TEST_HIESEQ_REPORT.
TABLES: ekko,ekpo.
* selection option
SELECT-OPTIONS s_ebeln FOR ekko-ebeln.
TYPE-POOLS:slis.
* define header table and item table
DATA: BEGIN OF headertab OCCURS 0,
ebeln LIKE ekko-ebeln,
bstyp LIKE ekko-bstyp,
bsart LIKE ekko-bsart,
statu LIKE ekko-statu,
END OF headertab.
DATA: BEGIN OF itemtab OCCURS 0,
ebeln LIKE ekpo-ebeln,
ebelp LIKE ekpo-ebelp,
matnr LIKE ekpo-matnr,
werks LIKE ekpo-werks,
menge LIKE ekpo-menge,
netpr LIKE ekpo-netpr,
peinh LIKE ekpo-peinh,
netwr LIKE ekpo-netwr,
END OF itemtab.
DATA: i_fieldcat TYPE slis_t_fieldcat_alv.
DATA: v_repid LIKE sy-repid.u201Ccurrent program name
DATA: g_tabname_header TYPE slis_tabname,
g_tabname_item TYPE slis_tabname.
* data connect header table and item table
* we can set 5 field as foreign key at same time
DATA: gs_keyinfo TYPE slis_keyinfo_alv.
INITIALIZATION.
v_repid = sy-repid.
START-OF-SELECTION.
PERFORM get_data.
END-OF-SELECTION.
* get field catalog of header table
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_program_name = v_repid
i_internal_tabname = 'HEADERTAB'
i_inclname = v_repid
i_bypassing_buffer = 'X'
i_buffer_active = "
CHANGING
ct_fieldcat = i_fieldcat
EXCEPTIONS
inconsistent_interface = 1
program_error = 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.
* get field catalog of item table
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_program_name = sy-repid
i_internal_tabname = 'ITEMTAB'
i_inclname = v_repid
i_bypassing_buffer = 'X'
i_buffer_active = "
CHANGING
ct_fieldcat = i_fieldcat
EXCEPTIONS
inconsistent_interface = 1
program_error = 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.
* set the header and item table are connected by pur doc number
gs_keyinfo-header01 = 'EBELN'.
gs_keyinfo-item01 = 'EBELN'.
g_tabname_header = 'HEADERTAB'.
g_tabname_item = 'ITEMTAB'.
CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
EXPORTING
i_callback_program = v_repid
it_fieldcat = i_fieldcat
i_save = 'A'
i_tabname_header = g_tabname_header
i_tabname_item = g_tabname_item
is_keyinfo = gs_keyinfo
i_bypassing_buffer = 'X'
i_buffer_active = ' '
TABLES
t_outtab_header = headertab
t_outtab_item = itemtab
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.
FORM get_data.
SELECT ebeln bstyp bsart statu
INTO TABLE headertab
FROM ekko
UP TO 100 ROWS
WHERE ebeln IN s_ebeln.
IF NOT headertab[] IS INITIAL.
SELECT ebeln ebelp matnr werks menge netpr peinh netwr
INTO TABLE itemtab
FROM ekpo
FOR ALL ENTRIES IN headertab
WHERE ebeln = headertab-ebeln.
ENDIF.
ENDFORM. "get_data
Edited by: Juan Manuel Garcia on Aug 17, 2010 11:29 PM
Edited by: Juan Manuel Garcia on Aug 17, 2010 11:36 PM -
Top_of_page is not working in ALV hierarchy?
Hi,
I have written following code for top_of_page using event but which is not working...This report is developed for interactive report.
Note: passed the it_events into ALV hierarchy functional module.
FORM build_event_tab .
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
i_list_type = 1
IMPORTING
et_events = it_events[].
READ TABLE it_events INTO wa_events WITH KEY form = 'TOP_OF_PAGE'.
IF sy-subrc = 0.
wa_events-form = 'TOP_OF_PAGE'.
APPEND wa_events TO it_events.
ENDIF.
ENDFORM. "Get_events
FORM top_of_page USING document TYPE REF TO cl_dd_document.
DATA: dl_text(255) TYPE c,
lv_cutime TYPE sy-uzeit,
lv_cudt(20) TYPE c.
lv_cudt = sy-datum.
*--Passing Date----*
WRITE lv_cudt TO dl_text.
CONCATENATE 'Date : ' lv_cudt+6(2) '-'
lv_cudt+4(2) '-'
lv_cudt+0(4) INTO dl_text.
CALL METHOD document->add_text
EXPORTING
text = dl_text.
CLEAR : dl_text.
CALL METHOD document->add_gap
EXPORTING
width = 50.
WRITE 'Company Name' TO dl_text.
CALL METHOD document->add_text
EXPORTING
text = dl_text
sap_emphasis = cl_dd_area=>heading
sap_style = cl_dd_area=>heading
sap_color = cl_dd_area=>list_total_inv.
CLEAR : dl_text.
CALL METHOD document->add_gap
EXPORTING
width = 150.
lv_cutime = sy-uzeit.
CONCATENATE 'Time : ' lv_cutime+0(2) ':'
lv_cutime+2(2) ':'
lv_cutime+4(2) INTO dl_text.
CALL METHOD document->add_text
EXPORTING
text = dl_text.
CALL METHOD document->add_gap
EXPORTING
width = 60.
WRITE 'Title' TO dl_text.
CALL METHOD document->add_text
EXPORTING
text = dl_text
sap_emphasis = cl_dd_area=>heading
sap_style = cl_dd_area=>heading
sap_color = cl_dd_area=>list_total_inv.
CLEAR : dl_text.
CALL METHOD document->add_gap
EXPORTING
width = 50.
ENDFORM. "html_top_of_page
Thanks
ShreePERFORM build_fieldcat.
PERFORM build_event_tab.
PERFORM alv_display.
*---Build fieldcat
FORM build_fieldcat.
wa_fieldcat-tabname = 'IT_VENDOR'.
wa_fieldcat-fieldname = 'LIFNR'.
wa_fieldcat-col_pos = '2'.
wa_fieldcat-seltext_l = 'SUPPLIER'.
wa_fieldcat-outputlen = 20.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-tabname = 'IT_VENDOR'.
wa_fieldcat-fieldname = 'NAME1'.
wa_fieldcat-col_pos = '2'.
wa_fieldcat-seltext_l = 'VENDOR NAME'.
wa_fieldcat-outputlen = 40.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-tabname = 'IT_FINAL'.
wa_fieldcat-fieldname = 'WERKS'.
wa_fieldcat-col_pos = '1'.
wa_fieldcat-seltext_l = 'Plant'.
wa_fieldcat-outputlen = 5.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-tabname = 'IT_FINAL'.
wa_fieldcat-fieldname = 'AWKEY'.
wa_fieldcat-col_pos = '2'.
wa_fieldcat-seltext_l = ' Document'.
wa_fieldcat-hotspot = 'X'.
wa_fieldcat-outputlen = 16.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-tabname = 'IT_FINAL'.
wa_fieldcat-fieldname = 'BELNR'.
wa_fieldcat-col_pos = '3'.
wa_fieldcat-seltext_l = 'A/c Document'.
wa_fieldcat-hotspot = 'X'.
wa_fieldcat-outputlen = 16.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-tabname = 'IT_FINAL'.
wa_fieldcat-fieldname = 'BUDAT'.
wa_fieldcat-col_pos = '4'.
wa_fieldcat-seltext_l = 'PJ Date'.
wa_fieldcat-outputlen = 16.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-tabname = 'IT_FINAL'.
wa_fieldcat-fieldname = 'XBLNR'.
wa_fieldcat-col_pos = '5'.
wa_fieldcat-seltext_l = 'Inv'.
wa_fieldcat-outputlen = 16.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-tabname = 'IT_FINAL'.
wa_fieldcat-fieldname = 'BLDAT'.
wa_fieldcat-col_pos = '6'.
wa_fieldcat-seltext_l = 'PJ Date'.
wa_fieldcat-outputlen = 16.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-tabname = 'IT_FINAL'.
wa_fieldcat-fieldname = 'DMBTR'.
wa_fieldcat-col_pos = '7'.
wa_fieldcat-seltext_l = 'Bill.Amount'.
wa_fieldcat-outputlen = 19.
wa_fieldcat-do_sum = 'X'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-tabname = 'IT_FINAL'.
wa_fieldcat-fieldname = 'HKONT'.
wa_fieldcat-col_pos = '8'.
wa_fieldcat-seltext_l = 'Cost Ctr'.
wa_fieldcat-outputlen = 16.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
ENDFORM. "Build_fieldcat
*----ALV Display-----*
FORM alv_display.
key-header01 = 'LIFNR'.
key-item01 = 'LIFNR'.
DELETE ADJACENT DUPLICATES FROM it_vendor.
DELETE ADJACENT DUPLICATES FROM it_final.
CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
EXPORTING
i_callback_program = sy-repid
i_callback_user_command = 'USER_COMMAND'
i_callback_pf_status_set = 'PFSTATUS'
it_fieldcat = it_fieldcat[]
i_tabname_header = 'IT_VENDOR'
i_tabname_item = 'IT_FINAL'
it_events = it_events[]
is_keyinfo = key
TABLES
t_outtab_header = it_vendor[]
t_outtab_item = it_final[].
ENDFORM. "alv_display
*----interactive method--
FORM user_command USING r_ucomm TYPE sy-ucomm
rs_selfield TYPE slis_selfield.
CASE r_ucomm.
WHEN '&IC1'.
READ TABLE it_final INTO wa_final INDEX rs_selfield-tabindex.
IF sy-subrc = 0.
IF rs_selfield-fieldname = 'BELNR'.
SET PARAMETER ID 'BLN' FIELD wa_final-belnr.
SET PARAMETER ID 'BUK' FIELD pa_bukrs.
SET PARAMETER ID 'GJA' FIELD pa_gjahr.
CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN.
ELSEIF rs_selfield-fieldname = 'AWKEY'.
SET PARAMETER ID 'RBN' FIELD wa_final-awkey.
SET PARAMETER ID 'GJR' FIELD pa_gjahr.
CALL TRANSACTION 'MIR4' AND SKIP FIRST SCREEN.
ELSEIF rs_selfield-fieldname = 'LFBNR'.
SET PARAMETER ID 'BLN' FIELD it_bsak-lfbnr.
SET PARAMETER ID 'BUK' FIELD pa_bukrs.
SET PARAMETER ID 'GJA' FIELD pa_gjahr.
CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN.
ELSEIF rs_selfield-fieldname = 'EBELN'.
SELECT SINGLE
ebeln
INTO wk_ebeln
FROM ekko
WHERE ebeln = it_bsak-ebeln
AND bstyp = 'F'.
IF sy-subrc EQ 0.
SET PARAMETER ID 'BES' FIELD it_bsak-ebeln.
CALL TRANSACTION 'ME23N' AND SKIP FIRST SCREEN.
ELSE.
SET PARAMETER ID 'VRT' FIELD it_bsak-ebeln.
CALL TRANSACTION 'ME33' AND SKIP FIRST SCREEN.
ENDIF.
ENDIF.
ENDIF.
ENDCASE.
ENDFORM. "user_command
FORM pfstatus USING ut_extab TYPE slis_t_extab.
SET PF-STATUS 'STANDARD_FULLSCREEN' OF PROGRAM 'SAPLKKBL'.
ENDFORM. "pfstatus
*---Authorization check---
FORM bukrs_check.
SELECT SINGLE
butxt "Name of the Company Code / Company
ort01 "City
INTO (wk_company, wk_city) FROM t001
WHERE bukrs = pa_bukrs.
IF sy-subrc <> 0.
MESSAGE 'create your own message' TYPE 'I'.
ENDIF.
ENDFORM. " BUKRS_CHECK
FORM build_event_tab.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
i_list_type = 0
IMPORTING
et_events = it_events[].
READ TABLE it_events INTO wa_events
WITH KEY name = 'SLIS_EV_TOP_OF_PAGE'.
IF sy-subrc = 0.
wa_events-form = 'TOP_OF_PAGE'.
MODIFY it_events FROM wa_events INDEX sy-tabix.
ENDIF.
READ TABLE it_events INTO wa_events WITH KEY name =
'SLIS_EV_END_OF_PAGE'.
IF sy-subrc = 0.
wa_events-form = 'END_OF_PAGE'.
MODIFY it_events FROM wa_events INDEX sy-tabix.
ENDIF.
ENDFORM. "Get_events
FORM end_of_page.
DATA: it_header TYPE slis_t_listheader,
wa_header TYPE slis_listheader.
wa_header-typ = 'S'.
wa_header-key = 'MATERIAL'.
* wa_line-info = p1.
APPEND wa_header TO it_header.
CLEAR wa_header.
* READ TABLE it_maktx WITH KEY matnr = p1.
wa_header-typ = 'S'.
wa_header-key = 'DESCRIPTION'.
* wa_line-info = it_maktx-maktx.
APPEND wa_header TO it_header.
CLEAR wa_header.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
* i_logo = 'ENJOYSAP_LOGO'
it_list_commentary = it_header.
ENDFORM. "END_OF_PAGE
FORM top_of_page USING document TYPE REF TO cl_dd_document.
DATA: dl_text(255) TYPE c,
lv_cutime TYPE sy-uzeit,
lv_cudt(20) TYPE c.
lv_cudt = sy-datum.
*--Passing Date----*
WRITE lv_cudt TO dl_text.
CONCATENATE 'Date : ' lv_cudt+6(2) '-'
lv_cudt+4(2) '-'
lv_cudt+0(4) INTO dl_text.
CALL METHOD document->add_text
EXPORTING
text = dl_text.
CLEAR : dl_text.
CALL METHOD document->add_gap
EXPORTING
width = 50.
WRITE 'INCAP CON MFG SER (P) LTD' TO dl_text.
CALL METHOD document->add_text
EXPORTING
text = dl_text
sap_emphasis = cl_dd_area=>heading
sap_style = cl_dd_area=>heading
sap_color = cl_dd_area=>list_total_inv.
CLEAR : dl_text.
CALL METHOD document->add_gap
EXPORTING
width = 150.
lv_cutime = sy-uzeit.
CONCATENATE 'Time : ' lv_cutime+0(2) ':'
lv_cutime+2(2) ':'
lv_cutime+4(2) INTO dl_text.
CALL METHOD document->add_text
EXPORTING
text = dl_text.
CALL METHOD document->add_gap
EXPORTING
width = 60.
WRITE 'Purchase Journal' TO dl_text.
CALL METHOD document->add_text
EXPORTING
text = dl_text
sap_emphasis = cl_dd_area=>heading
sap_style = cl_dd_area=>heading
sap_color = cl_dd_area=>list_total_inv.
CLEAR : dl_text.
CALL METHOD document->add_gap
EXPORTING
width = 50.
ENDFORM. "html_top_of_page -
Displaying ALV hierarchy at a certain level
Hi all,
I have an ALV report that shows a hierarchy. This ALV hierarchy is created using std class CL_GUI_ALV_TREE.
The number of hierarchy levels is dynamic and only determined during run time. However I would like to be able to either display all nodes expanded or only the last node unexpanded. In other words I would like to control which hierarhcy level is expanded when the report is first displayed.
Can anyone suggest a way to do this please?
ThanksIf you want to display the sum for a given hierarchy level, you should use CUBESET function.
e.g.
=IF(B2="all",CUBESET("mycube","[Location].[Location Hierarchy].[Department].&[DEPT 07]","all"),Cubemember("MyCube","[Location].[Location Hierarchy].[Department].&[DEPT 07].&["&B1&"]"))
Hope it helps. -
Alv interactive report for secondary list
Hi All,
This is my code for ALV interactive report. Its working Properly for me when i select material number iam able to display the secondary list properly . if i sorted the basic list other than material number for ex . created date . iam uable to display correct secondary list . Can any one help me in this issue?
REPORT ZWRLOMDMM_PMG_PHWEB_PLD NO STANDARD PAGE HEADING
LINE-SIZE 120
LINE-COUNT 65
MESSAGE-ID 00.
TABLES *
TABLES: MARA , "General Material Data
ZWPBPH. " Published Product Hierarchy
TYPE-POOLS *
TYPE-POOLS:SLIS .
DATA:FIELDCATALOG_BASIC TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE,
FIELDCATALOG_SECONDARY TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE,
GD_TAB_GROUP TYPE SLIS_T_SP_GROUP_ALV,
GD_LAYOUT TYPE SLIS_LAYOUT_ALV,
GD_REPID LIKE SY-REPID.
INTERNAL TABLES *
*Internal Tables to Get Data.
*Internal Table For MARA Table.
DATA:BEGIN OF T_MARA OCCURS 0 ,
MATNR LIKE MARA-MATNR,
MTART LIKE MARA-MTART,
ERSDA LIKE MARA-ERSDA,
ERNAM LIKE MARA-ERNAM,
AENAM LIKE MARA-AENAM,
SPART LIKE MARA-SPART,
END OF T_MARA.
*Internal Table For ZWPBPH Table.
DATA:BEGIN OF T_ZWPBPH OCCURS 0 ,
PBPINO LIKE ZWPBPH-PBPINO,
PBPAPINO LIKE ZWPBPH-PBPAPINO,
END OF T_ZWPBPH.
*Internal Table For Basic List Field Catalog.
DATA:BEGIN OF T_ALV OCCURS 0 ,
MATNR LIKE MARA-MATNR,
MTART LIKE MARA-MTART,
ERSDA LIKE MARA-ERSDA,
ERNAM LIKE MARA-ERNAM,
SPART LIKE MARA-SPART,
SPART1(3),
END OF T_ALV.
*Internal Table For Secondary List Field Catalog.
DATA: BEGIN OF T_ALVS OCCURS 0 ,
MATNR LIKE MARA-MATNR,
AENAM LIKE MARA-AENAM,
LAEDA LIKE MARA-LAEDA,
END OF T_ALVS.
*Internal Table For Model
DATA:T_MODEL LIKE T_ZWPBPH OCCURS 0 WITH HEADER LINE.
*Internal Table For Product
DATA:T_PRODUCT LIKE T_ZWPBPH OCCURS 0 WITH HEADER LINE.
*Internal Table For Family
DATA:T_FAMILY LIKE T_ZWPBPH OCCURS 0 WITH HEADER LINE.
*Internal Table For Line
DATA:T_LINE LIKE T_ZWPBPH OCCURS 0 WITH HEADER LINE.
*Internal Table For Type
DATA:T_TYPE LIKE T_ZWPBPH OCCURS 0 WITH HEADER LINE.
SELECTION SCREEN *
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
PARAMETERS: P_MATN RADIOBUTTON GROUP R1 USER-COMMAND run default 'X'.
SELECT-OPTIONS: P_MATNR FOR MARA-MATNR MODIF ID SC1 .
PARAMETERS: P_DAT RADIOBUTTON GROUP R1 .
SELECT-OPTIONS: : P_DATE FOR MARA-LAEDA MODIF ID SC2.
PARAMETERS: P_DIV RADIOBUTTON GROUP R1 .
SELECT-OPTIONS: : P_DIVIS for mara-spart MODIF ID SC3.
SELECTION-SCREEN END OF BLOCK b1.
INITIALIZATION *
INITIALIZATION.
REFRESH: T_MARA,
T_ZWPBPH,
T_ALV,
T_ALVS,
T_MODEL,
T_PRODUCT,
T_FAMILY,
T_LINE,
T_TYPE.
CLEAR: T_MARA,
T_ZWPBPH,
T_ALV,
T_ALVS,
T_MODEL,
T_PRODUCT,
T_FAMILY,
T_LINE,
T_TYPE.
GD_REPID = SY-REPID.
*AT SELECTION-SCREEN OUTPUT.
AT SELECTION-SCREEN OUTPUT.
LOOP AT SCREEN.
IF P_MATN = 'X'.
FREE : P_DIVIS,P_DATE.
IF SCREEN-GROUP1 = 'SC2' or SCREEN-GROUP1 = 'SC3'.
SCREEN-INPUT = 0.
MODIFY SCREEN.
CONTINUE.
ENDIF .
ENDIF.
IF P_DAT = 'X'.
FREE : P_MATNR,P_DIVIS.
IF SCREEN-GROUP1 = 'SC1' or SCREEN-GROUP1 = 'SC3'.
SCREEN-INPUT = 0.
MODIFY SCREEN.
CONTINUE.
ENDIF .
ENDIF.
IF P_DIV = 'X'.
FREE : P_DATE,P_MATNR.
IF SCREEN-GROUP1 = 'SC1' or SCREEN-GROUP1 = 'SC2'.
SCREEN-INPUT = 0.
MODIFY SCREEN.
CONTINUE.
ENDIF .
ENDIF.
ENDLOOP.
START-OF-SELECTION *
START-OF-SELECTION.
PERFORM GET_FIELDCATALOG_BASIC.
PERFORM GET_FIELDCATALOG_SECONDARY.
PERFORM POPULATE_DATA.
END-OF-SELECTION *
END-OF-SELECTION.
*& FORM GET_FIELDCATALOG_BASIC.
Get Fieldcatalog For Basic List
FORM GET_FIELDCATALOG_BASIC.
FIELDCATALOG_BASIC-FIELDNAME = 'MATNR'.
FIELDCATALOG_BASIC-SELTEXT_M = 'Material Number'.
FIELDCATALOG_BASIC-COL_POS = 0.
FIELDCATALOG_BASIC-OUTPUTLEN = 20.
FIELDCATALOG_BASIC-HOTSPOT = 'X'.
FIELDCATALOG_BASIC-EMPHASIZE = 'X'.
FIELDCATALOG_BASIC-KEY = 'X'.
APPEND FIELDCATALOG_BASIC TO FIELDCATALOG_BASIC.
CLEAR FIELDCATALOG_BASIC.
FIELDCATALOG_BASIC-FIELDNAME = 'MTART'.
FIELDCATALOG_BASIC-SELTEXT_M = 'Material Type'.
FIELDCATALOG_BASIC-COL_POS = 0.
FIELDCATALOG_BASIC-OUTPUTLEN = 20.
FIELDCATALOG_BASIC-EMPHASIZE = 'X'.
FIELDCATALOG_BASIC-KEY = 'X'.
APPEND FIELDCATALOG_BASIC TO FIELDCATALOG_BASIC.
CLEAR FIELDCATALOG_BASIC.
FIELDCATALOG_BASIC-FIELDNAME = 'ERSDA'.
FIELDCATALOG_BASIC-SELTEXT_M = 'Created Date'.
FIELDCATALOG_BASIC-COL_POS = 0.
FIELDCATALOG_BASIC-OUTPUTLEN = 12.
FIELDCATALOG_BASIC-EMPHASIZE = 'X'.
FIELDCATALOG_BASIC-KEY = 'X'.
APPEND FIELDCATALOG_BASIC TO FIELDCATALOG_BASIC.
CLEAR FIELDCATALOG_BASIC.
FIELDCATALOG_BASIC-FIELDNAME = 'ERNAM'.
FIELDCATALOG_BASIC-SELTEXT_M = 'Created By'.
FIELDCATALOG_BASIC-COL_POS = 0.
FIELDCATALOG_BASIC-OUTPUTLEN = 15.
FIELDCATALOG_BASIC-EMPHASIZE = 'X'.
FIELDCATALOG_BASIC-KEY = 'X'.
APPEND FIELDCATALOG_BASIC TO FIELDCATALOG_BASIC.
CLEAR FIELDCATALOG_BASIC.
FIELDCATALOG_BASIC-FIELDNAME = 'SPART'.
FIELDCATALOG_BASIC-SELTEXT_M = 'Division PMG'.
FIELDCATALOG_BASIC-COL_POS = 0.
FIELDCATALOG_BASIC-OUTPUTLEN = 14.
FIELDCATALOG_BASIC-EMPHASIZE = 'X'.
FIELDCATALOG_BASIC-KEY = 'X'.
APPEND FIELDCATALOG_BASIC TO FIELDCATALOG_BASIC.
CLEAR FIELDCATALOG_BASIC.
FIELDCATALOG_BASIC-FIELDNAME = 'SPART1'.
FIELDCATALOG_BASIC-SELTEXT_M = 'Division PhWEB'.
FIELDCATALOG_BASIC-COL_POS = 0.
FIELDCATALOG_BASIC-OUTPUTLEN = 14.
FIELDCATALOG_BASIC-EMPHASIZE = 'X'.
FIELDCATALOG_BASIC-KEY = 'X'.
APPEND FIELDCATALOG_BASIC TO FIELDCATALOG_BASIC.
CLEAR FIELDCATALOG_BASIC.
ENDFORM. "GET_FIELDCATALOG_BASIC
*& FORM GET_FIELDCATALOG_SECONDARY
Get Fieldcatalog For Secondary List
FORM GET_FIELDCATALOG_SECONDARY.
FIELDCATALOG_SECONDARY-FIELDNAME = 'MATNR'.
FIELDCATALOG_SECONDARY-SELTEXT_M = 'Material Number'.
FIELDCATALOG_SECONDARY-COL_POS = 0.
FIELDCATALOG_SECONDARY-OUTPUTLEN = 20.
FIELDCATALOG_SECONDARY-EMPHASIZE = 'X'.
FIELDCATALOG_SECONDARY-KEY = 'X'.
APPEND FIELDCATALOG_SECONDARY TO FIELDCATALOG_SECONDARY.
CLEAR FIELDCATALOG_SECONDARY.
FIELDCATALOG_SECONDARY-FIELDNAME = 'AENAM'.
FIELDCATALOG_SECONDARY-SELTEXT_M = 'Changed By'.
FIELDCATALOG_SECONDARY-COL_POS = 0.
FIELDCATALOG_SECONDARY-OUTPUTLEN = 20.
FIELDCATALOG_SECONDARY-EMPHASIZE = 'X'.
FIELDCATALOG_SECONDARY-KEY = 'X'.
APPEND FIELDCATALOG_SECONDARY TO FIELDCATALOG_SECONDARY.
CLEAR FIELDCATALOG_SECONDARY.
FIELDCATALOG_SECONDARY-FIELDNAME = 'LAEDA'.
FIELDCATALOG_SECONDARY-SELTEXT_M = 'Changed ON'.
FIELDCATALOG_SECONDARY-COL_POS = 0.
FIELDCATALOG_SECONDARY-OUTPUTLEN = 20.
FIELDCATALOG_SECONDARY-EMPHASIZE = 'X'.
FIELDCATALOG_SECONDARY-KEY = 'X'.
APPEND FIELDCATALOG_SECONDARY TO FIELDCATALOG_SECONDARY.
CLEAR FIELDCATALOG_SECONDARY.
ENDFORM. "GET_FIELDCATALOG_SECONDARY
*& FORM POPULATE_DATA
FORM POPULATE_DATA.
*Get Data From MARA And ZWPBPH Tables
IF P_MATN = 'X'.
SELECT MATNR MTART ERSDA ERNAM AENAM SPART FROM MARA INTO TABLE T_MARA
where MATNR IN P_MATNR .
IF SY-SUBRC <> 0.
MESSAGE E001(0) WITH 'Invalid Material Number'.
ENDIF.
ELSEIF P_DAT = 'X'.
SELECT MATNR MTART ERSDA ERNAM AENAM SPART FROM MARA INTO TABLE T_MARA
where LAEDA IN P_DATE .
IF SY-SUBRC <> 0.
MESSAGE E001(0) WITH 'Invalid Date Range'.
ENDIF.
ELSEIF P_DIV = 'X'.
SELECT MATNR MTART ERSDA ERNAM AENAM SPART FROM MARA INTO TABLE T_MARA
where SPART IN P_DIVIS .
IF SY-SUBRC <> 0.
MESSAGE E001(0) WITH 'Invalid Division'.
ENDIF.
ELSEIF P_MATN = ' ' AND P_DAT = ' ' AND P_DIV = ' '.
SELECT MATNR MTART ERSDA ERNAM AENAM SPART FROM MARA INTO TABLE T_MARA.
ENDIF.
DELETE ADJACENT DUPLICATES FROM T_MARA COMPARING MATNR.
SORT T_MARA BY MATNR.
IF T_MARA[] IS NOT INITIAL .
SELECT PBPINO PBPAPINO FROM ZWPBPH INTO TABLE T_ZWPBPH FOR ALL ENTRIES
IN T_MARA WHERE PBPINO = T_MARA-MATNR.
ENDIF.
IF SY-SUBRC = 0.
LOOP AT T_ZWPBPH.
SELECT SINGLE PBPINO PBPAPINO FROM ZWPBPH INTO T_MODEL WHERE
PBPINO = T_ZWPBPH-PBPAPINO.
IF SY-SUBRC = 0.
SELECT SINGLE PBPINO PBPAPINO FROM ZWPBPH INTO T_PRODUCT WHERE
PBPINO
= T_MODEL-PBPAPINO.
ENDIF.
IF SY-SUBRC = 0.
SELECT SINGLE PBPINO PBPAPINO FROM ZWPBPH INTO T_FAMILY WHERE
PBPINO = T_PRODUCT-PBPAPINO.
ENDIF.
IF SY-SUBRC = 0.
SELECT SINGLE PBPINO PBPAPINO FROM ZWPBPH INTO T_LINE WHERE
PBPINO = T_FAMILY-PBPAPINO.
ENDIF.
IF SY-SUBRC = 0.
SELECT SINGLE PBPINO PBPAPINO FROM ZWPBPH INTO T_TYPE WHERE PBPINO
= T_LINE-PBPAPINO.
ENDIF.
IF SY-SUBRC = 0.
SELECT SINGLE MTART ERSDA ERNAM SPART FROM MARA INTO CORRESPONDING
FIELDS OF T_ALV WHERE MATNR = T_ZWPBPH-PBPINO AND SPART <>
T_TYPE-PBPAPINO+1(2).
ENDIF.
IF SY-SUBRC = 0.
MOVE T_ZWPBPH-PBPINO TO T_ALV-MATNR.
MOVE T_TYPE-PBPAPINO+1(2) TO T_ALV-SPART1.
APPEND T_ALV.
SELECT SINGLE MATNR AENAM LAEDA FROM MARA INTO CORRESPONDING
FIELDS OF T_ALVS WHERE MATNR = T_ZWPBPH-PBPINO.
APPEND T_ALVS.
CLEAR T_ALVS.
ENDIF.
ENDLOOP.
ENDIF.
SORT T_ALV BY MATNR.
SORT T_ALVS BY MATNR.
call function 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = GD_REPID
i_callback_user_command = 'DISPLAY_DETAIL'
it_fieldcat = FIELDCATALOG_BASIC[]
i_save = 'X'
TABLES
t_outtab = T_ALV
EXCEPTIONS
program_error = 1
others = 2.
ENDFORM. "POPULATE_DATA
*& Form DISPLAY_DETAIL
text
-->UCOMM text
-->SELFIELD text
FORM DISPLAY_DETAIL USING UCOMM LIKE SY-UCOMM
SELFIELD TYPE SLIS_SELFIELD.
Select Material Number For Secondary List
DATA: T_ALV_TEMP LIKE T_ALVS OCCURS 0 WITH HEADER LINE.
IF UCOMM = '&IC1'.
READ TABLE T_ALVS INDEX SELFIELD-TABINDEX.
IF SY-SUBRC = 0.
MOVE T_ALVS TO T_ALV_TEMP.
APPEND T_ALV_TEMP.
ENDIF.
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
i_callback_program = GD_REPID
it_fieldcat = FIELDCATALOG_SECONDARY[]
TABLES
t_outtab = T_ALV_TEMP.
ENDIF.
ENDFORM. "DISPLAY_DETAILHi,
Try this in the routine display details
READ TABLE T_ALV INDEX SELFIELD-TABINDEX.
READ TABLE T_ALVS with key matnr = T_ALV-MATNR
thanks -
Hi Experts,
I have Hierarchy report, but i took 2 tables header and item tables, but in my output item table is dispalying but heading is not displaying, is there any setting problem
and header table heading is gone right side, not displaying properly.
Please help in this regards.
Thanks
RamsHi
Here i am pasting the code.
EPORT /scl/rdfiarr_cust_ageanalys NO STANDARD PAGE HEADING
LINE-SIZE 255
LINE-COUNT 100
MESSAGE-ID /scl/tin_rtr.
*& Include /SCL/RDFIARR_CUST_AGEIANA_TOP
*TYPE-POOLS declaration
TYPE-POOLS: slis.
*TYPES DECLARATION
TYPES: BEGIN OF ty_bsid,
kunnr TYPE kunnr, "Customer Number
bukrs TYPE bukrs, "Company code
zterm TYPE dzterm, "Payment terms
gjahr TYPE gjahr, "Fiscal Year
dmbtr TYPE dmbtr, "Amount in Local Currency
shkzg TYPE shkzg, "Debit/Credit Indicator
budat TYPE budat, "Posting Date in the Document
augdt TYPE augdt, "Clearing Date
bldat TYPE bldat, "Document Date in Document
augbl TYPE augbl, "Document Number of the Clearing Document
belnr TYPE belnr_d, "Accounting Document Number
rebzg TYPE rebzg, "No.of the Invoice the Transaction Belongs to
rebzj TYPE rebzj, "Fiscal Year of the Relevant Invoice
rebzz TYPE rebzz, "Line Item in the Relevant Invoice
waers TYPE waers, "Currency Key
gsber TYPE gsber, "Business area
vkorg TYPE vkorg, "Sales Organization
END OF ty_bsid.
TYPES: BEGIN OF ty_bsad,
kunnr TYPE kunnr, "Customer Number
bukrs TYPE bukrs, "Company code
zterm TYPE dzterm, "Payment terms
gjahr TYPE gjahr, "Fiscal Year
dmbtr TYPE dmbtr, "Amount in Local Currency
shkzg TYPE shkzg, "Debit/Credit Indicator
budat TYPE budat, "Posting Date in the Document
augdt TYPE augdt, "Clearing Date
bldat TYPE bldat, "Document Date in Document
augbl TYPE augbl, "Document Number of the Clearing Doc
belnr TYPE belnr_d, "Accounting Document Number
rebzg TYPE rebzg, "No. of the Invoice the Trans Belongs to
waers TYPE waers, "Currency Key
gsber TYPE gsber, "Business area
vkorg TYPE vkorg, "Sales Organisation
END OF ty_bsad.
TYPES: BEGIN OF ty_cust,
kunnr TYPE kunnr, "Customer Number
vkorg TYPE vkorg, "Sales Organisaton
name1 TYPE name1_gp, "Customer Name
zterm TYPE dzterm, "Payment terms
vwerk TYPE dwerk_ext, "Delivery Plant
sal_r TYPE pernr_d, "Personnel Number (Sales)
crd_r TYPE pernr_d, "Personnel Number (Credit)
ctlpc TYPE ctlpc_cm, "Credit management: Risk category
katr1 TYPE katr1, "Customer Activity Cluster
klimk TYPE klimk, "Credit limit
gsber TYPE gsber, "Business Area
END OF ty_cust.
TYPES: BEGIN OF ty_data,
bukrs TYPE bukrs, "Company code
gjahr TYPE gjahr, "Fisacal year
gsber TYPE gsber, "Business area
vwerk TYPE dwerk_ext, "Delivery plant
zterm TYPE dzterm, "Payment terms
bldat TYPE bldat, "Document Date in Document
kunnr TYPE kunnr, "Customer Number
dmbtr TYPE dmbtr, "Amount in Local Currency
name1 TYPE name1_gp, "Customer name
sal_r TYPE pernr_d, "Salres representative
crd_r TYPE pernr_d, "Credit representative
ctlpc TYPE ctlpc_cm, "Credit management: Risk category
katr1 TYPE katr1, "Customer Activity Cluster
waers TYPE waers, "Currency Key
vkorg TYPE vkorg, "Sales organisation
END OF ty_data.
TYPES: BEGIN OF ty_knvv,
kunnr TYPE kunnr, "Customer number
vwerk TYPE vwerk, "Palnt
vkorg TYPE vkorg, "Sales organisation
zterm TYPE dzterm, "Payment terms
END OF ty_knvv.
TYPES: BEGIN OF ty_knvp,
parvw TYPE parvw, "Partner Function
pernr TYPE pernr_d, "Personnel Number
END OF ty_knvp.
TYPES: BEGIN OF ty_knb1,
kunnr TYPE kunnr, "Customer number
bukrs TYPE bukrs, "Company Code
zterm TYPE dzterm, "Payment terms
END OF ty_knb1.
TYPES: BEGIN OF ty_kna1,
kunnr TYPE kunnr, "Customer number
name1 TYPE name1_gp, "Customer name
katr1 TYPE katr1, "Customer Activity Cluster
END OF ty_kna1.
TYPES : BEGIN OF ty_klimk,
kunnr TYPE kunnr, "Customer number
kkber TYPE kkber, "Credit control area
ctlpc TYPE ctlpc_cm, "Credit management: Risk category
klimk TYPE klimk, "Customer's credit
END OF ty_klimk.
TYPES: BEGIN OF ty_zterm,
zterm TYPE dzterm, "Terms of Payment Key
zfael TYPE dzfael, "Calendar Day for the Baseline Date
"for Payment
zmona TYPE dzmona, "Additional Months
zstg1 TYPE dzstg1_052,
ztag1 TYPE dztage, "Days from Baseline Date for Payment
ztag2 TYPE dztage, "Days from Baseline Date for Payment
ztag3 TYPE dztage, "Days from Baseline Date for Payment
ztag4 TYPE dztage, "Days from Baseline Date for Payment
END OF ty_zterm.
TYPES: BEGIN OF ty_analyhead,
kunnr TYPE kunnr, "customer number
bukrs TYPE bukrs, "Company code
zterm TYPE dzterm, "Payment terms
total TYPE dmbtr, "Total
expand(1) TYPE c, "Expand
END OF ty_analyhead.
TYPES: BEGIN OF ty_analysis,
bukrs TYPE bukrs, "Company code
vwerk TYPE vwerk, "Delivery Plant
sal_r TYPE pernr_d, "Sales Representative
crd_r TYPE pernr_d, "Credit Representative
gsber TYPE gsber, "business area
zterm TYPE dzterm, "Payment terms
kunnr TYPE kunnr, "customer number
name1 TYPE name1_gp, "Customer name
total TYPE dmbtr, "Total
dmbtr1 TYPE dmbtr, "Bucket 1
dmbtr2 TYPE dmbtr, "Bucket 2
dmbtr3 TYPE dmbtr, "Bucket 3
dmbtr4 TYPE dmbtr, "Bucket 4
dmbtr5 TYPE dmbtr, "Bucket
crlimit TYPE dmbtr, "Credit limit
waers TYPE waers, "Currency
END OF ty_analysis.
*variable declaration
DATA: v_bukrs TYPE bukrs, "Company Code
v_kunnr TYPE kunnr, "Customer Number
v_pernr TYPE pernr_d, "Personnel Number
v_zterm TYPE dzterm, "Payment Terms
v_ctlpc TYPE ctlpc_cm, "Credit management: Risk category
v_budat TYPE budat, "Posting Date in the Document
v_gjahr TYPE gjahr, "Fiscal Year
v_bldat TYPE bldat. "Document Date in Document
DATA: v_m1(2) TYPE c VALUE '-1',
v_m2(2) TYPE c VALUE '-2',
v_m3(2) TYPE c VALUE '-3',
v_m4(2) TYPE c VALUE '-4'.
DATA: v_current TYPE sy-datum,
v_month1 TYPE sy-datum,
v_month2 TYPE sy-datum,
v_month3 TYPE sy-datum,
v_month4 TYPE sy-datum.
DATA: w_akont TYPE akont,
cc_waers TYPE waers,
cc_kkber TYPE kkber.
DATA: wa_bsid1 TYPE ty_bsid,
found TYPE c,
idx TYPE sy-tabix.
DATA: v_field(10) TYPE c,
v_days(4) TYPE c VALUE 'days',
v_days2(3) TYPE c,
v_days3(3) TYPE c,
v_days4(3) TYPE c,
v_days5(3) TYPE c.
DATA: v_budat1 TYPE bsad-budat,
v_bldat1 TYPE bsad-bldat,
wa_bsad1 TYPE ty_bsad,
idx1 TYPE sy-tabix,
found1 TYPE c.
CONSTANTS DECLARATION
CONSTANTS: c_0 TYPE c VALUE '0',
c_1 TYPE c VALUE '1',
c_2 TYPE c VALUE '2',
c_3 TYPE c VALUE '3',
c_4 TYPE c VALUE '4',
c_5 TYPE c VALUE '5',
c_6 TYPE c VALUE '6',
c_7 TYPE c VALUE '7',
c_8 TYPE c VALUE '8',
c_9 TYPE c VALUE '9',
c_11(2) TYPE c VALUE '11',
c_13(2) TYPE c VALUE '13',
c_14(2) TYPE c VALUE '14',
c_15(2) TYPE c VALUE '15',
c_16(2) TYPE c VALUE '16',
c_17(2) TYPE c VALUE '17',
c_19(2) TYPE c VALUE '19',
c_31(2) TYPE c VALUE '31',
c_40(2) TYPE c VALUE '40',
c_45(2) TYPE c VALUE '45',
c_60(2) TYPE c VALUE '60',
c_75(2) TYPE c VALUE '75',
c_164(3) TYPE c VALUE '164',
c_191(3) TYPE c VALUE '191',
c_x TYPE c VALUE 'X',
c_spc TYPE c VALUE ' ',
c_hyp TYPE c VALUE '-',
c_dot TYPE c VALUE '.',
c_td TYPE c VALUE ':',
c_h TYPE c VALUE 'H',
c_zr(2) TYPE c VALUE 'ZR',
c_kb(2) TYPE c VALUE 'KB',
c_ic1(4) TYPE c VALUE '&IC1'.
*Internal table declaration
DATA : i_bsid TYPE STANDARD TABLE OF ty_bsid,
i_bsad TYPE STANDARD TABLE OF ty_bsad,
i_cust TYPE STANDARD TABLE OF ty_cust,
i_data TYPE STANDARD TABLE OF ty_data,
i_knvp TYPE STANDARD TABLE OF ty_knvp,
i_zterm TYPE STANDARD TABLE OF ty_zterm,
i_analysis TYPE STANDARD TABLE OF ty_analysis,
i_analysis2 TYPE STANDARD TABLE OF ty_analysis,
i_analyhead TYPE STANDARD TABLE OF ty_analyhead,
i_analytot TYPE STANDARD TABLE OF ty_analysis,
i_knvv TYPE STANDARD TABLE OF ty_knvv,
i_klimk TYPE STANDARD TABLE OF ty_klimk,
i_knb1 TYPE STANDARD TABLE OF ty_knb1,
i_kna1 TYPE STANDARD TABLE OF ty_kna1.
Work Area declaration
DATA:
wa_bsid TYPE ty_bsid,
wa_bsad TYPE ty_bsad,
wa_cust TYPE ty_cust,
wa_data TYPE ty_data,
wa_knvp TYPE ty_knvp,
wa_zterm TYPE ty_zterm,
wa_analysis TYPE ty_analysis,
wa_analyhead TYPE ty_analyhead,
wa_analysis2 TYPE ty_analysis,
wa_analytot TYPE ty_analysis,
wa_knvv TYPE ty_knvv,
wa_kna1 TYPE ty_kna1,
wa_knb1 TYPE ty_knb1,
wa_klimk TYPE ty_klimk.
*ALV declaration
DATA: i_fldcat TYPE slis_t_fieldcat_alv, "Field catalog for ALV
wa_fldcat TYPE slis_fieldcat_alv, "Field catalog for ALV
i_sort TYPE slis_t_sortinfo_alv, "SLIS
wa_sort TYPE slis_sortinfo_alv, "Globale Typen für generische
g_repid TYPE sy-repid,
rs_selfield TYPE slis_selfield. "Cursor position
DATA : wa_event TYPE slis_alv_event, "Globale Typen für generische Listbausteine
i_keyinfo TYPE slis_keyinfo_alv, "Globale Typen für generische Listbausteine
i_layout TYPE slis_layout_alv, "Globale Typen für generische Listbausteine
v_repid TYPE sy-repid,
i_event TYPE slis_t_event, "SLIS
i_listhead TYPE slis_t_listheader, "SLIS
wa_listhead TYPE slis_listheader. "Globale Typen für generische Listbausteine
SELECTION-SCREEN
SELECTION-SCREEN BEGIN OF BLOCK bl11 WITH FRAME TITLE text-001 .
SELECT-OPTIONS: s_bukrs FOR v_bukrs OBLIGATORY,
s_akont FOR w_akont.
SELECTION-SCREEN END OF BLOCK bl11.
SELECTION-SCREEN BEGIN OF BLOCK bl12 WITH FRAME TITLE text-002 .
SELECT-OPTIONS: s_kunnr FOR v_kunnr,
s_sal_r FOR v_pernr MATCHCODE OBJECT prem,
s_crd_r FOR v_pernr MATCHCODE OBJECT prem,
s_zterm FOR v_zterm,
s_ctlpc FOR v_ctlpc.
SELECTION-SCREEN END OF BLOCK bl12.
SELECTION-SCREEN BEGIN OF BLOCK bl13 WITH FRAME TITLE text-003 .
SELECT-OPTIONS:
s_budat FOR v_budat, "Posting date
s_gjahr FOR v_gjahr. "Fiscal year
PARAMETERS p_bldat LIKE v_bldat OBLIGATORY. "Document date
SELECTION-SCREEN END OF BLOCK bl13.
SELECTION-SCREEN BEGIN OF BLOCK bl14 WITH FRAME TITLE text-004 .
PARAMETERS: pt_def RADIOBUTTON GROUP pmt, "Default
pt_man RADIOBUTTON GROUP pmt. "Manual Override
PARAMETERS: val1(3) TYPE n. "Bucket1
SELECTION-SCREEN COMMENT 60(10) text-006 FOR FIELD val1.
PARAMETERS: val2(3) TYPE n, "Bucket 2
val3(3) TYPE n, "Bucket 3
val4(3) TYPE n. "Bucket 4
SELECTION-SCREEN END OF BLOCK bl14.
SELECTION-SCREEN BEGIN OF BLOCK bl15 WITH FRAME TITLE text-005 .
PARAMETERS: age_cc AS CHECKBOX DEFAULT 'X', "Compamy Code
age_ccc AS CHECKBOX DEFAULT 'X', "Companycode&Customer
age_sp AS CHECKBOX DEFAULT 'X', "Sales Rep
age_cr AS CHECKBOX DEFAULT 'X', "Credit Rep
age_cu AS CHECKBOX DEFAULT 'X'. "Customer
SELECTION-SCREEN END OF BLOCK bl15.
*& INITIALIZATION *
INITIALIZATION.
PERFORM initialization.
*& AT SELECTION-SCREEN OUTPUT. *
AT SELECTION-SCREEN.
*& PERFORM FOR FIELD VALIDATION. *
*****Validation for Compnay code
PERFORM validate_company_code.
*****Validation for Customer
PERFORM validate_customer.
*****Validation for check boxes
PERFORM validate_options.
EVENT TOP-OF-PAGE *
TOP-OF-PAGE.
***PERFORM TOPOFPAGE FROM BUILD_EVENT_TAB.
PERFORM topofpage.
*START-OF-SELECTION
START-OF-SELECTION.
****Read data from t001,
PERFORM read_t001.
****Get data from BSID
PERFORM read_bsid.
****Get the vkorg from knvv knb1 into BSID(open items)
IF NOT i_bsid[] IS INITIAL.
Get data into Payment terms in I_BSID
PERFORM get_data_payment_bsid.
ENDIF.
****Data data from BSAD (cleared items)
PERFORM read_bsad.
IF NOT i_bsad[] IS INITIAL.
Get data into Payment terms in I_BSAD
PERFORM get_data_payment_bsad.
ENDIF.
*****Consolidation of data
PERFORM consolidate_data.
*****Buckets caliculations
PERFORM print_age_analysis.
Get the subtotals only
PERFORM get_data_totals_KNB1.
PERFORM get_data_totals.
END-OF-SELECTION *
*END-OF-SELECTION.
IF NOT i_analysis IS INITIAL.
***PERFORM FOR FIELD CATALOG.
***PERFORM FOR BUILD KEYINFO.
PERFORM build_keyinfo.
***PERFORM FOR BUILD EVENT
PERFORM build_event_tab.
***PERFORM FOR BUILD LAYOUT
PERFORM build_layout.
***PERFORM TO DISPLAY THE OUTPUT
IF pt_def = c_x.
PERFORM build_field_catlog_header.
PERFORM build_field_catlog_item.
ELSE.
PERFORM build_field_catlog_header.
PERFORM build_field_catlog_item2.
ENDIF.
PERFORM display_data.
ELSE.
MESSAGE i001.
LEAVE LIST-PROCESSING.
ENDIF.
*& Include /SCL/RDFIARR_CUST_AGEIANA_FORM
*& Form read_t001
FORM read_t001.
CLEAR cc_waers.
READ TABLE s_bukrs INDEX 1 TRANSPORTING NO FIELDS.
CLEAR cc_kkber.
SELECT SINGLE waers kkber INTO (cc_waers, cc_kkber)
FROM t001 WHERE bukrs = s_bukrs-low.
ENDFORM. "read_t001
*& Form read_bsid - Read the data into I_BSID
FORM read_bsid.
SELECT kunnr
name1
katr1
FROM kna1
INTO TABLE i_kna1
WHERE kunnr IN s_kunnr.
IF sy-subrc = c_0.
SORT i_kna1 BY kunnr.
IF s_zterm IS INITIAL.
**Get Payment term from KNB1
SELECT kunnr
bukrs
zterm
FROM
knb1
INTO TABLE i_knb1
FOR ALL ENTRIES IN i_kna1
WHERE kunnr = i_kna1-kunnr
AND zterm IN s_zterm
AND bukrs IN s_bukrs.
IF sy-subrc = c_0.
SELECT kunnr
bukrs
zterm
gjahr
dmbtr
shkzg
augdt
budat
bldat
augbl
belnr
rebzg
rebzz
rebzj
gsber
waers
INTO TABLE i_bsid FROM bsid
FOR ALL ENTRIES IN i_knb1
WHERE kunnr = i_knb1-kunnr
AND zterm = i_knb1-zterm
AND bukrs IN s_bukrs
AND gjahr IN s_gjahr
AND budat IN s_budat
AND hkont IN s_akont.
IF sy-subrc = c_0.
SORT i_bsid BY kunnr.
ENDIF.
ENDIF.
ELSE.
*Get the payment term from BSID
SELECT kunnr
bukrs
zterm
gjahr
dmbtr
shkzg
augdt
budat
bldat
augbl
belnr
rebzg
rebzz
rebzj
gsber
waers
INTO TABLE i_bsid FROM bsid
FOR ALL ENTRIES IN i_kna1
WHERE kunnr = i_kna1-kunnr
AND zterm IN s_zterm
AND bukrs IN s_bukrs
AND gjahr IN s_gjahr
AND budat IN s_budat
AND hkont IN s_akont.
IF sy-subrc = c_0.
SORT i_bsid BY kunnr.
ENDIF.
ENDIF.
ENDIF.
ENDFORM. " read_bsid
*& Form Get_data_payment_BSID
text
--> p1 text
<-- p2 text
FORM get_data_payment_bsid .
***get vkor from knvv
SELECT kunnr
vwerk
vkorg
zterm
FROM knvv INTO TABLE i_knvv
FOR ALL ENTRIES IN i_bsid
WHERE kunnr = i_bsid-kunnr
AND zterm IN s_zterm.
SORT i_knvv BY kunnr zterm.
*********15.1.2008.....
IF s_zterm IS INITIAL.
SORT i_knb1 BY kunnr zterm bukrs.
READ TABLE i_knb1 INTO wa_knb1 WITH KEY
kunnr = wa_bsid-kunnr
zterm = wa_bsid-zterm
bukrs = wa_bsid-bukrs
BINARY SEARCH.
IF sy-subrc = c_0.
wa_bsid-zterm = wa_knb1-zterm.
MODIFY i_bsid FROM wa_bsid INDEX sy-tabix.
*else.
******end 15.1.2008
LOOP AT i_bsid INTO wa_bsid.
READ TABLE i_knvv INTO wa_knvv WITH KEY
kunnr = wa_bsid-kunnr
zterm = wa_bsid-zterm
BINARY SEARCH.
IF sy-subrc = c_0.
wa_bsid-vkorg = wa_knvv-vkorg.
MODIFY i_bsid FROM wa_bsid.
CLEAR wa_knvv.
ENDIF.
CLEAR: wa_bsid, wa_knvv.
ENDLOOP.
endif.
endif.
ENDFORM. " Get_data_payment_BSID
*& Form read_bsad - Read the data into I_BSAD
FORM read_bsad.
**Get the customer from KNB1.
IF s_zterm IS INITIAL.
SELECT kunnr
bukrs
zterm
FROM
knb1
INTO TABLE i_knb1
FOR ALL ENTRIES IN i_kna1
WHERE kunnr = i_kna1-kunnr
AND zterm IN s_zterm
AND bukrs IN s_bukrs.
IF sy-subrc = c_0.
SELECT kunnr
bukrs
zterm
gjahr
dmbtr
shkzg
budat
bldat
augdt
augbl
belnr
rebzg
waers
gsber
INTO TABLE i_bsad FROM bsad
FOR ALL ENTRIES IN i_knb1
WHERE kunnr = i_knb1-kunnr
AND zterm = i_knb1-zterm
AND bukrs = i_knb1-bukrs.
ENDIF.
ELSE.
*Get the payment term from BSID
SELECT kunnr
bukrs
zterm
gjahr
dmbtr
shkzg
budat
bldat
augdt
augbl
belnr
rebzg
waers
gsber
INTO TABLE i_bsad FROM bsad
FOR ALL ENTRIES IN i_knb1
WHERE kunnr = i_knb1-kunnr
WHERE bukrs IN s_bukrs
AND zterm IN s_zterm
AND kunnr IN s_kunnr
AND gjahr IN s_gjahr
AND budat IN s_budat
AND augdt LE p_bldat
AND hkont IN s_akont.
ENDIF.
*endif.
ENDFORM. " read_bsad
*& Form get_data_payment_bsad
text
--> p1 text
<-- p2 text
FORM get_data_payment_bsad .
SORT i_knvv BY kunnr zterm.
***********15.1.2008
LOOP AT i_bsad INTO wa_bsad.
IF s_zterm IS INITIAL.
SORT i_knb1 BY kunnr zterm bukrs.
READ TABLE i_knb1 INTO wa_knb1 WITH KEY
kunnr = wa_bsad-kunnr
zterm = wa_bsad-zterm
bukrs = wa_bsad-bukrs
BINARY SEARCH.
IF sy-subrc = c_0.
wa_bsad-zterm = wa_knb1-zterm.
MODIFY i_bsad FROM wa_bsad INDEX sy-tabix.
end 15.1.2008
*else.
LOOP AT i_bsad INTO wa_bsad.
SORT i_knb1 BY kunnr zterm bukrs.
READ TABLE i_knvv INTO wa_knvv WITH KEY
kunnr = wa_bsad-kunnr
zterm = wa_bsad-zterm
BINARY SEARCH.
IF sy-subrc = c_0.
wa_bsad-vkorg = wa_knvv-vkorg.
MODIFY i_bsad FROM wa_bsad.
CLEAR wa_knvv.
ENDIF.
*endif.
*endif.
ENDLOOP.
ENDFORM. " get_data_payment_bsad
*& Form consolidate_data
FORM consolidate_data.
REFRESH i_cust.
LOOP AT i_bsid INTO wa_bsid.
CLEAR wa_cust.
wa_cust-kunnr = wa_bsid-kunnr.
wa_cust-vkorg = wa_bsid-vkorg.
COLLECT wa_cust INTO i_cust.
ENDLOOP.
LOOP AT i_bsad INTO wa_bsad.
CLEAR wa_cust.
wa_cust-kunnr = wa_bsad-kunnr.
wa_cust-vkorg = wa_bsad-vkorg.
COLLECT wa_cust INTO i_cust.
ENDLOOP.
PERFORM customer_information.
PERFORM customer_payment_terms.
PERFORM change_payment_ageing_date.
PERFORM collect_bsid.
PERFORM collect_bsad.
PERFORM exclude_from_data.
PERFORM age_analysis.
ENDFORM. " consolidate_data
*& Form customer_payment_terms
FORM customer_payment_terms.
CLEAR wa_zterm.
IF pt_man = c_x.
wa_zterm-zterm = s_zterm-low.
wa_zterm-ztag1 = val1.
wa_zterm-ztag2 = val2.
wa_zterm-ztag3 = val3.
wa_zterm-ztag4 = val4.
APPEND wa_zterm TO i_zterm.
ELSE.
SELECT zterm
zfael
zmona
zstg1
ztag1
ztag2
ztag3
FROM t052 INTO TABLE i_zterm
WHERE zterm IN s_zterm.
ENDIF.
ENDFORM. " customer_payment_terms
*& Form customer_information
FORM customer_information.
SELECT kunnr ctlpc kkber klimk INTO TABLE i_klimk
FROM knkk
WHERE kunnr IN s_kunnr
AND kkber = cc_kkber.
REFRESH i_zterm.
IF sy-subrc = c_0.
SORT i_kna1 BY kunnr
name1
katr1.
LOOP AT i_cust INTO wa_cust.
CLEAR : wa_knvv, wa_kna1.
READ TABLE i_kna1 INTO wa_kna1 WITH KEY
kunnr = wa_cust-kunnr BINARY SEARCH.
IF sy-subrc = c_0.
wa_cust-name1 = wa_kna1-name1.
wa_cust-katr1 = wa_kna1-katr1.
MODIFY i_cust FROM wa_cust.
ENDIF.
**Get the payment term into i_cust into
SORT i_bsid BY kunnr
zterm.
CLEAR wa_bsid.
READ TABLE i_bsid INTO wa_bsid WITH KEY
kunnr = wa_cust-kunnr BINARY SEARCH.
IF sy-subrc = c_0.
wa_cust-zterm = wa_bsid-zterm.
MODIFY i_cust FROM wa_cust.
ENDIF.
SORT i_knvv BY kunnr
vkorg
vwerk.
READ TABLE i_knvv INTO wa_knvv WITH KEY
vkorg = wa_cust-vkorg
kunnr = wa_cust-kunnr
zterm = wa_cust-zterm
BINARY SEARCH.
IF sy-subrc = c_0.
wa_cust-vwerk = wa_knvv-vwerk.
MODIFY i_cust FROM wa_cust.
ENDIF.
SORT i_klimk BY kunnr
klimk.
READ TABLE i_klimk INTO wa_klimk WITH KEY
kunnr = wa_cust-kunnr
BINARY SEARCH.
wa_cust-klimk = wa_klimk-klimk.
MODIFY i_cust FROM wa_cust.
ENDLOOP.
ENDIF.
***get partner details
SELECT parvw pernr INTO TABLE i_knvp
FROM knvp FOR ALL ENTRIES IN i_cust
WHERE kunnr = i_cust-kunnr
AND vkorg = i_cust-vkorg
AND ( parvw = c_zr OR parvw = c_kb ).
IF sy-subrc = c_0.
LOOP AT i_knvp INTO wa_knvp.
CASE wa_knvp-parvw.
WHEN c_zr.
wa_cust-sal_r = wa_knvp-pernr.
WHEN c_kb.
wa_cust-crd_r = wa_knvp-pernr.
ENDCASE.
APPEND wa_cust TO i_cust.
ENDLOOP.
ENDIF.
REFRESH i_knvp.
ENDFORM. " customer_information
*& Form collect_bsid
FORM collect_bsid.
SORT i_cust BY kunnr
vkorg.
LOOP AT i_bsid INTO wa_bsid.
MOVE-CORRESPONDING wa_bsid TO wa_data.
CLEAR wa_cust.
READ TABLE i_cust INTO wa_cust WITH KEY kunnr = wa_bsid-kunnr
zterm = wa_bsid-zterm
vkorg = wa_bsid-vkorg
BINARY SEARCH.
"gsber = wa_bsid-gsber.
IF sy-subrc = c_0.
MOVE-CORRESPONDING wa_cust TO wa_data.
ENDIF.
IF wa_bsid-shkzg = c_h.
wa_data-dmbtr = wa_data-dmbtr * - c_1.
ENDIF.
APPEND wa_data TO i_data.
COLLECT wa_data INTO i_data.
CLEAR: wa_bsid, wa_data.
ENDLOOP.
ENDFORM. " collect_bsid
*& Form collect_bsad
FORM collect_bsad.
SORT i_cust BY kunnr
vkorg.
LOOP AT i_bsad INTO wa_bsad.
MOVE-CORRESPONDING wa_bsad TO wa_data.
CLEAR wa_cust.
READ TABLE i_cust INTO wa_cust WITH KEY kunnr = wa_bsad-kunnr
zterm = wa_bsad-zterm
vkorg = wa_bsad-vkorg
BINARY SEARCH .
IF sy-subrc = c_0.
MOVE-CORRESPONDING wa_cust TO wa_data.
ENDIF.
IF wa_bsad-shkzg = c_h.
wa_data-dmbtr = wa_data-dmbtr * - c_1.
ENDIF.
APPEND wa_data TO i_data.
COLLECT wa_data INTO i_data.
CLEAR: wa_bsad, wa_data.
ENDLOOP.
ENDFORM. " collect_bsad
*& Form exclude_from_data
FORM exclude_from_data.
LOOP AT i_data INTO wa_data.
IF NOT wa_data-zterm IN s_zterm.
DELETE i_data INDEX sy-tabix.
CONTINUE.
ENDIF.
IF wa_data-dmbtr = c_0.
DELETE i_data INDEX sy-tabix.
CONTINUE.
ENDIF.
IF NOT wa_data-sal_r IN s_sal_r.
DELETE i_data INDEX sy-tabix.
CONTINUE.
ENDIF.
IF NOT wa_data-crd_r IN s_crd_r.
DELETE i_data INDEX sy-tabix.
CONTINUE.
ENDIF.
IF NOT wa_data-ctlpc IN s_ctlpc.
DELETE i_data INDEX sy-tabix.
CONTINUE.
ENDIF.
ENDLOOP.
ENDFORM. " exclude_from_data
**& Form age_analysis
FORM age_analysis.
DATA: ztag(5) TYPE n.
DATA: v_date LIKE sy-datum.
PERFORM determine_bucket_dates.
REFRESH i_analysis.
LOOP AT i_data INTO wa_data.
wa_data-waers = cc_waers.
MODIFY i_data FROM wa_data.
CLEAR wa_analysis.
wa_analysis-zterm = wa_data-zterm.
IF age_cc = c_x.
wa_analysis-bukrs = wa_data-bukrs.
ENDIF.
IF age_sp = c_x.
wa_analysis-sal_r = wa_data-sal_r.
ENDIF.
IF age_cr = c_x.
wa_analysis-crd_r = wa_data-crd_r.
ENDIF.
SORT i_kna1 BY kunnr.
READ TABLE i_kna1 INTO wa_kna1 WITH KEY kunnr = wa_data-kunnr.
IF sy-subrc = c_0.
IF age_cu = c_x.
wa_analysis-kunnr = wa_data-kunnr.
wa_analysis-name1 = wa_kna1-name1.
ENDIF.
IF age_ccc = c_x.
wa_analysis-kunnr = wa_data-kunnr.
wa_analysis-bukrs = wa_data-bukrs.
wa_analysis-name1 = wa_kna1-name1.
ENDIF.
ENDIF.
Age
SORT i_zterm BY zterm.
READ TABLE i_zterm INTO wa_zterm WITH KEY zterm = wa_data-zterm
BINARY SEARCH.
if the customer has a payment terms that is based on the end of the
month, determine the "new" document date and then the new intervals.
IF wa_zterm-zfael = c_31.
CALL FUNCTION 'SG_PS_GET_LAST_DAY_OF_MONTH'
EXPORTING
day_in = wa_data-bldat
IMPORTING
last_day_of_month = v_date.
wa_zterm-ztag1 = v_date+6(2).
v_date = wa_data-bldat + v_date+6(2).
CALL FUNCTION 'SG_PS_GET_LAST_DAY_OF_MONTH'
EXPORTING
day_in = v_date
IMPORTING
last_day_of_month = v_date.
wa_zterm-ztag2 = v_date+6(2) + wa_zterm-ztag1.
v_date = v_date + 1.
CALL FUNCTION 'SG_PS_GET_LAST_DAY_OF_MONTH'
EXPORTING
day_in = v_date
IMPORTING
last_day_of_month = v_date.
wa_zterm-ztag3 = v_date+6(2) + wa_zterm-ztag2.
v_date = v_date + 1.
CALL FUNCTION 'SG_PS_GET_LAST_DAY_OF_MONTH'
EXPORTING
day_in = v_date
IMPORTING
last_day_of_month = v_date.
wa_zterm-ztag4 = v_date+6(2) + wa_zterm-ztag3.
ENDIF.
ztag = p_bldat - wa_data-bldat.
IF wa_zterm-zfael <> c_31.
IF ztag LE wa_zterm-ztag1.
wa_analysis-dmbtr1 = wa_data-dmbtr.
ELSEIF ztag LE wa_zterm-ztag2.
wa_analysis-dmbtr2 = wa_data-dmbtr.
ELSEIF ztag LE wa_zterm-ztag3.
wa_analysis-dmbtr3 = wa_data-dmbtr.
ELSEIF ztag LE wa_zterm-ztag4.
wa_analysis-dmbtr4 = wa_data-dmbtr.
ELSE.
wa_analysis-dmbtr5 = wa_data-dmbtr.
ENDIF.
ELSE.
ZFAEL value 31 identifies the calendar month ageing
for Y30/Y31 compare document dates to bucket dates
IF wa_data-bldat GE v_current.
wa_analysis-dmbtr1 = wa_data-dmbtr.
ELSEIF wa_data-bldat GE v_month1.
wa_analysis-dmbtr2 = wa_data-dmbtr.
ELSEIF wa_data-bldat GE v_month2.
wa_analysis-dmbtr3 = wa_data-dmbtr.
ELSEIF wa_data-bldat GE v_month3.
wa_analysis-dmbtr4 = wa_data-dmbtr.
ELSE.
wa_analysis-dmbtr5 = wa_data-dmbtr.
ENDIF.
ENDIF.
wa_analysis-total = wa_analysis-total + wa_data-dmbtr.
wa_analysis-waers = wa_data-waers.
APPEND wa_analysis TO i_analysis.
ENDLOOP.
ENDFORM. " age_analysis
*& Form print_age_analysis
FORM print_age_analysis.
SORT i_analysis BY
bukrs
vwerk
zterm
kunnr.
***15.1.08
IF NOT s_zterm IS INITIAL.
LOOP AT i_analysis INTO wa_analysis.
IF wa_analysis-dmbtr1 = c_0 AND
wa_analysis-dmbtr2 = c_0 AND
wa_analysis-dmbtr3 = c_0 AND
wa_analysis-dmbtr4 = c_0 AND
wa_analysis-dmbtr5 = c_0.
DELETE i_analysis INDEX sy-tabix.
ENDIF.
CLEAR wa_cust.
READ TABLE i_cust INTO wa_cust WITH KEY
kunnr = wa_analysis-kunnr
BINARY SEARCH.
IF sy-subrc = c_0.
wa_analysis-crlimit = wa_cust-klimk.
MODIFY i_analysis FROM wa_analysis .
DELETE i_cust INDEX sy-tabix.
ELSE.
wa_analysis-crlimit = c_0.
ENDIF.
ENDLOOP.
*******15.1.08.
DATA : v_sum TYPE dmbtr.
DATA : v_zterm TYPE dzterm.
SELECT SINGLE zterm table knb1 upto 1 row INTO v_zterm.
ELSE.
i_analysis2[] = i_analysis[].
LOOP AT i_analysis2 INTO wa_analysis2.
v_sum = v_sum + wa_analysis2-total.
ENDLOOP.
READ TABLE i_analysis2 INTO wa_analysis2
endif.
ENDFORM. " print_age_analysis
*******FORM determine_bucket_dates.
FORM determine_bucket_dates.
determine 1st day of current period
v_current = p_bldat.
PERFORM get_last_day_of_month CHANGING v_current.
ADD 1 TO v_current.
PERFORM go_back_months CHANGING v_current v_m1.
determine 1st day of month 1 (30)
v_month1 = v_current.
PERFORM go_back_months CHANGING v_month1 v_m1.
determine 1st day of month 2 (60)
v_month2 = v_current.
PERFORM go_back_months CHANGING v_month2 v_m2.
determine 1st day of month 3 (90)
v_month3 = v_current.
PERFORM go_back_months CHANGING v_month3 v_m3.
determine 1st day of month 4 (120)
v_month4 = v_current.
PERFORM go_back_months CHANGING v_month4 v_m4.
ENDFORM. "determine_bucket_dates
FORM get_last_day_of_month *
FORM get_last_day_of_month CHANGING p_date TYPE any.
CALL FUNCTION 'SG_PS_GET_LAST_DAY_OF_MONTH'
EXPORTING
day_in = p_date
IMPORTING
last_day_of_month = p_date.
ENDFORM. "get_last_day_of_month
FORM go_back_months *
FORM go_back_months CHANGING p_date TYPE any
months TYPE any.
DATA: olddate TYPE sy-datum,
newdate TYPE sy-datum.
olddate = p_date.
DATA: BEGIN OF dat,
jjjj(4) TYPE c ,
mm(2) TYPE c,
tt(2) TYPE c ,
END OF dat,
BEGIN OF hdat,
jjjj(4) TYPE c ,
mm(2) TYPE c,
tt(2) TYPE c,
END OF hdat,
newmm TYPE p,
diffjjjj TYPE p.
WRITE: olddate+0(4) TO dat-jjjj,
olddate+4(2) TO dat-mm,
olddate+6(2) TO dat-tt.
diffjjjj = ( dat-mm + months - 1 ) DIV 12.
newmm = ( dat-mm + months - 1 ) MOD 12 + 1.
dat-jjjj = dat-jjjj + diffjjjj.
IF newmm < 10.
WRITE '0' TO dat-mm+0(1).
WRITE newmm TO dat-mm+1(1).
ELSE.
WRITE newmm TO dat-mm.
ENDIF.
IF dat-tt > '28'.
hdat-tt = '01'.
newmm = ( dat-mm ) MOD 12 + 1.
hdat-jjjj = dat-jjjj + ( ( dat-mm ) DIV 12 ).
IF newmm < 10.
WRITE '0' TO hdat-mm+0(1).
WRITE newmm TO hdat-mm+1(1).
ELSE.
WRITE newmm TO hdat-mm.
ENDIF.
IF dat-tt = '31'.
newdate = hdat.
newdate = newdate - 1.
ELSE.
IF dat-mm = '02'.
newdate = hdat.
newdate = newdate - 1.
ELSE.
newdate = dat.
ENDIF.
ENDIF.
ELSE.
newdate = dat.
ENDIF.
p_date = newdate.
ENDFORM. "go_back_months
********************************** -
ALV Tree Report without using ABAP Objects
Hi all,
I want to know the name of a function module to create ALV Tree in SE38 as a report. I am required to create this ALV Tree Report without using ABAP OBJECTS. Can u pls help me as early as possible.Hi
see this link
http://www.sapdev.co.uk/reporting/alv/alvtree.htm
*& Report ZBCALV_TREE
REPORT ZBCALV_TREE.
class cl_gui_column_tree definition load.
class cl_gui_cfw definition load.
data tree1 type ref to cl_gui_alv_tree.
data mr_toolbar type ref to cl_gui_toolbar.
include <icon>.
include bcalv_toolbar_event_receiver.
include bcalv_tree_event_receiver.
data: toolbar_event_receiver type ref to lcl_toolbar_event_receiver.
data: gt_VBAK type VBAK occurs 0, "Output-Table
gt_fieldcatalog type lvc_t_fcat, "Fieldcatalog
ok_code like sy-ucomm. "OK-Code
start-of-selection.
end-of-selection.
call screen 100.
*& Module STATUS_0100 OUTPUT
text
module STATUS_0100 output.
SET PF-STATUS 'MAIN'.
if tree1 is initial.
perform Zinit_tree.
endif.
call method cl_gui_cfw=>flush.
endmodule. " STATUS_0100 OUTPUT
*& Form Zinit_tree
text
--> p1 text
<-- p2 text
form Zinit_tree .
perform Zbuild_fieldcatalog.
create container for alv-tree
data: l_tree_container_name(30) type c,
l_custom_container type ref to cl_gui_custom_container.
l_tree_container_name = 'TREE1'.
if sy-batch is initial.
create object l_custom_container
exporting
container_name = l_tree_container_name
exceptions
cntl_error = 1
cntl_system_error = 2
create_error = 3
lifetime_error = 4
lifetime_dynpro_dynpro_link = 5.
if sy-subrc <> 0.
message x208(00) with 'ERROR'. "#EC NOTEXT
endif.
endif.
create tree control
create object tree1
exporting
parent = l_custom_container
node_selection_mode = cl_gui_column_tree=>node_sel_mode_single
item_selection = 'X'
no_html_header = ''
no_toolbar = ''
exceptions
cntl_error = 1
cntl_system_error = 2
create_error = 3
lifetime_error = 4
illegal_node_selection_mode = 5
failed = 6
illegal_column_name = 7.
if sy-subrc <> 0.
message x208(00) with 'ERROR'. "#EC NOTEXT
endif.
create Hierarchy-header
data l_hierarchy_header type treev_hhdr.
perform zbuild_hierarchy_header changing l_hierarchy_header.
create info-table for html-header
data: lt_list_commentary type slis_t_listheader,
l_logo type sdydo_value.
perform Zbuild_comment using
lt_list_commentary
l_logo.
repid for saving variants
data: ls_variant type disvariant.
ls_variant-report = sy-repid.
create emty tree-control
call method tree1->set_table_for_first_display
exporting
is_hierarchy_header = l_hierarchy_header
it_list_commentary = lt_list_commentary
i_logo = l_logo
i_background_id = 'ALV_BACKGROUND'
i_save = 'A'
is_variant = ls_variant
changing
it_outtab = gt_VBAK "table must be emty !!
it_fieldcatalog = gt_fieldcatalog.
create hierarchy
perform Zcreate_hierarchy.
add own functioncodes to the toolbar
perform zchange_toolbar.
register events
perform zregister_events.
endform. " Zinit_tree
*& Form Zbuild_fieldcatalog
text
--> p1 text
<-- p2 text
form Zbuild_fieldcatalog .
get fieldcatalog
call function 'LVC_FIELDCATALOG_MERGE'
exporting
i_structure_name = 'VBAK'
changing
ct_fieldcat = gt_fieldcatalog.
sort gt_fieldcatalog by scrtext_l.
change fieldcatalog
data: ls_fieldcatalog type lvc_s_fcat.
loop at gt_fieldcatalog into ls_fieldcatalog.
case ls_fieldcatalog-fieldname.
when 'AUART' .
ls_fieldcatalog-no_out = 'X'.
ls_fieldcatalog-key = ''.
endcase.
modify gt_fieldcatalog from ls_fieldcatalog.
endloop.
endform. " Zbuild_fieldcatalog
*& Form zbuild_hierarchy_header
text
<--P_L_HIERARCHY_HEADER text
form zbuild_hierarchy_header changing
p_hierarchy_header type treev_hhdr.
p_hierarchy_header-heading = 'Hierarchy Header'. "#EC NOTEXT
p_hierarchy_header-tooltip =
'This is the Hierarchy Header !'. "#EC NOTEXT
p_hierarchy_header-width = 30.
p_hierarchy_header-width_pix = ''.
endform. " zbuild_hierarchy_header
*& Form Zbuild_comment
text
-->P_LT_LIST_COMMENTARY text
-->P_L_LOGO text
form Zbuild_comment using
pt_list_commentary type slis_t_listheader
p_logo type sdydo_value.
data: ls_line type slis_listheader.
LIST HEADING LINE: TYPE H
clear ls_line.
ls_line-typ = 'H'.
LS_LINE-KEY: NOT USED FOR THIS TYPE
ls_line-info = 'ALV-tree-demo: flight-overview'. "#EC NOTEXT
append ls_line to pt_list_commentary.
STATUS LINE: TYPE S
clear ls_line.
ls_line-typ = 'S'.
ls_line-key = 'valid until'. "#EC NOTEXT
ls_line-info = 'January 29 1999'. "#EC NOTEXT
append ls_line to pt_list_commentary.
ls_line-key = 'time'.
ls_line-info = '2.00 pm'. "#EC NOTEXT
append ls_line to pt_list_commentary.
ACTION LINE: TYPE A
clear ls_line.
ls_line-typ = 'A'.
LS_LINE-KEY: NOT USED FOR THIS TYPE
ls_line-info = 'actual data'. "#EC NOTEXT
append ls_line to pt_list_commentary.
p_logo = 'ENJOYSAP_LOGO'.
endform. " Zbuild_comment
*& Form Zcreate_hierarchy
text
--> p1 text
<-- p2 text
form Zcreate_hierarchy .
data: ls_vbak type vbak,
lt_vbak type vbak occurs 0.
get data
select * from vbak into table lt_vbak
up to 200 rows . "#EC CI_NOWHERE
sort lt_vbak by AUART.
add data to tree
data: l_AUART_key type lvc_nkey.
loop at lt_vbak into ls_vbak.
on change of ls_vbak-AUART.
perform Zadd_AUART_line using ls_vbak
changing l_AUART_key.
endon.
endloop.
calculate totals
call method tree1->update_calculations.
this method must be called to send the data to the frontend
call method tree1->frontend_update.
endform. " Zcreate_hierarchy
*& Form Zadd_AUART_line
text
-->P_LS_vbak text
-->P_0379 text
<--P_L_AUART_KEY text
form Zadd_AUART_line using p_ls_vbak type vbak
p_relat_key type lvc_nkey
changing p_node_key type lvc_nkey.
data: l_node_text type lvc_value,
ls_vbak type vbak.
set item-layout
data: lt_item_layout type lvc_t_layi,
ls_item_layout type lvc_s_layi.
ls_item_layout-t_image = '@3P@'.
ls_item_layout-fieldname = tree1->c_hierarchy_column_name.
ls_item_layout-style =
cl_gui_column_tree=>style_intensifd_critical.
append ls_item_layout to lt_item_layout.
add node
l_node_text = p_ls_vbak-AUART.
data: ls_node type lvc_s_layn.
ls_node-n_image = space.
ls_node-exp_image = space.
call method tree1->add_node
exporting
i_relat_node_key = p_relat_key
i_relationship = cl_gui_column_tree=>relat_last_child
i_node_text = l_node_text
is_outtab_line = ls_vbak
is_node_layout = ls_node
it_item_layout = lt_item_layout
importing
e_new_node_key = p_node_key .
endform. " Zadd_AUART_line
*& Form zchange_toolbar
text
--> p1 text
<-- p2 text
form zchange_toolbar .
get toolbar control
call method tree1->get_toolbar_object
importing
er_toolbar = mr_toolbar.
check not mr_toolbar is initial.
add seperator to toolbar
call method mr_toolbar->add_button
exporting
fcode = ''
icon = ''
butn_type = cntb_btype_sep
text = ''
quickinfo = 'This is a Seperator'. "#EC NOTEXT
add Standard Button to toolbar (for Delete Subtree)
call method mr_toolbar->add_button
exporting
fcode = 'DELETE'
icon = '@18@'
butn_type = cntb_btype_button
text = ''
quickinfo = 'Delete subtree'. "#EC NOTEXT
add Dropdown Button to toolbar (for Insert Line)
call method mr_toolbar->add_button
exporting
fcode = 'INSERT_LC'
icon = '@17@'
butn_type = cntb_btype_dropdown
text = ''
quickinfo = 'Insert Line'. "#EC NOTEXT
set event-handler for toolbar-control
create object toolbar_event_receiver.
set handler toolbar_event_receiver->on_function_selected
for mr_toolbar.
set handler toolbar_event_receiver->on_toolbar_dropdown
for mr_toolbar.
endform. " zchange_toolbar
*& Form zregister_events
text
--> p1 text
<-- p2 text
form zregister_events .
define the events which will be passed to the backend
data: lt_events type cntl_simple_events,
l_event type cntl_simple_event.
define the events which will be passed to the backend
l_event-eventid = cl_gui_column_tree=>eventid_expand_no_children.
append l_event to lt_events.
l_event-eventid = cl_gui_column_tree=>eventid_checkbox_change.
append l_event to lt_events.
l_event-eventid = cl_gui_column_tree=>eventid_header_context_men_req.
append l_event to lt_events.
l_event-eventid = cl_gui_column_tree=>eventid_node_context_menu_req.
append l_event to lt_events.
l_event-eventid = cl_gui_column_tree=>eventid_item_context_menu_req.
append l_event to lt_events.
l_event-eventid = cl_gui_column_tree=>eventid_header_click.
append l_event to lt_events.
l_event-eventid = cl_gui_column_tree=>eventid_item_keypress.
append l_event to lt_events.
call method tree1->set_registered_events
exporting
events = lt_events
exceptions
cntl_error = 1
cntl_system_error = 2
illegal_event_combination = 3.
if sy-subrc <> 0.
message x208(00) with 'ERROR'. "#EC NOTEXT
endif.
set Handler
data: l_event_receiver type ref to lcl_tree_event_receiver.
create object l_event_receiver.
set handler l_event_receiver->handle_node_ctmenu_request
for tree1.
set handler l_event_receiver->handle_node_ctmenu_selected
for tree1.
set handler l_event_receiver->handle_item_ctmenu_request
for tree1.
set handler l_event_receiver->handle_item_ctmenu_selected
for tree1.
endform. " zregister_events
*& Module USER_COMMAND_0100 INPUT
text
module USER_COMMAND_0100 input.
ok_code = sy-ucomm.
clear sy-ucomm.
case ok_code.
when 'EXIT' or 'BACK' or 'CANC'.
perform Zexit_program.
when others.
call method cl_gui_cfw=>dispatch.
endcase.
clear ok_code.
call method cl_gui_cfw=>flush.
endmodule. " USER_COMMAND_0100 INPUT
*& Form Zexit_program
text
--> p1 text
<-- p2 text
form Zexit_program .
call method tree1->free.
leave program.
endform. " Zexit_program
<b>Reward if usefull</b> -
ALV Tree Report--clicking on a row....
Hello Experts,
i have a alv tree report.my requirement is,
"Selecting a row means clicking on record and then click on a another button called YES ,For other functionality i need to capture the row '.
How can i solve this problem.
Thanks,
Sridhar.hi check this..
REPORT z_simpletree.
type pool declarations for tree
TYPE-POOLS : fibs,stree.
*Data declaration for additional node information
DATA : t_node TYPE snodetext.
*Internal table and wa decl for nodes
DATA : it_node LIKE TABLE OF t_node INITIAL SIZE 0,
wa_node LIKE t_node.
*Internal table and wa decl for Education table PA0022
DATA : it_0022 TYPE STANDARD TABLE OF pa0022 INITIAL SIZE 0,
wa_0022 TYPE pa0022.
*Internal table and wa decl for text table t517x
DATA : it_517x TYPE STANDARD TABLE OF t517x INITIAL SIZE 0,
wa_517x TYPE t517x.
*Internal table and wa decl for text table t517T
DATA : it_517t TYPE STANDARD TABLE OF t517t INITIAL SIZE 0,
wa_517t TYPE t517t.
*Internal table and wa decl for text table t519T
DATA : it_519t TYPE STANDARD TABLE OF t519t INITIAL SIZE 0,
wa_519t TYPE t519t.
*initialization event
INITIALIZATION.
*Start of selection event
START-OF-SELECTION.
*Select the data for tree
PERFORM fetch_data.
*Build the hierarchy for tree
PERFORM build_hierarchy.
*Build Tree for display
PERFORM build_tree.
*& Form fetch_data
text
--> p1 text
<-- p2 text
FORM fetch_data .
*select data from PA0022
SELECT * FROM pa0022 INTO CORRESPONDING FIELDS OF TABLE it_0022
UP TO 50 ROWS.
*select data from T517x
SELECT * FROM t517x INTO CORRESPONDING FIELDS OF TABLE it_517x
WHERE langu = 'E'.
*select data from T517T
SELECT * FROM t517t INTO CORRESPONDING FIELDS OF TABLE it_517t
WHERE sprsl = 'E'.
*select data from T519t
SELECT * FROM t519t INTO CORRESPONDING FIELDS OF TABLE it_519t
WHERE sprsl = 'E'.
ENDFORM. " fetch_data
*& Form build_hierarchy
text
--> p1 text
<-- p2 text
FORM build_hierarchy .
*Building the nodes and hierarchy for tree
CLEAR : it_node[],
wa_node.
wa_node-type = 'T'.
wa_node-name = 'Education'.
wa_node-tlevel = '01'.
wa_node-nlength = '15'.
wa_node-color = '4'.
wa_node-text = 'Infotype 0022'.
wa_node-tlength ='20'.
wa_node-tcolor = 3.
APPEND wa_node TO it_node.
CLEAR wa_node.
*Filling the values of internal table into tree
LOOP AT it_0022 INTO wa_0022.
wa_node-type = 'P'.
wa_node-name = 'PERNR'.
wa_node-tlevel = '02'.
wa_node-nlength = '8'.
wa_node-color = '1'.
wa_node-text = wa_0022-pernr.
wa_node-tlength ='20'.
wa_node-tcolor = 4.
APPEND wa_node TO it_node.
CLEAR wa_node.
*Filling the text of T517t
READ TABLE it_517t INTO wa_517t WITH KEY slart = wa_0022-slart.
wa_node-type = 'P'.
wa_node-name = wa_0022-slart.
wa_node-tlevel = '03'.
wa_node-nlength = '8'.
wa_node-color = '1'.
wa_node-text = wa_517t-stext.
wa_node-tlength ='40'.
wa_node-tcolor = 4.
APPEND wa_node TO it_node.
CLEAR wa_node.
*Filling the text of T519t
READ TABLE it_519t INTO wa_519t WITH KEY slabs = wa_0022-slabs.
wa_node-type = 'P'.
wa_node-name = wa_0022-slabs.
wa_node-tlevel = '04'.
wa_node-nlength = '8'.
wa_node-color = '2'.
wa_node-text = wa_519t-stext.
wa_node-tlength ='40'.
wa_node-tcolor = 4.
APPEND wa_node TO it_node.
CLEAR wa_node.
*Filling the text of T517x
READ TABLE it_517x INTO wa_517x WITH KEY faart = wa_0022-sltp1.
wa_node-type = 'P'.
wa_node-name = wa_0022-sltp1.
wa_node-tlevel = '05'.
wa_node-nlength = '8'.
wa_node-color = '1'.
wa_node-text = wa_517x-ftext.
wa_node-tlength ='40'.
wa_node-tcolor = 4.
APPEND wa_node TO it_node.
CLEAR wa_node.
wa_node-type = 'P'.
wa_node-tlevel = '06'.
wa_node-nlength = '8'.
wa_node-color = '1'.
wa_node-text = '% Completed'.
wa_node-tlength ='15'.
wa_node-tcolor = 4.
APPEND wa_node TO it_node.
CLEAR wa_node.
ENDLOOP.
ENDFORM. " build_hierarchy
*& Form build_tree
text
--> p1 text
<-- p2 text
FORM build_tree .
*Fm for constructing the tree
CALL FUNCTION 'RS_TREE_CONSTRUCT'
TABLES
nodetab = it_node.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
*FM for displaying the tree
CALL FUNCTION 'RS_TREE_LIST_DISPLAY'
EXPORTING
callback_program = sy-repid
check_duplicate_name = '1'
color_of_node = '3'
color_of_mark = '3'
color_of_link = '1'
color_of_match = '5'
node_length = 30
text_length = 75
use_control = 'L'.ENDFORM. " build_tree
regards,
venkat -
How can I do a Smartform from an ALV hierarchy? Is this possible?
Please give me any help...
Regards.
HugoHi, thank for your reply.
Well... I've a hierarchy alv report with a status bar... It's working properly.
Now, I want to print a smarform from this report...
this show the alv ************
call function 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
exporting
i_callback_program = vl_repid
is_layout = st_layout
it_fieldcat = t_fieldcat[]
i_tabname_header = 'T_AUX'
i_tabname_item = 'T_OUTPUT'
is_keyinfo = st_key
tables
t_outtab_header = t_aux[]
t_outtab_item = t_output[]
exceptions
program_error = 1
others = 2.
My doubt is in the smartform... I can pass 2 tables as parameters???
-->
call function l_fm_name
exporting
p_gjahr = p_gjahr
p_form = p_form
p_date_d = p_date_d
p_date_h = p_date_h
p_nom = p_nom
tables
gt_salida = gt_salida ???? "Table 1
exceptions
formatting_error = 1
internal_error = 2
send_error = 3
user_canceled = 4
others = 5.
I'm sorry for my poor english... -
Dear All,
I would like to display the report like below
Hotel name 01-May-09 02-May-09 03-May-09 04-May-09
+ Bangalor
Single 1000 2000 3000 500
Double 2000 4000 6000 1000
+ Mumbai
+PUNE
IIf i click on this + Symbol of Bagalor then tree should open and sub details should display like above
single and double. If i click again on + symbol tree should close.
Please help me how i can achieve this.
Thanks in advance,
Kumar.Dear ravi,
Check the below code
report zalv_hierarchical.
ALV Report for simple hierarchical sequential list display(single child)
List of SAP tables and their characteristics are displayed as the header
table and the list of fields and their characteristics *& form the item table(child table)
type-pools declarations for alv and icon
type-pools: slis,icon.
*structure declaration for table details
types : begin of ty_dd02l,
icon type icon_d,
tabname type tabname,
tabclass type tabclass,
contflag type contflag,
actflag type actflag,
mainflag type maintflag,
buffered type buffered,
as4user type as4user,
as4date type as4date,
as4time type as4time,
expand,
end of ty_dd02l.
*internal table and wa decln for table details
data : it_dd02l type standard table of ty_dd02l,
wa_dd02l type ty_dd02l.
*structure declarations for field details
types : begin of ty_dd03l,
tabname type tabname,
fieldname type fieldname,
keyflag type keyflag,
mandatory type mandatory,
checktable type checktable,
rollname type rollname,
end of ty_dd03l.
*Internal table and wa declaration for field details
data : it_dd03l type standard table of ty_dd03l,
wa_dd03l type ty_dd03l.
*data declarations for ALV
data : it_fieldcat type slis_t_fieldcat_alv,
wa_fieldcat type slis_fieldcat_alv,
it_layout type slis_layout_alv,
key type slis_keyinfo_alv.
*Input the tables.User cannot enter a range but can enter any number
*of tables one by one in this select-options
select-options : s_table for wa_dd02l-tabname no intervals.
*initializatin event
initialization.
*start-of-selection event
start-of-selection.
*subroutine to fetch the data from the tables
perform fetch_tabledata.
*subroutine to build alv hierarchy output
perform hierarchyalv_build.
*& Form hierarchyalv_build
text
--> p1 text
<-- p2 text
form hierarchyalv_build .
*field catalogue
perform build_fieldcat.
*layout
perform build_layout.
*key information for hierarchy
perform build_key.
*output
perform list_display.
endform. " hierarchyalv_build
*& Form build_fieldcat
text
--> p1 text
<-- p2 text
form build_fieldcat .
clear wa_fieldcat.
wa_fieldcat-col_pos = 1.
wa_fieldcat-fieldname = 'TABNAME'.
wa_fieldcat-tabname = 'IT_DD02L'.
wa_fieldcat-seltext_m = 'Tablename'.
wa_fieldcat-key = 'X'.
wa_fieldcat-emphasize = 'C610'.
append wa_fieldcat to it_fieldcat.
clear wa_fieldcat.
wa_fieldcat-col_pos = 2.
wa_fieldcat-fieldname = 'TABCLASS'.
wa_fieldcat-tabname = 'IT_DD02L'.
wa_fieldcat-seltext_m = 'Tablecategory'.
wa_fieldcat-emphasize = 'C600'.
append wa_fieldcat to it_fieldcat.
clear wa_fieldcat.
wa_fieldcat-col_pos = 3.
wa_fieldcat-fieldname = 'CONTFLAG'.
wa_fieldcat-tabname = 'IT_DD02L'.
wa_fieldcat-seltext_m = 'DeliveryClass'.
wa_fieldcat-emphasize = 'C510'.
append wa_fieldcat to it_fieldcat.
clear wa_fieldcat.
wa_fieldcat-col_pos = 4.
wa_fieldcat-fieldname = 'ACTFLAG'.
wa_fieldcat-tabname = 'IT_DD02L'.
wa_fieldcat-seltext_m = 'Activationstatus'.
wa_fieldcat-emphasize = 'C500'.
append wa_fieldcat to it_fieldcat.
clear wa_fieldcat.
wa_fieldcat-col_pos = 5.
wa_fieldcat-fieldname = 'MAINFLAG'.
wa_fieldcat-tabname = 'IT_DD02L'.
wa_fieldcat-seltext_m = 'MaintainenceFlag'.
wa_fieldcat-emphasize = 'C410'.
append wa_fieldcat to it_fieldcat.
clear wa_fieldcat.
wa_fieldcat-col_pos = 6.
wa_fieldcat-fieldname = 'BUFFERED'.
wa_fieldcat-tabname = 'IT_DD02L'.
wa_fieldcat-seltext_m = 'BufferFlag'.
wa_fieldcat-emphasize = 'C400'.
append wa_fieldcat to it_fieldcat.
clear wa_fieldcat.
wa_fieldcat-col_pos = 7.
wa_fieldcat-fieldname = 'AS4USER'.
wa_fieldcat-tabname = 'IT_DD02L'.
wa_fieldcat-seltext_m = 'User'.
wa_fieldcat-emphasize = 'C310'.
append wa_fieldcat to it_fieldcat.
clear wa_fieldcat.
wa_fieldcat-col_pos = 8.
wa_fieldcat-fieldname = 'AS4DATE'.
wa_fieldcat-tabname = 'IT_DD02L'.
wa_fieldcat-seltext_m = 'Date'.
wa_fieldcat-emphasize = 'C300'.
append wa_fieldcat to it_fieldcat.
clear wa_fieldcat.
wa_fieldcat-col_pos = 9.
wa_fieldcat-fieldname = 'AS4TIME'.
wa_fieldcat-tabname = 'IT_DD02L'.
wa_fieldcat-seltext_m = 'Time'.
wa_fieldcat-emphasize = 'C210'.
append wa_fieldcat to it_fieldcat.
clear wa_fieldcat.
wa_fieldcat-col_pos = 10.
wa_fieldcat-fieldname = 'ICON'.
wa_fieldcat-tabname = 'IT_DD02L'.
wa_fieldcat-seltext_m = 'ICON'.
wa_fieldcat-icon = 'X'.
append wa_fieldcat to it_fieldcat.
clear wa_fieldcat.
wa_fieldcat-col_pos = 11.
wa_fieldcat-fieldname = 'FIELDNAME'.
wa_fieldcat-tabname = 'IT_DD03L'.
wa_fieldcat-key = 'X'.
wa_fieldcat-seltext_m = 'Field'.
wa_fieldcat-emphasize = 'C600'.
append wa_fieldcat to it_fieldcat.
clear wa_fieldcat.
wa_fieldcat-col_pos = 12.
wa_fieldcat-fieldname = 'KEYFLAG'.
wa_fieldcat-tabname = 'IT_DD03L'.
wa_fieldcat-seltext_m = 'Key'.
wa_fieldcat-emphasize = 'C500'.
append wa_fieldcat to it_fieldcat.
clear wa_fieldcat.
wa_fieldcat-col_pos = 13.
wa_fieldcat-fieldname = 'CHECKTABLE'.
wa_fieldcat-tabname = 'IT_DD03L'.
wa_fieldcat-seltext_m = 'Checktable'.
wa_fieldcat-emphasize = 'C400'.
append wa_fieldcat to it_fieldcat.
clear wa_fieldcat.
wa_fieldcat-col_pos = 14.
wa_fieldcat-fieldname = 'MANDATORY'.
wa_fieldcat-tabname = 'IT_DD03L'.
wa_fieldcat-seltext_m = 'Mandatory'.
wa_fieldcat-emphasize = 'C300'.
append wa_fieldcat to it_fieldcat.
clear wa_fieldcat.
wa_fieldcat-col_pos = 15.
wa_fieldcat-fieldname = 'ROLLNAME'.
wa_fieldcat-tabname = 'IT_DD03L'.
wa_fieldcat-seltext_m = 'Dataelement'.
wa_fieldcat-emphasize = 'C200'.
append wa_fieldcat to it_fieldcat.
endform. " build_fieldcat
*& Form build_layout
text
--> p1 text
<-- p2 text
form build_layout .
*to expand the header table for item details
it_layout-expand_fieldname = 'EXPAND'.
it_layout-window_titlebar = 'Hierarchical ALV list display'.
it_layout-lights_tabname = 'IT_DD03L'.
it_layout-colwidth_optimize = 'X'.
endform. " build_layout
*& Form build_key
text
--> p1 text
<-- p2 text
form build_key .
**key infomation for the header and item table
key-header01 = 'TABNAME'.
key-item01 = 'TABNAME'.
endform. " build_key
*& Form list_display
text
--> p1 text
<-- p2 text
form list_display .
*ALV output
call function 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
exporting
i_callback_program = sy-cprog
is_layout = it_layout
it_fieldcat = it_fieldcat
i_tabname_header = 'IT_DD02L'
i_tabname_item = 'IT_DD03L'
is_keyinfo = key
tables
t_outtab_header = it_dd02l
t_outtab_item = it_dd03l.
endform. " list_display
*& Form fetch_tabledata
text
--> p1 text
<-- p2 text
form fetch_tabledata .
*select table data
select tabname
tabclass
contflag
actflag
mainflag
buffered
as4user
as4date
as4time
from dd02l
into corresponding fields of table it_dd02l
where tabname in s_table.
*select field data
if it_dd02l[] is not initial.
select tabname
fieldname
keyflag
mandatory
checktable
rollname
from dd03l
into corresponding fields of table it_dd03l
for all entries in it_dd02l
where tabname eq it_dd02l-tabname.
endif.
*adding icon to the header table
loop at it_dd02l into wa_dd02l.
at new tabname.
wa_dd02l-icon = '@3M@'.
modify it_dd02l from wa_dd02l transporting icon where tabname eq wa_dd02l-tabname.
clear : wa_dd02l.
endat.
endloop.
endform. "fetch_tabledata -
Hi,
I have a requirement like, when we click on one of the records in the grid display (first screen) I have to call a screen with 2 alv screens in the same screen. Among this 2 screens one is Hierarchial alv. I am using 'REUSE_ALV_GRID_DISPLAY' in the first screen and when double click I am calling a screen with 2 custom containers in it. For the first custom container I am using 'CL_GUI_ALV_GRID' to fill the data. Now I have to fill second container with Hierarchial alv. I have tried to find a class for hierarchial ALV. If anybody know how to do this, Please suggest me.
Thanks,
Ramhi...
i am giving an example program for ALV hierarchical reports. i hope it helpful to u.
it is working will. try it.
REPORT ZABAP_EX1 .
*TYPEPOOLS DECLARATION
for field catalog
TYPE-POOLS SLIS.
*TABLE DECLARATION
TABLES : KNA1,VBAK.
*INTERNAL TABLES DECLAREATION
DATA ITAB_KNA1 LIKE KNA1 OCCURS 0 WITH HEADER LINE.
DATA ITAB_VBAK LIKE VBAK OCCURS 0 WITH HEADER LINE.
*FIELD CATALOG DECLARATION
DATA FCAT_HIRC TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE.
*EVENTS DECLARATION
DATA EVENTS TYPE SLIS_T_EVENT WITH HEADER LINE.
*LAYOUT DECLARATION
DATA LAYOUT TYPE SLIS_LAYOUT_ALV .
*FIELD CATLOG INTIALIZATION FOR CUSTOMER INFORMATION
FCAT_HIRC-COL_POS = 1.
FCAT_HIRC-FIELDNAME = 'KUNNR'.
FCAT_HIRC-REF_TABNAME = 'KNA1'.
FCAT_HIRC-TABNAME = 'ITAB_KNA1'.
APPEND FCAT_HIRC.
FCAT_HIRC-COL_POS = 2.
FCAT_HIRC-FIELDNAME = 'NAME1'.
FCAT_HIRC-REF_TABNAME = 'KNA1'.
FCAT_HIRC-TABNAME = 'ITAB_KNA1'.
APPEND FCAT_HIRC.
FCAT_HIRC-COL_POS = 3.
FCAT_HIRC-FIELDNAME = 'ORT01'.
FCAT_HIRC-REF_TABNAME = 'KNA1'.
FCAT_HIRC-TABNAME = 'ITAB_KNA1'.
APPEND FCAT_HIRC.
*FIELD CATLOG INTIALIZATION FOR SALES DOCUMENT HEADER
FCAT_HIRC-COL_POS = 1.
FCAT_HIRC-FIELDNAME = 'VBELN'.
FCAT_HIRC-REF_TABNAME = 'VBAK'.
FCAT_HIRC-TABNAME = 'ITAB_VBAK'.
APPEND FCAT_HIRC.
FCAT_HIRC-COL_POS = 2.
FCAT_HIRC-FIELDNAME = 'VKBUR'.
FCAT_HIRC-REF_TABNAME = 'VBAK'.
FCAT_HIRC-TABNAME = 'ITAB_VBAK'.
APPEND FCAT_HIRC.
FCAT_HIRC-COL_POS = 3.
FCAT_HIRC-FIELDNAME = 'NETWR'.
FCAT_HIRC-REF_TABNAME = 'VBAK'.
FCAT_HIRC-TABNAME = 'ITAB_VBAK'.
APPEND FCAT_HIRC.
DATA KEYINFO TYPE SLIS_KEYINFO_ALV.
SELECT * FROM KNA1 INTO TABLE ITAB_KNA1.
SELECT * FROM VBAK INTO TABLE ITAB_VBAK.
EVENTS-FORM = 'TOP_FORM'.
EVENTS-NAME = 'TOP_OF_PAGE'.
APPEND EVENTS.
*Customer's account number with credit limit reference
KEYINFO-HEADER01 = 'KUNNR'.
KEYINFO-ITEM01 = 'KUNNR'.
KEYINFO-HEADER02 = 'KNKLI'.
KEYINFO-ITEM02 = 'KNKLI'.
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_INIT'
EXPORTING
I_CALLBACK_PROGRAM = SY-CPROG
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = ' '
IT_EXCLUDING =
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_HS_APPEND'
EXPORTING
IS_LAYOUT = LAYOUT
IT_FIELDCAT = FCAT_HIRC[]
IS_KEYINFO = KEYINFO
I_HEADER_TABNAME = 'ITAB_KNA1'
I_ITEM_TABNAME = 'ITAB_VBAK'
IT_EVENTS = EVENTS[]
IT_SORT =
I_TEXT = ' '
TABLES
T_OUTTAB_HEADER = ITAB_KNA1
T_OUTTAB_ITEM = ITAB_VBAK
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_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.
FORM TOP_FORM.
WRITE :/25 'CUSTOMER WISE SALES ORDER INFORMATION ' COLOR 3.
ENDFORM. -
How to enable excel downloading in ALV grid report.
Hi all,
How to enable excal downing in ALV grid report?
Thanks in Advance.
Siva Sankar.hi
check the following code
Example of a Simple ALV Grid Report
REPORT ZTUFI091 .
*& Report ZDEMO_ALVGRID *
*& Example of a simple ALV Grid Report *
*& The basic requirement for this demo is to display a number of *
*& fields from the EKKO table. *
*REPORT zdemo_alvgrid .
TABLES: ekko.
type-pools: slis. "ALV Declarations
*Data Declaration
TYPES: BEGIN OF t_ekko,
ebeln TYPE ekpo-ebeln,
ebelp TYPE ekpo-ebelp,
statu TYPE ekpo-statu,
aedat TYPE ekpo-aedat,
matnr TYPE ekpo-matnr,
menge TYPE ekpo-menge,
meins TYPE ekpo-meins,
netpr TYPE ekpo-netpr,
peinh TYPE ekpo-peinh,
END OF t_ekko.
DATA: it_ekko TYPE STANDARD TABLE OF t_ekko INITIAL SIZE 0,
wa_ekko TYPE t_ekko.
*ALV data declarations
data: fieldcatalog type slis_t_fieldcat_alv with header line,
gd_tab_group type slis_t_sp_group_alv,
gd_layout type slis_layout_alv,
gd_repid like sy-repid,
gt_events type slis_t_event,
gd_prntparams type slis_print_alv.
*Start-of-selection.
START-OF-SELECTION.
perform data_retrieval.
perform build_fieldcatalog.
perform build_layout.
perform build_events.
perform build_print_params.
perform display_alv_report.
*& Form BUILD_FIELDCATALOG
Build Fieldcatalog for ALV Report
form build_fieldcatalog.
There are a number of ways to create a fieldcat.
For the purpose of this example i will build the fieldcatalog manualy
by populating the internal table fields individually and then
appending the rows. This method can be the most time consuming but can
also allow you more control of the final product.
Beware though, you need to ensure that all fields required are
populated. When using some of functionality available via ALV, such as
total. You may need to provide more information than if you were
simply displaying the result
I.e. Field type may be required in-order for
the 'TOTAL' function to work.
fieldcatalog-fieldname = 'EBELN'.
fieldcatalog-seltext_m = 'Purchase Order'.
fieldcatalog-col_pos = 0.
fieldcatalog-outputlen = 10.
fieldcatalog-emphasize = 'X'.
fieldcatalog-key = 'X'.
fieldcatalog-do_sum = 'X'.
fieldcatalog-no_zero = 'X'.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'EBELP'.
fieldcatalog-seltext_m = 'PO Item'.
fieldcatalog-col_pos = 1.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'STATU'.
fieldcatalog-seltext_m = 'Status'.
fieldcatalog-col_pos = 2.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'AEDAT'.
fieldcatalog-seltext_m = 'Item change date'.
fieldcatalog-col_pos = 3.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'MATNR'.
fieldcatalog-seltext_m = 'Material Number'.
fieldcatalog-col_pos = 4.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'MENGE'.
fieldcatalog-seltext_m = 'PO quantity'.
fieldcatalog-col_pos = 5.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'MEINS'.
fieldcatalog-seltext_m = 'Order Unit'.
fieldcatalog-col_pos = 6.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'NETPR'.
fieldcatalog-seltext_m = 'Net Price'.
fieldcatalog-col_pos = 7.
fieldcatalog-outputlen = 15.
fieldcatalog-datatype = 'CURR'.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'PEINH'.
fieldcatalog-seltext_m = 'Price Unit'.
fieldcatalog-col_pos = 8.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
endform. " BUILD_FIELDCATALOG
*& Form BUILD_LAYOUT
Build layout for ALV grid report
form build_layout.
gd_layout-no_input = 'X'.
gd_layout-colwidth_optimize = 'X'.
gd_layout-totals_text = 'Totals'(201).
gd_layout-totals_only = 'X'.
gd_layout-f2code = 'DISP'. "Sets fcode for when double
"click(press f2)
gd_layout-zebra = 'X'.
gd_layout-group_change_edit = 'X'.
gd_layout-header_text = 'helllllo'.
endform. " BUILD_LAYOUT
*& Form DISPLAY_ALV_REPORT
Display report using ALV grid
form display_alv_report.
gd_repid = sy-repid.
call function 'REUSE_ALV_GRID_DISPLAY'
exporting
i_callback_program = gd_repid
i_callback_top_of_page = 'TOP-OF-PAGE' "see FORM
i_callback_user_command = 'USER_COMMAND'
i_grid_title = outtext
is_layout = gd_layout
it_fieldcat = fieldcatalog[]
it_special_groups = gd_tabgroup
it_events = gt_events
is_print = gd_prntparams
i_save = 'X'
is_variant = z_template
tables
t_outtab = it_ekko
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_ALV_REPORT
*& Form DATA_RETRIEVAL
Retrieve data form EKPO table and populate itab it_ekko
form data_retrieval.
select ebeln ebelp statu aedat matnr menge meins netpr peinh
up to 10 rows
from ekpo
into table it_ekko.
endform. " DATA_RETRIEVAL
Form TOP-OF-PAGE *
ALV Report Header *
Form top-of-page.
*ALV Header declarations
data: t_header type slis_t_listheader,
wa_header type slis_listheader,
t_line like wa_header-info,
ld_lines type i,
ld_linesc(10) type c.
Title
wa_header-typ = 'H'.
wa_header-info = 'EKKO Table Report'.
append wa_header to t_header.
clear wa_header.
Date
wa_header-typ = 'S'.
wa_header-key = 'Date: '.
CONCATENATE sy-datum+6(2) '.'
sy-datum+4(2) '.'
sy-datum(4) INTO wa_header-info. "todays date
append wa_header to t_header.
clear: wa_header.
Total No. of Records Selected
describe table it_ekko lines ld_lines.
ld_linesc = ld_lines.
concatenate 'Total No. of Records Selected: ' ld_linesc
into t_line separated by space.
wa_header-typ = 'A'.
wa_header-info = t_line.
append wa_header to t_header.
clear: wa_header, t_line.
call function 'REUSE_ALV_COMMENTARY_WRITE'
exporting
it_list_commentary = t_header.
i_logo = 'Z_LOGO'.
endform.
FORM USER_COMMAND *
--> R_UCOMM *
--> RS_SELFIELD *
FORM user_command USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
Check function code
CASE r_ucomm.
WHEN '&IC1'.
Check field clicked on within ALVgrid report
IF rs_selfield-fieldname = 'EBELN'.
Read data table, using index of row user clicked on
READ TABLE it_ekko INTO wa_ekko INDEX rs_selfield-tabindex.
Set parameter ID for transaction screen field
SET PARAMETER ID 'BES' FIELD wa_ekko-ebeln.
Sxecute transaction ME23N, and skip initial data entry screen
CALL TRANSACTION 'ME23N' AND SKIP FIRST SCREEN.
ENDIF.
ENDCASE.
ENDFORM.
*& Form BUILD_EVENTS
Build events table
form build_events.
data: ls_event type slis_alv_event.
call function 'REUSE_ALV_EVENTS_GET'
exporting
i_list_type = 0
importing
et_events = gt_events[].
read table gt_events with key name = slis_ev_end_of_page
into ls_event.
if sy-subrc = 0.
move 'END_OF_PAGE' to ls_event-form.
append ls_event to gt_events.
endif.
read table gt_events with key name = slis_ev_end_of_list
into ls_event.
if sy-subrc = 0.
move 'END_OF_LIST' to ls_event-form.
append ls_event to gt_events.
endif.
endform. " BUILD_EVENTS
*& Form BUILD_PRINT_PARAMS
Setup print parameters
form build_print_params.
gd_prntparams-reserve_lines = '3'. "Lines reserved for footer
gd_prntparams-no_coverpage = 'X'.
endform. " BUILD_PRINT_PARAMS
*& Form END_OF_PAGE
form END_OF_PAGE.
data: listwidth type i,
ld_pagepos(10) type c,
ld_page(10) type c.
write: sy-uline(50).
skip.
write:/40 'Page:', sy-pagno .
endform.
*& Form END_OF_LIST
form END_OF_LIST.
data: listwidth type i,
ld_pagepos(10) type c,
ld_page(10) type c.
skip.
write:/40 'Page:', sy-pagno .
endform.
hope it will help you
regards
sreelatha gullapalli -
Functionality of Checkbox in ALV Grid Report
Hi Experts,
I created a ALV grid report with the checkbox as my first coloum and other fields as shown below. Initially, my ALV report displays as below. It is working fine till here.
checkbox customer material quantity UOM Sales Order Delivery
C1 M1 1 KG
C1 M2 2 KG
C2 M1 1 KG
C2 M2 2 KG
C3 M1 1 KG
C3 M2 2 KG
C3 M3 3 KG
C4 M1 1 KG
C5 M5 1 KG
I have created a push button on application toolbar for creating sales order and delivery using bapi's. When I click on my pushbutton, as of now it creates the SO and delivery for the first customer C1 and updates my Internal table with the sales order number and delivery number. If I need to create sales order for the second customer I need to run my ALV report again and so on for 3rd, 4th and 5th customers. It is also working fine till here.
checkbox customer material quantity UOM Sales Order Delivery
C1 M1 1 KG SO1 DEL1
C1 M2 2 KG SO1 DEL1
C2 M1 1 KG
C2 M2 2 KG
C3 M1 1 KG
C3 M2 2 KG
C3 M3 3 KG
C4 M1 1 KG
C5 M5 1 KG
Need help on this:
When I select the check boxes as shown below and when I click the push button to create SO and Delivery then my program should create sales order and delivery for all the checked ones as shown below. What is the condition do I need to put here for selecting the checkbox.
checkbox customer material quantity UOM Sales Order Delivery
X C1 M1 1 KG SO1 DEL1
X C1 M2 2 KG SO1 DEL1
C2 M1 1 KG
C2 M2 2 KG
X C3 M1 1 KG SO3 DEL3
X C3 M2 2 KG SO3 DEL3
X C3 M3 3 KG SO3 DEL3
C4 M1 1 KG
X C5 M5 1 KG SO5 DEL5
I would really appreciate if somebody could help me / guide me on this. I will also post my code if someone needs to understand what I am doing exactly.
Thanks.You need to use OO ABAP
Use Class the class 1) CL_GUI_ALV_GRID, 2) CL_GUI_CUSTOM_CONTAINER
Create Sceen and container on same screen.
Check following COde it used for printing purpose.
Using AFTER_USER_COMMAND Event you will find Check box selected entries.
Capture those in another internal Table and use it for SO Creation
DATA: O_GRID TYPE REF TO CL_GUI_ALV_GRID,
O_CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER,
T_FCAT TYPE LVC_T_FCAT,
CONTAINER(15) TYPE C VALUE 'ET_CONTAINER'.
CLASS EVENT_CLASS DEFINITION
CLASS EVENT_CLASS DEFINITION.
PUBLIC SECTION.
METHODS: BEFORE_COMMAND FOR EVENT AFTER_USER_COMMAND OF CL_GUI_ALV_GRID IMPORTING E_UCOMM,
DOUBLE_CLICK_N FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID IMPORTING E_ROW E_COLUMN,
TOOLBAR FOR EVENT TOOLBAR OF CL_GUI_ALV_GRID IMPORTING E_OBJECT.
ENDCLASS. "EVENT_CLASS DEFINITION
CLASS EVENT_CLASS IMPLEMENTATION
CLASS EVENT_CLASS IMPLEMENTATION.
METHOD BEFORE_COMMAND.
IF E_UCOMM = 'PRINT'.
CLEAR : W_FLAG.
T_FINAL2 = T_FINAL.
SORT T_FINAL2 BY COL_CHK .
DELETE T_FINAL2 WHERE COL_CHK = ' '.
IF NOT T_FINAL2 IS INITIAL.
LOOP AT T_FINAL2 INTO WA_FINAL.
IF W_FLAG IS INITIAL.
Does some of modification/s in control parameters
W_CONTROL_PARAM-NO_OPEN = 'X'.
W_CONTROL_PARAM-NO_CLOSE = 'X'.
W_CONTROL_PARAM-PREVIEW = 'X'.
W_CONTROL_PARAM-NO_DIALOG = SPACE.
W_OUTPUT_OPTIONS-TDNEWID = 'X'.
W_OUTPUT_OPTIONS-TDIMMED = SPACE.
Opens the smartform print-job
CALL FUNCTION 'SSF_OPEN'
EXPORTING
OUTPUT_OPTIONS = W_OUTPUT_OPTIONS
CONTROL_PARAMETERS = W_CONTROL_PARAM
EXCEPTIONS
FORMATTING_ERROR = 1
INTERNAL_ERROR = 2
SEND_ERROR = 3
USER_CANCELED = 4
OTHERS = 5.
IF SY-SUBRC EQ 0.
W_FLAG = 'X'.
ELSE.
LEAVE LIST-PROCESSING.
ENDIF.
ENDIF.
IF W_FLAG = 'X'.
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
FORMNAME = 'ZFORM_BIW_PRINT'
IMPORTING
FM_NAME = LF_FM_NAME
EXCEPTIONS
NO_FORM = 1
NO_FUNCTION_MODULE = 2
OTHERS = 3.
IF SY-SUBRC <> 0.
ENDIF.
IF SY-SUBRC = 0.
CALL FUNCTION LF_FM_NAME
EXPORTING
CONTROL_PARAMETERS = W_CONTROL_PARAM
V_VBELN = WA_FINAL-VBELN
WA_FINAL = WA_FINAL.
TABLES
T_FINAL = T_FINAL.
ELSE.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDIF.
ENDLOOP.
* Close the smartform print job
IF W_FLAG EQ 'X'.
CALL FUNCTION 'SSF_CLOSE'
EXCEPTIONS
FORMATTING_ERROR = 1
INTERNAL_ERROR = 2
SEND_ERROR = 3
OTHERS = 4.
ENDIF.
ENDIF.
ENDIF.
ENDMETHOD. "BEFORE_COMMAND -
Short dump when exporting the ALV grid report in to spread sheet
HI,
I am facing a problem when downloading ALV grid report in to spread sheet LIST>EXPORT>LOCAL FILE -->SPREADSHEET.
in shotdump the cursor shows : "assign cline+cbegin(clength) to <field_cont>."
In SAP internal table LIST,in the first record the value of the filed LENG is 0. when i have changed this value ex:10 etc it is coming properly.
Kindly help me
NagendraIs this a standard SAP report, or your own? Can you tell what your report does, if it is a custom ALV report?
-
ALV Grid Report spool problem with column with no data
Hello All,
I have created a simple alv grid report the report has a description field of 40 ch for which I have made the display length as 20 ch . This works fine in the foreground but when I run the report in background when there is no data in this column this being overwritten with the next column. Which is causing a mismatch between the header and the data below it.
Also when I try to download the report in foreground into excel the columns are not matching with the headers this again happens for columns when there is no data.
Kindly please suggest what is going wrong.
Thanks,
ranjanHi,
For checking the output from background job, check the job and enter JDBG in the command bar and execute.
Check the field catalog and the table contents in debugging just before display.
Edited by: Jayanthi Jayaraman on Dec 2, 2010 4:09 AM
Maybe you are looking for
-
EAS Console 11.1.1.3 (local install) on Windows 7 64 bit?
hi all! just wanted to quickly double check if there is a chance to get EAS Console 11.1.1.3 installed on a Windows 7 64 bit client? Oracle Support says it does not - is a known issue (although platform matrix for 11.1.1.3 shows Windows 7 as fully su
-
Purchase order tutorial works local but not on server
Hello, I have the trial version of LC Designer ES and have been going through the tutorials which work fine locally. I need a PDF form to be populated by an XML file (just like the Purchase Order Tutorial) but located on my web server - so that anyon
-
LG Cosmos 2 - volume is too loud even on lowest setting
Hi, I recently got the LG Cosmos 2 and so far I'm fairly pleased with it. The only thing that bothers me is that the volume is very loud even when I set it to the lowest setting. This applies to both the external speaker volume and the headphones vol
-
starting Mac book pro become very slow about 4 minutes. How can I speed it?
-
Skipping of the variable screen in Web report
Hi, I have created my queries in Bex. When I run the reports from my favorites in the SAP GUI, the reports are displayed directly without bringing up the variable screen in the web browser. Currently on BI7. Any ideas how to fix the issue. Thanks Dem