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

Dyamic ALV display

Former Member
0 Likes
1,126

Hi Friendz.

I need your help.

I have written this code. But I am getting dump. Please help me.

&----


*& Report ZTEST_DYNAMIC_LIST_DISPLAY

*&

&----


*&

*&

&----


REPORT ZTEST_DYNAMIC_LIST_DISPLAY.

&----


*& Report YPUSH_PP_DEMAND_PLANS

*&

&----


*&

*&

&----


type-pools: SLIS.

TYPES : BEGIN OF t_pbim,

matnr TYPE matnr,

versb1 TYPE versb,

bdzei TYPE bdzei,

werks TYPE werks_d,

END OF t_pbim,

BEGIN OF t_pbed,

pdatu TYPE pdatu,

meins TYPE meins,

plnmg TYPE plnmg,

bdzei TYPE bdzei,

END OF t_pbed,

BEGIN OF t_marc,

matnr TYPE matnr,

dispo TYPE dispo,

werks TYPE werks_d,

END OF t_marc.

TYPES : BEGIN OF t_final,

matnr TYPE matnr,

versb1 TYPE versb,

meins TYPE meins,

pdatu TYPE pdatu,

plnmg TYPE plnmg,

total TYPE plnmg,

END OF t_final.

DATA : lt_pbim TYPE TABLE OF t_pbim,

lt_pbed TYPE TABLE OF t_pbed,

lt_marc TYPE TABLE OF t_marc,

lt_final TYPE TABLE OF t_final.

DATA : wa_pbim TYPE t_pbim,

wa_pbed TYPE t_pbed,

wa_marc TYPE t_marc,

wa_final TYPE t_final.

*Variable declaration.

DATA : v_matnr type pbim-matnr,

v_dispo type marc-dispo,

v_date(6) TYPE C,

v_date2(8) TYPE C,

v_date3(8) TYPE C,

v_date1 LIKE P0001-BEGDA,

v_months LIKE T5A4A-DLYMO,

v_days LIKE T5A4A-DLYDY,

v_years LIKE T5A4A-DLYYR,

V_CALC_DATE LIKE P0001-BEGDA,

v_no_months TYPE P,

v_date_m(6) TYPE c,

v_ind(2) TYPE c.

*Data declaration for dynamic table alv display

DATA: gt_fieldcat TYPE SLIS_T_FIELDCAT_ALV,

ls_fieldcat TYPE slis_fieldcat_alv,

st_layout TYPE SLIS_LAYOUT_ALV,

MESSAGE_HANDLER TYPE REF TO IF_HRPA_MESSAGE_HANDLER,

lds_fieldcat TYPE lvc_s_fcat,

gdt_fieldcat TYPE lvc_t_fcat.

DATA: it_fieldcatalog TYPE lvc_t_fcat,

wa_fieldcat TYPE lvc_s_fcat.

DATA: i_dyntab TYPE REF TO data. " To create dyn.Itab

DATA: w_dref TYPE REF TO data,

w_data TYPE REF TO data,

w_grid TYPE REF TO cl_gui_alv_grid.

DATA: grid TYPE REF TO cl_gui_alv_grid,

cont TYPE REF TO cl_gui_custom_container.

FIELD-SYMBOLS: <lt_final> TYPE STANDARD TABLE,

<fs_wa> TYPE ANY,<fs> TYPE ANY.

*SELECTION SCREEN.

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-120.

PARAMETERS: p_werks TYPE t001w-werks OBLIGATORY.

SELECT-OPTIONS : s_matnr FOR v_matnr.

SELECT-OPTIONS : s_dispo FOR v_dispo.

SELECT-OPTIONS : s_date FOR v_date.

PARAMETERS: p_ver1 TYPE pbim-versb,

p_ver2 TYPE pbim-versb.

SELECTION-SCREEN END OF BLOCK b1.

AT SELECTION-SCREEN.

IF s_matnr = 'X' AND s_matnr IS INITIAL.

MESSAGE E000(yt) WITH 'Please Enter the material.'.

ENDIF.

CONCATENATE s_date-low '01' INTO v_date3.

CONCATENATE s_date-high '31' INTO v_date2.

MOVE v_date3 TO v_date1.

v_years = '0000'.

v_days = '00'.

v_months = '11'.

CALL FUNCTION 'RP_CALC_DATE_IN_INTERVAL'

EXPORTING

DATE = v_date1

DAYS = v_days

MONTHS = v_months

SIGNUM = '+'

YEARS = v_years

IMPORTING

CALC_DATE = V_CALC_DATE.

CONCATENATE V_CALC_DATE0(4) V_CALC_DATE4(2) INTO v_date_m.

MOVE v_date_m TO s_date-high.

MODIFY s_date INDEX sy-tabix.

START-OF-SELECTION.

IF s_matnr IS NOT INITIAL.

