2006 Nov 06 1:04 PM
I need to create a program in which i have to maintain several fields, that is, it's on user for how many days of data he wants to see, So can anyone guide me how to do it. It's not going to be possible by just passing the internal table..as number of fields will be changing as on user's input,so if he wants to check the data for 2 days...2 date columns will be displayed showing data of both the dates..well my question is is there any method through which i can hide some records based on user's input?? I just wanted to check is it possible through <b>'REUSE_ALV_GRID_DISPLAY --> IS_SEL_HIDE/IS_LAYOUT ??</b>
Regards.
AMIT
I need to create a program in which i have to maintain several fields, that is, it's on user for how many days of data he wants to see, So can anyone guide me how to do it. It's not going to be possible by just passing the internal table..as number of fields will be changing as on user's input,so if he wants to check the data for 2 days...2 date columns will be displayed showing data of both the dates..well my question is is there any method through which i can hide some records based on user's input?? I just wanted to check is it possible through <b>'REUSE_ALV_GRID_DISPLAY --> IS_SEL_HIDE/IS_LAYOUT ??</b>
Regards.
AMIT
2006 Nov 06 1:32 PM
Hi Amit,
You need to create dynamic Internal Table and also modify the Fieldcatelog dynamically , so as to Select only the data requiered as per user input and Display data acordingly.
Refer Sample code: You can sue similar logic for your case.
&----
Create Dyanamic Internal table
----
FORM f0321_create_dynamic_table.
DATA: lt_fieldcat TYPE lvc_t_fcat, " Field Catalog
lw_fieldcat TYPE lvc_s_fcat, " Field Catalog
li_dynamic_table TYPE REF TO data, " Int. Table
lv_week TYPE char8, " Week
lv_index TYPE char3, " Loop Index
lv_colpos TYPE i, " Column position
lv_weeks TYPE i. " Week
FIELD-SYMBOLS: <lt_table> TYPE table,
<lw_table>.
REFRESH lt_fieldcat.
*-- Create Field catalog
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
i_structure_name = 'ZCS_VENDOR_SCHEDULE'
CHANGING
ct_fieldcat = lt_fieldcat
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
IF sy-subrc <> 0.
MESSAGE i004 WITH text-029. "Error in building the fld cataloge
LEAVE LIST-PROCESSING.
ENDIF.
lv_weeks = p_weeks - 1.
DO lv_weeks TIMES.
lv_index = sy-index + 1.
CONCATENATE 'WEEK' lv_index INTO lv_week.
CONDENSE lv_week NO-GAPS.
lv_colpos = sy-index + 17.
lw_fieldcat-fieldname = lv_week.
lw_fieldcat-datatype = 'CHAR'.
lw_fieldcat-inttype = 'C'.
lw_fieldcat-intlen = '13'.
lw_fieldcat-coltext = lv_week.
lw_fieldcat-col_pos = lv_colpos.
lw_fieldcat-just = 'R'.
lw_fieldcat-tabname = '1'.
lw_fieldcat-outputlen = '10'.
lw_fieldcat-ref_table = 'ZCS_VENDOR_SCHEDULE'.
lw_fieldcat-ref_field = 'WEEK1'.
APPEND lw_fieldcat TO lt_fieldcat.
CLEAR: lv_index,lv_week,lw_fieldcat.
ENDDO.
i_fldcatalog1[] = lt_fieldcat[].
*-- Create Dynamic internal Table
CALL METHOD cl_alv_table_create=>create_dynamic_table
EXPORTING it_fieldcatalog = lt_fieldcat
IMPORTING ep_table = li_dynamic_table.
ASSIGN li_dynamic_table->* TO <i_table>.
&----
Populate Output File
----
FORM f0322_populate_output_file.
DATA: lv_index TYPE char3, " Index
lv_date LIKE scal-date, " Date
lv_date1 LIKE scal-date, " Date
lv_date2 TYPE char10, " Date
lv_tabix TYPE sy-tabix, " Index
lv_week TYPE char8, " Week
lv_week1 TYPE scal-week, " Week
lv_feb LIKE t009b-bumon VALUE '02', " February
lv_year LIKE t009b-bdatj, " Year.
lv_dat TYPE scal-date.
FIELD-SYMBOLS: <lw_vendor_sch> TYPE ty_vendor_sch,
<l_output_alv> TYPE ty_output,
<l_lfa1> TYPE ty_lfa1,
<l_marc> TYPE ty_marc,
<l_t001w> TYPE ty_t001w,
<l_rtype>, <l_lifnr>,<l_name>, <l_matnr>,<l_maktx>,
<l_idnlf>, <l_mmsta>,<l_suppfb>,<l_werks>,<l_name1>,
<l_dispo>, <l_pltf>, <l_pltfw>, <l_plifz>,
<l_fdescr>,<l_meins>, <l_week>, <lw_table>.
ASSIGN LOCAL COPY OF INITIAL LINE OF <i_table> TO <lw_table>.
ASSIGN COMPONENT: 'RTYPE' OF STRUCTURE <lw_table> TO <l_rtype>,
'LIFNR' OF STRUCTURE <lw_table> TO <l_lifnr>,
'NAME' OF STRUCTURE <lw_table> TO <l_name>,
'MATNR' OF STRUCTURE <lw_table> TO <l_matnr>,
'MAKTX' OF STRUCTURE <lw_table> TO <l_maktx>,
'IDNLF' OF STRUCTURE <lw_table> TO <l_idnlf>,
'MMSTA' OF STRUCTURE <lw_table> TO <l_mmsta>,
'SUPPFB' OF STRUCTURE <lw_table> TO <l_suppfb>,
'WERKS' OF STRUCTURE <lw_table> TO <l_werks>,
'NAME1' OF STRUCTURE <lw_table> TO <l_name1>,
'DISPO' OF STRUCTURE <lw_table> TO <l_dispo>,
'PLTF' OF STRUCTURE <lw_table> TO <l_pltf>,
'PLTFW' OF STRUCTURE <lw_table> TO <l_pltfw>,
'PLIFZ' OF STRUCTURE <lw_table> TO <l_plifz>,
'FDESCR' OF STRUCTURE <lw_table> TO <l_fdescr>,
'MEINS' OF STRUCTURE <lw_table> TO <l_meins>.
REFRESH: <i_table>, i_output.
SORT i_vendor_sch BY zlifnr zmatnr zwerks ztype week.
<b>*-- Populate Output File Table.</b>
LOOP AT i_vendor_sch ASSIGNING <lw_vendor_sch>.
w_output-lifnr = <lw_vendor_sch>-zlifnr. " Vendor
w_output-matnr = <lw_vendor_sch>-zmatnr. " Material no.
w_output-idnlf = <lw_vendor_sch>-zidnlf. " Material used by vendor
w_output-werks = <lw_vendor_sch>-zwerks. " Plant
w_output-meins = <lw_vendor_sch>-zmeins. " UOM
w_output-menge = <lw_vendor_sch>-zmenge. " Weekly Amount
w_output-ztype = <lw_vendor_sch>-ztype. " Firmed / Unfirmed ind.
w_output-week = <lw_vendor_sch>-week. " Week.
READ TABLE i_lfa1 ASSIGNING <l_lfa1>
WITH KEY lifnr = <lw_vendor_sch>-zlifnr.
IF sy-subrc EQ 0.
w_output-name = <l_lfa1>-name1. " Vendor Description
w_output-email = <l_lfa1>-smtp_addr. " Email Address
ENDIF.
READ TABLE i_marc ASSIGNING <l_marc>
WITH KEY matnr = <lw_vendor_sch>-zmatnr
werks = <lw_vendor_sch>-zwerks.
IF sy-subrc EQ 0.
w_output-name1 = <l_marc>-name1. " Plant Description
w_output-mmsta = <l_marc>-mmsta. " Material Status
w_output-dispo = <l_marc>-dispo. " MRP Controler
w_output-plifz = <l_marc>-plifz. " Planned delivery time
w_output-maktx = <l_marc>-maktx. " Material Description
REFRESH i_output_alv.
i_output_alv[] = i_output[].
*-- Check for Leap Year
lv_year = v_curr_week+0(4).
CALL FUNCTION 'NUMBER_OF_DAYS_PER_MONTH_GET'
EXPORTING
par_month = lv_feb
par_year = lv_year
IMPORTING
par_days = v_days.
*-- Populate Dynamic Internal Table for ALV Display
LOOP AT i_output_alv INTO w_output.
DATA: lv_yr_week TYPE char2, " Weeks in Yr
lv_week_diff TYPE char2, " Weeks diff
lv_week_no TYPE char3. " Week no.
<l_rtype> = 'B'.
<l_lifnr> = w_output-lifnr. " Vendor
<l_matnr> = w_output-matnr. " Material no.
<l_idnlf> = w_output-idnlf. " Material used by vendor
<l_werks> = w_output-werks. " Plant
<l_meins> = w_output-meins. " UOM
<l_name> = w_output-name. " Vendor Description
<l_name1> = w_output-name1. " Plant Description
<l_mmsta> = w_output-mmsta. " Material Status
<l_dispo> = w_output-dispo. " MRP Controler
CONDENSE w_output-plifz.
<l_plifz> = w_output-plifz. " Planned delivery time
<l_maktx> = w_output-maktx. " Material Description
<l_pltf> = w_output-pltf. " Planning Time Fence
<l_pltfw> = w_output-pltfw. " Planning Time Fence Week
<l_suppfb> = c_space. " Supplier Feedback
IF w_output-ztype = 'PO'.
<l_fdescr> = 'Firmed'. " Firmed/ Unfirmed
LOOP AT i_output_alv ASSIGNING <l_output_alv>
WHERE lifnr = w_output-lifnr
AND matnr = w_output-matnr
AND werks = w_output-werks
AND ztype = 'PO'.
lv_tabix = sy-tabix.
*-- Difference between Input and Current Year
lv_week_diff = <l_output_alv>-week0(4) - v_curr_week0(4).
IF lv_week_diff EQ 0. " Same Year
lv_week_no = <l_output_alv>-week - v_curr_week + 1.
ELSEIF lv_week_diff EQ '1'. " Next Year
IF v_days EQ 29. " Leap Year
lv_week_no = 53 - v_curr_week+4(2) + <l_output_alv>-week+4(2)
+ 1.
ELSE.
lv_week_no = 52 - v_curr_week+4(2) + <l_output_alv>-week+4(2)
+ 1.
ENDIF.
ENDIF.
CONCATENATE 'WEEK' lv_week_no INTO lv_week.
CONDENSE lv_week NO-GAPS.
ASSIGN COMPONENT lv_week OF STRUCTURE <lw_table> TO <l_week>.
<l_week> = <l_output_alv>-menge. " Weekly Amount
DELETE i_output_alv INDEX lv_tabix.
CLEAR lv_tabix.
ENDLOOP.
APPEND <lw_table> TO <i_table>.
ELSE.
<l_fdescr> = 'Unfirmed'.
LOOP AT i_output_alv ASSIGNING <l_output_alv>
WHERE lifnr = w_output-lifnr
AND matnr = w_output-matnr
AND werks = w_output-werks
AND ztype <> 'PO'.
lv_tabix = sy-tabix.
*-- Difference between Input and Current Year
lv_week_diff = <l_output_alv>-week0(4) - v_curr_week0(4).
IF lv_week_diff EQ 0. " Same Year
lv_week_no = <l_output_alv>-week - v_curr_week + 1.
ELSEIF lv_week_diff EQ '1'. " Next Year
IF v_days EQ 29. " Leap Year
lv_week_no = 53 - v_curr_week+4(2) + <l_output_alv>-week+4(2)
+ 1.
ELSE.
lv_week_no = 52 - v_curr_week+4(2) + <l_output_alv>-week+4(2)
+ 1.
ENDIF.
ENDIF.
CONCATENATE 'WEEK' lv_week_no INTO lv_week.
CONDENSE lv_week NO-GAPS.
ASSIGN COMPONENT lv_week OF STRUCTURE <lw_table> TO <l_week>.
<l_week> = <l_output_alv>-menge. " Weekly Amount
DELETE i_output_alv INDEX lv_tabix.
CLEAR lv_tabix.
ENDLOOP.
APPEND <lw_table> TO <i_table>.
ENDIF.
CLEAR: <lw_table>,lv_index.
ENDLOOP.
Reward Points if this helps.
Manish
2007 Oct 22 4:23 AM
Hi Manish
Below is the report for document changes for 2 tables CDPOS, CDHDR
I need some modification for how to add the ranges
Plant from ________ to ___________
Udate from __________ to ___________-
Document No from ________ to __________
Change date from ____________ to _____________
username by __________
If i don't enter anything the it should display all the records esle the ranges defined.
I even want to add plant code from and to but not getting idea from which table it has to be taken? I want this to be display in ALV Gride Format
Please could anyone help me in modification please urgent.........v urgent
REPORT ZCHGDOC.
TABLES: CDHDR,
CDPOS.
DATA: BEGIN OF itab occurs 0,
UDATE TYPE sy-datum,
end of itab.
SELECT-OPTIONS udate for sy-datum .
SELECTION-SCREEN BEGIN OF BLOCK DOCUMENT WITH FRAME TITLE TEXT-701.
PARAMETER: CHANGENR LIKE CDHDR-CHANGENR.
SELECTION-SCREEN END OF BLOCK DOCUMENT.
END-OF-SELECTION.
DATA: BEGIN OF IT_CDHDR OCCURS 0,
OBJECTCLAS LIKE CDHDR-OBJECTCLAS,
OBJECTID LIKE CDHDR-OBJECTID,
CHANGENR LIKE CDHDR-CHANGENR,
USERNAME LIKE CDHDR-USERNAME,
UDATE LIKE CDHDR-UDATE,
UTIME LIKE CDHDR-UTIME,
VALUE_NEW LIKE CDPOS-VALUE_NEW,
VALUE_OLD LIKE CDPOS-VALUE_OLD,
END OF IT_CDHDR.
DATA: WA LIKE LINE OF IT_CDHDR.
DATA: WA LIKE LINE OF IT_CDPOS.
DATA: BEGIN OF IT_CDPOS OCCURS 0,
OBJECTCLAS LIKE CDHDR-OBJECTCLAS,
OBJECTID LIKE CDHDR-OBJECTID,
CHANGENR LIKE CDHDR-CHANGENR,
TABNAME LIKE CDPOS-TABNAME,
FNAME LIKE CDPOS-FNAME,
VALUE_NEW LIKE CDPOS-VALUE_NEW,
VALUE_OLD LIKE CDPOS-VALUE_OLD,
END OF IT_CDPOS.
SELECT OBJECTCLAS
OBJECTID
CHANGENR
USERNAME
UDATE
UTIME INTO CORRESPONDING FIELDS OF TABLE IT_CDHDR
FROM CDHDR
WHERE OBJECTCLAS = 'VERKBELEG'.
IF IT_CDHDR[] IS NOT INITIAL.
SELECT OBJECTCLAS
OBJECTID
CHANGENR
VALUE_NEW
VALUE_OLD
FNAME
TABNAME
INTO CORRESPONDING FIELDS OF TABLE IT_CDPOS FROM CDPOS
FOR ALL ENTRIES IN IT_CDHDR
WHERE
OBJECTCLAS = IT_CDHDR-OBJECTCLAS
AND OBJECTID = IT_CDHDR-OBJECTID
AND CHANGENR = IT_CDHDR-CHANGENR.
SORT IT_CDPOS BY OBJECTCLAS OBJECTID CHANGENR.
ENDIF.
Add tables CDPOS DATA TO CDHDR.
DATA: INDEX TYPE i.
LOOP AT IT_CDHDR.
INDEX = SY-TABIX.
READ TABLE IT_CDPOS WITH KEY OBJECTCLAS = IT_CDHDR-OBJECTCLAS
OBJECTID = IT_CDHDR-OBJECTID
CHANGENR = IT_CDHDR-CHANGENR BINARY SEARCH.
IF SY-SUBRC = 0.
IT_CDHDR-VALUE_NEW = IT_CDPOS-VALUE_NEW.
IT_CDHDR-VALUE_OLD = IT_CDPOS-VALUE_OLD.
MODIFY IT_CDHDR INDEX index TRANSPORTING value_new value_old.
ENDIF.
LOOP AT IT_CDHDR INTO WA.
WRITE: WA-OBJECTID.
WRITE: / WA-UDATE,WA-CHANGENR,WA-USERNAME,WA-VALUE_NEW,WA-VALUE_OLD.
WRITE: / WA-CHANGENR,WA-VALUE_NEW,WA-VALUE_OLD.
ENDLOOP.
ENDLOOP.
2007 Oct 23 6:32 AM
hi,
just go through website www.alvrobot.com
and it will solve ur problem.
do give points toooo.
regards,
ric.s
| User | Count |
|---|---|
| 3 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |