Login Form
Main Menu
ERPGenie Websites
ERP Software Corner
Sales Order Web Status IAC Example
- Details
- Category: WAS / ITS
- Published on Wednesday, 25 July 2007 22:04
- Written by Kevin Wilson
- Hits: 9002
(customer service rep, for example) can check the order status of any customer.
Changes to SAPMV45X
This is the web order status IAC. We want to change it so that someone else
(customer service rep, for example) can check the order status of any customer.
-
Transaction
-
Create transaction ZVW10A and link it to SAPMV45X
-
Create a service file linking to this transaction.
-
Copy the templates from VW10 (the order status service) to the directory
ZVW10A on the a-gate machine.
-
-
Calling the service from the web
To pass the customer ID directly:
http://testweb/scripts/wgate/zvw10a/!?~language=en&login-login_user=1000817&~OkCode(LGON)=LGON
To pass all possible variables:
http://testweb/scripts/wgate/zvw10a/!?~language=en&login-login_user=1000817&vbcom-vbeln=999&vbcom-audat=01/01/1999&vbcom-audat_bis=01/26/2000&~OkCode(LGON)=LGON
MV45XF10
· In form check_password, put clear return. First check for sy-tcode =
“ZVW10A”.
form check_password.
if fcode = 'LGON'.
if not login-login_user is initial.
call function 'BAPI_CUSTOMER_CHECKPASSWORD'
exporting
customerno = login-login_user
password = login-password
sales_organization = vkorg
distribution_channel = vtweg
division = spart
importing
customer_data = kna1
customer_number_out = login-login_user
return = return.
clear: login-password.
{ INSERT TSTK900997 3
if sy-tcode = 'ZVW10A'.
clear return.
endif.
} INSERT
login-rcode = return.
Screen 101
-
Template change to capture customer number
-
Customer number field: login-login_user
-
Sales order number field: VBCOM-VBELN
-
Date from field: VBCOM-AUDAT
-
Date to field: VBCOM-AUDAT_BIS
-
OkCode = LGON has field name: OkCode(LGON)
Transport fields
-
Picked: XLIST_PICK – 20000125
-
Goods Issue: XLIST_GI - 4900000606
-
Invoiced: XLIST_INVOICE – 90000103
-
Accounting document: XLIST_ACCOUNT – 90000094
-
… Rest listed in red in SAP Code section below
HTML Code
Code for screen 202 – Display order detail
<HTML>
<HEAD>
<TITLE>Sales Order Status</TITLE>
<link REL="stylesheet" href="`~styleSheetPath`/class1_corp.css" TYPE="text/css">
</HEAD>
<script language = "javascript">
//Tracking Orders using UPS or Fedex
var upstrack = "http://wwwapps.ups.com/etracking/tracking.cgi?tracknum=";
var fedtrack = "http://www.fedex.com/cgi-bin/track_it?airbills=";
var url = "";
function DisplayTrackingNum(trackNo, type, bfirstrow, trackNo2)
{
//Display upto 12 tracking no. Very similar function is in sapmv45x_202.html
var cRt = "";
if (trackNo != "")
{
if (bfirstrow )
{
if (type == "UP") url = upstrack; else url = fedtrack;
cRt ="<A href=" + url +trackNo + " target = _blank>" + trackNo + "</a>";
if (trackNo2 != "")
{
cRt += " , ";
cRt +="<A href=" + url +trackNo2 + " target = _blank>" + trackNo2 + "</a>";
}
} else{
cRt = "<TR ALIGN=LEFT class=class1 height=15><TD colspan=5></TD><TD class=class1>";
cRt +="<A href=" + url +trackNo + " target = _blank>" + trackNo + "</a>";
if (trackNo2 != "")
{
cRt += " , ";
cRt +="<A href=" + url +trackNo2 + " target = _blank>" + trackNo2 + "</a>";
}
cRt +="</TD></TR>";
}
document.write(cRt);
}
}
<body text="#000000" bgcolor="#ffffff" Link="#666666" ALINK="#666666" VLINK="#999966" leftmargin=0 topmargin=0 marginheight=0 marginwidth=0>
`if ('XLIST-VBELN' == "")`
`else`
<table border="0" width="0" cellspacing="0" cellpadding="0">
<tr>
<td valign="top" class="class1"><H3>Details of Order Number `'XLIST-VBELN'`</H3></td>
<td width=200 align=right class=class1 valign=top></td>
</tr>
<tr>
<TD ALIGN=left class=class1 height=15><b>Sales Order Date:</b> `'XLIST_SO_DATE'[1]`<p></td>
<TD ALIGN=left class=class1 height=15><b>WWW Reference Number:</b> `'XLIST_PO'[1]`<p></td>
</tr>
<tr>
<TD ALIGN=left class=class1 height=15><b>Sold to details:</b></td>
<TD ALIGN=left class=class1 height=15><b>Ship to details:</b></td>
</tr>
<TR>
`if ('XLIST_AG_NAME2'[1] == "")`
<TD ALIGN=left class=class1 height=15>`'XLIST_AG_NAME1'[1]`</td>
`else`
<TD ALIGN=left class=class1 height=15>`'XLIST_AG_NAME1'[1]`, `'XLIST_AG_NAME2'[1]`</td>
`end`
`if ('XLIST_WE_NAME2'[1] == "")`
<TD ALIGN=left class=class1 height=15>`'XLIST_WE_NAME1'[1]`</td>
`else`
<TD ALIGN=left class=class1 height=15>`'XLIST_WE_NAME1'[1]`, `'XLIST_WE_NAME2'[1]`</td>
`end`
</TR>
<TR>
<TD ALIGN=left class=class1 height=15>`'XLIST_AG_STREET'[1]`</td>
<TD ALIGN=left class=class1 height=15>`'XLIST_WE_STREET'[1]`</td>
</TR>
<TR>
<TD ALIGN=left class=class1 height=15>`'XLIST_AG_CITY1'[1]`, `'XLIST_AG_REGION'[1]`, `'XLIST_AG_ZIP'[1]`, `'XLIST_AG_COUNTRY'[1]`</td>
<TD ALIGN=left class=class1 height=15>`'XLIST_WE_CITY1'[1]`, `'XLIST_WE_REGION'[1]`, `'XLIST_WE_ZIP'[1]`, `'XLIST_WE_COUNTRY'[1]`</td>
</TR>
<TD ALIGN=left class=class1 height=15>Tel:`'XLIST_AG_TEL'[1]`</td>
<TD ALIGN=left class=class1 height=15>Tel:`'XLIST_WE_TEL'[1]`</td>
</TR>
<TR>
<TD ALIGN=left class=class1 height=15>Tax jurisdiction: `'XLIST_AG_TAX'[1]`<p></td>
<TD ALIGN=left class=class1 height=15>Tax jurisction: `'XLIST_WE_TAX'[1]`<p></td>
</TR>
</table>
<table border=0 cellspacing=1 cellpadding=0>
<TR>
<TD ALIGN=LEFT VALIGN=BOTTOM height="15"><img src="`~imagePath`/sap/grid_item_no.jpg" height="15"></TD>
<TD ALIGN=LEFT VALIGN=BOTTOM height="15"><img src="`~imagePath`/Text/grid_prod_name.jpg" height="15"></TD>
<TD ALIGN=LEFT VALIGN=BOTTOM height="15"><img src="`~imagePath`/Text/grid_qty.jpg" height="15"></TD>
<TD ALIGN=LEFT VALIGN=BOTTOM height="15"><img src="`~imagePath`/Text/grid_price.jpg" height="15"></TD>
<TD ALIGN=CENTER VALIGN=TOP height="15" width="120"><img src="`~imagePath`/sap/orderdate.jpg" ></TD>
<TD ALIGN=CENTER VALIGN=TOP height="15"><img src="`~imagePath`/sap/Trackingnumber.jpg" ></TD>
</tr>
<tr>
<td colspan="6" align="left" valign="top" bgcolor="#999966"><img src="`~imagePath`/Text/clear.gif" width="1" height="1"></td>
</tr>
`old_item = ""`
`repeat with i from 1 to 'XLIST_POSNR'.dim`
`if ('XLIST_CFG'[i] != "X")`
<TR>
`if ('XLIST_POSNR'[i] == old_item)`
<!-- if the same item suppress these informations -->
<TD ALIGN=left class=class1 height=15>   </TD>
<TD ALIGN=LEFT class=class1 height=15>   </TD>
<TD ALIGN=center class=class1 height=15>   </TD>
<TD ALIGN=center class=class1 height=15>   </TD>
<TD ALIGN=left class=class1 height=15>   </TD>
`else`
<!-- in the 1. line show all information -->
<TD ALIGN=LEFT class=class1 height=15>
`if ('XLIST_MATNR'[i] == "")`
 
