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

Internaltables Programs

The document contains descriptions of 14 simple ABAP programs that demonstrate data retrieval and manipulation using internal tables, selection screens, and database tables. The programs select data from tables like VBAP, VBAK, VBRK, MARA and write it to internal tables for output. Operations include sorting, filtering, joining data from multiple tables, and using selection options and parameters to filter data.

Uploaded by

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

Internaltables Programs

The document contains descriptions of 14 simple ABAP programs that demonstrate data retrieval and manipulation using internal tables, selection screens, and database tables. The programs select data from tables like VBAP, VBAK, VBRK, MARA and write it to internal tables for output. Operations include sorting, filtering, joining data from multiple tables, and using selection options and parameters to filter data.

Uploaded by

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

* SIMPLE PROGRAM 1: Simple data retrive from vbap using SELECT statement: Tables: VBAP.

Select * from vbap where netwr >= '15000' order by netwr kwmeng. write:/ sy-dbcnt,vbap-netwr,vbap-kwmeng. Endselect. if sy-subrc <> 0. Write:/ 'no records found'. endif. * SIMPLE PROGRAM 2: TABLES:vbak. selection-screen begin of block blk with frame title text-000. SELECT-OPTIONS: v_vbeln for vbak-vbeln. Selection-screen end of block blk. *PARAMETERS: p_vbeln TYPE vbak-vbeln. DATA it_vbak TYPE TABLE OF vbak WITH HEADER LINE. SELECT * FROM vbak INTO TABLE it_vbak WHERE vbeln = v_vbeln. WRITE:/ sy-dbcnt,sy-subrc. LOOP AT it_vbak. WRITE:/ sy-tabix, it_vbak-vbeln,it_vbak-netwr,it_vbak-kunnr. ENDLOOP.

* SIMPLE PROGRAM 3: PARAMETERS: p_pltyp TYPE vbrk-pltyp. DATA it_vbrk TYPE TABLE OF vbrk WITH HEADER LINE. SELECT * FROM vbrk INTO TABLE it_vbrk WHERE pltyp = p_pltyp. WRITE:/ sy-dbcnt,sy-subrc. LOOP AT it_vbrk. WRITE:/ sy-tabix,it_vbrk-fkart,it_vbrk-fktyp,it_vbrk-pltyp. ENDLOOP. * SIMPLE PROGRAM 4: PARAMETERS: p_lfart TYPE likp-lfart. DATA it_likp TYPE TABLE OF likp WITH HEADER LINE. SELECT * FROM likp INTO TABLE it_likp WHERE lfart = p_lfart. WRITE:/ sy-dbcnt,sy-subrc. LOOP AT it_likp. WRITE:/ sy-tabix, it_likp-vbeln,it_likp-lfdat,it_likp-lfart. ENDLOOP.

* SIMPLE PROGRAM 5: Tables: VBAP. Select * from vbap where netwr >= '15000' order by netwr kwmeng. write:/ sy-dbcnt,vbap-netwr,vbap-kwmeng. Endselect. if sy-subrc <> 0. Write:/ 'no records found'. endif. * SIMPLE PROGRAM 6: PARAMETERS: p_pincr TYPE ekko-pincr. DATA it_ekko TYPE TABLE OF ekko WITH HEADER LINE. SELECT * FROM ekko INTO TABLE it_ekko WHERE pincr = p_pincr. WRITE:/ sy-dbcnt,sy-subrc. LOOP AT it_ekko. WRITE:/ it_ekko-ebeln,it_ekko-bukrs,it_ekko-wkurs,it_ekko-pincr. ENDLOOP.

* SIMPLE PROGRAM 7: PARAMETERS: p_pltyp TYPE vbrk-pltyp. DATA it_vbrk TYPE TABLE OF vbrk WITH HEADER LINE. SELECT * FROM vbrk INTO TABLE it_vbrk WHERE pltyp = p_pltyp. WRITE:/ sy-dbcnt. LOOP AT it_vbrk. WRITE:/ sy-tabix,it_vbrk-fkart,it_vbrk-fktyp,it_vbrk-pltyp. ENDLOOP. * SIMPLE PROGRAM 8: PARAMETERS: p_mtart TYPE mara-mtart. DATA it_mara TYPE TABLE OF mara WITH HEADER LINE. SELECT * FROM mara INTO TABLE it_mara WHERE mtart = p_mtart. WRITE:/ sy-dbcnt,sy-subrc. LOOP AT it_mara FROM 2. WRITE:/ sy-tabix,it_mara-matnr,it_mara-ersda,it_mara-laeda, it_mara-mtart ENDLOOP. SKIP. LOOP AT it_mara FROM 2 WHERE matnr = 'FSB-0001'. WRITE:/ sy-tabix,it_mara-matnr,it_mara-ersda,it_mara-laeda, it_mara-mtart ENDLOOP.

* SIMPLE PROGRAM 8: Sorting the contents of Internal Table: DATA: BEGIN OF it OCCURS 3, f1(3) TYPE n, f2(2), f3(4) type n, END OF it. it-f1 = '500'. it-f2 = 'zz'. it-f3 = '2000'. APPEND it. it-f1 = '200'. it-f2 = 'xx'. it-f3 = '800'. APPEND it. it-f1 = '700'. it-f2 = 'MM'. it-f3 = '1000'. APPEND it. Sort it by f2 ascending f1. LOOP AT it. WRITE:/ sy-tabix,it-f1,it-f2,it-f3. ENDLOOP. SKIP. Sort it by f1 ascending f3. LOOP AT it. WRITE:/ sy-tabix,it-f1,it-f2,it-f3. ENDLOOP. SKIP. Sort it by f3 ascending f2. LOOP AT it. WRITE:/ sy-tabix,it-f1,it-f2,it-f3. ENDLOOP. SKIP. Sort it by f3. LOOP AT it. WRITE:/ sy-tabix,it-f1,it-f2,it-f3. endloop. * SIMPLE PROGRAM 9: data: begin of it occurs 3, f1(3) type n, f2(2), end of it. it-f1 = '100'. it-f2 = 'xx'. APPEND it. it-f1 = '200'. it-f2 = 'xx'. APPEND it. it-f1 = '500'. it-f2 = 'zz'. APPEND it.

READ TABLE it. WRITE:/ sy-tabix,it-f1,it-f2. SKIP. READ TABLE it. WRITE:/ sy-tabix,it-f1,it-f2. SKIP. READ TABLE it. WRITE:/ sy-tabix,it-f1,it-f2. SKIP. READ TABLE it. WRITE:/ sy-tabix,it-f1,it-f2. * SIMPLE PROGRAM 10: PARAMETERS: p_mtart TYPE mara-mtart. DATA it_mara TYPE TABLE OF mara WITH HEADER LINE. SELECT * FROM mara INTO TABLE it_mara WHERE mtart = p_mtart. WRITE:/ sy-dbcnt,sy-subrc. LOOP AT it_mara. WRITE:/ sy-tabix,it_mara-matnr,it_mara-ersda,it_mara-laeda, it_mara-mtart ENDLOOP. LOOP AT it_mara FROM 2 WHERE matnr = 'FSB-0001'. WRITE:/ sy-tabix,it_mara-matnr,it_mara-ersda,it_mara-laeda, it_mara-mtart . ENDLOOP. * SIMPLE PROGRAM 11: Sort order with text addition: Data: Begin of it occurs 3, t(30) type c, End of it. it-t = 'Anitha'. it-t = 'Murugan'. append it. it-t = 'Manju'. append it. it-t = 'Ganesh'. append it. it-t = 'Bharath'. append it. Write:/ 'sy-langu =',sy-langu. sort it by t. loop at it. write:/ it-t. endloop. skip. set locale language 'F'. Write:/ 'sy-langu =',sy-langu.

sort it by t. loop at it. write:/ it-t. endloop.

* SIMPLE PROGRAM 12: Data: f1(5) value 'ABCDE', Begin of s1, C1(1), C2(3), C3(1), End of s1. s1 = f1. Write:/ s1, / s1-c1,s1-c2,s1-c3. * SIMPLE PROGRAM 13: Data: d1 like sy-datum, d2 like d1, num_days type P. d1 = d2 = sy-datum. subtract 1 from d1. write:/ d1. d2 = d2 + 6. write:/ d2. d2+6 = '01'. write:/ d2. subtract 1 from d2. write:/ d2. num_days = sy-datum - ztx1_amalgamation_date. write:/ num_days.

* Fetching data from TWO TABLES WITH SELECTION TYPE PARAMETERS: Tables vbak. DATA: BEGIN OF x_vbakvbap, vbeln TYPE vbak-vbeln, netwr TYPE vbak-netwr, kunnr TYPE vbak-kunnr, posnr TYPE vbap-posnr, matnr TYPE vbap-matnr, arktx TYPE vbap-arktx, kwmeng TYPE vbap-kwmeng, END OF X_vbakvbap. DATA it_vbakvbap LIKE TABLE OF x_vbakvbap WITH HEADER LINE.

PARAMETERS: p_vbeln TYPE vbak-vbeln Default '5006' obligatory.. SELECT vbak~vbeln vbak~netwr vbak~kunnr vbap~posnr vbap~matnr vbap~arktx vbap~kwmeng INTO TABLE it_vbakvbap FROM vbak INNER JOIN vbap ON vbak~vbeln = vbap~vbeln WHERE vbak~vbeln = P_vbeln. LOOP AT it_vbakvbap. WRITE:/ it_vbakvbap-vbeln,it_vbakvbap-netwr,it_vbakvbap-kunnr, it_vbakvbap-posnr,it_vbakvbap-matnr,it_vbakvbap-arktx, it_vbakvbap-kwmeng. ENDLOOP. top-of-page. write:/ 'Sales details'. uline. End-of-page. Write:/ sy-uline, / 'number of salesoreder'. * Fetching data from TWO TABLES WITH SELECTION TYPE SELECTION-OPTIONS: Tables vbak. DATA: BEGIN OF x_vbakvbap, vbeln TYPE vbak-vbeln, netwr TYPE vbak-netwr, kunnr TYPE vbak-kunnr, posnr TYPE vbap-posnr, matnr TYPE vbap-matnr, arktx TYPE vbap-arktx, kwmeng TYPE vbap-kwmeng, END OF X_vbakvbap. DATA it_vbakvbap LIKE TABLE OF x_vbakvbap WITH HEADER LINE. SELECT-OPTIONS: s_vbeln for vbak-vbeln Default '5006' to '5020' obligatory.. SELECT vbak~vbeln vbak~netwr vbak~kunnr vbap~posnr vbap~matnr vbap~arktx vbap~kwmeng INTO TABLE it_vbakvbap FROM vbak INNER JOIN vbap ON vbak~vbeln = vbap~vbeln WHERE vbak~vbeln in s_vbeln. LOOP AT it_vbakvbap. WRITE:/ it_vbakvbap-vbeln,it_vbakvbap-netwr,it_vbakvbap-kunnr, it_vbakvbap-posnr,it_vbakvbap-matnr,it_vbakvbap-arktx, it_vbakvbap-kwmeng. ENDLOOP. top-of-page. write:/ 'Sales details'. uline.

End-of-page. Write:/ sy-uline, / 'number of salesoreder'.

