Skip to Content
0
Former Member
Jun 13, 2011 at 09:55 PM

Web Services thru Function Module

53 Views

Hi Friends,

I have created a remote-enabled function module which simulates the MFBF transaction as follows.

Import Parameters:
I_WERKS type WERKS
I_MATNR type MATNR
I_QTY     type ERFMG
I_UOM     type  SA_ERFME
I_VERID   type VERID
I_BUDAT type BUDAT
I_HDRTXT type BKTXT

Export Parameters:
CONFIRMATION type PRTNR
MATERIAL_DOC type MBLNR
RETURN type BAPIRET2

Source code:
TABLES:  ZWS_ERR.
  DATA:  WA_ZWS_ERR TYPE ZWS_ERR.
  DATA:  L_FLAGS   TYPE BAPI_RM_FLG,
         L_GENDATA TYPE BAPI_RM_DATGEN,
         L_SPCDATA TYPE BAPI_RM_DATSTOCK.

  DATA:  BEGIN OF GM OCCURS 0.
          INCLUDE STRUCTURE BAPI2017_GM_ITEM_CREATE.
  DATA:  END OF GM.
  DATA: L_TMSTMP(11) TYPE p DECIMALS 7.
  DATA: L_LOW TYPE TVARV_VAL.

*Make to Stock Scenario:

*check to see if we need to capture successful calls:
  select SINGLE low INTO L_LOW
  FROM tvarvc
     where name = 'ZWS_MTS_GD'
           AND LOW = 'X'.


  IF I_WERKS IS INITIAL.
    I_WERKS = '0010'.
  ENDIF.
  L_FLAGS = '01'.

  L_GENDATA-MATERIALNR  = I_MATNR.
  L_GENDATA-PRODPLANT   = I_WERKS.
  L_GENDATA-PRODVERSION = I_VERID.
  L_GENDATA-BACKFLQUANT = I_QTY.
  L_GENDATA-UNITOFMEASURE = I_UOM.
  L_GENDATA-DOCHEADERTXT = I_HDRTXT.
  L_GENDATA-POSTDATE = I_BUDAT.
  L_GENDATA-DOCDATE  = SY-DATUM.

  CALL FUNCTION 'BAPI_REPMANCONF1_CREATE_MTS'
    EXPORTING
      BFLUSHFLAGS          = L_FLAGS
      BFLUSHDATAGEN        = L_GENDATA
      BFLUSHDATAMTS        = L_SPCDATA
   IMPORTING
      CONFIRMATION         = CONFIRMATION
      RETURN               = RETURN
*           TABLES
*             SERIALNR             =
     GOODSMOVEMENTS       = GM.


* Commit or rollback the bapi
  if CONFIRMATION ne '0000000000'.
    call function 'BAPI_TRANSACTION_COMMIT'.

*Capture "successful" calls in table to track usage
*for initial deploymnet (testing, monitoring, etc.)
*To turn off - Set TVARVC variable ZWS_MTS_GD to initial
    IF L_LOW EQ 'X'.
      get time stamp field L_TMSTMP.
      WA_ZWS_ERR-MANDT = SY-MANDT.
      WA_ZWS_ERR-TIMESTAMP = L_TMSTMP.
      WA_ZWS_ERR-WERKS = I_WERKS.
      WA_ZWS_ERR-MATNR = I_MATNR.
      WA_ZWS_ERR-BACKFLQUANT = I_QTY.
      WA_ZWS_ERR-UOM = I_UOM.
      WA_ZWS_ERR-VERID = I_VERID.
      WA_ZWS_ERR-BUDAT = I_BUDAT.
      WA_ZWS_ERR-HDRTXT = I_HDRTXT.
      WA_ZWS_ERR-TYPE = RETURN-TYPE.
      WA_ZWS_ERR-ID = RETURN-ID.
      WA_ZWS_ERR-MSGNO = RETURN-NUMBER.
      WA_ZWS_ERR-MESSAGE = CONFIRMATION.
      WA_ZWS_ERR-ERNAM = SY-UNAME.
      WA_ZWS_ERR-ERDAT = SY-DATUM.
      WA_ZWS_ERR-ERZET = SY-UZEIT.
      INSERT ZWS_ERR FROM WA_ZWS_ERR.
    endif.
  else .

*Do not send application errors back to calling application!!
*Application Errors will be handled in SAP, so store the errors in table ZWS_ERR
*And then clear RETURN
    call function 'BAPI_TRANSACTION_ROLLBACK' .
    get time stamp field L_TMSTMP.
    WA_ZWS_ERR-MANDT = SY-MANDT.
    WA_ZWS_ERR-TIMESTAMP = L_TMSTMP.
    WA_ZWS_ERR-WERKS = I_WERKS.
    WA_ZWS_ERR-MATNR = I_MATNR.
    WA_ZWS_ERR-BACKFLQUANT = I_QTY.
    WA_ZWS_ERR-UOM = I_UOM.
    WA_ZWS_ERR-VERID = I_VERID.
    WA_ZWS_ERR-BUDAT = I_BUDAT.
    WA_ZWS_ERR-HDRTXT = I_HDRTXT.
    WA_ZWS_ERR-TYPE = RETURN-TYPE.
    WA_ZWS_ERR-ID = RETURN-ID.
    WA_ZWS_ERR-MSGNO = RETURN-NUMBER.
    WA_ZWS_ERR-MESSAGE = RETURN-MESSAGE.
    WA_ZWS_ERR-ERNAM = SY-UNAME.
    WA_ZWS_ERR-ERDAT = SY-DATUM.
    WA_ZWS_ERR-ERZET = SY-UZEIT.
    INSERT ZWS_ERR FROM WA_ZWS_ERR.
    CLEAR RETURN.

  endif.

When I test my FM, I am getting confirmation number(It is working fine till here) But I don't see any material document number.

Have I done anything wrong? Please suggest me in such a way that I need my material document number also get populated.

Thanks in Advance.