IF s_date-high <> v_date_m.

CALL FUNCTION 'HR_ECM_GET_NUMBER_OF_MONTHS'

EXPORTING

BEGDA = v_date1

ENDDA = v_date2

  • DAYS_MIN = 0

MESSAGE_HANDLER = MESSAGE_HANDLER

IMPORTING

MONTHS = v_no_months

  • IS_OK = 'X'

.

ENDIF.

IF s_dispo IS NOT INITIAL.

SELECT matnr

FROM marc

INTO TABLE lt_marc

WHERE matnr IN s_matnr

AND werks = p_werks

AND dispo IN s_dispo

AND lvorm = ''.

IF SY-SUBRC <> 0.

MESSAGE E000(YT) with 'No data.'.

ENDIF.

IF NOT lt_marc IS INITIAL.

SELECT matnr

versb

bdzei

FROM pbim

INTO TABLE lt_pbim

FOR ALL ENTRIES IN lt_marc

where matnr = lt_marc-matnr

AND versb = p_ver1

OR versb = p_ver2

AND loevr = ''.

IF SY-SUBRC <> 0.

MESSAGE E000(YT) with 'No data.'.

ENDIF.

ENDIF.

ENDIF.

SELECT matnr

versb

bdzei

FROM pbim

INTO TABLE lt_pbim

WHERE matnr IN s_matnr

AND werks = p_werks

AND versb = p_ver1

OR versb = p_ver2

AND loevr = ''.

IF SY-SUBRC <> 0.

MESSAGE E000(YT) with 'No data.'.

ENDIF.

IF NOT lt_pbim IS INITIAL.

SELECT pdatu

meins

plnmg

bdzei

FROM pbed

INTO TABLE lt_pbed

FOR ALL ENTRIES IN lt_pbim

WHERE bdzei = lt_pbim-bdzei

AND pdatu BETWEEN v_date1 AND V_CALC_DATE

AND loevr = ''.

IF SY-SUBRC <> 0.

MESSAGE E000(YT) with 'No data.'.

ENDIF.

ENDIF.

ENDIF.

END-OF-SELECTION.

LOOP at lt_pbim INTO wa_pbim.

wa_final-matnr = wa_pbim-matnr.

wa_final-versb1 = wa_pbim-versb1.

READ TABLE lt_pbed INTO wa_pbed WITH KEY bdzei = wa_pbim-bdzei.

if sy-subrc = 0.

wa_final-pdatu = wa_pbed-pdatu.

wa_final-meins = wa_pbed-meins.

wa_final-plnmg = wa_pbed-plnmg.

endif.

READ TABLE lt_marc INTO wa_marc WITH KEY werks = wa_pbim-werks.

APPEND wa_final to lt_final.

CLEAR : wa_final , wa_pbim, wa_pbed, wa_marc.

ENDLOOP.

*Field cat population.

wa_fieldcat-fieldname = 'MATNR'.

wa_fieldcat-outputlen = 10.

wa_fieldcat-coltext = 'Material'.

APPEND wa_fieldcat TO it_fieldcatalog.

wa_fieldcat-fieldname = 'VERSB1'.

wa_fieldcat-outputlen = 2.

wa_fieldcat-coltext = 'VER'.

APPEND wa_fieldcat TO it_fieldcatalog.

wa_fieldcat-fieldname = 'MEINS'.

wa_fieldcat-outputlen = 3.

wa_fieldcat-coltext = 'UOM'.

APPEND wa_fieldcat TO it_fieldcatalog.

v_ind = 1.

DO v_months TIMES.

CONCATENATE 'PDATU' v_ind INTO wa_fieldcat-fieldname.

wa_fieldcat-outputlen = 6.

wa_fieldcat-coltext = 'DATE'.

APPEND wa_fieldcat TO it_fieldcatalog.

v_ind = v_ind + 1.

ENDDO.

wa_fieldcat-fieldname = 'PLNMG'.

wa_fieldcat-outputlen = 10.

wa_fieldcat-coltext = 'QUAN'.

APPEND wa_fieldcat TO it_fieldcatalog.

wa_fieldcat-fieldname = 'TOTAL'.

wa_fieldcat-outputlen = 5.

wa_fieldcat-coltext = 'TOTAL'.

APPEND wa_fieldcat TO it_fieldcatalog.

*-Dynamic Table creation

CALL METHOD cl_alv_table_create=>create_dynamic_table

EXPORTING

it_fieldcatalog = it_fieldcatalog

IMPORTING

ep_table = i_dyntab.

ASSIGN i_dyntab->* TO <lt_final>.

CREATE DATA w_data LIKE LINE OF <lt_final>.

ASSIGN w_data->* TO <fs_wa>.

LOOP at lt_final into wa_final.

ASSIGN COMPONENT 1 OF STRUCTURE <fs_wa> TO <fs>.

