메뉴 건너뛰기

SAP 한국 커뮤니티



F4 /Serarch help

꿀단지 2011.10.11 11:29 조회 수 : 4878 추천:2

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를 기대하세요. ^ ^