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

Modify DB-table

Former Member
0 Likes
553

I have an ALV report output in which the endusers can enter values as well as split a line into multiple lines. My problem is that these change has to go/(reflect) in a "Z" dB-table.

I need help in 2 things:-

1.) While modifying the Z-DB-table, it is not doing it correctly (mainly because with the Modify statement I cannot write the where condition and see that the correct line is modified)

2.) If there is no change is ALV report, it should stop from saving the data and display a message.

Thank You,

SB.

3 REPLIES 3
Read only

Former Member
0 Likes
501

See the Example code :

type-pools : slis.

tables : zsdcarton,

ztruck.

  • zwm_trk_loc.

  • Internal table for ZTRUCK and ZSDCARTON

data : begin of int_ztruck occurs 0 ,

vdatu like ztruck-vdatu,

ZZTRKNO like ztruck-ZZTRKNO,

  • zzrun like ztruck-zzrun,

ZZPHYTRK like ztruck-ZZPHYTRK,

zzdestime like ztruck-zzdestime,

zzrun like ztruck-zzrun,

ZZSWAVENO like zsdcarton-ZZSWAVENO,

end of int_ztruck.

  • Internal table for ZSDCARTON

data : begin of i_zsdcarton occurs 0,

werks like zsdcarton-werks,

VDATU like zsdcarton-vdatu,

ZZRUN like zsdcarton-zzrun,

ZZSWAVENO like zsdcarton-ZZSWAVENO,

ZZTRKNO like zsdcarton-ZZTRKNO,

VBELN like zsdcarton-vbeln,

ZZCARTON like zsdcarton-zzcarton,

end of i_zsdcarton.

  • Final Internal Table

data : begin of i_final occurs 0,

sel_recs(1) type c,

ZZTRKNO like ZWMTRK_ALV-ZZTRKNO,

ZZPHYTRK like ztruck-ZZPHYTRK,

ZZSWAVENO like zsdcarton-ZZSWAVENO,

tord(5) type c,

tcart(5) type c,

zzdestime like ztruck-zzdestime,

ZZPLOC like zwm_trk_loc-ZZPLOC,

ZZRLOC like zwm_trk_loc-ZZRLOC,

zzrun like ztruck-zzrun,

end of i_final.

  • Work Area for Truck Location table

data w_trk_loc like zwm_trk_loc.

  • Variables

data : v_lines type i,

v_lines1 type i,

v_repid like sy-repid.

  • ALV Function Module Variables

DATA: g_repid like sy-repid,

gs_layout type slis_layout_alv,

g_exit_caused_by_caller,

gs_exit_caused_by_user type slis_exit_by_user.

DATA: gt_fieldcat type slis_t_fieldcat_alv,

gs_print type slis_print_alv,

gt_events type slis_t_event,

gt_list_top_of_page type slis_t_listheader,

g_status_set type slis_formname value 'PF_STATUS_SET',

g_user_command type slis_formname value 'USER_COMMAND',

g_top_of_page type slis_formname value 'TOP_OF_PAGE',

g_top_of_list type slis_formname value 'TOP_OF_LIST',

g_end_of_list type slis_formname value 'END_OF_LIST',

g_variant LIKE disvariant,

g_save(1) TYPE c,

g_tabname_header TYPE slis_tabname,

g_tabname_item TYPE slis_tabname,

g_exit(1) TYPE c,

gx_variant LIKE disvariant.

************************************************************************

                                • S E L E C T I O N - S C R E E N *********************

************************************************************************

selection-screen : begin of block blk with frame title text-001.

parameters : p_werks like ztruck-werks obligatory default '1000'.

parameters : p_vdatu like zsdcarton-vdatu obligatory ."default sy-datum.

select-options : s_run for ztruck-ZZRUN,

s_wave for ZSDCARTON-ZZSWAVENO ,

s_trkno for ZSDCARTON-ZZTRKNO.

selection-screen : end of block blk.

  • Fill the default values

initialization.

v_repid = sy-repid.

PERFORM LAYOUT_INIT USING GS_LAYOUT.

