zoukankan
html css js c++ java
Post a transaction and the appropriate status to the IDoc.
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
查看全文
相关阅读:
再说ASP.NET 缓存
asp.net 动态加载的用户控件属性传id值问题
关于四季学期数据库设计问题
如何在IIS里对网站限速
命名空间与程序集
多GridView页面中使用AJAX的优化方法
OutputCache cookies 问题
速度优化之GZIP对jscss压缩
canphp框架论坛成立www.canphp.com/bbs/index.php现在论坛内测中
js selection对象使用方法
原文地址:https://www.cnblogs.com/xiaomaohai/p/6157435.html
最新文章
ora9.2客户端配置
delphi中时间控制
putty下用中文输入
web.xml过滤器 filter
javaweb基础 Servlet
web.xml文件解析
web.xml监听器 listener
判断错误返回数据
动手动脑5JAVA项目中的常用的异常处理情况
动手动脑5
热门文章
java web编写四则运算
java 倒入一篇文章,显示每个字母的出现概率,从大到小排序
Java 倒入文章显示前n个单词频率
动手动脑4
《程序员修炼之道》之注重实效
动手动脑6
《程序员修炼之道》之基本工具读后感
OutPutCache 自定义缓存:session、登录用户、cookie
vs2005 智能感知不正常的解决办法
C#中的程序集和命名空间
Copyright © 2011-2022 走看看