Мне дали задание передать ABAP в xs Javascript. Это будет использовать и службу ODATA, где запрос POST с body.data будет иметь объект с заголовками и массив объектов, которые я смогу использовать в следующем формате:
{
"IvCompCode":"1710",
"IvDocType":"NB",
"IvPurchOrg":"1710",
"IvPurGroup":"002",
"IvVendor":"17386001",
"ItemsSet":[
{
"Ebelp":"00010",
"Matnr":"MZ-RM-M500-09",
"Werks":"1710",
"Lgort":"171S",
"Menge":"5.000",
"Netpr":"100.000"
},
{
"Ebelp":"00020",
"Matnr":"MZ-RM-M500-07",
"Werks":"1710",
"Lgort":"171S",
"Menge":"4.000",
"Netpr":"105.000"
}
]
}
Я могу вызвать Функция ABAP внутри функции javascript, однако я понятия не имею, как передать переменные из службы ODATA, а затем просто поместить их в функцию ABAP, сохраняя их в функции javascript, чтобы их можно было использовать в другой лог c. Вот что у меня сейчас:
<script language="JavaScript">
function callABAPMethod()
{
<%
DATA: po_header LIKE bapimepoheader,
poheaderx LIKE bapimepoheaderx,
tab_poitem TYPE STANDARD TABLE OF bapimepoitem,
tab_poitemx TYPE STANDARD TABLE OF bapimepoitemx,
tab_poitem_struct LIKE bapimepoitem,
tab_poitemx_struct LIKE bapimepoitemx,
ebelp_num(5) TYPE n,
ebelp_char(5) TYPE c.
po_header-comp_code = iv_comp_code.
po_header-doc_type = iv_doc_type.
po_header-vendor = iv_vendor.
po_header-purch_org = iv_purch_org.
po_header-pur_group = iv_pur_group.
poheaderx-comp_code = 'X'.
poheaderx-doc_type = 'X'.
poheaderx-vendor = 'X'.
poheaderx-purch_org = 'X'.
poheaderx-pur_group = 'X'.
LOOP AT zpoitems INTO DATA(item).
CLEAR: tab_poitem_struct, tab_poitemx_struct.
tab_poitem_struct-po_item = item-ebelp.
tab_poitem_struct-material = item-matnr.
tab_poitem_struct-plant = item-werks.
tab_poitem_struct-stge_loc = item-lgort.
tab_poitem_struct-quantity = item-menge.
tab_poitem_struct-net_price = item-netpr.
tab_poitemx_struct-po_item = item-ebelp.
tab_poitemx_struct-po_itemx = 'X'.
tab_poitemx_struct-material = 'X'.
tab_poitemx_struct-plant = 'X'.
tab_poitemx_struct-stge_loc = 'X'.
tab_poitemx_struct-quantity = 'X'.
tab_poitemx_struct-net_price = 'X'.
APPEND tab_poitem_struct TO tab_poitem.
APPEND tab_poitemx_struct TO tab_poitemx.
ENDLOOP.
IF iv_update EQ 'X'.
IF iv_po_number IS NOT INITIAL.
CALL FUNCTION 'BAPI_PO_CHANGE'
EXPORTING
purchaseorder = iv_po_number
poheader = po_header
poheaderx = poheaderx
TABLES
return = return
poitem = tab_poitem
poitemx = tab_poitemx.
IF sy-subrc = 0.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' .
ENDIF.
ENDIF.
ELSE.
CALL FUNCTION 'BAPI_PO_CREATE1'
EXPORTING
poheader = po_header
poheaderx = poheaderx
IMPORTING
exppurchaseorder = po_numer
TABLES
return = et_return
poitem = tab_poitem
poitemx = tab_poitemx.
IF sy-subrc = 0.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
ENDIF.
ENDIF.
%>
}
</script>