300x250
728x90
만듦
Domain Fixed Value 값을 가져옴에 있어서는 다양한 방법이 있다.
- 펑션을 불러서 만드는 방법이나
- Domain 관련된 테이블을 가져와서 만드는 방법
등등
프로그램을 개발하다 보니 도메인 값을 가져오는 경우가 빈번하게 가져오는 것이었다.
그래서 그냥 동적으로 아예 만들어보자 해서 만들어보았다.
동적으로 도메인 값을 가져오는 대신 조건이 있다. (HANA 서버 기준)
# Domain Fixed Value(도메인 값)을 가져올 필드 네임과 Domain Fiexed Value(도메인 값)을 넣을 필드 네임 뒤에 기준이 되는 것을 넣어주어야 한다.
# LOOP문 안에서 활용되는 로직이다
# 예를 들어) 여기서 기준은 : T
만약 기준이 _T이면 로직에서 _T로 설정하면 된다.
이런 식으로 정해줘야 한다.
이제 로직을 보자.
나는 DEFINE으로 정의해주었다.
DEFINE에 대해서 궁금하다면
2022.02.16 - [.SAP/..ABAP] - SAP MACRO,DEFINE 정리
Domain Fixed Value(도메인 값) 동적 로직
&1 = 변경할 리스트(ALV)
&2 = 해당하는 스트럭처
# &1 = &2 같아야 한다.
Domain Fixed Value(도메인 값) 예제 ( Loop문 안에서 돌아가는 것 )
이런 식으로 사용하면 된다.
쉽게 말하면
&1 = 도메인 값을 넣을 스트럭처(work area)
&2 = &1하고 동일한 스트럭처
을 넣으면 된다.
동적 로직
더보기
" Table : 텍스트 T가 들어가 있어야 함
DEFINE GET_DOMAIN_FIXED_VALUE.
FIELD-SYMBOLS:
<FS_FDCAT01> TYPE DD03L,
<LFS_FIELDVALUE>,
<LFS_DOMAINNAME>.
DATA :
LT_TNAME TYPE TABLE OF DD03L.
* DOMAIN VALUE
SELECT *
FROM DD03L
INTO TABLE LT_TNAME " 담을 곳
WHERE TABNAME EQ &2.
LOOP AT LT_TNAME ASSIGNING <FS_FDCAT01>
WHERE SHLPORIGIN EQ 'F'. " Fixed Value O
" 변경된 필드
ASSIGN COMPONENT <FS_FDCAT01>-FIELDNAME
OF STRUCTURE &1 TO <LFS_FIELDVALUE>.
" 도메인 텍스트 값 가져오기
SELECT SINGLE DDTEXT
FROM DD07T
INTO @DATA(LV_DOMAINNAME)
WHERE DOMNAME EQ @<FS_FDCAT01>-DOMNAME
AND DDLANGUAGE EQ @SY-LANGU
AND AS4LOCAL EQ 'A'
AND DOMVALUE_L EQ @<LFS_FIELDVALUE>.
" DOMAIN VALUE TEXT FIELD 추가
DATA(LV_DDTEXT) = |{ <FS_FDCAT01>-FIELDNAME }T|.
" 필드 *T 가 있는 경우에만 값 넣기
READ TABLE LT_TNAME TRANSPORTING NO FIELDS
WITH KEY FIELDNAME = LV_DDTEXT.
IF SY-SUBRC EQ 0.
ASSIGN COMPONENT LV_DDTEXT
OF STRUCTURE &1 TO <LFS_DOMAINNAME>.
" 도메인 텍스트 값 넣기
<LFS_DOMAINNAME> = LV_DOMAINNAME.
ELSE.
CONTINUE.
ENDIF.
ENDLOOP.
END-OF-DEFINITION.
728x90
'.ABAP > ..모든 것' 카테고리의 다른 글
SAP Workarea vs Structure AND Internal Table(Header Line) vs Trasnparent Table 정리 (0) | 2023.04.09 |
---|---|
SAP Domain Fixed Value(도메인 값) 가져오기 (0) | 2023.03.28 |
SAP Function Module [3] 실행 (0) | 2023.01.12 |
SAP 콤마(,) 제거 (0) | 2023.01.12 |
SAP 콤마(,) 찍기, . 없애기 (0) | 2023.01.12 |