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

fetching datas from ztable

Former Member
0 Likes
1,266

TYPE-POOLS : SLIS.

TABLES : MSLB,MARD,MAKT,MARA,ZROC.

TYPES : BEGIN OF TY_MSLB,

MATNR TYPE MSLB-MATNR,

WERKS TYPE MSLB-WERKS,

LBLAB TYPE MSLB-LBLAB,

END OF TY_MSLB.

TYPES : BEGIN OF TY_MARD,

MATNR TYPE MARD-MATNR,

WERKS TYPE MARD-WERKS,

LABST TYPE MARD-LABST,

LABST1 TYPE MARD-LABST,

LGORT TYPE MARD-LGORT,

LGORT1 TYPE MARD-LGORT,

LBLAB TYPE MSLB-LBLAB,

MTART TYPE MARA-MTART,

MEINS TYPE MARA-MEINS,

SPRAS TYPE MAKT-SPRAS,

MAKTX TYPE MAKT-MAKTX,

T_STOCK TYPE I,

RP_MONTH TYPE I,

COVER TYPE P DECIMALS 2,

END OF TY_MARD.

TYPES : BEGIN OF TY_MARD1,

MATNR TYPE MARD-MATNR,

WERKS TYPE MARD-WERKS,

LABST TYPE MARD-LABST,

LGORT TYPE MARD-LGORT,

LABST1 TYPE MARD-LABST,

END OF TY_MARD1.

TYPES : BEGIN OF TY_MARA,

MATNR TYPE MARA-MATNR,

MTART TYPE MARA-MTART,

MBRSH TYPE MARA-MBRSH,

MEINS TYPE MARA-MEINS,

END OF TY_MARA.

TYPES : BEGIN OF TY_MAKT,

MATNR TYPE MAKT-MATNR,

SPRAS TYPE MAKT-SPRAS,

MAKTX TYPE MAKT-MAKTX,

END OF TY_MAKT.

DATA : IT_MARD TYPE TABLE OF TY_MARD WITH HEADER LINE,

IT_MARD1 TYPE TABLE OF TY_MARD1 WITH HEADER LINE,

IT_MSLB TYPE TABLE OF TY_MSLB WITH HEADER LINE,

IT_MARA TYPE TABLE OF TY_MARA WITH HEADER LINE,

IT_MAKT TYPE TABLE OF TY_MAKT WITH HEADER LINE.

DATA : IT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE,

IT_LAYOUT TYPE SLIS_LAYOUT_ALV.

SELECTION-SCREEN : BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.

SELECT-OPTIONS : S_MATNR FOR MSLB-MATNR,

S_WERKS FOR MSLB-WERKS,

S_MTART FOR MARA-MTART.

SELECTION-SCREEN : END OF BLOCK B1.

START-OF-SELECTION.

PERFORM PREPARE_DATA.

PERFORM DISPLAY_DATA.

&----


*& Form PREPARE_DATA

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM PREPARE_DATA .

SELECT MATNR WERKS LABST LGORT FROM MARD INTO

CORRESPONDING FIELDS OF TABLE IT_MARD

WHERE MATNR IN S_MATNR

AND WERKS IN S_WERKS

AND LGORT IN ('RM04','RM01','RM02','RM03','RM05').

SELECT MATNR WERKS LBLAB FROM MSLB INTO

CORRESPONDING FIELDS OF TABLE IT_MSLB

FOR ALL ENTRIES IN IT_MARD WHERE MATNR = IT_MARD-MATNR

AND WERKS = IT_MARD-WERKS.

LOOP AT IT_MARD.

READ TABLE IT_MSLB WITH KEY MATNR = IT_MARD-MATNR

WERKS = IT_MARD-WERKS.

IF SY-SUBRC = 0.

IT_MARD-LBLAB = IT_MSLB-LBLAB.

ENDIF.

MODIFY IT_MARD.

ENDLOOP.

SELECT MATNR MTART MEINS FROM MARA INTO CORRESPONDING FIELDS OF TABLE IT_MARA

FOR ALL ENTRIES IN IT_MARD WHERE MATNR = IT_MARD-MATNR

AND MTART IN S_MTART.

LOOP AT IT_MARD.

READ TABLE IT_MARA WITH KEY MATNR = IT_MARD-MATNR.

IF SY-SUBRC = 0.

IT_MARD-MTART = IT_MARA-MTART.

IT_MARD-MEINS = IT_MARA-MEINS.

ENDIF.

MODIFY IT_MARD.

ENDLOOP.

SELECT MATNR SPRAS MAKTX FROM MAKT INTO CORRESPONDING FIELDS OF TABLE

IT_MAKT FOR ALL ENTRIES IN IT_MARD WHERE MATNR = IT_MARD-MATNR

AND SPRAS = 'EN'.

LOOP AT IT_MARD.

