Program: ZR5A##114 ( [S5A-##] Subroutine 연습 )
아래는 1번 문제 해답입니다.
PARAMETERS: pa_carid TYPE spfli-carrid,
pa_conid TYPE spfli-connid.
DATA: gv_carid TYPE string,
gv_conid TYPE string,
gv_airfr TYPE string,
gv_airto TYPE string.
START-OF-SELECTION.
SELECT SINGLE carrid connid airpfrom airpto
from spfli
INTO (gv_carid,gv_conid,gv_airfr,gv_airto)
where carrid EQ pa_carid
AND connid EQ pa_conid.
IF pa_carid is INITIAL OR pa_conid is INITIAL.
MESSAGE I002(ZMC5A12).
ELSEIF sy-subrc is NOT INITIAL.
MESSAGE I003(ZMC5A12).
ELSEIF sy-subrc is INITIAL.
write: 'Airline Code: ', gv_carid,/
'Connection Number: ',gv_conid,/
'Dep. airport: ', gv_airfr,/
'Dest. airport: ', gv_airto.
ENDIF.
아래는 2번 문제 해답입니다.
INCLUDE zr5a12114_top . " Global Data
INCLUDE zr5a12114_f01 . " FORM-Routines
START-OF-SELECTION.
PERFORM validate_parameters USING pa_carid pa_conid CHANGING gv_subrc.
IF gv_subrc = 0.
PERFORM select USING pa_carid pa_conid CHANGING gv_subrc gv_carid gv_conid gv_airfr gv_airto.
PERFORM write USING gv_subrc gv_carid gv_conid gv_airfr gv_airto.
ENDIF.
여기까지가 메인!!!
PARAMETERS: pa_carid TYPE spfli-carrid,
pa_conid TYPE spfli-connid.
DATA: gv_carid TYPE string,
gv_conid TYPE string,
gv_airfr TYPE string,
gv_airto TYPE string,
gv_aifna TYPE string,
gv_aitna TYPE string.
DATA gv_subrc TYPE sy-subrc.
여기까지가 TOP!!!
FORM select USING VALUE(pa_carid)
VALUE(pa_conid)
CHANGING VALUE(gv_subrc)
VALUE(gv_carid)
VALUE(gv_conid)
VALUE(gv_airfr)
VALUE(gv_airto).
SELECT SINGLE carrid connid airpfrom airpto
FROM spfli
INTO (gv_carid,gv_conid,gv_airfr,gv_airto)
WHERE carrid EQ pa_carid
AND connid EQ pa_conid.
gv_subrc = sy-subrc.
SELECT SINGLE name
FROM sairport
INTO (gv_aifna)
WHERE id EQ gv_airfr.
SELECT SINGLE name
FROM sairport
INTO (gv_aitna)
WHERE id EQ gv_airto.
ENDFORM.
FORM write USING VALUE(gv_subrc)
VALUE(gv_carid)
VALUE(gv_conid)
VALUE(gv_airfr)
VALUE(gv_airto).
IF gv_subrc IS NOT INITIAL.
MESSAGE i003(zmc5a12).
RETURN.
ENDIF.
IF gv_subrc IS INITIAL.
WRITE: 'Airline Code: ', gv_carid,/
'Connection Number: ',gv_conid,/
'Dep. airport: ', gv_airfr,gv_aifna,/
'Dest. airport: ', gv_airto,gv_aitna.
ENDIF.
ENDFORM.
FORM validate_parameters USING VALUE(pa_carid)
VALUE(pa_conid)
CHANGING VALUE(gv_subrc).
IF pa_carid IS INITIAL OR pa_conid IS INITIAL.
MESSAGE i002(zmc5a12).
gv_subrc = 4.
RETURN.
ENDIF.
ENDFORM.
나머지가 F1의 Form !!!
주의깊게 봐야할 점
공통변수
Data gv_subrc type sy-subrc.
gv_subrc 를 잘써먹어야합니당.