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를 기대하세요. ^ ^
아 정말 감사합니다^^;