cancel
Showing results for 
Search instead for 
Did you mean: 

Backtrack the SD flow

0 Kudos

I have written a code for SD flow that start from vbak,vbap,kna1 , mara,vbfa,likp,lips,vbrk,vbrp table .

Now I want to back track the SD flow for which I have to began my code writing from vbrp vbap,...vbap,vbak.

Or their is any other way?

This is the code I have written for front track.

vbeln TYPE vbak-vbeln,

erdat TYPE vbak-erdat,

vtweg TYPE vbak-vtweg,

spart TYPE vbak-spart,

kunnr TYPE vbak-kunnr,

END OF ty_vbak.

TYPES: BEGIN OF ty_vbap,

vbeln TYPE vbap-vbeln,

posnr TYPE vbap-posnr,

matnr TYPE vbap-matnr,

netwr TYPE vbap-netwr,

END OF ty_vbap.

TYPES: BEGIN OF ty_makt,

matnr TYPE makt-matnr,

maktx TYPE makt-maktx,

END OF ty_makt.

TYPES: BEGIN OF ty_kna1,

kunnr TYPE kna1-kunnr,

name1 TYPE kna1-name1,

adrnr TYPE kna1-adrnr,

telf1 TYPE kna1-telf1,

END OF ty_kna1.

TYPES: BEGIN OF ty_likp,

vbeln TYPE likp-vbeln,

erdat TYPE likp-erdat,

END OF ty_likp.

TYPES: BEGIN OF ty_lips,

vbeln TYPE lips-vbeln,

posnr TYPE lips-posnr,

lfimg TYPE lips-lfimg,

END OF ty_lips.

TYPES: BEGIN OF ty_mkpf,

mblnr TYPE mkpf-mblnr,

mjahr TYPE mkpf-mjahr,

END OF ty_mkpf.

TYPES: BEGIN OF ty_mseg,

mblnr TYPE mseg-mblnr,

mjahr TYPE mseg-mjahr,

zeile TYPE mseg-zeile,

menge TYPE mseg-menge,

END OF ty_mseg.

TYPES: BEGIN OF ty_vbrk,

vbeln TYPE vbrk-vbeln,

fkdat TYPE vbrk-fkdat,

END OF ty_vbrk.

TYPES: BEGIN OF ty_vbrp,

vbeln TYPE vbrp-vbeln,

posnr TYPE vbrp-posnr,

fkimg TYPE vbrp-fkimg,

matnr TYPE vbrp-matnr,

END OF ty_vbrp.

TYPES: BEGIN OF ty_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 ty_vbfa.

TYPES: BEGIN OF ty_final,

vbeln TYPE vbak-vbeln, "sales order

erdat TYPE vbak-erdat,

vtweg TYPE vbak-vtweg,

spart TYPE vbak-spart,

kunnr TYPE vbak-kunnr,

posnr TYPE vbap-posnr,

matnr TYPE vbap-matnr,

netwr TYPE vbap-netwr,

maktx TYPE makt-maktx,

name1 TYPE kna1-name1,

adrnr TYPE kna1-adrnr,

telf1 TYPE kna1-telf1,

erdat_likp TYPE likp-erdat, "delivery

vbeln_lips TYPE lips-vbeln,

posnr_lips TYPE lips-posnr,

lfimg TYPE lips-lfimg,

mblnr TYPE mkpf-mblnr,

mjahr TYPE mkpf-mjahr,

zeile TYPE mseg-zeile,

menge TYPE mseg-menge,

vbeln_vbrk TYPE vbrk-vbeln, "invoice

fkdat TYPE vbrk-fkdat,

posnr_vbrp TYPE vbrp-posnr,

fkimg TYPE vbrp-fkimg,

matnr_vbrp TYPE vbrp-matnr,

END OF ty_final.

DATA: it_vbak TYPE STANDARD TABLE OF ty_vbak,

wa_vbak TYPE ty_vbak,

it_vbap TYPE STANDARD TABLE OF ty_vbap,

wa_vbap TYPE ty_vbap,

it_makt TYPE STANDARD TABLE OF ty_makt,

wa_makt TYPE ty_makt,

it_kna1 TYPE STANDARD TABLE OF ty_kna1,

wa_kna1 TYPE ty_kna1,

it_likp TYPE STANDARD TABLE OF ty_likp,

wa_likp TYPE ty_likp,

