You are on page 1of 12

Steps for creating budget request program

1. Create transparent table with name ZBUDG_REQ .


Field
MANDT
BUDG_REQID
REQNAME
REQ_AMOUNT
WAERS
REQ_STATUS
ERNAM
ERDAT

Data Type
MANDT
CHAR10
TEXT30
WRBTR
WAERS
CHAR1
ERNAM
ERDAT

2. Create structure data type with name ZSTBUDG_REQ .


Fieldname
BUDG_REQID
REQNAME
REQ_AMOUNT
WAERS
REQ_STATUS
ERNAM
ERDAT

Data Type
CHAR10
TEXT30
WRBTR
WAERS
CHAR1
ERNAM
ERDAT
3. Create SAP ABAP program with type module pool, with name ZPROG_BUDGREQ and with top include name
ZPROG_BUDREQ_TOP. And also create includes for subroutine , PBO and PAI .

4. Copy source codes below to the TOP include .


TABLES : ZSTBUDG_REQ .

CONSTANTS : const_inprog TYPE char1 VALUE 'I' , " In Progress


const_approved TYPE char1 VALUE 'A' , " Approved
CONST_TEXT_INPORG TYPE TEXT50 VALUE 'In Progress',
const_text_approved TYPE text50 VALUE 'Approved' .
data : ok_code like sy-ucomm ,
save_ok LIKE sy-ucomm .

DATA : GD_STATTEXT TYPE TEXT50 .


data : it_exl TYPE TABLE OF sy-ucomm .

5. Copy source codes below to the PBO include .


&---------------------------------------------------------------------*
*& Include ZPROG_BUDREQ_O01
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Module STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE status_0100 OUTPUT.
CLEAR IT_EXL .
IF sy-tcode = 'ZBUDG03'.
APPEND '&SAVE' TO IT_EXL .
ENDIF.

SET PF-STATUS 'STAT100' EXCLUDING it_exl .


CASE sy-tcode .
WHEN 'ZBUDG01'.
SET TITLEBAR 'TIT100' WITH 'Create' .
WHEN 'ZBUDG03'.
SET TITLEBAR 'TIT100' WITH 'Display' .
WHEN OTHERS.
ENDCASE.

ENDMODULE. " STATUS_0100 OUTPUT


*&---------------------------------------------------------------------*
*& Module STATUS_0010 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE status_0010 OUTPUT.
SET PF-STATUS 'STAT10'.
SET TITLEBAR 'TIT10'.

ENDMODULE. " STATUS_0010 OUTPUT


*&---------------------------------------------------------------------*
*& Module SET_SCREEN OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE set_screen OUTPUT.
LOOP AT SCREEN .
IF sy-tcode = 'ZBUDG03' .
screen-input = 0 .
MODIFY SCREEN .
ENDIF.
ENDLOOP.
ENDMODULE. " SET_SCREEN OUTPUT
*&---------------------------------------------------------------------*
*& Module SET_STATTEXT OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE set_stattext OUTPUT.
CLEAR GD_STATTEXT .
CASE zstbudg_req-req_status.
WHEN const_inprog.
gd_stattext = const_text_inporg .
WHEN const_approved.
gd_stattext = const_text_approved .
WHEN OTHERS.
ENDCASE.
ENDMODULE. " SET_STATTEXT OUTPUT
6. Copy source codes below to the PAI include.
*&---------------------------------------------------------------------*
*& Include ZPROG_BUDREQ_I01
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE user_command_0100 INPUT.
save_ok = ok_code .
CLEAR ok_code .
CASE save_ok .
WHEN '&SAVE'.
PERFORM f_save_req .
WHEN OTHERS.
ENDCASE.
ENDMODULE. " USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
*& Module EXIT_APP INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE exit_app INPUT.
LEAVE TO SCREEN 0 .
ENDMODULE. " EXIT_APP INPUT
*&---------------------------------------------------------------------*
*& Module CHECK_FIELDS INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE check_fields INPUT.
IF ZSTBUDG_REQ-reqname IS INITIAL OR
ZSTBUDG_REQ-req_amount IS INITIAL OR
ZSTBUDG_REQ-waers IS INITIAL .
MESSAGE 'Please fill required fields' TYPE 'E' .
ENDIF .
ENDMODULE. " CHECK_FIELDS INPUT
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_0010 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE user_command_0010 INPUT.
PERFORM f_get_data_req .
ENDMODULE. " USER_COMMAND_0010 INPUT
7. Copy source codes below to the subroutine include.
*&---------------------------------------------------------------------*
*& Include ZPROG_BUDREQ_F01
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form F_SAVE_REQ
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM f_save_req .
DATA : ld_nr_range_nr LIKE inri-nrrangenr,
ld_object LIKE inri-object,
ld_number(10) TYPE n.
data : lwa_db_budgreq TYPE ZBUDG_REQ .
data : ld_msg(100) TYPE c .

