2022 Nov 21 6:03 AM
Hello,
I'm beginner of abap,
I need to set-up checkbox-click to put/delete number in internal table.
but there is a way to minimize code using field-symbol or ranges.
Could you advise me how to build like ?
CASE sy-ucomm.
WHEN P01.
IF P01 = 'X'.
ls_number-lv_number = 1.
MODIFY lt_number FROM ls_number. "put number 1 to internal table
ELSE.
DELETE lt_number WHERE lv_number = 1.
ENDIF.
WHEN P02.
IF P02 = 'X'.
ls_number-lv_number = 2.
MODIFY lt_number FROM ls_number. "put number 2 to internal table
ELSE.
DELETE lt_number WHERE lv_number = 2.
ENDIF.
WHEN P03.
IF P03 = 'X'.
ls_number-lv_number = 3.
MODIFY lt_number FROM ls_number.
ELSE.
DELETE lt_number WHERE lv_number = 3.
ENDIF.
WHEN P04 ~ P99
ENDIF.
2022 Nov 21 6:32 AM
You don't need field-symbol, as you don't have dynamic field.
if sy-tcode+0(1) eq P and sy-tcode+1(2) co '0123456789'.
data(the_number) = sy-tcode+1(2).
ls_number-lv_number = the_number.
...
endif.
2022 Nov 21 7:41 AM
frdric.girod sy-ucomm instead of sy-tcode; ASSIGN is needed for doing "if p?? = 'X'"
if sy-ucomm+0(1) eq P and sy-ucomm+1(2) co '0123456789'.
data(the_number) = sy-ucomm+1(2).
data(fieldname) = 'P' && the_number.
ASSIGN (fieldname) TO FIELD-SYMBOLS(pxx).
if <pxx> = 'X'.
...