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 정리

 

SAP MACRO,DEFINE 정리

Macro을 사용하려면 DEFINE 함수를 써야 한다. 곧 Macro와 Define은 함께 움직여야 한다. Macro은 Local Macro vs Global Macro로 나뉜다. Local과 Global의 차이는 알 거라고 생각하고 넘어가겠다. Local Macro 정리(Repor

potato98.tistory.com

 

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
LIST

'.SAP > ..ABAP' 카테고리의 다른 글

SAP Domain Fixed Value(도메인 값) 가져오기  (0) 2023.03.28
SAP BAPI란  (0) 2023.03.03
SAP Function Module [3] 실행  (0) 2023.01.12
SAP 콤마(,) 제거  (0) 2023.01.12
SAP 콤마(,) 찍기, . 없애기  (0) 2023.01.12