<fs> = wa_final-matnr.

ASSIGN COMPONENT 2 OF STRUCTURE <fs_wa> TO <fs>.

<fs> = wa_final-versb1.

UNASSIGN <fs>.

ASSIGN COMPONENT 3 OF STRUCTURE <fs_wa> TO <fs>.

<fs> = wa_final-meins.

UNASSIGN <fs>.

ASSIGN COMPONENT v_ind OF STRUCTURE <fs_wa> TO <fs>.

<fs> = wa_final-pdatu.

UNASSIGN <fs>.

ASSIGN COMPONENT 5 OF STRUCTURE <fs_wa> TO <fs>.

<fs> = wa_final-plnmg.

UNASSIGN <fs>.

ASSIGN COMPONENT 6 OF STRUCTURE <fs_wa> TO <fs>.

<fs> = wa_final-total.

UNASSIGN <fs>.

APPEND <fs_wa> TO <lt_final>.

CLEAR <fs_wa>.

ENDLOOP.

CALL SCREEN 900.

&----


*& Module STATUS_0900 OUTPUT

&----


  • text

----


MODULE STATUS_0900 OUTPUT.

SET PF-STATUS 'PF'.

SET TITLEBAR 'TITLE'.

DATA: layout TYPE lvc_s_layo.

CREATE OBJECT cont

EXPORTING

container_name = 'CONT'

EXCEPTIONS

cntl_error = 1

cntl_system_error = 2

create_error = 3

lifetime_error = 4

lifetime_dynpro_dynpro_link = 5

OTHERS = 6

.

IF sy-subrc NE 0.

MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

ENDIF.

CREATE OBJECT grid

EXPORTING

i_parent = cont

EXCEPTIONS

error_cntl_create = 1

error_cntl_init = 2

error_cntl_link = 3

error_dp_create = 4

OTHERS = 5

.

IF sy-subrc NE 0.

MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

ENDIF.

layout-INFO_FNAME = 'COLOR'.

grid->set_table_for_first_display(

EXPORTING

is_layout = layout

CHANGING

it_outtab = <lt_final>

it_fieldcatalog = it_fieldcatalog

EXCEPTIONS

invalid_parameter_combination = 1

program_error = 2

too_many_lines = 3

).

IF sy-subrc NE 0.

MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

ENDIF.

ENDMODULE. " STATUS_0900 OUTPUT

Error analysis

You attempted to access an unassigned field symbol

(data segment 12).

This error may occur if

- You address a typed field symbol before it has been set wi

ASSIGN

- You address a field symbol that pointed to the line of an

internal table that was deleted

- You address a field symbol that was previously reset using

UNASSIGN or that pointed to a local field that no

longer exists

- You address a global function interface, although the

respective function module is not active - that is, is

not in the list of active calls. The list of active calls

can be taken from this short dump.

Every thing is controlled by this..

you already reached final stage.

LOOP AT lt_final INTO wa_final.
    ASSIGN COMPONENT 1 OF STRUCTURE <fs_wa> TO <fs>.
    <fs> = wa_final-matnr.
    ASSIGN COMPONENT 2 OF STRUCTURE <fs_wa> TO <fs>.
    <fs> = wa_final-versb1.
    UNASSIGN <fs>.
    ASSIGN COMPONENT 3 OF STRUCTURE <fs_wa> TO <fs>.
    <fs> = wa_final-meins.
"This logic will change a bit  you have introduce a do loop here..
"like you did for fieldcata log population.
    UNASSIGN <fs>.
    ASSIGN COMPONENT v_ind OF STRUCTURE <fs_wa> TO <fs>.
    <fs> = wa_final-pdatu.
    UNASSIGN <fs>.
    ASSIGN COMPONENT 5 OF STRUCTURE <fs_wa> TO <fs>.
    <fs> = wa_final-plnmg.
    UNASSIGN <fs>.
    ASSIGN COMPONENT 6 OF STRUCTURE <fs_wa> TO <fs>.
    <fs> = wa_final-total.
    UNASSIGN <fs>.
 
    APPEND <fs_wa> TO <lt_final>.
    CLEAR <fs_wa>.
  ENDLOOP.

to get the 12 dates value in horizontal row , introduce this in the above loop;

data: inc type i,
 fieldname(17),
        inc2(2) type c.
inc = 1
 do v_ind times.
    inc2 = inc.
concatenate 'WA_FINAL-PDATU' inc into fieldname.
 assing (fieldname) to <fs>.
inc = inc + 1.
    enddo.

may be some errors in my code, just correct it and avoid dump in fieldsymbol assignment.

i thought in your nternal table fields are like this...

WA_FINAL-PDATU1, WA_FINAL-PDATU2, WA_FINAL-PDATU3.. etc.

concatenate 'WA_FINAL-PDATU' inc into fieldname.

