Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

get data with module function BAPI_PO_GETDETA in odata service.

trabelsioussa
Explorer
0 Likes
2,513

I'm trying to pick up the value from a field which is in a table line. But I cannot access it because my table has no header line.

error =====> tables with headers are no longer supported in the oo context .

any solution pls.

I have the following code:

method ZPOSTS_STRUCTURE_GET_ENTITY.
**TRY.
*CALL METHOD SUPER->ZPOSTS_STRUCTURE_GET_ENTITY
* EXPORTING
* IV_ENTITY_NAME =
* IV_ENTITY_SET_NAME =
* IV_SOURCE_NAME =
* IT_KEY_TAB =
** IO_REQUEST_OBJECT =
** IO_TECH_REQUEST_CONTEXT =
* IT_NAVIGATION_PATH =
** IMPORTING
** ER_ENTITY =
** ES_RESPONSE_CONTEXT =
* .
** CATCH /IWBEP/CX_MGW_BUSI_EXCEPTION .
** CATCH /IWBEP/CX_MGW_TECH_EXCEPTION .
**ENDTRY.



"-----------------------------------------------------------------------

Data: BEGIN OF t_itab1,
po_number TYPE ebeln,
po_item TYPE ebelp,
short_text TYPE txz01,
material TYPE matnr,
co_code TYPE bukrs,
plant TYPE ewerk,
store_loc type lgort_d,
mat_grp TYPE matkl,
target_qty TYPE ktmng,
net_price TYPE bpreibapi,
net_value TYPE nwertbapi,
END OF t_itab1,
"tt_itab LIKE TABLE OF ts_itab,
"wa_itab LIKE LINE OF tt_itab.

i_itab1 LIKE TABLE OF t_itab1,
wa_itab1 LIKE LINE OF i_itab1.


" data: po_itemsd type standard table of t_itab1.

"parameters: p_ebeln type ekko-ebeln.
DATA: wa_key LIKE LINE OF it_key_tab,
lv_PO_NUMBER type ZPOSTS_STRUCTURE-PO_NUMBER,
wa_itab TYPE ZPOSTS_STRUCTURE.


READ TABLE it_key_tab INTO wa_key WITH KEY name = 'PO_NUMBER'.
IF sy-subrc = 0.
lv_PO_NUMBER = wa_key-value.
ENDIF.
call function 'BAPI_PO_GETDETAIL'
exporting
purchaseorder = lv_PO_NUMBER
ITEMS = 'X'
* ACCOUNT_ASSIGNMENT = ' '
* SCHEDULES = ' '
* HISTORY = ' '
* ITEM_TEXTS = ' '
* HEADER_TEXTS = ' '
* SERVICES = ' '
* CONFIRMATIONS = ' '
* SERVICE_TEXTS = ' '
* EXTENSIONS = ' '
* IMPORTING
* PO_HEADER =
* PO_ADDRESS =
tables
* PO_HEADER_TEXTS =
po_items = i_itab1
* PO_ITEM_ACCOUNT_ASSIGNMENT =
* PO_ITEM_SCHEDULES =
* PO_ITEM_CONFIRMATIONS =
* PO_ITEM_TEXTS =
* PO_ITEM_HISTORY =
* PO_ITEM_HISTORY_TOTALS =
* PO_ITEM_LIMITS =
* PO_ITEM_CONTRACT_LIMITS =
* PO_ITEM_SERVICES =
* PO_ITEM_SRV_ACCASS_VALUES =
* RETURN =
* PO_SERVICES_TEXTS =
* EXTENSIONOUT =
.
"INSERT INTO scarr VALUES scarr_wa.
check sy-subrc = 0.
"move : wa_itab-PO_NUMBER TO po_itemsd-PO_NUMBER.
append wa_itab-po_number to i_itab1.
"write :i_itab1-po_number.
"wa_itab-PO_ITEM ER_ENTITY-SHORT_TEXT ER_ENTITY-MATERIAL ER_ENTITY-CO_CODE ER_ENTITY-PLANT
"ER_ENTITY-STORE_LOC
"ER_ENTITY-STORE_LOC ER_ENTITY-TARGET_QTY ER_ENTITY-NET_PRICE ER_ENTITY-NET_VALUE

"VALUES po_items-PO_NUMBER po_items-PO_ITEM po_items-SHORT_TEXT po_items-MATERIAL po_items-CO_CODE po_items-PLANT
" po_items-STORE_LOC po_items-MAT_GRP po_items-TARGET_QTY po_items-NET_PRICE po_items-NET_VALUE.

"po_items-MATERIAL,
ENDMETHOD.



Regards,

I'm trying to pick up the value from a field which is in a table line. But I cannot access it because my table has no header line.

error =====> tables with headers are no longer supported in the oo context .

any solution pls.

I have the following code:

method ZPOSTS_STRUCTURE_GET_ENTITY.
**TRY.
*CALL METHOD SUPER->ZPOSTS_STRUCTURE_GET_ENTITY
* EXPORTING
* IV_ENTITY_NAME =
* IV_ENTITY_SET_NAME =
* IV_SOURCE_NAME =
* IT_KEY_TAB =
** IO_REQUEST_OBJECT =
** IO_TECH_REQUEST_CONTEXT =
* IT_NAVIGATION_PATH =
** IMPORTING
** ER_ENTITY =
** ES_RESPONSE_CONTEXT =
* .
** CATCH /IWBEP/CX_MGW_BUSI_EXCEPTION .
** CATCH /IWBEP/CX_MGW_TECH_EXCEPTION .
**ENDTRY.



"-----------------------------------------------------------------------

