You are on page 1of 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