7 REPLIES 7
Read only

Former Member
0 Likes
1,062

I modified your code a bit, to get the data output.since i am not getting any output. finally i got the output.

the problem lies in the code..

data: lv_ind(2) type c.
  v_ind = 1.
  DO v_months TIMES.
    lv_ind = v_ind.
    CONCATENATE 'PDATU' lv_ind INTO wa_fieldcat-fieldname.
    wa_fieldcat-outputlen = 6.
    wa_fieldcat-coltext = 'DATE'.
    APPEND wa_fieldcat TO it_fieldcatalog.
    v_ind = v_ind + 1.
  ENDDO.

v_ind should be type i, otherwise you get the dump.

so i changed it to type i.

ASSIGN COMPONENT v_ind OF STRUCTURE <fs_wa> TO <fs>.
    <fs> = wa_final-pdatu.
    UNASSIGN <fs>.

REPORT  ztest_alv_.


TYPE-POOLS: slis.
tables: t001w.
TYPES : BEGIN OF t_pbim,
matnr TYPE matnr,
versb1 TYPE versb,
bdzei TYPE bdzei,
werks TYPE werks_d,
END OF t_pbim,
BEGIN OF t_pbed,
pdatu TYPE pdatu,
meins TYPE meins,
plnmg TYPE plnmg,
bdzei TYPE bdzei,
END OF t_pbed,
BEGIN OF t_marc,
matnr TYPE matnr,
dispo TYPE dispo,
werks TYPE werks_d,
END OF t_marc.

TYPES : BEGIN OF t_final,
matnr TYPE matnr,
versb1 TYPE versb,
meins TYPE meins,
pdatu TYPE pdatu,
plnmg TYPE plnmg,
total TYPE plnmg,
END OF t_final.

DATA : lt_pbim TYPE TABLE OF t_pbim,
lt_pbed TYPE TABLE OF t_pbed,
lt_marc TYPE TABLE OF t_marc,
lt_final TYPE TABLE OF t_final.

DATA : wa_pbim TYPE t_pbim,
wa_pbed TYPE t_pbed,
wa_marc TYPE t_marc,
wa_final TYPE t_final.

*Variable declaration.
DATA : v_matnr TYPE pbim-matnr,
v_dispo TYPE marc-dispo,
v_date(6) TYPE c,
v_date2 TYPE sy-datum,
v_date3(8) TYPE c,
v_date1 LIKE p0001-begda,
v_months LIKE t5a4a-dlymo,
v_days LIKE t5a4a-dlydy,
v_years LIKE t5a4a-dlyyr,
v_calc_date LIKE p0001-begda,
v_no_months TYPE p,
v_date_m(6) TYPE c,
v_ind TYPE i.

*Data declaration for dynamic table alv display
DATA: gt_fieldcat TYPE slis_t_fieldcat_alv,
ls_fieldcat TYPE slis_fieldcat_alv,
st_layout TYPE slis_layout_alv,
message_handler TYPE REF TO if_hrpa_message_handler,
lds_fieldcat TYPE lvc_s_fcat,
gdt_fieldcat TYPE lvc_t_fcat.

DATA: it_fieldcatalog TYPE lvc_t_fcat,
wa_fieldcat TYPE lvc_s_fcat.

DATA: i_dyntab TYPE REF TO data. " To create dyn.Itab
DATA: w_dref TYPE REF TO data,
w_data TYPE REF TO data,
w_grid TYPE REF TO cl_gui_alv_grid.
DATA: grid TYPE REF TO cl_gui_alv_grid,
cont TYPE REF TO cl_gui_custom_container.

FIELD-SYMBOLS: <lt_final> TYPE STANDARD TABLE,
<fs_wa> TYPE ANY,<fs> TYPE ANY.
*SELECTION SCREEN.

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-120.

select-options: s_werks for t001w-werks OBLIGATORY.
SELECT-OPTIONS : s_matnr FOR v_matnr.
SELECT-OPTIONS : s_dispo FOR v_dispo.
SELECT-OPTIONS : s_date FOR v_date.
PARAMETERS: p_ver1 TYPE pbim-versb,
p_ver2 TYPE pbim-versb.
SELECTION-SCREEN END OF BLOCK b1.


AT SELECTION-SCREEN.
  IF s_matnr = 'X' AND s_matnr IS INITIAL.
    MESSAGE e000(yt) WITH 'Please Enter the material.'.
  ENDIF.

  CONCATENATE s_date-low '01' INTO v_date3.
  CONCATENATE s_date-high '31' INTO v_date2.
  MOVE v_date3 TO v_date1.
  v_years = '0000'.
  v_days = '00'.
  v_months = '11'.

  CALL FUNCTION 'RP_CALC_DATE_IN_INTERVAL'
    EXPORTING
      date      = v_date1
      days      = v_days
      months    = v_months
      signum    = '+'
      years     = v_years
    IMPORTING
      calc_date = v_calc_date.

  CONCATENATE v_calc_date+0(4) v_calc_date+4(2) INTO v_date_m.
  MOVE v_date_m TO s_date-high.
  MODIFY s_date INDEX sy-tabix.