PERFORM EVENTTAB_BUILD USING GT_EVENTS[].

************************************************************************

                                • S T A R T - O F - S E L E C T I O N ***************

************************************************************************

start-of-selection.

  • Refresh and Clear all Variables and Internal Tables

perform clear_initial_values.

  • Get the data from ZTRUCK,ZSDCARTON,ZWVBAK and ZWVBAP

perform get_data_tables.

************************************************************************

                                    • E N D - O F - S E L E C T I O N *****************

************************************************************************

end-of-selection.

if not i_final[] is initial.

  • ALV Function Module

perform print_alv.

endif.

&----


*& Form clear_initial_values

&----


*

----


FORM clear_initial_values.

clear : i_zsdcarton,

int_ztruck,

v_lines,

v_lines1.

refresh : i_zsdcarton,

int_ztruck.

ENDFORM. " clear_initial_values

&----


*& Form get_data_tables

&----


  • Get the data from tables

----


FORM get_data_tables.

select a~vdatu a~ZZTRKNO a~ZZPHYTRK a~zzdestime

a~zzrun b~ZZSWAVENO

into table int_ztruck

from ztruck as a inner join zsdcarton as b

on a~zztrkno = b~zztrkno

where a~vdatu = p_vdatu

and a~zztrkno in s_trkno

and b~ZZSWAVENO in s_wave

and b~zzrun in s_run

and a~werks = p_werks

and b~werks = p_werks

and b~vdatu = p_vdatu.

if sy-subrc ne 0.

message e004.

endif.

break sreddy.

sort int_ztruck by vdatu zztrkno zzrun zzswaveno ZZPHYTRK .

DELETE ADJACENT DUPLICATES FROM int_ztruck

comparing vdatu zzrun zztrkno zzswaveno ZZPHYTRK.

loop at int_ztruck.

  • Get the data from ZSDCARTON

clear : i_zsdcarton,

v_lines,

v_lines1,

w_trk_loc.

refresh : i_zsdcarton.

select werks

vdatu

zzrun

ZZSWAVENO

ZZTRKNO

vbeln

ZZCARTON from zsdcarton into table i_zsdcarton

where werks = p_werks

and vdatu = int_ztruck-vdatu

and zzrun = int_ztruck-zzrun

and zztrkno = int_ztruck-zztrkno

and ZZSWAVENO = int_ztruck-ZZSWAVENO.

if sy-subrc eq 0.

  • Total Cartons

describe table i_zsdcarton lines v_lines.

i_final-tcart = v_lines.

DELETE ADJACENT DUPLICATES FROM i_zsdcarton

comparing werks vdatu zzrun zzswaveno vbeln.

  • Total Orders

describe table i_zsdcarton lines v_lines1.

i_final-tord = v_lines1.

endif.

  • Get the Parked Location and Returned Location.

select single * from zwm_trk_loc into w_trk_loc

where ZZPHYTRK = int_ztruck-ZZPHYTRK.

if sy-subrc eq 0.

i_final-ZZPLOC = w_trk_loc-ZZPLOC.

i_final-ZZRLOC = w_trk_loc-ZZRLOC.

endif.

i_final-zztrkno = int_ztruck-zztrkno.

i_final-ZZPHYTRK = int_ztruck-ZZPHYTRK.

i_final-ZZSWAVENO = int_ztruck-ZZSWAVENO.

i_final-zzdestime = int_ztruck-zzdestime.

i_final-zzrun = int_ztruck-zzrun.

append i_final.

clear : i_final,

int_ztruck.

endloop.

ENDFORM. " get_data_tables

----


  • FORM LAYOUT_INIT *

----


  • ........ *

----


  • --> RS_LAYOUT *

----


FORM LAYOUT_INIT USING RS_LAYOUT TYPE SLIS_LAYOUT_ALV.

**"Build layout for list display

RS_LAYOUT-DETAIL_POPUP = 'X'.

*

    • lslayout-f2code = p_f2code.

  • rs_layout-zebra = 'X'.

  • rs_layout-colwidth_optimize = 'X'.

