Ejemplo actualización de indicador de borrado orden de servicio
Estimados
Comparto aquí un programa para marcar el indicador de borrado de una posición de orden de compras.
parametros:
DATA:
P_EBELN type EBELN,
P_EBELP type EBELP,
T_RETURN type BAPIRET2.
DATA: poheader TYPE bapimepoheader,
poheaderx TYPE bapimepoheaderx,
po_item TYPE bapimepoitem OCCURS 0 WITH HEADER LINE,
po_itemx TYPE bapimepoitemx OCCURS 0 WITH HEADER LINE.
DATA: f1_return TYPE bapiret2 OCCURS 0 WITH HEADER LINE.
FIELD-SYMBOLS: <fs_doc> TYPE zsd_wsordservdetdoc,
<fs_return> TYPE bapiret2,
<fs_wsserv> TYPE zsd_wsordservdet,
<fs_ordservcab> TYPE zsd_wsordservcab.
"APPEND INITIAL LINE TO t_ordservcab ASSIGNING <fs_ordservcab>.
poheader-po_number = p_ebeln.
poheader-delete_ind = 'L'.
"APPEND poheader.
poheaderx-PO_NUMBER = 'X'.
poheaderx-delete_ind = 'X'.
"APPEND poheaderx.
"POSICIONES
po_item-po_item = p_ebelp." <fs_wsserv>-po_item." nro. posición
po_item-delete_ind = 'L'.
po_item-order_reason = '100'.
APPEND po_item.
po_itemx-po_item = po_item-po_item.
po_itemx-po_itemx = 'X'.
po_itemx-delete_ind = 'X'.
po_itemx-order_reason = 'X'.
APPEND po_itemx.
CALL FUNCTION 'BAPI_PO_CHANGE'
EXPORTING
purchaseorder = p_ebeln
poheader = poheader
poheaderx = poheaderx
NO_PRICE_FROM_PO = 'X'
TABLES
return = f1_return
poitem = po_item
poitemx = po_itemx.
t_return[] = f1_return[].
IF sy-subrc EQ 0.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
ENDIF.
|