WMS函数组:22. VL10B. BDC
FUNCTION ZRFC_WMS_VL10B .
*"----------------------------------------------------------------------
*"*"Local interface:
*" EXPORTING
*" VALUE(EX_VBELN) LIKE LIKP-VBELN
*" VALUE(EP_SUBRC) LIKE SY-SUBRC
*" TABLES
*" ET_LOG STRUCTURE BAPIRET2 OPTIONAL
*" IP_INPUT STRUCTURE ZWMS_VL10B_INPUT OPTIONAL
*"----------------------------------------------------------------------
DATA:
CTU LIKE APQI-PUTACTIVE VALUE 'X',
UPDATE LIKE APQI-PUTACTIVE VALUE 'L',
I_ERROR_MESSAGES LIKE ARRANG_ERR,
ET_MESSTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE,
GROUP LIKE APQI-GROUPID,
USER LIKE APQI-USERID,
KEEP LIKE APQI-QERASE,
HOLDDATE LIKE APQI-STARTDATE,
NODATA LIKE APQI-PUTACTIVE VALUE '/',
SUBRC LIKE SY-SUBRC,
MODE LIKE APQI-PUTACTIVE VALUE 'N',
I_LOG LIKE BAPIRETURN1 OCCURS 0 WITH HEADER LINE.
PERFORM BDC_NODATA USING NODATA.
PERFORM OPEN_GROUP USING GROUP USER KEEP HOLDDATE CTU.
PERFORM BDC_DYNPRO USING 'RVV50R10C' '1000'.
PERFORM BDC_FIELD USING 'BDC_CURSOR' 'ST_VSTEL-LOW'.
PERFORM BDC_FIELD USING 'BDC_OKCODE' '=S0S_TAB5'.
DATA: sDATE TYPE D, eDATE TYPE D.
sDATE = SY-DATUM - 100.
eDATE = SY-DATUM + 1 .
* PERFORM BDC_FIELD USING 'ST_VSTEL-LOW' IP_INPUT-ST_VSTEL_LOW.
PERFORM BDC_FIELD USING 'ST_LEDAT-LOW' sDATE."IP_INPUT-ST_LEDAT_LOW.
PERFORM BDC_FIELD USING 'ST_LEDAT-HIGH' eDATE."IP_INPUT-ST_LEDAT_HIGH.
PERFORM BDC_FIELD USING 'P_LERUL' ' '.
PERFORM BDC_DYNPRO USING 'RVV50R10C' '1000'.
PERFORM BDC_FIELD USING 'BDC_OKCODE' '=ONLI'.
PERFORM BDC_FIELD USING 'ST_VSTEL-LOW' ' '.
PERFORM BDC_FIELD USING 'ST_LEDAT-LOW' sDATE."IP_INPUT-ST_LEDAT_LOW.
PERFORM BDC_FIELD USING 'ST_LEDAT-HIGH' eDATE."IP_INPUT-ST_LEDAT_HIGH.
PERFORM BDC_FIELD USING 'P_LERUL' ' '.
PERFORM BDC_FIELD USING 'BDC_CURSOR' 'ST_RESWK-LOW'.
*** 订单号
PERFORM BDC_FIELD USING 'ST_EBELN-LOW' IP_INPUT-ST_EBELN_LOW.
PERFORM BDC_FIELD USING 'ST_EBELN-HIGH' IP_INPUT-ST_EBELN_HIGH.
PERFORM BDC_FIELD USING 'ST_RESWK-LOW' IP_INPUT-ST_RESWK_LOW.
PERFORM BDC_FIELD USING 'ST_RESWK-HIGH' IP_INPUT-ST_RESWK_HIGH.
PERFORM BDC_DYNPRO USING 'SAPLSLVC_FULLSCREEN' '0500'.
PERFORM BDC_FIELD USING 'BDC_OKCODE' '=&ALL'.
PERFORM BDC_DYNPRO USING 'SAPLSLVC_FULLSCREEN' '0500'.
PERFORM BDC_FIELD USING 'BDC_OKCODE' '=SAMD'.
PERFORM BDC_DYNPRO USING 'SAPLSLVC_FULLSCREEN' '0500'.
PERFORM BDC_FIELD USING 'BDC_OKCODE' '=&F12'.
PERFORM BDC_DYNPRO USING 'RVV50R10C' '1000'.
PERFORM BDC_FIELD USING 'BDC_OKCODE' '/EECAN'.
PERFORM BDC_FIELD USING 'BDC_CURSOR' 'ST_VSTEL-LOW'.
PERFORM BDC_TRANSACTION TABLES ET_MESSTAB
USING 'VL10B' CTU MODE UPDATE.
PERFORM CLOSE_GROUP USING CTU.
COMMIT WORK.
EP_SUBRC = '-1' .
* ET_LOG-NUMBER = '-1'.
* ET_LOG-MESSAGE = 'NO DATA FOUND!'.
* APPEND ET_LOG.
DATA S(200).
LOOP AT ET_MESSTAB.
* CONCATENATE ' ET_MESSTAB-MSGID :' ET_MESSTAB-MSGID INTO S. WRITE / S.
* CONCATENATE ' ET_MESSTAB-MSGTYP: ' ET_MESSTAB-MSGTYP INTO S. WRITE / S.
* CONCATENATE ' ET_MESSTAB-MSGNR : ' ET_MESSTAB-MSGNR INTO S. WRITE / S.
* CONCATENATE ' ET_MESSTAB-MSGV1 : ' ET_MESSTAB-MSGV1 INTO S. WRITE / S.
* CONCATENATE ' ET_MESSTAB-MSGV2 : ' ET_MESSTAB-MSGV2 INTO S. WRITE / S.
* CONCATENATE ' ET_MESSTAB-MSGV3 : ' ET_MESSTAB-MSGV3 INTO S. WRITE / S.
* CONCATENATE ' ET_MESSTAB-MSGV4 : ' ET_MESSTAB-MSGV4 INTO S. WRITE / S.
* CLEAR ET_LOG[].
ET_LOG-TYPE = ET_MESSTAB-MSGTYP.
ET_LOG-ID = ET_MESSTAB-MSGID.
ET_LOG-NUMBER = ET_MESSTAB-MSGNR.
CALL FUNCTION 'MM_ARRANG_GET_MESSAGE_TEXT'
EXPORTING
I_ERROR_MESSAGES = I_ERROR_MESSAGES
I_LANGU = SY-LANGU
IMPORTING
E_TEXT = ET_LOG-MESSAGE
EXCEPTIONS
PARAMETER_ERROR = 1
OTHERS = 2.
CONCATENATE ET_LOG-MESSAGE ET_MESSTAB-MSGV1 INTO ET_LOG-MESSAGE.
APPEND ET_LOG.
IF ET_MESSTAB-MSGNR = '311'.
EX_VBELN = ET_MESSTAB-MSGV2.
EP_SUBRC = 0.
ENDIF.
ENDLOOP.
ENDFUNCTION.