You are on page 1of 9

1 Sales and distribution

1.1 Accesses to sales orders (tables VBAK, VBAP)

a) Search orders for customer number (field VBAK-KUNNR):


Incorrect:
SELECT FROM vbak WHERE kunnr = ...

Correct:
SELECT FROM vakpa WHERE kunde = ...
SELECT FROM vbak WHERE vbeln = vakpa-vbeln.

b) Search order items for material number (field VBAP-MATNR):


Incorrect:
SELECT FROM vbap WHERE matnr = ...

Correct:
SELECT FROM vapma WHERE matnr = ...
SELECT FROM vbap WHERE vbeln = vapma-vbeln
AND posnr = vapma-posnr

c) Other search helps for sales orders offer the matchcode tables and
views M_VMVAx, x. = A, B, C, ... M; for example search for
purchase order number of the customer, description and so on

1.2 Accesses to deliveries (tables LIKP, LIPS)

a) Search for deliveries with customer number (field LIKP-KUNNR):


Incorrect:
SELECT FROM likp WHERE kunnr = ...

Correct:
SELECT FROM vlkpa WHERE kunde = ...
SELECT FROM likp WHERE vbeln = vlkpa-vbeln.

b) Search for delivery items with material number (field LIKP-MATNR):


Incorrect:
SELECT FROM lips WHERE matnr = ...

Correct:
SELECT FROM vlpma WHERE matnr = ...
SELECT FROM lips WHERE vbeln = vlpma-vbeln
AND posnr = vlpma-posnr
c) Search for deliveries with sales order number (preceding document,
field LIPS-VGBEL):
Incorrect:
SELECT FROM lips WHERE vgbel = ...

Correct:
SELECT FROM vbfa WHERE VBELV = ... and VBTYP_N = 'J'
SELECT FROM lips WHERE vbeln = vbfa-vbeln
AND posnr = vbfa-posnn

d) Other search helps for deliveries offer matchcode tables and views
M_VMVLx, x. = A, B, C, ... M; for example search for goods issue
date, picking date, transportation planning date and so on.

1.3 Accesses to invoices (tables VBRK, VBRP)

a) Search for invoices with customer number ("payer") (field

VBRK-KUNRG):
Incorrect:
SELECT FROM vbrk WHERE kunrg = ...

Correct:
SELECT FROM vrkpa WHERE kunde = ...
SELECT FROM vbrk WHERE vbeln = vrkpa-vbeln

b) Search for invoice items with material number (field VBRP-MATNR):


Incorrect:
SELECT FROM vbrp WHERE matnr = ...

Correct:
SELECT FROM vrpma WHERE matnr = ...
SELECT FROM vbrp WHERE vbeln = vrpma-vbeln
AND posnr = vrpma-posnr

c) Search for invoices with delivery number (preceding document,


field VBRP-VGBEL):
Incorrect:
SELECT FROM vbrp WHERE vgbel = ...

Correct:
SELECT FROM vbfa WHERE vbtyp_n = 'M'
AND vbelv = ...
SELECT FROM vbrp WHERE vbeln = vbfa-vbeln
AND posnr = vbfa-posnn
d) Search for invoices with order number (preceding document, field
VBRP-AUBEL):
Incorrect:
SELECT FROM vbrp WHERE aubel = ...

Correct:
SELECT FROM vbfa WHERE vbtyp_n = 'M'
AND vbelv = ...
SELECT FROM vbrp WHERE vbeln = vbfa-vbeln
AND posnr = vbfa-posnn

1.4 Other accesses in SD:

a) Document flow:
Incorrect:
SELECT vbelv FROM vbfa WHERE vbeln ...

In table VBFA only the preceeding document is used to search for


the subsequent document (for example, delivery for order).
Searching the other way makes no sense with this table since the
preceding documents (for example, order for delivery) are stored
directly in the document tables. Thus reading in table VBFA is a
one-way street.

Correct:
SELECT vgbel FROM lips WHERE vbeln = ...; or
SELECT vgbel FROM vbrp WHERE vbeln = ...; or
SELECT aubel FROM vbrp WHERE vbeln = ...

b) Search for shipping unit item with delivery


Incorrect:

SELECT FROM vepo WHERE vbtyp = 'J'


AND vbeln = i_lips-vbeln

Correct:
SELECT FROM vbfa WHERE vbtyp_n = 'X'
AND vbelv = i_lips-vbeln
SELECT FROM vepo WHERE venum = vbfa-vbeln
2 Material Management

2.1 Accesses to transport requests

a) via the storage unit number


Incorrect:
SELECT FROM LTAP WHERE VLENR = ....
or
SELECT FROM LTAP WHERE NLENR = ...

Correct:
SELECT FROM LEIN WHERE LENUM = ...
SELECT FROM LTAP WHERE LGNUM = LEIN-LGNUM and
AND TANUM = LEIN-BTANR
AND TAPOS = LEIN-BTAPS.

b) via the SD delivery note


Incorrect:
Page 2

SELECT FROM LTAP WHERE NLPLA = LIPS-VBELN


AND POSNR = LIPS-POSNR.
Correct:
SELECT FROM VBFA WHERE VBELV = LIPS-VBELN
AND POSNV = LIPS- POSNR
AND VBTYP_N = 'Q'.
SELECT FROM LTAP WHERE LGNUM = LIPS-LGNUM
AND TANUM = VBFA-VBELN
AND TAPOS = VBFA-POSNN.