it_lips TYPE STANDARD TABLE OF ty_lips,

wa_lips TYPE ty_lips,

it_mkpf TYPE STANDARD TABLE OF ty_mkpf,

wa_mkpf TYPE ty_mkpf,

it_mseg TYPE STANDARD TABLE OF ty_mseg,

wa_mseg TYPE ty_mseg,

it_vbrk TYPE STANDARD TABLE OF ty_vbrk,

wa_vbrk TYPE ty_vbrk,

it_vbrp TYPE STANDARD TABLE OF ty_vbrp,

wa_vbrp TYPE ty_vbrp,

it_vbfa TYPE STANDARD TABLE OF ty_vbfa,

wa_vbfa TYPE ty_vbfa,

it_vbfa_del TYPE STANDARD TABLE OF ty_vbfa,

wa_vbfa_del TYPE ty_vbfa,

it_vbfa_pgi TYPE STANDARD TABLE OF ty_vbfa,

wa_vbfa_pgi TYPE ty_vbfa,

it_vbfa_inv TYPE STANDARD TABLE OF ty_vbfa,

wa_vbfa_inv TYPE ty_vbfa,

it_final TYPE STANDARD TABLE OF ty_final,

wa_final TYPE ty_final,

it_fieldcat TYPE slis_t_fieldcat_alv,

vbeln TYPE vbak-vbeln,

erdat TYPE vbak-erdat,

vtweg TYPE vbak-vtweg,

spart TYPE vbak-spart,

kunnr TYPE vbak-kunnr,

END OF ty_vbak.

TYPES: BEGIN OF ty_vbap,

vbeln TYPE vbap-vbeln,

posnr TYPE vbap-posnr,

matnr TYPE vbap-matnr,

netwr TYPE vbap-netwr,

END OF ty_vbap.

TYPES: BEGIN OF ty_makt,

matnr TYPE makt-matnr,

maktx TYPE makt-maktx,

END OF ty_makt.

TYPES: BEGIN OF ty_kna1,

kunnr TYPE kna1-kunnr,

name1 TYPE kna1-name1,

adrnr TYPE kna1-adrnr,

telf1 TYPE kna1-telf1,

END OF ty_kna1.

TYPES: BEGIN OF ty_likp,

vbeln TYPE likp-vbeln,

erdat TYPE likp-erdat,

END OF ty_likp.

TYPES: BEGIN OF ty_lips,

vbeln TYPE lips-vbeln,

posnr TYPE lips-posnr,

lfimg TYPE lips-lfimg,

END OF ty_lips.

TYPES: BEGIN OF ty_mkpf,

mblnr TYPE mkpf-mblnr,

mjahr TYPE mkpf-mjahr,

END OF ty_mkpf.

TYPES: BEGIN OF ty_mseg,

mblnr TYPE mseg-mblnr,

mjahr TYPE mseg-mjahr,

zeile TYPE mseg-zeile,

menge TYPE mseg-menge,

END OF ty_mseg.

TYPES: BEGIN OF ty_vbrk,

vbeln TYPE vbrk-vbeln,

fkdat TYPE vbrk-fkdat,

END OF ty_vbrk.

TYPES: BEGIN OF ty_vbrp,

vbeln TYPE vbrp-vbeln,

posnr TYPE vbrp-posnr,

fkimg TYPE vbrp-fkimg,

matnr TYPE vbrp-matnr,

END OF ty_vbrp.

TYPES: BEGIN OF ty_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 ty_vbfa.

TYPES: BEGIN OF ty_final,

vbeln TYPE vbak-vbeln, "sales order

erdat TYPE vbak-erdat,

vtweg TYPE vbak-vtweg,

spart TYPE vbak-spart,

kunnr TYPE vbak-kunnr,

posnr TYPE vbap-posnr,

matnr TYPE vbap-matnr,

netwr TYPE vbap-netwr,

maktx TYPE makt-maktx,

name1 TYPE kna1-name1,

adrnr TYPE kna1-adrnr,

telf1 TYPE kna1-telf1,

erdat_likp TYPE likp-erdat, "delivery

vbeln_lips TYPE lips-vbeln,

posnr_lips TYPE lips-posnr,

lfimg TYPE lips-lfimg,

mblnr TYPE mkpf-mblnr,

mjahr TYPE mkpf-mjahr,

