
You need to make adjustments in the code of the generated BAPI wrappers to enable them to retrieve data from the database tables ZTR_ORDER_HDR and ZTR_ORDER_ITM.
|
FUNCTION ZTR_ORDER_GETLIST. *"-------------------------------------------------------------------- *"*"Local Interface: *" TABLES *" ORDERHEADER STRUCTURE ZTR_ORDER_HDR *" RETURN STRUCTURE BAPIRET2 *"-------------------------------------------------------------------- select * from ZTR_ORDER_HDR into corresponding fields of table orderheader. ENDFUNCTION. |
The BAPI returns the order data present in the ZTR_ORDER_HDR table.
|
FUNCTION ZTR_ORDER_GETDETAIL. *"-------------------------------------------------------------------- *"*"Local Interface: *" IMPORTING *" VALUE(ORDERID) TYPE ZTR_ORDER_HDR-ORDERID *" EXPORTING *" VALUE(ORDERHEADER) TYPE ZTR_ORDER_HDR *" TABLES *" RETURN STRUCTURE BAPIRET2 *" ORDERITEM STRUCTURE ZTR_ORDER_ITM *"-------------------------------------------------------------------- DATA : wa_bapiret TYPE bapiret2. SELECT SINGLE * FROM ZTR_ORDER_HDR INTO CORRESPONDING FIELDS OF orderheader WHERE orderid EQ orderid. IF sy-subrc NE 0. CALL FUNCTION 'BALW_BAPIRETURN_GET2' EXPORTING type = 'E' cl = 'BGMSG' number = 000 par1 = 'No records exist' IMPORTING return = wa_bapiret. APPEND wa_bapiret TO return. ROLLBACK WORK. EXIT. ELSE. SELECT * FROM ZTR_ORDER_ITM INTO CORRESPONDING FIELDS OF table orderitem WHERE orderid EQ orderid. ENDIF. ENDFUNCTION. |
The BAPI returns the order items corresponding to this ORDERID .
|
FUNCTION ZTR_ORDER_MODIFY. *"-------------------------------------------------------------------- *"*"Local Interface: *" IMPORTING *" VALUE(ORDERHEADER) TYPE ZTR_ORDER_HDR *" TABLES *" RETURN STRUCTURE BAPIRET2 *" ORDERITEM STRUCTURE ZTR_ORDER_ITM *"-------------------------------------------------------------------- DATA: it_return TYPE STANDARD TABLE OF bapiret2, tmpreturn TYPE bapiret2, tmp_ord TYPE ZTR_ORDER_HDR, wa_bapiret TYPE bapiret2, it_orditem TYPE STANDARD TABLE OF ZTR_ORDER_ITM, tmp_orditem TYPE ZTR_ORDER_ITM. REFRESH it_return. CLEAR tmp_ord. tmp_ord = orderheader. it_orditem[] = orderitem[]. SELECT SINGLE orderid INTO tmp_ord-orderid FROM ZTR_ORDER_HDR WHERE orderid = tmp_ord-orderid . IF sy-subrc <> 0. CALL FUNCTION 'BALW_BAPIRETURN_GET2' EXPORTING type = 'E' cl = '00' number = 001 par1 = 'Order not found' IMPORTING return = wa_bapiret. APPEND wa_bapiret TO return. ROLLBACK WORK. return. ENDIF. MODIFY ZTR_ORDER_HDR FROM tmp_ord. LOOP AT it_orditem INTO tmp_orditem WHERE orderid = tmp_ord-orderid. IF NOT tmp_orditem IS INITIAL. DELETE FROM ZTR_ORDER_ITM WHERE orderid = tmp_ord-orderid. exit. ENDIF. ENDLOOP. INSERT ZTR_ORDER_ITM FROM TABLE it_orditem. IF sy-subrc = 0. CALL FUNCTION 'BALW_BAPIRETURN_GET2' EXPORTING type = 'S' cl = '00' number = '001' par1 = 'Update Successful' IMPORTING return = wa_bapiret. APPEND wa_bapiret TO return. COMMIT WORK. ELSEIF sy-subrc <> 0. CALL FUNCTION 'BALW_BAPIRETURN_GET2' EXPORTING type = 'E' cl = '00' number = '001' par1 = 'NOT UPDATED' IMPORTING return = wa_bapiret. APPEND wa_bapiret TO return. ROLLBACK WORK. ENDIF. ENDFUNCTION. |