0% found this document useful (0 votes)
193 views

Function Code PDF

The document contains code for several ABAP forms that manage flight bookings. The forms include: 1. UPDATE_SFLIGHT which updates flight data in a table. 2. CANCEL_BOOKINGS which loops through bookings marked for cancellation, updates their status, and calls a function to cancel the bookings. 3. USER_OK_TC which handles user interactions with a table control, including inserting, deleting, sorting and marking rows.

Uploaded by

ablaubla
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
193 views

Function Code PDF

The document contains code for several ABAP forms that manage flight bookings. The forms include: 1. UPDATE_SFLIGHT which updates flight data in a table. 2. CANCEL_BOOKINGS which loops through bookings marked for cancellation, updates their status, and calls a function to cancel the bookings. 3. USER_OK_TC which handles user interactions with a table control, including inserting, deleting, sorting and marking rows.

Uploaded by

ablaubla
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 9

*&---------------------------------------------------------------------*

*& Include
MZBC410_AZ_06_01F01
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*&
Form UPDATE_SFLIGHT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM UPDATE_SFLIGHT .
UPDATE sflight FROM wa_sflight.
IF sy-subrc NE 0.
MESSAGE a002.
ELSE.
MESSAGE s003.
ENDIF.
ENDFORM.
" UPDATE_SFLIGHT
*&---------------------------------------------------------------------*
*&
Form CANCEL_BOOKINGS
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM CANCEL_BOOKINGS .
DATA: wa_sbook_upd TYPE sbook,
it_sbook_upd LIKE TABLE OF wa_sbook_upd.
CONSTANTS cancelled VALUE 'X'.
LOOP AT it_sdyn_book INTO wa_sdyn_book WHERE mark = 'X'.
MOVE-CORRESPONDING wa_sdyn_book TO wa_sbook_upd.
MOVE cancelled TO wa_sbook_upd-cancelled.
APPEND wa_sbook_upd TO it_sbook_upd.
DELETE it_sdyn_book WHERE mark = 'X'.
ENDLOOP.
CALL FUNCTION 'BC_GLOBAL_UPDATE_BOOK'
TABLES
booking_tab = it_sdyn_book
booking_tab_upd = it_sbook_upd.
MESSAGE s009.
bookings_changed = 'X'.
ENDFORM.

" CANCEL_BOOKINGS

*&------------------------------------------------------*
*& Form on_ctmenu_sub130
*&------------------------------------------------------*
*
text
*&------------------------------------------------------*
*&
---> P_menu
text
*&------------------------------------------------------*

FORM on_ctmenu_sub130 USING p_menu TYPE REF TO cl_ctmenu.


DATA fcodes TYPE ui_functions.
CALL METHOD cl_ctmenu=>load_gui_status
EXPORTING
program = sy-cprog
status = 'SUB130'
*
disable =
menu = p_menu
EXCEPTIONS
read_error = 1
OTHERS = 2.
IF sy-subrc NE 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
CHECK NOT MODE-MAINTAIN_BOOKINGS is INITIAL.
APPEND 'DELE' TO fcodes.
CALL METHOD p_menu->enable_functions
EXPORTING
fcodes = fcodes.
ENDFORM.
"on_ctmenu_sub130
*&---------------------------------------------------------------------*
*&
Form DISPLAY_BOOKINGS
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM DISPLAY_BOOKINGS .
LOOP AT it_sbook INTO wa_sbook.
WRITE: / wa_sbook-bookid,
wa_sbook-customid,
wa_sbook-custtype,
wa_sbook-luggweight UNIT wa_sbook-wunit,
wa_sbook-wunit,
wa_sbook-class,
wa_sbook-order_date,
wa_sbook-cancelled.
ENDLOOP.
ENDFORM.
" DISPLAY_BOOKINGS
*----------------------------------------------------------------------*
*
INCLUDE TABLECONTROL_FORMS
*
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*&
Form USER_OK_TC
*
*&---------------------------------------------------------------------*
FORM USER_OK_TC USING
P_TC_NAME TYPE DYNFNAM

