한 스크린에 Table Control 를 2개를 만들었습니다
하나의 명령으로 두개의 따로 따로 Table Control 을 제어 하려고 합니다
제가 보기에는 Table Control 명 만 안다면 방법을 찾을 수 있을 것 같은데, 혹시 이런 경험이 있는 분은 어떻게
구현을 하셨는지요
알고 계시면 답변을 진심으로 부탁을 올립니다
댓글 3
-
ASDF
2010.11.13 02:28
-
deepbluesea
2010.11.15 19:41
하나의 명령으로 두개의 Table Control를 사용하시려면
Get Cursor 같은걸로 현재커서가 어느 Table Control에 있는지 여부를 파악하고 하면 될것같은데요
요즘은 Table Control보다 ALV를 많이 사용해서 ....................
-
맑은하늘
2010.11.15 20:05
TC 의 구성요소들(필드)은 중복이 안될테니 그 구성요소로
table-control 이 뭔지는 알 수 있겠네요.
대충 코딩한거라 참고만 하시길 바랍니다.
DATA CONTROL_NAME TYPE STRING.
DATA FIELD_NAME TYPE STRING.
FIELD-SYMBOLS <LFS_CONTROL> TYPE CXTAB_CONTROL.
GET CURSOR FIELD FIELD_NAME.
PERFORM GET_TABCONTROL_NAME USING FIELD_NAME
CHANGING CONTROL_NAME.
MESSAGE S398(00) WITH 'Current control is ' CONTROL_NAME.
IF CONTROL_NAME IS NOT INITIAL.
ASSIGN (CONTROL_NAME) TO <LFS_CONTROL>.
ENDIF.
FORM GET_TABCONTROL_NAME USING SCREEN_NAME TYPE ANY
CHANGING CONTROL_NAME TYPE ANY.
DATA RFIELDLIST TYPE TABLE OF RFIELDLIST.
FIELD-SYMBOLS : <LFS_FLIST> TYPE RFIELDLIST,
<LFS_FIELD> TYPE ANY,
<LFS_TC> TYPE ANY,
<LFS_COLS> TYPE TABLE.
CALL FUNCTION 'GET_GLOBAL_SYMBOLS'
EXPORTING
PROGRAM = SY-REPID
NAME_PATTERN = 'TC*'
TABLES
FIELDLIST = RFIELDLIST.
LOOP AT RFIELDLIST ASSIGNING <LFS_FLIST>.
CHECK <LFS_FLIST>-TYPE = 'v'. "#EC NOTEXT
ASSIGN (<LFS_FLIST>-NAME) TO <LFS_TC>.
CHECK SY-SUBRC IS INITIAL.
ASSIGN COMPONENT 'COLS' OF STRUCTURE <LFS_TC> TO <LFS_COLS>.
CHECK SY-SUBRC IS INITIAL.
READ TABLE <LFS_COLS> TRANSPORTING NO FIELDS
WITH KEY ('SCREEN-NAME') = SCREEN_NAME.
CHECK SY-SUBRC IS INITIAL.
CONTROL_NAME = <LFS_FLIST>-NAME.
RETURN.
ENDLOOP.
ENDFORM. " GET_TABCONTROL_NAME
Table Control 명은 개발자가 정해주는게 아닌가요??
abap코드에서 선언하구,, screen 로직에서 인터널 테이블을 제어할 Table Control로 같은 이름을 지정해주는,,
이런 방식을 통해서 제어가 가능한게 아닐까여,,?
흠,, 제 생각일 뿐이네여; 저두 정답을 알고싶네여!