Serarch help를 만들고 싶지만, 어떤 이유에서든지
만들지 못하고 있을 때, 괴롭죠?
그런 경우 중 하나가 여러 테이블에 걸쳐있는 필드
들을 가져와서 F4 스크린에 보여줘야 할 때입니다.
긴 말 필요없습니다.
다음 예제를 보시면 머릿속이 시원합니다.
REPORT YTEST5 .
TABLES: MARA, MAKT.
PARAMETERS: MATNR(18) TYPE C,
MAKTX(40) TYPE C.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR MATNR.
PERFORM POV_MATNR.
*&---------------------------------------------------------------------*
*& Form POV_MATNR
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM POV_MATNR.
DATA : SELECTFIELD LIKE HELP_INFO-FIELDNAME,
IT_FIELDS LIKE HELP_VALUE OCCURS 0 WITH HEADER LINE,
SELECT_VALUE LIKE HELP_INFO-FLDVALUE,
LD_TABIX LIKE SY-TABIX.
CLEAR: SELECTFIELD, IT_FIELDS, SELECT_VALUE, LD_TABIX.
REFRESH: IT_FIELDS.
* F4를 눌렀을 때 보여지는 필드 선언.
DATA : BEGIN OF IT_VALUE OCCURS 0,
MATNR LIKE MARA-MATNR,
MAKTX LIKE MAKT-MAKTX,
END OF IT_VALUE.
* Help List를 테이블에서 가져온다.
SELECT * FROM MARA.
CLEAR: MAKT.
SELECT SINGLE * FROM MAKT WHERE MATNR = MARA-MATNR.
IT_VALUE-MATNR = MARA-MATNR.
IT_VALUE-MAKTX = MAKT-MAKTX.
APPEND IT_VALUE. CLEAR IT_VALUE.
ENDSELECT.
IF SY-DBCNT EQ 0.
MESSAGE E000(ZLGM) WITH '데이터가 없습니다.'.
ENDIF.
*아래 부분이 F4를 눌렀을 때, Hit List를 보여준다.
IT_FIELDS-TABNAME = 'MARA'.
IT_FIELDS-FIELDNAME = 'MATNR'.
IT_FIELDS-SELECTFLAG = 'X'.
APPEND IT_FIELDS.
IT_FIELDS-TABNAME = 'MAKT'.
IT_FIELDS-FIELDNAME = 'MAKTX'.
IT_FIELDS-SELECTFLAG = ' '.
APPEND IT_FIELDS.
CALL FUNCTION 'HELP_VALUES_GET_NO_DD_NAME'
EXPORTING
SELECTFIELD = SELECTFIELD
IMPORTING
IND = LD_TABIX
SELECT_VALUE = SELECT_VALUE
TABLES
FIELDS = IT_FIELDS
FULL_TABLE = IT_VALUE
EXCEPTIONS
FULL_TABLE_EMPTY = 1
NO_TABLESTRUCTURE_GIVEN = 2
NO_TABLEFIELDS_IN_DICTIONARY = 3
MORE_THEN_ONE_SELECTFIELD = 4
NO_SELECTFIELD = 5
OTHERS = 6.
CHECK NOT LD_TABIX IS INITIAL.
READ TABLE IT_VALUE INDEX LD_TABIX.
MATNR = SELECT_VALUE.
ENDFORM. " POV_MATNR
속편, DYNP_VALUES_READ와 DYNP_VALUES_UPDATE를 기대하세요. ^ ^
댓글 5
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
102 | BAPI function List [3] | sapjoy | 2014.08.19 | 26662 |
101 | 유용한 날짜 펑션들....(펌) [17] | 하늘사랑 | 2007.07.04 | 16619 |
100 | 숫자 왼쪽의 0 없애기 [8] | ecbase | 2006.12.02 | 14789 |
99 | 환율관련 함수 [2] | 아밥뽀 | 2014.08.23 | 14024 |
98 | 반올림, 올림, 버림 Function [16] | SSong | 2007.11.20 | 11956 |
97 | 공휴일 체크 및 다음 휴일 구하기 [5] | ecbase | 2006.12.01 | 11086 |
96 | 문자인지 숫자인지 구분 [8] | ecbase | 2006.12.01 | 10664 |
95 | 현재 떠있는 화면에서 특정 필드의 값을 읽어오는 함수 및 방법 [8] | Delight | 2008.04.28 | 9892 |
94 | 유용한 Function 올려봅니다. [30] | 김지성 | 2007.04.17 | 9877 |
93 | 소수점 이하 체크 [5] | ecbase | 2006.12.02 | 9710 |
92 | Amount의 필드 값의 0을 삭제후 Char로 내보내기 [3] | 민버미꺼! | 2007.12.25 | 9616 |
91 | 프로그램실행시간 구하기 [16] | 쥬앙 | 2009.04.06 | 9298 |
90 | 이메일로 파일 보내는 함수 [3] | 열공아밥 | 2009.12.20 | 9277 |
89 | POPUP 함수(팝업) [11] | sapjoy | 2007.05.17 | 8741 |
88 | LDM 파일을 다운로드 하는 Function [1] | 양키 | 2012.08.08 | 8447 |
87 | [Function]오늘은 몇요일일까요? [4] | 양키 | 2010.09.29 | 8447 |
86 | tcode 권한체크 t-code authority check | sapjoy | 2013.05.21 | 8209 |
85 | ALV BUFFER CLEAR [3] | ecbase | 2006.12.02 | 8011 |
84 | [Function] 메세지 박스를 뛰워보자 [10] | 양키 | 2010.09.29 | 7915 |
83 | [부가세] Multi key 변환 펑션 [6] | 미소 | 2010.07.26 | 7855 |
아 정말 감사합니다^^;