KEMBAR78
Solved - Dynamic Selection Screen - SAP Community | PDF | Parameter (Computer Programming) | Software Development
0% found this document useful (0 votes)
16 views22 pages

Solved - Dynamic Selection Screen - SAP Community

The document discusses a query on the SAP Community regarding the creation of a dynamic selection screen using ABAP. The user seeks to display a table of characteristics obtained from the BAPI_CLASS_GET_CHARACTERISTICS function module, with checkboxes for each line. An accepted solution is provided, including sample code for implementing the dynamic selection screen functionality.

Uploaded by

Slah Chtioui
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
16 views22 pages

Solved - Dynamic Selection Screen - SAP Community

The document discusses a query on the SAP Community regarding the creation of a dynamic selection screen using ABAP. The user seeks to display a table of characteristics obtained from the BAPI_CLASS_GET_CHARACTERISTICS function module, with checkboxes for each line. An accepted solution is provided, including sample code for implementing the dynamic selection screen functionality.

Uploaded by

Slah Chtioui
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 22

09/02/2025 12:03 Solved: dynamic selection screen - SAP Community

m
m
Products and Technology Groups Partners Topics Events What's New Get Started
u
ni
t
y
SAP Community  Groups  Interest Groups  Application Development  Discussions
 dynamic selection screen

Application Development Discussions


Join the discussions or start your own on all things application development, including tools and APIs,
programming models, and keeping your skills sharp.

This board  What are you looking for today?


Option

dynamic selection screen

 Go to solution

Former Member


‎2006 Oct 23 10:39 AM

 0 Kudos  435

SAP Managed Tags: ABAP Development

hi!

i need to write program with dynamic selection screen.

at the initialization i need to use FM BAPI_CLASS_GET_CHARACTERISTICS.

The result of the bapi is table char_values.

i need to show this table on the selection screen and next each line add checkbox.

is it possible to do it?

https://community.sap.com/t5/application-development-discussions/dynamic-selection-screen/m-p/1677795 1/22
09/02/2025 12:03 Solved: dynamic selection screen - SAP Community

regards

yifat

Reply

1 ACCEPTED SOLUTION

FredericGirod
Active Contributor


‎2006 Oct 23 10:41 AM

 0 Kudos

 168

SAP Managed Tags: ABAP Development

 Hi,

maybe that could will help you.

https://community.sap.com/t5/application-development-discussions/dynamic-selection-screen/m-p/1677795 2/22
09/02/2025 12:03 Solved: dynamic selection screen - SAP Community

REPORT Z_TEST_FG_0071 .

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'.

https://community.sap.com/t5/application-development-discussions/dynamic-selection-screen/m-p/1677795 3/22
09/02/2025 12:03 Solved: dynamic selection screen - SAP Community

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
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.
SELECTION-SCREEN: END OF BLOCK b01,
SKIP,
BEGIN OF BLOCK b02 WITH FRAME.
PARAMETERS: p_displ TYPE c AS CHECKBOX.
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

https://community.sap.com/t5/application-development-discussions/dynamic-selection-screen/m-p/1677795 4/22
09/02/2025 12:03 Solved: dynamic selection screen - SAP Community

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

https://community.sap.com/t5/application-development-discussions/dynamic-selection-screen/m-p/1677795 5/22
09/02/2025 12:03 Solved: dynamic selection screen - SAP Community

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.

https://community.sap.com/t5/application-development-discussions/dynamic-selection-screen/m-p/1677795 6/22
09/02/2025 12:03 Solved: dynamic selection screen - SAP Community

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.

https://community.sap.com/t5/application-development-discussions/dynamic-selection-screen/m-p/1677795 7/22
09/02/2025 12:03 Solved: dynamic selection screen - SAP Community

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_t

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

https://community.sap.com/t5/application-development-discussions/dynamic-selection-screen/m-p/1677795 8/22
09/02/2025 12:03 Solved: dynamic selection screen - SAP Community

*-------------------------------------------------------------
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
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.

https://community.sap.com/t5/application-development-discussions/dynamic-selection-screen/m-p/1677795 9/22
09/02/2025 12:03 Solved: dynamic selection screen - SAP Community

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.

https://community.sap.com/t5/application-development-discussions/dynamic-selection-screen/m-p/1677795 10/22
09/02/2025 12:03 Solved: dynamic selection screen - SAP Community
349
ENDIF.
350
* Display table again
351
PERFORM f_display_table.
352
ENDIF.
353
ENDIF.
354
355
ENDFORM.
356
357
358
*-------------------------------------------------------------
359
* FORM f_add_system
360
*-------------------------------------------------------------
361
FORM f_add_system USING new TYPE c.
362
363
FIELD-SYMBOLS: <irec> TYPE ANY,
364
<upd> TYPE ANY.
365
366
LOOP AT it_fdiff INTO is_fdiff.
367
READ TABLE it_dfies INTO is_dfies
368
WITH KEY fieldname = is_fdiff-fieldname.
369
LOOP AT <ntab> ASSIGNING <irec>.
370
ASSIGN COMPONENT is_fdiff-fieldname OF STRUCTURE <irec>
371
IF is_dfies-datatype = 'CLNT'.
372
<upd> = sy-mandt.
373
ELSE.
374
CASE is_dfies-rollname.
375
WHEN 'AENAM'.
376
<upd> = sy-uname.
377
WHEN 'AEDAT' OR 'LAEDA'.
378
<upd> = sy-datum.
379
WHEN 'AETIM'.
380
<upd> = sy-uzeit.
381
WHEN OTHERS.
382
ENDCASE.
383
ENDIF.
ENDLOOP.
ENDLOOP.