P_TABLE_NAME
P_MARK_NAME
CHANGING P_OK
LIKE SY-UCOMM.
*&SPWIZARD: BEGIN OF LOCAL DATA----------------------------------------*
DATA: L_OK
TYPE SY-UCOMM,
L_OFFSET
TYPE I.
*&SPWIZARD: END OF LOCAL DATA------------------------------------------*
*&SPWIZARD: Table control specific operations
*&SPWIZARD: evaluate TC name and operations
SEARCH P_OK FOR P_TC_NAME.
IF SY-SUBRC <> 0.
EXIT.
ENDIF.
L_OFFSET = STRLEN( P_TC_NAME ) + 1.
L_OK = P_OK+L_OFFSET.
*&SPWIZARD: execute general and TC specific operations
CASE L_OK.
WHEN 'BOOK'.
DESCRIBE TABLE it_sdyn_book LINES n_lines.
*
READ TABLE it_sdyn_book INTO wa_sdyn_book INDEX n_lines.
wa_sdyn_book-carrid = sdyn_conn-carrid.
wa_Sdyn_book-connid = sdyn_conn-connid.
wa_sdyn_book-fldate = sdyn_conn-fldate.
PERFORM update_sbook.
CLEAR p_ok.
WHEN 'INSR'.
"insert row
PERFORM FCODE_INSERT_ROW USING
P_TC_NAME
P_TABLE_NAME.
CLEAR P_OK.
WHEN 'DELE'.
PERFORM FCODE_DELETE_ROW USING

"delete row
P_TC_NAME
P_TABLE_NAME
P_MARK_NAME.

CLEAR P_OK.
WHEN 'P--' OR
'P-' OR
'P+' OR
'P++'.
PERFORM COMPUTE_SCROLLING_IN_TC

*
*
*
*
*
*
*
*
*

"top of list
"previous page
"next page
"bottom of list
USING P_TC_NAME
L_OK.

CLEAR P_OK.
WHEN 'L--'.
"total left
PERFORM FCODE_TOTAL_LEFT USING P_TC_NAME.
WHEN 'L-'.
"column left
PERFORM FCODE_COLUMN_LEFT USING P_TC_NAME.
WHEN 'R+'.
"column right
PERFORM FCODE_COLUMN_RIGHT USING P_TC_NAME.

*
*

*
*
*

WHEN 'R++'.
"total right
PERFORM FCODE_TOTAL_RIGHT USING P_TC_NAME.
WHEN 'MARK'.
"mark all filled lines
PERFORM FCODE_TC_MARK_LINES USING P_TC_NAME
P_TABLE_NAME
P_MARK_NAME
.
CLEAR P_OK.
WHEN 'DMRK'.
"demark all filled lines
PERFORM FCODE_TC_DEMARK_LINES USING P_TC_NAME
P_TABLE_NAME
P_MARK_NAME .
CLEAR P_OK.

*
*
*
*

WHEN 'SASCEND'
OR
'SDESCEND'.
"sort column
PERFORM FCODE_SORT_TC USING P_TC_NAME
l_ok.
ENDCASE.
ENDFORM.

" USER_OK_TC

*&---------------------------------------------------------------------*
*&
Form FCODE_INSERT_ROW
*
*&---------------------------------------------------------------------*
FORM fcode_insert_row
USING
P_TC_NAME
TYPE DYNFNAM
P_TABLE_NAME
.
*&SPWIZARD: BEGIN OF LOCAL DATA----------------------------------------*
DATA L_LINES_NAME
LIKE FELD-NAME.
DATA L_SELLINE
LIKE SY-STEPL.
DATA L_LASTLINE
TYPE I.
DATA L_LINE
TYPE I.
DATA L_TABLE_NAME
LIKE FELD-NAME.
FIELD-SYMBOLS <TC>
TYPE CXTAB_CONTROL.
FIELD-SYMBOLS <TABLE>
TYPE STANDARD TABLE.
FIELD-SYMBOLS <LINES>
TYPE I.
*&SPWIZARD: END OF LOCAL DATA------------------------------------------*
ASSIGN (P_TC_NAME) TO <TC>.
*&SPWIZARD: get the table, which belongs to the tc
CONCATENATE P_TABLE_NAME '[]' INTO L_TABLE_NAME. "table body
ASSIGN (L_TABLE_NAME) TO <TABLE>.
"not headerline

*&SPWIZARD: get looplines of TableControl


CONCATENATE 'G_' P_TC_NAME '_LINES' INTO L_LINES_NAME.
ASSIGN (L_LINES_NAME) TO <LINES>.

*&SPWIZARD: get current line


GET CURSOR LINE L_SELLINE.