START-OF-SELECTION.
  IF s_matnr IS NOT INITIAL.
*    IF s_date-high NE v_date_m.
      DATA: c_x TYPE boole_d.
      CALL FUNCTION 'HR_ECM_GET_NUMBER_OF_MONTHS'
        EXPORTING
          begda           = v_date1
          endda           = v_date2
          days_min        = 0
          message_handler = message_handler
        IMPORTING
          months          = v_no_months
          is_ok           = c_x.

*    ENDIF.
    IF s_dispo IS NOT INITIAL.
      SELECT matnr
      FROM marc
      INTO TABLE lt_marc
      WHERE matnr IN s_matnr
      AND werks in s_werks
      AND dispo IN s_dispo
      AND lvorm = ''.
      IF sy-subrc NE 0.
        MESSAGE e000(yt) WITH 'No data.'.
      ENDIF.
      IF NOT lt_marc IS INITIAL.
        SELECT matnr
        versb
        bdzei
        FROM pbim
        INTO TABLE lt_pbim
        FOR ALL ENTRIES IN lt_marc
        WHERE matnr = lt_marc-matnr
        AND versb = p_ver1
        OR versb = p_ver2
        AND loevr = ''.
        IF sy-subrc NE 0.
          MESSAGE e000(yt) WITH 'No data.'.
        ENDIF.
      ENDIF.
    ENDIF.

    SELECT matnr
    versb
    bdzei
    FROM pbim
    INTO TABLE lt_pbim
    WHERE matnr IN s_matnr
    AND werks in s_werks
    AND versb = p_ver1
    OR versb = p_ver2
    AND loevr = ''.
    IF sy-subrc NE  0.
      MESSAGE e000(yt) WITH 'No data.'.
    ENDIF.

    IF NOT lt_pbim IS INITIAL.
      SELECT pdatu
      meins
      plnmg
      bdzei
      FROM pbed
      INTO TABLE lt_pbed
      FOR ALL ENTRIES IN lt_pbim
      WHERE bdzei = lt_pbim-bdzei
*      AND pdatu BETWEEN v_date1 AND v_calc_date
      AND loevr = ''.
      IF sy-subrc NE 0.
        MESSAGE e000(yt) WITH 'No data.'.
      ENDIF.
    ENDIF.

  ENDIF.

END-OF-SELECTION.

  LOOP AT lt_pbim INTO wa_pbim.
    wa_final-matnr = wa_pbim-matnr.
    wa_final-versb1 = wa_pbim-versb1.
    READ TABLE lt_pbed INTO wa_pbed WITH KEY bdzei = wa_pbim-bdzei.
    IF sy-subrc = 0.
      wa_final-pdatu = wa_pbed-pdatu.
      wa_final-meins = wa_pbed-meins.
      wa_final-plnmg = wa_pbed-plnmg.
    ENDIF.
    READ TABLE lt_marc INTO wa_marc WITH KEY werks = wa_pbim-werks.
    APPEND wa_final TO lt_final.

    CLEAR : wa_final , wa_pbim, wa_pbed, wa_marc.
  ENDLOOP.

*Field cat population.
  wa_fieldcat-fieldname = 'MATNR'.
  wa_fieldcat-outputlen = 10.
  wa_fieldcat-coltext = 'Material'.
  APPEND wa_fieldcat TO it_fieldcatalog.

  wa_fieldcat-fieldname = 'VERSB1'.
  wa_fieldcat-outputlen = 2.
  wa_fieldcat-coltext = 'VER'.
  APPEND wa_fieldcat TO it_fieldcatalog.

  wa_fieldcat-fieldname = 'MEINS'.
  wa_fieldcat-outputlen = 3.
  wa_fieldcat-coltext = 'UOM'.
  APPEND wa_fieldcat TO it_fieldcatalog.
data: lv_ind(2) type c.
  v_ind = 1.
  DO v_months TIMES.
    lv_ind = v_ind.
    CONCATENATE 'PDATU' lv_ind INTO wa_fieldcat-fieldname.
    wa_fieldcat-outputlen = 6.
    wa_fieldcat-coltext = 'DATE'.
    APPEND wa_fieldcat TO it_fieldcatalog.
    v_ind = v_ind + 1.
  ENDDO.

  wa_fieldcat-fieldname = 'PLNMG'.
  wa_fieldcat-outputlen = 10.
  wa_fieldcat-coltext = 'QUAN'.
  APPEND wa_fieldcat TO it_fieldcatalog.

  wa_fieldcat-fieldname = 'TOTAL'.
  wa_fieldcat-outputlen = 5.
  wa_fieldcat-coltext = 'TOTAL'.
  APPEND wa_fieldcat TO it_fieldcatalog.

