SAP 4.0B 에서
SEARCH HELP 를 구현하려고 하는데
어떤식으로 구현해야 할지 감을 못잡겠습니다.
펑션으로 기타 다른 방법으로 구현할수 있도록
구체적으로 설명해주시면 잘배워서 사용하도록 하겠습니다.
고맙습니다.
댓글 4
-
activeman
2008.03.14 02:58
-
크리스~
2008.03.14 16:49
낮은 버전에서는 이렇게 구현했습니다...
4.0B에서는 정말 안돼는게 많아요.. T-T
* F4를 눌렀을 때 보여지는 필드 선언.
DATA : select_value LIKE help_info-fldvalue.
DATA : BEGIN OF it_value OCCURS 0,
lgnum LIKE t300-lgnum,
lnumt LIKE t300t-lnumt,
END OF it_value.
DATA : selectfield LIKE help_info-fieldname.
DATA : ld_tabix LIKE sy-tabix.
DATA : it_fields LIKE help_value OCCURS 0 WITH HEADER LINE.
PARAMETERS : in_lgnum LIKE t300-lgnum.
PERFORM MASTER_DATA_SELECT.
*-----------------------------------------------------------------------
* A T S E L E C T I O N - S C R E E N
*-----------------------------------------------------------------------
AT SELECTION-SCREEN ON VALUE-REQUEST FOR in_lgnum.
PERFORM value_create.
in_lgnum = select_value.
*&---------------------------------------------------------------------*
*& Form VALUE_CREATE
*&---------------------------------------------------------------------*
FORM value_create.
* Help List를 테이블에서 가져온다.
PERFORM t300t_select.
* 아래 부분이 F4를 눌렀을 때, Hit List를 보여준다.
CLEAR it_fields.
it_fields-tabname = 'T300T'.
it_fields-fieldname = 'LGNUM'.
it_fields-selectflag = 'X'.
APPEND it_fields.
CLEAR it_fields.
it_fields-tabname = 'T300T'.
it_fields-fieldname = 'LNUMT'.
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.
ENDFORM. " VALUE_CREATE
*&---------------------------------------------------------------------*
*& Form T300T_SELECT
*&---------------------------------------------------------------------*
FORM t300t_select.
CLEAR: selectfield, it_fields, select_value, ld_tabix.
REFRESH: it_fields.
CLEAR : it_value. CLEAR it_value.
CLEAR t300t.
SELECT * FROM t300t WHERE spras = 'E'.
MOVE-CORRESPONDING t300t TO it_value.
COLLECT it_value. CLEAR it_value.
ENDSELECT.
IF sy-dbcnt EQ 0.
MESSAGE i001 WITH '데이터가 없습니다.'.
EXIT.
ENDIF.
* 필요없는 데이타 삭제
DELETE it_value
WHERE lgnum <> '001' AND lgnum <> '004' AND lgnum <> '005'.
ENDFORM. " T300T_SELECT
FORM master_data_select
SELECT * FROM T300 WHERE LGNUM = IN_LGNUM.
이하생략...
ENDFORM/ -
초보생
2008.03.14 16:54
activeman 님 답변 감사드립니다.
근데 문제가 시스템 버젼이 낮아서 'F4IF_INT_TABLE_VALUE_REQUEST' 함수는 지원이 되지 않습니다.
'F4IF_FIELD_VALUE_REQUEST' 를 지원하는데 이 펑션을 써서 사용해야 할거 같은데 실력이 부족해
구현하는데 애를 먹고 있습니다. 'F4IF_FIELD_VALUE_REQUEST' 를 사용해 구현하는 방법을 알려주시면
많은 도움이 될거 같습니다. 고맙습니다.
-
초보생
2008.03.14 19:31
크리스님 답변 감사드립니다.
4.0B 버젼에서 첨 하는데 안돼는게 정말 많은거 같습니다.
search help 를 만드는 방법은 여러가지가 있습니다.
그중에 하나 함수를 사용해서 만드는 방법인데 소스를 올려 놓겠습니다.
뭐..소스가 간단해서 급방 해결 될겁니다.
* 직장코드 F4_HELP를 위한 DATA 선언
DATA : LV_DYNPFLD LIKE HELP_INFO-DYNPROFLD,
LV_DYNPROG LIKE SY-REPID,
LV_DYNNR LIKE SY-DYNNR.
DATA : BEGIN OF IT_VALUE OCCURS 0,
ZWKRID LIKE ZPP5730T-ZWKRID,
ZWKRNM LIKE ZPP5730T-ZWKRNM,
ZDPTCD LIKE ZPP5730T-ZDPTCD,
END OF IT_VALUE.
CLEAR: IT_VALUE.
REFRESH: IT_VALUE.
SELECT * INTO CORRESPONDING FIELDS OF TABLE IT_VALUE
FROM ZPP5730T
WHERE WERKS = F_WERKS
AND ZWKRID LIKE '5%'
ORDER BY ZDPTCD ZWKRID.
LV_DYNPROG = SY-REPID.
LV_DYNNR = SY-DYNNR.
LV_DYNPFLD = 'F_ZWKRID'. ==>필드명
*[ F4_HELP를 만들어 주는 함수 ]
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
RETFIELD = 'ZWKRID'명 ==>리턴해주는 값(사원번호)
DYNPPROG = LV_DYNPROG
DYNPNR = LV_DYNNR
DYNPROFIELD = LV_DYNPFLD
WINDOW_TITLE = '직장코드'
VALUE_ORG = 'S'
TABLES
VALUE_TAB = IT_VALUE.
IF SY-SUBRC <> 0.
ENDIF.
CLEAR : LV_DYNPFLD.