* DISPLAYING DELIVERY DETAILS FROM TABLES LIKPLIPS. TABLES:LIKP. DATA: BEGIN OF x_likplips, vbeln TYPE likp-vbeln, vkorg TYPE likp-vkorg, lfart TYPE likp-lfart, posnr TYPE lips-posnr, matnr TYPE lips-matnr, matkl TYPE lips-matkl, charg TYPE lips-charg, END OF x_likplips. DATA it_likplips LIKE TABLE OF x_likplips WITH HEADER LINE. *PARAMETERS: p_vbeln TYPE likp-vbeln. select-options: s_vbeln for likp-vbeln default '80003370' to '80003402' obligatory. SELECT likp~vbeln likp~vkorg likp~lfart lips~posnr lips~matnr lips~matkl lips~charg INTO TABLE it_likplips FROM likp INNER JOIN lips ON likp~vbeln = lips~vbeln WHERE likp~vbeln in s_vbeln. write:/ sy-dbcnt. LOOP AT it_likplips. WRITE:/ it_likplips-vbeln,it_likplips-vkorg,it_likplips-lfart, it_likplips-posnr,it_likplips-matnr,it_likplips-matkl,it_likplips-charg . ENDLOOP. * DISPLAYING BILLING DETAILS FROM TABLES VBRKVBRP. TABLES: VBRK. DATA: BEGIN OF x_vbrkvbrp, vbeln TYPE vbrk-vbeln, fkart type vbrk-fkart, fktyp type vbrk-fktyp, vkorg TYPE vbrk-vkorg, posnr TYPE vbrp-posnr, vrkme TYPE vbrp-vrkme, ntgew TYPE vbrp-ntgew, brgew TYPE vbrp-brgew, END OF x_vbrkvbrp. *Declaring IT: DATA it_vbrkvbrp LIKE TABLE OF x_vbrkvbrp WITH HEADER LINE. *Calling Parameter: *PARAMETERS: p_vbeln TYPE vbrk-vbeln. Select-options: s_vbeln for vbrk-vbeln default '90017936' to '90017966' obligatory.

* Fetching data from tables of vbrk and vbrp: SELECT vbrk~vbeln vbrk~fkart vbrk~fktyp vbrk~vkorg vbrp~posnr vbrp~vrkme vbrp~ntgew vbrp~brgew INTO TABLE it_vbrkvbrp FROM vbrk INNER JOIN vbrp ON vbrk~vbeln = vbrp~vbeln WHERE vbrk~vbeln in s_vbeln. write:/ sy-dbcnt. *Writing output: LOOP AT it_vbrkvbrp. WRITE:/ it_vbrkvbrp-vbeln,it_vbrkvbrp-fkart,it_vbrkvbrp-fktyp, it_vbrkvbrp-vkorg,it_vbrkvbrp-posnr,it_vbrkvbrp-vrkme,it_vbrkvbrp-ntgew , it_vbrkvbrp-brgew. ENDLOOP.

* USING MORE THAN ONE FIELDS IN PARAMETERS AND SELECT-OPTIONS: TABLES vbak. DATA: BEGIN OF x_vbakvbap, vbeln TYPE vbak-vbeln, * vkorg type vbak-vkorg, * waerk type vbak-waerk, netwr TYPE vbak-netwr, kunnr TYPE vbak-kunnr, posnr TYPE vbap-posnr, matnr TYPE vbap-matnr, arktx TYPE vbap-arktx, kwmeng TYPE vbap-kwmeng, END OF x_vbakvbap. DATA it_vbakvbap LIKE TABLE OF x_vbakvbap WITH HEADER LINE. PARAMETERS: p_vbeln TYPE vbak-vbeln. * p_matnr TYPE vbap-matnr, * p_arktx TYPE vbap-arktx. SELECT-OPTIONS s_vbeln FOR vbak-vbeln Default '5006' to '5020' obligatory. *SELECT-OPTIONS s_waerk FOR vbak-waerk. *SELECT-OPTIONS s_vkorg FOR vbak-vkorg."obligatory. SELECT vbak~vbeln vbak~netwr vbak~kunnr vbap~posnr vbap~matnr vbap~arktx vbap~kwmeng INTO TABLE it_vbakvbap FROM vbak INNER JOIN vbap ON vbak~vbeln = vbap~vbeln *WHERE vbak~vbeln = p_vbeln. WHERE vbak~vbeln IN s_vbeln. WRITE:/ sy-dbcnt,sy-subrc. IF sy-subrc <> 0.

WRITE:/ 'No records selected'. ENDIF. LOOP AT it_vbakvbap. WRITE:/ sy-tabix,it_vbakvbap-vbeln, it_vbakvbap-netwr,it_vbakvbap-kunnr,it_vbakvbap-posnr, it_vbakvbap-matnr,it_vbakvbap-arktx,it_vbakvbap-kwmeng. ENDLOOP.

** USING SY-TFILL FOR COUNTING TOTAL NO OF ROWS: TABLES: vbak,vbap. DATA: BEGIN OF x_vbakvbap, vbeln TYPE vbak-vbeln, netwr TYPE vbak-netwr, kunnr TYPE vbak-kunnr, posnr TYPE vbap-posnr, matnr TYPE vbap-matnr, arktx TYPE vbap-arktx, kwmeng TYPE vbap-kwmeng, END OF x_vbakvbap. DATA it_vbakvbap LIKE TABLE OF x_vbakvbap WITH HEADER LINE. *PARAMETERS: p_vbeln TYPE vbak-vbeln. SELECT-OPTIONS: s_vbeln FOR vbap-vbeln. * s_netwr for vbak-netwr lower case, * s_kunnr FOR vbak-kunnr No-extension, * s_posnr FOR vbap-posnr No intervals, * s_matnr FOR vbap-matnr No-display. SELECT vbak~vbeln vbak~netwr vbak~kunnr vbap~posnr vbap~matnr vbap~arktx vbap~kwmeng INTO TABLE it_vbakvbap FROM vbak INNER JOIN vbap ON vbak~vbeln = vbap~vbeln WHERE vbap~vbeln IN s_vbeln. DESCRIBE TABLE it_vbakvbap. WRITE:/ sy-tfill. SORT it_vbakvbap DESCENDING BY matnr kwmeng. it_vbakvbap-kwmeng = '60'. MODIFY it_vbakvbap TRANSPORTING kwmeng WHERE matnr = 'M-10'. LOOP AT it_vbakvbap. WRITE:/ it_vbakvbap-vbeln,it_vbakvbap-netwr,it_vbakvbap-kunnr ,it_vbakvbap-posnr,it_vbakvbap-matnr,it_vbakvbap-arktx, it_vbakvbap-kwmeng. ENDLOOP.

** DISPLAYING SALES ORDERS WITH MODIFYING INTERNAL TABLES LIKE FREE,RERESH,CLEAR,DELETE,SY-TFILL,SORTING,INDEX,ASCENDING AND DESENDING ORDERS: TABLES vbap. DATA: BEGIN OF x_vbakvbap, vbeln TYPE vbak-vbeln, netwr TYPE vbak-netwr, kunnr TYPE vbak-kunnr, posnr TYPE vbap-posnr, matnr TYPE vbap-matnr, arktx TYPE vbap-arktx, kwmeng TYPE vbap-kwmeng, END OF x_vbakvbap. DATA it_vbakvbap LIKE TABLE OF x_vbakvbap WITH HEADER LINE. *PARAMETERS: p_vbeln TYPE vbak-vbeln. SELECT-OPTIONS s_vbeln FOR vbap-vbeln Default '5006' to '5020' obligatory. SELECT vbak~vbeln vbak~netwr vbak~kunnr vbap~posnr vbap~matnr vbap~arktx vbap~kwmeng INTO TABLE it_vbakvbap FROM vbak INNER JOIN vbap ON vbak~vbeln = vbap~vbeln WHERE vbap~vbeln IN s_vbeln. Describe table it_vbakvbap. write:/ sy-tfill. *free it_vbakvbap. *refresh it_vbakvbap. clear it_vbakvbap. *Clear it_vbakvbap[]. *Delete it_vbakvbap from 'M-10' to 'M-17'. *Delete it_vbakvbap index 2. *Delete it_vbakvbap from '0000005000' to '0000005001'. *DELETE it_vbakvbap WHERE matnr between 'M-10' and 'M-17'. *Delete it_vbakvbap where matnr = 'M-10'. *SORT it_vbakvbap."DESCENDING BY kwmeng. *it_vbakvbap-matnr = 'M-110'. *Modify it_vbakvbap index 2 *Transporting matnr. *it_vbakvbap-kwmeng = '160'. *MODIFY it_vbakvbap TRANSPORTING kwmeng WHERE matnr = 'M-10'. * LOOP AT it_vbakvbap. WRITE:/ it_vbakvbap-vbeln,it_vbakvbap-netwr,it_vbakvbap-kunnr, it_vbakvbap-posnr,it_vbakvbap-matnr,it_vbakvbap-arktx, it_vbakvbap-kwmeng. ENDLOOP.

*Sales Document Flow:

TABLES:vbfa. SELECTION-SCREEN BEGIN OF BLOCK blk WITH FRAME TITLE text-000. SELECT-OPTIONS:s_vbeln FOR vbfa-vbeln DEFAULT '5006' TO '5020' OBLIGATORY, s_posnr FOR vbfa-posnn. SELECTION-SCREEN END OF BLOCK blk. DATA:BEGIN OF x_vbfa, vbelv TYPE vbfa-vbelv, posnv TYPE vbfa-posnv, vbeln TYPE vbfa-vbeln, posnn TYPE vbfa-posnn, vbtyp_n TYPE vbfa-vbtyp_n, END OF x_vbfa. DATA:BEGIN OF x_final, sales TYPE vbfa-vbeln, sitem TYPE vbfa-posnv, deliv TYPE vbfa-vbeln, delitm TYPE vbfa-posnv, bill TYPE vbfa-vbeln, billitm TYPE vbfa-posnv, END OF x_final. DATA:it_vbfa LIKE TABLE OF x_vbfa WITH HEADER LINE, it_final LIKE TABLE OF x_final WITH HEADER LINE, it_temp_vbfa LIKE TABLE OF x_vbfa WITH HEADER LINE.. *Get the details from VBFA SELECT vbelv posnv vbeln posnn vbtyp_n INTO TABLE it_vbfa FROM vbfa WHERE vbelv IN s_vbeln AND posnv IN s_posnr AND vbtyp_n IN ('J' , 'M' ). it_temp_vbfa[] = it_vbfa[]. SORT it_temp_vbfa BY vbelv posnv. DELETE ADJACENT DUPLICATES FROM it_temp_vbfa COMPARING vbelv posnv. LOOP AT it_temp_vbfa. MOVE: it_temp_vbfa-vbelv TO it_final-sales, it_temp_vbfa-posnv TO it_final-sitem. READ TABLE it_vbfa WITH KEY vbelv = it_temp_vbfa-vbelv posnv = it_temp_vbfa-posnv vbtyp_n = 'J' . IF sy-subrc = 0. MOVE: it_vbfa-vbeln TO it_final-deliv, it_vbfa-posnn TO it_final-delitm. ENDIF. READ TABLE it_vbfa WITH KEY vbelv = it_temp_vbfa-vbelv posnv = it_temp_vbfa-posnv vbtyp_n = 'M' . IF sy-subrc = 0. MOVE: it_vbfa-vbeln TO it_final-bill, it_vbfa-posnn TO it_final-billitm.

ENDIF. APPEND it_final. CLEAR it_final. ENDLOOP. Write:/ 'Salesno',10 'sitem',20 'Delivery',30 'Delitem',40 'Billno',50 'Billitem'. LOOP AT it_final. WRITE:/ it_final-sales,10 it_final-sitem,20 it_final-deliv,30 it_final-delitm,40 it_final-bill,50 it_final-billitm. ENDLOOP. Top-of-page. write:/ 'Sales documentflow'. uline.

* For All entries Method: TYpes: BEGIN OF ty_vbakvbap, vbeln TYPE vbak-vbeln, netwr TYPE vbak-netwr, kunnr TYPE vbak-kunnr, posnr TYPE vbap-posnr, matnr TYPE vbap-matnr, arktx TYPE vbap-arktx, kwmeng TYPE vbap-kwmeng, END OF ty_vbakvbap, ty_t_vbakvbap type standard table of ty_vbakvbap. Types: Begin of ty_kna1, kunnr type kna1-kunnr, name1 type kna1-name1, ort01 type kna1-ort01, land1 type kna1-land1, End of ty_kna1, ty_t_kna1 type standard table of ty_kna1. TYpes: BEGIN OF ty_final, vbeln TYPE vbak-vbeln, netwr TYPE vbak-netwr, kunnr TYPE vbak-kunnr, posnr TYPE vbap-posnr, matnr TYPE vbap-matnr, arktx TYPE vbap-arktx, kwmeng TYPE vbap-kwmeng, name1 type kna1-name1, ort01 type kna1-ort01, land1 type kna1-land1, END OF ty_final, ty_t_final type standard table of ty_final. Data: it_vbakvbap type ty_t_vbakvbap with header line, it_kna1 type ty_t_kna1 with header line, it_final type ty_t_final with header line.

