0% found this document useful (0 votes)
13 views55 pages

Topic 08 - Exercise V1.3

The document outlines a series of exercises for creating and managing flight schedule programs using ABAP. It includes tasks for uploading multiple flight schedules, downloading data from a table, and generating reports from sales orders, with specific coding rules and structures provided. Each exercise requires the creation of a program with unique identifiers and functionalities, along with input validation and error handling.

Uploaded by

ledangdinhduc02
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as XLSX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
13 views55 pages

Topic 08 - Exercise V1.3

The document outlines a series of exercises for creating and managing flight schedule programs using ABAP. It includes tasks for uploading multiple flight schedules, downloading data from a table, and generating reports from sales orders, with specific coding rules and structures provided. Each exercise requires the creation of a program with unique identifiers and functionalities, along with input validation and error handling.

Uploaded by

ledangdinhduc02
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as XLSX, PDF, TXT or read online on Scribd
You are on page 1/ 55

System : S4J ST1

Exercise 1:
Copy the demo program of Topic 8 Classic Report to a new program
Complete the Upload multiple Flight Schedule feature
** 2. Upload multiple Flight Schedules (Exercise/Bonus)
* 2.1. Call GUI_UPLOAD
* 2.2. SPLIT by ',' into an all characters work area
Hints: SPLIT <raw data string> AT ','
INTO LS_CHAR_WA-FIELD1
LS_CHAR_WA-FIELD2
LS_CHAR_WA-FIELD3
LS_CHAR_WA-FIELD4
LS_CHAR_WA-FIELD5.
* 2.3. Convert that all characters work area into new Word Are
Hints: TRY.
LS_INSERT-FIELD1 = EXACT #(LS_CHAR_WA-FIELD1)
CATCH CX_ROOT.
Log-STATUS = 'E'
Log-MESSAGE = |Invalid value of field { LS_CHAR_W
ENDTRY.
* 2.3. INSERT into table SPFLI
* 2.4. Output insert result with WRITE (Using the same subrout

YXXX_CREP_EX01 XXX is your ID number

*** Please follow the coding rule below


*** All process must be put in Subroutine
Test File: <any file>.txt or .csv
AA,3199,VN,DA NANG,DNA,US,SAN FRANCISCO,SFO,1080,1
AA,3200,VN,HA NOI,NBA,US,NEW YORK,JFK,1120,083000,2

Test File: <any file>.txt or .csv

AA,31AA,VN,DA NANG,DNA,US,SAN FRANCISCO,SFO,1080,1


AA,3200,VN,HA NOI,NBA,US,NEW YORK,JFK,1120,083000,2

Exercise 2:
YXXX_CREP_EX02 XXX is your ID number

Write a program that using GUI_DOWNLOAD to download data from SPFL


File structure will be similar to Ex1
Selection Screen must include these fields below for filtering:
No. Selection Screen ItemType Screen Text (Label)
1 Airliner SELECT OPTION Airline:
2 Flight Number SELECT OPTION Flight Number:
3 Country From SELECT OPTION Country From:
4 Country To SELECT OPTION Country To:
5 Local File Path PARAMETER Local File Path:
Exercise 3:
YXXX_CREP_EX03 XXX is your ID number

Write a Report Program that will display the Sales Order from table SNWD_SO

Selection Screen:

Report Screen:

Information for Requirement Analysis:

Table Relationships Diagram


Report Fields List

No. Field Name Field ID Table ID


1 SO Id so_id snwd_so
2 Buyer Id bp_id snwd_bpa
3 Buyer Name company_namsnwd_bpa
4 Gross Amountgross_amountsnwd_so
5 Net Amount net_amount snwd_so
6 Tax Amount tax_amount snwd_so
7 SO Curr. currency_codesnwd_so
8 Lifecycle Stat lifecycle_statusnwd_so
9 Overall Statusoverall_statussnwd_so
10 Ship-to Addre- snwd_ad
11 Ship-to Postalpostal_code snwd_ad
12 <No display>buyer_guid snwd_so
13 <No display>ship_to_adr_gsnwd_so
new program
e/Bonus)

into new Word Area with same structure as the table to be inserted
LS_CHAR_WA-FIELD1).

e of field { LS_CHAR_WA-FIELD1 }.|

g the same subroutine as Create one Flight Schedule)


ISCO,SFO,1080,120000,040100,10572,MI,,1
K,1120,083000,235000,10851,MI,,0

CISCO,SFO,1080,120000,040100,10572,MI,,1 <= Error Case Data


K,1120,083000,235000,10851,MI,,0

oad data from SPFLI to CSV file

