2009 Jan 14 8:56 AM
Hello,
How do I write a dynamic UPDATE statement that I need to look like this:
DATA: TABLE_NAME(10),
COL_NAME1(10),
COL_NAME2(10),
COL_NAME3(10).
table_name = 'TABLEX'
COL_NAME1 = 'COL1X'.
COL_NAME2 = 'COL2X'.
COL_NAME3 = 'COL3'X.
UPDATE table_name SET col_name1 = VAR1 col_name2 = VAR2 col_name3 = VAR3.
table_name = 'TABLEY'
COL_NAME1 = 'COL1Y'.
COL_NAME2 = 'COL2Y'.
COL_NAME3 = 'COL3Y'.
UPDATE table_name SET col_name1 = VAR1 col_name2 = VAR2 col_name3 = VAR3.
Thank you.
2009 Jan 14 9:30 AM
Hi
if It can't do a dynamic updating for option SET, u need to create a work-area in order to update the table:
DATA: TABLE_NAME(10),
COL_NAME1(10),
COL_NAME2(10),
COL_NAME3(10).
DATA: T_WHERE(100) OCCURS 0 WITH HEADER LINE.
DATA: DYN_WA TYPE REF TO DATA.
FIELD-SYMBOLS: <FS_WA> TYPE ANY,
<FS_COL> TYPE ANY.
able_name = 'TABLEY'
COL_NAME1 = 'COL1Y'.
COL_NAME2 = 'COL2Y'.
COL_NAME3 = 'COL3Y'.
CREATE DATA DYN_WA TYPE (TABLE_NAME).
ASSIGN DYN_WA->* TO <FS_WA>.
SELECT * FROM (TABLE_NAME) INTO <FS_WA> WHERE (T_WHERE).
PERFORM ASSIGN_NEW_VALUE USING: COL_NAM1 VAR1,
COL_NAM2 VAR2,
COL_NAM2 VAR3.
UPDATE (TABLE_NAME) FROM <FS_WA>.
ENDSELECT.FORM ASSIGN_NEW_VALUE USING PCOL PVAR.
ASSIGN COMPONENT PCOL OF STRUCTURE <FS_WA> TO <FS_FIELD>.
IF SY-SUBRC = 0.
<FS_FIELD> = PVAR.
ENDIF.
ENDFORM.If you're using the release 6.00 u can do a dynamic updating with SET option:
DATA: TABLE_NAME(10),
COL_NAME1(10),
COL_NAME2(10),
COL_NAME3(10).
DATA: T_WHERE(100) OCCURS 0 WITH HEADER LINE.
DATA: T_SET(100) OCCURS 0 WITH HEADER LINE.
UPDATE (TABLE_NAME) SET (T_SET) WHERE (T_WHERE).Anyway see the help for UPDATE statament
Max
Hi,
Use field symbol and pass the table name to the field symbol and use it instead of table name.
Regards
Bikas
2009 Jan 14 9:13 AM
Hi,
Use field symbol and pass the table name to the field symbol and use it instead of table name.
Regards
Bikas
2009 Jan 14 9:26 AM
2009 Jan 14 9:30 AM
Hi
if It can't do a dynamic updating for option SET, u need to create a work-area in order to update the table:
DATA: TABLE_NAME(10),
COL_NAME1(10),
COL_NAME2(10),
COL_NAME3(10).
DATA: T_WHERE(100) OCCURS 0 WITH HEADER LINE.
DATA: DYN_WA TYPE REF TO DATA.
FIELD-SYMBOLS: <FS_WA> TYPE ANY,
<FS_COL> TYPE ANY.
able_name = 'TABLEY'
COL_NAME1 = 'COL1Y'.
COL_NAME2 = 'COL2Y'.
COL_NAME3 = 'COL3Y'.
CREATE DATA DYN_WA TYPE (TABLE_NAME).
ASSIGN DYN_WA->* TO <FS_WA>.
SELECT * FROM (TABLE_NAME) INTO <FS_WA> WHERE (T_WHERE).
PERFORM ASSIGN_NEW_VALUE USING: COL_NAM1 VAR1,
COL_NAM2 VAR2,
COL_NAM2 VAR3.
UPDATE (TABLE_NAME) FROM <FS_WA>.
ENDSELECT.FORM ASSIGN_NEW_VALUE USING PCOL PVAR.
ASSIGN COMPONENT PCOL OF STRUCTURE <FS_WA> TO <FS_FIELD>.
IF SY-SUBRC = 0.
<FS_FIELD> = PVAR.
ENDIF.
ENDFORM.If you're using the release 6.00 u can do a dynamic updating with SET option:
DATA: TABLE_NAME(10),
COL_NAME1(10),
COL_NAME2(10),
COL_NAME3(10).
DATA: T_WHERE(100) OCCURS 0 WITH HEADER LINE.
DATA: T_SET(100) OCCURS 0 WITH HEADER LINE.
UPDATE (TABLE_NAME) SET (T_SET) WHERE (T_WHERE).Anyway see the help for UPDATE statament
Max
2009 Jan 14 11:08 AM
| User | Count |
|---|---|
| 6 | |
| 3 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |