SAP (Systems Applications and Products in Data Processing).
- BAAN
- RAMCO
- PEOPLE SOFT
- ORACLE APPS
- SAP
- It provides predefined tables.
- It provides predefined application programs.
- No need to creating & maintaining tables.
- No need to write the programs for fetches the data from database.
- It is tightly (or) closely integrated across all the modules (or) departments.
- SAP is platform independent irrespective of all Operating System (Windows, Linux, UNIX etc...)
- SAP is developed in multi languages as well as multicurrencies.It is used to communicate with international customers and vendors.
- SAP is a ready made product, which is developed in 1972 with five IBM employees in Germany. Customization is done within a minimum effort.
- SAP contains Cross Applications, so that exchange the data from one system to another system.
INTRODUCTION
- ABAP: Advanced Business Application Programming Language.
- It is a 4th generation language.
- ABAP is not a case sensitive.
- Based on this language they developed remaining modules (MM, SD,FI……).
- ABAP is not a syntax language; it is a business oriented language.
- Source code of an ABAP consists of statements as well as comment.
- A statement is a combination of Operators, Operands, and Variables &
Keywords:
- If you want to comment the entire line then we place '*' at the first Column of the line. E.g - * Addition of two numbers.
- If you want to comment the part of the line then we use ". E.g.: c = a + b "Logic.
- Integer I
- Float F
- Packed decimal P
- Char C and Numeric Char N
- Dates D
- Times T
Basic Program In C Programming Language:
Basic Program In ABAP.
Steps to create the program:-
- Execute SE38 (ABAP Editor).
- Provide program name starts with ―Y or Z. E.g. Z_NSN_ADDITION.
- Click on create
- Provide title – type is executable – i.e., we can execute the program without depends on any other program.
- Click on save (enter).
- Click on local object (it means our program will be saved on $TMP Development Class or Package which is created by SAP) OR you can also create your own package using SE21 tcode.
- Save the program (ctrl+s).
- Check the program (ctrl+F2).
- Activate the program (ctrl+F3).
- Test the program (F8).
- Back (F3).
In C programming
In Abap:
- SQL is the database dependent where as SAP is the database independent. So that, SQL does not support SAP.
- Open sql support SAP, because open sql is database independent.
- Open sql does not support DDL, so that we can‘t create tables with simple statements like oracle.
- Open sql supports DDIC (Data Dictionary) which is used to create the tables as well as alter the tables in SAP.
- Data Dictionary is the central source of the database management system.
- The main functionality of the data dictionary is to create the tables as well as altering the tables.
- There are two ways of creating the tables by using DDIC. They are :
- Execute SE11 (DDIC).
- Make sure select the radio button database table.
- Provide table name.
- Click on create.
- Provide short description.
- Provide delivery class 'A'.
- Select the table maintenance allowed.
- Click on fields tab – click on predefined type.
- Provide the field names, data type, length & short description.
- Each table must have atleast one field as a primary field that should be the character data type & that should be first field in the table.
- Save the table. (Ctrl + s).
- Check the table (ctrl + F3).
- Click on technical settings
- Provide data class (APPL0, APPL1 …).
- Select the size category (0).
- Save the technical settings.
- Come back.
- Activate the table.
Hide is the keyword which maintains the copy of the previous list with output line numbers & their contents. When ever the user double clicks on any record of any list at that time at line-selection event will be triggered & list index is incremented by one & that particular record will be moving from hide area to work area.
Based on the work area we retrieve the data for the next list.
Note:-
Hide always maintain after the write statement.
Object:-
To display the company codes, company names & cities in the basic list, when ever the user clicks on any record then we display the customer under that company in the first secondary list. When ever the user clicks on any record in the first secondary list then we display the customer list in the second secondary list.
Program:-
DATA: BEGIN OF WA_T001,
BUKRS LIKE T001-BUKRS,
BUTXT LIKE T001-BUTXT,
ORT01 LIKE T001-ORT01,
END OF WA_T001.
DATA IT_T001 LIKE TABLE OF WA_T001.
DATA: BEGIN OF WA_KNB1,
BUKRS LIKE KNB1-BUKRS,
KUNNR LIKE KNB1-KUNNR,
AKONT LIKE KNB1-AKONT,
END OF WA_KNB1.
DATA IT_KNA1 LIKE TABLE OF WA_KNA1.
DATA: BEGIN OF WA_KNA1,
KUNNR LIKE KNA1-KUNNR,
NAME1 LIKE KNA1-NAME1,
ORT01 LIKE KNA1-ORT01,
END OF WA_KNA1.
DATA IT_KNA1 LIKE TABLE OF WA_KNA1.
SELECT BUKRS BUTXT ORT01 FROM T001 INTO TABLE IT_T001.
LOOP AT IT_T001 INTO WA_T001.
WRITE: / WA_T001-BUKRS, WA_T001-BUTXT, WA_T001- ORT01.
HIDE: WA_T001-BUKRS, WA_T001-BUTXT, WA_T001-ORT01. ENDLOOP.
AT LINE-SELECTION.
IF SY-LSIND = '1'.
SELECT BUKRS KUNNR AKONT FROM KNB1 INTO TABLE IT_KNB1 WHERE BUKRS =
WA_T001-BUKRS.
LOOP AT IT_KNB1 INTO WA_KNB1.
WRITE: / WA_KNB1-BUKRS, WA_KNB1-KUNNR, WA_KNB1- AKONT.
HIDE: WA_KNB1-BUKRS, WA_KNB1-KUNNR, WA_KNB1- AKONT.
ENDLOOP.
ELSEIF SY-LSIND = '2'.
SELECT KUNNR NAME1 ORT01 FROM KNA1 INTO TABLE IT_KNA1 WHERE KUNNR = WA_KNB1-KUNNR.
LOOP AT IT_KNA1 INTO WA_KNA1.
WRITE: / WA_KNA1-KUNNR, WA_KNA1-NAME1, WA_KNA1- ORT01.
ENDLOOP.
ENDIF.
Assignment:-
To display the purchasing document numbers, document types, vendor numbers in the basic list, when ever the user clicks on any record then we display the item details (EBELN, EBELP, MENGE, MEINS & NETPR) in the first secondary list.
Program:-
DATA: BEGIN OF WA_EKKO,
EBELN LIKE EKKO-EBELN,
BSART LIKE EKKO-BSART,
LIFNR LIKE EKKO-LIFNR,
END OF WA_EKKO.
DATA IT_EKKO LIKE TABLE OF WA_EKKO.
DATA: BEGIN OF WA_EKPO,
EBELN LIKE EKPO-EBELN,
EBELP LIKE EKPO-EBELP,
MENGE LIKE EKPO-MENGE,
MEINS LIKE EKPO-MEINS,
NETPR LIKE EKPO-NETPR,
END OF WA_EKPO.
DATA IT_EKPO LIKE TABLE OF WA_EKPO.
SELECT EBELN BSART LIFNR FROM EKKO INTO TABLE IT_EKKO.
LOOP AT IT_EKKO INTO WA_EKKO.
WRITE: / WA_EKKO-EBELN, WA_EKKO-BSART, WA_EKKO LIFNR.
HIDE: / WA_EKKO-EBELN, WA_EKKO-BSART, WA_EKKO LIFNR.
ENDLOOP.
AT LINE-SELECTION.
IF SY-LSIND = 1.
SELECT EBELN EBELP MENGE MEINS NETPR INTO TABLE IT_EKPO WHERE EBELN IN WA_EKKO-EBELN.
LOOP AT IT_EKPO INTO WA_EKPO.
WRITE: / WA_EKPO-EBELN, WA_EKPO-EBELP, WA_EKPO MENGE, WA_EKPO-MEINS, WA_EKPO-NETPR.
ENDLOOP.
ENDIF.
Note:- 'CONVERSION_EXIT_ALPHA_INPUT' is the functional module which is used to append zeros to the input variable based on the length of the input variable.
E.g.:
DATA A (5) TYPE C.
A=231.
CONVERSION_EXIT_ALPHA_INPUT
INPUT = A.
OUTPUT = A.
A 00231.
Steps to call the function module:-
Object:-
Based on the given company codes to display the company codes, company names & cities in the basic list, when ever the user clicks on any record then we display the vendors under that company in the first secondary list. When ever the user clicks on any record in the first secondary list then we display the vendor details in the second secondary list by using 'SY-LISEL'.
Program:-
DATA V1 LIKE T001-BUKRS.
SELECT-OPTIONS S_BUKRS FOR V1.
DATA: BEGIN OF WA_T001,
BUKRS LIKE T001-BUKRS,
BUTXT LIKE T001-BUTXT,
ORT01 LIKE T001-ORT01,
END OF WA_T001.
DATA IT_T001 LIKE TABLE OF WA_T001.
DATA: BEGIN OF WA_LFB1,
LIFNR LIKE LFB1-LIFNR,
BUKRS LIKE LFB1-BUKRS,
AKONT LIKE LFB1-AKONT,
END OF WA_LFB1.
DATA IT_LFB1 LIKE TABLE OF WA_LFB1.
DATA: BEGIN OF WA_LFA1,
LIFNR LIKE LFA1-LIFNR,
NAME1 LIKE LFA1-NAME1,
ORT01 LIKE LFA1-ORT01,
END OF WA_LFA1.
DATA IT_LFA1 LIKE TABLE OF WA_LFA1.
SELECT BUKRS BUTXT ORT01 FROM T001 INTO TABLE IT_T001 WHERE BUKRS IN S_BUKRS.
LOOP AT IT_T001 INTO WA_T001.
WRITE: / WA_T001-BUKRS, WA_T001-BUTXT, WA_T001- ORT01.
ENDLOOP.
AT LINE-SELECTION.
IF SY-LSIND = '1'.
SELECT LIFNR BUKRS AKONT FROM LFB1 INTO TABLE IT_LFB1 WHERE BUKRS =SY-LISEL+0(4).
LOOP AT IT_LFB1 INTO WA_LFB1.
WRITE: / WA_LFB1-LIFNR, WA_LFB1-BUKRS, WA_LFB1- AKONT.
ENDLOOP.
ELSEIF SY-LSIND = '2'.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' EXPORTING
INPUT = SY-LISEL+5(10)
IMPORTING
OUTPUT = SY-LISEL+5(10).
SELECT LIFNR NAME1 ORT01 FROM LFA1 INTO TABLE IT_LFA1 WHERE LIFNR = SY-LISEL+5(10).
LOOP AT IT_LFA1 INTO WA_LFA1.
WRITE: / WA_LFA1-LIFNR, WA_LFA1-NAME1, WA_LFA1- ORT01.
ENDLOOP.
ENDIF.
∙ In the above two techniques generates the next list based on the line selection, not based on field-selection.
∙ If you want to generate the next list based on the field selection then we go for Get cursor technique.
Syntax:-
Get cursor field <variable 1> value <variable 2>.
Note:-
Get cursor technique returns the field name as well as field value which is selected by the user.
Assignment:-
Based on the given company codes to display the company codes, company names, cities in the basic list, if the user clicks on company code then we display the purchasing document header details in the first secondary list. If the user clicks on any record then we display the item details (EBELN, EBELP, MENGE, MEINS & NETPR) in the first secondary list by using get cursor technique.
Program:-
DATA V1 LIKE T001-BUKRS.
SELECT-OPTIONS S_BUKRS FOR V1.
DATA: V2 (15),
V3 LIKE T001-BUKRS.
DATA: BEGIN OF WA_T001,
BUKRS LIKE T001-BUKRS,/O SE38
BUTXT LIKE T001-BUTXT,
ORT01 LIKE T001-ORT01,
END OF WA_T001.
DATA IT_T001 LIKE TABLE OF WA_T001.
DATA: BEGIN OF WA_EKKO,
EBELN LIKE EKKO-EBELN,
BSART LIKE EKKO-BSART,
BUKRS LIKE EKKO-BUKRS,
END OF WA_EKKO.
DATA IT_EKKO LIKE TABLE OF WA_EKKO.
DATA: BEGIN OF WA_EKPO,
EBELN LIKE EKPO-EBELN,
EBELP LIKE EKPO-EBELP,
MENGE LIKE EKPO-MENGE,
MEINS LIKE EKPO-MEINS,
NETPR LIKE EKPO-NETPR,
END OF WA_EKPO.
DATA IT_EKPO LIKE TABLE OF WA_EKPO.
SELECT BUKRS BUTXT ORT01 FROM T001 INTO TABLE IT_T001 WHERE BUKRS IN S_BUKRS.
LOOP AT IT_T001 INTO WA_T001.
WRITE: / WA_T001-BUKRS, WA_T001-BUTXT, WA_T001- ORT01.
ENDLOOP.
AT LINE-SELECTION.
IF SY-LSIND = '1'.
GET CURSOR FIELD V2 VALUE V3.
IF V2 = 'WA_T001-BUKRS'.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' EXPORTING
INPUT = V3
IMPORTING
OUTPUT = V3.
SELECT EBELN BSART BUKRS FROM EKKO INTO TABLE IT_EKKO WHERE BUKRS = V3.
LOOP AT IT_EKKO INTO WA_EKKO.
WRITE: / WA_EKKO-EBELN, WA_EKKO-BSART, WA_EKKO BUKRS.
ENDLOOP.
ELSEIF SY-LSIND = 2.
GET CURSOR FIELD V2 VALUE V3.
ELSEIF V2 = 'WA_EKKO-EBELN'.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' EXPORTING
INPUT = V3
IMPORTING
OUTPUT = V3.
SELECT EBELN EBELP MENGE MEINS NETPR FROM EKPO INTO TABLE IT_EKPO WHERE EBELN = V3.
LOOP AT IT_EKPO INTO WA_EKPO.
WRITE: / WA_EKPO-EBELN, WA_EKPO-EBELP, WA_EKPO MENGE, WA_EKPO-MEINS,
WA_EKPO-NETPR.
ENDLOOP.
ENDIF.
ENDIF.
Working with GUI:- [menu painter]
∙ Menu painter is a tool design the user interface to the program.
∙ The transaction code for menu painter is SE41.
Steps to design our own GUI to the program:-
1. We can design up to 6 menu items in the menu bar.
2. System & help are the default menu items in the menu bar.
3. We can design up to 35 push buttons in the application tool bar.
4. Set PF-status is the event which is used to attach the own GUI to the program.
Syntax:-
Set PF-Status is the event which is used to attach the own GUI to the program.
∙ 'Download' is the function module which is used to download the data from internal table to presentation server (C drive, D drive…).
∙ The input for the above function module is file type=‘DAT‘ & internal table.
E.g.:
DATA V1 LIKE T001-BUKRS.
SELECT-OPTIONS S_BUKRS FOR V1.
DATA: BEGIN OF WA_T001,
BUKRS LIKE T001-BUKRS,
BUTXT LIKE T001-BUTXT,
ORT01 LIKE T001-ORT01,
END OF WA_T001.
DATA IT_T001 LIKE TABLE OF WA_T001.
SELECT BUKRS BUTXT ORT01 FROM T001 INTO TABLE IT_T001 WHERE BUKRS IN S_BUKRS.
LOOP AT IT_T001 INTO WA_T001.
WRITE: / WA_T001-BUKRS, WA_T001-BUTXT, WA_T001- ORT01.
ENDLOOP.
SET PF-STATUS 'STAT'.
AT USER-COMMAND.
IF SY-UCOMM = 'DOWN'.
CALL FUNCTION 'DOWNLOAD'
EXPORTING
FILETYPE = 'DAT'
TABLES
DATA-TAB = IT_T001.
ENDIF.
For All Entries:-
∙ In the real time the maximum program execution tome in fore-ground is '600sec'.
∙ More than two tables join, some times leads to timeout, so we go for 'FOR ALL ENTRIES'.
∙ For all entries pick the data based on 'WHERE' condition first, next it based on 'ON' condition.
Object:-
Based on the given company codes to display the company codes, company names, customer numbers.
Program:-
DATA V1 LIKE T001-BUKRS.
SELECT-OPTIONS S_BUKRS FOR V1.
DATA: BEGIN OF WA_T001,
BUKRS LIKE T001-BUKRS,
BUTXT LIKE T001-BUTXT,
END OF WA_T001.
DATA IT_T001 LIKE TABLE OF WA_T001.
DATA: BEGIN OF WA_KNB1,
BUKRS LIKE KNB1-BUKRS,
KUNNR LIKE KNB1-KUNNR,
END OF WA_KNB1.
DATA IT_KNB1 LIKE TABLE OF WA_KNB1.
DATA: BEGIN OF WA_FINAL,
BUKRS LIKE T001-BUKRS,
KUNNR LIKE KNB1-KUNNR,
BUTXT LIKE T001-BUTXT,
END OF WA_FINAL.
DATA IT_FINAL LIKE TABLE OF WA_FINAL.
SELECT BUKRS BUTXT FROM T001 INTO TABLE IT_T001 WHERE BUKRS IN S_BUKRS.
IF NOT IT_T001 IS INITIAL.
SELECT BUKRS KUNNR FROM KNB1 INTO TABLE IT_KNB1 FOR ALL ENTRIES IN
IT_T001 WHERE BUKRS = IT_T001-BUKRS.
ENDIF.
LOOP AT IT_KNB1 INTO WA_KNB1.
WA_FINAL-BUKRS = WA_KNB1-BUKRS.
WA_FINAL-KUNNR = WA_KNB1-KUNNR.
READ TABLE IT_T001 INTO WA_T001 WITH KEY BUKRS = WA_KNB1-BUKRS.
WA_FINAL-BUTXT = WA_T001-BUTXT.
APPEND WA_FINAL TO IT_FINAL.
CLEAR: WA_FINAL, WA_T001, WA_KNB1.
ENDLOOP.
WRITE: 1(5)'BUKRS', 7(28)'BUTXT', 25(5)'KUNNR'.
SKIP.
LOOP AT IT_FINAL INTO WA_FINAL.
WRITE: / WA_FINAL-BUKRS, WA_FINAL-BUTXT, WA_FINAL KUNNR.
ENDLOOP.
Object:-
Based on the given purchasing document number to display the document number, document type, vendor number, item number & price.
Program:-
DATA V1 LIKE EKKO-EBELN.
SELECT-OPTIONS S_EBELN FOR V1.
DATA: BEGIN OF WA_EKKO,
EBELN LIKE EKKO-EBELN,
BSART LIKE EKKO-BSART,
LIFNR LIKE EKKO-LIFNR,
END OF WA_EKKO.
DATA IT_EKKO LIKE TABLE OF WA_EKKO.
DATA: BEGIN OF WA_LFA1,
LIFNR LIKE LFA1-LIFNR,
NAME1 LIKE LFA1-NAME1,
END OF WA_LFA1.
DATA IT_LFA1 LIKE TABLE OF WA_LFA1.
DATA: BEGIN OF WA_EKPO,
EBELN LIKE EKPO-EBELN,
EBELP LIKE EKPO-EBELP,
NETPR LIKE EKPO-NETPR,
END OF WA_EKPO.
DATA IT_EKPO LIKE TABLE OF WA_EKPO.
DATA: BEGIN OF WA_FINAL,
EBELN LIKE EKKO-EBELN,
BSART LIKE EKKO-BSART,
LIFNR LIKE LFA1-LIFNR,
NAME1 LIKE LFA1-NAME1,
EBELP LIKE EKPO-EBELP,
NETPR LIKE EKPO-NETPR,
END OF WA_FINAL.
DATA IT_FINAL LIKE TABLE OF WA_FINAL.
SELECT EBELN BSART LIFNR FROM EKKO INTO TABLE IT_EKKO WHERE EBELN IN S_EBELN.
IF NOT IT_EKKO IS INITIAL.
SELECT LIFNR NAME1 FROM LFA1 INTO TABLE IT_LFA1 FOR ALL ENTRIES IN
IT_EKKO WHERE LIFNR = IT_EKKO-LIFNR.
SELECT EBELN EBELP NETPR FROM EKPO INTO TABLE IT_EKPO FOR ALL ENTRIES IN
IT_EKKO WHERE EBELN = IT_EKKO-EBELN.
ENDIF.
LOOP AT IT_EKPO INTO WA_EKPO.
WA_FINAL-EBELN = WA_EKPO-EBELN.
WA_FINAL-EBELP = WA_EKPO-EBELP.
WA_FINAL-NETPR = WA_EKPO-NETPR.
READ TABLE IT_EKKO INTO WA_EKKO WITH KEY EBELN = WA_EKPO-EBELN.
WA_FINAL-BSART = WA_EKKO-BSART.
WA_FINAL-LIFNR = WA_EKKO-LIFNR.
READ TABLE IT_LFA1 INTO WA_LFA1 WITH KEY LIFNR = WA_EKKO-LIFNR.
WA_FINAL-LIFNR = WA_LFA1-LIFNR.
WA_FINAL-NAME1 = WA_LFA1-NAME1.
APPEND WA_FINAL TO IT_FINAL.
CLEAR: WA_FINAL, WA_EKKO, WA_EKPO, WA_LFA1. ENDLOOP.
LOOP AT IT_FINAL INTO WA_FINAL.
WRITE: / WA_FINAL-EBELN, WA_FINAL-BSART, WA_FINAL LIFNR, WA_FINAL-NAME1,
WA_FINAL-EBELP, WA_FINAL-NETPR.
ENDLOOP.
Object:-
Based on the given sales document number to display the sales document number, document type, customer number, customer name, item number, material number, material description & net value.
Program:-
INCLUDE YSAI_INCLUDE1.
DATA: BEGIN OF WA_VBAK,
VBELN LIKE VBAK-VBELN,
AUART LIKE VBAK-AUART,
KUNNR LIKE VBAK-KUNNR,
END OF WA_VBAK.
DATA IT_VBAK LIKE TABLE OF WA_VBAK.
DATA: BEGIN OF WA_KNA1,
KUNNR LIKE KNA1-KUNNR,
NAME1 LIKE KNA1-NAME1,
END OF WA_KNA1.
DATA IT_KNA1 LIKE TABLE OF WA_KNA1.
DATA: BEGIN OF WA_VBAP,
VBELN LIKE VBAP-VBELN,
POSNR LIKE VBAP-POSNR,
NETWR LIKE VBAP-NETWR,
MATNR LIKE VBAP-MATNR,
END OF WA_VBAP.
DATA IT_VBAP LIKE TABLE OF WA_VBAP.
DATA: BEGIN OF WA_MAKT,
MATNR LIKE MAKT-MATNR,
MAKTX LIKE MAKT-MAKTX,
END OF WA_MAKT.
DATA IT_MAKT LIKE TABLE OF WA_MAKT.
DATA: BEGIN OF WA_FINAL,
VBELN LIKE VBAK-VBELN,
AUART LIKE VBAK-AUART,
KUNNR LIKE KNA1-KUNNR,
NAME1 LIKE KNA1-NAME1,
POSNR LIKE VBAP-POSNR,
NETWR LIKE VBAP-NETWR,
MATNR LIKE MAKT-MATNR,
MAKTX LIKE MAKT-MAKTX,
END OF WA_FINAL.
DATA IT_FINAL LIKE TABLE OF WA_FINAL.
…………………………………………………….
DATA V1 LIKE VBAK-VBELN.
SELECT-OPTIONS S_VBELN FOR V1.
INCLUDE YSAI_INCLUDE1.
SELECT VBELN AUART KUNNR FROM VBAK INTO TABLE IT_VBAK WHERE VBELN IN S_VBELN.
IF NOT IT_VBAK IS INITIAL.
SELECT KUNNR NAME1 FROM KNA1 INTO TABLE IT_KNA1 FOR ALL ENTRIES IN
IT_VBAK WHERE KUNNR = IT_VBAK-KUNNR.
SELECT VBELN POSNR NETWR MATNR FROM VBAP INTO TABLE IT_VBAP
FOR ALL ENTRIES IN IT_VBAK WHERE VBELN = IT_VBAK VBELN.
ENDIF.
IF NOT IT_VBAP IS INITIAL.
SELECT MATNR MAKTX FROM MAKT INTO TABLE IT_MAKT FOR ALL ENTRIES IN
IT_VBAP WHERE MATNR = IT_VBAP-MATNR. ENDIF.
LOOP AT IT_VBAP INTO WA_VBAP.
WA_FINAL-VBELN = WA_VBAP-VBELN.
WA_FINAL-POSNR = WA_VBAP-POSNR.
WA_FINAL-NETWR = WA_VBAP-NETWR.
WA_FINAL-MATNR = WA_VBAP-MATNR.
READ TABLE IT_VBAK INTO WA_VBAK WITH KEY VBELN = WA_VBAK-VBELN.
WA_FINAL-VBELN = WA_VBAK-VBELN.
WA_FINAL-AUART = WA_VBAK-AUART.
WA_FINAL-KUNNR = WA_VBAK-KUNNR.
READ TABLE IT_KNA1 INTO WA_KNA1 WITH KEY KUNNR = WA_VBAK-KUNNR.
WA_FINAL-KUNNR = WA_KNA1-KUNNR.
WA_FINAL-NAME1 = WA_KNA1-NAME1.
READ TABLE IT_MAKT INTO WA_MAKT WITH KEY MATNR = WA_VBAP-MATNR.
WA_FINAL-MATNR = WA_MAKT-MATNR.
WA_FINAL-MAKTX = WA_MAKT-MAKTX.
APPEND WA_FINAL TO IT_FINAL.
CLEAR: WA_VBAK, WA_VBAP, WA_KNA1, WA_MAKT, WA_FINAL.
ENDLOOP.
LOOP AT IT_FINAL INTO WA_FINAL.
WRITE: / WA_FINAL-VBELN, WA_FINAL-AUART, WA_FINAL KUNNR, WA_FINAL-NAME1, WA_FINAL-POSNR, WA_FINAL NETWR, WA_FINAL-MATNR, WA_FINAL-MAKTX.
ENDLOOP.
Object:-
Based on the given materials to display the material number, material type, plant number, plant name & material description by using FOR ALL ENTRIES.
Program:-
DATA: BEGIN OF WA_MARA,
MATNR LIKE MARA-MATNR,
MTART LIKE MARA-MTART,
END OF WA_MARA.
DATA IT_MARA LIKE TABLE OF WA_MARA.
DATA: BEGIN OF WA_MARC,
MATNR LIKE MARC-MATNR,
WERKS LIKE MARC-WERKS,
END OF WA_MARC.
DATA IT_MARC LIKE TABLE OF WA_MARC.
DATA: BEGIN OF WA_T001W,
WERKS LIKE T001W-WERKS,
NAME1 LIKE T001W-NAME1,
END OF WA_T001W.
DATA IT_T001W LIKE TABLE OF WA_T001W.
DATA: BEGIN OF WA_MAKT,
MATNR LIKE MAKT-MATNR,
MAKTX LIKE MAKT-MAKTX,
END OF WA_MAKT.
DATA IT_MAKT LIKE TABLE OF WA_MAKT.
DATA: BEGIN OF WA_FINAL,
MATNR LIKE MARA-MATNR,
MTART LIKE MARA-MTART,
WERKS LIKE MARC-WERKS,
NAME1 LIKE T001W-NAME1,
MAKTX LIKE MAKT-MAKTX,
END OF WA_FINAL.
DATA IT_FINAL LIKE TABLE OF WA_FINAL.
…………………………………………………..
DATA V1 LIKE MARA-MATNR.
SELECT-OPTIONS S_MATNR FOR V1.
INCLUDE YSAI_INCLUDE2_1.
SELECT MATNR MTART FROM MARA INTO TABLE IT_MARA WHERE MATNR IN S_MATNR.
IF NOT IT_MARA IS INITIAL.
SELECT MATNR WERKS FROM MARC INTO TABLE IT_MARC FOR ALL ENTRIES IN
IT_MARA WHERE MATNR = IT_MARA-MATNR.
SELECT WERKS NAME1 FROM T001W INTO TABLE IT_T001W FOR ALL ENTRIES IN
IT_MARC WHERE WERKS = IT_MARC-WERKS.
SELECT MATNR MAKTX FROM MAKT INTO TABLE
IT_MAKT FOR ALL ENTRIES IN
IT_MARC WHERE MATNR = IT_MARC-MATNR.
ENDIF.
LOOP AT IT_MARC INTO WA_MARC.
WA_FINAL-MATNR = WA_MARC-MATNR.
WA_FINAL-WERKS = WA_MARC-WERKS.
READ TABLE IT_MARA INTO WA_MARA WITH KEY MATNR = WA_MARC-MATNR.
WA_FINAL-MTART = WA_MARA-MTART.
READ TABLE IT_T001W INTO WA_T001W WITH KEY WERKS = WA_T001W-WERKS.
WA_FINAL-NAME1 = WA_T001W-NAME1.
READ TABLE IT_MAKT INTO WA_MAKT WITH KEY MATNR = WA_MARC-MATNR.
WA_FINAL-MAKTX = WA_MAKT-MAKTX.
APPEND WA_FINAL TO IT_FINAL.
ENDLOOP.
LOOP AT IT_FINAL INTO WA_FINAL.
WRITE: / WA_FINAL-MATNR, ‗‘, WA_FINAL-MTART, ‗‘, WA_FINAL-WERKS, ‗‘, WA_FINAL-NAME1, ‗‘, WA_FINAL MAKTX.
ENDLOOP.
Modularization techniques:-
Modularization techniques are used to divide the business processing logic in to reusable block of statements.
∙ Modularization techniques are two step procedure
1. Defining the reusable block.
2. Calling the reusable block.
There are two types of modularizing techniques. They are:
Include:-
We cannot execute an include program independently, where as the same include program can be included in any number of executable program.
Advantage:-
This is used to improve the readability of the program.
Note:-
In the real time we use include programs for declarations.
Steps to create/define the include program:-
∙ Execute SE38.
∙ Provide your include program name.
∙ Click on create.
∙ Provide title.
∙ Provide type as – include.
∙ Save – local object.
E.g.:
DATA: BEGIN OF WA_T001,
BUKRS LIKE T001-BUKRS,
BUTXT LIKE T001-BUTXT,
END OF WA_T001.
DATA IT_T001 LIKE TABLE OF WA_T001.
∙ Save.
∙ Check.
∙ Activate.
Syntax of calling the include program in any executable program:-
Include <include name>.
E.g.:
Include YSAI_INCLUDE.
SELECT BUKRS BUTXT ORT01 FROM T001 INTO TABLE IT_T001.
LOOP AT IT_T001 INTO WA_T001.
WRITE: / WA_T001-BUKRS, WA_T001-BUTXT, WA_T001- ORT01.
ENDLOOP.
Macros:- If you want to access the block of statements more than once in a program, then we place those statements in the definition of the macro.
∙ Macros can take up to 9 place holders. (&1, &2……. &9).
Syntax of defining the Macro:-
Note:-
In the macros, definition should be the first & the calling should be the next.
E.g.:
1. DATA RESULT TYPE I.
DEFINE ZADD SUBROUTINE.
RESULT = &1 + &2.
END-OF-DEFINITION.
ADD 5 20.
WRITE RESULT.
2. DATA RESULT TYPE I.
DEFINE ZCAL.
RESULT = &1 &2 &3.
END-OF-DEFINITION.
ZCAL 15 * 10.
WRITE RESULT.
ZCAL 15 + 10.
WRITE RESULT.
Multiple records using macros:-
DATA: BEGIN OF EMP,
EID (10) TYPE C,
ENAME (25) TYPE C,
EADD (35) TYPE C,
END OF EMP.
DATA EMP1 LIKE TABLE OF EMP.
DEFINE FILL.
EMP-EID = &1.
EMP-ENAME = &2.
EMP-EADD = &3.
APPEND EMP TO EMP1.
END-OF-DEFINITION.
FILL '1' 'SPRAO' 'SANATH NAGAR'.
FILL '2' 'RAJ' 'BEGUMPET'.
FILL '1' 'SANDEEP' 'BEGUMPET'.
LOOP AT EMP1 INTO EMP.
WRITE: / EMP-EID, EMP-ENAME, EMP-EADD.
ENDLOOP.
Note:-
We cannot nest the definition of the macro (with in a macro we can‘t write another macro).
∙ In the real time macros are used in HR ABAP (HR ABAP use INFOTYPE).
Sub-Routine:-
Sub-routines are procedures that can be defined in any ABAP program and call from the same/other ABAP program.
Syntax of defining the Subroutine:-
Note:- 1. In the subroutine calling should be the first & definition should be the next. 2. We cannot place any executable statement after the definition of the subroutine.
DATA RESULT TYPE I.
PARAMTER: P_INPUT1 TYPE I,
P_INPUT2 TYPE I.
PERFORM ADD USING P_INPUT1 P_INPUT2 CHANGING
RESULT.
WRITE RESULT.
FORM ADD USING A TYPE I B TYPE I CHANGING C TYPE I.
C = A + B.
ENDFORM.
E.g.:
DATA: BEGIN OF WA_T001,
BUKRS LIKE T001-BUKRS,
BUTXT LIKE T001-BUTXT,
END OF WA_T001.
DATA IT_T001 LIKE TABLE OF WA_T001.
SELECT BUKRS BUTXT ORT01 FROM T001 INTO TABLE
IT_T001.
PERFORM READ-DATA USING IT_T001 4 CHANGING
WA_T001.
WRITE: / WA_T001-BUKRS, WA_T001-BUTXT, WA_T001-
ORT01.
FORM READ-DATA USING A LIKE IT_T001 B TYPE I
CHANGING C LIKE WA_T001.
READ TABLE A INTO C INDEX B.
ENDFORM.
Note:-
There are two types of Subroutines. They are:
1. Internal subroutines. 2. External subroutines.
- Internal subroutine is nothing but the definition of subroutine as well as the calling of subroutine in the same program.
- External subroutine is nothing but the definition of subroutine in one program &
the calling of subroutine in another program.
EXIT is used to terminate the subroutine unconditionall. - CHECK is used to terminate the subroutine conditionally.
Differences between Macros & Subroutines:-
Global data:-
Subroutines can access the global declarations in which they are defined.
When ever the changes occurred in the subroutine those changes will be reflected
to global declarations.
Note:-
LOCAL is the keyword to avoid the changes in subroutines.
E.g.:
TABLES T001.
T001-BUKRS = ‗1000‘.
T001-BUTXT = ‗TCS‘.
T001-ORT01 = ‗HYD‘.
PERFORM ZGLOBAL.
WRITE: / T001-BUKRS, T001-BUTXT, T001-ORT01.
FORM ZGLOBAL.
LOCAL T001.
T001-BUKRS = ‗2000‘.
T001-BUTXT = ‗IBM‘.
T001-ORT01 = ‗MUM‘.
WRITE: / T001-BUKRS, T001-BUTXT, T001-ORT01.
ENDFORM.
Function module:-
Function modules are reusable components that are defined in functional library.
- Each Function module must be attached with one Function group which contains two include programs by default, one is for common subroutines, and another one is for global declarations.
- All the function modules under that function group can access the both the
include programs.
- When ever we are calling the any function module then all the function modules under that group will be loaded n to the memory of the calling program, so that it‘s better to group the related function modules in to one function group.
- Execute SE37.
- In the menu bar – goto – function groups – create group.
- Provide your function group name.
- Provide short description.
- Save – local object.
- Execute SE37.
- In the menu bar – environment – inactive objects.
- Expand your function group.
- Select your function group.
- Click on activate (in ECC 6.0 – select function group – right click – activate).
- Execute SE37.
- Provide your function module name.
- Create.
- Provide function group name & short description.
- Save.
- Execute SE80 (In ECC 6.0. SE 11).
- Edit object in application toolbar.
- Click on dictionary table.
- Select the radio button TYPE GROUP.
- Provide your Type Group Name, Click on Create.
- Provide short text.
- SAVE
- Execute OAER.
- Provide CLASS NAME : Pictures
- CLASS TYPE: OT
- OBJECT KEY: YSPRAO (Any Name)
- Execute or F8.
- In Bottom Window
- Expand Standard.Doc.Type
- Double Click on SCREEN
- Provide your Logo path
- Enter
WA_FCAT-FIELDNAME = 'LIFNR'.
- Execute SE 41
- Click on STATUS in Application tool bar.
- Provide FROM
- Click on COPY
- Execute SM35
- Select Session name.
- Click on Process application tool bar.
- IDOC FILTERING
- SEGMENT FILTERING
- REDUCED IDOC
0 Comments