n Text (Label) Mandatory Interval (SEL-OExt (SEL-OPT) Note


No Yes Yes
umber: No Yes Yes
From: No No No
To: No No No
e Path: Yes - - Value Help that open Save Dialog
m table SNWD_SO
Note

|{ building }, { street }, { city }|


Use this field to JOIN snwd_so to snwd_bpa~node_key
Use this field to JOIN snwd_so to snwd_ad~node_key
Error Case Data

t open Save Dialog


Exercise/Remarks Screenshots

Exercise 1 Program Name: <YDUCLDD_CREP_EX01>

<screenshot>

Exercise 2 Program Name: <YDUCLDD_CREP_EX02>

Exercise 3 Program Name: <YDUCLDD_CREP_EX03>


ex1
*&---------------------------------------------------------------------*
*& Report YDUCLDD_CREP_EX01
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT YDUCLDD_CREP_EX01 LINE-SIZE 250.

TYPES: BEGIN OF TY_LOG_REPORT.


INCLUDE STRUCTURE SPFLI.

TYPES: STATUS TYPE C,


MESSAGE TYPE TEXT150,
END OF TY_LOG_REPORT.

TYPES: BEGIN OF TY_TEXT,


DATA TYPE STRING,
END OF TY_TEXT.

TYPES: BEGIN OF TY_STRING,


CARRID(100) TYPE C,
CONNID(100) TYPE C,
COUNTRYFR(100) TYPE C,
CITYFROM(100) TYPE C,
AIRPFROM(100) TYPE C,
COUNTRYTO(100) TYPE C,
CITYTO(100) TYPE C,
AIRPTO(100) TYPE C,
FLTIME(100) TYPE C,
DEPTIME(100) TYPE C,
ARRTIME(100) TYPE C,
DISTANCE(100) TYPE C,
DISTID(100) TYPE C,
FLTYPE(100) TYPE C,
PERIOD(100) TYPE C,
END OF TY_STRING.

TYPES: TY_T_LOG_REPORT TYPE STANDARD TABLE OF TY_LOG_REPORT,


TY_T_TEXT TYPE STANDARD TABLE OF TY_TEXT.

* Block 1: Create Flight Schedule Options


SELECTION-SCREEN BEGIN OF BLOCK B01 WITH FRAME TITLE TEXT-B01.
PARAMETERS: R_CREONE RADIOBUTTON GROUP RB1 USER-COMMAND RBCM DEFAULT 'X',
R_UPLOAD RADIOBUTTON GROUP RB1.
SELECTION-SCREEN END OF BLOCK B01.

* Block 2: Create a Flight Schedule


SELECTION-SCREEN BEGIN OF BLOCK B02 WITH FRAME TITLE TEXT-B02.
PARAMETERS: P_CARRID TYPE SPFLI-CARRID MODIF ID BL2,
P_CONNID TYPE SPFLI-CONNID MODIF ID BL2,
P_CTRYFR TYPE SPFLI-COUNTRYFR MODIF ID BL2,
P_CITYFR TYPE SPFLI-CITYFROM MODIF ID BL2,
P_AIRPFR TYPE SPFLI-AIRPFROM MODIF ID BL2,
P_CTRYTO TYPE SPFLI-COUNTRYTO MODIF ID BL2,
P_CITYTO TYPE SPFLI-CITYTO MODIF ID BL2,
P_AIRPTO TYPE SPFLI-AIRPTO MODIF ID BL2,
P_FLTIME TYPE SPFLI-FLTIME MODIF ID BL2,
P_DEPTIM TYPE SPFLI-DEPTIME MODIF ID BL2,
P_ARRTIM TYPE SPFLI-ARRTIME MODIF ID BL2,
P_DISTAN TYPE SPFLI-DISTANCE MODIF ID BL2.

PARAMETERS: P_DISUNT TYPE SPFLI-DISTID AS LISTBOX


VISIBLE LENGTH 25 OBLIGATORY DEFAULT 'KM' MODIF ID BL2,
P_FLTYPE TYPE SPFLI-FLTYPE MODIF ID BL2,
P_PERIOD TYPE SPFLI-PERIOD MODIF ID BL2.
SELECTION-SCREEN END OF BLOCK B02.

* Block 3: Upload multiple Flight Schedule


SELECTION-SCREEN BEGIN OF BLOCK B03 WITH FRAME TITLE TEXT-B03.
PARAMETERS: P_PATH TYPE STRING MODIF ID BL3.
SELECTION-SCREEN END OF BLOCK B03.

INITIALIZATION.
* Initialize data for drowdownlist
PERFORM INIT_DATA.

AT SELECTION-SCREEN OUTPUT.
* Change screen when chage Radio button
PERFORM CHANGE_SEL_SCREEN.

AT SELECTION-SCREEN.
* Input validation
PERFORM VALIDATE_INPUTS.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_PATH.


* File Open Dialog
PERFORM OPEN_FILE_DiaLOG.

START-OF-SELECTION.
* Main processing
PERFORM MAIN_PROCESSING.

*&---------------------------------------------------------------------*
*& Form INIT_DATA
*&---------------------------------------------------------------------*
*& Initialize data for drowdownlist
*&---------------------------------------------------------------------*
FORM INIT_DATA .
* VRM_SET_VALUES
CALL FUNCTION 'VRM_SET_VALUES'
EXPORTING
ID = CONV VRM_ID( 'P_DISUNT' )
VALUES = VALUE VRM_VALUES( ( KEY = 'KM' TEXT = 'Kilometers')
( KEY = 'MI' TEXT = 'Miles') )
EXCEPTIONS
ID_ILLEGAL_NAME = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
MESSAGE 'Cannot initialize List Box Distance Unit.' TYPE 'E'.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form CHANGE_SEL_SCREEN
*&---------------------------------------------------------------------*
*& Change screen when chage Radio button
*&---------------------------------------------------------------------*
FORM CHANGE_SEL_SCREEN .

DATA: LD_ARRIVAL_DATE TYPE D,


LD_DURATION TYPE I.

LOOP AT SCREEN.
* If user choose Create a Flight Schedule
IF R_CREONE = ABAP_TRUE.
* Hide Upload block 3
IF SCREEN-GROUP1 = 'BL3'.
SCREEN-ACTIVE = '0'.
ELSEIF SCREEN-GROUP1 = 'BL2'." Show Create block 2
SCREEN-ACTIVE = '1'.
ENDIF.

* If user choose Upload a Flight Schedule


ELSE.
* Show Upload block 3
IF SCREEN-GROUP1 = 'BL3'.
SCREEN-ACTIVE = '1'.
ELSEIF SCREEN-GROUP1 = 'BL2'." Hide Create block 2
SCREEN-ACTIVE = '0'.
ENDIF.

ENDIF.

** Set screen required (icon only, no message)


IF SCREEN-NAME = 'P_CARRID' OR
SCREEN-NAME = 'P_CONNID' OR
SCREEN-NAME = 'P_CTRYFR' OR
SCREEN-NAME = 'P_CITYFR' OR
SCREEN-NAME = 'P_AIRPFR' OR
SCREEN-NAME = 'P_CTRYTO' OR
SCREEN-NAME = 'P_CITYTO' OR
SCREEN-NAME = 'P_AIRPTO' OR
SCREEN-NAME = 'P_PATH'.
SCREEN-REQUIRED = '2'.
ENDIF.

** Disable field Flight duration


IF SCREEN-NAME = 'P_FLTIME'.
SCREEN-INPUT = '0'.
ENDIF.

MODIFY SCREEN.
ENDLOOP.

** Calculate Flight duration


LD_ARRIVAL_DATE = SY-DATUM.
LD_ARRIVAL_DATE += P_PERIOD.

CALL FUNCTION 'SWI_DURATION_DETERMINE'


EXPORTING
START_DATE = SY-DATUM
END_DATE = LD_ARRIVAL_DATE
START_TIME = P_DEPTIM
END_TIME = P_ARRTIM
IMPORTING
DURATION = LD_DURATION " Flight Duration in seconds
.

P_FLTIME = LD_DURATION / 60.


ENDFORM.
*&---------------------------------------------------------------------*
*& Form VALIDATE_INPUTS
*&---------------------------------------------------------------------*
*& Input Validation
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM VALIDATE_INPUTS .

CHECK SY-UCOMM <> 'RBCM'.

** 1. Validate Required Fields


IF R_CREONE = ABAP_TRUE.
PERFORM: CHECK_REQUIRED_FIELDS USING P_CARRID TEXT-T01,
CHECK_REQUIRED_FIELDS USING P_CONNID TEXT-T02,
CHECK_REQUIRED_FIELDS USING P_CTRYFR TEXT-T03,
CHECK_REQUIRED_FIELDS USING P_CITYFR TEXT-T04,
CHECK_REQUIRED_FIELDS USING P_AIRPFR TEXT-T05,
CHECK_REQUIRED_FIELDS USING P_CTRYTO TEXT-T06,
CHECK_REQUIRED_FIELDS USING P_CITYTO TEXT-T07,
CHECK_REQUIRED_FIELDS USING P_AIRPTO TEXT-T08.

** 2. Validate Airline Code with Table Airline Master


PERFORM CHECK_AIRLINE_MASTER USING P_CARRID.

** 3. Validate Country Name with Country Master


PERFORM CHECK_COUNTRY_MASTER USING P_CTRYFR.
PERFORM CHECK_COUNTRY_MASTER USING P_CTRYTO.

ELSE.
PERFORM CHECK_REQUIRED_FIELDS USING P_PATH TEXT-T09.
ENDIF.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form CHECK_REQUIRED_FIELDS
*&---------------------------------------------------------------------*
*& Validate Required Fields
*&---------------------------------------------------------------------*
FORM CHECK_REQUIRED_FIELDS USING U_VALUE TYPE ANY
U_FIELD_NAME TYPE STRING.
IF U_VALUE IS INITIAL.
MESSAGE | Please enter data in the field { U_FIELD_NAME }.| TYPE 'E'.
ENDIF.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form CHECK_AIRLINE_MASTER
*&---------------------------------------------------------------------*
*& Validate Airline Code with Table Airline Master
*&---------------------------------------------------------------------*
FORM CHECK_AIRLINE_MASTER USING U_CARRID TYPE SCARR-CARRID.
SELECT SINGLE CARRID FROM SCARR
INTO @DATA(LS_SCARR)
WHERE CARRID = @U_CARRID.
IF SY-SUBRC <> 0.
MESSAGE | Invalid airline code: { U_CARRID }. Please retry with different
ENDIF.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form CHECK_COUNTRY_MASTER
*&---------------------------------------------------------------------*
*& Validate Country Name with Country Master
*&---------------------------------------------------------------------*
FORM CHECK_COUNTRY_MASTER USING U_COUNTRY TYPE T005-LAND1.
SELECT SINGLE LAND1 FROM T005
INTO @DATA(LS_LAND1)
WHERE LAND1 = @U_COUNTRY.
IF SY-SUBRC <> 0.
MESSAGE | Invalid country code: { U_COUNTRY }. Please retry with differen
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form OPEN_FILE_DiaLOG
*&---------------------------------------------------------------------*
*& Open File Dialog
*&---------------------------------------------------------------------*
FORM OPEN_FILE_DiaLOG .

DATA: LT_FILE_TABLE TYPE FILETABLE,


LD_RC TYPE I.

CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG(
EXPORTING
WINDOW_TITLE = CONV STRING( 'OPEN FLIGHT SCHEDULE FILE' ) " Title Of File
* FILE_FILTER = " File Extension Filter String
CHANGING
FILE_TABLE = LT_FILE_TABLE " Table Holding Selected Files
RC = LD_RC " Return Code, Number of Files or -1 If Error Occurred
EXCEPTIONS
FILE_OPEN_DIALOG_FAILED = 1 " "Open File" dialog failed
CNTL_ERROR = 2 " Control error
ERROR_NO_GUI = 3 " No GUI available
NOT_SUPPORTED_BY_GUI = 4 " GUI does not support this
OTHERS = 5
).
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ELSE.
READ TABLE LT_FILE_TABLE INDEX 1 INTO DATA(LS_FILE).
* DATA(LS_FILE) = LT_FILE_TABLE[ 1 ].
IF SY-SUBRC = 0.
P_PATH = LS_FILE-FILENAME.
ENDIF.
ENDIF.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form MAIN_PROCESSING
*&---------------------------------------------------------------------*
*& Main processing
*&---------------------------------------------------------------------*
FORM MAIN_PROCESSING .

DATA: LT_LOG_REPORT TYPE TY_T_LOG_REPORT.


DATA: LS_SPFLI TYPE SPFLI.
DATA: LT_TEXT TYPE TY_T_TEXT.
** Create one Flight Schedule
IF R_CREONE = ABAP_TRUE.
* Create a work area form Selection Screen fields
PERFORM CREATE_WA_FROM_SEL CHANGING LS_SPFLI.

* INSERT into table SPFLI


PERFORM INSERT_SPFLI USING LS_SPFLI
CHANGING LT_LOG_REPORT.

** Update multiple Flight Schedule


ELSE.
* Call GUI_UPLOAD
PERFORM CALL_GUI_UPLOAD USING P_PATH
CHANGING LT_TEXT.

PERFORM SPLIT_TEXT USING LT_TEXT


CHANGING LT_LOG_REPORT.
ENDIF.
* Output insert result with WRITE
PERFORM OUTPUT_LOG_REPORT USING LT_LOG_REPORT.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form CREATE_WA_FROM_SEL
*&---------------------------------------------------------------------*
*& Create a work area form Selection Screen fields
*&---------------------------------------------------------------------*
*& <-- C_S_SPFLI
*&---------------------------------------------------------------------*
FORM CREATE_WA_FROM_SEL CHANGING C_S_SPFLI TYPE SPFLI.
C_S_SPFLI = VALUE SPFLI( CARRID = P_CARRID
CONNID = P_CONNID
COUNTRYFR = P_CTRYFR
CITYFROM = P_CITYFR
AIRPFROM = P_AIRPFR
COUNTRYTO = P_CTRYTO
CITYTO = P_CITYTO
AIRPTO = P_AIRPTO
FLTIME = P_FLTIME
DEPTIME = P_DEPTIM
ARRTIME = P_ARRTIM
DISTANCE = P_DISTAN
DISTID = P_DISUNT
FLTYPE = P_FLTYPE
PERIOD = P_PERIOD ).
ENDFORM.
*&---------------------------------------------------------------------*
*& Form INSERT_SPFLI
*&---------------------------------------------------------------------*
*& INSERT into table SPFLI
*&---------------------------------------------------------------------*
FORM INSERT_SPFLI USING U_S_SPFLI TYPE SPFLI
CHANGING C_T_LOG_REPORT TYPE TY_T_LOG_REPORT.

DATA: LS_LOG_REPORT TYPE TY_LOG_REPORT.

CHECK U_S_SPFLI IS NOT INITIAL.

INSERT SPFLI FROM U_S_SPFLI.

IF SY-SUBRC = 0.
MOVE-CORRESPONDING U_S_SPFLI TO LS_LOG_REPORT.
LS_LOG_REPORT-STATUS = 'S'.
LS_LOG_REPORT-MESSAGE = 'Data has been inserted succesfully into Flight S
APPEND LS_LOG_REPORT TO C_T_LOG_REPORT.
ELSE.
MOVE-CORRESPONDING U_S_SPFLI TO LS_LOG_REPORT.
LS_LOG_REPORT-STATUS = 'E'.
LS_LOG_REPORT-MESSAGE = 'Inserting error. Please check duplicated keys.'.
APPEND LS_LOG_REPORT TO C_T_LOG_REPORT.
ENDIF.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form OUTPUT_LOG_REPORT
*&---------------------------------------------------------------------*
*& Output insert result with WRITE
*&---------------------------------------------------------------------*
FORM OUTPUT_LOG_REPORT USING U_LT_LOG_REPORT TYPE TY_T_LOG_REPORT.
FORMAT COLOR COL_HEADING.
WRITE: /(5) 'No.',
(10) 'Airline',
(10) 'Flight No.',
(10) 'Status',
(150) 'Message'.
FORMAT COLOR OFF.
LOOP AT U_LT_LOG_REPORT INTO DATA(LS_LOG).
WRITE: /(5) SY-TABIX,
(10) LS_LOG-CARRID,
(10) LS_LOG-CONNID,
(10) LS_LOG-STATUS,
(150) LS_LOG-MESSAGE.
ENDLOOP.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form CALL_GUI_UPLOAD
*&---------------------------------------------------------------------*
*& Call GUI_UPLOAD
*&---------------------------------------------------------------------*
FORM CALL_GUI_UPLOAD USING U_P_PATH TYPE STRING
CHANGING C_LT_TEXT TYPE TY_T_TEXT.

CALL FUNCTION 'GUI_UPLOAD'


EXPORTING
FILENAME = U_P_PATH
FILETYPE = 'ASC'
HAS_FIELD_SEPARATOR = ','
TABLES
DATA_TAB = C_LT_TEXT
EXCEPTIONS
FILE_OPEN_ERROR = 1
FILE_READ_ERROR = 2
NO_BATCH = 3
GUI_REFUSE_FILETRANSFER = 4
INVALID_TYPE = 5
NO_AUTHORITY = 6
UNKNOWN_ERROR = 7
BAD_DATA_FORMAT = 8
HEADER_NOT_ALLOWED = 9
SEPARATOR_NOT_ALLOWED = 10
HEADER_TOO_LONG = 11
UNKNOWN_DP_ERROR = 12
ACCESS_DENIED = 13
DP_OUT_OF_MEMORY = 14
DISK_FULL = 15
DP_TIMEOUT = 16
OTHERS = 17
.
IF SY-SUBRC <> 0.
MESSAGE E029(YFA2101) WITH SY-SUBRC.
ELSEIF C_LT_TEXT IS INITIAL.
MESSAGE E037(YFA2101).
ENDIF.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form SPLIT_TEXT
*&---------------------------------------------------------------------*
*& SPLIT by ',' into an all characters work area
*&---------------------------------------------------------------------*
FORM SPLIT_TEXT USING U_LT_TEXT TYPE TY_T_TEXT
CHANGING C_LT_LOG_REPORT TYPE TY_T_LOG_REPORT.

DATA: LS_STRING TYPE TY_STRING,


LS_TEXT TYPE TY_TEXT,
LS_LOG_REPORT TYPE TY_LOG_REPORT,
LS_SPFLI TYPE SPFLI,
LD_MESSAGE TYPE STRING.

LOOP AT U_LT_TEXT INTO LS_TEXT.

CLEAR: LS_STRING,
LS_LOG_REPORT,
LD_MESSAGE,
LS_SPFLI.

SPLIT LS_TEXT-DATA AT ','


INTO LS_STRING-CARRID
LS_STRING-CONNID
LS_STRING-COUNTRYFR
LS_STRING-CITYFROM
LS_STRING-AIRPFROM
LS_STRING-COUNTRYTO
LS_STRING-CITYTO
LS_STRING-AIRPTO
LS_STRING-FLTIME
LS_STRING-DEPTIME
LS_STRING-ARRTIME
LS_STRING-DISTANCE
LS_STRING-DISTID
LS_STRING-FLTYPE
LS_STRING-PERIOD.

TRY.
LS_LOG_REPORT-CARRID = EXACT #( LS_STRING-CARRID ).
CATCH CX_ROOT.
LS_LOG_REPORT-STATUS = 'E'.
MESSAGE E030(YFA2101) WITH LS_STRING-CARRID SY-TABIX INTO LD_MESSAGE.
CONCATENATE LS_LOG_REPORT-MESSAGE LD_MESSAGE INTO LS_LOG_REPORT-MESSAGE S
ENDTRY.

TRY.
LS_LOG_REPORT-CONNID = EXACT #( LS_STRING-CONNID ).
CATCH CX_ROOT.
LS_LOG_REPORT-STATUS = 'E'.
MESSAGE E030(YFA2101) WITH LS_STRING-CONNID SY-TABIX INTO LD_MESSAGE.
CONCATENATE LS_LOG_REPORT-MESSAGE LD_MESSAGE INTO LS_LOG_REPORT-MESSAGE S
ENDTRY.

TRY.
LS_LOG_REPORT-COUNTRYFR = EXACT #( LS_STRING-COUNTRYFR ).
CATCH CX_ROOT.
LS_LOG_REPORT-STATUS = 'E'.
MESSAGE E030(YFA2101) WITH LS_STRING-COUNTRYFR SY-TABIX INTO LD_MESSAGE.
CONCATENATE LS_LOG_REPORT-MESSAGE LD_MESSAGE INTO LS_LOG_REPORT-MESSAGE S
ENDTRY.

TRY.
LS_LOG_REPORT-CITYFROM = EXACT #( LS_STRING-CITYFROM ).
CATCH CX_ROOT.
LS_LOG_REPORT-STATUS = 'E'.
MESSAGE E030(YFA2101) WITH LS_STRING-CITYFROM SY-TABIX INTO LD_MESSAGE.
CONCATENATE LS_LOG_REPORT-MESSAGE LD_MESSAGE INTO LS_LOG_REPORT-MESSAGE S
ENDTRY.

TRY.
LS_LOG_REPORT-AIRPFROM = EXACT #( LS_STRING-AIRPFROM ).
CATCH CX_ROOT.
LS_LOG_REPORT-STATUS = 'E'.
MESSAGE E030(YFA2101) WITH LS_STRING-AIRPFROM SY-TABIX INTO LD_MESSAGE.
CONCATENATE LS_LOG_REPORT-MESSAGE LD_MESSAGE INTO LS_LOG_REPORT-MESSAGE S
ENDTRY.
TRY.
LS_LOG_REPORT-COUNTRYTO = EXACT #( LS_STRING-COUNTRYTO ).
CATCH CX_ROOT.
LS_LOG_REPORT-STATUS = 'E'.
MESSAGE E030(YFA2101) WITH LS_STRING-COUNTRYTO SY-TABIX INTO LD_MESSAGE.
CONCATENATE LS_LOG_REPORT-MESSAGE LD_MESSAGE INTO LS_LOG_REPORT-MESSAGE S
ENDTRY.

TRY.
LS_LOG_REPORT-CITYTO = EXACT #( LS_STRING-CITYTO ).
CATCH CX_ROOT.
LS_LOG_REPORT-STATUS = 'E'.
MESSAGE E030(YFA2101) WITH LS_STRING-CITYTO SY-TABIX INTO LD_MESSAGE.
CONCATENATE LS_LOG_REPORT-MESSAGE LD_MESSAGE INTO LS_LOG_REPORT-MESSAGE S
ENDTRY.

TRY.
LS_LOG_REPORT-AIRPTO = EXACT #( LS_STRING-AIRPTO ).
CATCH CX_ROOT.
LS_LOG_REPORT-STATUS = 'E'.
MESSAGE E030(YFA2101) WITH LS_STRING-AIRPTO SY-TABIX INTO LD_MESSAGE.
CONCATENATE LS_LOG_REPORT-MESSAGE LD_MESSAGE INTO LS_LOG_REPORT-MESSAGE S
ENDTRY.

TRY.
LS_LOG_REPORT-FLTIME = EXACT #( LS_STRING-FLTIME ).
CATCH CX_ROOT.
LS_LOG_REPORT-STATUS = 'E'.
MESSAGE E030(YFA2101) WITH LS_STRING-FLTIME SY-TABIX INTO LD_MESSAGE.
CONCATENATE LS_LOG_REPORT-MESSAGE LD_MESSAGE INTO LS_LOG_REPORT-MESSAGE S
ENDTRY.

TRY.
LS_LOG_REPORT-DEPTIME = EXACT #( LS_STRING-DEPTIME ).
CATCH CX_ROOT.
LS_LOG_REPORT-STATUS = 'E'.
MESSAGE E030(YFA2101) WITH LS_STRING-DEPTIME SY-TABIX INTO LD_MESSAGE.
CONCATENATE LS_LOG_REPORT-MESSAGE LD_MESSAGE INTO LS_LOG_REPORT-MESSAGE S
ENDTRY.

TRY.
LS_LOG_REPORT-ARRTIME = EXACT #( LS_STRING-ARRTIME ).
CATCH CX_ROOT.
LS_LOG_REPORT-STATUS = 'E'.
MESSAGE E030(YFA2101) WITH LS_STRING-ARRTIME SY-TABIX INTO LD_MESSAGE.
CONCATENATE LS_LOG_REPORT-MESSAGE LD_MESSAGE INTO LS_LOG_REPORT-MESSAGE S
ENDTRY.

TRY.
LS_LOG_REPORT-DISTANCE = EXACT #( LS_STRING-DISTANCE ).
CATCH CX_ROOT.
LS_LOG_REPORT-STATUS = 'E'.
MESSAGE E030(YFA2101) WITH LS_STRING-DISTANCE SY-TABIX INTO LD_MESSAGE.
CONCATENATE LS_LOG_REPORT-MESSAGE LD_MESSAGE INTO LS_LOG_REPORT-MESSAGE S
ENDTRY.

TRY.
LS_LOG_REPORT-DISTID = EXACT #( LS_STRING-DISTID ).
CATCH CX_ROOT.
LS_LOG_REPORT-STATUS = 'E'.
MESSAGE E030(YFA2101) WITH LS_STRING-DISTID SY-TABIX INTO LD_MESSAGE.
CONCATENATE LS_LOG_REPORT-MESSAGE LD_MESSAGE INTO LS_LOG_REPORT-MESSAGE S
ENDTRY.

TRY.
LS_LOG_REPORT-FLTYPE = EXACT #( LS_STRING-FLTYPE ).
CATCH CX_ROOT.
LS_LOG_REPORT-STATUS = 'E'.
MESSAGE E030(YFA2101) WITH LS_STRING-FLTYPE SY-TABIX INTO LD_MESSAGE.
CONCATENATE LS_LOG_REPORT-MESSAGE LD_MESSAGE INTO LS_LOG_REPORT-MESSAGE S
ENDTRY.

TRY.
LS_LOG_REPORT-PERIOD = EXACT #( LS_STRING-PERIOD ).
CATCH CX_ROOT.
LS_LOG_REPORT-STATUS = 'E'.
MESSAGE E030(YFA2101) WITH LS_STRING-PERIOD SY-TABIX INTO LD_MESSAGE.
CONCATENATE LS_LOG_REPORT-MESSAGE LD_MESSAGE INTO LS_LOG_REPORT-MESSAGE S
ENDTRY.

MOVE-CORRESPONDING LS_LOG_REPORT TO LS_SPFLI.

* INSERT into table SPFLI


IF LS_LOG_REPORT-STATUS <> 'E'.
PERFORM INSERT_SPFLI USING LS_SPFLI
CHANGING C_LT_LOG_REPORT.
ELSE.
APPEND LS_LOG_REPORT TO C_LT_LOG_REPORT.
ENDIF.

ENDLOOP.

ENDFORM.

ex2
*&---------------------------------------------------------------------*
*& Report YDUCLDD_CREP_EX02
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT YDUCLDD_CREP_EX02.

* TYPES
TYPES: BEGIN OF TY_SPFLI.
INCLUDE STRUCTURE SPFLI.
TYPES: END OF TY_SPFLI.

TYPES: TY_T_SPFLI TYPE STANDARD TABLE OF TY_SPFLI.

* Khoi tao DATA


DATA: GD_CARRID TYPE SPFLI-CARRID,
GD_CONNID TYPE SPFLI-CONNID,
GD_CTRYFR TYPE SPFLI-COUNTRYFR,
GD_CTRYTO TYPE SPFLI-COUNTRYTO,
GT_SPFLI TYPE TY_T_SPFLI.

* SELECTION SCREEN
SELECTION-SCREEN BEGIN OF BLOCK A01 WITH FRAME.
SELECT-OPTIONS: S_CARRID FOR GD_CARRID,
S_CONNID FOR GD_CONNID,
S_CTRYFR FOR GD_CTRYFR,
S_CTRYTO FOR GD_CTRYTO.
PARAMETERS: P_PATH TYPE FILE_TABLE-FILENAME OBLIGATORY.
SELECTION-SCREEN END OF BLOCK A01.

AT SELECTION-SCREEN.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_PATH.
* OPEN FILE DIALOG
PERFORM OPEN_DIALOG CHANGING P_PATH.

START-OF-SELECTION.

* MAIN PROCESSING
PERFORM MAIN_PROCESSING USING S_CARRID
S_CONNID
S_CTRYFR
S_CTRYTO.

*&---------------------------------------------------------------------*
*& Form OPEN_DIALOG
*&---------------------------------------------------------------------*
*& OPEN FILE DIALOG
*&---------------------------------------------------------------------*
FORM OPEN_DIALOG CHANGING C_P_PATH TYPE FILE_TABLE-FILENAME.

DATA: LD_FILENAME TYPE STRING,


LD_PATH TYPE STRING,
LD_FULLPATH TYPE STRING.

CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG(
EXPORTING
WINDOW_TITLE = CONV STRING( 'Open CDS List' ) " Window Title
DEFAULT_EXTENSION = 'TXT' " Default Extension
CHANGING
FILENAME = LD_FILENAME " File Name to Save
PATH = LD_PATH " Path to File
FULLPATH = LD_FULLPATH " Path + File Name
EXCEPTIONS
CNTL_ERROR = 1 " Control error
ERROR_NO_GUI = 2 " No GUI available
NOT_SUPPORTED_BY_GUI = 3 " GUI does not support this
INVALID_DEFAULT_FILE_NAME = 4 " Invalid default file name
OTHERS = 5
).
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ELSE.
C_P_PATH = LD_FULLPATH.
ENDIF.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form GET_DATA_SPFLI
*&---------------------------------------------------------------------*
*& GET DATA FORM TABLE SPFLI
*&---------------------------------------------------------------------*
FORM GET_DATA_SPFLI USING U_S_CARRID LIKE S_CARRID
U_S_CONNID LIKE S_CONNID
U_S_CTRYFR LIKE S_CTRYFR
U_S_CTRYTO LIKE S_CTRYTO
CHANGING C_GT_SPFLI TYPE TY_T_SPFLI.

SELECT * FROM SPFLI INTO TABLE @C_GT_SPFLI


WHERE CARRID IN @S_CARRID AND
CONNID IN @S_CONNID AND
COUNTRYFR IN @S_CTRYFR AND
COUNTRYTO IN @S_CTRYTO
ORDER BY CARRID.

IF SY-SUBRC <> 0.
MESSAGE ' NO DATA ' TYPE 'E'.
ENDIF.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form DOWLOAD_DATA
*&---------------------------------------------------------------------*
*& DOWNLOAD DATA
*&---------------------------------------------------------------------*
FORM DOWNLOAD_DATA USING U_P_PATH TYPE FILE_TABLE-FILENAME
U_GT_SPFLI TYPE TY_T_SPFLI.

DATA: LD_FILENAME TYPE STRING.


LD_FILENAME = U_P_PATH.

CALL FUNCTION 'GUI_DOWNLOAD'


EXPORTING
FILENAME = LD_FILENAME
FILETYPE = 'ASC'
WRITE_FIELD_SEPARATOR = ','
CONFIRM_OVERWRITE = 'C'
TABLES
DATA_TAB = U_GT_SPFLI
* FIELDNAMES =
EXCEPTIONS
FILE_WRITE_ERROR = 1
NO_BATCH = 2
GUI_REFUSE_FILETRANSFER = 3
INVALID_TYPE = 4
NO_AUTHORITY = 5
UNKNOWN_ERROR = 6
HEADER_NOT_ALLOWED = 7
SEPARATOR_NOT_ALLOWED = 8
FILESIZE_NOT_ALLOWED = 9
HEADER_TOO_LONG = 10
DP_ERROR_CREATE = 11
DP_ERROR_SEND = 12
DP_ERROR_WRITE = 13
UNKNOWN_DP_ERROR = 14
ACCESS_DENIED = 15
DP_OUT_OF_MEMORY = 16
DISK_FULL = 17
DP_TIMEOUT = 18
FILE_NOT_FOUND = 19
DATAPROVIDER_EXCEPTION = 20
CONTROL_FLUSH_ERROR = 21
OTHERS = 22
.
IF SY-SUBRC <> 0.
MESSAGE 'Cannot download file' TYPE 'E'.
ENDIF.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form MAIN_PROCESSING
*&---------------------------------------------------------------------*
*& MAIN PROCESSING
*&---------------------------------------------------------------------*
FORM MAIN_PROCESSING USING U_S_CARRID LIKE S_CARRID
U_S_CONNID LIKE S_CONNID
U_S_CTRYFR LIKE S_CTRYFR
U_S_CTRYTO LIKE S_CTRYTO.
* GET DATA FROM TABLE SPFLI
PERFORM GET_DATA_SPFLI USING U_S_CARRID
U_S_CONNID
U_S_CTRYFR
U_S_CTRYTO
CHANGING GT_SPFLI.

* DOWNLOAD DATA
PERFORM DOWNLOAD_DATA USING P_PATH
GT_SPFLI.

ENDFORM.

ex3
*&---------------------------------------------------------------------*
*& Report YDUCLDD_CREP_EX03
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT YDUCLDD_CREP_EX03 NO STANDARD PAGE HEADING.

TYPES: BEGIN OF TY_REPORT,


SO_ID TYPE SNWD_SO-SO_ID,
BP_ID TYPE SNWD_BPA-BP_ID,
COMP_NAME TYPE SNWD_BPA-COMPANY_NAME,
G_AMOUNT TYPE SNWD_SO-GROSS_AMOUNT,
N_AMOUNT TYPE SNWD_SO-NET_AMOUNT,
T_AMOUNT TYPE SNWD_SO-TAX_AMOUNT,
CURR_CODE TYPE SNWD_SO-CURRENCY_CODE,
L_STATUS TYPE SNWD_SO-LIFECYCLE_STATUS,
O_STATUS TYPE SNWD_SO-OVERALL_STATUS,
STO_BUILD TYPE SNWD_AD-BUILDING,
STO_STRT TYPE SNWD_AD-STREET,
STO_CITY TYPE SNWD_AD-CITY,
STO_POS TYPE SNWD_AD-POSTAL_CODE,
END OF TY_REPORT.

TYPES: TY_T_REPORT TYPE STANDARD TABLE OF TY_REPORT.

DATA: GT_SNWD TYPE TY_T_REPORT.


DATA: GD_SO_ID TYPE SNWD_SO-SO_ID.

SELECTION-SCREEN BEGIN OF BLOCK A01 WITH FRAME.


SELECT-OPTIONS: S_SO_ID FOR GD_SO_ID.
SELECTION-SCREEN END OF BLOCK A01.

START-OF-SELECTION.

* MAIN PROCESSING
PERFORM MAIN_PROCESSING USING S_SO_ID.

* TOP OF REPORT
TOP-OF-PAGE.
PERFORM TOP_OF_PAGE.
*&---------------------------------------------------------------------*
*& Form MAIN_PROCESSING
*&---------------------------------------------------------------------*
*& MAIN PROCESSING
*&---------------------------------------------------------------------*
FORM MAIN_PROCESSING USING U_S_SO_ID LIKE S_SO_ID.

* Get data
PERFORM GET_DATA USING U_S_SO_ID
CHANGING GT_SNWD.

* Output report
PERFORM OUTPUT_REPORT USING GT_SNWD.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form GET_DATA
*&---------------------------------------------------------------------*
*& Get Data
*&---------------------------------------------------------------------*
FORM GET_DATA USING U_S_SO_ID LIKE S_SO_ID
CHANGING C_GT_SNWD TYPE TY_T_REPORT.

SELECT SNWD_SO~SO_ID,
SNWD_BPA~BP_ID,
SNWD_BPA~COMPANY_NAME,
SNWD_SO~GROSS_AMOUNT,
SNWD_SO~NET_AMOUNT,
SNWD_SO~TAX_AMOUNT,
SNWD_SO~CURRENCY_CODE,
SNWD_SO~LIFECYCLE_STATUS,
SNWD_SO~OVERALL_STATUS,
SNWD_AD~BUILDING AS STO_BUILD,
SNWD_AD~STREET AS STO_STRT,
SNWD_AD~CITY AS STO_CITY,
SNWD_AD~POSTAL_CODE
FROM SNWD_SO JOIN SNWD_BPA ON SNWD_SO~BUYER_GUID = SNWD_BPA~NODE_KEY
JOIN SNWD_AD ON SNWD_SO~SHIP_TO_ADR_GUID = SNWD_AD~NODE_KEY
WHERE SO_ID IN @S_SO_ID
ORDER BY SNWD_SO~SO_ID
INTO TABLE @C_GT_SNWD.

IF SY-SUBRC <> 0.
MESSAGE 'Can not get data' TYPE 'E'.
ENDIF.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form OUTPUT_REPORT
*&---------------------------------------------------------------------*
*& Output Report
*&---------------------------------------------------------------------*
FORM OUTPUT_REPORT USING U_GT_SNWD TYPE TY_T_REPORT.

DATA: LD_STO_ADDR TYPE STRING.

LOOP AT U_GT_SNWD INTO DATA(LS_SALE_ORDER).


CONCATENATE LS_SALE_ORDER-STO_BUILD LS_SALE_ORDER-STO_STRT LS_SALE_ORDER-
FORMAT COLOR COL_KEY.
WRITE: /(10) LS_SALE_ORDER-SO_ID.
FORMAT COLOR OFF.
WRITE:(10) LS_SALE_ORDER-BP_ID,
(20) LS_SALE_ORDER-COMP_NAME,
(15) LS_SALE_ORDER-G_AMOUNT,
(15) LS_SALE_ORDER-N_AMOUNT,
(15) LS_SALE_ORDER-T_AMOUNT,
(10) LS_SALE_ORDER-CURR_CODE,
(18) LS_SALE_ORDER-L_STATUS,
(15) LS_SALE_ORDER-O_STATUS,
(30) LD_STO_ADDR,
(15) LS_SALE_ORDER-STO_POS.

ENDLOOP.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form TOP_OF_PAGE
*&---------------------------------------------------------------------*
*& Top of page
*&---------------------------------------------------------------------*
FORM TOP_OF_PAGE .

WRITE: TEXT-001.
SKIP 1.
WRITE:/ TEXT-002 , SY-DATUM.
WRITE:/ TEXT-003, SY-UZEIT.
SKIP 1.
FORMAT COLOR COL_HEADING.
WRITE:/(10) TEXT-004,
(10) TEXT-005,
(20) TEXT-006,
(15) TEXT-007,
(15) TEXT-008,
(15) TEXT-009,
(10) TEXT-010,
(18) TEXT-011,
(15) TEXT-012,
(30) TEXT-013,
(15) TEXT-014.
FORMAT COLOR OFF.

ENDFORM.
-------------------*

-------------------*

-------------------*

TEXT-B01.
AND RBCM DEFAULT 'X',
TEXT-B02.

TEXT-B03.
-------------------*

-------------------*

-------------------*

TYPE 'E'.

-------------------*

-------------------*

-------------------*
-------------------*

-------------------*

-------------------*

-------------------*
-------------------*

-------------------*

-------------------*

AME }.| TYPE 'E'.