IF SY-SUBRC <> 0.
" append line to table
L_SELLINE = <TC>-LINES + 1.
*&SPWIZARD: set top line
IF L_SELLINE > <LINES>.
<TC>-TOP_LINE = L_SELLINE - <LINES> + 1 .
ELSE.
<TC>-TOP_LINE = 1.
ENDIF.
ELSE.
" insert line into table
L_SELLINE = <TC>-TOP_LINE + L_SELLINE - 1.
L_LASTLINE = <TC>-TOP_LINE + <LINES> - 1.
ENDIF.
*&SPWIZARD: set new cursor line
L_LINE = L_SELLINE - <TC>-TOP_LINE + 1.
*&SPWIZARD: insert initial line
INSERT INITIAL LINE INTO <TABLE> INDEX L_SELLINE.
<TC>-LINES = <TC>-LINES + 1.
*&SPWIZARD: set cursor
SET CURSOR LINE L_LINE.
ENDFORM.

" FCODE_INSERT_ROW

*&---------------------------------------------------------------------*
*&
Form FCODE_DELETE_ROW
*
*&---------------------------------------------------------------------*
FORM fcode_delete_row
USING
P_TC_NAME
TYPE DYNFNAM
P_TABLE_NAME
P_MARK_NAME
.
*&SPWIZARD: BEGIN OF LOCAL DATA----------------------------------------*
DATA L_TABLE_NAME
LIKE FELD-NAME.
FIELD-SYMBOLS <TC>
TYPE cxtab_control.
FIELD-SYMBOLS <TABLE>
TYPE STANDARD TABLE.
FIELD-SYMBOLS <WA>.
FIELD-SYMBOLS <MARK_FIELD>.
*&SPWIZARD: END OF LOCAL DATA------------------------------------------*
ASSIGN (P_TC_NAME) TO <TC>.
*&SPWIZARD: get the table, which belongs to the tc
CONCATENATE P_TABLE_NAME '[]' INTO L_TABLE_NAME. "table body
ASSIGN (L_TABLE_NAME) TO <TABLE>.
"not headerline

*&SPWIZARD: delete marked lines


DESCRIBE TABLE <TABLE> LINES <TC>-LINES.

LOOP AT <TABLE> ASSIGNING <WA>.


*&SPWIZARD: access to the component 'FLAG' of the table header
ASSIGN COMPONENT P_MARK_NAME OF STRUCTURE <WA> TO <MARK_FIELD>.

IF <MARK_FIELD> = 'X'.
DELETE <TABLE> INDEX SYST-TABIX.
IF SY-SUBRC = 0.
<TC>-LINES = <TC>-LINES - 1.
ENDIF.
ENDIF.
ENDLOOP.
ENDFORM.

" FCODE_DELETE_ROW

*&---------------------------------------------------------------------*
*&
Form COMPUTE_SCROLLING_IN_TC
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
*
-->P_TC_NAME name of tablecontrol
*
-->P_OK
ok code
*----------------------------------------------------------------------*
FORM COMPUTE_SCROLLING_IN_TC USING
P_TC_NAME
P_OK.
*&SPWIZARD: BEGIN OF LOCAL DATA----------------------------------------*
DATA L_TC_NEW_TOP_LINE
TYPE I.
DATA L_TC_NAME
LIKE FELD-NAME.
DATA L_TC_LINES_NAME
LIKE FELD-NAME.
DATA L_TC_FIELD_NAME
LIKE FELD-NAME.
FIELD-SYMBOLS <TC>
TYPE cxtab_control.
FIELD-SYMBOLS <LINES>
TYPE I.
*&SPWIZARD: END OF LOCAL DATA------------------------------------------*
ASSIGN (P_TC_NAME) TO <TC>.
*&SPWIZARD: get looplines of TableControl
CONCATENATE 'G_' P_TC_NAME '_LINES' INTO L_TC_LINES_NAME.
ASSIGN (L_TC_LINES_NAME) TO <LINES>.

*&SPWIZARD: is no line filled?


IF <TC>-LINES = 0.
*&SPWIZARD: yes, ...
L_TC_NEW_TOP_LINE = 1.
ELSE.
*&SPWIZARD: no, ...
CALL FUNCTION 'SCROLLING_IN_TABLE'
EXPORTING
ENTRY_ACT
= <TC>-TOP_LINE
ENTRY_FROM
= 1
ENTRY_TO
= <TC>-LINES
LAST_PAGE_FULL
= 'X'
LOOPS
= <LINES>
OK_CODE
= P_OK
OVERLAPPING
= 'X'
IMPORTING
ENTRY_NEW
= L_TC_NEW_TOP_LINE
EXCEPTIONS

*
*

*
*
*