Tables: vbak. Select-options:s_vbeln for vbak-vbeln Default '5006' to '5020' obligatory . * s_vbeln1 for vbak-vbeln Lower case, * s_vbeln2 for vbak-vbeln NO INTERVALS, * s_vbeln3 for vbak-vbeln No-Extension. ** s_vbeln4 for vbak-vbeln No-display. Select vbak~vbeln vbak~netwr vbak~kunnr vbap~posnr vbap~matnr vbap~arktx vbap~kwmeng Into table it_vbakvbap from vbak inner join vbap on vbak~vbeln = vbap~vbeln Where vbak~vbeln in s_vbeln. if not it_vbakvbap[] is initial. select kunnr name1 ort01 land1 into table it_kna1 from kna1 FOR ALL ENTRIES IN it_vbakvbap where kunnr = it_vbakvbap-kunnr. endif. loop at it_vbakvbap. Move-corresponding it_vbakvbap to it_final. Read table it_kna1 with key kunnr = it_vbakvbap-kunnr. if sy-subrc = 0. Move: it_kna1-name1 to it_final-name1, it_kna1-ort01 to it_final-ort01, it_kna1-land1 to it_final-land1. endif. Append it_final. Clear:it_final,it_vbakvbap. endloop. loop at it_final. Write:/ it_final-vbeln,it_final-kunnr,it_final-netwr,it_final-posnr, it_final-matnr,it_final-arktx,it_final-kwmeng. Endloop.

**Shipping Conditions Text: TYPES: BEGIN OF ty_vbakvbap, vbeln TYPE vbak-vbeln, vsbed TYPE vbak-vsbed, netwr TYPE vbak-netwr, kunnr TYPE vbak-kunnr, posnr TYPE vbap-posnr, matnr TYPE vbap-matnr, arktx TYPE vbap-arktx, kwmeng TYPE vbap-kwmeng, END OF ty_vbakvbap, ty_t_vbakvbap TYPE STANDARD TABLE OF ty_vbakvbap.

TYPES: BEGIN OF ty_kna1, kunnr TYPE kna1-kunnr, name1 TYPE kna1-name1, ort01 TYPE kna1-ort01, land1 TYPE kna1-land1, END OF ty_kna1, ty_t_kna1 TYPE STANDARD TABLE OF ty_kna1. TYPES: BEGIN OF ty_tvsbt, vsbed TYPE tvsbt-vsbed, vtext TYPE tvsbt-vtext, END OF ty_tvsbt, ty_t_tvsbt TYPE STANDARD TABLE OF ty_tvsbt. TYPES: BEGIN OF ty_final, vbeln TYPE vbak-vbeln, vsbed TYPE vbak-vsbed, netwr TYPE vbak-netwr, kunnr TYPE vbak-kunnr, posnr TYPE vbap-posnr, matnr TYPE vbap-matnr, arktx TYPE vbap-arktx, kwmeng TYPE vbap-kwmeng, name1 TYPE kna1-name1, ort01 TYPE kna1-ort01, land1 TYPE kna1-land1, vtext TYPE tvsbt-vtext, END OF ty_final, ty_t_final TYPE STANDARD TABLE OF ty_final. DATA: it_vbakvbap TYPE ty_t_vbakvbap WITH HEADER LINE, it_kna1 TYPE ty_t_kna1 WITH HEADER LINE, it_tvsbt TYPE ty_t_tvsbt WITH HEADER LINE, it_final TYPE ty_t_final WITH HEADER LINE. TABLES: vbak. SELECT-OPTIONS:s_vbeln FOR vbak-vbeln default '5006' to '5020' OBLIGATORY. SELECT vbak~vbeln vbak~vsbed vbak~netwr vbak~kunnr vbap~posnr vbap~matnr vbap~arktx vbap~kwmeng INTO TABLE it_vbakvbap FROM vbak INNER JOIN vbap ON vbak~vbeln = vbap~vbeln WHERE vbak~vbeln IN s_vbeln. IF NOT it_vbakvbap[] IS INITIAL. SELECT kunnr name1 ort01 land1 INTO TABLE it_kna1 FROM kna1 WHERE kunnr = it_vbakvbap-kunnr. ENDIF. IF NOT it_vbakvbap[] IS INITIAL.

SELECT vsbed vtext INTO TABLE it_tvsbt FROM tvsbt WHERE vsbed = it_vbakvbap-vsbed. ENDIF. LOOP AT it_vbakvbap. MOVE-CORRESPONDING it_vbakvbap TO it_final. READ TABLE it_kna1 WITH KEY kunnr = it_vbakvbap-kunnr. READ TABLE it_tvsbt WITH KEY vsbed = it_vbakvbap-vsbed. IF sy-subrc = 0. MOVE: it_kna1-name1 TO it_final-name1, it_kna1-ort01 TO it_final-ort01, it_kna1-land1 TO it_final-land1, it_tvsbt-vtext TO it_final-vtext. ENDIF. APPEND it_final. CLEAR:it_final,it_vbakvbap. ENDLOOP. LOOP AT it_final. WRITE:/ it_final-vbeln,20 it_final-kunnr,40 it_final-netwr, 60 it_final-posnr,80 it_final-matnr,100 it_final-arktx,120 it_final-kwmeng, 140 it_final-vsbed,160 it_final-name1,180 it_final-ort01,200 it_final-vtext. ENDLOOP.

** Control Breaks in internal Tables with AT FIRST.....ENDAT: * TYPES: BEGIN OF ty_vbakvbap, vbeln TYPE vbak-vbeln, vsbed TYPE vbak-vsbed, netwr TYPE vbak-netwr, kunnr TYPE vbak-kunnr, posnr TYPE vbap-posnr, matnr TYPE vbap-matnr, arktx TYPE vbap-arktx, kwmeng TYPE vbap-kwmeng, END OF ty_vbakvbap, ty_t_vbakvbap TYPE STANDARD TABLE OF ty_vbakvbap. TYPES: BEGIN OF ty_kna1, kunnr TYPE kna1-kunnr, name1 TYPE kna1-name1, ort01 TYPE kna1-ort01, land1 TYPE kna1-land1, END OF ty_kna1, ty_t_kna1 TYPE STANDARD TABLE OF ty_kna1. TYPES: BEGIN OF ty_tvsbt, vsbed TYPE tvsbt-vsbed,

vtext TYPE tvsbt-vtext, END OF ty_tvsbt, ty_t_tvsbt TYPE STANDARD TABLE OF ty_tvsbt. TYPES: BEGIN OF ty_final, vbeln TYPE vbak-vbeln, vsbed TYPE vbak-vsbed, netwr TYPE vbak-netwr, kunnr TYPE vbak-kunnr, posnr TYPE vbap-posnr, matnr TYPE vbap-matnr, arktx TYPE vbap-arktx, kwmeng TYPE vbap-kwmeng, name1 TYPE kna1-name1, ort01 TYPE kna1-ort01, land1 TYPE kna1-land1, vtext TYPE tvsbt-vtext, END OF ty_final, ty_t_final TYPE STANDARD TABLE OF ty_final. DATA: it_vbakvbap TYPE ty_t_vbakvbap WITH HEADER LINE, it_kna1 TYPE ty_t_kna1 WITH HEADER LINE, it_tvsbt TYPE ty_t_tvsbt WITH HEADER LINE, it_final TYPE ty_t_final WITH HEADER LINE. TABLES: vbak. SELECT-OPTIONS:s_vbeln FOR vbak-vbeln default '5006' to '5020' OBLIGATORY. SELECT vbak~vbeln vbak~vsbed vbap~netwr vbak~kunnr vbap~posnr vbap~matnr vbap~arktx vbap~kwmeng INTO TABLE it_vbakvbap FROM vbak INNER JOIN vbap ON vbak~vbeln = vbap~vbeln WHERE vbak~vbeln IN s_vbeln. IF NOT it_vbakvbap[] IS INITIAL. SELECT kunnr name1 ort01 land1 INTO TABLE it_kna1 FROM kna1 FOR ALL ENTRIES IN it_vbakvbap WHERE kunnr = it_vbakvbap-kunnr. ENDIF. IF NOT it_vbakvbap[] IS INITIAL. SELECT vsbed vtext INTO TABLE it_tvsbt FROM tvsbt FOR ALL ENTRIES IN it_vbakvbap WHERE spras = sy-langu AND vsbed = it_vbakvbap-vsbed. ENDIF. LOOP AT it_vbakvbap. MOVE-CORRESPONDING it_vbakvbap TO it_final. READ TABLE it_kna1 WITH KEY kunnr = it_vbakvbap-kunnr. IF sy-subrc = 0.

MOVE: it_kna1-name1 TO it_final-name1, it_kna1-ort01 TO it_final-ort01, it_kna1-land1 TO it_final-land1. ENDIF. READ TABLE it_tvsbt WITH KEY vsbed = it_vbakvbap-vsbed. IF sy-subrc = 0. MOVE:it_tvsbt-vtext TO it_final-vtext. ENDIF. APPEND it_final. CLEAR:it_final,it_vbakvbap. ENDLOOP. LOOP AT it_final. AT FIRST. WRITE:/ 'Order', 10 'Item', 17 'Customer', 29 'Net Price', 45 'Material',57 'Description', 85 'Quantity', 105 'Shipping cond', 125 'Name', 145 'Street'. . WRITE: /(125) sy-uline. Endat. WRITE:/ it_final-vbeln,10 it_final-posnr,17 it_final-kunnr,29 it_final-netwr LEFT-JUSTIFIED,45 it_final-matnr, 57 it_final-arktx,85 it_final-kwmeng LEFT-JUSTIFIED, 105 it_final-vtext,125 it_final-name1,145 it_final-land1. Endloop.

Control Breaks in internal Tables with AT LAST.....ENDAT: TYPES: BEGIN OF ty_vbakvbap, vbeln TYPE vbak-vbeln, vsbed TYPE vbak-vsbed, netwr TYPE vbak-netwr, kunnr TYPE vbak-kunnr, posnr TYPE vbap-posnr, matnr TYPE vbap-matnr, arktx TYPE vbap-arktx, kwmeng TYPE vbap-kwmeng, END OF ty_vbakvbap, ty_t_vbakvbap TYPE STANDARD TABLE OF ty_vbakvbap. TYPES: BEGIN OF ty_kna1, kunnr TYPE kna1-kunnr, name1 TYPE kna1-name1, ort01 TYPE kna1-ort01, land1 TYPE kna1-land1, END OF ty_kna1, ty_t_kna1 TYPE STANDARD TABLE OF ty_kna1. TYPES: BEGIN OF ty_tvsbt, vsbed TYPE tvsbt-vsbed, vtext TYPE tvsbt-vtext, END OF ty_tvsbt, ty_t_tvsbt TYPE STANDARD TABLE OF ty_tvsbt.

TYPES: BEGIN OF ty_final, vbeln TYPE vbak-vbeln, vsbed TYPE vbak-vsbed, netwr TYPE vbak-netwr, kunnr TYPE vbak-kunnr, posnr TYPE vbap-posnr, matnr TYPE vbap-matnr, arktx TYPE vbap-arktx, kwmeng TYPE vbap-kwmeng, name1 TYPE kna1-name1, ort01 TYPE kna1-ort01, land1 TYPE kna1-land1, vtext TYPE tvsbt-vtext, END OF ty_final, ty_t_final TYPE STANDARD TABLE OF ty_final. DATA: it_vbakvbap TYPE ty_t_vbakvbap WITH HEADER LINE, it_kna1 TYPE ty_t_kna1 WITH HEADER LINE, it_tvsbt TYPE ty_t_tvsbt WITH HEADER LINE, it_final TYPE ty_t_final WITH HEADER LINE. TABLES: vbak. SELECT-OPTIONS:s_vbeln FOR vbak-vbeln '5006' to '5020' OBLIGATORY. SELECT vbak~vbeln vbak~vsbed vbap~netwr vbak~kunnr vbap~posnr vbap~matnr vbap~arktx vbap~kwmeng INTO TABLE it_vbakvbap FROM vbak INNER JOIN vbap ON vbak~vbeln = vbap~vbeln WHERE vbak~vbeln IN s_vbeln. IF NOT it_vbakvbap[] IS INITIAL. SELECT kunnr name1 ort01 land1 INTO TABLE it_kna1 FROM kna1 FOR ALL ENTRIES IN it_vbakvbap WHERE kunnr = it_vbakvbap-kunnr. ENDIF. IF NOT it_vbakvbap[] IS INITIAL. SELECT vsbed vtext INTO TABLE it_tvsbt FROM tvsbt FOR ALL ENTRIES IN it_vbakvbap WHERE spras = sy-langu AND vsbed = it_vbakvbap-vsbed. ENDIF. LOOP AT it_vbakvbap. MOVE-CORRESPONDING it_vbakvbap TO it_final. READ TABLE it_kna1 WITH KEY kunnr = it_vbakvbap-kunnr. IF sy-subrc = 0. MOVE: it_kna1-name1 TO it_final-name1, it_kna1-ort01 TO it_final-ort01, it_kna1-land1 TO it_final-land1. ENDIF.