READ TABLE IT_MAKT WITH KEY MATNR = IT_MARD-MATNR.

IF SY-SUBRC = 0.

IT_MARD-MAKTX = IT_MAKT-MAKTX.

ENDIF.

MODIFY IT_MARD.

ENDLOOP.

SELECT MATNR WERKS LABST LGORT FROM MARD INTO

CORRESPONDING FIELDS OF TABLE IT_MARD1

FOR ALL ENTRIES IN IT_MARD

WHERE "MATNR = IT_MARD-MATNR

WERKS = IT_MARD-WERKS

AND LGORT IN ('PR04','PR01','PR02','PR03','PR05').

LOOP AT IT_MARD.

READ TABLE IT_MARD1 WITH KEY MATNR = IT_MARD-MATNR.

IF SY-SUBRC = 0.

MOVE IT_MARD1-LABST TO IT_MARD-LABST1.

ENDIF.

MODIFY IT_MARD.

ENDLOOP.

LOOP AT IT_MARD.

IF IT_MARD-MTART = ''.

DELETE IT_MARD.

ENDIF.

ENDLOOP.

LOOP AT IT_MARD.

IF IT_MARD-MEINS = ''.

DELETE IT_MARD.

ENDIF.

ENDLOOP.

LOOP AT IT_MARD.

MOVE '5000' TO IT_MARD-RP_MONTH.

MODIFY IT_MARD.

ENDLOOP.

LOOP AT IT_MARD.

IT_MARD-T_STOCK = IT_MARD-LABST + IT_MARD-LABST1 + IT_MARD-LBLAB.

MODIFY IT_MARD.

ENDLOOP.

ENDFORM. " PREPARE_DATA

&----


*& Form DISPLAY_DATA

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM DISPLAY_DATA .

IT_LAYOUT-ZEBRA = 'X'.

IT_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.

PERFORM FIELD_CATALOG TABLES IT_FIELDCAT

USING: 'IT_MARD' 'WERKS' 'X' 'PLANT' ' ',

'IT_MARD' 'MATNR' ' ' 'MATERIAL NO' ' ',

'IT_MARD' 'MAKTX' ' ' 'MATERIAL DESCRIPTION' ' ',

'IT_MARD' 'MTART' ' ' 'MATERIAL TYPE' ' ',

'IT_MARD' 'LABST' ' ' 'RAW STOCK' ' ',

'IT_MARD' 'LABST1' ' ' 'PROD STOCK' ' ',

'IT_MARD' 'LBLAB' ' ' 'SUB CONTR STOCK' ' ',

'IT_MARD' 'T_STOCK' ' ' 'TOTAL STOCK' ' ',

'IT_MARD' 'MEINS' ' ' 'QUANTITY' ' ',

'IT_MARD' 'RP_MONTH' ' ' 'REQ PER MONTH' 'X',

'IT_MARD' 'COVER' ' ' 'COVERAGE IN DAYS' ' '.

CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'

EXPORTING

  • I_INTERFACE_CHECK = ' '

  • I_BYPASSING_BUFFER =

  • I_BUFFER_ACTIVE = ' '

I_CALLBACK_PROGRAM = SY-CPROG

I_CALLBACK_PF_STATUS_SET = 'ZTEST'

I_CALLBACK_USER_COMMAND = 'USER_COMMAND'

  • I_STRUCTURE_NAME =

IS_LAYOUT = IT_LAYOUT

IT_FIELDCAT = IT_FIELDCAT[]

  • IT_EXCLUDING =

  • IT_SPECIAL_GROUPS =

  • IT_SORT =

  • IT_FILTER =

  • IS_SEL_HIDE =

  • I_DEFAULT = 'X'

  • I_SAVE = ' '

  • IS_VARIANT =

  • IT_EVENTS =

  • IT_EVENT_EXIT =

  • IS_PRINT =

  • IS_REPREP_ID =

  • I_SCREEN_START_COLUMN = 0

  • I_SCREEN_START_LINE = 0

  • I_SCREEN_END_COLUMN = 0

  • I_SCREEN_END_LINE = 0

  • IR_SALV_LIST_ADAPTER =

  • IT_EXCEPT_QINFO =

  • I_SUPPRESS_EMPTY_DATA = ABAP_FALSE

  • IMPORTING

  • E_EXIT_CAUSED_BY_CALLER =

  • ES_EXIT_CAUSED_BY_USER =

TABLES

T_OUTTAB = IT_MARD

  • 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_DATA

----


  • FORM FIELD_CATALOG *

----


  • ........ *

----


  • --> T_FIELD_CATALOG *

  • --> FP_TABNAME *

  • --> FP_FIELDNAME *

  • --> FP_KEY *

  • --> FP_TEXT *

----


FORM FIELD_CATALOG TABLES T_FIELD_CATALOG STRUCTURE IT_FIELDCAT

