*****************Parameter Value Set************************************
* &1 : 입력할 테이블
* &2 : 입력받을 필드 이름
* &3 : Parameter Flag
************************************************************************
DEFINE parameter_value_set.
loop at &1.
unassign: <gtab>, <gstr>, <gfld>.
clear: g_type, g_number, gt_fname, gs_finfo, g_count, gs_ftype.
assign (&1-parameter) to <gfld>.
if sy-subrc ne 0.
continue.
endif.
describe field <gfld> type g_type components g_number.
case g_type.
when 'h'. "internal Table
internal_table_log &1-parameter '' &3 &2.
when 'u'. "스트럭쳐
structure_log &1-parameter &3 &2.
when others.
check not <gfld> is initial.
add 1 to g_count.
move-corresponding gs_logh to gt_logv.
gt_logv-buzei = g_buzei.
gt_logv-canum = g_count.
gt_logv-trname = &1-parameter.
gt_logv-field = &1-parameter.
gt_logv-trtyp = &3.
gt_logv-&2 = <gfld>.
insert table gt_logv. clear gt_logv.
endcase.
endloop.
END-OF-DEFINITION.
1.붉은 색 부분 중에서 (&1-parameter) 테이블의 파라미터를 동적으로 참조한다는 것 같은데
parameter 가 무엇을 의미하는지 궁금합니다.
2. describe field <gfld> type g_type components g_number. 은 type과 components를 갖고 오는 것
같은데 f1 봐도 이해가 잘 안됩니다. syntax 적 의미가 궁금합니다.
고수님들의 답변 부탁드립니다.
1. assign (&1-parameter) to <gfld>.
-> &1이라는 인터널테이블에 'parameter'라는 필드가 존재합니다.
예를들면
DATA: BEGIN OF &1,
PARAMETER(5),
END OF &1.
이렇게 되겠네요. case g_type. 로 씌이는 걸로 봐서는 흐름상 PARAMETER값은 아마
인터널테이블명이나 WA명이 들어가 있을것으로 보여집니다.
2. describe field <gfld> type g_type components g_number.
-> 이건 1번에서 PARAMETER로 받아온 인터널테이블인지, WA인지를 구별하게 되는건데요
예를 들여 인터널테이블경우 필드가 5개가 존재한다 했을때
G_TYPE에는 H, G_NUMBER에는 5.
WA 일경우 필드가 4개 존재한다 했을때
G_TYPE에는 U, G_NUMBER에는 4가 들어가겠죠~