READ TABLE it_tvsbt WITH KEY vsbed = it_vbakvbap-vsbed. IF sy-subrc = 0. MOVE:it_tvsbt-vtext TO it_final-vtext. ENDIF. APPEND it_final. CLEAR:it_final,it_vbakvbap. ENDLOOP. DATA v_count TYPE i. LOOP AT it_final. AT FIRST. WRITE:/ 'Order', 10 'Item', 17 'Customer', 29 'Net Price', 45 'Material',57 'Description', 85 'Quantity', 105 'Shipping cond' . WRITE: /(125) sy-uline. Endat. v_count = v_count + 1. WRITE:/ it_final-vbeln,10 it_final-posnr,17 it_final-kunnr,29 it_final-netwr LEFT-JUSTIFIED,45 it_final-matnr, 57 it_final-arktx,85 it_final-kwmeng LEFT-JUSTIFIED, 105 it_final-vtext. AT LAST. WRITE:/(125) sy-uline. WRITE:/ 'Total number of records =',v_count. Endat. Endloop. *Control Breaks in internal Tables with AT NEW.....ENDAT: TYPES: BEGIN OF ty_vbakvbap, vbeln TYPE vbak-vbeln, vsbed TYPE vbak-vsbed, netwr TYPE vbak-netwr, kunnr TYPE vbak-kunnr, posnr TYPE vbap-posnr, matnr TYPE vbap-matnr, arktx TYPE vbap-arktx, kwmeng TYPE vbap-kwmeng, END OF ty_vbakvbap, ty_t_vbakvbap TYPE STANDARD TABLE OF ty_vbakvbap. TYPES: BEGIN OF ty_kna1, kunnr TYPE kna1-kunnr, name1 TYPE kna1-name1, ort01 TYPE kna1-ort01, land1 TYPE kna1-land1, END OF ty_kna1, ty_t_kna1 TYPE STANDARD TABLE OF ty_kna1. TYPES: BEGIN OF ty_tvsbt, vsbed TYPE tvsbt-vsbed,

vtext TYPE tvsbt-vtext, END OF ty_tvsbt, ty_t_tvsbt TYPE STANDARD TABLE OF ty_tvsbt. TYPES: BEGIN OF ty_final, vbeln TYPE vbak-vbeln, vsbed TYPE vbak-vsbed, netwr TYPE vbak-netwr, kunnr TYPE vbak-kunnr, posnr TYPE vbap-posnr, matnr TYPE vbap-matnr, arktx TYPE vbap-arktx, kwmeng TYPE vbap-kwmeng, name1 TYPE kna1-name1, ort01 TYPE kna1-ort01, land1 TYPE kna1-land1, vtext TYPE tvsbt-vtext, END OF ty_final, ty_t_final TYPE STANDARD TABLE OF ty_final. DATA: it_vbakvbap TYPE ty_t_vbakvbap WITH HEADER LINE, it_kna1 TYPE ty_t_kna1 WITH HEADER LINE, it_tvsbt TYPE ty_t_tvsbt WITH HEADER LINE, it_final TYPE ty_t_final WITH HEADER LINE. TABLES: vbak. SELECT-OPTIONS:s_vbeln FOR vbak-vbeln '5006' to '5020' OBLIGATORY. SELECT vbak~vbeln vbak~vsbed vbap~netwr vbak~kunnr vbap~posnr vbap~matnr vbap~arktx vbap~kwmeng INTO TABLE it_vbakvbap FROM vbak INNER JOIN vbap ON vbak~vbeln = vbap~vbeln WHERE vbak~vbeln IN s_vbeln. IF NOT it_vbakvbap[] IS INITIAL. SELECT kunnr name1 ort01 land1 INTO TABLE it_kna1 FROM kna1 FOR ALL ENTRIES IN it_vbakvbap WHERE kunnr = it_vbakvbap-kunnr. ENDIF. IF NOT it_vbakvbap[] IS INITIAL. SELECT vsbed vtext INTO TABLE it_tvsbt FROM tvsbt FOR ALL ENTRIES IN it_vbakvbap WHERE spras = sy-langu AND vsbed = it_vbakvbap-vsbed. ENDIF. LOOP AT it_vbakvbap. MOVE-CORRESPONDING it_vbakvbap TO it_final. READ TABLE it_kna1 WITH KEY kunnr = it_vbakvbap-kunnr. IF sy-subrc = 0.

MOVE: it_kna1-name1 TO it_final-name1, it_kna1-ort01 TO it_final-ort01, it_kna1-land1 TO it_final-land1. ENDIF. READ TABLE it_tvsbt WITH KEY vsbed = it_vbakvbap-vsbed. IF sy-subrc = 0. MOVE:it_tvsbt-vtext TO it_final-vtext. ENDIF. APPEND it_final. CLEAR:it_final,it_vbakvbap. ENDLOOP. DATA: V_count TYPE i, V_So TYPE i. LOOP AT it_final. AT FIRST. WRITE:/ 'Order', 10 'Item', 17 'Customer', 29 'Net Price', 45 'Material',57 'Description', 85 'Quantity', 105 'Shipping cond' . WRITE: /(125) sy-uline. Endat. v_count = v_count + 1. AT NEW vbeln. WRITE:/ it_final-vbeln. v_so = v_so + 1. endat. WRITE:/10 it_final-posnr,17 it_final-kunnr,29 it_final-netwr LEFT-JUSTIFIED,45 it_final-matnr, 57 it_final-arktx,85 it_final-kwmeng LEFT-JUSTIFIED, 105 it_final-vtext.

AT LAST. WRITE:/(125) sy-uline. WRITE:/ 'Total number of records =',v_count. Write:/ 'Total number of sales orders =',V_so. Endat. Endloop.

*CONTROLS Breaks TYPE in internal Tables with AT END.....ENDAT AND SUM: TYPES: BEGIN OF ty_vbakvbap, vbeln TYPE vbak-vbeln, vsbed TYPE vbak-vsbed, netwr TYPE vbak-netwr, kunnr TYPE vbak-kunnr, posnr TYPE vbap-posnr, matnr TYPE vbap-matnr, arktx TYPE vbap-arktx, kwmeng TYPE vbap-kwmeng, END OF ty_vbakvbap,

ty_t_vbakvbap TYPE STANDARD TABLE OF ty_vbakvbap. TYPES: BEGIN OF ty_kna1, kunnr TYPE kna1-kunnr, name1 TYPE kna1-name1, ort01 TYPE kna1-ort01, land1 TYPE kna1-land1, adrnr TYPE kna1-adrnr, END OF ty_kna1, ty_t_kna1 TYPE STANDARD TABLE OF ty_kna1. TYPES: BEGIN OF ty_tvsbt, vsbed TYPE tvsbt-vsbed, vtext TYPE tvsbt-vtext, END OF ty_tvsbt, ty_t_tvsbt TYPE STANDARD TABLE OF ty_tvsbt. Types: Begin of ty_adr6, addrnumber TYPE adr6-addrnumber, smtp_addr TYPE adr6-smtp_addr, END OF ty_adr6, Ty_t_adr6 TYPE STANDARD TABLE OF ty_adr6. TYPES: BEGIN OF ty_final, vbeln TYPE vbak-vbeln, vsbed TYPE vbak-vsbed, netwr TYPE vbak-netwr, kunnr TYPE vbak-kunnr, posnr TYPE vbap-posnr, matnr TYPE vbap-matnr, arktx TYPE vbap-arktx, kwmeng TYPE vbap-kwmeng, name1 TYPE kna1-name1, ort01 TYPE kna1-ort01, land1 TYPE kna1-land1, adrnr TYPE kna1-adrnr, vtext TYPE tvsbt-vtext, addrnumber TYPE adr6-addrnumber, smtp_addr TYPE adr6-smtp_addr, END OF ty_final, ty_t_final TYPE STANDARD TABLE OF ty_final. DATA: it_vbakvbap TYPE ty_t_vbakvbap WITH HEADER LINE, it_kna1 TYPE ty_t_kna1 WITH HEADER LINE, it_tvsbt TYPE ty_t_tvsbt WITH HEADER LINE, it_adr6 TYPE ty_t_adr6 WITH HEADER LINE, it_final TYPE ty_t_final WITH HEADER LINE. TABLES: vbak. SELECT-OPTIONS:s_vbeln FOR vbak-vbeln '5006' to '5020' OBLIGATORY. SELECT vbak~vbeln vbak~vsbed vbap~netwr vbak~kunnr vbap~posnr vbap~matnr vbap~arktx vbap~kwmeng INTO TABLE it_vbakvbap FROM vbak INNER JOIN vbap

ON vbak~vbeln = vbap~vbeln WHERE vbak~vbeln IN s_vbeln. IF NOT it_vbakvbap[] IS INITIAL. SELECT kunnr name1 ort01 land1 adrnr INTO TABLE it_kna1 FROM kna1 FOR ALL ENTRIES IN it_vbakvbap WHERE kunnr = it_vbakvbap-kunnr. ENDIF. IF NOT it_kna1[] IS INITIAL. SELECT addrnumber smtp_addr INTO TABLE it_adr6 FROM adr6 FOR ALL ENTRIES IN it_kna1 WHERE addrnumber = it_kna1-adrnr. ENDIF. IF NOT it_vbakvbap[] IS INITIAL. SELECT vsbed vtext INTO TABLE it_tvsbt FROM tvsbt FOR ALL ENTRIES IN it_vbakvbap WHERE spras = sy-langu AND vsbed = it_vbakvbap-vsbed. ENDIF. LOOP AT it_vbakvbap. MOVE-CORRESPONDING it_vbakvbap TO it_final. READ TABLE it_kna1 WITH KEY kunnr = it_vbakvbap-kunnr. IF sy-subrc = 0. MOVE: it_kna1-name1 TO it_final-name1, it_kna1-ort01 TO it_final-ort01, it_kna1-land1 TO it_final-land1. ENDIF. READ TABLE it_tvsbt WITH KEY vsbed = it_vbakvbap-vsbed. IF sy-subrc = 0. MOVE:it_tvsbt-vtext TO it_final-vtext. ENDIF. READ TABLE it_adr6 WITH KEY addrnumber = it_kna1-adrnr. IF sy-subrc = 0. MOVE: it_adr6-smtp_addr TO it_final-smtp_addr. ENDIF. APPEND it_final. CLEAR:it_final,it_vbakvbap. ENDLOOP. DATA: V_count TYPE i, V_So TYPE i. LOOP AT it_final. AT FIRST. WRITE:/ 'Order', 10 'Item', 17 'Customer', 29 'Net Price', 45 'Material',57 'Description', 85 'Quantity', 105 'Shipping cond' ,

120 'Email address'. . WRITE: /(145) sy-uline. Endat. v_count = v_count + 1. AT NEW vbeln. WRITE:/ it_final-vbeln. v_so = v_so + 1. endat. break-point. WRITE:/10 it_final-posnr,17 it_final-kunnr,29 it_final-netwr LEFT-JUSTIFIED,45 it_final-matnr, 57 it_final-arktx,85 it_final-kwmeng LEFT-JUSTIFIED, 105 it_final-vtext,120 it_final-smtp_addr. AT END OF vbeln. WRITE:/(100) sy-uline. SUM. WRITE:/ 'Total for Sales Order',it_final-vbeln,'=', it_final-netwr. WRITE:/ 'Total Quantity',it_final-vbeln,'=', it_final-kwmeng. WRITE:/(145) sy-uline. ENDAT.

