STEP 2 - Write Function Module

Important notes:

 

Attributes

Import Parameters

 

Export Parameters

 

Tables

 

 

Code

Notes:

 

INCLUDE LZBAPISTATUSUXX

*****************************************************************
*   THIS FILE IS GENERATED BY THE FUNCTION LIBRARY.             *
*   NEVER CHANGE IT MANUALLY, PLEASE!                           *
*****************************************************************
INCLUDE LZBAPISTATUSU02.
                    "Z_BAPI_GET_ORDER_SYSTEM_STATUS

 

INCLUDE LZBAPISTATUSTOP - Global data

FUNCTION-POOL ZBAPISTATUS.                  "MESSAGE-ID Z3
Types:
  begin of Type_tj02t,
    istat  like tj02t-istat,
    txt04  like tj02t-txt04,
    txt30  like tj02t-txt30,
  end of type_tj02t.



DATA:
* Declarations for TABLE parameter
  T_BAPISTAT like ZBAPISTAT occurs 0,
  G_BAPISTAT like ZBAPISTAT,
* Table for object texts
  t_tj02t    type type_tj02t occurs 0,
  g_tj02t    type type_tj02t.

* Structure for return messages
DATA:
  BEGIN OF MESSAGE,
    MSGTY LIKE SY-MSGTY,
    MSGID LIKE SY-MSGID,
    MSGNO LIKE SY-MSGNO,
    MSGV1 LIKE SY-MSGV1,
    MSGV2 LIKE SY-MSGV2,
    MSGV3 LIKE SY-MSGV3,
    MSGV4 LIKE SY-MSGV4,
  END OF MESSAGE.

 

INCLUDE LZBAPISTATUSF01 - Subroutines


***INCLUDE LZBAPISTATUSF01 .
*----------------------------------------------------------------------*

*&---------------------------------------------------------------------*
*&      Form  SET_RETURN_MESSAGE
*&---------------------------------------------------------------------*
* This routine is used for setting the BAPI return message.
*
* The routine is a standard routine for BAPIs that handles the message
* structure for the BAPIRETURN structure. It has been copied from the
* BAPI Company Code Getlist
*----------------------------------------------------------------------*
*      -->P_MESSAGE  text
*      <--P_RETURN  text
*----------------------------------------------------------------------*
form SET_RETURN_MESSAGE USING    VALUE(P_MESSAGE)   LIKE MESSAGE
                        CHANGING P_RETURN  LIKE BAPIRETURN.

  CHECK NOT MESSAGE IS INITIAL.

  CALL FUNCTION 'BALW_BAPIRETURN_GET'
       EXPORTING
            TYPE       = P_MESSAGE-MSGTY
            CL         = P_MESSAGE-MSGID
            NUMBER     = P_MESSAGE-MSGNO
            PAR1       = P_MESSAGE-MSGV1
            PAR2       = P_MESSAGE-MSGV2
            PAR3       = P_MESSAGE-MSGV3
            PAR4       = P_MESSAGE-MSGV4
*          LOG_NO     = ' '
*          LOG_MSG_NO = ' '
       IMPORTING
            BAPIRETURN = P_RETURN
       EXCEPTIONS
            OTHERS     = 1.


endform.                    " SET_RETURN_MESSAGE

FUNCTION Z_BAPI_GET_ORDER_STATUS

FUNCTION z_bapi_get_order_system_status.
*"----------------------------------------------------------------------
*"*"Local interface:
*"  IMPORTING
*"     VALUE(I_AUFNR) TYPE  AUFNR
*"     VALUE(I_SPRAS) TYPE  SPRAS DEFAULT SY-LANGU
*"     VALUE(I_EXCLUDEINACTIVE) TYPE  CHAR1 OPTIONAL
*"  EXPORTING
*"     VALUE(RETURN) TYPE  BAPIRETURN
*"  TABLES
*"      T_BAPISTAT STRUCTURE  ZBAPISTAT
*"----------------------------------------------------------------------
**
*"Local interface:
*"  IMPORTING
*"     VALUE(I_AUFNR) TYPE  AUFNR
*"     VALUE(I_SPRAS) TYPE  SPRAS DEFAULT SY-LANGU
*"     VALUE(I_EXCLUDEINACTIVE) TYPE  CHAR1 OPTIONAL
*"  EXPORTING
*"     VALUE(RETURN) TYPE  BAPIRET2
*"  TABLES
*"      T_BAPISTAT STRUCTURE  ZBAPISTAT
*"----------------------------------------------------------------------
  DATA:
   l_aufnr LIKE afko-aufnr,
   l_objnr LIKE jest-objnr.


********************************************
* Check if order exists
********************************************
  SELECT SINGLE aufnr
    FROM afko
    INTO  l_aufnr
    WHERE aufnr = BAPI_ORDER_STATUS_IMPORT-orderid.

  IF sy-subrc NE 0.
    CLEAR message.
    message-msgty = 'E'.
    message-msgid = 'Z3'.
    message-msgno = '000'.
    message-msgv1 = BAPI_ORDER_STATUS_IMPORT-orderid.
    PERFORM set_return_message USING    message
                               CHANGING return.
    IF 1 = 2.
*     The only reason to include this statement, that will obviously
*     never execute, is that it will create a referecence so that you
*     can find out where a particular message is being used. This
*     functionality is used by the BAPIs programmed by SAP
      MESSAGE e000(z3).
    ENDIF.
  ENDIF.
  CHECK return IS INITIAL.

********************************************
* Read order status
********************************************
  CONCATENATE 'OR' BAPI_ORDER_STATUS_IMPORT-orderid INTO l_objnr.

  IF BAPI_ORDER_STATUS_IMPORT-i_excludeinactive = 'X'.
    SELECT objnr stat inact
      FROM  jest
      INTO  TABLE t_bapistat
      WHERE objnr = l_objnr AND
            inact <> 'X'.
  ELSE.
    SELECT objnr stat inact
      FROM  jest
      INTO  TABLE t_bapistat
      WHERE objnr = l_objnr.

  ENDIF.
  IF sy-subrc <> 0.
*   No object status found
    CLEAR message.
    message-msgty = 'E'.
    message-msgid = 'Z3'.
    message-msgno = '001'.
    message-msgv1 = BAPI_ORDER_STATUS_IMPORT-orderid.
    PERFORM set_return_message USING    message
                               CHANGING return.
    IF 1 = 2.
      MESSAGE e001(z3).
    ENDIF.
  ENDIF.
  CHECK return IS INITIAL.


********************************************
* Read order status texts
********************************************
  SELECT istat txt04 txt30
    FROM tj02t
    INTO TABLE t_tj02t
    FOR ALL ENTRIES IN t_bapistat
    WHERE istat = t_bapistat-stat AND
          spras = BAPI_ORDER_STATUS_IMPORT-i_spras.

  SORT t_tj02t BY istat.

  LOOP AT t_bapistat INTO g_bapistat.
    READ TABLE t_tj02t
      WITH KEY istat = g_bapistat-stat BINARY SEARCH
      INTO g_tj02t.
    IF sy-subrc = 0.
      MOVE:
        g_tj02t-txt04 TO g_bapistat-txt04,
        g_tj02t-txt30 TO g_bapistat-txt30.
      MODIFY t_bapistat FROM g_bapistat TRANSPORTING txt04 txt30.
    ENDIF.


  ENDLOOP.


ENDFUNCTION.

 

Converted from CHM to HTML with chm2web Standard 2.7 (unicode)