idoc_example
idoc 使用小技巧

idoc 使用小技巧iDoc是一款功能强大的文档编辑和管理工具,为用户提供了许多方便的小技巧,帮助用户更高效地使用该工具。
本文将介绍一些常用的iDoc使用小技巧,帮助读者更好地利用iDoc进行文档编辑和管理。
一、使用快捷键iDoc提供了丰富的快捷键,可以帮助用户快速完成各种操作。
比如,按下Ctrl+S可以快速保存文档,按下Ctrl+Z可以撤销上一步操作,按下Ctrl+C可以复制选中的内容等等。
熟练掌握这些快捷键,可以极大地提高工作效率。
二、使用样式和主题iDoc提供了各种样式和主题,可以帮助用户快速美化文档。
用户可以根据需要选择合适的样式和主题,使文档更加美观和专业。
此外,用户还可以自定义样式和主题,以满足个性化的需求。
三、使用多人协作功能iDoc支持多人协作,用户可以邀请他人共同编辑文档。
在多人协作模式下,每个成员可以看到其他成员的编辑内容,并可以实时进行协作。
这一功能极大地方便了团队合作,提高了工作效率。
四、使用文档版本控制iDoc提供了文档版本控制功能,可以帮助用户管理不同版本的文档。
用户可以随时查看和恢复之前的版本,避免因误操作或其他原因导致的文档损失。
这一功能对于长期编辑和修改的文档非常有用。
五、使用评论和批注功能iDoc提供了评论和批注功能,可以让用户方便地与他人进行交流和讨论。
用户可以在文档中添加评论和批注,并与他人进行互动。
这一功能不仅方便了用户之间的沟通,还可以提高文档质量和准确度。
六、使用表格和图表功能iDoc提供了强大的表格和图表功能,可以帮助用户更好地展示和分析数据。
用户可以使用iDoc的表格和图表工具创建和编辑表格和图表,并进行数据计算和分析。
这一功能对于需要进行数据处理和展示的用户非常有用。
七、使用目录和索引功能iDoc提供了目录和索引功能,可以帮助用户快速定位和浏览文档内容。
用户可以在文档中添加目录和索引,并进行设置和调整。
这一功能对于长篇文档和技术文档非常有用,可以提高查阅效率。
IDOC实例详解(阵全)

IDOC实例详解IDOC是用于在不同的SAP系统之间或SAP系统与外部系统之间传输信息的一种文档表示形式。
本实例讲述从SAP客户端:SAPDEV 200传送自定义表中的内容至SAPPROD 700。
其中SAPPROD 700的在200中逻辑系统名称为:DEVCLNT700200的在200中逻辑系统名称为:DEVCLNT200SAPDEV传送的表结构如下:此表在DEV200和PRD700中均存在。
本实例中在讲述DEV200和PRD700之间的通讯设置中,如有不明白之处,还请参考本人的另一个文档“ALE配置及操作详解(阵全)”。
本实例讲述的是不通过消息控制的,处于不同物理地址的SAP系统间的数据传输。
一、使用TCODE:WE31创建一个段,该段须在DEV200和PRD700同时存在。
该段中只包含一个字段。
二、使用TCODE:WE30创建一个IDOC基本类型,该类型须在DEV200和PRD700同时存在。
三、使用TCODE:WE81创建一个逻辑消息类型。
只需在DEV200中创建。
四、TCODE:WE82在DEV200中指定逻辑消息类型和IDOC基本类型的对应关系。
五、使用TCODE:BD64在DEV200中添加消息类型ZMSGDEPARTMENT,并产生合作伙伴文件及分配,详细操作请见“ALE配置及操作详解(阵全)”。
如下图:BD64界面。
在DEV200中产生的对应于PRD700的RFC端口。
通过TCODE:WE21查看。
在DEV200中产生的对应于PRD700的合作伙伴参数,消息类型为ZMSGDEPARTMENT,可使用TCODE:WE20查看。
六、TCODE:SE38在DEV200中写该IDOC的出站处理程序。
代码如下:*& Report ZCREATEMATARIALIDOC*&*&---------------------------------------------------------------------* REPORT ZCREATEDEPARTMENTIDOC.DATA: G_IDOC_CTL LIKE EDIDC,ZSEGDEPARTMENT LIKE ZSEGDEPARTMENT.DATA: GI_RET_CTL LIKE EDIDC OCCURS 0,GI_IDOC_DATA LIKE EDIDD OCCURS 0 WITH HEADERLINE.PERFORM BUILD_IDOC_CTL.PERFORM BUILD_IDOC_SEG.PERFORM CREATE_IDOC.*&---------------------------------------------------------------------* *& Form CREATE_IDOC*&---------------------------------------------------------------------* * textFORM CREATE_IDOC.CALL FUNCTION 'MASTER_IDOC_DISTRIBUTE'EXPORTINGMASTER_IDOC_CONTROL = G_IDOC_CTLTABLESCOMMUNICATION_IDOC_CONTROL = GI_RET_CTLMASTER_IDOC_DATA = GI_IDOC_DATAEXCEPTIONSERROR_IN_IDOC_CONTROL = 1ERROR_WRITING_IDOC_STATUS = 2ERROR_IN_IDOC_DATA = 3SENDING_LOGICAL_SYSTEM_UNKNOWN = 4OTHERS = 5 .IF SY-SUBRC <> 0.MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNOWITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.ELSE.COMMIT WORK.ENDIF.ENDFORM. " CREATE_IDOC*& Form BUILD_IDOC_CTL*&---------------------------------------------------------------------* * text*----------------------------------------------------------------------* * --> p1 text* <-- p2 text*----------------------------------------------------------------------* FORM BUILD_IDOC_CTL.* TYPEG_IDOC_CTL-IDOCTP = 'ZTYPDEPARTMENT'. "IDOC TYPEG_IDOC_CTL-MESTYP = 'ZMSGDEPARTMENT'. "MESSAGE TYPE* RECEIVERG_IDOC_CTL-RCVPRT = 'LS'. "PARTNER TYPEG_IDOC_CTL-RCVPRN = 'DEVCLNT700'. "PARTNER NOG_IDOC_CTL-RCVPOR = 'A000000017'. "PORT* SENDERG_IDOC_CTL-SNDPRT = 'LS'. "PARTNER TYPEG_IDOC_CTL-SNDPRN = 'DEVCLNT200'. "PARTNER NO* G_IDOC_CTL-SNDPOR = 'A000000017'. "PORTENDFORM. " BUILD_IDOC_CTL*&---------------------------------------------------------------------* *& Form BUILD_IDOC_SEG*&---------------------------------------------------------------------* FORM BUILD_IDOC_SEG.* HEAD DATAGI_IDOC_DATA-SEGNAM = 'ZSEGDEPARTMENT'. "SEGMENT NAMEGI_IDOC_DATA-SEGNUM = 1. "SEGMENT NOZSEGDEPARTMENT-DEPT_NAME = '资讯部'. "部门名称MOVE ZSEGDEPARTMENT TO GI_IDOC_DATA-SDATA.APPEND GI_IDOC_DATA.ENDFORM. " BUILD_IDOC_SEG七、PRD700中,使用BD64查看在本文档中第五步产生的分配模型。
什么是IDOC,以及IDOC的步骤_图文(精)