ld_nr_range_nr = '01' .
ld_object = 'ZBUDGREQ' .
IF sy-tcode = 'ZBUDG01' .

CALL FUNCTION 'NUMBER_GET_NEXT'


EXPORTING
nr_range_nr = ld_nr_range_nr
object = ld_object
IMPORTING
number = ld_number
EXCEPTIONS
interval_not_found = 1
number_range_not_intern = 2
object_not_found = 3
quantity_is_0 = 4
quantity_is_not_1 = 5
interval_overflow = 6
buffer_overflow = 7
OTHERS = 8.
IF sy-subrc <> 0.
MESSAGE 'Number Range Error' TYPE 'E' .
ENDIF.
zstbudg_req-budg_reqid = ld_number .
zstbudg_req-ernam = sy-uname .
zstbudg_req-erdat = sy-datum .
zstbudg_req-req_status = const_inprog .
ENDIF.

MOVE-CORRESPONDING zstbudg_req to lwa_db_budgreq .

" Saving budget request .


modify zbudg_req FROM lwa_db_budgreq .
IF sy-subrc = 0.
commit WORK .
CONCATENATE 'Budget request' zstbudg_req-budg_reqid 'successfully saved'
INTO ld_msg SEPARATED BY space .
CLEAR zstbudg_req .
MESSAGE ld_msg TYPE 'S' .
else .
ROLLBACK work .
MESSAGE 'Error when saving data' TYPE 'E' .
ENDIF.

ENDFORM. " F_SAVE_REQ


*&---------------------------------------------------------------------*
*& Form F_GET_DATA_REQ
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM f_get_data_req .
IF ZSTBUDG_REQ-BUDG_REQID IS NOT INITIAL.

SELECT SINGLE * INTO CORRESPONDING FIELDS OF zstbudg_req


FROM zbudg_req WHERE budg_reqid = ZSTBUDG_REQ-BUDG_REQID .
IF sy-subrc = 0.
call SCREEN '0100' .
else .
MESSAGE 'No data found' TYPE 'I' DISPLAY LIKE 'E' .
ENDIF.

ENDIF.
ENDFORM. " F_GET_DATA_REQ
8. Create a new screen with number 0100.

9. Name OK control with OK_CODE


10. Insert fields to the screen with reference to structure ZSTBUDG_REQ.

11. Create a new field with name GD_STATTEXT , next to status field .

12. Copy source codes below to PBO of the screen.


MODULE STATUS_0100.
MODULE set_screen .
MODULE SET_STATTEXT .

13. Copy source codes below to PAI of the screen.


MODULE exit_app at EXIT-COMMAND .
chain .
field ZSTBUDG_REQ-REQNAME .
field ZSTBUDG_REQ-REQ_AMOUNT .
field ZSTBUDG_REQ-WAERS .
MODULE check_fields .
endchain .
MODULE USER_COMMAND_0100.
14. Create GUI status with name STAT100. It Contains 2 function key . &SAVE and &BACK (EXIT COMMAND).

15. Create GUI Title with name TIT100.


16. Create a new screen with number 010.

17. Insert a new field to the screen with name request ID, and make the field as required field.

18. Copy source codes below to PBO of the screen.


MODULE STATUS_0010.
19. Copy source codes below to PAI of the screen.
MODULE exit_app at EXIT-COMMAND .
MODULE USER_COMMAND_0010.

20. Create a new GUI status for the screen, it contains 1 function key &BACK (Exit command).

21. Create a new transaction code with name ZBUDG01.


22. Create a new transaction code with name ZBUDG03.

23. Create a new number range object with name ZBUDGREQ.

24. Create a new interval for the number range object.

You might also like