‎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
‎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