NO_ENTRY_OR_PAGE_ACT
NO_ENTRY_TO
NO_OK_CODE_OR_PAGE_GO
OTHERS

=
=
=
=

01
02
03
0.

ENDIF.
*&SPWIZARD: get actual tc and column
GET CURSOR FIELD L_TC_FIELD_NAME
AREA L_TC_NAME.

IF SYST-SUBRC = 0.
IF L_TC_NAME = P_TC_NAME.
*&SPWIZARD: et actual column
SET CURSOR FIELD L_TC_FIELD_NAME LINE 1.
ENDIF.
ENDIF.
*&SPWIZARD: set the new top line
<TC>-TOP_LINE = L_TC_NEW_TOP_LINE.

ENDFORM.

" COMPUTE_SCROLLING_IN_TC

*&---------------------------------------------------------------------*
*&
Form FCODE_TC_MARK_LINES
*&---------------------------------------------------------------------*
*
marks all TableControl lines
*----------------------------------------------------------------------*
*
-->P_TC_NAME name of tablecontrol
*----------------------------------------------------------------------*
FORM FCODE_TC_MARK_LINES USING P_TC_NAME
P_TABLE_NAME
P_MARK_NAME.
*&SPWIZARD: EGIN OF LOCAL DATA-----------------------------------------*
DATA L_TABLE_NAME
LIKE FELD-NAME.
FIELD-SYMBOLS
FIELD-SYMBOLS
FIELD-SYMBOLS
FIELD-SYMBOLS
*&SPWIZARD: END

<TC>
TYPE cxtab_control.
<TABLE>
TYPE STANDARD TABLE.
<WA>.
<MARK_FIELD>.
OF LOCAL DATA------------------------------------------*

ASSIGN (P_TC_NAME) TO <TC>.


*&SPWIZARD: get the table, which belongs to the tc
CONCATENATE P_TABLE_NAME '[]' INTO L_TABLE_NAME. "table body
ASSIGN (L_TABLE_NAME) TO <TABLE>.
"not headerline

*&SPWIZARD: mark all filled lines


LOOP AT <TABLE> ASSIGNING <WA>.

*&SPWIZARD: access to the component 'FLAG' of the table header


ASSIGN COMPONENT P_MARK_NAME OF STRUCTURE <WA> TO <MARK_FIELD>.

<MARK_FIELD> = 'X'.
ENDLOOP.
ENDFORM.

"fcode_tc_mark_lines

*&---------------------------------------------------------------------*
*&
Form FCODE_TC_DEMARK_LINES
*&---------------------------------------------------------------------*
*
demarks all TableControl lines
*----------------------------------------------------------------------*
*
-->P_TC_NAME name of tablecontrol
*----------------------------------------------------------------------*
FORM FCODE_TC_DEMARK_LINES USING P_TC_NAME
P_TABLE_NAME
P_MARK_NAME .
*&SPWIZARD: BEGIN OF LOCAL DATA----------------------------------------*
DATA L_TABLE_NAME
LIKE FELD-NAME.
FIELD-SYMBOLS
FIELD-SYMBOLS
FIELD-SYMBOLS
FIELD-SYMBOLS
*&SPWIZARD: END

<TC>
TYPE cxtab_control.
<TABLE>
TYPE STANDARD TABLE.
<WA>.
<MARK_FIELD>.
OF LOCAL DATA------------------------------------------*

ASSIGN (P_TC_NAME) TO <TC>.


*&SPWIZARD: get the table, which belongs to the tc
CONCATENATE P_TABLE_NAME '[]' INTO L_TABLE_NAME. "table body
ASSIGN (L_TABLE_NAME) TO <TABLE>.
"not headerline

*&SPWIZARD: demark all filled lines


LOOP AT <TABLE> ASSIGNING <WA>.

*&SPWIZARD: access to the component 'FLAG' of the table header


ASSIGN COMPONENT P_MARK_NAME OF STRUCTURE <WA> TO <MARK_FIELD>.

<MARK_FIELD> = SPACE.
ENDLOOP.
ENDFORM.
"fcode_tc_mark_lines
*&---------------------------------------------------------------------*
*&
Form UPDATE_SBOOK
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM UPDATE_SBOOK .
MOVE-CORRESPONDING wa_Sdyn_book TO wa_sbook.
INSERT sbook FROM wa_sbook.
IF sy-subrc NE 0.
MESSAGE a005.
ELSE.
MESSAGE s006.

ENDIF.
ENDFORM.

" UPDATE_SBOOK

You might also like