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

ALV GRID format

Former Member
0 Likes
536

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

3 REPLIES 3
Read only

Former Member
0 Likes
468

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

Read only

0 Likes
468

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.

Read only

Former Member
0 Likes
468

hi,

just go through website www.alvrobot.com

and it will solve ur problem.

do give points toooo.

regards,

ric.s