Post a transaction and the appropriate status to the IDoc.
2007-12-14 17:19
357 查看
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
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1458018
相关文章推荐
- Post a transaction and the appropriate status to the IDoc.
- Post a transaction and the appropriate status to the IDoc.
- Post a transaction and the appropriate status to the IDoc.
- Post a transaction and the appropriate status to the IDoc.
- Post a transaction and the appropriate status to the IDoc.
- Akka Reaches 1.0 Status: Brings the Actor Model to Java and Scala
- SQL 2005 Tips --事务处理The current transaction cannot be committed and cannot support operations that write to the log file
- Import the Add Email and Post Configuration to the SiteMap managed solution -Dynamices CRM
- ABAP code to find all the User Exits and BADIs for any transaction
- [monitoring] how to create script to monitoring the status of orders and make graphs
- Connection to localhost:5432 refused. Check that the hostname and port are correct and that the post
- LINQ to SQL and WCF - Sharing types, subverting the DataContext on the client side(转)
- [LeetCode] Best Time to Buy and Sell Stock with Transaction Fee 买股票的最佳时间含交易费
- The connection to adb is down, and a severe error has occured.
- Post-Build script to fix MSI issues in Vista for VS 2005 Setup and Deployment Projects
- VMware 12安装CentOS 6.9时出现:The centos disc was not found in any of your drives.Please insert the centos disc and press OK to retry
- WMS has encountered a problem and needs to close. We are sorry for the inconvenience.
- The connection to adb is down, and a severe error has occured.分析
- How to Read the Newspaper Quickly and Efficiently
- How to download Xcode 4 / 5 / 6 / 7 and get the DMG file?