Filter table maintenance data
Hi Friends,
i have created Maintenance view with linking 3tables.
according to requirement, i want to filter maintenance view data against the selection screen parameters.
is it possible?
then please guide me to this
Thanks in advanced
Thanks for testing my memory, that's a word by word copy of my reply from this thread:
Enter Condition in SM30
Please do not copy/paste in the future, this can lead to account deletion very quickly. Please take this warning seriously.
Thomas
Similar Messages
-
Refresh data in Table Maintenance view
Hi,
I have created a table maintenance view for db table A and added my function button to this view. When I click the button I append a few records to the table A from table B. But this recoreds are not displaied in the view.
If I rerun the view I can see added records.
How I have to refresh the view to display added records?
Regards,
IlyaHi Jesus,
COMMIT WORK isn't help me.
I found that I have to use TOTAL and EXTRACT structures to modify data in maintenance view.
It's fine. I do something like this in my FM
MODULE 9CUSTOM_PF_BUTTON INPUT.
lt_total[] = total[].
lt_extract[] = extract[].
CASE function.
WHEN '9DOWNSH'.
modify lt_total from wa_total.
modify lt_extract from wa_extract
ENDCASE.
total[] = lt_total[].
extract[] = lt_extract[].
ENDMODULE. " 9CUSTOM_PF_BUTTON INPUT
But TOTL and EXTRACT tables contain data of the current maintenance view.
I work with a view cluster and I have to append or delete records from one view if I do something in other view.
How I can modify data one view from another maintenance view?
If I have modified database tables directly I don't see changes in the view cluster.
Regards,
Malnor
Edited by: Malnor on Nov 23, 2010 9:19 AM
Edited by: Malnor on Nov 23, 2010 9:38 AM -
Upload excel data in a table maintenance view
Hi,
I have a requirement to add a button in the application toolbar of the table maintenance screen of a custom table. This button should upload the excel sheet data into the maintenance screen online.
I have created the button in the table maintenance generator. Also, uploaded the data into the internal table from the excel sheet.
The problem is I am unable to populate the data from the internal table to the maintenance screen online.
Any pointers in this regards will be appreciated.
Thanks,
Best regards,
AjithHi,
I think you have to use BDC call transaction (SM30) and use that table control to upload the data. Try and see..
Cheers,
Phani. -
Delete data with table maintenance generator
Hi All,
I have created custom table ZXXX and table maintenance generator.
I need to maintain data but delete them too. I can update and modify data but how can I delete them ?
Thanks for your answers !
Best regards,
Sandrineok, I found ..
I created an internal table to delete the content of my table ZXXX :
DATA : ws_zxxx TYPE zxxx OCCURS 0 WITH HEADER LINE.
select * from zxxx into CORRESPONDING FIELDS OF TABLE ws_zxxx
DELETE zxxx from table ws_zxxx.
commit work.
it works !
thanks all ! -
How to validate data entered in table maintenance for Z table?
Hi,
I created a Z-table with table maintenance. I'd like to perform some validation on the entered data.
I know there are events for these : "If this pre-defined time is reached in extended table maintenance, the FORM routine specified for the current view and for this time is processed. This is useful, for example, for performing consistency checks before saving or specific actions when creating new entries."
I also found some info in the Online help:
http://help.sap.com/saphelp_47x200/helpdata/en/91/ca9f0ea9d111d1a5690000e82deaaa/frameset.htm
However it's not clear which event I can use for validation.
I tried event 01, however when I added a message, in the SM30 in case of message, I got the SM30 initial screen.
Do you have any example about validation?
Thanks in advance,
PeterHi,
Once you are on the table maintenance generator screen.
GOTO --> Enviornment --> Modification --> Events.
Here specify Event as '01' and the Subroutine name that will hold the data for the validation.
As you know we need to specify a function group.
GOTO SE80 and Open your function group.
Now in the PBO of the screen write a subroutine for the validation before saving an entry in the table.
Refer the code below for validation.
*& Form F9000_CHECK_BEFORE_SAVE
Subroutine called dynamically to check values before saving
FORM f9000_check_before_save.
TYPES : BEGIN OF ty_flmt,
zz_flmt_type TYPE zz_flmt_type,
zz_gsm_flmt_code TYPE zz_flmt_code,
END OF ty_flmt.
Internal Table
DATA : lit_flmt_code TYPE TABLE OF ty_flmt,
wa_flmt_code LIKE LINE OF lit_flmt_code.
DATA: lv_subrc TYPE sy-subrc VALUE '0',
lv_tabix TYPE sy-tabix,
lv_total_rec TYPE i,
lv_rec TYPE i,
flg_upd TYPE flag.
DESCRIBE TABLE total LINES lv_total_rec.
LOOP AT total.
lv_tabix = sy-tabix.
READ TABLE extract WITH KEY total.
IF sy-subrc EQ 0.
IF extract+3(10) IS INITIAL.
DELETE total.
DELETE extract INDEX sy-tabix.
DELETE extract INDEX lv_tabix.
lv_subrc = '4'.
flg_upd = 'X'.
MESSAGE s119(zcrm_appl) DISPLAY LIKE 'S'.
SET SCREEN 0.
ENDIF.
ENDIF.
wa_flmt_code-zz_flmt_type = total+13(3).
wa_flmt_code-zz_gsm_flmt_code = total+16(10).
APPEND wa_flmt_code TO lit_flmt_code.
ENDLOOP.
IF flg_upd IS INITIAL.
SORT lit_flmt_code BY zz_flmt_type zz_gsm_flmt_code.
DELETE ADJACENT DUPLICATES FROM lit_flmt_code.
DESCRIBE TABLE lit_flmt_code LINES lv_rec.
IF lv_total_rec <> lv_rec.
LOOP AT extract.
READ TABLE total WITH KEY extract.
IF sy-subrc EQ 0.
DELETE total INDEX sy-tabix.
DELETE extract INDEX 1.
lv_subrc = '4'.
MESSAGE s289(zcrm_appl) DISPLAY LIKE 'S'.
SET SCREEN 0.
ENDIF.
ENDLOOP.
ENDIF.
ENDIF.
sy-subrc = lv_subrc.
ENDFORM.
<b>Please reward points and close the thread.</b>
Regards,
Amit Mishra -
Missing Date fields in table maintenance generation
I have some non-key date fields in my custom table and have noticed that they do not get generated on the overview screen of my two-step table maintenance dialog. They are present on the detail screen.
If I change the domain of the fields to CHAR they appear.
If I change the maintenance type to one-step they appear.
It seems it is standard behaviour for date fields to be omitted from the overview screen.
Can anyone confirm that this is standard behaviour or give an explanation for date fields being treated in this manner?...or come up with a way of including the fields on the header screen.
I already know that I can:
1. customize the screen to include the fields
2. create a non-date domain for the fields which uses date-type calendar dropdown
Thanks,
NeilThankyou Jonathan, I would have been too lazy to go into debug if I didn't have the form name you supplied! It wasn't the reason you suspected but it was failing the following check in that routine:
maintenance in list screen required?
CHECK p_tvdir-type = one_step_maint OR
( <w_dfies>-keyflag NE space "force only keyfields
OR ( 'CHARNUMC' CS <w_dfies>-datatype "and view char-fields
AND p_skip_fields = space )
OR ( 'CHARNUMC' CS <w_dfies>-datatype "and view char-fields
AND <w_dfies>-intlen GE 20 ) "int 3263961/2000
OR <w_dfies>-rollname = 'BEGDA' "time dependence
OR <w_dfies>-rollname = 'ENDDA' "time dependence
OR <w_dfies>-tabname NE p_gencb-viewname ). "or text table field
Because the datatype was DATS.......looks like it will only include key fields and CHAR, NUMC non-key fields or those with a rollname of BEGDA/ENDDA or texttable fields. In debug I changed the datatype to CHAR and it generated with my field included. I think there might be an OSS note to fix this but haven't found it yet. -
Calculations while entering data into table via table maintenance generator
Hi all,
This is the following requirement.
I created a ztable and also I created the table maintenance generator. I have two fields which accept integer data.
The requirement is when I enter value in the first field from the tcode SM30 the data should be populated into the second field automatically by subtracting the first value from 100.
Can anyone explain me how I can do that.
Thanks,
Danielhi,
take the help of events in TMG and write the code in that event
like field2 = field1 - 100
steps to create events
Step: 1: Create a table
Step: 2: In SE11, go to Utilities --> table maintenance generator.
Step: 3: Follow the path Environment --> Modification --> Events.
Step: 4: Click new entries, select a table maintenance dialog event which suits your requirement.
Step: 5: Create a form routine.
Step: 6: Include your logic in the routine created in step 5.
Hope this helps you.
https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/com.sap.km.cm.docs/library/abap/how%20to%20implement%20events%20in%20table%20maintenance.doc
Re: bdc
reward if helpful
prasanth -
How to filter a table using column filter on a date field with time?
Hi,
I have a date field where I am inserting a date+time value, for example: 01/01/2012 09:30:00 So, I would like to filter an adf table using a column inputdate filter to filter only by date this field.
I was testing using formats but with no luck.
Any Idea?
Thanks,
jdev 11.1.2.3
Edited by: jhon.carrillo on Oct 29, 2012 12:23 AMThen, try to add another attribute in your SELECT VO statement, which truncates the original date_and_time field:
SELECT.... TRUNC(DATE_AND_TIME) as truncated_dateAfter that, put reference to that attribute in the filter facet, as follows
<f:facet name="filter">
<af:inputDate value="#{vs.filterCriteria.TruncatedDate}" id=.../>
</facet>Do not forget to add the TruncatedDate attribute in the <tree...> binding in the pageDef, along with others VO attributes. Do that manually. -
Table Maintenance using Editable ALV
Hi all,
Could anyone give me the code for doing the ZTable maintenance (like Insert, Modify, Append, Delete records) using Editable ALV. I referred all BCALV_EDIT* programs but there is no code for saving the details in database after the changes. Please help it is urgent, will surely reward points.
thanks in advancePl. see this sample code. May be it will help u.
REPORT zmodtab NO STANDARD PAGE HEADING.
TYPE-POOLS: rsds.
DATA: is_x030l TYPE x030l,
it_dfies TYPE TABLE OF dfies,
is_dfies TYPE dfies,
it_fdiff TYPE TABLE OF field_dif,
is_fdiff TYPE field_dif.
DATA: w_selid TYPE rsdynsel-selid,
it_tables TYPE TABLE OF rsdstabs,
is_tables TYPE rsdstabs,
it_fields TYPE TABLE OF rsdsfields,
it_expr TYPE rsds_texpr,
it_ranges TYPE rsds_trange,
it_where TYPE rsds_twhere,
is_where TYPE rsds_where,
w_active TYPE i.
DATA: it_content TYPE REF TO data,
it_modif TYPE REF TO data,
it_fcat TYPE lvc_t_fcat.
DATA: w_okcode TYPE sy-ucomm.
FIELD-SYMBOLS: <itab> TYPE STANDARD TABLE,
<ntab> TYPE STANDARD TABLE.
Macros
DEFINE table_error.
message e398(00) with 'Table' p_table &1.
END-OF-DEFINITION.
DEFINE fixed_val.
is_fdiff-fieldname = is_dfies-fieldname.
is_fdiff-fixed_val = &1.
is_fdiff-no_input = 'X'.
append is_fdiff to it_fdiff.
END-OF-DEFINITION.
Selection screen
SELECTION-SCREEN: BEGIN OF BLOCK b01 WITH FRAME.
PARAMETERS: p_table TYPE tabname OBLIGATORY "table
MEMORY ID dtb
MATCHCODE OBJECT dd_dbtb_16.
SELECTION-SCREEN: BEGIN OF LINE,
PUSHBUTTON 33(20) selopt USER-COMMAND sel,
COMMENT 55(15) selcnt,
END OF LINE.
SELECTION-SCREEN: SKIP.
PARAMETERS: p_rows TYPE i. "rows
SELECTION-SCREEN: END OF BLOCK b01,
SKIP,
BEGIN OF BLOCK b02 WITH FRAME.
PARAMETERS: p_displ TYPE c AS CHECKBOX. "display
SELECTION-SCREEN: END OF BLOCK b02.
Initialization
INITIALIZATION.
MOVE '@4G@ Filter records' TO selopt.
PBO
AT SELECTION-SCREEN OUTPUT.
IF w_active IS INITIAL.
CLEAR: selcnt.
ELSE.
WRITE w_active TO selcnt LEFT-JUSTIFIED.
ENDIF.
PAI
AT SELECTION-SCREEN.
IF p_table NE is_x030l-tabname.
CALL FUNCTION 'DDIF_NAMETAB_GET'
EXPORTING
tabname = p_table
IMPORTING
x030l_wa = is_x030l
TABLES
dfies_tab = it_dfies
EXCEPTIONS
OTHERS = 1.
IF is_x030l IS INITIAL.
table_error 'does not exist or is not active'.
ELSEIF is_x030l-tabtype NE 'T'.
table_error 'is not selectable'.
ELSEIF is_x030l-align NE 0.
table_error 'has alignment - cannot continue'.
ENDIF.
Default values for system fields
REFRESH: it_fdiff.
is_fdiff-tabname = p_table.
LOOP AT it_dfies INTO is_dfies.
IF is_dfies-datatype = 'CLNT'.
fixed_val sy-mandt.
ELSEIF is_dfies-rollname = 'ERDAT'
OR is_dfies-rollname = 'ERSDA'
OR is_dfies-rollname = 'AEDAT'
OR is_dfies-rollname = 'LAEDA'.
fixed_val sy-datum.
ELSEIF is_dfies-rollname = 'ERTIM'
OR is_dfies-rollname = 'AETIM'.
fixed_val sy-uzeit.
ELSEIF is_dfies-rollname = 'ERNAM'
OR is_dfies-rollname = 'AENAM'.
fixed_val sy-uname.
ENDIF.
ENDLOOP.
Prepare free selection on table
REFRESH it_tables.
is_tables-prim_tab = p_table.
APPEND is_tables TO it_tables.
CLEAR: w_selid.
ENDIF.
IF sy-ucomm = 'SEL'.
IF w_selid IS INITIAL.
Init free selection dialog
CALL FUNCTION 'FREE_SELECTIONS_INIT'
EXPORTING
expressions = it_expr
IMPORTING
selection_id = w_selid
expressions = it_expr
TABLES
tables_tab = it_tables
EXCEPTIONS
OTHERS = 1.
ENDIF.
Display free selection dialog
CALL FUNCTION 'FREE_SELECTIONS_DIALOG'
EXPORTING
selection_id = w_selid
title = 'Selection'
status = 1
as_window = 'X'
IMPORTING
expressions = it_expr
field_ranges = it_ranges
number_of_active_fields = w_active
TABLES
fields_tab = it_fields
EXCEPTIONS
OTHERS = 1.
ENDIF.
Start of processing
START-OF-SELECTION.
PERFORM f_create_table USING p_table.
PERFORM f_select_table.
PERFORM f_display_table.
FORM f_create_table *
FORM f_create_table USING in_tabname.
FIELD-SYMBOLS: <fcat> TYPE lvc_s_fcat.
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
i_structure_name = in_tabname
CHANGING
ct_fieldcat = it_fcat
EXCEPTIONS
OTHERS = 1.
IF sy-subrc = 0.
Complete field catalog
LOOP AT it_fcat ASSIGNING <fcat>.
<fcat>-tabname = in_tabname.
ENDLOOP.
CALL FUNCTION 'LVC_FIELDCAT_COMPLETE'
CHANGING
ct_fieldcat = it_fcat
EXCEPTIONS
OTHERS = 1.
ELSE.
WRITE: 'Error building field catalog'.
STOP.
ENDIF.
Create dynamic table for data
CALL METHOD cl_alv_table_create=>create_dynamic_table
EXPORTING
it_fieldcatalog = it_fcat
IMPORTING
ep_table = it_content.
IF sy-subrc = 0.
ASSIGN it_content->* TO <itab>.
ELSE.
WRITE: 'Error creating internal table'.
STOP.
ENDIF.
Create dynamic table for modif
CALL METHOD cl_alv_table_create=>create_dynamic_table
EXPORTING
it_fieldcatalog = it_fcat
IMPORTING
ep_table = it_modif.
IF sy-subrc = 0.
ASSIGN it_modif->* TO <ntab>.
ELSE.
WRITE: 'Error creating internal table'.
STOP.
ENDIF.
ENDFORM.
FORM f_select_table *
FORM f_select_table.
IF w_active = 0.
SELECT * FROM (p_table)
INTO CORRESPONDING FIELDS OF TABLE <itab>
UP TO p_rows ROWS.
ELSE.
Selection with parameters
CALL FUNCTION 'FREE_SELECTIONS_RANGE_2_WHERE'
EXPORTING
field_ranges = it_ranges
IMPORTING
where_clauses = it_where.
READ TABLE it_where INTO is_where WITH KEY tablename = p_table.
SELECT * FROM (p_table)
INTO CORRESPONDING FIELDS OF TABLE <itab>
UP TO p_rows ROWS
WHERE (is_where-where_tab).
ENDIF.
IF sy-dbcnt = 0.
WRITE: 'No record selected'.
STOP.
ENDIF.
ENDFORM.
FORM f_display_table *
FORM f_display_table.
DATA: l_answer TYPE c,
l_eflag TYPE c.
CLEAR: w_okcode.
REFRESH: <ntab>.
Display table contents
CALL FUNCTION 'STC1_FULLSCREEN_TABLE_CONTROL'
EXPORTING
header = p_table
tabname = p_table
display_only = p_displ
endless = 'X'
no_button = space
IMPORTING
okcode = w_okcode
TABLES
nametab = it_dfies
table = <itab>
fielddif = it_fdiff
modif_table = <ntab>
EXCEPTIONS
OTHERS = 1.
IF sy-subrc = 0.
IF p_displ IS INITIAL AND w_okcode = 'SAVE'.
Confirm update
CALL FUNCTION 'POPUP_TO_CONFIRM'
EXPORTING
titlebar = p_table
text_question = 'Do you want to update table ?'
default_button = '2'
display_cancel_button = ' '
IMPORTING
answer = l_answer
EXCEPTIONS
OTHERS = 1.
IF l_answer = '1'.
Apply modifications
IF NOT <ntab>[] IS INITIAL.
PERFORM f_add_system USING space.
MODIFY (p_table) FROM TABLE <ntab>.
IF sy-subrc NE 0.
l_eflag = 'X'.
ENDIF.
ENDIF.
Apply deletions
IF l_eflag IS INITIAL.
REFRESH: <ntab>.
CALL FUNCTION 'STC1_GET_DATA'
TABLES
deleted_data = <ntab>
EXCEPTIONS
OTHERS = 1.
IF NOT <ntab>[] IS INITIAL.
DELETE (p_table) FROM TABLE <ntab>.
IF sy-subrc NE 0.
ROLLBACK WORK.
l_eflag = 'X'.
ENDIF.
ENDIF.
ENDIF.
Apply creations
IF l_eflag IS INITIAL.
REFRESH: <ntab>.
CALL FUNCTION 'STC1_GET_DATA'
TABLES
new_data = <ntab>
EXCEPTIONS
OTHERS = 1.
IF NOT <ntab>[] IS INITIAL.
PERFORM f_add_system USING 'X'.
INSERT (p_table) FROM TABLE <ntab>.
IF sy-subrc NE 0.
ROLLBACK WORK.
l_eflag = 'X'.
ENDIF.
ENDIF.
ENDIF.
IF l_eflag IS INITIAL.
COMMIT WORK.
MESSAGE s261(53).
ELSE.
MESSAGE s075(3i).
PERFORM f_select_table.
ENDIF.
ENDIF.
Display table again
PERFORM f_display_table.
ENDIF.
ENDIF.
ENDFORM.
FORM f_add_system *
FORM f_add_system USING new TYPE c.
FIELD-SYMBOLS: <irec> TYPE ANY,
<upd> TYPE ANY.
LOOP AT it_fdiff INTO is_fdiff.
READ TABLE it_dfies INTO is_dfies
WITH KEY fieldname = is_fdiff-fieldname.
LOOP AT <ntab> ASSIGNING <irec>.
ASSIGN COMPONENT is_fdiff-fieldname OF STRUCTURE <irec> TO <upd>.
IF is_dfies-datatype = 'CLNT'.
<upd> = sy-mandt.
ELSE.
CASE is_dfies-rollname.
WHEN 'AENAM'.
<upd> = sy-uname.
WHEN 'AEDAT' OR 'LAEDA'.
<upd> = sy-datum.
WHEN 'AETIM'.
<upd> = sy-uzeit.
WHEN OTHERS.
ENDCASE.
ENDIF.
ENDLOOP.
ENDLOOP.
ENDFORM.
Regards,
Joy. -
How to use table maintenance view in module pool screen
hi ,
want to use table maintenance view in a module pool screen so that i can edit, insert, delete and update date in to the ztable.please help.You can simply call it via SM30. Or you can call the table maintence view from any program(report or module pool) using a function module.
call function 'VIEW_MAINTENANCE_CALL'
exporting
action = 'U'
view_name = 'Z_Table_Name'
exceptions
client_reference = 1
foreign_lock = 2
invalid_action = 3
no_clientindependent_auth = 4
no_database_function = 5
no_editor_function = 6
no_show_auth = 7
no_tvdir_entry = 8
no_upd_auth = 9
only_show_allowed = 10
system_failure = 11
unknown_field_in_dba_sellist = 12
view_not_found = 13
others = 14.
Regards,
RIch Heilman -
Fieldname in not being displayed in the table maintenance
Hi Experts,
I have created a table maintenance for a custom table.The table contains 10 fields out of which first 3 are key fields.
on the 3rd key field i have supplied F4 help so as to populate the 4th field automatically based on the selection of 3rd field.
everything is working fine but last 6 'fieldname' is not being displayed on the column bar.instead of fieldname there is '+' sign on the column. And i have checked in layout(screen) also only first four fields being displayed.
plz help.
Thanks n Regards,
MukeshHello Mukesh,
As you know, data element or pre-defined data type will be assigned as field type to the fields in a table. If you are assigning the data element, then the data element has the option to give the field label.
If you are assigning the data element and the field label is empty, then + sign will come. In other case - if you assigning the pre-defined data type also, the screeen column header will be shown as + sign.
In both the above cases, you can change the column header manually in the layout.
Regards,
Selva K. -
How to update the data base table with data
i have two ztables, one is zfm_kfz and other one is zfm_kmvrg
zfm_kfz is maintained by using table maintenance generator as well as alv grid control for list display.
zfm_kfz the field r like this KFZR, GERAET, KOSTENTRAEGER, BEZEICHNUNG, TUVDATUMMMYYYY, ASUDATUMMMYYYY, KMSTAND, HISTO AND REIFEN.
PROBLEM: all the data in grid control r updated except KMSTAND
fields in zfm_kmvrg are kostentraeger, kfznr and kmstand i m creating table control for this screen here what ever enter the last km stand is updated in the list.for one kfznr many kostentraegers and kmstand, the last km stand is updated here , go through this code plz hepl me
CONTROLS tabctrl TYPE TABLEVIEW USING SCREEN 100.
DATA: cols LIKE LINE OF tabctrl-cols,
lines TYPE i.
DATA: ok_code TYPE sy-ucomm,
save_ok TYPE sy-ucomm.
DATA: itab TYPE TABLE OF zfm_kmvrg,
fs_itab LIKE LINE OF itab,
fl_change TYPE c,
fl_error TYPE c.
*TABLES fs_itab.
LOOP AT tabctrl-cols INTO cols.
cols-screen-input = '0'.
MODIFY tabctrl-cols FROM cols INDEX sy-tabix.
ENDLOOP.
*SELECT * FROM spfli INTO TABLE itab.
CALL SCREEN 100.
MODULE status_0100 OUTPUT
MODULE status_0100 OUTPUT.
SET PF-STATUS 'SCREEN_101'.
DESCRIBE TABLE itab LINES lines.
tabctrl-lines = lines.
ENDMODULE. "status_0100 OUTPUT
MODULE cancel INPUT
MODULE cancel INPUT.
LEAVE PROGRAM.
ENDMODULE. "cancel INPUT
MODULE read_table_control INPUT
MODULE read_table_control INPUT.
MODIFY itab FROM fs_itab INDEX tabctrl-current_line.
ENDMODULE. "read_table_control INPUT
MODULE user_command_0100 INPUT
MODULE user_command_0100 INPUT.
DATA:
lw_index TYPE i.
save_ok = ok_code.
CLEAR ok_code.
CASE save_ok.
WHEN 'ADD'.
LOOP AT tabctrl-cols INTO cols.
cols-screen-input = '1'.
MODIFY tabctrl-cols FROM cols INDEX sy-tabix.
ENDLOOP.
CLEAR fs_itab.
APPEND fs_itab TO itab.
WHEN 'SAVE'.
IF NOT itab[] IS INITIAL.
LOOP AT itab[] into FS_ITAB.
lw_index = sy-tabix.
IF NOT fs_itab IS INITIAL.
MODIFY ZFM_KMVRG FROM fs_itab.
IF sy-subrc EQ 0.
UPDATE ZFM_KFZ set kmstand = fs_itab-kmstand
WHERE kfznr = fs_itab-kfznr.
ELSE.
fl_error = 'X'.
WRITE:/ 'The record number', lw_index,
'has not been updated'.
ENDIF.
ENDIF.
ENDLOOP.
ELSE.
MESSAGE s000(0) WITH 'No data is present to update'.
ENDIF.
ENDCASE.
IF fl_error = 'X'.
LEAVE TO LIST-PROCESSING.
ELSE.
MESSAGE s000(0) WITH
'All the records have been updated successfully'.
ENDIF.
ENDMODULE. "user_command_0100 INPUT
IN SE51
PROCESS BEFORE OUTPUT.
MODULE STATUS_0100.
LOOP AT ITAB INTO fs_itab WITH CONTROL tabctrl.
ENDLOOP.
PROCESS AFTER INPUT.
MODULE CANCEL AT EXIT-COMMAND.
LOOP AT ITAB.
module read_table_control.
ENDLOOP.
module user_command_0100.
i m trying many times i m not getting proper output, plz help me on thisHi,
I am hereby givng the similar sample code.Check this with your requirement.
In the flow logic of the screen 9000, write the following code.
PROCESS BEFORE OUTPUT.
MODULE set_status.
MODULE get_t_ctrl_lines.
LOOP AT i_makt WITH CONTROL t_ctrl CURSOR t_ctrl-current_line.
* Dynamic screen modifications
MODULE set_screen_fields.
ENDLOOP.
PROCESS AFTER INPUT.
LOOP AT i_makt.
FIELD i_makt-pick MODULE check.
FIELD i_makt-zmatnr MODULE zmatnr .
ENDLOOP.
MODULE user_command_9000.
In the program, write the following code.
PROGRAM SAPMZTC MESSAGE-ID zz.
* Tables Declaration
TABLES: zzz_makt.
* Internal table Declaration
DATA : i_makt TYPE STANDARD TABLE OF zzz_makt WITH HEADER LINE.
* Table control Declaration
CONTROLS: t_ctrl TYPE TABLEVIEW USING SCREEN '9000'.
* Variable Declaration
DATA : flg, "Flag to set the change mode
ln TYPE i. "No. of records
*& Module get_T_CTRL_lines OUTPUT
* Populating data
MODULE get_t_ctrl_lines OUTPUT.
SELECT zmatnr zmaktx
INTO CORRESPONDING FIELDS OF TABLE i_makt
FROM zzz_makt.
DESCRIBE TABLE i_makt LINES ln.
* To make the vertical scroll bar to come on runtime
t_ctrl-lines = ln + 100.
ENDMODULE. " get_T_CTRL_lines OUTPUT
*& Module USER_COMMAND_9000 INPUT
* Triggering event according to the user command
MODULE user_command_9000 INPUT.
DATA :lv_fcode LIKE sy-ucomm, "Function Code
lv_answer(1) type c. "Storing the answer
lv_fcode = sy-ucomm.
CASE lv_fcode.
WHEN 'CHANGE'.
* Setting the flag to make the table control in editable mode[excluding
* primary key].
flg = 'Y'.
WHEN 'DELETE'.
* Setting the flag to make the table control in editable mode after
* deleting the selected line
flg = 'Y'.
* Confirmation of delete
CALL FUNCTION 'POPUP_TO_CONFIRM'
EXPORTING
TITLEBAR = 'Confirm'
text_question = 'Are you sure to delete from database?'
TEXT_BUTTON_1 = 'Yes'(001)
TEXT_BUTTON_2 = 'No'(002)
IMPORTING
ANSWER = lv_answer.
if lv_answer eq '1'.
* Updating the database table from the internal table
UPDATE zzz_makt FROM TABLE i_makt.
* Deleting the selected row from the internal table
DELETE i_makt WHERE pick = 'X'.
* Deleting the selected row from the database table
DELETE FROM zzz_makt WHERE pick = 'X'.
MESSAGE s005 WITH 'Deleted Successfully'.
ENDIF.
WHEN 'SAVE'.
* Inserting new record or updating existing record in database table
* from the internal table
MODIFY zzz_makt FROM TABLE i_makt.
MESSAGE s005 WITH 'Saved Successfully'.
WHEN 'BACK'.
SET SCREEN '0'.
WHEN 'EXIT' OR 'CANCEL'.
* Leaving the program
LEAVE PROGRAM.
ENDCASE.
ENDMODULE. " USER_COMMAND_9000 INPUT
*& Module set_screen_fields OUTPUT
* Setting the screen fields
MODULE set_screen_fields OUTPUT.
LOOP AT SCREEN.
IF flg IS INITIAL.
screen-input = 0.
ELSEIF ( flg EQ 'Y' ).
IF ( ( screen-name = 'I_MAKT-ZMAKTX'
OR screen-name = 'I_MAKT-CHECK1' )
AND t_ctrl-current_line LE ln ) .
* Making the screen fields as editable
screen-input = 1.
ELSEIF ( ( screen-name = 'I_MAKT-ZMATNR' )
AND t_ctrl-current_line LE ln ).
* Making the screen field as uneditable
screen-input = 0.
ENDIF.
ENDIF.
* Modifying the screen after making changes
MODIFY SCREEN.
ENDLOOP.
ENDMODULE. " set_screen_fields OUTPUT
*& Module zmatnr INPUT
* Appending records to the internal table
MODULE zmatnr INPUT.
MODIFY i_makt INDEX t_ctrl-current_line.
IF t_ctrl-current_line GT ln.
READ TABLE i_makt WITH KEY zmatnr = i_makt-zmatnr.
IF sy-subrc NE 0.
* Inserting record if it does not exist in database
APPEND i_makt.
ELSE.
MESSAGE i005 WITH 'Material Number' i_makt-zmatnr 'already exists'.
ENDIF.
ENDIF.
ENDMODULE. " zmatnr INPUT
*& Module set_status OUTPUT
* Setting the GUI status
MODULE set_status OUTPUT.
SET PF-STATUS 'ZSTATUS'.
SET TITLEBAR 'ZTITLE'.
ENDMODULE. " set_status OUTPUT
*& Module CHECK INPUT
* Modify the internal table using the current line in table control
MODULE check INPUT.
MODIFY i_makt INDEX t_ctrl-current_line.
ENDMODULE. " CHECK INPUT -
How to use the table maintenance events for validating the input entries..?
Hi,
I have created a Z table with 6 fields in which all are KEY fields. All are of CHAR type. I have created the Table Maintenance Generator for the same. While maintaining the entries in the table, even though I maintain a blank entry for a field it is saving the entry. But, I don't want that way. All the fields are mandatory in my table. One should enter all the fields. Otherwise it should not allow to save the entry. So, I think it can be done using the Table Maintenance Events. can someone tell me how to use the Table Maintenance Events. and which event to use for my reuqirement and what is the logic to be written.
Or Is there any other way to solve my problem.
Please share your inputs. Thanks in advance.
Best regards,
paddu.In the table maintenance generator, Environment --> Modifications --> Events then a screen will be appear here,we need to create the Events.In the EVENTS screen, press new Entries, there give 01(Before Saving the Data in the Database) and give a name(This will become a PERFORM), then click the Editor pushbutton, this will be there at the right side of the entry, then a popup will be appear, you can create an include program, there inside of the include program write ur code.
Here is documentation for Event 01(Before Saving the Data in the Database )
Event 01: Before Saving the Data in the Database
Use
This event occurs before new, changed or deleted entries are written to the database. Other activities can be performed, for example:
hidden entry processing
fill hidden fields
flag data to be written to hidden tables after the database change.
To have the changes saved by the central maintenance dialog routines, SY-SUBRC must be set to 0 at the end of the routine.
Realization
This event has no standard routine. The following global data is available for the realization of the user routine:
internal table TOTAL
field symbols
field symbols <ACTION> and <ACTION_TEXT>
<STATUS>-UPD_FLAG
If internal table data are to be changed before saving, t he changes should be made in both the internal table TOTAL and in the internal table EXTRACT.
FORM abc.
DATA: F_INDEX LIKE SY-TABIX. "Index to note the lines found
LOOP AT TOTAL.
IF <ACTION> = desired constant.
READ TABLE EXTRACT WITH KEY <vim_xtotal_key>.
IF SY-SUBRC EQ 0.
F_INDEX = SY-TABIX.
ELSE.
CLEAR F_INDX.
ENDIF.
(make desired changes to the line TOTAL)
MODIFY TOTAL.
CHECK F_INDX GT 0.
EXTRACT = TOTAL.
MODIFY EXTRACT INDEX F_INDX.
ENDIF.
ENDLOOP.
SY-SUBRC = 0.
ENDFORM.
Regards,
Joy. -
How to create event in table maintenance generator
Hi guys,
I need to create an event for my table maintenace generator such that when the field land1 is filled, the landx field should take its data from t005t table. and the ladnx field should be display only, it can not be modified in table maintenance.
How can i create an event in table maint. gen? How am i going to do it?
thanks always,
markHi,
As mentioned in the last post go to the event screen by
Environment --> Modifications --> Events.
There you click on new entries and try writing your logic for event 21 i.e. after selecting 21 give some name of your event and write down the logic how you want to do this.
If event number 21 does not work then try 1. One of these two should work.
Hope this helps!!!
Regards,
Lalit -
Events in table maintenance generator 01
Hi all,
I have an urgent requirement regarding the events in table maintenance generator.The requirement is i have a qty field in table i want to change the existing value it should allow only a lesser value.How to use TOTAL and EXTRACT structures.
it is urgent.please help me out.
Thanks & regards,
KranthiFollow the example below:
form get_vendor_name.
data w_extract type z_table.
data begin of w_total.
include structure z_table.
data: action,
mark,
end of w_total.
loop at extract into w_extract.
check not w_extract-z_vend_no is initial.
select single name1 from lfa1
into w_extract-z_vend_name
where lifnr = w_extract-z_vend_no.
modify extract from w_extract.
endloop.
loop at total into w_total.
check not w_total-z_vend_no is initial.
select single name1 from lfa1
into w_total-z_vend_name
where lifnr eq w_total-z_vend_no.
modify total from w_total.
endloop.
endform.
Reward points if useful.
Regards.
Maybe you are looking for
-
Just tried to send an e-mail to a friend. A whopping four short paragraphs with a whopping one hyperlink and Verizon's state-of-the-art "spam detector" says its "spam". What a crock. Did they actually pay money for this? And since when does ONE e-
-
I have subscribed to itunes match. How do I get the songs from my iphone 5 into my itunes library which currrently only shows the songs I have purchased? I can see the songs on my iphone when I plug it into itunes on my computer, but don' know how t
-
How to reorder photos in folders based on capture date
I have scanned a bunch of photographs and imported them into lightroom. I then went and changed all the capture dates to represent when the photos were actually taken. Now I would like to put the photo's in a folder structure based on the capture dat
-
Hi, I bought an iPod touch on apple store, arrived last yesterday. It has some pixel dead. What can I do?? Change with another or it's probably that next has also this defeact? Any suggestion?? Thx, fabrizioromeo
-
Installation of Companion Software - Best Practices
Hi everyone, I have an NFS server (sparc solaris 10 11/06) and a client (x86_64 solaris 11/06). I would like to install many of the offerings on the Sun Companion Software disc. In the past, because of disk space and patching convenience, we installe