ENDFORM.

----


  • FORM EVENTTAB_BUILD *

----


  • ........ *

----


  • --> RT_EVENTS *

----


FORM EVENTTAB_BUILD USING RT_EVENTS TYPE SLIS_T_EVENT.

*"Registration of events to happen during list display

DATA: LS_EVENT TYPE SLIS_ALV_EVENT.

*

CALL FUNCTION 'REUSE_ALV_EVENTS_GET'

EXPORTING

I_LIST_TYPE = 0

IMPORTING

ET_EVENTS = RT_EVENTS.

READ TABLE RT_EVENTS WITH KEY NAME = SLIS_EV_TOP_OF_PAGE

INTO LS_EVENT.

IF SY-SUBRC = 0.

MOVE G_TOP_OF_PAGE TO LS_EVENT-FORM.

APPEND LS_EVENT TO RT_EVENTS.

ENDIF.

ENDFORM.

&----


*& Form print_alv

&----


  • text

----


FORM print_alv.

PERFORM COMMENT_BUILD USING GT_LIST_TOP_OF_PAGE[].

break sreddy.

  • Populate field catalog

PERFORM fieldcat_init using gt_fieldcat[].

  • sort i_final

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

  • I_INTERFACE_CHECK = ' '

  • I_BYPASSING_BUFFER =

  • I_BUFFER_ACTIVE = ' '

I_CALLBACK_PROGRAM = v_repid

I_CALLBACK_PF_STATUS_SET = 'STANDARD_02'

I_CALLBACK_USER_COMMAND = g_user_command

I_CALLBACK_TOP_OF_PAGE = g_top_of_page

  • I_CALLBACK_HTML_TOP_OF_PAGE = ' '

  • I_CALLBACK_HTML_END_OF_LIST = ' '

  • I_STRUCTURE_NAME =

  • I_BACKGROUND_ID = ' '

  • I_GRID_TITLE =

  • I_GRID_SETTINGS =

IS_LAYOUT = gs_layout

IT_FIELDCAT = gt_fieldcat[]

  • IT_EXCLUDING =

  • IT_SPECIAL_GROUPS =

  • IT_SORT =

  • IT_FILTER =

  • IS_SEL_HIDE =

  • I_DEFAULT = 'X'

I_SAVE = 'A'

  • IS_VARIANT =

IT_EVENTS = GT_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

  • IT_ALV_GRAPHICS =

  • IT_ADD_FIELDCAT =

  • IT_HYPERLINK =

  • I_HTML_HEIGHT_TOP =

  • I_HTML_HEIGHT_END =

  • IT_EXCEPT_QINFO =

  • IMPORTING

  • E_EXIT_CAUSED_BY_CALLER =

  • ES_EXIT_CAUSED_BY_USER =

TABLES

T_OUTTAB = i_final

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. " print_alv

----


  • FORM COMMENT_BUILD *

----


  • ........ *

----


  • --> LT_TOP_OF_PAGE *

----


FORM COMMENT_BUILD USING LT_TOP_OF_PAGE TYPE

SLIS_T_LISTHEADER.

DATA: LS_LINE TYPE SLIS_LISTHEADER.

  • Variables for Date

data : lv_year(4) type c,

lv_mon(2) type c,

lv_day(2) type c,

lv_date1(10) type c,

lv_date2(10) type c,

lv_time(8) type c,

lv_hour(2) type c,

lv_min(2) type c,

lv_sec(2) type c.

  • LIST HEADING LINE: TYPE H

CLEAR LS_LINE.

LS_LINE-TYP = 'H'.

LS_LINE-INFO = sy-title.

APPEND LS_LINE TO LT_TOP_OF_PAGE.

  • Plant

  • STATUS LINE: TYPE S

CLEAR LS_LINE.

LS_LINE-TYP = 'S'.

LS_LINE-KEY = TEXT-c02.

LS_LINE-INFO = P_WERKS.

APPEND LS_LINE TO LT_TOP_OF_PAGE.

clear : lv_time,

lv_hour,