AT LAST. WRITE:/(145) sy-uline. sum. WRITE:/ ' Total number of netprice =',it_final-netwr. WRITE:/ 'Total number of quantity =',it_final-kwmeng. WRITE:/ 'Total number of records =',v_count. Write:/ 'Total number of sales orders =',V_so. Endat. Endloop.

Get the Emailaddress from kna1 and adr6 and Modularization with subrouins with Form....Endform: TYPES: BEGIN OF ty_vbakvbap, vbeln TYPE vbak-vbeln, vsbed TYPE vbak-vsbed, netwr TYPE vbak-netwr, kunnr TYPE vbak-kunnr, posnr TYPE vbap-posnr, matnr TYPE vbap-matnr, arktx TYPE vbap-arktx, kwmeng TYPE vbap-kwmeng, END OF ty_vbakvbap, ty_t_vbakvbap TYPE STANDARD TABLE OF ty_vbakvbap. TYPES: BEGIN OF ty_kna1, kunnr TYPE kna1-kunnr, name1 TYPE kna1-name1,

ort01 TYPE kna1-ort01, land1 TYPE kna1-land1, adrnr TYPE kna1-adrnr, END OF ty_kna1, ty_t_kna1 TYPE STANDARD TABLE OF ty_kna1. TYPES: BEGIN OF ty_tvsbt, vsbed TYPE tvsbt-vsbed, vtext TYPE tvsbt-vtext, END OF ty_tvsbt, ty_t_tvsbt TYPE STANDARD TABLE OF ty_tvsbt. TYPES: BEGIN OF ty_adr6, smtp_addr TYPE adr6-smtp_addr, addrnumber TYPE adr6-addrnumber, END OF ty_adr6, ty_t_adr6 TYPE STANDARD TABLE OF ty_adr6. TYPES: BEGIN OF ty_final, vbeln TYPE vbak-vbeln, vsbed TYPE vbak-vsbed, netwr TYPE vbak-netwr, kunnr TYPE vbak-kunnr, posnr TYPE vbap-posnr, matnr TYPE vbap-matnr, arktx TYPE vbap-arktx, kwmeng TYPE vbap-kwmeng, name1 TYPE kna1-name1, ort01 TYPE kna1-ort01, land1 TYPE kna1-land1, adrnr TYPE kna1-adrnr, vtext TYPE tvsbt-vtext, addrnumber TYPE adr6-addrnumber, smtp_addr TYPE adr6-smtp_addr, END OF ty_final, ty_t_final TYPE STANDARD TABLE OF ty_final. DATA: it_vbakvbap TYPE ty_t_vbakvbap WITH HEADER LINE, it_kna1 TYPE ty_t_kna1 WITH HEADER LINE, it_tvsbt TYPE ty_t_tvsbt WITH HEADER LINE, it_adr6 TYPE ty_t_adr6 WITH HEADER LINE, it_final TYPE ty_t_final WITH HEADER LINE. TABLES vbak. SELECT-OPTIONS:s_vbeln FOR vbak-vbeln," OBLIGATORY, s_audat FOR vbak-audat. PARAMETERS:p_auart TYPE vbak-auart DEFAULT 'OR'. INITIALIZATION. s_audat-sign = 'I'. s_audat-option = 'BT'. s_audat-low = sy-datum. s_audat-low+6(2) = '01'. s_audat-low+0(4) = s_audat-low+0(4) - 1. s_audat-high = sy-datum. APPEND s_audat. AT SELECTION-SCREEN ON p_auart.

PERFORM validate_auart. AT SELECTION-SCREEN. PERFORM validate_date. START-OF-SELECTION. * Fetch from vbakvbap. PERFORM fetch_vbakvbap. *Fetch the customer details. PERFORM fetch_customerdetails. *Get the shipping conditions. PERFORM fetch_shipping. *Prepare the final internal table. PERFORM prepare_final. END-OF-SELECTION. *Display the final internal table. PERFORM display_data.

*&--------------------------------------------------------------------* *& Form fetch_vbakvbap *&--------------------------------------------------------------------* * text *---------------------------------------------------------------------* * --> p1 text * <-- p2 text *---------------------------------------------------------------------* FORM fetch_vbakvbap . SELECT vbak~vbeln vbak~vsbed vbap~netwr vbak~kunnr vbap~posnr vbap~matnr vbap~arktx vbap~kwmeng INTO TABLE it_vbakvbap FROM vbak INNER JOIN vbap ON vbak~vbeln = vbap~vbeln WHERE vbak~vbeln IN s_vbeln * AT SELECTION-SCREEN ON p_auart. * PERFORM validate_auart. * *AT SELECTION-SCREEN. * PERFORM validate_date. * *START-OF-SELECTION. *ENDFORM. " fetch_vbakvbap *&--------------------------------------------------------------------* *& Form fetch_customerdetails *&--------------------------------------------------------------------* * text *---------------------------------------------------------------------* * --> p1 text * <-- p2 text

*---------------------------------------------------------------------* FORM fetch_customerdetails . IF NOT it_vbakvbap[] IS INITIAL. SELECT kunnr name1 ort01 land1 adrnr INTO TABLE it_kna1 FROM kna1 FOR ALL ENTRIES IN it_vbakvbap WHERE kunnr = it_vbakvbap-kunnr. AND ENDIF. IF NOT it_kna1[] IS INITIAL. SELECT smtp_addr addrnumber INTO TABLE it_adr6 FROM adr6 FOR ALL ENTRIES IN it_kna1 WHERE addrnumber = it_kna1-adrnr. ENDIF.

ENDFORM. " fetch_customerdetails *&--------------------------------------------------------------------* *& Form fetch_shipping *&--------------------------------------------------------------------* * text *---------------------------------------------------------------------* * --> p1 text * <-- p2 text *---------------------------------------------------------------------* FORM fetch_shipping . IF NOT it_vbakvbap[] IS INITIAL. SELECT vsbed vtext INTO TABLE it_tvsbt FROM tvsbt FOR ALL ENTRIES IN it_vbakvbap WHERE spras = sy-langu AND vsbed = it_vbakvbap-vsbed. ENDIF. ENDFORM. " fetch_shipping *&--------------------------------------------------------------------* *& Form prepare_final *&--------------------------------------------------------------------* * text *---------------------------------------------------------------------* * --> p1 text * <-- p2 text *---------------------------------------------------------------------* FORM prepare_final . LOOP AT it_vbakvbap.

MOVE-CORRESPONDING it_vbakvbap TO it_final. READ TABLE it_kna1 WITH KEY kunnr = it_vbakvbap-kunnr. IF sy-subrc = 0. MOVE: it_kna1-name1 TO it_final-name1, it_kna1-ort01 TO it_final-ort01, it_kna1-land1 TO it_final-land1. ENDIF. READ TABLE it_tvsbt WITH KEY vsbed = it_vbakvbap-vsbed. IF sy-subrc = 0. MOVE: it_tvsbt-vtext TO it_final-vtext. ENDIF. READ TABLE it_adr6 WITH KEY addrnumber = it_kna1-adrnr. IF sy-subrc = 0. MOVE it_adr6-smtp_addr TO it_final-smtp_addr. ENDIF. APPEND it_final. CLEAR:it_final,it_vbakvbap. ENDLOOP. ENDFORM. " prepare_final *&--------------------------------------------------------------------* *& Form display_data *&--------------------------------------------------------------------* * text *---------------------------------------------------------------------* * --> p1 text * <-- p2 text *---------------------------------------------------------------------* FORM display_data . DATA:v_count TYPE i, v_so TYPE i. LOOP AT it_final. AT FIRST. WRITE:/ 'Order', 10 'Item', 17 'Customer', 29 'Net Price', 45 'Material',57 'Description', 85 'Quantity', 105 'Shipping cond' , 120 'Email address'. WRITE : /(130) sy-uline. ENDAT. v_count = v_count + 1. AT NEW vbeln. WRITE:/ it_final-vbeln. v_so = v_so + 1. ENDAT. WRITE: /10 it_final-posnr,17 it_final-kunnr,29 it_final-netwr LEFT-JUSTIFIED,45 it_final-matnr,57 it_final-arktx,85

it_final-kwmeng LEFT-JUSTIFIED,105 it_final-vtext,120 it_final-smtp_addr. AT LAST. WRITE:/(135) sy-uline, / 'total number of records =', v_count, / 'Total number of sales order =', v_so. ENDAT. ENDLOOP. ENDFORM. "display_data

* Without Header Line: *Tables vbak. *TYPES: BEGIN OF b_vbakvbap, * vbeln TYPE vbak-vbeln, * netwr TYPE vbak-netwr, * kunnr TYPE vbak-kunnr, * posnr TYPE vbap-posnr, * matnr TYPE vbap-matnr, * arktx TYPE vbap-arktx, * kwmeng TYPE vbap-kwmeng, *END OF b_vbakvbap. *DATA it_vbakvbap type TABLE OF b_vbakvbap. *DATA WA_vbakvbap type b_vbakvbap. *Select-options s_vbeln FOR vbak-vbeln. *SELECT vbak~vbeln vbak~netwr vbak~kunnr * vbap~posnr vbap~matnr * vbap~arktx vbap~kwmeng *INTO TABLE it_vbakvbap *FROM vbak *INNER JOIN vbap *ON vbak~vbeln = vbap~vbeln *WHERE vbak~vbeln in S_vbeln. * *Data: V_count type i, * v_so type i. * *LOOP AT it_vbakvbap into wa_vbakvbap. *At first. *Write: / 'Salesorder no',20 'Netprice',45 'sold to party',65 'item',85 *'Matr number',105 'description',135 'Quantity'. *Write:/(145) sy-uline. *Endat. * *At New vbeln. *V_so = V_so + 1. *Write:/ wa_vbakvbap-vbeln. *Endat. *V_count = V_count + 1. * * WRITE:/20 wa_vbakvbap-netwr LEFT-JUSTIFIED,45 *wa_vbakvbap-kunnr, *65 wa_vbakvbap-posnr,85 wa_vbakvbap-matnr,105 wa_vbakvbap-arktx, *135 wa_vbakvbap-kwmeng LEFT-JUSTIFIED. * *At End of vbeln. *sum. *Write:/ 'Total netprice',wa_vbakvbap-netwr.

*Write:/ 'Total Quantity',wa_vbakvbap-kwmeng. *Write:/(145) sy-uline. *endat. * * *At Last. *sum. *Write:/ 'Total records =', V_count, * / 'Total sales order =', V_SO, * / 'Total Netprice',wa_vbakvbap-netwr, * / 'Total Quantity',wa_vbakvbap-kwmeng. *Endat. * *ENDLOOP. *&--------------------------------------------------------------------* *& Form out_data *&--------------------------------------------------------------------* * text *---------------------------------------------------------------------* * --> p1 text * <-- p2 text *---------------------------------------------------------------------* form out_data . endform. " out_data

Endform. &---------------------------------------------------------------------* & Form validate_auart &---------------------------------------------------------------------* text ----------------------------------------------------------------------* --> p1 text <-- p2 text ----------------------------------------------------------------------* FORM validate_auart . DATA:v_auart TYPE vbak-auart. SELECT SINGLE auart FROM vbak INTO v_auart WHERE auart = p_auart. IF sy-subrc <> 0. MESSAGE 'No record for the specified doc type' TYPE 'E'. ENDIF. ENDFORM. " validate_auart *&--------------------------------------------------------------------* *& Form validate_date *&--------------------------------------------------------------------* * text *---------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------

* FORM validate_date . IF s_audat-high > sy-datum. MESSAGE 'Date is greater than today' TYPE 'E'. ENDIF. ENDFORM. " validate_date