*-Dynamic Table creation
  CALL METHOD cl_alv_table_create=>create_dynamic_table
    EXPORTING
      it_fieldcatalog = it_fieldcatalog
    IMPORTING
      ep_table        = i_dyntab.

  ASSIGN i_dyntab->* TO <lt_final>.
  CREATE DATA w_data LIKE LINE OF <lt_final>.
  ASSIGN w_data->* TO <fs_wa>.

  LOOP AT lt_final INTO wa_final.
    ASSIGN COMPONENT 1 OF STRUCTURE <fs_wa> TO <fs>.
    <fs> = wa_final-matnr.
    ASSIGN COMPONENT 2 OF STRUCTURE <fs_wa> TO <fs>.
    <fs> = wa_final-versb1.
    UNASSIGN <fs>.
    ASSIGN COMPONENT 3 OF STRUCTURE <fs_wa> TO <fs>.
    <fs> = wa_final-meins.
    UNASSIGN <fs>.
    ASSIGN COMPONENT v_ind OF STRUCTURE <fs_wa> TO <fs>.
    <fs> = wa_final-pdatu.
    UNASSIGN <fs>.
    ASSIGN COMPONENT 5 OF STRUCTURE <fs_wa> TO <fs>.
    <fs> = wa_final-plnmg.
    UNASSIGN <fs>.
    ASSIGN COMPONENT 6 OF STRUCTURE <fs_wa> TO <fs>.
    <fs> = wa_final-total.
    UNASSIGN <fs>.

    APPEND <fs_wa> TO <lt_final>.
    CLEAR <fs_wa>.
  ENDLOOP.
  CALL SCREEN 900.

*----------------------------------------------------------------------*
*  MODULE STATUS_0900 OUTPUT
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
MODULE status_0900 OUTPUT.
  SET PF-STATUS 'PF'.
  SET TITLEBAR 'TITLE'.

  DATA: layout TYPE lvc_s_layo.

  CREATE OBJECT cont
  EXPORTING
  container_name = 'CONT'
  EXCEPTIONS
  cntl_error = 1
  cntl_system_error = 2
  create_error = 3
  lifetime_error = 4
  lifetime_dynpro_dynpro_link = 5
  OTHERS = 6
  .
  IF sy-subrc NE 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
    WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.

  CREATE OBJECT grid
  EXPORTING
  i_parent = cont
  EXCEPTIONS
  error_cntl_create = 1
  error_cntl_init = 2
  error_cntl_link = 3
  error_dp_create = 4
  OTHERS = 5
  .
  IF sy-subrc NE 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
    WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.
  layout-info_fname = 'COLOR'.
  grid->set_table_for_first_display(
  EXPORTING
  is_layout = layout
  CHANGING
  it_outtab = <lt_final>
  it_fieldcatalog = it_fieldcatalog
  EXCEPTIONS
  invalid_parameter_combination = 1
  program_error = 2
  too_many_lines = 3
  ).
  IF sy-subrc NE 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
    WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.

ENDMODULE. " STATUS_0900 OUTPUT

Read only

Former Member
0 Likes
1,062

Hi Vijay

Thank you so much.

But my problem is not yet solved.

I need to have the dates horizontally and also the field plnmg ie quantity underneath it. still m getting date and plnmg in columns. Please guide me how can i get those two fields horizontally.

Regards

Manisha.

Read only

0 Likes
1,062

Every thing is controlled by this..

you already reached final stage.

LOOP AT lt_final INTO wa_final.
    ASSIGN COMPONENT 1 OF STRUCTURE <fs_wa> TO <fs>.
    <fs> = wa_final-matnr.
    ASSIGN COMPONENT 2 OF STRUCTURE <fs_wa> TO <fs>.
    <fs> = wa_final-versb1.
    UNASSIGN <fs>.
    ASSIGN COMPONENT 3 OF STRUCTURE <fs_wa> TO <fs>.
    <fs> = wa_final-meins.
"This logic will change a bit  you have introduce a do loop here..
"like you did for fieldcata log population.
    UNASSIGN <fs>.
    ASSIGN COMPONENT v_ind OF STRUCTURE <fs_wa> TO <fs>.
    <fs> = wa_final-pdatu.
    UNASSIGN <fs>.
    ASSIGN COMPONENT 5 OF STRUCTURE <fs_wa> TO <fs>.
    <fs> = wa_final-plnmg.
    UNASSIGN <fs>.
    ASSIGN COMPONENT 6 OF STRUCTURE <fs_wa> TO <fs>.
    <fs> = wa_final-total.
    UNASSIGN <fs>.
 
    APPEND <fs_wa> TO <lt_final>.
    CLEAR <fs_wa>.
  ENDLOOP.

