Module Pool Prog Demo
*----------------------------------------------------------------------*
* Name of the program: *
* *
* Purpose: DEMO OF MODULE POOL PROGRAMMING
*
*----------------------------------------------------------------------*
* Author : JATIN SINGHAL *
* Date : 30.05.2014 *
PROGRAM yj_funmodule_demo.
TABLES : yjdemo, makt.
DATA : ok_code TYPE sy-ucomm.
*DATA : wa_mara like line of mara.
*DATA : WA Type YJDEMO.
*&---------------------------------------------------------------------*
*& Module STATUS_0001 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE status_0001 OUTPUT.
SET PF-STATUS 'STATUS'.
SET TITLEBAR 'TITLE'.
* IF yjdemo-ymatnr IS NOT INITIAL.
* SELECT SINGLE maktx FROM makt INTO makt-maktx WHERE matnr = yjdemo-ymatnr.
* ENDIF.
ENDMODULE. " STATUS_0001 OUTPUT
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_0001 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
*AT USER-COMMAND.
MODULE user_command_0001 INPUT.
*PERFORM f_user_comand CHANGING ok_code.
PERFORM database_update.
*Perform update .
commit work.
CASE ok_code.
* WHEN 'ENTR'.
* Select single maktx from makt into makt-maktx where matnr = yjdemo-ymatnr.
WHEN 'DISP'.
SELECT SINGLE * FROM yjdemo WHERE ymatnr = yjdemo-ymatnr.
IF sy-subrc NE 0.
MESSAGE text-005 TYPE 'E'.
ENDIF.
WHEN 'RFSH'.
CLEAR yjdemo.
CLEAR makt.
WHEN 'EXIT'.
LEAVE PROGRAM.
WHEN 'BACK'.
LEAVE TO SCREEN 0.
Endcase.
ENDMODULE.
*&---------------------------------------------------------------------*
*& Module POPULATE_MAT_DESC INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE populate_mat_desc INPUT.
clear ok_code.
SELECT SINGLE maktx FROM makt INTO makt-maktx WHERE matnr = yjdemo-ymatnr.
ENDMODULE. " POPULATE_MAT_DESC INPUT
MODULE f4_matnr INPUT.
DATA: screen_values TYPE TABLE OF ddshretval,
screen_value LIKE LINE OF screen_values.
CALL FUNCTION 'F4IF_FIELD_VALUE_REQUEST'
EXPORTING
tabname = 'YJDEMO'
fieldname = 'YMATNR'
dynpprog = sy-cprog
dynpnr = sy-dynnr
dynprofield = 'YJDEMO-YMATNR'
TABLES
return_tab = screen_values.
READ TABLE screen_values INTO screen_value INDEX 1.
SELECT SINGLE maktx FROM makt INTO makt-maktx WHERE matnr EQ screen_value-fieldval .
yjdemo-ymatnr = screen_value-fieldval.
LEAVE TO SCREEN 001.
ENDMODULE. " F4_MATNR INPUT
*&---------------------------------------------------------------------*
*& Form F_USER_COMAND
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* <--P_OK_CODE text
*----------------------------------------------------------------------*
*FORM f_user_comand CHANGING fp_code TYPE syucomm.
*CALL FUNCTION 'YJ_MODULE_POOL_UPDATE'
* EXPORTING
* matnr = YJDEMO-YMATNR
* catch = FP_CODE
* IMPORTING
* LS_MARA = YJDEMO
* EXCEPTIONS
* RECORD_DELETED = 1
* RECORD_NOT_FOUND = 2
* RECORD_MODIFIED = 3
* RECORD_NOT_MODIFIED = 4
* MATERIAL_NOT_FOUND = 5
* OTHERS = 6.
*
*IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
*ENDIF.
*ENDFORM. " F_USER_COMAND
*&---------------------------------------------------------------------*
*& Form DATABASE_UPDATE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form DATABASE_UPDATE .
CALL FUNCTION 'YJ_DB_UPDATE'
EXPORTING
ls_mara = yjdemo
catch = ok_code.
endform. " DATABASE_UPDATE
*&---------------------------------------------------------------------*
*& Module VALIDATE INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
*module VALIDATE input.
* DATA lv_mandt type mandt.
*
* SELECT single mandt from MARA into lv_mandt where matnr = yjdemo-ymatnr.
* If sy-subrc <> 0.
* MESSAGE text-005 type 'E'.
* Endif.
*endmodule. " VALIDATE INPUT
*&---------------------------------------------------------------------*
*& Form UPDATE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
*form UPDATE .
*CASE ok_code.
* WHEN ' '.
* Select single maktx from makt into makt-maktx where matnr = yjdemo-ymatnr.
* WHEN 'DISP'.
* SELECT SINGLE * FROM yjdemo WHERE ymatnr = yjdemo-ymatnr.
* IF sy-subrc NE 0.
* MESSAGE text-005 TYPE 'E'.
* ENDIF.
*
* WHEN 'MODI'.
* MODIFY yjdemo FROM yjdemo ."TRANSPORTING ylongtext yactive yvalid_from_date yvalid_to_date yfling ymeins .
* CLEAR yjdemo.
* IF sy-subrc = 0.
* MESSAGE text-003 TYPE 'I'.
* ELSE.
* MESSAGE text-004 TYPE 'W'.
* ENDIF.
* CLEAR yjdemo.
*
* WHEN 'INST'.
* INSERT into yjdemo values yjdemo.
*
* WHEN 'RFSH'.
* CLEAR yjdemo.
* CLEAR makt.
*
* WHEN 'DELT'.
* DELETE yjdemo FROM yjdemo." WHERE YMATNR = YJDEMO-YMATNR.
* CLEAR yjdemo.
* IF sy-subrc = 0.
* MESSAGE text-001 TYPE 'I'.
* ELSE.
* MESSAGE text-002 TYPE 'E'.
* ENDIF.
*
* WHEN 'EXIT'.
* LEAVE PROGRAM.
*
* WHEN 'BACK'.
* LEAVE TO SCREEN 0.
*
* ENDCASE.
*endform. " UPDATE
Flow Logic of screen 001.
PROCESS BEFORE OUTPUT.
MODULE status_0001.
PROCESS AFTER INPUT.
* CHAIN.
* FIELD yjdemo-ymatnr.
* MODULE validate.
* ENDCHAIN.
MODULE user_command_0001.
MODULE populate_mat_desc.
PROCESS ON VALUE-REQUEST.
FIELD yjdemo-ymatnr MODULE f4_matnr.
* Name of the program: *
* *
* Purpose: DEMO OF MODULE POOL PROGRAMMING
*
*----------------------------------------------------------------------*
* Author : JATIN SINGHAL *
* Date : 30.05.2014 *
PROGRAM yj_funmodule_demo.
TABLES : yjdemo, makt.
DATA : ok_code TYPE sy-ucomm.
*DATA : wa_mara like line of mara.
*DATA : WA Type YJDEMO.
*&---------------------------------------------------------------------*
*& Module STATUS_0001 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE status_0001 OUTPUT.
SET PF-STATUS 'STATUS'.
SET TITLEBAR 'TITLE'.
* IF yjdemo-ymatnr IS NOT INITIAL.
* SELECT SINGLE maktx FROM makt INTO makt-maktx WHERE matnr = yjdemo-ymatnr.
* ENDIF.
ENDMODULE. " STATUS_0001 OUTPUT
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_0001 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
*AT USER-COMMAND.
MODULE user_command_0001 INPUT.
*PERFORM f_user_comand CHANGING ok_code.
PERFORM database_update.
*Perform update .
commit work.
CASE ok_code.
* WHEN 'ENTR'.
* Select single maktx from makt into makt-maktx where matnr = yjdemo-ymatnr.
WHEN 'DISP'.
SELECT SINGLE * FROM yjdemo WHERE ymatnr = yjdemo-ymatnr.
IF sy-subrc NE 0.
MESSAGE text-005 TYPE 'E'.
ENDIF.
WHEN 'RFSH'.
CLEAR yjdemo.
CLEAR makt.
WHEN 'EXIT'.
LEAVE PROGRAM.
WHEN 'BACK'.
LEAVE TO SCREEN 0.
Endcase.
ENDMODULE.
*&---------------------------------------------------------------------*
*& Module POPULATE_MAT_DESC INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE populate_mat_desc INPUT.
clear ok_code.
SELECT SINGLE maktx FROM makt INTO makt-maktx WHERE matnr = yjdemo-ymatnr.
ENDMODULE. " POPULATE_MAT_DESC INPUT
MODULE f4_matnr INPUT.
DATA: screen_values TYPE TABLE OF ddshretval,
screen_value LIKE LINE OF screen_values.
CALL FUNCTION 'F4IF_FIELD_VALUE_REQUEST'
EXPORTING
tabname = 'YJDEMO'
fieldname = 'YMATNR'
dynpprog = sy-cprog
dynpnr = sy-dynnr
dynprofield = 'YJDEMO-YMATNR'
TABLES
return_tab = screen_values.
READ TABLE screen_values INTO screen_value INDEX 1.
SELECT SINGLE maktx FROM makt INTO makt-maktx WHERE matnr EQ screen_value-fieldval .
yjdemo-ymatnr = screen_value-fieldval.
LEAVE TO SCREEN 001.
ENDMODULE. " F4_MATNR INPUT
*&---------------------------------------------------------------------*
*& Form F_USER_COMAND
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* <--P_OK_CODE text
*----------------------------------------------------------------------*
*FORM f_user_comand CHANGING fp_code TYPE syucomm.
*CALL FUNCTION 'YJ_MODULE_POOL_UPDATE'
* EXPORTING
* matnr = YJDEMO-YMATNR
* catch = FP_CODE
* IMPORTING
* LS_MARA = YJDEMO
* EXCEPTIONS
* RECORD_DELETED = 1
* RECORD_NOT_FOUND = 2
* RECORD_MODIFIED = 3
* RECORD_NOT_MODIFIED = 4
* MATERIAL_NOT_FOUND = 5
* OTHERS = 6.
*
*IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
*ENDIF.
*ENDFORM. " F_USER_COMAND
*&---------------------------------------------------------------------*
*& Form DATABASE_UPDATE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form DATABASE_UPDATE .
CALL FUNCTION 'YJ_DB_UPDATE'
EXPORTING
ls_mara = yjdemo
catch = ok_code.
endform. " DATABASE_UPDATE
*&---------------------------------------------------------------------*
*& Module VALIDATE INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
*module VALIDATE input.
* DATA lv_mandt type mandt.
*
* SELECT single mandt from MARA into lv_mandt where matnr = yjdemo-ymatnr.
* If sy-subrc <> 0.
* MESSAGE text-005 type 'E'.
* Endif.
*endmodule. " VALIDATE INPUT
*&---------------------------------------------------------------------*
*& Form UPDATE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
*form UPDATE .
*CASE ok_code.
* WHEN ' '.
* Select single maktx from makt into makt-maktx where matnr = yjdemo-ymatnr.
* WHEN 'DISP'.
* SELECT SINGLE * FROM yjdemo WHERE ymatnr = yjdemo-ymatnr.
* IF sy-subrc NE 0.
* MESSAGE text-005 TYPE 'E'.
* ENDIF.
*
* WHEN 'MODI'.
* MODIFY yjdemo FROM yjdemo ."TRANSPORTING ylongtext yactive yvalid_from_date yvalid_to_date yfling ymeins .
* CLEAR yjdemo.
* IF sy-subrc = 0.
* MESSAGE text-003 TYPE 'I'.
* ELSE.
* MESSAGE text-004 TYPE 'W'.
* ENDIF.
* CLEAR yjdemo.
*
* WHEN 'INST'.
* INSERT into yjdemo values yjdemo.
*
* WHEN 'RFSH'.
* CLEAR yjdemo.
* CLEAR makt.
*
* WHEN 'DELT'.
* DELETE yjdemo FROM yjdemo." WHERE YMATNR = YJDEMO-YMATNR.
* CLEAR yjdemo.
* IF sy-subrc = 0.
* MESSAGE text-001 TYPE 'I'.
* ELSE.
* MESSAGE text-002 TYPE 'E'.
* ENDIF.
*
* WHEN 'EXIT'.
* LEAVE PROGRAM.
*
* WHEN 'BACK'.
* LEAVE TO SCREEN 0.
*
* ENDCASE.
*endform. " UPDATE
Flow Logic of screen 001.
PROCESS BEFORE OUTPUT.
MODULE status_0001.
PROCESS AFTER INPUT.
* CHAIN.
* FIELD yjdemo-ymatnr.
* MODULE validate.
* ENDCHAIN.
MODULE user_command_0001.
MODULE populate_mat_desc.
PROCESS ON VALUE-REQUEST.
FIELD yjdemo-ymatnr MODULE f4_matnr.
Comments
Post a Comment