* OPEN SALES ORDER. TABLES vbak. SELECT-OPTIONS: s_vbeln FOR vbak-vbeln." no intervals no-extension. data: v_c type i. data: v_r type i. *structure vbakvbap. DATA:BEGIN OF x_vbakvbap, vbeln TYPE vbak-vbeln, kunnr TYPE vbak-kunnr, vdatu TYPE vbak-vdatu, bstnk TYPE vbak-bstnk, posnr TYPE vbap-posnr, matnr TYPE vbap-matnr, kwmeng TYPE vbap-kwmeng, konda TYPE vbkd-konda, kdgrp TYPE vbkd-kdgrp, pltyp TYPE vbkd-pltyp, END OF x_vbakvbap. *structure x_kna1. DATA: BEGIN OF x_kna1, kunnr TYPE kna1-kunnr, name1 TYPE kna1-name1, ort01 TYPE kna1-ort01, land1 TYPE kna1-land1, END OF x_kna1. * structure T188T DATA: BEGIN OF x_t188t, konda TYPE t188t-konda, vtext TYPE t188t-vtext, END OF x_t188t. * structure T151T DATA: BEGIN OF x_t151t, kdgrp TYPE t151t-kdgrp, ktext TYPE t151t-ktext, END OF x_t151t. *structure T189T DATA: BEGIN OF x_t189t, pltyp TYPE t189t-pltyp, ptext TYPE t189t-ptext, END OF x_t189t.

* structure VBUK, Data: Begin of x_vbuk, vbeln type vbuk-vbeln, lfstk type vbuk-lfstk, End of x_vbuk. *final structure. DATA: BEGIN OF x_final, vbeln TYPE vbak-vbeln, kunnr TYPE vbak-kunnr, vdatu TYPE vbak-vdatu, bstnk TYPE vbak-bstnk, posnr TYPE vbap-posnr, matnr TYPE vbap-matnr, kwmeng TYPE vbap-kwmeng, name1 TYPE kna1-name1, ort01 TYPE kna1-ort01, land1 TYPE kna1-land1, konda TYPE vbkd-konda, kdgrp TYPE vbkd-kdgrp, pltyp TYPE vbkd-pltyp, vtext TYPE t188t-vtext, ktext TYPE t151t-ktext, ptext TYPE t189t-ptext, lfstk type vbuk-lfstk, END OF x_final. *internal tables. DATA: it_vbakvbap LIKE TABLE OF x_vbakvbap WITH HEADER LINE, it_kna1 LIKE TABLE OF x_kna1 WITH HEADER LINE, it_final LIKE TABLE OF x_final WITH HEADER LINE, it_t188t LIKE TABLE OF x_t188t WITH HEADER LINE, it_t151t LIKE TABLE OF x_t151t WITH HEADER LINE, it_t189t LIKE TABLE OF x_t189t WITH HEADER LINE, it_vbuk like table of x_vbuk with header line. SELECT vbak~vbeln vbak~kunnr vbak~vdatu vbak~bstnk vbap~posnr vbap~matnr vbap~kwmeng vbkd~konda vbkd~kdgrp vbkd~pltyp INTO TABLE it_vbakvbap FROM ( vbak INNER JOIN vbap ON vbak~vbeln = vbap~vbeln ) INNER JOIN vbkd ON vbak~vbeln = vbkd~vbeln WHERE vbak~vbeln IN s_vbeln. IF NOT it_vbakvbap[] IS INITIAL. SELECT kunnr name1 ort01 land1 INTO TABLE it_kna1 FROM kna1 FOR ALL ENTRIES IN it_vbakvbap WHERE kunnr = it_vbakvbap-kunnr. SELECT konda vtext INTO TABLE it_t188t FROM t188t FOR ALL ENTRIES IN it_vbakvbap WHERE spras = 'E' AND konda = it_vbakvbap-konda. SELECT kdgrp ktext INTO TABLE it_t151t FROM t151t FOR ALL ENTRIES IN it_vbakvbap

WHERE spras = 'E' AND kdgrp = it_vbakvbap-kdgrp. SELECT pltyp ptext INTO TABLE it_t189t FROM t189t FOR ALL ENTRIES IN it_vbakvbap WHERE spras = 'E' AND pltyp = it_vbakvbap-pltyp. Select vbeln lfstk INTO table it_vbuk from vbuk For all entries in it_vbakvbap where vbeln = it_vbakvbap-vbeln. ENDIF. LOOP AT it_vbakvbap. MOVE-CORRESPONDING it_vbakvbap TO it_final. READ TABLE it_kna1 WITH KEY kunnr = it_vbakvbap-kunnr. IF sy-subrc = 0. MOVE-CORRESPONDING it_kna1 TO it_final. ENDIF. READ TABLE it_t188t WITH KEY konda = it_vbakvbap-konda. IF sy-subrc = 0. MOVE-CORRESPONDING it_t188t TO it_final. ENDIF. READ TABLE it_t151t WITH KEY kdgrp = it_vbakvbap-kdgrp. IF sy-subrc = 0. MOVE-CORRESPONDING it_t151t TO it_final. ENDIF. READ TABLE it_t189t WITH KEY pltyp = it_vbakvbap-pltyp. IF sy-subrc = 0. MOVE-CORRESPONDING it_t189t TO it_final. ENDIF. READ TABLE it_vbuk WITH KEY vbeln = it_vbakvbap-vbeln. IF sy-subrc = 0. MOVE-CORRESPONDING it_vbuk TO it_final. ENDIF. APPEND it_final. ENDLOOP.

LOOP AT it_final. AT FIRST. WRITE:/ 'sales',15 'item',30 'material',40 'date',54 'customer',65 'po', 75 'name', 95 'city',105 'country',115 'pricegroup', 135 'customergroup',160 'pricelist',180 'qty',190 'delivery status'. ULINE. ENDAT. AT NEW vbeln. WRITE:/ it_final-vbeln. ENDAT. v_c = v_c + 1.

WRITE:/15 it_final-posnr,30 it_final-matnr,40 it_final-vdatu,54 it_final-kunnr,65 it_final-bstnk , 75 it_final-name1,95 it_final-ort01,105 it_final-land1,115 it_final-vtext,135 it_final-ktext,160 it_final-ptext,168 it_final-kwmeng ,190 it_final-lfstk. AT END OF vbeln. uline. SUM. WRITE:/ 'total qty:', it_final-kwmeng. write:/ 'no. of records for',it_final-vbeln ,':', v_c. clear v_C. ULINE. ENDAT. v_r = v_r + 1. AT LAST. SUM. WRITE:/ 'total qty:', it_final-kwmeng. write:/ 'total no. of records:',v_r. ULINE. ENDAT. ENDLOOP.

Stock document: Tables vbak. DATA: BEGIN OF ty_msegmkpf, mblnr TYPE mkpf-mblnr, mjahr TYPE mkpf-mjahr, vgart TYPE mkpf-vgart, zeile TYPE mseg-zeile, line_id TYPE mseg-line_id, parent_id TYPE mseg-parent_id, END OF ty_msegmkpf, it_msegmkpf like table of ty_msegmkpf with header line. PARAMETERS: p_mblnr TYPE ZMSEGMKPF-mblnr. SELECT a~mblnr a~mjahr a~vgart b~LINE_ID b~PARENT_ID b~ZEILE INTO TABLE it_msegmkpf *FROM mkpf inner join mseg from mkpf as a inner join mseg as b on a~mblnr = b~mblnr WHERE a~mblnr = p_mblnr. *Write: / 'Number of Matnr doc','Material doc year','Item in matnr doc','Unique Identification','Transaction event','Identtifier of immediately superierline'. LOOP AT it_msegmkpf.

WRITE:/ it_msegmkpf-mblnr,it_msegmkpf-mjahr,it_msegmkpf-ZEILE, it_msegmkpf-LINE_ID,it_msegmkpf-vgart,it_msegmkpf-parent_ID. Endloop.

* Countries: tables:t005. *data: rep like sy-repid. DATA: BEGIN OF x_t005, land1 TYPE t005-land1, landk TYPE t005-landk, lnplz TYPE t005-lnplz, prplz TYPE t005-prplz, addrs TYPE t005-addrs, xplzs TYPE t005-xplzs, spras TYPE t005-spras, END OF x_t005. data: it_t005 like table of x_t005 with header line. parameters: P_land1 type t005-land1. select t005~land1 t005~landk t005~lnplz t005~prplz t005~addrs t005~xplzs t005~spras into table it_t005 from t005 where t005~land1 = p_land1. * select * from t005 into corresponding fields of table it_t005. ** ** CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' ** EXPORTING *** I_INTERFACE_CHECK ='' *** I_BYPASSING_BUFFER ='' *** I_BUFFER_ACTIVE ='' ** I_CALLBACK_PROGRAM = 'rep' *** I_CALLBACK_PF_STATUS_SET ='' *** I_CALLBACK_USER_COMMAND ='' *** I_CALLBACK_TOP_OF_PAGE ='' *** I_CALLBACK_HTML_TOP_OF_PAGE ='' *** I_CALLBACK_HTML_END_OF_LIST ='' *** I_STRUCTURE_NAME = *** I_BACKGROUND_ID ='' *** I_GRID_TITLE = *** I_GRID_SETTINGS = *** IS_LAYOUT = *** IT_FIELDCAT = *** IT_EXCLUDING = *** IT_SPECIAL_GROUPS = *** IT_SORT = *** IT_FILTER = *** IS_SEL_HIDE = *** I_DEFAULT = 'X' *** I_SAVE ='' *** IS_VARIANT = *** IT_EVENTS = *** IT_EVENT_EXIT =

*** IS_PRINT = *** IS_REPREP_ID = *** I_SCREEN_START_COLUMN =0 *** I_SCREEN_START_LINE =0 *** I_SCREEN_END_COLUMN =0 *** I_SCREEN_END_LINE =0 *** IT_ALV_GRAPHICS = *** IT_HYPERLINK = *** IT_ADD_FIELDCAT = *** IT_EXCEPT_QINFO = *** I_HTML_HEIGHT_TOP = *** I_HTML_HEIGHT_END = *** IMPORTING *** E_EXIT_CAUSED_BY_CALLER = *** ES_EXIT_CAUSED_BY_USER = ** TABLES ** t_outtab = it_t005 *** EXCEPTIONS *** PROGRAM_ERROR =1 *** OTHERS =2 ** . ** IF sy-subrc <> 0. *** MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO *** WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ** ENDIF. * * *CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY' * EXPORTING ** I_INTERFACE_CHECK ='' ** I_BYPASSING_BUFFER = ** I_BUFFER_ACTIVE ='' * I_CALLBACK_PROGRAM = 'rep' ** I_CALLBACK_PF_STATUS_SET ='' ** I_CALLBACK_USER_COMMAND ='' ** I_STRUCTURE_NAME = ** IS_LAYOUT = ** IT_FIELDCAT = ** IT_EXCLUDING = ** IT_SPECIAL_GROUPS = ** IT_SORT = ** IT_FILTER = ** IS_SEL_HIDE = ** I_DEFAULT = 'X' ** I_SAVE ='' ** IS_VARIANT = ** IT_EVENTS = ** IT_EVENT_EXIT = ** IS_PRINT = ** IS_REPREP_ID = ** I_SCREEN_START_COLUMN =0 ** I_SCREEN_START_LINE =0 ** I_SCREEN_END_COLUMN =0 ** I_SCREEN_END_LINE =0 ** IMPORTING ** E_EXIT_CAUSED_BY_CALLER = ** ES_EXIT_CAUSED_BY_USER = * TABLES * t_outtab = it_t005 ** EXCEPTIONS ** PROGRAM_ERROR =1

** OTHERS =2 * . *IF sy-subrc <> 0. ** MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO ** WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. *ENDIF. *

loop at it_t005. write:/ it_t005-land1,10 it_t005-landk,20 it_t005-lnplz,30 it_t005-prplz,40 it_t005-addrs,50 it_t005-xplzs,60 it_t005-spras. endloop.

*REPORT zlr_salesorder

LINE-SIZE 255

