本文主要是介绍Post a transaction and the appropriate status to the IDoc.,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
2006年12月24日 08:53:00 On inbound function modules processing IDocs the following template can be used to post a transaction and the appropriate status to the IDoc. *---- Data definition ------------------------------------------------- DATA: BEGIN OF BDCDATA OCCURS 5. INCLUDE STRUCTURE BDCDATA. DATA: END OF BDCDATA. DATA: C_TCODE LIKE BKPF-TCODE VALUE 'FB01'. DATA BEGIN OF MESSTAB OCCURS 10. INCLUDE STRUCTURE BDCMSGCOLL. DATA END OF MESSTAB. *---- Call transaction ------------------------------------------------ FORM Main_Program REFRESH BDCDATA. PERFORM APPEND_BDC USING 'SAPMF05A' '0100' ' ' ' '. PERFORM APPEND_BDC USING ' ' ' ' 'BKPF-BLDAT' '09031998'. PERFORM APPEND_BDC USING ' ' ' ' 'BDC_OKCODE' '/00'. PERFORM APPEND_BDC USING 'SAPMF05A' '0300' ' ' ' '. PERFORM APPEND_BDC USING ' ' ' ' 'BSEG-WRBTR' '*'. PERFORM APPEND_BDC USING ' ' ' ' 'BDC_OKCODE' 'BU'. CALL TRANSACTION 'FB01' USING BDCDATA MODE 'N' UPDATE 'S'. PERFORM UPDATE_IDOC_STATUS. ENDFORM. *--- Call transaction with errors to BDC ----------------------------- REFRESH MESSTAB. CALL TRANSACTION C_TCODE USING BDCDATA MODE 'N' UPDATE 'S' MESSAGES INTO MESSTAB. RETURN_CODE = SY-SUBRC. IF RETURN_CODE = 0. LOOP AT MESSTAB. IF MESSTAB-MSGTYP = 'E'. RETURN_CODE = MESSTAB-MSGNR. SY-MSGID = 'B1'. SY-MSGNO = 999. SY-MSGV1 = 'Error: Check BDC'. ENDIF. ENDLOOP. ENDIF. *--- Here we check the return code, if there was an error, we put the * transaction in a BDC session for the user to review and correct. IF RETURN_CODE NE 0. CALL FUNCTION 'BDC_OPEN_GROUP' EXPORTING CLIENT = SY-MANDT GROUP = 'ZKJW' USER = SY-UNAME KEEP = 'X'. CALL FUNCTION 'BDC_INSERT' EXPORTING TCODE = C_TCODE TABLES DYNPROTAB = BDCDATA. CALL FUNCTION 'BDC_CLOSE_GROUP' EXCEPTIONS NOT_OPEN = 1 QUEUE_ERROR = 2 OTHERS = 3. ENDIF. *--- Append BDCDATA internal table ------------------------------------ FORM APPEND_BDC USING VALUE(P_PROG) VALUE(P_SCREEN) VALUE(P_NAM) VALUE(P_VAL). CLEAR BDCDATA. IF P_PROG NE SPACE. BDCDATA-PROGRAM = P_PROG. BDCDATA-DYNPRO = P_SCREEN. BDCDATA-DYNBEGIN = 'X'. BDCDATA-FNAM = P_NAM. BDCDATA-FVAL = P_VAL. ELSE. BDCDATA-FNAM = P_NAM. BDCDATA-FVAL = P_VAL. ENDIF. APPEND BDCDATA. ENDFORM. *&---------------------------------------------------------------------* FORM UPDATE_IDOC_STATUS. *--- Now we check the CALL TRANSACTION return code and set IDOC status CLEAR IDOC_STATUS. IF RETURN_CODE = 0. WORKFLOW_RESULT = '0'. IDOC_STATUS-DOCNUM = IDOC_CONTRL-DOCNUM. IDOC_STATUS-STATUS = '53'. IDOC_STATUS-UNAME = SY-UNAME. IDOC_STATUS-REPID = SY-REPID. IDOC_STATUS-MSGTY = SY-MSGTY. IDOC_STATUS-MSGID = SY-MSGID. IDOC_STATUS-MSGNO = SY-MSGNO. IDOC_STATUS-MSGV1 = SY-MSGV1. IDOC_STATUS-MSGV2 = SY-MSGV2. IDOC_STATUS-MSGV3 = SY-MSGV3. IDOC_STATUS-MSGV4 = SY-MSGV4. RETURN_VARIABLES-WF_PARAM = 'Processed_IDOCs'. RETURN_VARIABLES-DOC_NUMBER = IDOC_CONTRL-DOCNUM. APPEND RETURN_VARIABLES. ELSE. WORKFLOW_RESULT = '99999'. IDOC_STATUS-DOCNUM = IDOC_CONTRL-DOCNUM. IDOC_STATUS-STATUS = '51'. IDOC_STATUS-UNAME = SY-UNAME. IDOC_STATUS-REPID = SY-REPID. IDOC_STATUS-MSGTY = SY-MSGTY. IDOC_STATUS-MSGID = SY-MSGID. IDOC_STATUS-MSGNO = SY-MSGNO. IDOC_STATUS-MSGV1 = SY-MSGV1. IDOC_STATUS-MSGV2 = SY-MSGV2. IDOC_STATUS-MSGV3 = SY-MSGV3. IDOC_STATUS-MSGV4 = SY-MSGV4. RETURN_VARIABLES-WF_PARAM = 'Error_IDOCs'. RETURN_VARIABLES-DOC_NUMBER = IDOC_CONTRL-DOCNUM. APPEND RETURN_VARIABLES. ENDIF. APPEND IDOC_STATUS. ENDFORM. " UPDATE_IDOC_STATUS
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1458018
这篇关于Post a transaction and the appropriate status to the IDoc.的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!