Example The user enters a customer order number. We display
order details via BAPI_SALESORDER_GETDETAILBOS.

GuiXT Script
GuiXT
Offset (1,1)
InputField (1,2) "Order" (1,22) size=10 name="vbeln"
Pushbutton (1,39) "Read order" process="read_customer_order.txt" size=(1,21)
// Order header
Box (3,1) (8,103)
InputField (4,3) "Customer" (4,23) size=10 _
name="orderheader.sold_to" -readOnly
InputField (4,37) -noLabel size=61 _
name="customername" -readOnly
InputField (5,3) "Date" (5,23) size=10 _
name="orderheader.doc_date" -readOnly
InputField (6,3) "Reference" (6,23) size=40 _
name="orderheader.purch_no" -readOnly
InputField (7,3) "Net Value" (7,23) size=16 _
name="orderheader.net_val_hd" -readOnly
InputField (7,40) -noLabel size=8 -readOnly _
name="orderheader.currency" -readOnly
// Items
Table (9,1) (23,104) name="orderitems" title="&V[orderitems.rowcount] Items" _
fixedColumns=6 -singlerowselection
Column "Item" size=6 name="itm_number" -readOnly
Column "Material" size=18 name="material" -readOnly
Column "Text" size=36 name="short_text" -readOnly
Column "Quantity" size=12 name="req_qty" -readOnly
Column "Unit" size=6 name="sales_unit" -readOnly
Column "Net Value" size=16 name="subtot_pp1" -readOnly
InputScript "read_customer_order.txt"
GuiXT
// Order header
CreateStructure V[orderheader] _
sold_to doc_date purch_no net_val_hd currency
// items
CreateTable V[orderitems] _
itm_number material short_text req_qty sales_unit subtot_pp1
// partners
CreateStructure V[orderpartner] customer address
CreateTable V[orderpartners] include=V[orderpartner]
// addresses
CreateStructure V[orderaddress] address name city
CreateTable V[orderaddresses] include=V[orderaddress]
// read order
Call "BAPI_SALESORDER_GETDETAILBOS" _
export.SALESDOCUMENT="vbeln" _
import.ORDERHEADER="orderheader" _
import.ORDERADDRESS="orderaddresses" _
import.ORDERPARTNERS="orderpartners" _
import.ORDERITEMS="orderitems"
// Display currency value with 2 decimal places
Set V[orderheader.net_val_hd] "&V[orderheader.net_val_hd]" * 1 _
decimals=2 decimalSeparator="UserDefault"
// Items
Set V[k] 0
label next_pos
if V[k<&V[orderitems.rowcount]]
Set V[k] &V[k] + 1
// Display quantity as integer value if no decimals (BAPI returns 3 decimals)
Set V[orderitems.req_qty.&V[k]] "&V[orderitems.req_qty.&V[k]]" * 1 _
decimalSeparator="UserDefault"
// Display currency value with 2 decimal places
Set V[orderitems.subtot_pp1.&V[k]] "&V[orderitems.subtot_pp1.&V[k]]" * 1 _
decimals=2 decimalSeparator="UserDefault"
goto next_pos
endif
// address number from partner table
// we use the customer number as key
ReadRow V[orderpartner] table=V[orderpartners] key="&V[orderheader.sold_to]"
// address from address table via address number
ReadRow V[orderaddress] table=V[orderaddresses] key="&V[orderpartner.address]"
// set customer adress data
Set V[customername] "&V[orderaddress.name], &V[orderaddress.city]"
Return
|