* selection option for sales order. TABLES vbak. TYPE-POOLS slis. SELECT-OPTIONS: s_vbeln FOR vbak-vbeln DEFAULT '5006' TO '5009'. * structure for vbak vbap and vbkd and vbpa. DATA: BEGIN OF x_vbakvbap, vbeln TYPE vbak-vbeln, vdatu TYPE vbak-vdatu, vsbed TYPE vbak-vsbed, kunnr TYPE vbak-kunnr, knumv TYPE vbak-knumv, posnr TYPE vbap-posnr, matnr TYPE vbap-matnr, kwmeng TYPE vbap-kwmeng, netwr TYPE vbap-netwr, fkrel TYPE vbap-fkrel, pltyp TYPE vbkd-pltyp, konda TYPE vbkd-konda, kzazu TYPE vbkd-kzazu, lfstk TYPE vbuk-lfstk,

END OF x_vbakvbap. * sold , ship and bill to party details from vbpa. DATA: BEGIN OF x_vbpa, vbeln TYPE vbpa-vbeln, parvw TYPE vbpa-parvw, kunnr TYPE vbpa-kunnr, END OF x_vbpa. *structure for shipping conditions description. vsbed - vtext. DATA: BEGIN OF x_tvsbt, vsbed TYPE tvsbt-vsbed,

s_vtext TYPE tvsbt-vtext, END OF x_tvsbt. * structure T188T DATA: BEGIN OF x_t188t, konda TYPE t188t-konda, vtext TYPE t188t-vtext, END OF x_t188t. * structure T189T DATA: BEGIN OF x_t189t, pltyp TYPE t189t-pltyp, ptext TYPE t189t-ptext, END OF x_t189t. * structure for customer details from kna1. DATA: BEGIN OF x_kna1, kunnr TYPE kna1-kunnr, name1 TYPE kna1-name1, ort01 TYPE kna1-ort01, stras TYPE kna1-stras, END OF x_kna1. * structure for final table. DATA: BEGIN OF x_final, vbeln TYPE vbak-vbeln, vdatu TYPE vbak-vdatu, vsbed TYPE vbak-vsbed, knumv TYPE vbak-knumv, posnr TYPE vbap-posnr, matnr TYPE vbap-matnr, kwmeng TYPE vbap-kwmeng, netwr TYPE vbap-netwr, fkrel TYPE vbap-fkrel, pltyp TYPE vbkd-pltyp, konda TYPE vbkd-konda, kzazu TYPE vbkd-kzazu, kunnr TYPE vbpa-kunnr, parvw TYPE vbpa-parvw, sp_name1 TYPE kna1-name1, sp_ort01 TYPE kna1-ort01, sp_stras TYPE kna1-stras, sh_name1 TYPE kna1-name1, sh_ort01 TYPE kna1-ort01, sh_stras TYPE kna1-stras, vtext TYPE t188t-vtext, ptext TYPE t189t-ptext, lfstk TYPE vbuk-lfstk, s_vtext TYPE tvsbt-vtext, END OF x_final. DATA: it_vbakvbap LIKE TABLE OF x_vbakvbap WITH HEADER LINE, it_kna1 LIKE TABLE OF x_kna1 WITH HEADER LINE, it_vbpa LIKE TABLE OF x_vbpa WITH HEADER LINE, it_final LIKE TABLE OF x_final WITH HEADER LINE, it_t188t LIKE TABLE OF x_t188t WITH HEADER LINE, it_t189t LIKE TABLE OF x_t189t WITH HEADER LINE,

it_tvsbt LIKE TABLE OF x_tvsbt WITH HEADER LINE, it_konv LIKE TABLE OF x_konv WITH HEADER LINE, it_fcat TYPE slis_t_fieldcat_alv, wa_fcat TYPE slis_fieldcat_alv.

START-OF-SELECTION. PERFORM get_vbakvbap. PERFORM get_details. PERFORM prepare_final. PERFORM fieldcat. END-OF-SELECTION. PERFORM dislay. *&---------------------------------------------------------------------* *& Form get_vbakvbap *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM get_vbakvbap . SELECT vbak~vbeln vbak~vdatu vbak~vsbed vbak~kunnr vbak~knumv vbap~posnr vbap~matnr vbap~kwmeng vbap~netwr vbap~fkrel vbkd~pltyp vbkd~konda vbkd~kzazu vbuk~lfstk INTO TABLE it_vbakvbap FROM ( vbak INNER JOIN vbap ON vbak~vbeln = vbap~vbeln ) INNER JOIN vbkd ON vbak~vbeln = vbkd~vbeln INNER JOIN vbuk ON vbak~vbeln = vbuk~vbeln WHERE lfstk = 'C' AND vbak~vbeln IN s_vbeln. ENDFORM. " get_vbakvbap *&---------------------------------------------------------------------* *& Form get_details *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM get_details . IF NOT it_vbakvbap[] IS INITIAL. SELECT konda vtext INTO TABLE it_t188t FROM t188t FOR ALL ENTRIES IN it_vbakvbap WHERE spras = 'E' AND konda = it_vbakvbap-konda. SELECT pltyp ptext INTO TABLE it_t189t FROM t189t FOR ALL ENTRIES IN it_vbakvbap WHERE spras = 'E' AND pltyp = it_vbakvbap-pltyp. SELECT vsbed vtext INTO TABLE it_tvsbt FROM tvsbt FOR ALL ENTRIES IN it_vbakvbap WHERE spras = 'E' AND vsbed = it_vbakvbap-vsbed. SELECT vbeln parvw kunnr

INTO TABLE it_vbpa FROM vbpa FOR ALL ENTRIES IN it_vbakvbap WHERE vbeln = it_vbakvbap-vbeln. IF NOT it_vbpa[] IS INITIAL. SELECT kunnr name1 ort01 stras INTO TABLE it_kna1 FROM kna1 FOR ALL ENTRIES IN it_vbpa WHERE kunnr = it_vbpa-kunnr. ENDIF. ENDIF.

ENDFORM. " get_details *&---------------------------------------------------------------------* *& Form prepare_final *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM prepare_final . LOOP AT it_vbakvbap. MOVE-CORRESPONDING it_vbakvbap TO it_final. *Sold to party READ TABLE it_vbpa WITH KEY vbeln = it_vbakvbap-vbeln parvw = 'AG'. IF sy-subrc = 0. READ TABLE it_kna1 WITH KEY kunnr = it_vbpa-kunnr. IF sy-subrc = 0. MOVE: it_kna1-name1 TO it_final-sp_name1, it_kna1-ort01 TO it_final-sp_ort01, it_kna1-stras TO it_final-sp_stras. ENDIF. ENDIF. *Ship to party READ TABLE it_vbpa WITH KEY vbeln = it_vbakvbap-vbeln parvw = 'WE'. IF sy-subrc = 0. READ TABLE it_kna1 WITH KEY kunnr = it_vbpa-kunnr. IF sy-subrc = 0. MOVE: it_kna1-name1 TO it_final-sh_name1, it_kna1-ort01 TO it_final-sh_ort01, it_kna1-stras TO it_final-sh_stras. ENDIF. ENDIF. READ TABLE it_t188t WITH KEY konda = it_vbakvbap-konda. IF sy-subrc = 0. MOVE-CORRESPONDING it_t188t TO it_final. ENDIF. READ TABLE it_t189t WITH KEY pltyp = it_vbakvbap-pltyp. IF sy-subrc = 0. MOVE-CORRESPONDING it_t189t TO it_final. ENDIF. READ TABLE it_tvsbt WITH KEY vsbed = it_vbakvbap-vsbed. IF sy-subrc = 0.

MOVE-CORRESPONDING it_tvsbt TO it_final. ENDIF. IF it_vbakvbap-fkrel = ' '. CLEAR it_final-fkrel. ELSE. it_final-fkrel = 'X'. ENDIF. IF it_vbakvbap-kzazu = ' '. CLEAR it_final-kzazu. ELSE. it_final-kzazu = 'X'. ENDIF. APPEND it_final. ENDLOOP. ENDFORM. " prepare_final *&---------------------------------------------------------------------* *& Form dislay *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM dislay . DATA:layout TYPE slis_layout_alv, it_exclude TYPE slis_t_extab, it_event TYPE slis_t_event, wa_event TYPE slis_alv_event. wa_event-name = 'TOP_OF_PAGE'. wa_event-form = 'TOP_OF_PAGE'. APPEND wa_event TO it_event. layout-colwidth_optimize = 'X'. layout-zebra = 'X'. layout-totals_text = 'Total'. layout-edit = 'X'. APPEND '&ILT' TO it_exclude. * APPEND '&UMC' TO it_exclude. CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING * I_INTERFACE_CHECK ='' * I_BYPASSING_BUFFER ='' * I_BUFFER_ACTIVE ='' i_callback_program = sy-cprog * I_CALLBACK_PF_STATUS_SET ='' i_callback_user_command = 'USER_COMMAND' * i_callback_top_of_page = 'TOP_OF_PAGE' * I_CALLBACK_HTML_TOP_OF_PAGE ='' * I_CALLBACK_HTML_END_OF_LIST ='' * I_STRUCTURE_NAME = * I_BACKGROUND_ID ='' i_grid_title = 'Sales Order Details' * I_GRID_SETTINGS = is_layout = layout it_fieldcat = it_fcat it_excluding = it_exclude

* * * * * * *

IT_SPECIAL_GROUPS = IT_SORT = IT_FILTER = IS_SEL_HIDE = I_DEFAULT = 'X' I_SAVE ='' IS_VARIANT = it_events = it_event * IT_EVENT_EXIT = * IS_PRINT = * IS_REPREP_ID = * I_SCREEN_START_COLUMN =0 * I_SCREEN_START_LINE =0 * I_SCREEN_END_COLUMN =0 * I_SCREEN_END_LINE =0 * IT_ALV_GRAPHICS = * IT_HYPERLINK = * IT_ADD_FIELDCAT = * IT_EXCEPT_QINFO = * I_HTML_HEIGHT_TOP = * I_HTML_HEIGHT_END = * IMPORTING * E_EXIT_CAUSED_BY_CALLER = * ES_EXIT_CAUSED_BY_USER = TABLES t_outtab = it_final * EXCEPTIONS * PROGRAM_ERROR =1 * OTHERS =2 . 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. " dislay *&---------------------------------------------------------------------* *& Form fieldcat *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM fieldcat . wa_fcat-fieldname = 'VBELN'. wa_fcat-tabname = 'IT_FINAL'. wa_fcat-seltext_m = 'Sales Order'. wa_fcat-key = 'X'. APPEND wa_fcat TO it_fcat. CLEAR wa_fcat. wa_fcat-fieldname = 'POSNR'. wa_fcat-tabname = 'IT_FINAL'. wa_fcat-seltext_m = 'Item'. wa_fcat-key = 'X'. APPEND wa_fcat TO it_fcat. CLEAR wa_fcat. wa_fcat-fieldname = 'MATNR'. wa_fcat-tabname = 'IT_FINAL'.

wa_fcat-seltext_m = 'Material'. APPEND wa_fcat TO it_fcat. CLEAR wa_fcat. wa_fcat-fieldname = 'KWMENG'. wa_fcat-tabname = 'IT_FINAL'. wa_fcat-seltext_m = 'Quantity'. * wa_fcat-edit = 'X'. APPEND wa_fcat TO it_fcat. CLEAR wa_fcat. wa_fcat-fieldname = 'NETWR'. wa_fcat-tabname = 'IT_FINAL'. wa_fcat-seltext_m = 'Net Value'. wa_fcat-do_sum = 'X'. wa_fcat-just = 'L'. APPEND wa_fcat TO it_fcat. CLEAR wa_fcat. wa_fcat-fieldname = 'VDATU'. wa_fcat-tabname = 'IT_FINAL'. wa_fcat-seltext_m = 'Req Del Date'. APPEND wa_fcat TO it_fcat. CLEAR wa_fcat. wa_fcat-fieldname = 'FKREL'. wa_fcat-tabname = 'IT_FINAL'. wa_fcat-seltext_m = 'Rel for del.'. wa_fcat-checkbox = 'X'. APPEND wa_fcat TO it_fcat. CLEAR wa_fcat. wa_fcat-fieldname = 'KZAZU'. wa_fcat-tabname = 'IT_FINAL'. wa_fcat-seltext_m = 'Ord Combination'. wa_fcat-checkbox = 'X'. APPEND wa_fcat TO it_fcat. CLEAR wa_fcat. wa_fcat-fieldname = 'SP_NAME1'. wa_fcat-tabname = 'IT_FINAL'. wa_fcat-seltext_m = 'Sold To Name'. APPEND wa_fcat TO it_fcat. CLEAR wa_fcat. wa_fcat-fieldname = 'SP_ORT01'. wa_fcat-tabname = 'IT_FINAL'. wa_fcat-seltext_m = 'Sold to City'. APPEND wa_fcat TO it_fcat. CLEAR wa_fcat. wa_fcat-fieldname = 'SP_STRAS'. wa_fcat-tabname = 'IT_FINAL'. wa_fcat-seltext_m = 'Sold To Street'. APPEND wa_fcat TO it_fcat. CLEAR wa_fcat. wa_fcat-fieldname = 'SH_NAME1'. wa_fcat-tabname = 'IT_FINAL'. wa_fcat-seltext_m = 'Ship To Name'. APPEND wa_fcat TO it_fcat.