-------------------*

-------------------*

-------------------*

retry with different code| TYPE 'E'.

-------------------*

-------------------*

-------------------*

e retry with different code| TYPE 'E'.

-------------------*

-------------------*
-------------------*

LE' ) " Title Of File Open Dialog

rror Occurred

-------------------*

-------------------*

-------------------*
-------------------*

-------------------*

-------------------*

-------------------*
-------------------*

-------------------*

-------------------*

esfully into Flight Schedule.'.

ck duplicated keys.'.

-------------------*

-------------------*

-------------------*
_T_LOG_REPORT.
-------------------*

-------------------*

-------------------*
-------------------*

-------------------*

-------------------*
INTO LD_MESSAGE.
_LOG_REPORT-MESSAGE SEPARATED BY SPACE.

INTO LD_MESSAGE.
_LOG_REPORT-MESSAGE SEPARATED BY SPACE.

BIX INTO LD_MESSAGE.


_LOG_REPORT-MESSAGE SEPARATED BY SPACE.

IX INTO LD_MESSAGE.
_LOG_REPORT-MESSAGE SEPARATED BY SPACE.

IX INTO LD_MESSAGE.
_LOG_REPORT-MESSAGE SEPARATED BY SPACE.
BIX INTO LD_MESSAGE.
_LOG_REPORT-MESSAGE SEPARATED BY SPACE.

