Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
MPP :
ARCHITECTURE OF MPP.
STEP 1
SE80 -> SELECT PROGRAM TYPE OBJECT -> NAME THE OBJECT
( SAPMZMPP9301 ) -> preses enter -> create -> prompts message to be created with top
include file -> select the check box -> OPENS INTERFACE WITH NAME OF TOP
INCLUDE FILE ( NAME SHOULD BE ENDED WITH "TOP") -> SAVE BOTH FILES
( MAIN PROGRAM AND TOP INCLUDE FILE ).
RIGHT CLICK ON MAIN PROGRAM -> CREATE -> SCREEN -> NUMBER THE
SCREEN ( 100 ) -> OK -> OPENS SE51 TCODE.
1) ATTRIBUTES
I) SPECIFIES SHORT TEXT FOR THE SCREEN
II) TYPE OF SCREEN
a) Normal Screen
Main screen in sap can be assed for tcodes to be executed , has window
properties and component features.
c) Model dialog: is a dialog based screen, this can be called from main screen , can't
be acted as main screen , tcodes can't be created for dialog screens.
2) Layout :
is used to add components on the screen using toolbox. Designing the screen is
very easy using this option.
3) Element list:
displays the list of components which are added from layout editor and also with a
component field type with "ok" type. Abaper must declare the variable in the OK field
used to identify the type of action is performed on the screen.
Note :
Flow logic editor can't understand ABAP programming code. But invokes the
ABAP code using "Module" statement.
ABAP'er has to activate module statements in flow logic editor by removing comments ,
and invoke abap editor using double click, generate code in abap editor , declare okcode
in main top include file so it can be accssed from other programs.
7th FEB
MESSAGE I000(ZMSG930)
1) CREATE MPP.
2) OPEN TOP INCLUDE FILE AND CREATE A STRUCTURE AS "WA" AND
ACTIVTE THE CODE.
3) CREATE A SCREEN .
4) FROM MPP GRAPHICAL PAINTER USE DICTIONARY/PROGRAM FIELDS TO
ADD FIELDS FROM DATA BASE TABLES OR PROGRAM WORK AREA OR
INTERNAL TABLES.
CLICK ON DICTIONARY FILES -> OPENS AN INTERFACE -> ENTER NAME OF
STRUCTURE ( WA ) -> SELECT FROM PROGRAM -> DISPLAYS ALL FIELDS OF
STRUCTURE -> SELECT THE REQUIRED FIELDS ANC CLICK ON OK -> PLACE
THE COMPONENTS ON THE SCREEN -> IF REQUIRED ADD OTHER
COMPONENTS -> SAVE THE ENTRIES -> CLICK ON ELEMENT LIST.
PROGRAM CODING
1) TOP INCLUDE FILE.
DATA WA LIKE MARA.
DATA OKCODE LIKE SY-UCOMM.
2) PAI CODE.
MODULE USER_COMMAND_1234 INPUT.
CASE OKCODE.
WHEN 'INSERT'.
INSERT INTO MARA VALUES WA.
IF SY-SUBRC = 0.
MESSAGE I089(ZMSGCLS) WITH 'RECORD IS INSERTED'.
ELSE.
MESSAGE I987(ZMSGCLS) WITH 'UNABLE TO INSERT RECORD'.
ENDIF.
WHEN 'EXIT'.
LEAVE PROGRAM.
ENDCASE.
ENDMODULE.
SYNTAX:
LEAVE TO LIST-PROCESSING.
THIS STATEMENT CAN BE USED IN MPP TO CALL LPS BY
TERMINATING CURRENT SCREEN, SO WE CAN'T COMEBACK FROM LPS TO
SCREEN, ONLY THE WAY TO TERMINATE APPLICATION IS "/N".
2) PAI CODE
MODULE USER_COMMAND_0100 INPUT.
CASE OKCODE.
WHEN 'FETCH'.
SELECT * FROM KNA1 INTO TABLE ITAB.
NUM = 1.
READ TABLE ITAB INDEX NUM.
WHEN 'NEXT'.
NUM = NUM + 1.
DESCRIBE TABLE ITAB.
IF NUM > SY-TFILL.
MESSAGE I876(ZMSGCLS) WITH 'CAN NOT BEYOND LAST RECORD '.
ELSE.
READ TABLE ITAB INDEX NUM.
ENDIF.
WHEN 'PREV'.
NUM = NUM - 1.
IF NUM < 0.
MESSAGE I973(ZMSGCLS) WITH 'UR IN FIRST RECORD'.
ELSE.
READ TABLE ITAB INDEX NUM.
ENDIF.
WHEN 'FIRST'.
NUM = 1.
READ TABLE ITAB INDEX NUM.
WHEN 'LAST'.
DESCRIBE TABLE ITAB.
NUM = SY-TFILL.
READ TABLE ITAB INDEX NUM.
WHEN 'EXIT'.
LEAVE PROGRAM.
ENDCASE.
ENDMODULE.
8th FEB
PBO IS RAISE WHEN EVER THE SCREEN IS LOADING FOR THE FIRST TIME
AND ALSO RAISED WHEN EVER ACTION IS PERFORMED ON PAI.
PBO IS USED TO SET MENUS AND FUNCTION KEYS FOR THE MODULE
POOL PROGRAMMING.
9TH FEB
TABSTRIPS : IS A CONTROL IN ABAP TO ATTACH OTHER SUBSCREENS
MM01 :
MASTERDATA INFO :
23 SUB SCREEN INFO
SYNTAX:
CONTROLS <TB_STR> TYPE TABSTRIP.
1) CREATE MPP.
2) CREATE MAIN SCREEN ATTACH TABSTRIP CONTROL, NAME THE
COMPONENT ( TBSTR ) AND NUMBER OF TABS REQUIRED ON TABSTRIP.
3) ON TOP OF TABSTRIP ATTACH SUBSCREEN AREA COMPONENT AND NAME
THE SUBSCREEN AREA( SUB1 )
4) SET TABSTRIP BUTTON PROPERTY ( NAME , LABEL , FCT CODE AND REF
FIELD [ NAME OF SUBSCREEN AREA ] , IF REQUIRED ADD OTHER
COMPOMENTS
5) DEFINE OKCODE IN ELEMENT LIST.
6) BASED ON NUMBER OF TAB BUTTON ON TABSTRIP CREATE SUBSCREENS
,
RIGHT CLICK ON SCREEN -> CREATE -> ENTER SCREEN NUMBER -> SET
SUBSCREEN PROPERTY -> SHORT TEXT -> ADD SCREEN COMPONENTS.
7) DECLARE THE FIELDS IN TOP INCLUDE FILE
8) DECLARE CALL SUBSCREEN IN PBO EVENT AND ALSO GENERATE PAI
CODE.
9) SAVE AND ACTIVATE ALL PROGRAMS -> CREATE TCODE -> EXECUTE.
1) TYPE-POOLS
2) LOV'S ( LIST OF VALUES ) : ADDING DROP DOWN FACILITY
3) TABLE CONTROL
10TH FEB
TABLE CONTROL IS A COMPONENT USED IN MPP'S TO DIPLAY THE DATA
OF INTERNAL TABLE ON SCREEN IT SELECT. IT IS USED TO FETCH DATA
FROM DATA BASE TABLES AND ALSO ALLOWS MODIFICATION ON THE
CONTROL TO PERFORM DML OPERATIONS.
CODING :
1) TOP INCLUDE FILE
DATA : ITAB LIKE MARA OCCURS 0 WITH HEADER LINE.
DATA : CUR TYPE I.
CONTROLS TBCL TYPE TABLEVIEW USING SCREEN 100.
DATA : OKCODE LIKE SY-UCOMM.
3) PAI CODE.
MODULE USER_COMMAND_0100 INPUT.
CASE OKCODE.
WHEN 'FETCH'.
SELECT * FROM MARA INTO TABLE ITAB.
DESCRIBE TABLE ITAB.
TBCL-LINES = SY-TFILL.
WHEN 'EXIT'.
LEAVE PROGRAM.
ENDCASE.
ENDMODULE.
PAI CODE.
LOOP AT ITAB.
MODULE MOVEDATA.
ENDLOOP.
MODULE USER_COMMAND_0100.
PAI :
WHEN 'MODI'.
LOOP AT ITAB1.
MODIFY MARA FROM ITAB1.
ENDLOOP.
LOOP AT ITAB.
MODULE MOVEDATA.
ENDLOOP.
MODULE USER_COMMAND_0100.
3) PAI CODE.
CASE OKCODE.
WHEN 'FETCH'.
SELECT * FROM MARA INTO TABLE ITAB.
DESCRIBE TABLE ITAB.
TBCL-LINES = SY-TFILL.
WHEN 'EXIT'.
LEAVE PROGRAM.
WHEN 'MODI'.
* LEAVE TO LIST-PROCESSING AND RETURN TO SCREEN 100.
* LOOP AT ITAB1.
*WRITE : / ITAB1-MATNR , ITAB1-MBRSH , ITAB1-MTART, ITAB1-MEINS.
* ENDLOOP.
LOOP AT ITAB1.
MODIFY MARA FROM ITAB1.
ENDLOOP.
SELECT * FROM MARA INTO TABLE ITAB.
ENDCASE.
ENDMODULE.
12TH FEB
WHEN EVER THE LIST BOX IS ADDED FOR INPUT FIELDS, ABAPER HAS TO
ADD THE VALUES IN TO THE LISTBOX FIELD FROM PBO CODE.
TYPES:
BEGIN OF VRM_VALUE,
KEY(40) TYPE C,
TEXT(80) TYPE C,
END OF VRM_VALUE,
VRM_VALUES TYPE VRM_VALUE OCCURS 0.
VRM_SET_VALUES
EXPORING
ID = '
VALUES = ITAB.
ITAB'S :
INDEXED INTERNAL TABLES NON -INDEX ITAB
NON-INDEX.
HASHED INTERNAL TABLES.
VRM_VALUE
KEY(40)
TEXT(80)
WA-KEY=''.
WA-TEXT= ''.
APPEND WA TO ITAB.
1) TOP INCLUDE .
TYPE-POOLS VRM.
IF CNT = 0.
SELECT BUKRS INTO TABLE CC FROM T001.
CNT = 10.
LOOP AT CC.
WA-KEY = CC-BUKRS
WA-TEXT = CC-BUKRS.
APPEND WA TO ITAB.
ENDLOOP.
CALL FUNCTION 'VRM_SET_VALUES'
EXPORTING
ID = 'IO1'
VALUES = ITAB.
ENDIF.
ENDMODULE.
MODULE USER_COMMAND_0100 INPUT.
LEAVE PROGRAM.
ENDMODULE.
IF CNT = 0.
SELECT * FROM <> INTO
CNT = 10.
ENDIF.
WHAT IS OBJECT?
1) THINGS WE CAN SEE AND TOUCH
2) AN ENTITY WHICH IDENTIFIES ENVIRONEMENT
TECH DEF:
INSTANCE OF A CLASS IS CALLED AS AN OBJECT.
VARIABLE : OBJECT
class <name>
{
public:
private:
protected:
};
class is a user defined data type , in any language where programmer has to set
class behaviour.
EXAMPLE
ABS( SUM )
IF SUM < 0.
DATA STR(10) TYPE C.
MOVE SUM TO STR.
CONCATENEATE '-' STR TO STR.
ELSE.
MOVE SUM TO STR.
ENDIF.
what is the name of table used to store sales organization details for a company code.
query return number of org details for the requirements.
fields
XD01: IS THE TCODE FOR CUSTOMER MASTER CRETION.
SALES ORGANIZATION:
SALES GROUPS
SELES PERONS
CUSTOMERS
KNA1 : ( FIELDS )
1) Implementation Times
Company Requirements
2) Documentation
Maintainace : what is the table,
AS THIS NOT EXISTING IN SAP, THEN CREATED AS SCREE USING MPP ....
PROJECT :
SAP HAS BUILT IN REPORTS, BUT THESE ARE NOT MATCHING FOR MY
REQUIREMENTS SO , MY TECHNICAL CONSTULTENT ASKED TO
DEVELOPME THE CODE
1) REPORTS
2) BDC
3) SAPSCRIPT AND SMARTFORMS
4) MPP'S
5) CROSS APPLICATIONS.
16TH FEB
PROGRAM TEST.
DATA: OK_CODE LIKE SY-UCOMM,
GT_SFLIGHT TYPE TABLE OF SFLIGHT,
G_CONTAINER TYPE SCRFNAME VALUE
'BCALV_GRID_DEMO_0100_CONT1',
GRID1 TYPE REF TO CL_GUI_ALV_GRID,
G_CUSTOM_CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER.
*---------------------------------------------------------------------*
* MAIN *
*---------------------------------------------------------------------*
*---------------------------------------------------------------------*
* MODULE PBO OUTPUT *
*---------------------------------------------------------------------*
MODULE PBO OUTPUT.
SET PF-STATUS 'MAIN100'.
IF G_CUSTOM_CONTAINER IS INITIAL.
CREATE OBJECT G_CUSTOM_CONTAINER
EXPORTING CONTAINER_NAME = G_CONTAINER.
CREATE OBJECT GRID1
EXPORTING I_PARENT = G_CUSTOM_CONTAINER.
CALL METHOD GRID1->SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING I_STRUCTURE_NAME = 'SFLIGHT'
CHANGING IT_OUTTAB = GT_SFLIGHT.
ENDIF.
ENDMODULE.
*---------------------------------------------------------------------*
* MODULE PAI INPUT *
*---------------------------------------------------------------------*
MODULE PAI INPUT.
* to react on oi_custom_events:
call method cl_gui_cfw=>dispatch.
CASE OK_CODE.
WHEN 'EXIT'.
PERFORM EXIT_PROGRAM.
WHEN OTHERS.
* do nothing
ENDCASE.
CLEAR OK_CODE.
ENDMODULE.
*---------------------------------------------------------------------*
* FORM EXIT_PROGRAM *
*---------------------------------------------------------------------*
FORM EXIT_PROGRAM.
* CALL METHOD G_CUSTOM_CONTAINER->FREE.
* CALL METHOD CL_GUI_CFW=>FLUSH.
LEAVE PROGRAM.
ENDFORM.
Requirements:
classes
1) CL_GUI_CUSTOM_CONTAINER
2) CL_GUI_ALV_GRID
TOP INCLUDE
3)
CREATE OBJECT MYCTRL
EXPORTING
CONTAINER_NAME = 'CUSTCTRL'.
5) SELECT THE DATA FROM DATA BASE TABLE INTO INTERNAL TABLE TO
POPULATE DATA TO GRID CONTROL.
TYPE-POOLS cndp.
***********************************************************************
*
* CLASS c_event_receiver
* DEFINITION
***********************************************************************
*
class c_event_receiver definition.
* The class is used to test the events raised by the cl_gui_picture
* class
public section.
methods event_handler_picture_dblclick
for event picture_dblclick of cl_gui_picture
importing mouse_pos_x mouse_pos_y sender.
methods event_handler_context_menu
for event context_menu of cl_gui_picture
importing sender.
methods event_handler_context_menu_sel
for event context_menu_selected of cl_gui_picture
importing fcode sender.
endclass.
***********************************************************************
*
* DATA
***********************************************************************
*
data function like sy-ucomm. " OK-Code field in screen 200
data url type cndp_url. " URL-field in screen 200
data url2 type cndp_url. " URL-field in screen 200
data picture_control_1 type ref to cl_gui_picture.
data picture_control_2 type ref to cl_gui_picture.
data container_1 type ref to cl_gui_custom_container.
data container_2 type ref to cl_gui_custom_container.
data event_receiver type ref to c_event_receiver.
data event_tab type cntl_simple_events.
data event_tab_line type cntl_simple_event.
data return type i.
***********************************************************************
*
* PBO
* before_output
***********************************************************************
*
module before_output output.
set pf-status 'MAIN0001'.
IF PICTURE_CONTROL_1 IS INITIAL.
* Create controls
create object container_1
exporting container_name = 'PICTURE_CONTROL_1'.
create object container_2
exporting container_name = 'PICTURE_CONTROL_2'.
* Create the event_receiver object and set the handlers for the events
* of the picture controls
create object event_receiver.
set handler event_receiver->event_handler_picture_dblclick
FOR PICTURE_CONTROL_1.
set handler event_receiver->event_handler_context_menu
FOR PICTURE_CONTROL_1.
set handler event_receiver->event_handler_context_menu_sel
FOR PICTURE_CONTROL_1.
set handler event_receiver->event_handler_picture_dblclick
FOR PICTURE_CONTROL_2.
set handler event_receiver->event_handler_context_menu
FOR PICTURE_CONTROL_2.
set handler event_receiver->event_handler_context_menu_sel
FOR PICTURE_CONTROL_2.
* Set 3D Border
CALL METHOD PICTURE_CONTROL_1->SET_3D_BORDER
exporting border = 1.
CALL METHOD PICTURE_CONTROL_2->SET_3D_BORDER
exporting border = 1.
* Load the picture by using the url generated by the data provider.
if sy-subrc = 0.
CALL METHOD PICTURE_CONTROL_1-
>LOAD_PICTURE_FROM_URL_ASYNC
exporting url = url.
endif.
* load image
if sy-subrc = 0.
CALL METHOD PICTURE_CONTROL_2-
>LOAD_PICTURE_FROM_URL_async
exporting url = url2.
endif.
endif.
endmodule.
***********************************************************************
*
* PAI
* after_input
***********************************************************************
*
module after_input input.
case function.
* At the end of the program destroy the control
when 'BACK'.
CALL METHOD container_1->FREE.
CALL METHOD container_2->FREE.
leave to screen 0.
***********************************************************************
*
* CLASS c_event_receiver
* METHOD event_handler_picture_dblclick
***********************************************************************
*
METHOD EVENT_HANDLER_PICTURE_DBLCLICK.
* for event picture_dblclick of c_picture_control
* importing mouse_pos_x mouse_pos_y.
DATA pos_x(5) type c.
DATA pos_y(5) type c.
pos_x = mouse_pos_x.
pos_y = mouse_pos_y.
IF SENDER = PICTURE_CONTROL_1.
MESSAGE I000(0K) WITH
'DoubleClick' 'Upper Picture' POS_X POS_Y. "#EC NOTEXT
else.
MESSAGE I000(0K) WITH
'DoubleClick' 'Lower Picture' POS_X POS_Y. "#EC NOTEXT
endif.
endmethod.
***********************************************************************
*
* CLASS c_event_receiver
* METHOD event_handler_context_menu
***********************************************************************
*
METHOD EVENT_HANDLER_CONTEXT_MENU.
data menu type ref to cl_ctmenu.
create object menu.
call method menu->ADD_FUNCTION exporting
fcode = text-001
TEXT = TEXT-001.
call method menu->ADD_FUNCTION exporting
FCODE = TEXT-002
TEXT = TEXT-002.
call method menu->ADD_FUNCTION exporting
FCODE = TEXT-003
TEXT = TEXT-003.
call method menu->ADD_FUNCTION exporting
FCODE = TEXT-004
TEXT = TEXT-004.
call method menu->ADD_FUNCTION exporting
FCODE = TEXT-005
TEXT = TEXT-005.
***********************************************************************
*
* CLASS c_event_receiver
* METHOD event_handler_context_menu_sel
***********************************************************************
*
METHOD EVENT_HANDLER_CONTEXT_MENU_sel.
DATA DISPLAY_MODE TYPE I.
IF FCODE = TEXT-001.
DISPLAY_MODE = CL_GUI_PICTURE=>DISPLAY_MODE_NORMAL.
ENDIF.
IF FCODE = TEXT-002.
DISPLAY_MODE = CL_GUI_PICTURE=>DISPLAY_MODE_STRETCH.
ENDIF.
IF FCODE = TEXT-003.
DISPLAY_MODE = CL_GUI_PICTURE=>DISPLAY_MODE_FIT.
ENDIF.
IF FCODE = TEXT-004.
DISPLAY_MODE =
CL_GUI_PICTURE=>DISPLAY_MODE_NORMAL_CENTER.
ENDIF.
IF FCODE = TEXT-005.
DISPLAY_MODE = CL_GUI_PICTURE=>DISPLAY_MODE_FIT_CENTER.
ENDIF.
CALL METHOD SENDER->SET_DISPLAY_MODE
EXPORTING DISPLAY_MODE = DISPLAY_MODE.
endmethod.
endclass.
17TH FEB
IF THE MPP ARE GETTING CREATED FROM SE38 THEN OPENS ABAP
EDITOR, IT SELF IS THE TOP INCLUDE AND MAIN CODING AREA.
CLEAR SAVE_OKCODE.
CNDP :
EXAMPLE CODE.
TYPE-POOLS CNDP.
DATA : OKCODE LIKE SY-UCOMM.
DATA : MYURL TYPE CNDP_URL.
DATA : MYCTRL TYPE REF TO CL_GUI_CUSTOM_CONTAINER,
MYPICTURE TYPE REF TO CL_GUI_PICTURE.
ENDMODULE.
CASE OKCODE.
WHEN 'EXIT'.
LEAVE PROGRAM.
ENDCASE.
ENDMODULE.
18TH FEB
REPORT ZDEMO_SCR_VALIDATIONS.
PARAMETERS : NAME(20) TYPE C OBLIGATORY.
WRITE : NAME.
SCREEN-GROUP1 = 'G1'
SCREEN-REQUIRED = 1. ( MANDATORY )
SCREEN-REQUIRED = 0. ( OPTIONAL )
LOOP AT SCREEN.
ENDLOOP.
SCREEN-ACTIVE = 1. ( HIDE )
SCREEN=ACTIVE = 0. ( SHOW )
MPP'S
PROCESS ON VALUE-REQUEST. ( F4)
PROCESS ON HELP-REQUEST. (F1)
TABLE CONTROL :
SE11 -> SELECT SEARCH HELP OBJECT -> NAME THE SEARCH HELP ->
CREATE -> SELECT ELEMENTORY SEARCH HELP -> OK -> SHORT TEXT ->
NAME THE TABLE -> SPECIFY THE COLUMN -> SPECIFY IMP, EXP, LPOS AND
SPOS FIELD VALUES -> SAVE -> ACTIVATE THE SEARCH HELP.
THE DATA ELEMENTS ASSIGNED WITH SEARCH HELPS CAN ASSIGN "F4"
FUNCTIONALITY TO I/O FIELDS AUTOMATICALLY FROM SE38 REPORTS.