lv_min,

lv_sec.

lv_hour = sy-uzeit+0(2).

lv_min = sy-uzeit+2(2).

lv_sec = sy-uzeit+4(2).

concatenate lv_hour ':' lv_min ':' lv_sec into lv_time.

  • Current time

  • STATUS LINE: TYPE S

CLEAR LS_LINE.

LS_LINE-TYP = 'S'.

LS_LINE-KEY = TEXT-c03.

LS_LINE-INFO = lv_time.

APPEND LS_LINE TO LT_TOP_OF_PAGE.

clear : lv_year,

lv_day,

lv_mon,

lv_date1.

lv_year = p_vdatu+0(4).

lv_mon = p_vdatu+4(2).

lv_day = p_vdatu+6(2).

concatenate lv_mon '/' lv_day '/' lv_year into lv_date1.

  • STATUS LINE: TYPE S

CLEAR LS_LINE.

LS_LINE-TYP = 'S'.

LS_LINE-KEY = TEXT-c01.

LS_LINE-INFO = lv_date1.

APPEND LS_LINE TO LT_TOP_OF_PAGE.

  • STATUS LINE: TYPE S

CLEAR LS_LINE.

LS_LINE-TYP = 'S'.

LS_LINE-KEY = ''.

LS_LINE-INFO = ''.

APPEND LS_LINE TO LT_TOP_OF_PAGE.

  • STATUS LINE: TYPE S

CLEAR LS_LINE.

LS_LINE-TYP = 'S'.

LS_LINE-KEY = ''.

LS_LINE-INFO = ''.

APPEND LS_LINE TO LT_TOP_OF_PAGE.

  • STATUS LINE: TYPE S

CLEAR LS_LINE.

LS_LINE-TYP = 'S'.

LS_LINE-KEY = ''.

LS_LINE-INFO = ''.

APPEND LS_LINE TO LT_TOP_OF_PAGE.

  • STATUS LINE: TYPE S

CLEAR LS_LINE.

LS_LINE-TYP = 'S'.

LS_LINE-KEY = ''.

LS_LINE-INFO = ''.

APPEND LS_LINE TO LT_TOP_OF_PAGE.

  • STATUS LINE: TYPE S

CLEAR LS_LINE.

LS_LINE-TYP = 'S'.

LS_LINE-KEY = ''.

LS_LINE-INFO = ''.

APPEND LS_LINE TO LT_TOP_OF_PAGE.

ENDFORM.

  • Fieldcatlog

FORM fieldcat_init USING e01_lt_fieldcat type slis_t_fieldcat_alv.

DATA: LS_FIELDCAT TYPE SLIS_FIELDCAT_ALV.

CLEAR gs_layout.

gs_layout-f2code = ' '.

  • g_layout-flexible_key = 'X'.

  • g_layout-colwidth_optimize = 'X'.

gs_layout-detail_initial_lines = 'X'.

gs_layout-box_fieldname = 'SEL_RECS'.

gs_layout-box_tabname = 'ITAB_REPORT'.

  • Route Number

CLEAR LS_FIELDCAT.

LS_FIELDCAT-FIELDNAME = 'ZZTRKNO'.

LS_FIELDCAT-ref_fieldname = 'ZZTRKNO'.

LS_FIELDCAT-ref_tabname = 'ZTRUCK'.

LS_FIELDCAT-TABNAME = 'I_FINAL'.

  • ls_fieldcat-edit = 'X'.

  • LS_FIELDCAT-OUTPUTLEN = 25.

ls_fieldcat-seltext_L = 'Route Number'.

  • ls_fieldcat-seltext_M = 'Route Number'.

  • ls_fieldcat-seltext_S = 'Route Number'.

APPEND LS_FIELDCAT TO E01_LT_FIELDCAT.

  • Physical Truck

CLEAR LS_FIELDCAT.

LS_FIELDCAT-FIELDNAME = 'ZZPHYTRK'.

  • LS_FIELDCAT-ref_fieldname = 'ZZPHYTRK'.

  • LS_FIELDCAT-ref_tabname = 'ZTRUCK'.

