안녕 하세요 마늘맛 쿨피스 입니다 . 요금 e-abap.net에서 많은 정보, 문제 해결을 받고 있어서 모든 분께 감사 드림니다.
필드 심볼을 써서 엄청 긴 소스를 줄일려고 하는데 자꾸 에러가 나서 그런데 좋은 해결 방법이 없을까요 ??
그래서 질문 드립니다. 이거 해결되면 1000라인 이상 줄일수 있을거 같아서 질문 드립니다.
Field symbol has not yet been assigned. 이런 에러가 나오네요 ㅠㅜ
다시 수정 햇는데 안돌아 가네요 .
FORM INPUT USING p_seq.
gt_seq-seq = p_seq.
ENDFORM.
FORM AUTO.
FIELD-SYMBOLS :
FIELD-SYMBOLS :
FIELD-SYMBOLS :
DEFINE DIVIDE_MAC.
if &1 = 0. &3 = 0.
else.
&3 = ( &2 / &1 - 1 ) * 100.
endif.
end-of-definition.
DATA : A_CAL(3),
* B_CAL(3),
* C_CAL(3),
D_CAL(30),
E_CAL(30),
F_CAL(30).
DATA : Z_DATE LIKE P_DATE." LIKE P_DATE.
Z_DATE = P_DATE+4(2).
DO 24 TIMES.
PERFORM INPUT USING : '10', '11', '12', '13', '20', '21', '22','30',
'31', '32', '33', '34', '35', '36', '37', '38',
'40', '41', '42', '43' ,'44','50', '51', '52' .
A_CAL = A_CAL + 1.
CONCATENATE `gs_amt_profit-amt_` A_CAL INTO D_CAL.
CONCATENATE `gs_amt_fix12-amt_` Z_DATE INTO E_CAL.
CONCATENATE `gs_amt_fix-amt_` gt_seq-seq INTO F_CAL.
ASSIGN (A_CAL) TO
ASSIGN (E_CAL) TO
ASSIGN (F_CAL) TO
IF SY-SUBRC = 0.
"DIVIDE_MAC :
ELSE.
CLEAR :
ENDIF.
ENDDO.
"ENDCATCH.
ENDFORM.
***********************************************************************************************8
--수정전"""
FORM AUTO.
FIELD-SYMBOLS :
DATA : A_CAL(100),
B_CAL(100),
C_CAL(100),
D_CAL(100),
E_CAL(1000).
DATA : Z_DATE(100)." LIKE P_DATE.
Z_DATE = P_DATE+4(2).
CATCH SYSTEM-EXCEPTIONS arithmetic_errors = 4 OTHERS = 8.
DO 24 TIMES.
"FREE
PERFORM INPUT USING : '10', '11', '12', '13', '20', '21', '22','30',
'31', '32', '33', '34', '35', '36', '37', '38','40', '41', '42', '43'
,'44','50', '51', '52' .
CONCATENATE 'gs_amt_fix' P_DATE+4(2) `-amt_` gt_seq-seq
` / gs_amt_fix-amt_` gt_seq-seq `- 1 ) * 100 .` INTO D_CAL.
* CONCATENATE : 'gs_amt_fix' Z_DATE INTO A_CAL.
* CONCATENATE : A_CAL `-amt_` INTO B_CAL.
* CONCATENATE : B_CAL ` / gs_amt_fix-amt_` INTO C_CAL.
* CONCATENATE : C_CAL gt_seq-seq INTO D_CAL.
* CONCATENATE : E_CAL `- 1 ) * 100 .` INTO E_CAL.
IF sy-subrc = 0.
ASSIGN (D_CAL) TO
gs_amt_profit-amt_1 =
"FREE
gs_amt_profit-amt_2 =
gs_amt_profit-amt_3 =
gs_amt_profit-amt_4 =
gs_amt_profit-amt_5 =
gs_amt_profit-amt_6 =
gs_amt_profit-amt_7 =
gs_amt_profit-amt_8 =
gs_amt_profit-amt_9 =
gs_amt_profit-amt_10 =
gs_amt_profit-amt_11 =
gs_amt_profit-amt_12 =
gs_amt_profit-amt_13 =
gs_amt_profit-amt_14 =
gs_amt_profit-amt_15 =
gs_amt_profit-amt_16 =
gs_amt_profit-amt_17 =
gs_amt_profit-amt_18 =
gs_amt_profit-amt_19 =
gs_amt_profit-amt_20 =
gs_amt_profit-amt_21 =
gs_amt_profit-amt_22 =
gs_amt_profit-amt_23 =
gs_amt_profit-amt_24 =
ELSE.
FREE
PERFORM AUTO.
ENDIF.
ENDDO.
ENDCATCH.
댓글 6
-
테라스
2009.11.13 18:25
-
엽이
2009.11.13 18:27
잘보구갑니다.
-
im 해성
2009.11.13 19:09
테라스님 얘기처럼 D_CAL 요 안에 값이 변수 아니죠 ㅇㅇ
-
요요
2009.11.13 20:12
ASSIGN (A_CAL) TO
. 이 아니라 ASSIGN (D_CAL) TO . 로 해야하지 않을까요? -
마늘맛쿨피스
2009.11.13 22:03
요요님 그거는 수정 했습니다. 감사 합니다.
-
마늘맛쿨피스
2009.11.13 22:03
수정해도 안돌아 가네요 ㅠㅜ
D_CAL에 들어가는 값이 변수가 아니고 식이기 때문에 할당이 되지않습니다.
ASSIGN (D_CAL) TO <DAT1> CASTING. 구문에서 SY-SUBRC 가 4가 나올껍니다.
<DAT1>은 당연히 assign되지 않기 때문에 위와 같은 메시지가 발생합니다.