Data: BEGIN OF t_itab1,
po_number TYPE ebeln,
po_item TYPE ebelp,
short_text TYPE txz01,
material TYPE matnr,
co_code TYPE bukrs,
plant TYPE ewerk,
store_loc type lgort_d,
mat_grp TYPE matkl,
target_qty TYPE ktmng,
net_price TYPE bpreibapi,
net_value TYPE nwertbapi,
END OF t_itab1,
"tt_itab LIKE TABLE OF ts_itab,
"wa_itab LIKE LINE OF tt_itab.

i_itab1 LIKE TABLE OF t_itab1,
wa_itab1 LIKE LINE OF i_itab1.


" data: po_itemsd type standard table of t_itab1.

"parameters: p_ebeln type ekko-ebeln.
DATA: wa_key LIKE LINE OF it_key_tab,
lv_PO_NUMBER type ZPOSTS_STRUCTURE-PO_NUMBER,
wa_itab TYPE ZPOSTS_STRUCTURE.


READ TABLE it_key_tab INTO wa_key WITH KEY name = 'PO_NUMBER'.
IF sy-subrc = 0.
lv_PO_NUMBER = wa_key-value.
ENDIF.
call function 'BAPI_PO_GETDETAIL'
exporting
purchaseorder = lv_PO_NUMBER
ITEMS = 'X'
* ACCOUNT_ASSIGNMENT = ' '
* SCHEDULES = ' '
* HISTORY = ' '
* ITEM_TEXTS = ' '
* HEADER_TEXTS = ' '
* SERVICES = ' '
* CONFIRMATIONS = ' '
* SERVICE_TEXTS = ' '
* EXTENSIONS = ' '
* IMPORTING
* PO_HEADER =
* PO_ADDRESS =
tables
* PO_HEADER_TEXTS =
po_items = i_itab1
* PO_ITEM_ACCOUNT_ASSIGNMENT =
* PO_ITEM_SCHEDULES =
* PO_ITEM_CONFIRMATIONS =
* PO_ITEM_TEXTS =
* PO_ITEM_HISTORY =
* PO_ITEM_HISTORY_TOTALS =
* PO_ITEM_LIMITS =
* PO_ITEM_CONTRACT_LIMITS =
* PO_ITEM_SERVICES =
* PO_ITEM_SRV_ACCASS_VALUES =
* RETURN =
* PO_SERVICES_TEXTS =
* EXTENSIONOUT =
.
"INSERT INTO scarr VALUES scarr_wa.
check sy-subrc = 0.
"move : wa_itab-PO_NUMBER TO po_itemsd-PO_NUMBER.
append wa_itab-po_number to i_itab1.
"write :i_itab1-po_number.
"wa_itab-PO_ITEM ER_ENTITY-SHORT_TEXT ER_ENTITY-MATERIAL ER_ENTITY-CO_CODE ER_ENTITY-PLANT
"ER_ENTITY-STORE_LOC
"ER_ENTITY-STORE_LOC ER_ENTITY-TARGET_QTY ER_ENTITY-NET_PRICE ER_ENTITY-NET_VALUE

"VALUES po_items-PO_NUMBER po_items-PO_ITEM po_items-SHORT_TEXT po_items-MATERIAL po_items-CO_CODE po_items-PLANT
" po_items-STORE_LOC po_items-MAT_GRP po_items-TARGET_QTY po_items-NET_PRICE po_items-NET_VALUE.

"po_items-MATERIAL,
ENDMETHOD.



Regards,

6 REPLIES 6
Read only

thkolz
Contributor
0 Likes
2,188
Data: lt_poitems TYPE STANDARD TABLE OF bapiekpo.
Read only

thkolz
Contributor
0 Likes
2,188

You should use TYPES to declare your data type, not DATA.

DATA is used to declare variables...

TYPES:
    BEGIN OF ty_po_item,
      ebeln TYPE eben,
      ebelp TYPE ebelp,
*     ...
    END OF ty_po_item.
TYPES: tt_po_item TYPE STANDARD TABLE OF ty_po_item.

DATA:
  lt_po_item TYPE tt_po_item,
  ls_po_item TYPE ty_po_item.

* OR

DATA:
  lt_po_item TYPE STANDARD TABLE OF ty_po_item.


* Process internal table
LOOP AT lt_po_item INTO ls_po_item.
  WRITE:/ ls_po_item-ebeln, ls_po_item-ebelp.
ENDLOOP.

* OR with inline declaration
LOOP AT lt_po_item INTO DATA(s_po_item).
  WRITE:/ s_po_item-ebeln, s_po_item-ebelp.
ENDLOOP.

You should practice this in order to write good code.

Read only

0 Likes
2,188

thanks for response but i have other error ==> call of the function bapi_po_getdetail failed; a field should be assigned to the parameter PO_ITEMS - THE TYPES match, but not t .

do you have any idea how solve this error

Read only

0 Likes
2,188

c12b61ded10b4e18beae75c3b6218d2c

Read only

0 Likes
2,188
REPORT ztest.

PARAMETERS:
p_ebeln TYPE ebeln DEFAULT '1234567890'.

DATA:
ls_po_header TYPE bapimepoheader,
lt_po_item TYPE bapimepoitem_tp,
lt_return TYPE bapiret2_t.


CALL FUNCTION 'BAPI_PO_GETDETAIL1'
EXPORTING
purchaseorder = p_ebeln
IMPORTING
poheader = ls_po_header
TABLES
return = lt_return
poitem = lt_po_item.

LOOP AT lt_po_item INTO DATA(s_po_item).
WRITE:/ s_po_item-po_item, s_po_item-short_text, s_po_item-material, s_po_item-quantity, s_po_item-po_unit.
ENDLOOP.
Read only

thkolz
Contributor