LS_FIELDCAT-TABNAME = 'I_FINAL'.

ls_fieldcat-edit = 'X'.

LS_FIELDCAT-OUTPUTLEN = 35.

ls_fieldcat-seltext_L = 'Physical Truck'.

  • ls_fieldcat-seltext_M = 'Physical Truck'.

  • ls_fieldcat-seltext_S = 'Physical Truck'.

APPEND LS_FIELDCAT TO E01_LT_FIELDCAT.

  • Wave

CLEAR LS_FIELDCAT.

LS_FIELDCAT-FIELDNAME = 'ZZSWAVENO'.

  • LS_FIELDCAT-ref_fieldname = 'ZZSWAVENO'.

  • LS_FIELDCAT-ref_tabname = 'ZSDCARTON'.

LS_FIELDCAT-TABNAME = 'I_FINAL'.

LS_FIELDCAT-OUTPUTLEN = 10.

ls_fieldcat-seltext_L = 'Wave'.

  • ls_fieldcat-seltext_M = 'Wave'.

  • ls_fieldcat-seltext_S = 'Wave'.

APPEND LS_FIELDCAT TO E01_LT_FIELDCAT.

  • Total Orders

CLEAR LS_FIELDCAT.

LS_FIELDCAT-FIELDNAME = 'TORD'.

LS_FIELDCAT-TABNAME = 'I_FINAL'.

LS_FIELDCAT-OUTPUTLEN = 15.

ls_fieldcat-seltext_L = 'Total Orders'.

  • ls_fieldcat-seltext_M = 'Total Orders'.

  • ls_fieldcat-seltext_S = 'Total Orders'.

APPEND LS_FIELDCAT TO E01_LT_FIELDCAT.

  • Cartons Packed

CLEAR LS_FIELDCAT.

LS_FIELDCAT-FIELDNAME = 'TCART'.

LS_FIELDCAT-TABNAME = 'I_FINAL'.

LS_FIELDCAT-OUTPUTLEN = 15.

ls_fieldcat-seltext_L = 'Cartons Packed'.

  • ls_fieldcat-seltext_M = 'Cartons Packed'.

  • ls_fieldcat-seltext_S = 'Cartons Packed'.

APPEND LS_FIELDCAT TO E01_LT_FIELDCAT.

  • First DI Time

CLEAR LS_FIELDCAT.

LS_FIELDCAT-FIELDNAME = 'ZZDESTIME'.

LS_FIELDCAT-TABNAME = 'I_FINAL'.

LS_FIELDCAT-OUTPUTLEN = 15.

ls_fieldcat-seltext_L = 'First DI Time'.

  • ls_fieldcat-seltext_M = 'First DI Time'.

  • ls_fieldcat-seltext_S = 'First DI Time'.

APPEND LS_FIELDCAT TO E01_LT_FIELDCAT.

  • Parked Location

CLEAR LS_FIELDCAT.

LS_FIELDCAT-FIELDNAME = 'ZZPLOC'.

LS_FIELDCAT-TABNAME = 'I_FINAL'.

LS_FIELDCAT-OUTPUTLEN = 25.

ls_fieldcat-seltext_L = 'Parked Location'.

ls_fieldcat-edit = 'X'.

  • ls_fieldcat-seltext_M = 'Parked Location'.

  • ls_fieldcat-seltext_S = 'Parked Location'.

APPEND LS_FIELDCAT TO E01_LT_FIELDCAT.

  • Returned Location

CLEAR LS_FIELDCAT.

LS_FIELDCAT-FIELDNAME = 'ZZRLOC'.

LS_FIELDCAT-TABNAME = 'I_FINAL'.

LS_FIELDCAT-OUTPUTLEN = 25.

ls_fieldcat-seltext_L = 'Returned Location'.

ls_fieldcat-edit = 'X'.

  • ls_fieldcat-seltext_M = 'Returned Location'.

  • ls_fieldcat-seltext_S = 'Returned Location'.