ENDFORM.

https://community.sap.com/t5/application-development-discussions/dynamic-selection-screen/m-p/1677795 11/22
09/02/2025 12:03 Solved: dynamic selection screen - SAP Community

Fred

Reply

 Previous Topic All forum topics Next Topic 

1 REPLY

FredericGirod
Active Contributor


‎2006 Oct 23 10:41 AM

 0 Kudos

 169

SAP Managed Tags: ABAP Development

 Hi,

maybe that could will help you.

https://community.sap.com/t5/application-development-discussions/dynamic-selection-screen/m-p/1677795 12/22
09/02/2025 12:03 Solved: dynamic selection screen - SAP Community

REPORT Z_TEST_FG_0071 .

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'.

https://community.sap.com/t5/application-development-discussions/dynamic-selection-screen/m-p/1677795 13/22
09/02/2025 12:03 Solved: dynamic selection screen - SAP Community

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
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.
SELECTION-SCREEN: END OF BLOCK b01,
SKIP,
BEGIN OF BLOCK b02 WITH FRAME.
PARAMETERS: p_displ TYPE c AS CHECKBOX.
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

https://community.sap.com/t5/application-development-discussions/dynamic-selection-screen/m-p/1677795 14/22
09/02/2025 12:03 Solved: dynamic selection screen - SAP Community

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

https://community.sap.com/t5/application-development-discussions/dynamic-selection-screen/m-p/1677795 15/22
09/02/2025 12:03 Solved: dynamic selection screen - SAP Community

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.

https://community.sap.com/t5/application-development-discussions/dynamic-selection-screen/m-p/1677795 16/22
09/02/2025 12:03 Solved: dynamic selection screen - SAP Community

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.

https://community.sap.com/t5/application-development-discussions/dynamic-selection-screen/m-p/1677795 17/22
09/02/2025 12:03 Solved: dynamic selection screen - SAP Community

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_t

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

https://community.sap.com/t5/application-development-discussions/dynamic-selection-screen/m-p/1677795 18/22
09/02/2025 12:03 Solved: dynamic selection screen - SAP Community

*-------------------------------------------------------------
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
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.

https://community.sap.com/t5/application-development-discussions/dynamic-selection-screen/m-p/1677795 19/22
09/02/2025 12:03 Solved: dynamic selection screen - SAP Community

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.

https://community.sap.com/t5/application-development-discussions/dynamic-selection-screen/m-p/1677795 20/22
09/02/2025 12:03 Solved: dynamic selection screen - SAP Community
349
ENDIF.
350
* Display table again
351
PERFORM f_display_table.
352
ENDIF.
353
ENDIF.
354
355
ENDFORM.
356
357
358
*-------------------------------------------------------------
359
* FORM f_add_system
360
*-------------------------------------------------------------
361
FORM f_add_system USING new TYPE c.
362
363
FIELD-SYMBOLS: <irec> TYPE ANY,
364
<upd> TYPE ANY.
365
366
LOOP AT it_fdiff INTO is_fdiff.
367
READ TABLE it_dfies INTO is_dfies
368
WITH KEY fieldname = is_fdiff-fieldname.
369
LOOP AT <ntab> ASSIGNING <irec>.
370
ASSIGN COMPONENT is_fdiff-fieldname OF STRUCTURE <irec>
371
IF is_dfies-datatype = 'CLNT'.
372
<upd> = sy-mandt.
373
ELSE.
374
CASE is_dfies-rollname.
375
WHEN 'AENAM'.
376
<upd> = sy-uname.
377
WHEN 'AEDAT' OR 'LAEDA'.
378
<upd> = sy-datum.
379
WHEN 'AETIM'.
380
<upd> = sy-uzeit.
381
WHEN OTHERS.
382
ENDCASE.
383
ENDIF.
ENDLOOP.
ENDLOOP.

ENDFORM.

https://community.sap.com/t5/application-development-discussions/dynamic-selection-screen/m-p/1677795 21/22
09/02/2025 12:03 Solved: dynamic selection screen - SAP Community

Fred

Reply

Privacy Terms of Use

Copyright Legal Disclosure

Trademark Support

Cookie Preferences
Follow

https://community.sap.com/t5/application-development-discussions/dynamic-selection-screen/m-p/1677795 22/22

You might also like