저번에 메쏘드 안탄다고 질문 올려놨었는데
이번에는 메쏘드는 타는데 인터널 테이블에 값이 안들어가서
no values found라는 에러가 뜨네요 ㅠㅠㅠ 코드좀 봐주세요 ㅠㅠ
==
FORM on_f4 USING p_fieldname TYPE lvc_fname
p_es_row_no TYPE lvc_s_roid
p_er_event_data TYPE REF TO cl_alv_event_data
p_et_bad_cells TYPE lvc_t_modi.
FIELD-SYMBOLS: <lt_f4> TYPE lvc_t_modi.
DATA: ls_f4 TYPE lvc_s_modi,
l_class TYPE zeclass. " TYPE 에 DATA ELEMENT씀
ASSIGN p_er_event_data->m_data->* TO <lt_f4>.
ls_f4-fieldname = p_fieldname.
ls_f4-row_id = p_es_row_no-row_id.
READ TABLE itab INDEX ls_f4-row_id.
CASE p_fieldname.
WHEN 'CLASS'.
PERFORM f4_class CHANGING l_class." 여기 perform문 코딩은 밑에
IF l_class IS NOT INITIAL.
MOVE l_class TO itab-class.
MODIFY itab INDEX ls_f4-row_id.
ENDIF.
ENDCASE.
p_er_event_data->m_event_handled = 'X'.
* PERFORM grid_f4 CHANGING gt_f4.
*
* CALL METHOD G_GRID->REGISTER_F4_FOR_FIELDS
* EXPORTING
* IT_F4 = gt_f4.
CALL METHOD g_grid->refresh_table_display
EXPORTING
is_stable = gt_stbl
i_soft_refresh = c_x
EXCEPTIONS
finished = 1
OTHERS = 2.
IF sy-subrc <> 0.
ENDIF.
ENDFORM.
== 위에있는 perform 문 코딩
FORM f4_class CHANGING p_class.
DATA : BEGIN OF lt_f4 OCCURS 0,
class LIKE zbasis-class,
text1(12) TYPE c,
END OF lt_f4,
lt_ret LIKE ddshretval OCCURS 0 WITH HEADER LINE.
MOVE : 'O' TO lt_f4-class,
'OA' TO lt_f4-text1.
APPEND lt_f4. CLEAR lt_f4.
MOVE : 'S' TO lt_f4-class,
'Server' TO lt_f4-text1.
APPEND lt_f4. CLEAR lt_f4.
MOVE : 'D' TO lt_f4-class,
'Disk' TO lt_f4-text1.
APPEND lt_f4. CLEAR lt_f4.
MOVE : 'N' TO lt_f4-class,
'Network' TO lt_f4-text1.
APPEND lt_f4. CLEAR lt_f4.
MOVE : 'W' TO lt_f4-class,
'Work station' TO lt_f4-text1.
APPEND lt_f4. CLEAR lt_f4.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'CLASS'
dynpprog = sy-repid
dynpnr = sy-dynnr
dynprofield = 'ITAB-CLASS'
value_org = 'C'
TABLES
value_tab = lt_f4
return_tab = lt_ret
EXCEPTIONS
parameter_error = 1
no_values_found = 2
OTHERS = 3.
IF sy-subrc <> 0.
ELSE .
MOVE lt_ret-fieldval TO p_class.
ENDIF.
ENDFORM. " F4_CLASS
뭐가 잘못됬는지 모르겠어요 ㅠㅠ
마지막에
CALL METHOD g_grid->refresh_table_display
EXPORTING
is_stable = gt_stbl
i_soft_refresh = c_x
EXCEPTIONS
finished = 1
OTHERS = 2.
IF sy-subrc <> 0.
ENDIF.
이부분의 gt_stbl 에 값이 들어있어야 하는건가요? gt_stbl이 비어있던데..
도와주세요 아밥님들~ㅠㅠ
음... 인터널 테이블이 gt_stbl / itab 2개가 있는건데
정확히 값이 어디에 들어가야하나요?
MODIFY itab INDEX ls_f4-row_id. << 이렇게 itab 을 수정하는거는 보이는데
f4로 받은 값을 gt_stbl 테이블에 넣는부분은 다른곳에 있나요?
한번 확인해보셔야 할꺼 같아요