09-26-2008 12:40 PM
Hi all,
i need to get items of a purchase order, i use class CL_PO_HEADER_HANDLE_MM, i execute the method GET_ITEMS but the result is empty. I don't understand how this class work.
Thanks for your help.
09-26-2008 8:59 PM
Hello
The sample report ZUS_SDN_PO_HEADER_HANDLE_MM demonstrates how to use class CL_PO_HEADER_HANDLE_MM (and IF_PURCHASE_ORDER_MM).
*&---------------------------------------------------------------------*
*& Report ZUS_SDN_PO_HEADER_HANDLE_MM
*&
*&---------------------------------------------------------------------*
*& Report demonstrate the usage of class CL_PO_HEADER_HANDLE_MM
*&---------------------------------------------------------------------*
*& Thread: Need to get items of purchase order, in POO
*& <a class="jive_macro jive_macro_thread" href="" __jive_macro_name="thread" modifiedtitle="true" __default_attr="1064610"></a>
*&---------------------------------------------------------------------*
REPORT zus_sdn_po_header_handle_mm.
DATA: go_po_header TYPE REF TO cl_po_header_handle_mm,
go_po_order TYPE REF TO if_purchase_order_mm,
gc_items TYPE i.
DATA: gt_items TYPE purchase_order_items,
gs_item TYPE purchase_order_item,
gs_item_data TYPE mepoitem,
gt_item_data TYPE STANDARD TABLE OF mepoitem.
DATA: go_table TYPE REF TO cl_salv_table.
PARAMETERS:
p_ebeln TYPE ebeln DEFAULT '3000000045'.
START-OF-SELECTION.
CREATE OBJECT go_po_header
EXPORTING
im_po_number = p_ebeln
EXCEPTIONS
failure = 1
OTHERS = 2.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
" initialization
CALL METHOD go_po_header->po_initialize
* EXPORTING
* im_document =
.
" Read purchase order
CALL METHOD go_po_header->po_read
EXPORTING
im_tcode = 'ME23N'
im_trtyp = 'A'
im_aktyp = 'A'
im_po_number = p_ebeln
* im_document =
* IMPORTING
* ex_result =
.
" Casting to purchase order
go_po_order ?= go_po_header.
gt_items = go_po_order->get_items( ).
LOOP AT gt_items INTO gs_item.
gs_item_data = gs_item-item->get_data( ).
APPEND gs_item_data TO gt_item_data.
ENDLOOP.
TRY.
CALL METHOD cl_salv_table=>factory
* EXPORTING
* list_display = IF_SALV_C_BOOL_SAP=>FALSE
* r_container =
* container_name =
IMPORTING
r_salv_table = go_table
CHANGING
t_table = gt_item_data.
go_table->display( ).
CATCH cx_salv_msg .
ENDTRY.
END-OF-SELECTION.
Regards
Uwe
09-26-2008 12:52 PM
Hi,
Please check this sample code..
" Method IF_EX_ME_PROCESS_PO_CUST ~ OPEN.
" Define local data
DATA:
lt_vbap TYPE TABLE OF vbap.
DATA:
lt_vbap TYPE TABLE OF vbap,
wa_vbap TYPE vbap, wa_vbap TYPE vbap.
DATA:
ls_header TYPE mepoheader, ls_header TYPE mepoheader,
R_DATA TYPE PURCHASE_ORDER_ITEMS,
R_DATA TYPE PURCHASE_ORDER_ITEMS.
DATA :
CL_PO_HEADER_HANDLE_MM TYPE REF TO CL_PO_HEADER_HANDLE_MM.
CHECK sy-tcode EQ 'ME21N'. CHECK sy-tcode EQ 'ME21N'.
CL_PO_HEADER_HANDLE_MM ?= IM_HEADER. CL_PO_HEADER_HANDLE_MM? = IM_HEADER.
CL_PO_HEADER_HANDLE_MM->MY_CUST_FIREWALL_ON = 'X'. CL_PO_HEADER_HANDLE_MM-> MY_CUST_FIREWALL_ON = 'X'.
CALL METHOD IM_HEADER->GET_DATA CALL METHOD IM_HEADER-> GET_DATA
RECEIVING
RE_DATA = ls_header. RE_DATA = ls_header.
" Change header
ls_header-LIFNR = '0000009003'. ls_header-LIFNR ='0000009003 '.
CALL METHOD IM_HEADER->SET_DATA CALL METHOD IM_HEADER-> SET_DATA
EXPORTING
IM_DATA = ls_header. IM_DATA = ls_header.
" Create Items.
LOOP AT lt_vbap INTO wa_vbap. LOOP AT lt_vbap INTO wa_vbap.
CALL METHOD IM_HEADER->CREATE_ITEM CALL METHOD IM_HEADER-> CREATE_ITEM
RECEIVING
RE_ITEM = RE_ITEM. RE_ITEM = RE_ITEM.
CHECK NOT RE_ITEM is initial. CHECK NOT RE_ITEM is initial.
CALL METHOD RE_ITEM->GET_DATA CALL METHOD RE_ITEM-> GET_DATA
RECEIVING
RE_DATA = R_DATA. RE_DATA = R_DATA.
" Change Item
CALL METHOD RE_ITEM->SET_DATA CALL METHOD RE_ITEM-> SET_DATA
EXPORTING
IM_DATA = R_DATA. IM_DATA = R_DATA.
ENDLOOP.
ENDMETHOD.
Hope this would help you.
Good luck
Narin
09-26-2008 1:34 PM
09-26-2008 8:59 PM
Hello
The sample report ZUS_SDN_PO_HEADER_HANDLE_MM demonstrates how to use class CL_PO_HEADER_HANDLE_MM (and IF_PURCHASE_ORDER_MM).
*&---------------------------------------------------------------------*
*& Report ZUS_SDN_PO_HEADER_HANDLE_MM
*&
*&---------------------------------------------------------------------*
*& Report demonstrate the usage of class CL_PO_HEADER_HANDLE_MM
*&---------------------------------------------------------------------*
*& Thread: Need to get items of purchase order, in POO
*& <a class="jive_macro jive_macro_thread" href="" __jive_macro_name="thread" modifiedtitle="true" __default_attr="1064610"></a>
*&---------------------------------------------------------------------*
REPORT zus_sdn_po_header_handle_mm.
DATA: go_po_header TYPE REF TO cl_po_header_handle_mm,
go_po_order TYPE REF TO if_purchase_order_mm,
gc_items TYPE i.
DATA: gt_items TYPE purchase_order_items,
gs_item TYPE purchase_order_item,
gs_item_data TYPE mepoitem,
gt_item_data TYPE STANDARD TABLE OF mepoitem.
DATA: go_table TYPE REF TO cl_salv_table.
PARAMETERS:
p_ebeln TYPE ebeln DEFAULT '3000000045'.
START-OF-SELECTION.
CREATE OBJECT go_po_header
EXPORTING
im_po_number = p_ebeln
EXCEPTIONS
failure = 1
OTHERS = 2.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
" initialization
CALL METHOD go_po_header->po_initialize
* EXPORTING
* im_document =
.
" Read purchase order
CALL METHOD go_po_header->po_read
EXPORTING
im_tcode = 'ME23N'
im_trtyp = 'A'
im_aktyp = 'A'
im_po_number = p_ebeln
* im_document =
* IMPORTING
* ex_result =
.
" Casting to purchase order
go_po_order ?= go_po_header.
gt_items = go_po_order->get_items( ).
LOOP AT gt_items INTO gs_item.
gs_item_data = gs_item-item->get_data( ).
APPEND gs_item_data TO gt_item_data.
ENDLOOP.
TRY.
CALL METHOD cl_salv_table=>factory
* EXPORTING
* list_display = IF_SALV_C_BOOL_SAP=>FALSE
* r_container =
* container_name =
IMPORTING
r_salv_table = go_table
CHANGING
t_table = gt_item_data.
go_table->display( ).
CATCH cx_salv_msg .
ENDTRY.
END-OF-SELECTION.
Regards
Uwe
09-29-2008 8:22 AM