APPEND LS_FIELDCAT TO E01_LT_FIELDCAT.

  • Wave Run

CLEAR LS_FIELDCAT.

LS_FIELDCAT-FIELDNAME = 'ZZRUN'.

LS_FIELDCAT-TABNAME = 'I_FINAL'.

LS_FIELDCAT-OUTPUTLEN = 25.

LS_FIELDCAT-NO_OUT = 'X'.

ls_fieldcat-seltext_L = 'Wave Run'.

APPEND LS_FIELDCAT TO E01_LT_FIELDCAT.

ENDFORM. " get_fieldcatlog

----


  • FORM TOP_OF_PAGE *

----


  • ........ *

----


FORM TOP_OF_PAGE.

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'

EXPORTING

I_LOGO = 'FDTRAN1'

IT_LIST_COMMENTARY = GT_LIST_TOP_OF_PAGE.

ENDFORM.

----


  • FORM standard_02 *

----


  • ........ *

----


  • --> EXTAB *

----


FORM standard_02 USING extab TYPE slis_t_extab.

SET PF-STATUS 'STANDARD1'." EXCLUDING extab.

ENDFORM. "STANDARD_02

----


  • FORM USER_COMMAND *

----


FORM user_command USING r_ucomm LIKE sy-ucomm

rs_selfield TYPE slis_selfield. "#EC CALLED

  • Local Variables

data : li_ztruck like ztruck occurs 0 with header line,

lv_zzphytrk like ZPHYSICAL_TRUCK-zzphytrk,

li_ZWM_TRK_LOC like ZWM_TRK_LOC occurs 0 with header line.

break sreddy.

clear : li_ztruck,

lv_zzphytrk,

li_ZWM_TRK_LOC.

refresh : li_ztruck,

li_ZWM_TRK_LOC.

CASE R_UCOMM.

WHEN 'DISP'.

call transaction 'ZWM_TRK_LOC'.

when '&DATA_SAVE'.

loop at i_final.

  • Validate the Physical Truck #

select single zzphytrk from ZPHYSICAL_TRUCK into lv_zzphytrk

where zzphytrk = i_final-zzphytrk

and werks = p_werks

and lgnum = '100'.

if sy-subrc ne 0.

MESSAGE E090 WITH i_final-zzphytrk.

else.

li_ztruck-werks = p_werks.

li_ztruck-vdatu = p_vdatu.

li_ztruck-zztrkno = i_final-zztrkno.

li_ztruck-ZZPHYTRK = i_final-ZZPHYTRK.

LI_ZTRUCK-ZZRUN = I_FINAL-ZZRUN.

append li_ztruck.

CLEAR LI_ZTRUCK.

endif.

  • TRUCK LOCATION DETAILS

li_ZWM_TRK_LOC-zztrkno = i_final-zztrkno.

li_ZWM_TRK_LOC-zzphytrk = i_final-zzphytrk.

li_ZWM_TRK_LOC-zzploc = i_final-zzploc.

li_ZWM_TRK_LOC-zzrloc = i_final-zzrloc.

append li_ZWM_TRK_LOC.

clear li_ZWM_TRK_LOC.

endloop.

modify ztruck from table li_ztruck.

modify ZWM_TRK_LOC from table li_ZWM_TRK_LOC.

ENDCASE.

ENDFORM.

Reward Points if it is helpful

Thanks

Seshu

Read only

Former Member
0 Likes
501

hi

before calling the FM to display ALV GRID.

copy the internal table which u r passing say IT_GRID into ORI_IT_GRID.

ie. ORI_IT_GRID[] = IT_GRID[].

then handle the use command like this

FORM user_command USING p_ucomm TYPE sy-ucomm

p_selfld TYPE slis_selfield.

CASE p_ucomm.

WHEN '&SAVE_DATA'.

  • Check the it_grid with ori_it_grid.

IF IT_GRID [] NE ORI_IT_GRID

*Modify the ZTABLE wiht the value entered

ENDIF

Hope this ll be helpful

reward points , if so.

Thanks,

vinsee

Read only

0 Likes
501

Thanks for your help