USING FP_TABNAME TYPE ANY

FP_FIELDNAME TYPE ANY

FP_KEY TYPE ANY

FP_TEXT TYPE ANY

FP_EDIT TYPE ANY.

T_FIELD_CATALOG-TABNAME = FP_TABNAME.

T_FIELD_CATALOG-FIELDNAME = FP_FIELDNAME.

T_FIELD_CATALOG-KEY = FP_KEY.

T_FIELD_CATALOG-SELTEXT_L = FP_TEXT.

T_FIELD_CATALOG-INPUT = FP_EDIT.

T_FIELD_CATALOG-EDIT = FP_EDIT.

APPEND IT_FIELDCAT.

CLEAR IT_FIELDCAT.

ENDFORM. " display_data

&----


*& Form ZTEST

&----


  • text

----


  • -->T_MENU text

----


FORM ZTEST USING T_MENU TYPE SLIS_T_EXTAB.

SET PF-STATUS 'ZTEST'.

ENDFORM. "ZDISP_BAS1

&----


*& Form user_command

&----


  • text

----


  • -->R_UCOMM text

  • -->RS_SELFIELD text

----


FORM USER_COMMAND USING R_UCOMM LIKE SY-UCOMM

RS_SELFIELD TYPE SLIS_SELFIELD.

CASE R_UCOMM.

WHEN '&ENT'.

LOOP AT IT_MARD.

IF IT_MARD-RP_MONTH <> 0.

IT_MARD-COVER = ( IT_MARD-T_STOCK * 26 ) / IT_MARD-RP_MONTH.

ELSE.

IT_MARD-COVER = 0.

ENDIF.

MODIFY IT_MARD.

ENDLOOP.

WHEN '&SAVE'.

LOOP AT IT_MARD.

MOVE-CORRESPONDING IT_MARD TO ZROC.

MODIFY ZROC.

ENDLOOP.

MESSAGE 'Entries are saved in table' TYPE 'I'.

ENDCASE.

ENDFORM. "user_command

in the above program when you save it is saving in zroc table.value 5000 is the default in rp_month field.

after saving it in zroc table.if i again execute saved values should be displayed instead of 5000.

9 REPLIES 9
Read only

Former Member
0 Likes
1,225

Hi,

Clear internal table before looping at

Eg:

IT_MARD[].

i.e

loop at IT_MARD[].

Regards

Kiran

Read only

0 Likes
1,225

clear it_mard after MODIFY ZROC.

Read only

Former Member
0 Likes
1,225

Hi,

In the below part

WHEN '&SAVE'.
LOOP AT IT_MARD.
MOVE-CORRESPONDING IT_MARD TO ZROC.
MODIFY ZROC FROM ZROC. "Change it like this
ENDLOOP.

Regards,

Manoj Kumar P

Read only

0 Likes
1,225

hi sir,

my problem is default value of 5000 is saving in it_mard[].

later i am changing the rp_month value and saving in zroc.

if i again execute the the program i shoud get the old values which i saved now.

i think i dont have query for getting it from zroc table.

where i have to write that one.

Read only

dev_parbutteea
Active Contributor
0 Likes
1,225

Hi,

you are not retrieving the saved values from ZROC at all. You should do a select from ZROC after your retrieval from MARD. When populating values to be displayed, check the entry in IT_ZROC .

Select ... from MARD where...

select ... from ZROC for all entries in IT_MARD where ...

LOOP AT IT_MARD.

READ IT_ZROC WITH KEY .....

IF sy-subrc = 0.

move IT_ZROC-FIELD TO IT_MARD-RP_MONTH.

else.

MOVE '5000' TO IT_MARD-RP_MONTH.

endif.

MODIFY IT_MARD.

ENDLOOP.

Regards.

Read only

Former Member
0 Likes
1,225

Hi,

Its better to write the select query in start of selection just before the perform display

Regards,

Siddarth

Read only

Former Member
0 Likes
1,225

Hi

In your entire program, you have read from mrad table into it_mard, modified it_mard several times and saved it in zroc. Only if you read from zroc into it_mard will you be able to obtain the modified values.

SELECT MATNR WERKS LABST LGORT FROM MARD INTO

CORRESPONDING FIELDS OF TABLE IT_MARD

WHERE MATNR IN S_MATNR

AND WERKS IN S_WERKS

AND LGORT IN ('RM04','RM01','RM02','RM03','RM05').

As this statement will be executed, you are reading from MARD into it_mard only.

You must write the stmt:

select * from zroc into corresponding fields of table it_mard....

in order to display the new data.

Maybe you can have a flag value.

The first time you can read from Mard and set the flag.

Then next time you can read from ZROC.

Hope this helps

Regards,

Jayanthi.K

Read only

0 Likes
1,225

thanks sister.

its working fine.

Read only

Former Member
0 Likes
1,225

working fine.thanks for all who has given tips