Remark:
This access mode only exists if the transport orders were created on
account of deliveries in Sales and Distribution. In this case the
respective transport orders can be determined via the document flow
table VBFA.
The field LTAP-NLPLA is filled with the delivery note number via the
dynamic storage bin assignment. This automatic assignment can be
deactivated in WM Customizing (see movement types in WMS). This side
effect must be considered when field NLPLA is used for data selection.
2.2 Access to material documents

a) via the purchase order number


Incorrect:
SELECT FROM MSEG WHERE EBELN = ...
and EBELP = ...
Correct:
SELECT EKBE WHERE EBELN = ...
AND EBELP = ...
AND VGABE IN (1,6,7,8,9).
SELECT FROM MSEG WHERE MBLNR = EKBE-BELNR
AND MJAHR = EKBE-GJAHR
AND ZEILE = EKBE-BUZEI.

Remark:
The fiscal year must be specified so that the system has effective
access possibilities via the primary index.If the fiscal year is
missing, the database can no longer effectively use the item number for
the search (this is a problem, especially for material documents with
many items).If the operation type VGABE is specified, the values can be
additionally restricted to the corresponding goods movements that are
relevant.

b) via the transport order number


Incorrect:
SELECT FROM MSEG WHERE TANUM = ...

Correct:
SELECT FROM LTAP WHERE TANUM = ...
SELECT FROM MSEG WHERE MBELN = LTAP-WENUM
AND MJAHR = <requested year>
AND ZEILE = LTAP-WEPOS.
c) via transfer requirement
Incorrect:
SELECT MSEG WHERE TBNUM = ...

Correct:
SELECT LTBK WHERE TBNUM = ....
SELECT MSEG WHERE MBLNR = LTBK-MBLNR
Page 3

AND MJAHR = LTBK-MJAHR.

Remark:
All items of the material document are returned. It is possible to have
a restriction to one individual item of the material document by
specifying the material number.

d) Via the vendor number


Incorrect:
SELECT FROM MSEG WHERE LIFNR = ...

Correct:
SELECT EKKO WHERE LIFNR = ....
SELECT EKBE WHERE EBELN = EKKO-EBELN
AND VGABE = '1'.
SELECT MSEG WHERE MBLNR = EKBE-BELNR
AND MJAHR = EKBE-GJAHR
AND ZEILE = EKBE-BUZEI.

Remark:
Accesses to EKKO and EKBE return several datasets under certain
circumstances. This must be taken into account in the program logic.With
the operation type VGABE = 1, only goods movements for purchase orders
are selected.
As an alternative you can use matchcode object M_MEKKL in place of table
EKKO (for example SELECT FROM M_EKKL WHERE LIFNR = ...).Access can
be
improved by specifying additional restrictions.The fields purchasing
organization EKORG, purchasing group EKGRP, document date BEDAT,
purchasing document category BSTYP, order type BSART can make the access
more selective.
2.3 Accesses to purchase requisitions

a) via the reservation number


Incorrect:
SELECT FROM EBAN WHERE EBELN = ....
AND EBELP = ....
Correct:
SELECT FROM EKET WHERE EBELN = ....
EBELP = ....
SELET FROM EBAN WHERE BANFN = EKET-BANFN
AND BANFPO = EKET-BANFPO.
3 Production planning

3.1 Access to order confirmation (table AFRU)

a) Search for confirmation of orders (field AFRU-AUFNR):


Incorrect:
SELECT FROM afru WHERE aufnr = ...

Correct:
SELECT aufpl FROM afko WHERE aufnr = <afru-aufnr>
SELECT rueck FROM afvc WHERE aufpl = <afko-aufpl>
SELECT ..... FROM afru WHERE rueck = <afvc-rueck>
Caution:
From table AFVC, you receive one value per operation for "RUECK".

3.2 Access to PPS orders (tables AFKO, CAUFV, AUFK)


Page 2

a) Find orders for reservation (field AFKO-RSNUM; CAUFV-RSNUM):


Incorrect:
SELECT FROM afko WHERE rsnum = ...

Correct:
SELECT aufnr FROM resb WHERE rsnum = <afko-rsnum>
SELECT ..... FROM afko WHERE aufnr = <resb-aufnr>

Note:
The same access path applies to CAUFV and AUFK.
Search for sales orders (tables VBAP-VBELN, VBAP-POSNR;
VBFA-VBELN, VBFA-POSNN; and so on.)

Incorrect:
SELECT FROM AUFK WHERE KDAUF = <VBAP-VBELN>
AND KDPOS = <VBAP-POSNR>
Correct:
SELECT FROM AFPO WHERE KDAUF = <VBAP-VBELN>
AND KDPOS = <VBAP-POSNR>
SELECT FROM AUFK WHERE AUFNR = AFPO-AUFNR.

Note:
The tables AFKO and CAUFV can be selected analogously to the AUFK
access using order number AUFNR.
3.3 Access to reservations and dependent requirement
(table: RESB, MDRS
ATP _RESB)

a) Search for reservation for PPS orders (field RESB-AUFNR):


Incorrect:
SELECT FROM resb WHERE AUFNR = ...

Correct:
SELECT rsnum FROM afko WHERE aufnr = <resb-aufnr>
SELECT ..... FROM resb WHERE rsnum = <afko-rsnum>
Note:
The same access path applies to MDRS and ATP_RESB.

b) Search for reservation for Planned orders (field RESB-PLNUM):


Incorrect:
SELECT FROM resb WHERE PLNUM = ...

Correct:
SELECT rsnum FROM plaf WHERE plnum = <resb-plnum>
SELECT ..... FROM resb WHERE rsnum = <plaf-rsnum>

Note:
The same access path applies to MDRS and ATP_RESB.

You might also like