zeile TYPE mseg-zeile,

menge TYPE mseg-menge,

vbeln_vbrk TYPE vbrk-vbeln, "invoice

fkdat TYPE vbrk-fkdat,

posnr_vbrp TYPE vbrp-posnr,

fkimg TYPE vbrp-fkimg,

matnr_vbrp TYPE vbrp-matnr,

Accepted Solutions (1)

Accepted Solutions (1)

SimoneMilesi
Active Contributor
0 Kudos

I see a lot of declaration and then?
Which is the question?
If you already found the way to rebuild the flow from sales order down to invoice, I do not see why you cannot do the opposite: links between tables and objects are the same.

If you need any doubt, you can check FM SD_DOCUMENT_FLOW_GET to see how it works...

Answers (3)

Answers (3)

0 Kudos

it_vbfa_del[] = it_vbfa.

it_vbfa_pgi[] = it_vbfa.

it_vbfa_inv[] = it_vbfa.

DELETE it_vbfa_del WHERE NOT vbtyp_n = 'J'. " THIS CODE IS TO MOVE FRO M SALE ORDER TO BILLING THROW VBFA.

SELECT vbeln

erdat

FROM likp INTO TABLE it_likp

FOR ALL ENTRIES IN it_vbfa_del WHERE vbeln = it_vbfa_del-vbeln..

NOW I WANT TO MOVE FROM DELIVERY TO SALES ORDER WHAT SHOULD I WRITE IN CODE

WHERE VBELV // VBELN = IT_VBFA_DEL-VBELN // VBELV.

0 Kudos

Sir just provide me code that how will move from delivery to SD using vbfa table .

I have used likp and lips in delivery

I have used vbak,vbap,kna1,make in sd

I have coded from SD to dev.

It_dev[]=it_vbfa

Select vbeln lfart from likp into table it_likp for all entries in it_del where vbeln= it_del-vbeln.

How will I move from likp to vbak using vBFA TABLE

0 Kudos

SELECT vbeln

erdat

vtweg

spart

kunnr

FROM vbak INTO TABLE it_vbak WHERE vbeln IN s_vbeln AND erdat IN s_date AND kunnr IN s_kunnr.

IF sy-subrc = 0.

SORT it_vbak BY vbeln.

ENDIF.

IF it_vbak IS NOT INITIAL.

SELECT vbeln

posnr

matnr

netwr

FROM vbap INTO TABLE it_vbap

FOR ALL ENTRIES IN it_vbak WHERE vbeln = it_vbak-vbeln.

IF sy-subrc = 0.

SORT it_vbap BY vbeln posnr.

ENDIF.

IF it_vbap IS NOT INITIAL.

SELECT matnr

maktx

FROM makt INTO TABLE it_makt

FOR ALL ENTRIES IN it_vbap WHERE matnr = it_vbap-matnr AND spras = 'EN'.

IF sy-subrc = 0.

SORT it_makt BY matnr.

ENDIF.

SELECT kunnr

name1

adrnr

telf1

FROM kna1 INTO TABLE it_kna1

FOR ALL ENTRIES IN it_vbak WHERE kunnr = it_vbak-kunnr.

IF sy-subrc = 0.

SORT it_kna1 BY kunnr.

ENDIF.

SELECT vbelv

posnv

vbeln

posnn

vbtyp_n

FROM vbfa

INTO TABLE it_vbfa

FOR ALL ENTRIES IN it_vbak WHERE vbelv = it_vbak-vbeln.

IF sy-subrc = 0.

SORT it_vbfa BY vbeln.

ENDIF.

ENDIF.

ENDIF.

it_vbfa_del[] = it_vbfa.

it_vbfa_pgi[] = it_vbfa.

it_vbfa_inv[] = it_vbfa.

DELETE it_vbfa_del WHERE NOT vbtyp_n = 'J'.

DELETE it_vbfa_pgi WHERE NOT vbtyp_n = 'R'.

DELETE it_vbfa_inv WHERE NOT vbtyp_n = 'M'.

SORT it_vbfa_del BY vbeln.

SELECT vbeln

erdat

FROM likp INTO TABLE it_likp

FOR ALL ENTRIES IN it_vbfa_del WHERE vbeln = it_vbfa_del-vbeln.

IF sy-subrc = 0.

SORT it_likp BY vbeln.

ENDIF.