CLEAR wa_fcat. wa_fcat-fieldname = 'SH_ORT01'. wa_fcat-tabname = 'IT_FINAL'. wa_fcat-seltext_m = 'Ship to City'. APPEND wa_fcat TO it_fcat. CLEAR wa_fcat. wa_fcat-fieldname = 'SH_STRAS'. wa_fcat-tabname = 'IT_FINAL'. wa_fcat-seltext_m = 'Ship To Street'. APPEND wa_fcat TO it_fcat. CLEAR wa_fcat. wa_fcat-fieldname = 'VTEXT'. wa_fcat-tabname = 'IT_FINAL'. wa_fcat-seltext_m = 'Price Group'. APPEND wa_fcat TO it_fcat. CLEAR wa_fcat. wa_fcat-fieldname = 'PTEXT'. wa_fcat-tabname = 'IT_FINAL'. wa_fcat-seltext_m = 'Customer Group'. APPEND wa_fcat TO it_fcat. CLEAR wa_fcat. wa_fcat-fieldname = 'S_VTEXT'. wa_fcat-tabname = 'IT_FINAL'. wa_fcat-seltext_m = 'Shipping Conditions'. APPEND wa_fcat TO it_fcat. CLEAR wa_fcat. wa_fcat-fieldname = 'KNUMV'. wa_fcat-tabname = 'IT_FINAL'. wa_fcat-seltext_m = 'Doc condition'. APPEND wa_fcat TO it_fcat. CLEAR wa_fcat. * * * * * * wa_fcat-fieldname = 'kbetr'. wa_fcat-tabname = 'IT_FINAL'. wa_fcat-seltext_m = 'rate'. APPEND wa_fcat TO it_fcat. CLEAR wa_fcat.

ENDFORM. " fieldcat *&--------------------------------------------------------------------* *& Form top_of_page *&--------------------------------------------------------------------* * text *---------------------------------------------------------------------* FORM top_of_page. DATA:it_header TYPE slis_t_listheader, wa_header TYPE slis_listheader. wa_header-typ = 'H'. wa_header-info = 'Open Orders'. APPEND wa_header TO it_header. wa_header-typ = 'S'. wa_header-key = 'Run Date'.

CALL FUNCTION 'CONVERT_DATE_TO_EXTERNAL' EXPORTING date_internal = sy-datum IMPORTING date_external = wa_header-info * EXCEPTIONS * DATE_INTERNAL_IS_INVALID =1 * OTHERS =2 . IF sy-subrc <> 0. * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDIF. * wa_header-info = sy-datum. APPEND wa_header TO it_header. CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE' EXPORTING it_list_commentary = it_header * I_LOGO = * I_END_OF_LIST_GRID = . ENDFORM. "top_of_page

*&--------------------------------------------------------------------* *& Form user_command *&--------------------------------------------------------------------* * text *---------------------------------------------------------------------* * -->R_UCOMM text * -->RS_SELFIELDtext *---------------------------------------------------------------------* FORM user_command USING r_ucomm LIKE sy-ucomm rs_selfield TYPE slis_selfield. DATA:v_vbeln TYPE vbak-vbeln. IF r_ucomm = '&IC1'. IF rs_selfield-fieldname = 'VBELN'. v_vbeln = rs_selfield-value. SET PARAMETER ID 'AUN' FIELD v_vbeln. CALL TRANSACTION 'VA03'. ENDIF. ENDIF. ENDFORM. "user_command

Currency exchange rate uploading using BAPI PROG: PARAMETERS:p_kunnr TYPE bapi1007-customer OBLIGATORY, p_vkorg TYPE bapiorders-sales_org OBLIGATORY. DATA:v_return TYPE bapireturn, it_order TYPE TABLE OF bapiorders WITH HEADER LINE. CALL FUNCTION 'BAPI_SALESORDER_GETLIST' EXPORTING customer_number = p_kunnr sales_organization = p_vkorg

* MATERIAL = * DOCUMENT_DATE = * DOCUMENT_DATE_TO = * PURCHASE_ORDER = * TRANSACTION_GROUP =0 * PURCHASE_ORDER_NUMBER = IMPORTING return = v_return TABLES sales_orders = it_order. IF v_return-type = 'E'. WRITE:/ v_return-message. ELSE. LOOP AT it_order. WRITE:/ it_order-sd_doc,it_order-itm_number,it_order-material. ENDLOOP. ENDIF. Exchange rate update: PARAMETERS:p_file TYPE rlgrap-filename. DATA:BEGIN OF x_data, ratet TYPE bapi1093_0-rate_type, from TYPE bapi1093_0-from_curr, tocr TYPE bapi1093_0-to_currncy, valid TYPE bapi1093_0-valid_from, rate TYPE bapi1093_0-exch_rate, END OF x_data, it_data LIKE TABLE OF x_data, v_file TYPE string, x_bapi1093_0 TYPE bapi1093_0, x_return TYPE bapiret2. AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file. CALL FUNCTION 'F4_FILENAME' EXPORTING program_name = syst-cprog dynpro_number = syst-dynnr field_name = 'P_FILE' IMPORTING file_name = p_file. v_file = p_file. START-OF-SELECTION . CALL FUNCTION 'GUI_UPLOAD' EXPORTING filename = v_file * filetype = 'ASC' has_field_separator = 'X' * HEADER_LENGTH =0 * READ_BY_LINE = 'X' * DAT_MODE ='' * IMPORTING * FILELENGTH = * HEADER = TABLES data_tab = it_data * EXCEPTIONS * FILE_OPEN_ERROR =1 * FILE_READ_ERROR =2

* * * * * * * * * * * * * * *

NO_BATCH =3 GUI_REFUSE_FILETRANSFER =4 INVALID_TYPE =5 NO_AUTHORITY =6 UNKNOWN_ERROR =7 BAD_DATA_FORMAT =8 HEADER_NOT_ALLOWED =9 SEPARATOR_NOT_ALLOWED = 10 HEADER_TOO_LONG = 11 UNKNOWN_DP_ERROR = 12 ACCESS_DENIED = 13 DP_OUT_OF_MEMORY = 14 DISK_FULL = 15 DP_TIMEOUT = 16 OTHERS = 17 . IF sy-subrc <> 0. * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDIF. LOOP AT it_data INTO x_data. MOVE:x_data-ratet TO x_bapi1093_0-rate_type, x_data-from TO x_bapi1093_0-from_curr, x_data-tocr TO x_bapi1093_0-to_currncy, x_data-valid TO x_bapi1093_0-valid_from, x_data-rate TO x_bapi1093_0-exch_rate, '1' TO x_bapi1093_0-from_factor, '1' TO x_bapi1093_0-to_factor. CALL FUNCTION 'BAPI_EXCHANGERATE_CREATE' EXPORTING exch_rate = x_bapi1093_0 * UPD_ALLOW ='' * CHG_FIXED ='' * DEV_ALLOW = '000' IMPORTING return = x_return. * RATE_TYPE = * FROM_CURR = * TO_CURRNCY = . IF x_return-type = 'E'. WRITE:/ x_return-message. CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK' * IMPORTING * RETURN = . ELSE. CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'. * EXPORTING * WAIT = * IMPORTING * RETURN = WRITE:/ 'Udate success'. ENDIF. ENDLOOP.

* MB58(CONSIGNMENT STOCK): TYPES: BEGIN OF ty_mskukna1, kunnr TYPE msku-kunnr, matnr TYPE msku-matnr, kulab TYPE msku-kulab, name1 type kna1-name1, END OF ty_mskukna1, ty_t_mskukna1 TYPE STANDARD TABLE OF ty_mskukna1. DATA: it_mskukna1 TYPE ty_t_mskukna1 WITH HEADER LINE. TABLES: msku. SELECTION-SCREEN BEGIN OF BLOCK blk WITH FRAME TITLE text-000. SELECT-OPTIONS:s_kunnr FOR msku-kunnr. " OBLIGATORY. SELECTION-SCREEN END OF BLOCK blk. SELECT msku~kunnr msku~matnr msku~kulab kna1~name1 INTO TABLE it_mskukna1 FROM msku inner join kna1 ON msku~kunnr = kna1~kunnr WHERE msku~kunnr IN s_kunnr. "check Data: v_var type i. Data: V_so type i. Write:/ 'Customername',30 'Customerno ',60 'UnrestrictedQty',90 'Materialno'. loop at it_mskukna1. if it_mskukna1-matnr+0(2) <> 'L-'. v_var = v_var + 1. if it_mskukna1-matnr+0(2) <> '0'. V_so = V_so + 1. Write:/ it_mskukna1-name1,30 it_mskukna1-kunnr,60 it_mskukna1-kulab,90 it_mskukna1-matnr. endif. endif. Endloop. write:/(145) sy-uline. write:/ 'No. of customers with material no. L- are =',V_var. write:/ 'No. of customers with material no. 0 are=',V_so. ** SALES VALIDATE PROGRAM: DATA: BEGIN OF x_vbakvbap, vbeln TYPE vbak-vbeln, netwr TYPE vbak-netwr, auart type vbak-auart, kunnr TYPE vbak-kunnr, posnr TYPE vbap-posnr, matnr TYPE vbap-matnr, arktx TYPE vbap-arktx, kwmeng TYPE vbap-kwmeng, END OF x_vbakvbap. DATA it_vbakvbap LIKE TABLE OF x_vbakvbap WITH HEADER LINE. *PARAMETERS: p_vbeln TYPE vbak-vbeln. SELECT-OPTIONS: s_vbeln FOR vbak-vbeln DEFAULT '5006' TO '5009', s_audat FOR vbak-audat. PARAMETERS: p_auart TYPE vbak-auart default 'OR'. INITIALIZATION.

s_audat-sign = 'I'. s_audat-option = 'BT'. s_audat-low = sy-datum. s_audat-low+6(2) = '18'. s_audat-low+0(4) = s_audat-low+0(4) - 1. s_audat-high = sy-datum. APPEND s_audat. At selection-screen. IF s_audat-high > sy-datum. MESSAGE 'Date greater than today' TYPE 'E'. ENDIF. At selection-screen on p_auart. Start-of-selection. SELECT vbak~vbeln vbak~netwr vbak~auart vbak~kunnr vbap~posnr vbap~matnr vbap~arktx vbap~kwmeng INTO TABLE it_vbakvbap FROM vbak INNER JOIN vbap ON vbak~vbeln = vbap~vbeln WHERE vbak~vbeln IN s_vbeln.

End-of-selection. LOOP AT it_vbakvbap. WRITE:/ it_vbakvbap-vbeln,it_vbakvbap-netwr,it_vbakvbap-auart,it_vbakvbap-kunnr, it_vbakvbap-posnr,it_vbakvbap-matnr,it_vbakvbap-arktx, it_vbakvbap-kwmeng. ENDLOOP. TOP-OF-PAGE. WRITE:/ 'Sales details'. ULINE. END-OF-PAGE. WRITE:/ sy-uline, / 'number of salesoreder'. ** AT LINE SELECTION PROGRAM: Start-of-selection. '2's multiple table. At line-selection. Write:/ sy-lsind,sy-lisel.

You might also like