IDOC的处理函数IDOC_INPUT_ORDERS的增强点的分析
sap系统会根据we20的配置读取,读取IDOC的处理函数IDOC_INPUT_ORDERS,( Basic type:ORDERS05:Purchasing/Sales)
在IDOC_INPUT_ORDERS的函数中共有以下几个增强点:
1、每个段数据读取时的增强,对应出口函数是EXIT_SAPLVEDA_001 / ZXVEDU03,可用于填写特殊数据和数据的转换,这是我们经常会用到的增强点;
2、SD EDI: Incoming Orders: Create Customer Number/Sales Area;对应函数:EXIT_SAPLVEDA_007 / ZXVEDU14
3、SD EDI Incoming Orders: Changing Internal Table Configurable Materials,对应函数:EXIT_SAPLVEDA_012 / ZXVEDU09
4、SD EDI Incoming Orders: Manipulation of Error Tables in Processing,对应函数:EXIT_SAPLVEDA_008 / ZXVEDU10
5、SD EDI Incoming Orders: Final Processing of Internal Error Tables,对应函数:EXIT_SAPLVEDA_011 / ZXVEDU13
6、SD EDI Incoming Orders: Manipulation of Status Table,对应函数:EXIT_SAPLVEDA_010 / ZXVEDU12
7、SD EDI Incoming Orders: Additional Sales Activities Call Transaction VA01,对应函数:EXIT_SAPLVEDA_003 / ZXVEDU05
8、SD EDI Incoming Orders: Final Sales Activities per Sales Order,对应函数:EXIT_SAPLVEDA_004 / ZXVEDU06
9、SD EDI Incoming Orders: Final Sales Activities (Mass Processing),对应函数:EXIT_SAPLVEDA_005 / ZXVEDU07
FUNCTION idoc_input_orders.
*"----------------------------------------------------------------------
*"*"Globale Schnittstelle:
*" IMPORTING
*" VALUE(INPUT_METHOD) LIKE BDWFAP_PAR-INPUTMETHD
*" VALUE(MASS_PROCESSING) LIKE BDWFAP_PAR-MASS_PROC
*" EXPORTING
*" VALUE(WORKFLOW_RESULT) LIKE BDWFAP_PAR-RESULT
*" VALUE(APPLICATION_VARIABLE) LIKE BDWFAP_PAR-APPL_VAR
*" VALUE(IN_UPDATE_TASK) LIKE BDWFAP_PAR-UPDATETASK
*" VALUE(CALL_TRANSACTION_DONE) LIKE BDWFAP_PAR-CALLTRANS
*" VALUE(DOCUMENT_NUMBER) LIKE VBAK-VBELN
*" TABLES
*" IDOC_CONTRL STRUCTURE EDIDC
*" IDOC_DATA STRUCTURE EDIDD
*" IDOC_STATUS STRUCTURE BDIDOCSTAT
*" RETURN_VARIABLES STRUCTURE BDWFRETVAR
*" SERIALIZATION_INFO STRUCTURE BDI_SER
*" EDI_TEXT STRUCTURE EDIORDTXT1 OPTIONAL
*" EDI_TEXT_LINES STRUCTURE EDIORDTXT2 OPTIONAL
*"----------------------------------------------------------------------
ENHANCEMENT-POINT IDOC_INPUT_ORDERS_G1 SPOTS ES_SAPLVEDA.
*$*$-Start: IDOC_INPUT_ORDERS_G1----------------------------------------------------------------$*$*
ENHANCEMENT 1 MGV_GENERATED_SAPLVEDA. "active version
*{ALE Begin} generation http://intranet.sap.com/materialversion
CALL FUNCTION 'MGV_ALE_ADD_INTERNAL_MATNR'
TABLES
idoc_data = idoc_data
idoc_contrl = idoc_contrl
EXCEPTIONS
NUMBER_MISMATCH = 1
OTHERS = 2.
*{ALE End} generation
ENDENHANCEMENT.
*$*$-End: IDOC_INPUT_ORDERS_G1----------------------------------------------------------------$*$*
* initialize incoterms_versions_switch base on business switch
PERFORM incoterms_ver_switch_check.
LOOP AT idoc_contrl.
* SET/GET Parameter und interne Tabellen neu initialisieren
* initialize SET/GET Parameter and internal tables
PERFORM initialize_organizational_data.
* IDOC-Segmente in die entsprechenden Anwendungsdaten übernehmen
* Move IDOC to internal tables
PERFORM interpret_idoc_orders. "第一个增强点
* Prüfen ob gewisse Segmente gefüllt sind
* check IDOC-Segments
PERFORM check_idoc_segments.
* Prüfen und Ermitteln von Organisationsdaten
* check internal tables and determine organization data
PERFORM check_idoc_orders. "第二个增强点
* Prüfen und Ermitteln von Konfigurationsdaten
* check internal tables and determine configuration order data
PERFORM check_configuration. "第三个增强点
* ermitteln Partner für Auftrag
* determine partner
PERFORM determine_partner.
* ermitteln Positionstyp
* determine item type
PERFORM determine_postyp.
* ermitteln Texte
* determine texts
PERFORM check_text.
* exportieren Posguid ins globale Memory
* export posguid to global memory
PERFORM check_posguid.
* vergleichen errtab mit Ausnahmetabelle WFMCMSGENQ
* compare ERRTAB with message table WFMCMSGENQ
PERFORM errorhandling TABLES errtab. "第四个增强点
* abschliessendes Bearbeiten der internen Fehlertabelle.
* final coding to change the internal ERRTAB
CALL CUSTOMER-FUNCTION '011' "第五个增强点
EXPORTING
dxvbak = xvbak
docnum = idoc_contrl-docnum
TABLES
derrtab = errtab
dxvbap = xvbap
dxvbep = xvbep
dxvbadr = xvbadr
dxvbpa = xvbpa
dxvbuv = xvbuv
dedidc = idoc_contrl
dedidd = idoc_data
dxkomv = xkomv
dxvekp = xvekp
dyvekp = yvekp.
DESCRIBE TABLE errtab LINES anzahl.
IF anzahl GT 0 AND input_method = 'X'.
EXPORT errtab TO MEMORY ID 'idoc_test_errtab'.
ENDIF.
IF anzahl GT 0 AND
xaprau EQ 'D'.
* Bei der Anlage von Auslieferungsaufträgen dienen Meldungen bzgl.
* Lieferplänen mit Absagegrund nur der Information: Sie dürfen
* nicht zum Abbruch der IDoc-Verarbeitung führen.
* When creating delivery orders messages regarding
* scheduling agreement with 'reason for rejection' are only for
* information: They must not force the idoc integration to fail.
LOOP AT errtab WHERE arbgb EQ 'VG' AND
msgnr EQ '219'.
anzahl = anzahl - 1.
ENDLOOP.
IF anzahl EQ 0.
REFRESH errtab.
ENDIF.
ENDIF.
IF anzahl NE 0
AND input_method IS INITIAL.
PERFORM determine_user.
PERFORM statusrecord TABLES errtab.
* Userexit zum Ändern der Statustabelle
* User exit to change the status table
CALL CUSTOMER-FUNCTION '010' "第6个增强点
EXPORTING
docnum = idoc_contrl-docnum
TABLES
derrtab = errtab
xbdidocstat = idoc_status.
ELSE.
IF check_orga IS INITIAL.
* EDI Kennzeichen für Sonderprüfungen innerhalb anderer Anwendungen als
* Folge der Auftragsbearbeitung.
* EDI checkmark for other applications processed during order creation.
PERFORM edi_mode_to_mem.
************************************************************************
* Aufruf Transaktion Auftragerfassung VA01 *
* call transaction Order Entry VA01 *
************************************************************************
ENHANCEMENT-POINT SAPLVEDA_A9 SPOTS ES_SAPLVEDA .
CASE xaprau.
WHEN ' '.
PERFORM call_va01_new_orders USING ok.
WHEN 'Q'.
* Aufruf Transaktion Auftragerfassung VA01 mit Bezug auf Angebot
* call transaction Order Entry VA01 with refer to quote number.
PERFORM call_va01_new_orders_angbt USING ok.
WHEN 'C'.
* Aufruf Transaktion Auftragerfassung VA01 mit Bezug auf Kontrakt
* call transaction Order Entry VA01 with refer to contract number
PERFORM call_va01_new_orders_contk USING ok.
WHEN 'L'.
* Aufruf Transaktion Auftragerfassung für Auftragsarten mit Vertiebs-
* belegtypen D,G,K,L
* call transaction Order Entry VA01 for order types with
* SD document category D,G,K,L
PERFORM call_va01_new_orders_cremo USING ok.
WHEN 'R'.
* Aufruf Transaktion Auftragerfassung für Auftragsarten mit Vertiebs-
* belegtypen H (z.B. Konsigantionsretoure)
* call transaction Order Entry VA01 for order types with
* SD document category H (for example consingment return)
PERFORM call_va01_new_orders_return USING ok.
WHEN 'D'.
* Aufruf Transaktion Auftragerfassung für Auslieferungsauftrag
* call transaction Order Entry VA01 for delivery order
PERFORM call_va01_new_orders_delord USING ok.
WHEN 'K'.
* Aufruf Transaktion Auftragerfassung für Anlegen mit Bezug auf
* Positionsebene (Anlegen mit Bezug zum Angebot/Kontrakt)
* call transaction Order Entry VA01 for delivery order
PERFORM call_va01_new_orders_refer USING ok.
ENDCASE.
* Zusätzliche Aktionen nach call transaction VA01
* additional checks after call transaction VA01
CALL CUSTOMER-FUNCTION '003' "第7个增强点
EXPORTING
sales_document = belegnummer
docnum = idoc_contrl-docnum
TABLES
didoc_data = idoc_data
dbdcmsgcoll = xbdcmsgcoll
CHANGING
status = ok.
* Löschen des EDI-Kennzeichens im Memory / delete EDI-checkmark from
* memory
PERFORM edi_mode_delete_mem.
ENDIF.
* füllen IDOC_Status
* fill IDOC_Status
IF ok = space.
idoc_status-docnum = idoc_contrl-docnum.
idoc_status-status = beleg_nicht_gebucht.
IF check_orga = 'X'.
idoc_status-msgty = 'E'.
idoc_status-msgid = 'VG'.
idoc_status-msgno = '204'.
idoc_status-msgv1 = xvbak-kunnr.
idoc_status-msgv2 = lieferant.
APPEND idoc_status.
ELSE.
idoc_status-msgty = sy-msgty.
idoc_status-msgid = sy-msgid.
idoc_status-msgno = sy-msgno.
idoc_status-msgv1 = msgv1.
idoc_status-msgv2 = msgv2.
idoc_status-msgv3 = msgv3.
idoc_status-msgv4 = msgv4.
APPEND idoc_status.
ENDIF.
ELSE.
call_transaction_done = 'X'.
*- Übergabe BUS für Verknüpfungssätze --------------------------------*
*- set object type for the link ---------------------------------------*
* if not object_type is initial.
* return_variables-doc_number = object_type.
* append return_variables.
* endif.
*- Wenn Texte geschrieben werden muss nochmals ein Commit abgesetzt ---*
*- werden. Das Hilfsfeld CALL-TRANSACTION_DONE bewirkt, dass dieser ---*
*- Commit nicht von der ALE-Schicht abgesetzt wird, da der Commit von -*
*- Transaktion abgesetzt wurde ----------------------------------------*
IF xe1edkt2 NE space OR
xe1edpt2 NE space.
COMMIT WORK.
ENDIF.
* Belegnummer in die Schnittstelle zurückgeben für Textworkflow
* send document number back for textworkflow
document_number = belegnummer.
ENDIF.
CLEAR msgv1.
CLEAR msgv2.
CLEAR msgv3.
CLEAR msgv4.
ENDIF.
* setzen Workflow Ausgangsparameter
* Allocate IDOC numbers to Workflow output parameters
IF ok = space.
return_variables-wf_param = eid.
return_variables-doc_number = idoc_contrl-docnum.
APPEND return_variables.
workflow_result = c_wf_result_error.
ENDIF.
* Abschließende Aktionen pro Auftrag
* final checks per order
CALL CUSTOMER-FUNCTION '004' "第8个增强点
EXPORTING
sales_document = belegnummer
docnum = idoc_contrl-docnum
TABLES
didoc_data = idoc_data
didoc_status = idoc_status
didoc_cntrl = idoc_contrl.
ENDLOOP. "End loop at idoc_contrl.
*- Clear auf APPLICATION_VARIABLE - nur für Auslieferungsaufträge -----*
*- Clear APPLICATION_VARIABLE - only for delivery-orders -------------*
PERFORM clear_appl_variable.
*-potentiellen Mailempfänger ermitteln - nur für Auslieferungsaufträge *
*- determine mail receiver - only for delivery-orders -----------------*
PERFORM determine_mail_receiver.
* Abschließende Aktionen (Massenverarbeitung)
* final checks (mass processing)
CALL CUSTOMER-FUNCTION '005' "第9个增强点
TABLES
didoc_data = idoc_data
didoc_status = idoc_status
didoc_cntrl = idoc_contrl
dreturn_variables = return_variables.
ENDFUNCTION.
IDOC的处理函数IDOC_INPUT_ORDERS的增强点的分析相关推荐
- C++11新特性中的匿名函数Lambda表达式的汇编实现分析(二)
2019独角兽企业重金招聘Python工程师标准>>> C++11新特性中的匿名函数Lambda表达式的汇编实现分析(一) 首先,让我们来看看以&方式进行变量捕获,同样没有参 ...
- 【Android 逆向】Dalvik 函数抽取加壳 ( 类加载流程分析 | Class.cpp#findClassNoInit 函数 | DexFile.cpp#dexFindClass 函数分析 )
文章目录 前言 一.Class.cpp#dvmDefineClass 函数分析 二.Class.cpp#findClassNoInit 函数分析 三.DexFile.cpp#dexFindClass ...
- 【Android 逆向】Dalvik 函数抽取加壳 ( 类加载流程分析 | native 函数查询 | dalvik_system_DexFile.cpp#defineClassNative 函数 )
文章目录 前言 一.查询 defineClassNative 函数 二.dalvik_system_DexFile.cpp#Dalvik_dalvik_system_DexFile_defineCla ...
- 【Android 逆向】Dalvik 函数抽取加壳 ( 类加载流程分析 | DexPathList#findClass 函数分析 | DexFile#loadClassBinaryName 函数 )
文章目录 前言 一.DexPathList.java#findClass 类加载函数源码分析 二.DexFile.java#loadClassBinaryName 函数源码分析 前言 上一篇博客 [A ...
- python基于pingouin包进行统计分析:使用pairwise_tukey函数执行Tukey检验进行事后分析(Pairwise Tukey post-hocs)
python基于pingouin包进行统计分析:使用pairwise_tukey函数执行Tukey检验进行事后分析(Pairwise Tukey post-hocs) 目录
- OpenCV这么简单为啥不学——1.12、使用ssim函数对两张照片进行相似度分析
OpenCV这么简单为啥不学--1.12.使用ssim函数对两张照片进行相似度分析 目录 OpenCV这么简单为啥不学--1.12.使用ssim函数对两张照片进行相似度分析 前言 ssim函数 图像相 ...
- R语言使用OptimalCutpoints包的optimal.cutpoints函数对单变量进行ROC分析、计算约登值、寻找最佳阈值、使用plot函数可视化ROC曲线、PROC曲线并在曲线中添加最佳阈
R语言使用OptimalCutpoints包的optimal.cutpoints函数对单变量进行ROC分析.计算约登值.寻找最佳阈值(threshold.cutoff).使用plot函数可视化ROC曲 ...
- 关于onscroll函数兼容各浏览器的方法分析
关于window.onscroll函数兼容各浏览器的方法分析 1.当前文档的渲染模式是决定onscroll函数兼容性根本原因 目前浏览器的排版引擎有三种模式:怪异模式(Quirks mode).接近标 ...
- VL31N创建内向交货函数GN_DELIVERY_CREATE及增强字段
VL31N创建内向交货函数及增强字段 LIPS字段增强 结构KOMDLGN新增字段 在下面结构中新增字段,则两个都有了. 创建BADI: LE_SHP_GN_DLV_CREATE METHOD if_ ...
- gookit/goutil - Go一些常用的工具函数实现、增强、收集和整理
gookit/goutil Go 常用的一些工具函数,数字,字符串,数组,Map,文件,错误,时间日期,特殊处理,格式化,常用信息获取等等 工具包 arrutil array/slice 相关操作的函 ...
最新文章
- 布道微服务_06微服务调用的监控
- 【Android】自定义环形菜单View
- 热点分析图_通过分析功率MOSFET管的工作特性,判断其损坏原因
- mysql炸包_炸裂!MySQL 82 张图带你飞
- Windows 64 位 mysql 5.7以上版本包解压中没有data目录和my-default.ini和my.ini文件以及服务无法启动的解决办法以及修改初始密码的方法
- STM32CUBEF4 实现USB 虚拟串口
- tcpdf中增加微软雅黑的正确方式
- mysql 没有三级模式两级映像_数据库三级模式/两级映像
- unity数组或链表需要空间很大赋值与调用
- 博弈论——威佐夫博弈 Wythoff Game
- 最新CISP模拟考试题库及答案(二)
- html图片轮播15个自动,15个超强的jQuery/HTML5图片轮播插件
- #2.生活小妙招-实现没有加速选项的视频加速操作
- Android 开发笔记___图像按钮__imageButton
- IOS应用内购买App开发完整流程
- 书写历史的甲骨文--ORACLE公司传奇
- 数风流人物,还看今朝
- 苹果掉出全球手机市场前三
- 神奇的水滴效果导航栏-BezierIndicator
- 计算机教师年终考核,2019小学教师年度考核个人总结