Assigning Message type to Idoc type: Tcode - we82ProcessThe two processes for IDoc are Outbound Process and Inbound Process.Outbound ProcessWhen the data is sent out from the system, the process is called Outbound Process and the IDoc is known as Outbound IDoc.Inbound ProcessWhen the data is coming in, the process is called Inbound Process and the IDoc is known as Inbound IDoc. Outbound Process (Sending System Steps :1 Goto Tcode SALE:Creating the logical systemClick on Sending & Receiving Systems à Select Logical Systems--Here Define the Logical Systems à Click on Execute ButtonGo for New Entries1 System Name : LOG1:Description: Sending System2 System Name : LOG2:Description: Receiving SystemPress Enter & Save it will ask for Request if you want new request create new request or press continue for transferring the objects.Assigning Client to the Logical System:Select Assign Client to Logical Systems -Client : Sending SystemLogical System : LOG1and alsoClient : Receiving SystemLogical System : LOG2Save this Data.Step 2 For RFC Creation:Goto Tcode SM59 and Select R/3 ConnectsClick on create ButtonRFC Destination Name should be same as partner's logical system name and case sensitive to create the ports automatically while generating the partner profilesGive the information for required fields:RFC Destination : LOG2Connection type : 3Target Host : System No : 00Client : 210User : Login user namePassword :Save this & Test it and Remote LoginStep 3 Goto Tcode BD64:Click on the change button>Click on the create model view Short Text: model viewTechnical Name: LMODSave this & press okSelect just created model viewName: "LMOD"Goto add message typeModel Name : LMODSender : LOG1Receiver : LOG2Message type: ZAZHARMESSSave and press Enter.4 Goto Tcode BD82:Give Model View : LMODPartner system : LOG2Execute this by pressing F8It will gives you sending system port No: A00000000089 (Like 5 Goto Tcode BD64:Select the model viewGoto >Edit >model view > DistributePress ok & Press Enter.Run your ZprogramREPORT ZIDOC1 .DATA: Begin of imara occurs 0,matnr like mara-matnr,mtart like mara-mtart,end of imara.DATA: wamas_con LIKE edidc,imas_data LIKE edidd OCCURS 0 WITH HEADER LINE,icom_con LIKE edidc OCCURS 0 WITH HEADER LINE. PARAMETERS:e_matnr LIKE mara-matnr,e_msgtyp LIKE edidc-mestyp,e_rcvprn LIKE edidc-rcvprn.* retrive app. data from DBSELECT matnr mtart FROM mara INTO TABLE imara WHERE matnr = e_matnr.*Master idoc control recordwamas_con-rcvprt = 'LS'.wamas_con-rcvprn = e_rcvprn.wamas_con-idoctp = 'ZAZHARIDOC'.wamas_con-mestyp = e_msgtyp.* master idoc data recordsLOOP AT imara.imas_data-segnam = 'ZAZHARSEG'.move imara to imas_data-sdata .APPEND imas_data.ENDLOOP.CALL FUNCTION 'MASTER_IDOC_DISTRIBUTE' EXPORTINGmaster_idoc_control = wamas_conTABLEScommunication_idoc_control = icom_conmaster_idoc_data = imas_dataCOMMIT WORK.6 Verifying Transfer of IDOCs Tcode - we05ALE/IDOC Status Codes (outbound:01> IDoc Added30 > IDoc ready for dispatch29 >Error in ALE service Layer12 >Dispatch ok03 > Data passed to port ok.Inbound Process (Receiving System Steps:Do the same step as you did in sending system> Creating IDoc> Defining the Segment> Creating Message Type> Assigning the Message Type> Defining the Logical System> Assigning the Logical System> Creating the Distribution Model1 Goto Tcode - we57:Assign function module to IDoc typeModule: Function moduleBasic type:Message type:Direction: 2 (inbound2 Creating Inbound process code - we423 Verifying Idoc List Tcode - we054 ALE/IDOC Status Codes (Inbound:50 > IDoc Added51 >Application Document not posted64 >IDoc ready to be transferred to application62 >IDoc passed to application53 >Application Document posted----------------------实例 ------------------------------------------------Outbound Idoc-简而言之, IDOC 是类似 XML 的一种 SAP 系统与其他系统的一种集成工具。
IDOC的debug、错误处理和各项IDOC信息查询(各种查询,全)

IDOC的数据表:EDIDC Stores the Control Record information an IDOCEDID4 Stores the Data Records (version 4.6)EDIDD Data Seg (EDI Intermediate doc)EDIDS Stores the Status of an IDOCIDOC的测试一般通过WE09/WE19去测试,但是一些通过标准程序触发的IDOC没法通过WE09/WE19去测试,例如,AP IDOC 的RFFOEDI11、IDOC的查询:WE022、IDOC的FM的查询:IDOC_OUTPUT_<MT> (message type)The function modules for generating the IDocs are usually called IDOC_OUTPUT_<MT>, where <MT> represents the relevant message type. Depending on the output mode, the generated IDocs are either collected or forwarded for immediate dispatch.WE42 通过message type 查询到process code,然后再通过process code 查到outbound FM。
WE02查询message type partner no part type到WE20里面查询对应的FM。
其实IDOC的FM的查询,可以反过来去思考IDOC的配置,就可以从中去找了。
3、IDOC test :WE19 ,例如你修改了某个segment 的值,然后通过WE19就可以测试修改是否成功。
可使用于标准订单的重新传输。
4、通过idoc baisc type去查找:通过WE02查找到了这个IDOC的basic type 然后查看到这个basic type里面的segment对应的structure,利用where to used-list,查到对应的程序。
QR2工厂idoc解决方法

1、当遇上idoc被锁提示“GR master Data not maintained (for GR).”
2、查出此idoc对应的交货号。
3、用vl03查出此交货的代码。
6、解决方法:
遇上这种类型提示的idoc后,找出没有维护好“Inspection setup”设置的代码,发邮件给cindy找发货的工厂QA帮忙解决就可以了。请参Байду номын сангаас以下邮件:
4、再用mm03查询这个交货号里面的代码的Quality Management的设置。(输入plant:A681)
5、代码的Quality Management的设置中“Inspection setup”前面没有勾上“√”。(仅限GR2工厂过来的代码)有这些代码的交货号在RTCIS收货check out后idoc就会被锁,且提示为“GR master Data not maintained (for GR).”
IDOC配置步骤

IDOC配置步骤IDOC(Intermediate Document)是SAP系统中的数据交换格式,用于在不同的应用系统之间传输数据。
IDOC配置步骤如下:1. 创建传输端口(Partner Profile):首先,在SAP系统的事务码WE.20中创建一个传输端口,用于定义与外部应用系统之间的通信。
在创建传输端口时,需要指定端口名称、通信方式(如RFC或文件传输)、目标系统等信息。
2. 创建基本类型(Basic Type):基本类型定义了IDOC中要传输的数据的结构和字段。
使用事务码WE.31创建一个基本类型,并根据需要定义必要的字段和结构。
例如,可以创建一个基本类型用于传输销售订单数据。
3. 创建消息类型(Message Type):消息类型是将基本类型与具体业务过程相结合的概念。
使用事务码WE.81定义一个消息类型,并选择一个已经存在的基本类型。
例如,可以创建一个消息类型用于传输销售订单数据。
4. 创建发送基本类型和消息类型的关系(Outbound Process Code):在事务码WE.57中定义一个发送基本类型和消息类型的关系。
在这一步中,需要指定一个处理代码(Process Code),用于在发送IDOC时触发特定的逻辑操作。
5. 创建接收基本类型和消息类型的关系(Inbound Process Code):在事务码WE.57中定义一个接收基本类型和消息类型的关系。
在这一步中,需要指定一个处理代码,用于在接收IDOC时触发特定的逻辑操作。
6. 配置逻辑接口(Logical System):在事务码WE.20中,配置逻辑系统用于定义源系统和目标系统之间的逻辑连接。
在这一步中,需要定义源系统的业务伙伴号码(Business Partner Number),目标系统的逻辑系统名称等信息。
7. 配置端口(Port):在事务码WE.21中,配置端口用于定义数据交换的技术连接。
在这一步中,需要指定传输方法(如RFC、文件传输等)、端口号、通信目标等信息。
IDOC实践第2篇--简单IDOC定义及传输1

IDOC实践第二篇‐‐简单IDOC定义及传输引言1.由于业务的分布分,但管理上确需求集中化,目的:1.在同一SAP系统中传输存在的主数据(商品主数据),从client 500 到client7002.传输时使用系统存在信息类型,传输程序等,以便了解SAP标准的传输设置;3.了解传输需要用到的常用事件码及功能;用到的表或者结构:此传输使用传输零售商品主数据,传输的是零售商品业务码像,不关心对应的表及结构; 用到的事务码:1.AL11 查看服务器目录入文件,IDOC文件默认放在:/usr/sap/tmp2.SALE ALE基菜单,IDOC用到的事务码大多可以从这找到3.WEDI EDI基菜单,IDOC学用的事务码的一部份在这里,4.BALM 主数据分配 基菜单5.BALE ALE 管理基菜单6.测试过程:说明:测试把商品主数据从DEV 500,传到 DEV 700;1.定义逻辑系统:事务SALE后路径如下图:2.将逻辑系统分配到集团路径同上,进后分别把DEV500,DEV700,分配到CLIENT 500,700; 其中DEV500,的分配发如下图:4.维护分布模型各分布视图:事务码SALE后路径如下进入点点,然后,点,输入确认后,,然后填入:保存之后,在菜单:环境‐》生成合作伙伴编辑‐>模型观察‐>分配7.修正合作伙伴参数:WE02在上一步会生成合作伙伴参数,如下图,但有可能错误,需要修正,双击“消息类型”‐ARTMAS,修改为:8.对第4,第5步,在DEV700同样处理;只是一个是出站,一个是入站,需要注意不一样的地方;9.到此,配置就完成了,下面是测试IDOC的传输10.BD10,传一个商品信息;传输完成后,使用WE02可以查看传输出站状态,如正常可以以下步骤,否则查看前面的不是配置正常;9.使用WE02在DEV700中可查看入站状态,如正常的话,商品信息应该已传到到DEV700后续功能1.此文档为简单的商品主数据的传输,在实际的业务中会需要对传输的数据进行出入站的处理操作,后面的练习需要考虑对MESSAGE TYPE的处理;2.此文档使用是出入站处理函数,传输程序都是使用的系统标准的,可以考虑对这些函数、过程写入增强;3.考虑使用写的写的传输REPORT来传数据,并自己建立出入站的函数;参考资料CA620和CA621作者:游击队长QQ:415402519。
idoc 段定义

IDoc 段定义IDoc(Intermediate Document)是SAP系统中用于数据交换的标准格式。
它是一种结构化的数据记录,用于在不同的SAP系统之间传输数据。
IDoc段定义是IDoc的一个重要组成部分,它定义了IDoc中各个段的结构和字段。
1. IDoc概述IDoc是一种独立于硬件和操作系统的中间文档格式,用于在SAP系统和非SAP系统之间进行数据交换。
它可以用于不同的场景,如系统间数据同步、业务流程集成、电子数据交换等。
IDoc由一个或多个段(Segment)组成,每个段都有一个段类型(Segment Type)和多个字段(Field)。
段类型定义了段的结构,字段定义了段中的数据。
2. IDoc段定义的结构IDoc段定义由段类型和字段组成。
2.1 段类型段类型定义了段的结构,它包括段名称、描述和字段。
段名称是段的唯一标识,用于在IDoc中区分不同的段。
描述是对段的简要说明,通常包括段的用途和含义。
2.2 字段字段是段的组成部分,它定义了段中的数据。
字段包括字段名称、数据类型、长度和描述。
字段名称是字段的唯一标识,用于在段中区分不同的字段。
数据类型定义了字段的数据类型,如字符型、数值型、日期型等。
长度定义了字段的最大长度,以字符为单位。
描述是对字段的简要说明,通常包括字段的含义和用途。
3. IDoc段定义的创建和维护在SAP系统中,可以使用事务码WE30来创建和维护IDoc段定义。
3.1 创建段类型在创建IDoc段定义之前,首先需要创建段类型。
段类型定义了段的结构,包括段名称、描述和字段。
在事务码WE30中,选择“创建段类型”,输入段名称和描述,然后添加字段。
对于每个字段,需要指定字段名称、数据类型、长度和描述。
创建段类型后,可以添加、删除和修改字段。
3.2 维护段类型在创建段类型之后,可以使用事务码WE30来维护段类型。
在事务码WE30中,选择“维护段类型”,输入段名称,然后可以对字段进行添加、删除和修改。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
IDOC 配置步骤◆EDI 环境配置◆IDCO 开发(生成应用文档->IDCO端口->出站)◆服务程序环境配置服务程序的方式配置端口逻辑目录功能函数: EDI_PATH_CREATE_MESTYP_DOCNUMHow to add a created Z function module to the existing list in WE21A: After creating the function module remember to register it first in transaction WE55 and you will be able to use it in WE21IDOC 开发◆段开发WE31◆类开发WE30◆创建消息类型WE81配置伙伴参数第一部分配置出站文件保存位置1.配置文件夹逻辑位置[FILE]A.B.填入如图的参数C.选择这行,双击左边的”分配物理到逻辑路径”分别建立如下参数D.实际路径必须如下格式/sapmnt/EP1/ZTXML/<FILENAME>/sapmnt/EP1/ZTXML 此为在服务器上已建立的目录后面跟这种格式”<FILENAME>”,表示文件名E.回到F:双击左边”逻辑文件名定义,跨集团”填入如下参数ZXML表示建的文件夹G.AL11查看存在文件夹2.建立生成文件时保存位置的功能函数此函数定义了文件名的生成及保存这个文件的位置,这里要保存的位置实际上是我们上面建的位置: /sapmnt/EP1/ZTXMLA.所以用WE55进入,建立如下关系ZFILE_GET_NAME 是我们用SE37建立的函数,路径选择”L”Function module ZFILE_GET_NAMEIMPORTDATATYPE L IKE EDIPO-ACTRIGDIRECTORY LIKE EDIPO-OUTPUTDIRFILENAME LIKE EDIPO-OUTPUTFILECONTROL LIKE EDIDCEXPORTPATHNAME LIKE EDI_PATH-PTHNAM源码FUNCTION ZFILE_GET_NAME.*"----------------------------------------------------------------------*"*"Local interface:*" IMPORTING*" VALUE(DATATYPE) LIKE EDIPO-ACTRIG*" VALUE(DIRECTORY) LIKE EDIPO-OUTPUTDIR*" VALUE(FILENAME) LIKE EDIPO-OUTPUTFILE*" VALUE(CONTROL) LIKE EDIDC STRUCTURE EDIDC*" EXPORTING*" REFERENCE(PATHNAME) LIKE EDI_PATH-PTHNAM*"----------------------------------------------------------------------CALL FUNCTION'FILE_GET_NAME'EXPORTING* CLIENT = SY-MANDTLOGICAL_FILENAME = 'ZXML'* OPERATING_SYSTEM = SY-OPSYS* PARAMETER_1 = ' '* PARAMETER_2 = ' '* PARAMETER_3 = ' '* USE_PRESENTATION_SERVER = ' '* WITH_FILE_EXTENSION = ' '* USE_BUFFER = ' '* ELEMINATE_BLANKS = 'X'IMPORTING* EMERGENCY_FLAG =* FILE_FORMAT =FILE_NAME = PATHNAME* EXCEPTIONS* FILE_NOT_FOUND = 1* OTHERS = 2.IF SY-SUBRC <> 0.* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.ENDIF.IF PATHNAME IS NOT INITIAL.CONCATENATE PATHNAME SY-DATUM SY-UZEIT INTO PATHNAME.CONDENSE PATHNAME NO-GAPS.ENDIF.ENDFUNCTION.B.这里建立的其实在后面的WE21中会用到的(IDOC在通过合作伙伴中调用端口时,就会根据这里的设置把文件保存在设置的位置)3.定义收发的端口在出入站时,指定发送接收方时,就是通过这个设置端口来进出的,这里就像门一样WE21作如下设置这里把保存方法,路径,端口联系起.关键字:端口目录保存功能下面进入第二部分IDOC开发◆段开发WE31◆类开发WE30这里段,就是电文,一个行项目,但他的总长定义是1000个字符1.WE31建立段AB.把建立的段关联起来WE31建立如下关系这里存储数据的结构和关系建立2.创建消息类型WE81/WE823.WE82 IDOC TYPE ,MESSAGE TYPE 建立关联类型与消息关联起这里合作伙伴把出入站消息,类型,端口联系起来出站:由写好的函数提交数据MASTER_IDOC_DISTRIBUTE DEQUEUE_ALL 入站:相关的处理函数(WE41,WE42)4.创建IDCO处理模块(出站)A.se37 定义出站处理函数Function Module ZFM_OUTYBOUND_ASNIMPORTOBJECT LIKE NASTCONTROL_RECORD_IN LIKE EDIDCEXPORTCONTROL_RECORD_OUT LIKE EDIDCOBJECT_TYPE LIKE WFAS1-ASGTPTABLEINT_EDIDD LIKE EDIDDB.WE57建立“IDOC Message”,”IDOC Type”,”Function Module”三者之间B.se37 定义入站处理函数(处理功能代码在此实现,或者写到某个表中)Function module ZFM_INBOUND_ASNIMPORTINPUT_METHOD LIKE BDWFAP_PAR-INPUTMETHDMASS_PROCESSING LIKE BDWFAP_PAR-MASS_PROCEXPORTWORKFLOW_RESULT LIKE BDWFAP_PAR-RESULTAPPLICATION_VARIABLE LIKE BDWFAP_PAR-APPL_VARIN_UPDATE_TASK LIKE BDWFAP_PAR-UPDATETASKCALL_TRANSACTION_DONE LIKE BDWFAP_PAR-CALLTRANSTABLEIDOC_CONTRL LIKE EDIDCIDOC_DATA LIKE EDIDDIDOC_STATUS LIKE BDIDOCSTATRETURN_VARIABLES LIKE BDWFRETVARSERIALIZATION_INFO LIKE BDI_SER5定义出入站进程代码A.WE41/WE42出站入站这里的处理代码,将会在伙伴关系中出现,出入站的IDOC就与功能处理对应起来C.BD515配置伙伴参数WE20IDOC 处理生成发送IDOC*&---------------------------------------------------------------------**& Report Name:其它应付款附注表*& Create Date:2010/01/30*& Created By :WCBING*& Description:其它应付款附注表*&*& VERSION: V1.0*&---------------------------------------------------------------------**&*&---------------------------------------------------------------------*REPORT ZIDOC_TEST MESSAGE-ID ZMSGFIR.* 图标显示定义INCLUDE <ICON>.*---------------------------------数据定义区域<BEGIN>-------------------** 数据定义区域(全局变量,表,常量,数据类型等)TYPE-POOLS:SLIS.TABLES:BKPF,BSIS.*DATA:IT_LFC1 TYPE TABLE OF LFC1 WITH HEADER LINE,* WA_LFC1 LIKE LINE OF IT_LFC1.*DATA:BEGIN OF T_SAKNR OCCURS 1000,* SAKNR TYPE SAKNR,* END OF T_SAKNR.*DATA:BEGIN OF IT_LIFNR OCCURS 0,* LIFNR TYPE LIFNR,* KTOKK TYPE KTOKK,"帐户组* NAME1 TYPE NAME1,* END OF IT_LIFNR.*DATA:BEGIN OF IT_BSIK OCCURS 0,* LIFNR TYPE LIFNR,* HKONT TYPE HKONT,* SHKZG TYPE SHKZG,* GJAHR TYPE GJAHR,* MONAT TYPE MONAT,* DMBTR TYPE DMBTR,** BELNR LIKE BSIS-BELNR,"凭证编号* SGTXT LIKE BSIS-SGTXT,* DMBTR_S LIKE BSIS-DMBTR,"本币* DMBTR_H LIKE BSIS-DMBTR,"本币* YE TYPE HSLVT12,*** 汇票增加字段* BUKRS LIKE BSIK-BUKRS,* BUZEI LIKE BSEG-BUZEI,* UMSKZ LIKE BSIK-UMSKZ,* ZFBDT LIKE BSEG-ZFBDT,* WDATE LIKE BSED-WDATE,* WNAME LIKE BSED-WNAME,* WBZOG LIKE BSED-WBZOG,* END OF IT_BSIK,FP_FLAGE TYPE C.*DATA:BEGIN OF IT_BSIS OCCURS 0,* LIFNR TYPE LIFNR,* KUNNR TYPE KUNNR,* HKONT TYPE HKONT,* BELNR TYPE BELNR_D,* BUZEI TYPE BUZEI,* BUDAT TYPE BUDAT,* SGTXT TYPE SGTXT,* SHKZG TYPE SHKZG,* GJAHR TYPE GJAHR,* BUKRS TYPE BUKRS,* MONAT TYPE MONAT,* DMBTR TYPE DMBTR,* END OF IT_BSIS,IT_BSIS_T LIKE TABLE OF IT_BSIS WITH HEADER LINE.*DATA:BEGIN OF IT_DATA OCCURS 0,* LIFNR TYPE LIFNR,* KTOKK TYPE KTOKK,"帐户组* NAME1 TYPE NAME1,* YEAR_C TYPE HSLVT12,* DR TYPE HSLVT12,* CR TYPE HSLVT12,* DRCR TYPE HSLVT12,* END OF IT_DATA,* IT_ALV_SHOW LIKE TABLE OF IT_DATA* WITH HEADER LINE.*DATA:BEGIN OF IT_ALV_SHOW0200 OCCURS 0,* LIFNR TYPE LIFNR,* NAME1 TYPE NAME1,* BUDAT LIKE BSIS-BUDAT,"凭证日期* SGTXT LIKE BSIS-SGTXT,* DMBTR_S LIKE BSIS-DMBTR,"本币* DMBTR_H LIKE BSIS-DMBTR,"本币* DMBTR LIKE BSIS-DMBTR,"本币* YE TYPE HSLVT12,** SHKZG LIKE BSIS-SHKZG,*** 汇票增加字段* BUKRS LIKE BSIK-BUKRS,* BUZEI LIKE BSEG-BUZEI,* UMSKZ LIKE BSIK-UMSKZ,* ZFBDT LIKE BSEG-ZFBDT,* WDATE LIKE BSED-WDATE,* WNAME LIKE BSED-WNAME,* WBZOG LIKE BSED-WBZOG,* END OF IT_ALV_SHOW0200,* WA_ALV_SHOW0200 LIKE LINE OF IT_ALV_SHOW0200,* IT_ALV_SHOW0200X LIKE TABLE OF IT_ALV_SHOW0200 WITH HE ADER LINE.DATA: LS_BKPF TYPE ZBKPF,LS_BSIS TYPE ZBSAS,LS_EDIDC TYPE EDIDC,LT_EDIDC TYPE TABLE OF EDIDC,LT_EDIDD TYPE TABLE OF EDIDD WITH HEADER LINE,IT_DATA TYPE TABLE OF BSIS WITH HEADER LINE.*&--------------------架构---------------------------------------*DATA: GT_HEADER TYPE TABLE OF SLIS_LISTHEADER"头文件定义,固定.WITH HEADER LINE,GT_FIELDCAT_LVC TYPE LVC_T_FCATWITH HEADER LINE,GR_FIELDCAT_LVC TYPE LVC_T_FCATWITH HEADER LINE,GT_SORT_GRID TYPE LVC_T_SORTWITH HEADER LINE,GT_ROW_TABLE TYPE LVC_T_ROWWITH HEADER LINE, "行选择数据OK_CODE LIKE SY-UCOMM.CLASS LCL_EVENT_RECEIVER DEFINITION DEFERRED. "类的声明->双击事件DATA EVENT_RECEIVER TYPE REF TO LCL_EVENT_RECEIVER.CLASS LCL_EVENT_RECEIVER0200 DEFINITION DEFERRED. "类的声明->双击事件DATA EVENT_RECEIVER0200 TYPE REF TO LCL_EVENT_RECEIVER0200.*&----------------- 固定格式-------------------------------------------*DATA: GRID TYPE REF TO CL_GUI_ALV_GRID, "ALVOOGRID0200 TYPE REF TO CL_GUI_ALV_GRID, "ALVOOGS_LAYOUT_ALV TYPE LVC_S_LAYO, "ALV布局GS_TOOLBAR TYPE STB_BUTTON, "工具栏按钮G_CUSTOM_CONTAINER TYPE REF TOCL_GUI_CUSTOM_CONTAINER. "ALV容器DATA:G_DOCKING TYPE REF TO CL_GUI_DOCKING_CONTAINER,G_SPLITER TYPE REF TO CL_GUI_SPLITTER_CONTAINER,G_CONTAINER TYPE REF TO CL_GUI_CONTAINER,G_DOCKING0200 TYPE REF TO CL_GUI_DOCKING_CONTAINER,G_SPLITER0200 TYPE REF TO CL_GUI_SPLITTER_CONTAINER,G_CONTAINER0200 TYPE REF TO CL_GUI_CONTAINER.* 常量定义CONSTANTS:G_REPID LIKE SY-REPID VALUE SY-REPID,"当前系统FCODE_BACK LIKE SY-UCOMM VALUE'BACK',"返回* FCODE_DISP LIKE SY-UCOMM VALUE 'DISP',"工具栏上的自定按钮* FCODE_END LIKE SY-UCOMM VALUE 'END', "FCODE_ENTER LIKE SY-UCOMM VALUE'ENTER',"确定FCODE_EXIT LIKE SY-UCOMM VALUE'EXIT'. "退出* FCODE_PLANE LIKE SY-UCOMM VALUE 'FLIGHT'."工具栏上的自定按钮*---------------------------------数据定义区域< END >-------------------**----------------------------------主程序区域<BEGIN>--------------------**1 选择屏幕SELECTION-SCREEN BEGIN OF BLOCK BOX1 WITH FRAME TITLE TEXT-0 01.*PARAMETER :P_BUKRS LIKE BSIS-BUKRS DEFAULT '1000' OBLIG ATORY,* P_GJAHR LIKE BSIS-GJAHR DEFAULT SY-DATUM+0(4 ) OBLIGATORY,* P_MONAT LIKE BSIS-MONAT DEFAULT SY-DATUM+04( 2).**SELECT-OPTIONS:S_LIFNR FOR LFA1-LIFNR,** S_KTOKK FOR LFA1-KTOKK.*SELECT-OPTIONS:S_SAKNR FOR SKA1-SAKNR DEFAULT '2241010000' TO '2241080000'.SELECT-OPTIONS:S_BELNR FOR BKPF-BELNR.SELECTION-SCREEN END OF BLOCK BOX1.START-OF-SELECTION.* PERFORM SET_QUANX.* 数据处理-数据收集PERFORM FRM_DATA_RD.END-OF-SELECTION.*调用DYPLNRCALL SCREEN100.*----------------------------------------------------------------------** CLASS LCL_EVENT_RECEIVER DEFINITION*----------------------------------------------------------------------***----------------------------------------------------------------------*CLASS LCL_EVENT_RECEIVER DEFINITION.PUBLIC SECTION.METHODS:HANDLE_DOUBLE_CLICKFOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRIDIMPORTING E_ROW E_COLUMN,HANDLE_HOTSPOT_CLICKFOR EVENT HOTSPOT_CLICK OF CL_GUI_ALV_GRIDIMPORTING E_ROW_ID E_COLUMN_ID ES_ROW_NO.ENDCLASS. "lcl_event_receiver DEFINITION *----------------------------------------------------------------------** CLASS LCL_EVENT_RECEIVER0200 DEFINITION*----------------------------------------------------------------------***----------------------------------------------------------------------*CLASS LCL_EVENT_RECEIVER0200 DEFINITION.PUBLIC SECTION.METHODS:HANDLE_DOUBLE_CLICKFOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRIDIMPORTING E_ROW E_COLUMN.ENDCLASS. "LCL_EVENT_RECEIVER0200 DEFINIT ION*----------------------------------------------------------------------** CLASS lcl_event_receiver IMPLEMENTATION*----------------------------------------------------------------------***----------------------------------------------------------------------*CLASS LCL_EVENT_RECEIVER IMPLEMENTATION.METHOD HANDLE_DOUBLE_CLICK.* DATA:TMP_TABLE LIKE LINE OF IT_ALV_SHOW.* IF E_ROW-INDEX IS INITIAL.* PERFORM FRM_READ_ALL.* IF IT_ALV_SHOW0200[] IS NOT INITIAL.* CALL SCREEN 0200.* ENDIF.* ENDIF.* READ TABLE IT_ALV_SHOW INDEX E_ROW-INDEX INTO TMP_TABLE. * IF SY-SUBRC = 0.* PERFORM FRM_GET_DATA_DETAIL USING TMP_TABLE.* IF IT_ALV_SHOW0200[] IS NOT INITIAL.* CALL SCREEN 0200.* ENDIF.* ENDIF.ENDMETHOD. "handle_double_clickMETHOD HANDLE_HOTSPOT_CLICK.** PERFORM HANDLE_HOTSPOT_CLICK USING E_ROW_ID E_COLUMN_I D ES_ROW_NO.ENDMETHOD. "HANDLE_HOTSPOT_CLICK ENDCLASS. "LCL_EVENT_RECEIVER IMPLEMENTAT ION*----------------------------------------------------------------------** CLASS LCL_EVENT_RECEIVER0200 IMPLEMENTATION*----------------------------------------------------------------------***----------------------------------------------------------------------*CLASS LCL_EVENT_RECEIVER0200 IMPLEMENTATION.METHOD HANDLE_DOUBLE_CLICK.* DATA:TMP_TABLE0200 LIKE LINE OF IT_ALV_SHOW0200.* READ TABLE IT_ALV_SHOW0200 INDEX E_ROW-INDEX INTO TMP_T ABLE0200.* IF SY-SUBRC = 0.* SET PARAMETER ID 'BLN' FIELD TMP_TABLE0200-BELNR.* SET PARAMETER ID 'BUK' FIELD P_BUKRS.* SET PARAMETER ID 'GJR' FIELD TMP_TABLE0200-BUDAT+0(4). * CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN.* ENDIF.ENDMETHOD. "handle_double_click ENDCLASS. "LCL_EVENT_RECEIVER IMPLEMENTAT ION*&---------------------------------------------------------------------**& Module STATUS_0100 OUTPUT*&---------------------------------------------------------------------** 状态栏*----------------------------------------------------------------------*MODULE STATUS_0100 OUTPUT.SET PF-STATUS 'STATUS_0100'.SET TITLEBAR'TITLE_0100'.ENDMODULE. " STATUS_0100 OUTPUT*&---------------------------------------------------------------------**& Module USER_COMMAND_0100 INPUT*&---------------------------------------------------------------------** 命令区域*----------------------------------------------------------------------*MODULE USER_COMMAND_0100 INPUT.DATA:ACTION LIKE SY-UCOMM.ACTION = OK_CODE.CLEAR: OK_CODE.CASE ACTION.WHEN'BACK'.LEAVE TO SCREEN0.WHEN'EXIT'.LEAVE PROGRAM.WHEN'PRINTS'.WHEN'REF'.CALL METHOD GRID->REFRESH_TABLE_DISPLAY.WHEN'BUT'.WHEN'ACTION'.PERFORM FRM_ACTION.WHEN OTHERS.ENDCASE.ENDMODULE. "USER_COMMAND_0100 INPUT*----------------------------------------------------------------------** MODULE USER_COMMAND_0200 INPUT*----------------------------------------------------------------------***----------------------------------------------------------------------*MODULE USER_COMMAND_0200 INPUT.* DATA:ACTION0200 LIKE SY-UCOMM.* ACTION0200 = OK_CODE.* CLEAR: OK_CODE.* CASE ACTION0200.* WHEN 'BACK'.* LEAVE TO SCREEN 0.* WHEN 'EXIT'.* LEAVE PROGRAM.* WHEN 'PRINTS'.** PERFORM FRM_PRINTS.* WHEN 'REF'.* CALL METHOD GRID->REFRESH_TABLE_DISPLAY.* WHEN 'BUT'.** PERFORM FRM_EXCEL_OUT.* WHEN OTHERS.* ENDCASE.ENDMODULE. "USER_COMMAND_0100 INPUT*&---------------------------------------------------------------------**& Module PBO_INCLUDE OUTPUT*&---------------------------------------------------------------------** 处理区域 SCREEN 0100*----------------------------------------------------------------------*MODULE PBO_INCLUDE0100 OUTPUT.IF G_DOCKING IS INITIAL .CREATE OBJECT G_DOCKINGEXPORTINGREPID = G_REPIDDYNNR = '0100'SIDE = CL_GUI_DOCKING_CONTAIN ER=>DOCK_AT_BOTTOMEXTENSION = '320'EXCEPTIONSCNTL_ERROR = 1CNTL_SYSTEM_ERROR = 2CREATE_ERROR = 3LIFETIME_ERROR = 4LIFETIME_DYNPRO_DYNPRO_LINK = 5.CREATE OBJECT G_SPLITEREXPORTINGPARENT = G_DOCKINGROWS = 1COLUMNS = 1.CALL METHOD G_SPLITER->GET_CONTAINEREXPORTINGROW = 1COLUMN = 1RECEIVINGCONTAINER = G_CONTAINER.* 创建FIELDCATPERFORM FRM_FIELDCAT.* 创建LAYOUTPERFORM FRM_LAYOUT.*3. ALV数据填充<SET_TABLE_FOR_FIRST_DISPLAY>CREATE OBJECT GRIDEXPORTINGI_PARENT = G_CONTAINER."使用画布,此画布放在上面的指定的容器中CALL METHOD GRID->SET_TABLE_FOR_FIRST_DISPLAYEXPORTING* I_STRUCTURE_NAME = 'ZSFIR001' "参照结构IS_LAYOUT = GS_LAYOUT_ALV "布局设置CHANGINGIT_OUTTAB = IT_DATA[] "数据源IT_FIELDCATALOG = GT_FIELDCAT_LVC[]."字段ELSE.CALL METHOD GRID->REFRESH_TABLE_DISPLAY.ENDIF.* 4双击事件创建* CREATE OBJECT EVENT_RECEIVER.* SET HANDLER EVENT_RECEIVER->HANDLE_DOUBLE_CLICK FOR GRID. * SET HANDLER EVENT_RECEIVER->HANDLE_HOTSPOT_CLICK FOR GRID. ENDMODULE. "PBO_INCLUDE OUTPUT* 处理区域 SCREEN 0200*----------------------------------------------------------------------*MODULE PBO_INCLUDE0200 OUTPUT.* IF G_DOCKING0200 IS INITIAL .* CREATE OBJECT G_DOCKING0200* EXPORTING* REPID = G_REPID* DYNNR = '0200'* SIDE = CL_GUI_DOCKING_CONTAI NER=>DOCK_AT_BOTTOM* EXTENSION = '320'* EXCEPTIONS* CNTL_ERROR = 1* CNTL_SYSTEM_ERROR = 2* CREATE_ERROR = 3* LIFETIME_ERROR = 4* LIFETIME_DYNPRO_DYNPRO_LINK = 5.** CREATE OBJECT G_SPLITER0200* EXPORTING* PARENT = G_DOCKING0200* ROWS = 1* COLUMNS = 1.* CALL METHOD G_SPLITER0200->GET_CONTAINER* EXPORTING* ROW = 1* COLUMN = 1* RECEIVING* CONTAINER = G_CONTAINER0200.*** 创建FIELDCAT* PERFORM FRM_FIELDCAT0200.** 创建LAYOUT* PERFORM FRM_LAYOUT.**3. ALV数据填充<SET_TABLE_FOR_FIRST_DISPLAY>* CREATE OBJECT GRID0200* EXPORTING* I_PARENT = G_CONTAINER0200."使用画布,此画布放在上面的指定的容器中* CALL METHOD GRID0200->SET_TABLE_FOR_FIRST_DISPLAY* EXPORTING** I_STRUCTURE_NAME = 'ZSFIR001' "参照结构* IS_LAYOUT = GS_LAYOUT_ALV "布局设置* CHANGING* IT_OUTTAB = IT_ALV_SHOW0200[] "数据源* IT_FIELDCATALOG = GR_FIELDCAT_LVC[]."字段* ELSE.* CALL METHOD GRID0200->REFRESH_TABLE_DISPLAY.* ENDIF.** 4双击事件创建** 4双击事件创建* CREATE OBJECT EVENT_RECEIVER0200.* SET HANDLER EVENT_RECEIVER0200->HANDLE_DOUBLE_CLICK FOR G RID0200.ENDMODULE. "PBO_INCLUDE OUTPUT************************************************************ ************ (程序模块区域)-FORM ************************************************************* ************&---------------------------------------------------------------------**& Form FRM_FIELDCAT FIELDCAT-SCREEN0100*&---------------------------------------------------------------------*FORM FRM_FIELDCAT .REFRESH GT_FIELDCAT_LVC.CLEAR GT_FIELDCAT_LVC.* SCREEN-0100PERFORM ADD_FIELDCAT USING'BUKRS''10''''''''W公司代码'''''''''''''''CHANGING GT_FIELDCAT_LVC[].PERFORM ADD_FIELDCAT USING'GJAHR''10''''''''年度'''''''''''''''CHANGING GT_FIELDCAT_LVC[].PERFORM ADD_FIELDCAT USING'BELNR''20''''''''凭证号'''''''''''''''CHANGING GT_FIELDCAT_LVC[].PERFORM ADD_FIELDCAT USING'SHKZG''15''''''''借货标识'''''''''''''''CHANGING GT_FIELDCAT_LVC[].PERFORM ADD_FIELDCAT USING'DMBTR''15''''''''金额''''''''''''X'''CHANGING GT_FIELDCAT_LVC[].* PERFORM ADD_FIELDCAT USING 'DRCR' '15' '' '' '' '帐上余额' '' '' '' '' 'X' 'X' '' CHANGING GT_FIELDCAT_LVC[]. ENDFORM. " FRM_FIELDCAT*&---------------------------------------------------------------------**& Form FRM_LAYOUT*&---------------------------------------------------------------------** 创建LAYOUT*----------------------------------------------------------------------*FORM FRM_LAYOUT .*GS_LAYOUT_ALV-S_DRAGDROP-ROW_DDID = G_HANDLE_ALV. ENDFORM. "FRM_LAYOUT*&---------------------------------------------------------------------**& Form ADD_FIELDCAT*&---------------------------------------------------------------------** 向FIELDCAT添加内容*----------------------------------------------------------------------*FORM ADD_FIELDCAT USING VALUE(P_FIELDNAME) TYPE CVALUE(P_OUTPUTLEN) TYPE CP_TEXT TYPE CVALUE(P_KEY) TYPE CVALUE(P_JUST) TYPE CVALUE(P_TXT_FIELD) TYPE CVALUE(P_FIELD) TYPE CVALUE(P_TABLE) TYPE CVALUE(P_EDIT) TYPE CVALUE(P_QFIELDNAME) TYPE CVALUE(P_SUM) TYPE CVALUE(P_NO_ZERO) TYPE CVALUE(P_HOTSPOT) TYPE CCHANGING P_GR_FIELDCAT_LVC TYPE LVC_T_FCA T.DATA: LS_FCAT TYPE LVC_S_FCAT.IF P_FIELDNAME = 'CKBOX'.LS_FCAT-CHECKBOX = 'X'.ENDIF.LS_FCAT-FIELDNAME = P_FIELDNAME. "字段名LS_FCAT-OUTPUTLEN = P_OUTPUTLEN. "字段长度 LS_FCAT-COLTEXT = P_TEXT. "字段显示内容LS_FCAT-KEY = P_KEY. "关键值LS_FCAT-JUST = P_JUST. "对LS_FCAT-REF_TABLE = P_TABLE. "表名LS_FCAT-REF_FIELD = P_FIELD. "引用字段名LS_FCAT-COLTEXT = P_TXT_FIELD. "自定义字段名LS_FCAT-EDIT = P_EDIT. "是否可编辑LS_FCAT-QFIELDNAME = P_QFIELDNAME. "单位引用 LS_FCAT-DO_SUM = P_SUM.LS_FCAT-NO_ZERO = P_NO_ZERO.LS_FCAT-HOTSPOT = P_HOTSPOT.APPEND LS_FCAT TO P_GR_FIELDCAT_LVC.ENDFORM. " ADD_FIELDCAT*&---------------------------------------------------------------------**& Form FRM_DATA_RD*&---------------------------------------------------------------------** SQL数据提取区*----------------------------------------------------------------------*FORM FRM_DATA_RD.SELECT BSIS~BUKRS BSIS~GJAHR BSIS~BELNR BSIS~SHKZG BSIS~DM BTRAPPENDING CORRESPONDING FIELDS OF TABLE IT_DATAFROM BKPF INNER JOIN BSIS ON BSIS~BUKRS = BKPF~BUKRS AND BSIS~GJAHR = BKPF~GJAHR AND BSIS~BELNR = BKPF~BELNR WHERE BKPF~BELNR IN S_BELNR.SORT IT_DATA BY BUKRS GJAHR BELNR.ENDFORM. " FRM_DATA_RD*&---------------------------------------------------------------------**& Form HANDLE_HOTSPOT_CLICK*&---------------------------------------------------------------------**FORM HANDLE_HOTSPOT_CLICK USING I_ROW_ID TYPE LVC_S_ROW* I_COLUMN_ID TYPE LVC_S_COL* IS_ROW_NO TYPE LVC_S_ROID. ** READ TABLE IT_ALV_SHOW INDEX IS_ROW_NO-ROW_ID.** IF SY-SUBRC = 0.** CASE I_COLUMN_ID-FIELDNAME.** WHEN 'DR'.** WHEN 'CR'.** WHEN 'DRCR'.** WHEN 'YEAR_C'.** WHEN OTHERS.** ENDCASE.** ENDIF.**ENDFORM. " HANDLE_HOTSPOT_CLICK*&---------------------------------------------------------------------**& Form FRM_FIELDCAT0200*&---------------------------------------------------------------------** text*----------------------------------------------------------------------*FORM FRM_FIELDCAT0200 .**SCREEN-0200* REFRESH:GR_FIELDCAT_LVC.* CLEAR GR_FIELDCAT_LVC.* PERFORM ADD_FIELDCAT USING 'LIFNR' '10' '' '' '' '供应商编码' '' '' '' '' '' 'X' '' CHANGING GR_FIELDCAT_LVC[].* PERFORM ADD_FIELDCAT USING 'NAME1' '35' '' '' '' '名称' '' '' '' '' '' 'X' '' CHANGING GR_FIELDCAT_LVC[].* PERFORM ADD_FIELDCAT USING 'BELNR' '10' '' '' '' '凭证编号' '' '' '' '' '' 'X' '' CHANGING GR_FIELDCAT_LVC[].* PERFORM ADD_FIELDCAT USING 'BUDAT' '12' '' '' '' '过帐日期' '' '' '' '' '' 'X' '' CHANGING GR_FIELDCAT_LVC[].* PERFORM ADD_FIELDCAT USING 'SGTXT' '35' '' '' '' '文本' '' '' '' '' 'X' 'X' '' CHANGING GR_FIELDCAT_LVC[].* IF FP_FLAGE = 'X'.* PERFORM ADD_FIELDCAT USING 'ZFBDT' '10' '' '' '' '到期日' '' '' '' '' '' '' '' CHANGING GR_FIELDCAT_LVC[].* PERFORM ADD_FIELDCAT USING 'WDATE' '10' '' '' '' '签发日' '' '' '' '' '' '' '' CHANGING GR_FIELDCAT_LVC[].* PERFORM ADD_FIELDCAT USING 'WNAME' '20' '' '' '' '出票人' '' '' '' '' '' '' '' CHANGING GR_FIELDCAT_LVC[].* PERFORM ADD_FIELDCAT USING 'WBZOG' '20' '' '' '' '受票人' '' '' '' '' '' '' '' CHANGING GR_FIELDCAT_LVC[].* ENDIF.* PERFORM ADD_FIELDCAT USING 'DMBTR_S' '15' '' '' '' '借方金额' '' '' '' '' 'X' 'X' '' CHANGING GR_FIELDCAT_LVC[]. * PERFORM ADD_FIELDCAT USING 'DMBTR_H' '15' '' '' '' '货方金额' '' '' '' '' 'X' 'X' '' CHANGING GR_FIELDCAT_LVC[]. * PERFORM ADD_FIELDCAT USING 'YE' '15' '' '' '' '余额' '' '' '' '' 'X' 'X' '' CHANGING GR_FIELDCAT_LVC[].ENDFORM. " FRM_FIELDCAT0200*&---------------------------------------------------------------------**& Form FRM_GETDATA*&---------------------------------------------------------------------**FORM FRM_GETDATA USING LIFNR LIKE IT_DATA-LIFNR* YEAR_C LIKE IT_DATA-YEAR_C* DR LIKE IT_DATA-DR* CR LIKE IT_DATA-CR* DRCR LIKE IT_DATA-DRCR.** DATA:TS TYPE HSLVT12,TH TYPE HSLVT12,SUM TYPE HSLVT12,CXI TYPE I,* ST TYPE I,HT TYPE I,TIME TYPE I.* FIELD-SYMBOLS:<FS>,<FH>,<SUM>.* CLEAR:WA_LFC1.* READ TABLE IT_LFC1 INTO WA_LFC1 WITH KEY LIFNR = LIFNR.* IF SY-SUBRC = 0.* IF SY-DATUM+4(2) <> P_GJAHR.* TIME = 12.* ELSE.* TIME = SY-DATUM+4(2).* ENDIF.* ST = 5.HT = 6.* DO TIME TIMES.* ST = ST + 3.HT = HT + 3.* ASSIGN COMPONENT ST OF STRUCTURE WA_LFC1 TO <FS>.* ASSIGN COMPONENT HT OF STRUCTURE WA_LFC1 TO <FH>.* TS = TS + <FS>.* TH = TH + <FH>.* ENDDO.* YEAR_C = WA_LFC1-UMSAV.* DR = TS.* CR = TH.* DRCR = WA_LFC1-UMSAV + TS - TH.* ENDIF.*ENDFORM. " FRM_GETDATA*&---------------------------------------------------------------------**& Form FRM_GET_DATA_DETAIL*&---------------------------------------------------------------------**FORM FRM_GET_DATA_DETAIL USING TMP_TABLE LIKE IT_ALV_SHOW. * DATA:UMSAV TYPE HSLVT12.* FREE:IT_ALV_SHOW0200.* DATA:WA_DATA LIKE LINE OF IT_DATA.* LOOP AT IT_BSIK WHERE LIFNR = TMP_TABLE-LIFNR.** KUNNR HKONT SHKZG GJAHR MONAT DMBTR BELNR BUDAT SGTXT* MOVE-CORRESPONDING IT_BSIK TO IT_ALV_SHOW0200.* READ TABLE IT_DATA INTO WA_DATA WITH KEY LIFNR = TMP_TA BLE-LIFNR.* IT_ALV_SHOW0200-NAME1 = WA_DATA-NAME1.* IT_ALV_SHOW0200-YE = IT_BSIK-DMBTR_S - IT_BSIK-DMBTR_H. * APPEND IT_ALV_SHOW0200.* CLEAR:IT_ALV_SHOW0200.* ENDLOOP.*ENDFORM. " FRM_GET_DATA_DETAIL*&---------------------------------------------------------------------**& Form FRM_READ_ALL*&---------------------------------------------------------------------** text*----------------------------------------------------------------------*FORM FRM_READ_ALL .* DATA:UMSAV TYPE HSLVT12,TMP_TABLE LIKE LINE OF IT_ALV_SHO W.* FREE:IT_ALV_SHOW0200.** DATA:WA_DATA LIKE LINE OF IT_DATA.* LOOP AT IT_BSIK.** KUNNR HKONT SHKZG GJAHR MONAT DMBTR BELNR BUDAT SGTXT* MOVE-CORRESPONDING IT_BSIK TO IT_ALV_SHOW0200.* READ TABLE IT_DATA INTO WA_DATA WITH KEY LIFNR = IT_BSI K-LIFNR.* IT_ALV_SHOW0200-NAME1 = WA_DATA-NAME1.* IT_ALV_SHOW0200-YE = IT_BSIK-DMBTR_S - IT_BSIK-DMBTR_H. * APPEND IT_ALV_SHOW0200.* CLEAR:IT_ALV_SHOW0200.* ENDLOOP.ENDFORM. " FRM_READ_ALL*&---------------------------------------------------------------------**& Form FRM_ACTION*&---------------------------------------------------------------------** text*----------------------------------------------------------------------** --> p1 text* <-- p2 text*----------------------------------------------------------------------*FORM FRM_ACTION .CLEAR LS_EDIDC.*系统根据下面4行即可与WE20设置关联起来LS_EDIDC-MESTYP = 'ZM_FI'. "Message TypeLS_EDIDC-IDOCTP = 'ZT_FI'. "IDOC TypeLS_EDIDC-RCVPRN = 'ZXML'. "Partner Number of RecipientLS_EDIDC-RCVPRT = 'US'. "Partner Type of ReceiverLOOP AT IT_DATA.AT NEW BELNR.*添加IDOC结点CLEAR LT_EDIDD.LT_EDIDD-SEGNAM = 'ZBKPF'."结点名称LT_EDIDD-DTINT2 = 0.CLEAR LS_BKPF.LS_BKPF-BELNR = IT_DATA-BELNR.LS_BKPF-BUKRS = IT_DATA-BUKRS.LS_BKPF-GJAHR = IT_DATA-GJAHR.LT_EDIDD-SDATA = LS_BKPF. "结点内容APPEND LT_EDIDD.ENDAT.CLEAR LT_EDIDD.LT_EDIDD-SEGNAM = 'ZBSAS'.LT_EDIDD-DTINT2 = 0.CLEAR LS_BSIS.。