INTO LD_MESSAGE.
_LOG_REPORT-MESSAGE SEPARATED BY SPACE.

INTO LD_MESSAGE.
_LOG_REPORT-MESSAGE SEPARATED BY SPACE.

INTO LD_MESSAGE.
_LOG_REPORT-MESSAGE SEPARATED BY SPACE.

X INTO LD_MESSAGE.
_LOG_REPORT-MESSAGE SEPARATED BY SPACE.
X INTO LD_MESSAGE.
_LOG_REPORT-MESSAGE SEPARATED BY SPACE.

IX INTO LD_MESSAGE.
_LOG_REPORT-MESSAGE SEPARATED BY SPACE.

INTO LD_MESSAGE.
_LOG_REPORT-MESSAGE SEPARATED BY SPACE.

INTO LD_MESSAGE.
_LOG_REPORT-MESSAGE SEPARATED BY SPACE.

INTO LD_MESSAGE.
_LOG_REPORT-MESSAGE SEPARATED BY SPACE.
-------------------*

-------------------*

-------------------*
-------------------*

-------------------*

-------------------*
-------------------*

-------------------*

-------------------*

-------------------*

-------------------*

-------------------*
-------------------*

-------------------*

-------------------*
-------------------*

-------------------*

-------------------*
-------------------*

-------------------*

-------------------*

-------------------*

-------------------*

-------------------*
NWD_BPA~NODE_KEY

-------------------*

-------------------*

-------------------*

O_STRT LS_SALE_ORDER-STO_CITY INTO LD_STO_ADDR SEPARATED BY ', '.


-------------------*

-------------------*

-------------------*

You might also like