to get the 12 dates value in horizontal row , introduce this in the above loop;

data: inc type i,
 fieldname(17),
        inc2(2) type c.
inc = 1
 do v_ind times.
    inc2 = inc.
concatenate 'WA_FINAL-PDATU' inc into fieldname.
 assing (fieldname) to <fs>.
inc = inc + 1.
    enddo.

may be some errors in my code, just correct it and avoid dump in fieldsymbol assignment.

i thought in your nternal table fields are like this...

WA_FINAL-PDATU1, WA_FINAL-PDATU2, WA_FINAL-PDATU3.. etc.

concatenate 'WA_FINAL-PDATU' inc into fieldname.

Read only

Former Member
0 Likes
1,062

Hi

Still it is not working. I am getting blank fields

I have written this code. Please tell me where m going wrong.

wa_fieldcat-fieldname = 'MATNR'.

wa_fieldcat-outputlen = 10.

wa_fieldcat-coltext = 'Material'.

APPEND wa_fieldcat TO it_fieldcatalog.

wa_fieldcat-fieldname = 'VERSB1'.

wa_fieldcat-outputlen = 2.

wa_fieldcat-coltext = 'VER'.

APPEND wa_fieldcat TO it_fieldcatalog.

wa_fieldcat-fieldname = 'MEINS'.

wa_fieldcat-outputlen = 3.

wa_fieldcat-coltext = 'UOM'.

APPEND wa_fieldcat TO it_fieldcatalog.

wa_fieldcat-fieldname = 'PLNMG'.

wa_fieldcat-outputlen = 10.

wa_fieldcat-coltext = 'QUAN'.

APPEND wa_fieldcat TO it_fieldcatalog.

wa_fieldcat-fieldname = 'TOTAL'.

wa_fieldcat-outputlen = 5.

wa_fieldcat-coltext = 'TOTAL'.

APPEND wa_fieldcat TO it_fieldcatalog.

data: lv_ind(2) type c.

v_ind = 1.

DO v_months TIMES.

lv_ind = v_ind.

CONCATENATE 'PDATU' lv_ind INTO wa_fieldcat-fieldname.

wa_fieldcat-outputlen = 8.

  • wa_fieldcat-coltext = 'DATE'.

APPEND wa_fieldcat TO it_fieldcatalog.

v_ind = v_ind + 1.

ENDDO.

*-Dynamic Table creation

CALL METHOD cl_alv_table_create=>create_dynamic_table

EXPORTING

it_fieldcatalog = it_fieldcatalog

IMPORTING

ep_table = i_dyntab.

ASSIGN i_dyntab->* TO <lt_final>.

CREATE DATA w_data LIKE LINE OF <lt_final>.

ASSIGN w_data->* TO <fs_wa>.

LOOP AT lt_final INTO wa_final.

ASSIGN COMPONENT 1 OF STRUCTURE <fs_wa> TO <fs>.

<fs> = wa_final-matnr.

ASSIGN COMPONENT 2 OF STRUCTURE <fs_wa> TO <fs>.

<fs> = wa_final-versb1.

UNASSIGN <fs>.

ASSIGN COMPONENT 3 OF STRUCTURE <fs_wa> TO <fs>.

<fs> = wa_final-meins.

UNASSIGN <fs>.

ASSIGN COMPONENT 4 OF STRUCTURE <fs_wa> TO <fs>.

<fs> = wa_final-plnmg.

UNASSIGN <fs>.

ASSIGN COMPONENT 5 OF STRUCTURE <fs_wa> TO <fs>.

<fs> = wa_final-total.

UNASSIGN <fs>.

data: inc type i,

fieldname(17),

inc2(2) type c.

inc = 1.

do v_months times.

inc2 = inc.

concatenate WA_FINAL-PDATU inc2 into fieldname.

assign (fieldname) to <fs>.

UNASSIGN <fs>.

inc = inc + 1.

enddo.

  • ASSIGN COMPONENT v_ind OF STRUCTURE <fs_wa> TO <fs>.

  • <fs> = wa_final-pdatu.

  • UNASSIGN <fs>.

APPEND <fs_wa> TO <lt_final>.

CLEAR <fs_wa>.

ENDLOOP.

CALL SCREEN 900.

&----


*& Module STATUS_0900 OUTPUT

&----


  • text

----


MODULE STATUS_0900 OUTPUT.

SET PF-STATUS 'PF'.

SET TITLEBAR 'TITLE'.

DATA: layout TYPE lvc_s_layo.

CREATE OBJECT cont

EXPORTING

container_name = 'CONT'

EXCEPTIONS

cntl_error = 1

cntl_system_error = 2

create_error = 3

lifetime_error = 4

lifetime_dynpro_dynpro_link = 5