`else`
<b>`'XLIST_MATNR'[i]`</b>
`end`
</TD>
<TD ALIGN=LEFT class=class1 height=15>
`if ('XLIST_ARKTX'[i] == "")`
 
`else`
<b>`'XLIST_ARKTX'[i]`</b>
`end`
</TD>
<TD ALIGN=CENTER class=class1 height=15>
`if ('XLIST_KWMENG'[i] == "")`
 
`else`
<b>`'XLIST_KWMENG'[i]`</b>
`end`
</TD>
<TD ALIGN=RIGHT class=class1 height=15>
`if ('XLIST_NETWR'[i] == "")`
 
`else`
<b>$`'XLIST_NETWR'[i]`</b>
`end`
</TD>
<TD ALIGN=CENTER class=class1 height=15><b>`'XLIST_LFDAT'[i]`</b></TD>
<TD ALIGN=LEFT class=class1 height=15>
<!-- `'XLIST_LIFNR'[i]` -->
<b>
<script language= "javascript">
DisplayTrackingNum('`'XLIST_TRACK1'[i]`', '`'XLIST_TRATY'[i]`', 1, '`'XLIST_TRACK2'[i]`');
DisplayTrackingNum('`'XLIST_TRACK3'[i]`', '`'XLIST_TRATY'[i]`', 0, '`'XLIST_TRACK4'[i]`');
DisplayTrackingNum('`'XLIST_TRACK5'[i]`', '`'XLIST_TRATY'[i]`', 0, '`'XLIST_TRACK6'[i]`');
DisplayTrackingNum('`'XLIST_TRACK7'[i]`', '`'XLIST_TRATY'[i]`', 0, '`'XLIST_TRACK8'[i]`');
DisplayTrackingNum('`'XLIST_TRACK9'[i]`', '`'XLIST_TRATY'[i]`', 0, '`'XLIST_TRACK10'[i]`');
DisplayTrackingNum('`'XLIST_TRACK11'[i]`', '`'XLIST_TRATY'[i]`', 0, '`'XLIST_TRACK12'[i]`');
</script>
</b>
</TD>
<!-- save old_item -->
`old_item = 'XLIST_POSNR'[i]`
`end`
</TR>
`if ('XLIST_PORDER'[i] == "")`
`else`
<TR>
<TD></TD>
<TD ALIGN=LEFT class=class1 height=15><font color="#000080"><b>.Purchase Order #: </b></font></TD>
<TD ALIGN=CENTER class=class1 height=15><font color="#000080">`'XLIST_PORDER_Q'[i]`</font></TD>
<TD ALIGN=RIGHT class=class1 height=15><font color="#000080">$`'XLIST_PORDER_P'[i]`</font></TD>
<TD ALIGN=CENTER class=class1 height=15><font color="#000080">`'XLIST_PORDER_D'[i]`</font></TD>
<TD ALIGN=LEFT class=class1 height=15><font color="#000080">`'XLIST_PORDER'[i]`</font></TD>
</TR>
`end`
`if ('XLIST_LIFNR'[i] == "")`
`else`
<tr>
<td></td>
<TD ALIGN=LEFT class=class1 height=15>.Delivery: </TD>
<TD ALIGN=CENTER class=class1 height=15>`'XLIST_LIFNR_Q'[i]`</TD>
<TD></TD>
<TD ALIGN=CENTER class=class1 height=15>`'XLIST_LFDAT'[i]`</TD>
<TD ALIGN=LEFT class=class1 height=15>`'XLIST_LIFNR'[i]`</TD>
</TR>
`end`
`if ('XLIST_PICK'[i] == "")`
`else`
<TR>
<TD ALIGN=LEFT class=class1 height=15></TD>
<TD ALIGN=LEFT class=class1 height=15>..Picking: </TD>
<TD ALIGN=CENTER class=class1 height=15>`'XLIST_PICK_Q'[i]`</TD>
<TD></TD>
<TD ALIGN=CENTER class=class1 height=15>`'XLIST_PICK_D'[i]`</TD>
<TD ALIGN=LEFT class=class1 height=15>`'XLIST_PICK'[i]`</TD>
</TR>
`end`
`if ('XLIST_GI'[i] == "")`
`else`
<TR>
<TD ALIGN=LEFT class=class1 height=15></TD>
<TD ALIGN=LEFT class=class1 height=15>..Shipped: </TD>
<TD ALIGN=CENTER class=class1 height=15>`'XLIST_GI_Q'[i]`</TD>
<TD></TD>
<TD ALIGN=CENTER class=class1 height=15>`'XLIST_GI_D'[i]`</TD>
<TD ALIGN=LEFT class=class1 height=15>`'XLIST_GI'[i]`</TD>
</TR>
`end`
`if ('XLIST_INVOICE'[i] == "")`
`else`
<TR>
<TD ALIGN=LEFT class=class1 height=15></TD>
<TD ALIGN=LEFT class=class1 height=15>..Invoice: </TD>
<TD ALIGN=CENTER class=class1 height=15>`'XLIST_INVOICE_Q'[i]`</TD>
<TD ALIGN=RIGHT class=class1 height=15>$`'XLIST_INVOICE_P'[i]`</TD>
<TD ALIGN=CENTER class=class1 height=15>`'XLIST_INVOICE_D'[i]`</TD>
<TD ALIGN=LEFT class=class1 height=15>`'XLIST_INVOICE'[i]`</TD>
</TR>
`end`
`if ('XLIST_ACCOUNT'[i] == "")`
`else`
<TR>
<TD ALIGN=LEFT class=class1 height=15></TD>
<TD ALIGN=LEFT class=class1 height=15><b><font color="#008000">...Accounting Doc #: </font></b></TD>
<TD></TD>
<TD></TD>
<TD ALIGN=CENTER class=class1 height=15><font color="#008000">`'XLIST_ACCOUNT_D'[i]`</font></TD>
<TD ALIGN=LEFT class=class1 height=15><font color="#008000">`'XLIST_ACCOUNT'[i]`</font></TD>
</TR>
`end`
`if ('XLIST_RETURN'[i] == "")`
`else`
<TR>
<TD></TD>
<TD ALIGN=LEFT class=class1 height=15><font color="#FF4500">.Return Doc #: </font></TD>
<TD ALIGN=CENTER class=class1 height=15><font color="#FF4500">`'XLIST_RETURN_Q'[i]`</font></TD>
<TD ALIGN=RIGHT class=class1 height=15><font color="#FF4500">$`'XLIST_RETURN_P'[i]`</font></TD>
<TD ALIGN=CENTER class=class1 height=15><font color="#FF4500">`'XLIST_RETURN_D'[i]`</font></TD>
<TD ALIGN=LEFT class=class1 height=15><font color="#FF4500">`'XLIST_RETURN'[i]`</font></TD>
</TR>
`end`
`if ('XLIST_RET_DEL'[i] == "")`
`else`
<TR>
<TD></TD>
<TD ALIGN=LEFT class=class1 height=15><font color="#FF4500">..Return Delivery: </font></TD>
<TD ALIGN=CENTER class=class1 height=15><font color="#FF4500">`'XLIST_RET_DEL_Q'[i]`</font></TD>
<TD></TD>
<TD ALIGN=CENTER class=class1 height=15><font color="#FF4500">`'XLIST_RET_DEL_D'[i]`</font></TD>
<TD ALIGN=LEFT class=class1 height=15><font color="#FF4500">`'XLIST_RET_DEL'[i]`</font></TD>
</TR>
`end`
`if ('XLIST_RET_GI'[i] == "")`
`else`
<TR>
<TD></TD>
<TD ALIGN=LEFT class=class1 height=15><font color="#FF4500">...Return Received: </font></TD>
<TD ALIGN=CENTER class=class1 height=15><font color="#FF4500">`'XLIST_RET_GI_Q'[i]`</font></TD>
<TD></TD>
<TD ALIGN=CENTER class=class1 height=15><font color="#FF4500">`'XLIST_RET_GI_D'[i]`</font></TD>
<TD ALIGN=LEFT class=class1 height=15><font color="#FF4500">`'XLIST_RET_GI'[i]`</font></TD>
</TR>
`end`
`if ('XLIST_RET_CR'[i] == "")`
`else`
<TR>
<TD></TD>
<TD ALIGN=LEFT class=class1 height=15><font color="#FF4500">..Credit memo: </font></TD>
<TD ALIGN=CENTER class=class1 height=15><font color="#FF4500">`'XLIST_RET_CR_Q'[i]`</font></TD>
<TD ALIGN=RIGHT class=class1 height=15><font color="#FF4500">$`'XLIST_RET_CR_P'[i]`</font></TD>
<TD ALIGN=CENTER class=class1 height=15><font color="#FF4500">`'XLIST_RET_CR_D'[i]`</font></TD>
<TD ALIGN=LEFT class=class1 height=15><font color="#FF4500">`'XLIST_RET_CR'[i]`</font></TD>
</TR>
`end`
`if ('XLIST_RET_AC'[i] == "")`
`else`
<TR>
<TD></TD>
<TD ALIGN=LEFT class=class1 height=15><b><font color="#FF4500">...Credit memo accounting doc #: </font></b></TD>
<TD></TD>
<TD></TD>
<TD ALIGN=CENTER class=class1 height=15><font color="#FF4500">`'XLIST_RET_AC_D'[i]`</font></TD>
<TD ALIGN=LEFT class=class1 height=15><font color="#FF4500">`'XLIST_RET_AC'[i]`</font></TD>
</TR>
`end`
`if ('XLIST_OTHERC'[i] == "")`
`else`
<TR>
<TD></TD>
<TD ALIGN=LEFT class=class1 height=15>.Other doc # (Type C): </TD>
<TD ALIGN=CENTER class=class1 height=15>`'XLIST_OTHERC_Q'[i]`</TD>
<TD ALIGN=RIGHT class=class1 height=15>$`'XLIST_OTHERC_P'[i]`</TD>
<TD ALIGN=CENTER class=class1 height=15>`'XLIST_OTHERC_D'[i]`</TD>
<TD ALIGN=LEFT class=class1 height=15>`'XLIST_OTHERC'[i]`</TD>
</TR>
`end`
`end`
`end`
`end`
</TABLE>
</body>
</html>
SAP Code
In module transport_pos_out:
*----------------------------------------------------------------------*
* FORM TRANSPORT_POS_OUT *
*----------------------------------------------------------------------*
* *
*----------------------------------------------------------------------*
FORM TRANSPORT_POS_OUT.
DATA: DA_INDEX LIKE SY-TABIX.
DA_INDEX = 1.
LOOP AT LIST_TAB.
WRITE LIST_TAB-POSNR TO LIST_TAB-POSNR NO-ZERO.
FIELD-SET 'XLIST_POSNR' DA_INDEX LIST_TAB-POSNR.
*{ INSERT TSTK900997 2
WRITE LIST_TAB-MATNR TO LIST_TAB-MATNR NO-ZERO USING NO EDIT MASK.
FIELD-SET 'XLIST_MATNR' DA_INDEX LIST_TAB-MATNR.
WRITE LIST_TAB-NETWR TO C_WERT CURRENCY LIST_TAB-WAERK.
FIELD-SET 'XLIST_NETWR' DA_INDEX C_WERT.
*} INSERT
FIELD-SET 'XLIST_ARKTX' DA_INDEX LIST_TAB-ARKTX.
WRITE LIST_TAB-KWMENG TO C_MENGE UNIT LIST_TAB-VRKME.
FIELD-SET 'XLIST_KWMENG' DA_INDEX C_MENGE.
IF LIST_TAB-LFDAT IS INITIAL.
C_DATUM = SPACE.
ELSE.
WRITE LIST_TAB-LFDAT TO C_DATUM DD/MM/YYYY.
ENDIF.
FIELD-SET 'XLIST_LFDAT' DA_INDEX C_DATUM.
WRITE LIST_TAB-LFIMG TO C_MENGE UNIT LIST_TAB-VRKME.
FIELD-SET 'XLIST_LFIMG' DA_INDEX C_MENGE.
FIELD-SET 'XLIST_LIFNR' DA_INDEX LIST_TAB-LIFNR.
FIELD-SET 'XLIST_URL_L' DA_INDEX LIST_TAB-URL_L.
*{ INSERT TSTK900589 1
* Get delivery tracking information
TABLES: MAST, " Material to BOM Link
STPO, " BOM item
ZTRACKING. " Tracking numbers
DATA COUNT TYPE I.
SELECT SINGLE * FROM ZTRACKING WHERE VBELN = LIST_TAB-LIFNR.
IF SY-SUBRC = 0.
FIELD-SET: 'XLIST_TRACK1' DA_INDEX ZTRACKING-TRACKING1,
'XLIST_TRACK2' DA_INDEX ZTRACKING-TRACKING2,
'XLIST_TRACK3' DA_INDEX ZTRACKING-TRACKING3,
'XLIST_TRACK4' DA_INDEX ZTRACKING-TRACKING4,
'XLIST_TRACK5' DA_INDEX ZTRACKING-TRACKING5,
'XLIST_TRACK6' DA_INDEX ZTRACKING-TRACKING6,
'XLIST_TRACK7' DA_INDEX ZTRACKING-TRACKING7,
'XLIST_TRACK8' DA_INDEX ZTRACKING-TRACKING8,
'XLIST_TRACK9' DA_INDEX ZTRACKING-TRACKING9,
'XLIST_TRACK10' DA_INDEX ZTRACKING-TRACKING10,
'XLIST_TRACK11' DA_INDEX ZTRACKING-TRACKING11,
'XLIST_TRACK12' DA_INDEX ZTRACKING-TRACKING12,
'XLIST_TRATY' DA_INDEX ZTRACKING-TRATY.
ENDIF.
IF LIST_TAB-ARKTX(10) = 'Configured'.
SELECT: SINGLE * FROM MAST WHERE MATNR = LIST_TAB-MATNR,
COUNT(*) FROM STPO INTO COUNT WHERE STLNR = MAST-STLNR.
ELSEIF COUNT <> 0.
LIST_TAB-LIFNR = 'X'.
MODIFY LIST_TAB INDEX DA_INDEX.
COUNT = COUNT - 1.
ENDIF.
FIELD-SET 'XLIST_CFG' DA_INDEX LIST_TAB-LIFNR.
*** Coded on 01/25/2000 Author: K Wilson ***************************
*** Get for details for CRP
IF SY-TCODE = 'ZVW10A'. " Only relevant for ITS CRP report tx
TABLES: BKPF, VBFA, VBPA, ADRC.
DATA: LINE_ITEM LIKE VBFA-POSNV.
IF DA_INDEX = 1. "Get sold to and ship to address.
*** Get SO date and WWW Ref # from the VBAK table
SELECT SINGLE * FROM VBAK
WHERE VBELN = LIST_TAB-VBELN.
WRITE VBAK-ERDAT TO C_DATUM DD/MM/YYYY.
*** Set Sales Order date
FIELD-SET: 'XLIST_SO_DATE' DA_INDEX C_DATUM.
*** Set WWW Reference number
FIELD-SET: 'XLIST_PO' DA_INDEX VBAK-BSTNK.
*** Get the SO Partner address details from the ADRC table
SELECT * FROM VBPA "VBPA is the SO partner table
WHERE VBELN = LIST_TAB-VBELN.
IF VBPA-PARVW = 'AG'. "Sold to
SELECT SINGLE * FROM ADRC
WHERE ADDRNUMBER = VBPA-ADRNR.
FIELD-SET: 'XLIST_AG_NAME1' DA_INDEX ADRC-MC_NAME1.
FIELD-SET: 'XLIST_AG_NAME2' DA_INDEX ADRC-NAME2.
FIELD-SET: 'XLIST_AG_CITY1' DA_INDEX ADRC-MC_CITY1.
FIELD-SET: 'XLIST_AG_ZIP' DA_INDEX ADRC-POST_CODE1.
FIELD-SET: 'XLIST_AG_COUNTRY' DA_INDEX ADRC-COUNTRY.
FIELD-SET: 'XLIST_AG_REGION' DA_INDEX ADRC-REGION.
FIELD-SET: 'XLIST_AG_STREET' DA_INDEX ADRC-MC_STREET.
FIELD-SET: 'XLIST_AG_TAX' DA_INDEX ADRC-TAXJURCODE.
FIELD-SET: 'XLIST_AG_TEL' DA_INDEX ADRC-TEL_NUMBER.
ELSEIF VBPA-PARVW = 'WE'. "Ship to
SELECT SINGLE * FROM ADRC
WHERE ADDRNUMBER = VBPA-ADRNR.
FIELD-SET: 'XLIST_WE_NAME1' DA_INDEX ADRC-MC_NAME1.
FIELD-SET: 'XLIST_WE_NAME2' DA_INDEX ADRC-NAME2.
FIELD-SET: 'XLIST_WE_CITY1' DA_INDEX ADRC-MC_CITY1.
FIELD-SET: 'XLIST_WE_ZIP' DA_INDEX ADRC-POST_CODE1.
FIELD-SET: 'XLIST_WE_COUNTRY' DA_INDEX ADRC-COUNTRY.
FIELD-SET: 'XLIST_WE_REGION' DA_INDEX ADRC-REGION.
FIELD-SET: 'XLIST_WE_STREET' DA_INDEX ADRC-MC_STREET.
FIELD-SET: 'XLIST_WE_TAX' DA_INDEX ADRC-TAXJURCODE.
FIELD-SET: 'XLIST_WE_TEL' DA_INDEX ADRC-TEL_NUMBER.
ENDIF.
ENDSELECT.
ENDIF.
*** Determine line item number of the SO
LINE_ITEM = ( DA_INDEX * 10 ).
*** list_tab-vbeln contains the Sales Order number
SELECT * FROM VBFA WHERE VBELV = LIST_TAB-VBELN AND
POSNV = LINE_ITEM.
CASE VBFA-VBTYP_N.
WRITE VBFA-RFMNG TO C_MENGE UNIT LIST_TAB-VRKME.
WRITE VBFA-ERDAT TO C_DATUM DD/MM/YYYY.
WRITE VBFA-RFWRT TO C_WERT CURRENCY LIST_TAB-WAERK.
*** Delivery document
WHEN 'J'.
FIELD-SET: 'XLIST_LIFNR_Q' DA_INDEX C_MENGE.
*** Select on VBFA using the delivery document in order to find the
*** picking and the goods issue doc
SELECT * FROM VBFA WHERE VBELV = VBFA-VBELN
AND POSNV = VBFA-POSNN.
CASE VBFA-VBTYP_N.
WRITE VBFA-ERDAT TO C_DATUM DD/MM/YYYY.
*** Picking document
WHEN 'Q'.
FIELD-SET: 'XLIST_PICK' DA_INDEX VBFA-VBELN.
FIELD-SET: 'XLIST_PICK_Q' DA_INDEX C_MENGE.
FIELD-SET: 'XLIST_PICK_D' DA_INDEX C_DATUM.
*** Goods Issue document
WHEN 'R'.
FIELD-SET: 'XLIST_GI' DA_INDEX VBFA-VBELN.
FIELD-SET: 'XLIST_GI_Q' DA_INDEX C_MENGE.
FIELD-SET: 'XLIST_GI_D' DA_INDEX C_DATUM.
WHEN OTHERS.
ENDCASE.
ENDSELECT.
*** Return document
WHEN 'H'.
FIELD-SET: 'XLIST_RETURN' DA_INDEX VBFA-VBELN.
FIELD-SET: 'XLIST_RETURN_Q' DA_INDEX C_MENGE.
FIELD-SET: 'XLIST_RETURN_P' DA_INDEX C_WERT.
FIELD-SET: 'XLIST_RETURN_D' DA_INDEX C_DATUM.
*** Returns delivery doc
WHEN 'T'.
FIELD-SET: 'XLIST_RET_DEL' DA_INDEX VBFA-VBELN.
FIELD-SET: 'XLIST_RET_DEL_Q' DA_INDEX C_MENGE.
FIELD-SET: 'XLIST_RET_DEL_D' DA_INDEX C_DATUM.
*** Select on VBFA using the delivery document to find the returns
*** goods issue document
SELECT * FROM VBFA WHERE VBELV = VBFA-VBELN
AND POSNV = VBFA-POSNN.
CASE VBFA-VBTYP_N.
WRITE VBFA-ERDAT TO C_DATUM DD/MM/YYYY.
*** Returns Goods Issue doc
WHEN 'R'.
FIELD-SET: 'XLIST_RET_GI' DA_INDEX VBFA-VBELN.
FIELD-SET: 'XLIST_RET_GI_Q' DA_INDEX C_MENGE.
FIELD-SET: 'XLIST_RET_GI_D' DA_INDEX C_DATUM.
WHEN OTHERS.
ENDCASE.
ENDSELECT.
*** Returns leading to a credit memo
WHEN 'O'.
FIELD-SET: 'XLIST_RET_CR' DA_INDEX VBFA-VBELN.
FIELD-SET: 'XLIST_RET_CR_Q' DA_INDEX C_MENGE.
FIELD-SET: 'XLIST_RET_CR_P' DA_INDEX C_WERT.
FIELD-SET: 'XLIST_RET_CR_D' DA_INDEX C_DATUM.
SELECT SINGLE * FROM BKPF WHERE AWKEY = VBFA-VBELN.
FIELD-SET: 'XLIST_RET_AC' DA_INDEX BKPF-BELNR.
WRITE BKPF-BUDAT TO C_DATUM DD/MM/YYYY.
FIELD-SET: 'XLIST_RET_AC_D' DA_INDEX C_DATUM.
*** Invoice document
WHEN 'M'.
FIELD-SET: 'XLIST_INVOICE' DA_INDEX VBFA-VBELN.
FIELD-SET: 'XLIST_INVOICE_Q' DA_INDEX C_MENGE.
FIELD-SET: 'XLIST_INVOICE_P' DA_INDEX C_WERT.
FIELD-SET: 'XLIST_INVOICE_D' DA_INDEX C_DATUM.
SELECT SINGLE * FROM BKPF WHERE AWKEY = VBFA-VBELN.
FIELD-SET: 'XLIST_ACCOUNT' DA_INDEX BKPF-BELNR.
WRITE BKPF-BUDAT TO C_DATUM DD/MM/YYYY.
FIELD-SET: 'XLIST_ACCOUNT_D' DA_INDEX C_DATUM.
WHEN 'V'. "Purchase order
FIELD-SET: 'XLIST_PORDER' DA_INDEX VBFA-VBELN.
FIELD-SET: 'XLIST_PORDER_Q' DA_INDEX C_MENGE.
FIELD-SET: 'XLIST_PORDER_P' DA_INDEX C_WERT.
FIELD-SET: 'XLIST_PORDER_D' DA_INDEX C_DATUM.
WHEN 'C'. "Other order
FIELD-SET: 'XLIST_OTHERC' DA_INDEX VBFA-VBELN.
FIELD-SET: 'XLIST_OTHERC_Q' DA_INDEX C_MENGE.
FIELD-SET: 'XLIST_OTHERC_P' DA_INDEX C_WERT.
FIELD-SET: 'XLIST_OTHERC_D' DA_INDEX C_DATUM.
WHEN OTHERS.
ENDCASE.
ENDSELECT.
ENDIF.
*} INSERT
ADD 1 TO DA_INDEX.
ENDLOOP.
ENDFORM.


