Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

HELP WITH SELECTION SCREENS

Former Member
0 Kudos

Dear All,

I am new to SAP(ABAP) have been given this assignment sort of ....plz help

1. Write a program to fetch all the sales orders and line items with in a data range.

Selection screen fields: Sales Order Number

Document type

Sales order date.

To display in the output report should contain following fields:

1. Sales Order number

2. item number

3. net price

4. net value

5. document type

Use Tables :vbak and vbap.

1 ACCEPTED SOLUTION

Former Member
0 Kudos
tables: vbap,vbak.
select-options: s_VBELN for vbap-vbeln,
                s_AUART for vbak-auart,
                s_AUDAT for vbak-audat.
                
  data:begin of itab occurs 0,
    vbeln like vbap-vbeln,
    posnr like vbap-posnr,
    netwr like vbap-netwr,
    netpr like vbap-netpr,
    auart like vbak-auart,
   end of itab.
select vbap~vbeln vbap~posnr vbap~netwr vbap~netpr vbak~auart
           into table itab from vbap inner join vbak
           on vbap~vbeln = vbak~vbeln
           where vbap~vbeln in s_vbeln
            and vbak~auart in s_auart
            and vbak~audat in s_audat.

loop at itab.
write:itab-vbeln,itab-posnr, itab-netwr,itab-netpr,itab-auart.
endloop.
 
6 REPLIES 6

h_senden2
Active Contributor
0 Kudos

for the selection screen, you can define the sales order number as parameter (single value) or select-option (range) :

parameters: p_vbeln type vbak-vbeln.

or

data: wa_vbak type vbak.

select-options: s_vbeln for wa_vbak-vbeln.

get data:

select * from vbak where vbeln eq p_vbeln.

or

select * from vbak where vbeln in s_vbeln.

Former Member
0 Kudos

hi

u can use select-options for sales order number and date

and parameters for document type.

vbak is for header data...

and vbap is for item data.

based on the key field in both tables ie sales order number v can retrieve the details

store it in an internal table

and display them by looping at that internal table...

hope this helps....

else if u want code...let meknow

Former Member
0 Kudos

select vbeln from vbak where vbeln = p_vbeln

auart = p_auart

erdat = p_erdat.

select vbapvbeln vbapposex vbapnetpr vbapnetwr vbak~auart into i_output

from vbap inner join vbak

on vbakvbeln = vbapvbeln.

Put atll the five fields that you have to display as output in the output internal table i_output

Former Member
0 Kudos
tables: vbap,vbak.
select-options: s_VBELN for vbap-vbeln,
                s_AUART for vbak-auart,
                s_AUDAT for vbak-audat.
                
  data:begin of itab occurs 0,
    vbeln like vbap-vbeln,
    posnr like vbap-posnr,
    netwr like vbap-netwr,
    netpr like vbap-netpr,
    auart like vbak-auart,
   end of itab.
select vbap~vbeln vbap~posnr vbap~netwr vbap~netpr vbak~auart
           into table itab from vbap inner join vbak
           on vbap~vbeln = vbak~vbeln
           where vbap~vbeln in s_vbeln
            and vbak~auart in s_auart
            and vbak~audat in s_audat.

loop at itab.
write:itab-vbeln,itab-posnr, itab-netwr,itab-netpr,itab-auart.
endloop.
 

Former Member
0 Kudos

Hi,

Try this out.

REPORT yjjtest MESSAGE-ID zm.

TABLES: vbap, vbak.
DATA: BEGIN OF i_output OCCURS 0,
             vbeln LIKE vbap-vbeln,
             posnr LIKE vbap-posnr,
             netwr LIKE vbap-netwr,
             netpr LIKE vbap-netpr,
             auart LIKE vbak-auart,
           END OF i_output.

SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME TITLE text-001.
" text-001 as Selection
SELECT-OPTIONS: s_vbeln  FOR vbap-vbeln,
                s_auart  FOR vbak-auart ,
                s_audat  FOR vbak-audat.
SELECTION-SCREEN END OF BLOCK blk1.

START-OF-SELECTION.

  SELECT a~vbeln
                a~posnr
                a~netwr
                a~netpr
                b~auart
                INTO TABLE i_output
                FROM vbap AS a
                INNER JOIN vbak AS b
                ON a~vbeln = b~vbeln
                WHERE    a~vbeln IN s_vbeln
                AND      b~auart IN s_auart
                AND      b~audat IN s_audat.
  IF sy-subrc NE 0.
  MESSAGE e000 WITH text-002. " No data found for the selection criteria
  ENDIF.

  WRITE:/  'Program to fetch all the sales orders and line items'.
  ULINE.
  WRITE:/001 'Sales Order number',
         012 'Item Number',
         025 'Net Price',
         050 'Net Value',
         070 'Document Type'.
  ULINE.

  LOOP AT i_output.
    WRITE:/001 i_output-vbeln,
           012 i_output-posnr,
           025 i_output-netwr,
           050 i_output-netpr,
           070 i_output-auart.
    CLEAR i_output.
  ENDLOOP. 

Hope this solves ur query.

Sample output

TEST Program

Program to fetch all the sales orders and line items

Sales OrderItem Number Net Price Net Value Document Type

10000000 000010 0.00 0.00 ZNOR

10000000 000020 0.00 0.00 ZNOR

10000006 000010 0.00 0.00 ZNOR

10000007 000060 0.00 0.00 ZERO

10000007 000020 0.00 0.00 ZERO

10000007 000050 0.00 0.00 ZERO

10000007 000040 0.00 0.00 ZERO

10000007 000030 0.00 0.00 ZERO

10000007 000010 0.00 0.00 ZERO

10000008 000010 13,825.35 3,675.00 ZERO

10000009 000010 0.00 0.00 ZERO

10000010 000010 47,002.06 2,637.60 ZERO

10000011 000010 0.00 0.00 ZERO

10000012 000010 36,193.40 1,522.01 ZERO

10000014 000010 0.00 0.00 ZERO

10000015 000050 0.00 0.00 ZERO

10000015 000010 0.00 0.00 ZERO

10000015 000020 0.00 0.00 ZERO

Please reward points and clos ethe thread.

Former Member
0 Kudos

Please reward poinst and mark the thread closed.