Purpose
Call with tables and structures (BAPI_SALESORDER_GETDETAILBOS)

We want to call up a BAPI function, passing and returning values in structures and tables.


Example

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

 
GuiXT Script


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"

// 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

Components
InputAssistant