OTHERS = 6

.

IF sy-subrc NE 0.

MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

ENDIF.

CREATE OBJECT grid

EXPORTING

i_parent = cont

EXCEPTIONS

error_cntl_create = 1

error_cntl_init = 2

error_cntl_link = 3

error_dp_create = 4

OTHERS = 5

.

IF sy-subrc NE 0.

MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

ENDIF.

layout-INFO_FNAME = 'COLOR'.

grid->set_table_for_first_display(

EXPORTING

is_layout = layout

CHANGING

it_outtab = <lt_final>

it_fieldcatalog = it_fieldcatalog

EXCEPTIONS

invalid_parameter_combination = 1

program_error = 2

too_many_lines = 3

).

IF sy-subrc NE 0.

MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

ENDIF.

ENDMODULE. " STATUS_0900 OUTPUT

Read only

0 Likes
1,062

see the prolem is only here, if you can give me the Data how u get exactly in it_final and how you want final table then i will be able to tell you more clear.

Here you need to use control break statement based on date value. But just show a sample data and how you want it in the output.

LOOP AT lt_final INTO wa_final.
    ASSIGN COMPONENT 1 OF STRUCTURE <fs_wa> TO <fs>.
    <fs> = wa_final-matnr.
    ASSIGN COMPONENT 2 OF STRUCTURE <fs_wa> TO <fs>.
    <fs> = wa_final-versb1.
    UNASSIGN <fs>.
    ASSIGN COMPONENT 3 OF STRUCTURE <fs_wa> TO <fs>.
    <fs> = wa_final-meins.
    UNASSIGN <fs>.

    DATA: inc TYPE i,
          fieldname(17),
          inc2(2) TYPE c.
    inc = 1.
    DO v_months TIMES.
      inc2 = inc.
      CONCATENATE '<FS_WA>-PDATU' inc2 INTO fieldname.
      ASSIGN (fieldname) TO <fs>.
      <fs> = wa_final-pdatu.
      inc = inc + 1.
    ENDDO.

    UNASSIGN <fs>.
    ASSIGN COMPONENT 5 OF STRUCTURE <fs_wa> TO <fs>.
    <fs> = wa_final-plnmg.
    UNASSIGN <fs>.
    ASSIGN COMPONENT 6 OF STRUCTURE <fs_wa> TO <fs>.
    <fs> = wa_final-total.
    UNASSIGN <fs>.

    APPEND <fs_wa> TO <lt_final>.
    CLEAR <fs_wa>.
  ENDLOOP.

Read only

Former Member
0 Likes
1,062

Hi Vijay

I am getting output in format

Material Ver UOM DATE DATE DATE ..... DATE TOTAL

m09001 00 M2 20080909 0,000

m09001 01 M2 20081009 0,000

m09001 02 M2 20081009 0,000

I want the output as

Material Ver UOM DATE DATE DATE ..... DATE TOTAL

m09001 00 M2 20080909 20080910 20081009 0 ,000

01 M2 20080909 20080910 20081009 0 ,000

02 M2 20080909 20080910 20081009 0 ,000

Read only

0 Likes
1,062

using the control break statement along with fieldsymbols you can get the required output.

sort it_final by matnr VERSB1.

    DATA: inc TYPE i,
          fieldname(17),
          inc2(2) TYPE c,
     wa_final_tmp like line of lt_final.
inc = 1.
LOOP AT lt_final INTO wa_final.
 wa_final_tmp = wa_final.
 at new VERSB1.
 inc = 1.
sum.
    ASSIGN COMPONENT 1 OF STRUCTURE <fs_wa> TO <fs>.
    <fs> = wa_final-matnr.
    ASSIGN COMPONENT 2 OF STRUCTURE <fs_wa> TO <fs>.
    <fs> = wa_final-versb1.
    UNASSIGN <fs>.
    ASSIGN COMPONENT 3 OF STRUCTURE <fs_wa> TO <fs>.
    <fs> = wa_final_tmp-meins.
    UNASSIGN <fs>.
    ASSIGN COMPONENT 5 OF STRUCTURE <fs_wa> TO <fs>.
    <fs> = wa_final-plnmg.
    UNASSIGN <fs>.
    ASSIGN COMPONENT 6 OF STRUCTURE <fs_wa> TO  <fs>.
    <fs> = <fs> +  wa_final-total.
    UNASSIGN <fs>.
 endat.


      inc2 = inc.
      CONCATENATE '<FS_WA>-PDATU' inc2 INTO fieldname.
      ASSIGN (fieldname) TO <fs>.
      <fs> = wa_final-pdatu.
      inc = inc + 1.

 
    UNASSIGN <fs>.


 at end of VERSB1.
    APPEND <fs_wa> TO <lt_final>.
    CLEAR <fs_wa>.
endat.
  ENDLOOP.