IF it_likp IS NOT INITIAL.

SELECT vbeln

posnr

lfimg

FROM lips INTO TABLE it_lips

FOR ALL ENTRIES IN it_likp WHERE vbeln = it_likp-vbeln.

ENDIF.

SELECT mblnr

mjahr

FROM mkpf INTO TABLE it_mkpf

FOR ALL ENTRIES IN it_vbfa_pgi WHERE mblnr = it_vbfa_pgi-vbeln.

IF sy-subrc = 0.

SORT it_mkpf BY mblnr.

ENDIF.

IF it_mkpf IS NOT INITIAL.

SELECT mblnr

mjahr

zeile

menge

FROM mseg INTO TABLE it_mseg

FOR ALL ENTRIES IN it_mkpf WHERE mblnr = it_mkpf-mblnr.

ENDIF.

SELECT vbeln

fkdat

FROM vbrk INTO TABLE it_vbrk

FOR ALL ENTRIES IN it_vbfa_inv WHERE vbeln = it_vbfa_inv-vbeln.

IF it_vbrk IS NOT INITIAL.

SELECT vbeln

posnr

fkimg

matnr

FROM vbrp INTO TABLE it_vbrp

FOR ALL ENTRIES IN it_vbrk WHERE vbeln = it_vbrk-vbeln.

ENDIF.

LOOP AT it_vbap INTO wa_vbap.

wa_final-posnr = wa_vbap-posnr.

wa_final-matnr = wa_vbap-matnr.

wa_final-netwr = wa_vbap-netwr.

READ TABLE it_vbak INTO wa_vbak WITH KEY vbeln = wa_vbap-vbeln BINARY SEARCH.

IF sy-subrc = 0.

wa_final-vbeln = wa_vbak-vbeln.

wa_final-erdat = wa_vbak-erdat.

wa_final-vtweg = wa_vbak-vtweg.

wa_final-spart = wa_vbak-spart.

wa_final-kunnr = wa_vbak-kunnr.

ENDIF.

READ TABLE it_makt INTO wa_makt WITH KEY matnr = wa_vbap-matnr BINARY SEARCH.

IF sy-subrc = 0.

wa_final-maktx = wa_makt-maktx.

ENDIF.

READ TABLE it_kna1 INTO wa_kna1 WITH KEY kunnr = wa_vbak-kunnr BINARY SEARCH.

IF sy-subrc = 0.

wa_final-name1 = wa_kna1-name1.

wa_final-adrnr = wa_kna1-adrnr.

wa_final-telf1 = wa_kna1-telf1.

ENDIF.

READ TABLE it_vbfa_del INTO wa_vbfa_del WITH KEY vbelv = wa_vbap-vbeln posnv = wa_vbap-posnr BINARY SEARCH.

IF sy-subrc = 0.

ENDIF.

READ TABLE it_likp INTO wa_likp WITH KEY vbeln = wa_vbfa_del-vbeln BINARY SEARCH.

IF sy-subrc = 0.

wa_final-erdat_likp = wa_likp-erdat.

ENDIF.

READ TABLE it_lips INTO wa_lips WITH KEY vbeln = wa_likp-vbeln posnr = wa_vbfa_del-posnn BINARY SEARCH.

IF sy-subrc = 0.

wa_final-vbeln_lips = wa_lips-vbeln.

wa_final-posnr_lips = wa_lips-posnr.

wa_final-lfimg = wa_lips-lfimg.

ENDIF.

READ TABLE it_vbfa_pgi INTO wa_vbfa_pgi WITH KEY vbelv = wa_vbap-vbeln posnv = wa_vbap-posnr BINARY SEARCH.

IF sy-subrc = 0.

ENDIF.

READ TABLE it_mkpf INTO wa_mkpf WITH KEY mblnr = wa_vbfa_pgi-vbeln BINARY SEARCH.

IF sy-subrc = 0.

Sir I have written this code for SD flow from sales order to invoice.

But know I want to track from invoice to sale order(back track). For that I should write my code from invoice table vbrk ,vbrp,....to vbap,vbak?

SimoneMilesi
Active Contributor

I will be honest: I will not even try to read your code.

Try to format it correctly: SAP editor, Pretty Printer, copy, paste as plain text here and use "code button"

matt
Active Contributor

Seconded. If I can't read the code easily, I don't bother. It's for your own benefit.