Restrict IDOC processing through output control
Hi,
We want to send one idoc (ORDERS) only to a particular logical system while creating purchase order through output control
Can anybody explain how we can restrict sending idoc to only one logical system?
Thanks in advance
You can control output processing for shipments(VT01n docs) based on overall status by maintaining Activity profiles for shipment types.
SPRO: Logistics execution->Transportation->Shipments->Define and assign activity profiles.
Type a variant name in the status field you want to process edi for the shipment type and click on maintain.
Select shipment checkbox in the 'Print after save' box and enter the EDI output type.
Regards
Sridhar
Similar Messages
-
Automatic Payment Process through IDOC and Receive Message Acknowledgement and BANST file format
Hi Experts,
We are implementing payment process to our client through Idoc.
Normally the process will go like below. Once Payment Initiated --> IDoc will generate --> This Idoc process through PI system and send to Bank.--> Once payment data received bank --> it will generate acknowledgement receipt and Bansta file and send it PI system --> This PI system system again send it --> SAP system. Here I want to know the required configuration from PI system to SAP system while receiving acknowledgement and Bansta file. And let me know if u guys have steps...
Thanks,
RaviramHi,
>is possible using the fileadapter to read this file and with pass it throug PI to IDOC receiver adapter without any mapping?
yes
>In that case what should the Message Type we are using in the file-sender adapter look like?
If you have no mapping it doesnt matter, the message type will not be validated during runtime. You can take the IDoc type imported from the SAP system
Regards,
Udo -
Regarding the Outbound IDOC process
Hi Experts,
Please answers the following questions which i have some doubts in Outbound Process.
1) Which program is resposible to fill the segments of IDOC(Std IDoc) in case of Outbound IDOC Process with message control , Is it FM in Process code or any other FM based on message type( Std Msg)?.
2) Where we need to code or search the exit in Case of extension of basic IDOC type with and without message control?
3)Which prog is responsible to fill the IDOC in case of outbound process without message control but using std basic IDOC.
Regards,
Kali PramodKali,
1. You can search in SE37 using IDOC_OUTPUT* for finding out corresponding function modules. It is based on message types.
2. You can search user exit in above mentioned function module. So first get the correct populating FM & then you can search for Call Customer Function inside the code for user exit.
3.Again ans is same as in point 1. -
How to control IDOC processing in XI
hi
I have scenario where File --> XI --> IDOC
Source structure
Header 1...1
Detail 0..unbounded
Trailer 1..1
For every detail i need to generate 1 doc
My requirement is that i dont want to send all the IDOCs at one shot from XI.
trfc connection should be open just once for all the IDOCs and not single IDOCs are posted.
Is there any transaction from where i can control my IDOC processing.
Need urgent help.
Thanks ,
LoveenaHi Loveena,
in a scenario, for instance, where you send IDOCs of type LS (logical system):
1. In the sender system, call transaction WE05 to display the outbound IDoc. The IDoc partner type of both receiver and sender is LS.
2. On the Integration Server, call transaction SXMB_MONI (Integration Engine Monitoring Monitor for Processed XML Messages) to display the message.
3. In the receiver system, call transaction WE05 to display the inbound IDoc.
if it helpful reward points are appreciated -
Generating GR Idoc through Output
Hi,
I will be doing GR in ECC and will send the same to another system through IDOC WMMBID02.
I am thinking of sending the same immediately once GR is done through Output config , I am thinking of using output type We01.
Is there any other modification that we have to do (Programme in the Output / TRansmission Medium etc).
Or is there any other output type i should use.
REgards.
BGHi BG,
Was you able to generate IDOC for GR/GI/Transfer posting and update the SAP inventory into external system at run time? I have the same request from client as yours now.
Hope you can give some idea on how the settings done to do this.
Thanks,
Trang -
Query for Inbound processing for ALE IDOC & Outbound through Change Pointer
Hi,
I have a scenario, in which I have reduced Message Type for HRMD_A as Inbound and Outbound both.
The Problem that I am facing is , whenver the inbound Idoc processing takes place, it updates the Infotypes and at the same time, as updation is done, Change Pointers write entries for the same in BDCP2. So, again the same changes are tracked for Outbound Message type and creates the idoc and post it again.
This need to be avoided. The requirement is to stop such processing of the data from sending again.
Any help for this would be appreciated.
Regards,
HeenaHi Heena...
please check the fields present corresponding to the messagetype "HRMD_A" in trnsaction BD52. keep only the reuired fields and delete the remaining fields in BD52 trnsaction. if any changes happened in the required fields then change pointers will trigger an idoc. So, please check the fields present in BD52 transaction.
please let me know if you need any clarifications further.
Regards,
Lokeswari. -
Print via Output Control(XNAPR) field in MIGO to be checked through BAPI
Hi Sir,
I am creating goods movement using BAPI 'BAPI_GOODSMVT_CREATE'. I am able to fill all field exect the check bos for Print via Output Control(XNAPR) field in MIGO Header screen. I am unable to find out any field corresponding to this in the BAPI structure so that I can put 'X' in that.
Please help me and I have to do this only using this BAPI.
Regards
KrishanHi,
I figured this one out, it's faily simple.
Within the BAPI the table USR05 is checked for Parameter ID NDR(Print via output control in MM - Inventory management) it's the parameter ID linked to the field XNAPR.
To make it work just update the table USR05 with the required setting and then execute the BAPI.
Once the procecssing is done reset the value in the table to the default.
Geting and setting the parameter ID doesn't work.
This the code I have:
Store current value in temp variable
SELECT SINGLE * FROM usr05 WHERE bname = sy-uname
AND parid = 'NDR'.
old_prflag = usr05-parva.
Set the new value
usr05-parva = rm07m-xnapr.
UPDATE usr05 SET parva = usr05-parva
WHERE bname = sy-uname
AND parid = 'NDR'.
Execute the BAPI
CALL FUNCTION 'BAPI_GOODSMVT_CREATE'
EXPORTING
goodsmvt_header = gm_head
goodsmvt_code = gm_code
testrun = ' '
IMPORTING
materialdocument = g_mblnr
matdocumentyear = g_year
TABLES
goodsmvt_item = gt_item
return = gt_return
extensionin = gt_ext.
Set the print Parameter back
usr05-parva = old_prflag.
UPDATE usr05 SET parva = usr05-parva
WHERE bname = sy-uname
AND parid = 'NDR'.
Regards,
Jeroen -
Unable to Update data in Ztable (dbase) through Table Control.
Hi Experts.
I am able to pull dta from Ztable into table control and also able to insert a new line and delete a row from table control. But after trying a lot I am unbale to pass the same from Table control to Ztable.
Any ideas. Seems like here Update of Ztable needs some different treatment.
PLZ LOOK into the code in red only. rest are for reference.
The code on the Flow Logic Screen:
PROCESS BEFORE OUTPUT.
module init_100.
LOOP At it_auftrag1 with CONTROL tctrl1 cursor tctrl1-current_line.
ENDLOOP.
PROCESS AFTER INPUT.
LOOP AT it_auftrag1.
Module modify_it_auftrag1.
ENDLOOP.
MODULE fcode_100.
MODULE USER_COMMAND_9000.
The code on main Screen (Mod. Pool Screen ) follows:
PROGRAM SAPMZDEMO_MPOOL_06.
TABLES: ZLT_Auftrag1, ZLT_Kunde.
DATA: fcode2(4), fcode(4). "OK_Code.
CONTROLS : tctrl1 type TABLEVIEW USING SCREEN '9000'.
DATA: col TYPE cxtab_column.
DATA: demo_cprop, demo_tprop.
DATA: Begin Of it_Auftrag1 occurs 20,
marked.
include structure ZLT_auftrag1.
DATA: END OF it_Auftrag1.
DATA: linno TYPE i.
DATA: fld(20).
DATA: off TYPE i.
module fcode_100 input.
endmodule. " fcode_100 INPUT
module modify_it_auftrag1 input.
modify it_Auftrag1 index tctrl1-current_line.
endmodule. " modify_it_auftrag1 INPUT
module init_100 output.
set pf-status 'ZSTATUS01'.
Describe Table it_auftrag1 lines tctrl1-lines. "TO add Scroll Bar to Table Control1
UPDATE ZLT_Auftrag1 From it_auftrag1.
endmodule. " init_100 OUTPUT
module USER_COMMAND_9000 input.
CASE sy-ucomm.
*To Populate Data into Kunde through Pushbuttons
When 'OK_GETK'.
IF ZLT_Kunde-K1 is NOT INITIAL.
SELECT SINGLE *
FROM ZLT_Kunde
Where K1 = ZLT_KUNDE-K1.
IF ZLT_Kunde-K1 is NOT initial.
Select *
From ZLT_Auftrag1
INTO Corresponding fields of TABLE it_auftrag1
Where A3 = ZLT_Kunde-K2.
ENDIF.
ELSE.
MESSAGE S000(8i) With 'Enter Kunde Name'.
ENDIF.
when 'DELL'.
* remove marked lines
delete it_auftrag1.
loop at it_auftrag1 where marked = 'X'.
UPDATE ZLT_Auftrag1 From it_auftrag1.
endloop.
if sy-subrc <> 0.
get cursor field fld line linno offset off.
set cursor field fld line linno offset off.
if fld cp 'IT_auftrag1*' and sy-subrc = 0.
linno = linno + tctrl1-top_line - 1.
delete it_auftrag1 index linno.
tctrl1-lines = tctrl1-lines - 1.
endif.
endif.
When 'INSL'.
* insert line above cursor position
get cursor field fld line linno offset off.
set cursor field fld line linno offset off.
if fld cp 'IT_auftrag1*' and sy-subrc = 0.
if linno >= 1.
linno = linno + tctrl1-top_line - 1.
clear it_auftrag1.
insert it_auftrag1 index linno.
tctrl1-lines = tctrl1-lines + 1.
else.
clear it_auftrag1.
append it_auftrag1.
tctrl1-lines = tctrl1-lines + 1.
endif.
endif.
When 'SAVE'.
loop at it_auftrag1 where marked = 'X'.
* Modify it_Auftrag1.
Modify ZLT_Auftrag1 From it_Auftrag1.
Endloop.
IF sy-subrc = 0.
MESSAGE s000(8i) With 'Data Saved'.
ENDIF.
When 'BACK'.
Leave Program.
When 'OK_CLEAR'.
Clear : ZLT_KUNDE, ZLT_AUFTRAG1, it_auftrag1.
ENDCASE.
endmodule. " USER_COMMAND_9000 INPUT
Looking forward for your advice,
Regards
ChandanHi Venkat,
Thanks again. I will try ur suggestion too. In the meanwhile I did the following changes in the code:
Purpose: After data is getting pulled from dbase table (ZLT_Auftrag1) into internal table it_auftrag1 then and just after I press the button delete ( i.e. When the user command starts: When 'DELL' )
then I delete all the contents reflecting in it_auftrag1 from ZLT_Auftrag1, Now the Ztable is empty but it_auftrag1 holds all values. futher when loop starts then the Marked line gets deleted. Now at this stage the it_Auftrag1 contains all data of ZLT_auftrag1 except the line that I want to delete. If I am able to MODIFY the ZLT_auftrag1 from it_Auftrag1 at this stage then ZLT_Auftrag1 will again be populated with all those data except the line that I want to delete.
Here goes the code that I modified ( ref the code in my 1st post in red to compare)
WHEN 'DELL'.
* remove marked lines
* If it_Auftrag1-Marked = 'X'.
DELETE from ZLT_Auftrag1 where A3 = ZLT_kunde-K2.
* ENDIF.
IF sy-subrc = 0.
loop at it_auftrag1 where marked = 'X'.
DELETE it_auftrag1.
* INSERT ZLT_Auftrag1 From TABLE it_auftrag1 accepting duplicate keys.
* UPDATE ZLt_auftrag1 from TABLE it_auftrag1.
* MODIFY ZLT_Auftrag1 From TABLE it_auftrag1.
endloop.
* INSERT ZLT_Auftrag1 From TABLE it_auftrag1.
* UPDATE ZLt_auftrag1 from TABLE it_auftrag1.
* MODIFY ZLT_Auftrag1 From TABLE it_auftrag1.
* If sy-subrc = 0.
* MESSAGE S000(8i) With 'Data Deleted from Database'.
* ENDIF.
ENDIF.
MODIFY ZLT_Auftrag1 from it_Auftrag1. ==> This modification doesn't works.
If sy-subrc = 0.
MESSAGE S000(8i) With 'Data Deleted from Database'.
ENDIF.
if sy-subrc <> 0.
get cursor field fld line linno offset off.
set cursor field fld line linno offset off.
if fld cp 'IT_auftrag1*' and sy-subrc = 0.
linno = linno + tctrl1-top_line - 1.
delete it_auftrag1 index linno.
tctrl1-lines = tctrl1-lines - 1.
endif.
endif.
Looking forward for your suggestions.
Regards
Chandan -
How to show data through table control
Hi Experts,
I have created an table control through wizard using table EKKO.
I have to populate one internal table( type ekko ), and then show it in output through table control.
Please advise, how to do that and in where i have to write the codes.
I will reward points for every suggestion
Thanks in advance.
regardshi saubrab,
This is kiran kumar.G.I am sending some sample code to populate data into table control check it once.
i will give input in 100 screen. and display table control in 200 screen.check it once once ..ok....
SE38 :(CODE)
*& Module pool YMODULEPOOL_TABLECONTROL1 *
*& DEVELOPER : KIRAN KUMAR.G *
*& PURPOSE : TABLE CONTROL DEMO *
*& CREATION DT : 17/12/2007 *
*& T.CODE : YMODTABLECONTROL1 *
*& REQUEST : ERPK900035 *
PROGRAM ymodulepool_tablecontrol1.
Tables
TABLES: yvbap, "Sales Document: Item Data
vbak. "Sales Document: Header Data
Controls
CONTROLS: my_table TYPE TABLEVIEW USING SCREEN 200.
Global Variables
DATA: gv_lines TYPE i,
gv_lines1 type i,
gv_temp type i,
gv_flag(20) TYPE c VALUE 'DISP',
gv_mode1 TYPE c,
gv_mode TYPE c VALUE 'C'. " C: Change, D :Display
Internal Table
DATA: BEGIN OF gt_item OCCURS 0,
vbeln LIKE vbap-vbeln, "Sales Document Number
posnr LIKE vbap-posnr, "Sales Document Item
matnr LIKE vbap-matnr, "Material Number
matkl LIKE vbap-matkl, "Material Group
arktx LIKE vbap-arktx, "Short Text for Sales Order Item
cflag, "Deletion Indicator
END OF gt_item.
*& Module STATUS_0100 OUTPUT
text
MODULE status_0100 OUTPUT.
SET PF-STATUS 'ZTABLECONTROL' OF PROGRAM 'YMODULEPOOL_TABLECONTROL'.
SET TITLEBAR 'xxx'.
ENDMODULE. " STATUS_0100 OUTPUT
*& Module USER_COMMAND_0100 INPUT
text
MODULE user_command_0100 INPUT.
CASE sy-ucomm.
WHEN 'DISP'.
SELECT single vbeln
erdat
angdt
bnddt
FROM vbak
INTO (vbak-vbeln,vbak-erdat,
vbak-angdt,vbak-bnddt)
WHERE vbeln = vbak-vbeln.
IF sy-subrc EQ 0.
*Fetch the table control data and place them in Internal Table
SELECT vbeln
posnr
matnr
matkl
arktx
FROM yvbap
INTO TABLE gt_item
WHERE vbeln = vbak-vbeln.
IF sy-subrc EQ 0.
*NO OF line in the Internal Table
DESCRIBE TABLE gt_item LINES gv_lines.
my_table-lines = gv_lines + 20.
ENDIF.
ENDIF.
*Call Screen 200.
SET SCREEN 200.
WHEN 'EXIT' OR 'BACK' OR 'CANCEL'.
*Exit from the Program
CALL TRANSACTION 'SESSION_MANAGER'.
ENDCASE.
ENDMODULE. " USER_COMMAND_0100 INPUT
module STATUS_0200 output.
SET PF-STATUS 'ZTABLECONTROL1'.
endmodule. " STATUS_0200 OUTPU
*& Module copy_data OUTPUT
text
module copy_data output.
*Fetch the current line data from the Table control
read table gt_item index my_table-current_line.
if sy-subrc eq 0.
*Populating data into screen fields
gt_item-vbeln = gt_item-vbeln.
gt_item-posnr = gt_item-posnr.
gt_item-matnr = gt_item-matnr.
gt_item-matkl = gt_item-matkl.
gt_item-arktx = gt_item-arktx.
endif.
SE51:CODE (SCREEN 100)
PROCESS BEFORE OUTPUT.
MODULE STATUS_0100.
PROCESS AFTER INPUT.
MODULE USER_COMMAND_0100.
SE51 :CODE (SCREEN 200)
PROCESS BEFORE OUTPUT.
MODULE STATUS_0200.
loop at gt_item with control my_table cursor my_table-current_line.
module copy_data.
endloop.
PROCESS AFTER INPUT.
loop at gt_item.
MODULE USER_COMMAND_0200.
endloop.
HAVE A NICE DAY..
Award points if helpful,kiran kumar.G -
Hi,
I am trying to create an ORDERS05 IDoc when a PO is created and sent to a folder via EDI processing.
Here are the steps I followed...
1. Created RFC Destination for EDI Subsystem (TCP/IP connection)
2. Created File port and included the RFC Destination in the Outbound trigger tab.
3. Created partner profile (Vendor)
a. Outbound parameters - message type ORDERS,
i. Outbound Options - receiver port - file port created in step 2
basic type - ORDERS05
ii. Message Control - Application - EF
Message Type - NEU
Process Code - ME10
4. Create PO (ME21)
when I look under Menu Header -> Messages it goes to a printer instead of the File Port I created.
Am I missing a step? Please let me know.
Thanks,
SnehaThanks Kalpanashri,
I followed what you said and this is what I received...
<i>Maintain outgoing EDI-connection data for partner 1002514
Message no. VN032
Diagnosis
The system could not locate the EDI partner agreements (outbound) for partner 1002514.
System response
You cannot use transmission medium 'EDI' with this partner.
Procedure
Maintain the EDI partner agreements for partner 1002514. Make sure to create entries for output control as well as for outbound parameters.</i> -
Is it possible to use BAPI-ALE to send an idoc using the message control?
Hi Guys
Is it possible to use BAPi-ALE to send an IDOC using a message control?
I have configured the system to send an IDOC when a outbound delivery is saved in the system.
I have done the following.
1). I am using the std BAPI-ALE interface provided by the object type LIKP.
2). I am using the method SAVEREPLICA for which an interface already exists in BDBG transaction.
3). I hace created a distribution model in BD64 and added the BAPI - LIKP and SAVEREPLICA
4). Created a partner profile ( using the generate partner profile option in the BD64 transaction )
QUESTION:
1). How do i associate the custom OUTPUT type created for Delivery ?
2). I tried to associate the custom output type in the Partner profile definition under the message control tab but i am not sure which Process code to be used? Since the partner profile was generated automatically from BD64 it has an entry for SHP_OBDLV_SAVE_REPLICA as a message type in the outbound parameters. and i am unable to find a process code for this Message type in WE41. So what process code should i use in the Message control tab against the custom output type?
3). Do i need to leave the message control tab empty without making any entry? If yes then how would the system come to know that it needs to trigger this partner profile when the custom output type is proposed by the system?
will award points for useful answers
Edited by: Workflow learner on May 29, 2008 8:49 PM"any way"
Applications such as ScreenRecycler, http://www.screenrecycler.com/ScreenRecycler.html, can do it. -
Processing log output for Purchase order
Dear All,
Iam getting some problem when iam creating an IDOC and checking in the Processing log for IDOC number.
Actually i had created one custom idoc for Purchase order since my client need only some field and in one line for header and line item, I had done it and i can see it in sdata of EDIDD structure. When i create a Purchase order and save it an idoc number is posting and I can see this file in my physical directory indeed.
Now when iam going into change mode of PO ME22n to see the Processing LOG, It is not showing the IDOC Number in Purchase order output processing log popup.The processing log will only show output based standard output control (Table NAST).
How is your IDoc being created. Via a user exit, BADI. If so then they will not appear on the processing log.
It is being created as a custom IDOC for which i had written a Z function module and given that in PO processing code which is ME10. When iam checking the standard IDOC for PO it is generating the IDOC in processing log as well.
Iam just placing my code just have a look at it and suggest if any thing needs to be done.
FUNCTION Z_IDOC_OUTPUT_ORDERS.
""Local Interface:
*" IMPORTING
*" VALUE(OBJECT) LIKE NAST STRUCTURE NAST
*" VALUE(CONTROL_RECORD_IN) LIKE EDIDC STRUCTURE EDIDC
*" EXPORTING
*" VALUE(OBJECT_TYPE) LIKE WFAS1-ASGTP
*" VALUE(CONTROL_RECORD_OUT) LIKE EDIDC STRUCTURE EDIDC
*" TABLES
*" INT_EDIDD STRUCTURE EDIDD
*" EXCEPTIONS
*" ERROR_MESSAGE_RECEIVED
*" DATA_NOT_RELEVANT_FOR_SENDING
DATA: xdruvo. "Druckvorgang
DATA: neu VALUE '1', "Neudruck
h_kappl LIKE nast-kappl, "Hilfsfeld Applikation
h_parvw LIKE ekpa-parvw, "Hilfsfeld Partnerrolle
h_ebeln LIKE ekko-ebeln. "Hilfsfeld Belegnummer
CLEAR control_record_out.
xdruvo = neu.
h_kappl = object-kappl.
h_ebeln = object-objky.
h_parvw = object-parvw.
DATA:
LT_EDIDC LIKE EDIDC OCCURS 0 WITH HEADER LINE,
L_EDIDC LIKE EDIDC,
L_SEND_FLAG,
W_SDATA LIKE EDIDD-SDATA.
DATA: T_BDI_MODEL LIKE BDI_MODEL OCCURS 0 WITH HEADER LINE.
DATA: T_EDIDC LIKE EDIDC OCCURS 0 WITH HEADER LINE.
DATA: T_EDIDD LIKE EDIDD OCCURS 0 WITH HEADER LINE.
DATA: C_MESSAGE_TYPE LIKE EDIDC-MESTYP VALUE 'ZORDER'.
*- Call function module to determine if message is to be distributed
OBJECT_TYPE = 'BUS2012'.
MOVE control_record_in TO control_record_out.
CALL FUNCTION 'ALE_MODEL_DETERMINE_IF_TO_SEND'
EXPORTING
MESSAGE_TYPE = C_MESSAGE_TYPE
IMPORTING
IDOC_MUST_BE_SENT = L_SEND_FLAG.
EXCEPTIONS
OWN_SYSTEM_NOT_DEFINED = 1
OTHERS = 2.
DATA : BEGIN OF EKKO_tAB OCCURS 0,
EBELN LIKE EKKO-EBELN,
F1 TYPE C VALUE ',',
BUKRS LIKE EKKO-BUKRS,
F2 TYPE C VALUE ',',
BSART LIKE EKKO-BSART,
F3 TYPE C VALUE ',',
LIFNR LIKE EKKO-LIFNR,
F4 TYPE C VALUE ',',
WAERS LIKE EKKO-WAERS,
F5 TYPE C VALUE ',',
BEDAT LIKE EKKO-BEDAT,
F6 TYPE C VALUE ',',
WERKS LIKE EKPO-WERKS,
F7 TYPE C VALUE ',',
PLIFZ LIKE EKPO-PLIFZ,
F8 TYPE C VALUE ',',
EBELP LIKE EKPO-EBELP,
F9 TYPE C VALUE ',',
MATNR LIKE EKPO-MATNR,
F10 TYPE C VALUE ',',
MENGE LIKE EKPO-MENGE,
F11 TYPE C VALUE ',',
MEINS LIKE EKPO-MEINS,
F12 TYPE C VALUE ',',
END OF EKKO_TAB.
DATA SDATA1 LIKE EKKO_tAB OCCURS 0 WITH HEADER LINE.
DATA EBELN LIKE EKKO-EBELN.
WRITE OBJECT-OBJKY TO EBELN.
SELECT T1EBELN T1BUKRS BSART LIFNR WAERS BEDAT WERKS PLIFZ EBELP MATNR MENGE MEINS
FROM EKKO AS T1
INNER JOIN EKPO AS T2 ON T2EBELN = t1EBELN
INTO CORRESPONDING FIELDS OF TABLE EKKO_tAB
WHERE
*T1~KAPPL = 'EF' AND
T1~EBELN = EBELN.
*T1~KSCHL = 'YEDI' .
DATA SDATA LIKE EDIDD-SDATA.
DATA NDATE LIKE SY-DATUM.
DATA NMENGE(17) TYPE C.
LOOP AT EKKO_tAB.
WRITE EKKO_TAB-MENGE TO NMENGE.
NDATE = EKKO_tAB-BEDAT + EKKO_tAB-PLIFZ.
CONCATENATE EKKO_tAB-EBELP ',' EKKO_tAB-BUKRS ',' EKKO_tAB-BSART EKKO_tAB-EBELN ',' EKKO_tAB-LIFNR ',' EKKO_tAB-BEDAT ','
NDATE ',' EKKO_tAB-BSART EKKO_tAB-EBELN ',' EKKO_tAB-EBELN ', 0,' EKKO_tAB-MATNR ','
NMENGE ',' EKKO_tAB-MEINS ',' EKKO_tAB-WERKS INTO SDATA.
MOVE SDATA TO: W_SDATA, T_EDIDD-SDATA.
MOVE 'ZORDERS' TO T_EDIDD-SEGNAM.
APPEND T_EDIDD.
ENDLOOP.
*call function 'L_IDOC_SEGMENT_CREATE'
exporting
i_segnam = 'ZORDERS'
i_sdata = w_sdata
exceptions
others = 1.
*LT_EDIDC
call function 'L_IDOC_SEND'
tables
t_comm_idoc = LT_EDIDC
exceptions
error_distribute_idoc = 1
others = 2.
*DATA T_BDI_MODEL LIKE BDI_MODEL.
WRITE OBJECT-OBJKY TO T_BDI_MODEL.
READ TABLE T_BDI_MODEL INDEX 1. " maximum 1 recipient
L_EDIDC-DIRECT = 1.
L_EDIDC-DOCNUM = DOCNUM. "***
L_EDIDC-RCVPRN = 'HCM_00_785'.
L_EDIDC-RCVPOR = 'MM_PO_FILO'.
MOVE 'ZORDER' TO L_EDIDC-MESTYP.
MOVE 'ZPURIDOC' TO L_EDIDC-IDOCTP.
MOVE 'LS' TO L_EDIDC-RCVPRT.
MOVE T_BDI_MODEL-RCVSYSTEM TO L_EDIDC-RCVPRN.
*MOVE-CORRESPONDING L_EDIDC TO W_EDIDC.
*- Distribute the iDoc
BREAK-POINT.
CALL FUNCTION 'MASTER_IDOC_DISTRIBUTE' "IN UPDATE TASK
EXPORTING
MASTER_IDOC_CONTROL = L_EDIDC
TABLES
COMMUNICATION_IDOC_CONTROL = LT_EDIDC
MASTER_IDOC_DATA = T_EDIDD
EXCEPTIONS
ERROR_IN_IDOC_CONTROL = 01
ERROR_WRITING_IDOC_STATUS = 02
ERROR_IN_IDOC_DATA = 03
SENDING_LOGICAL_SYSTEM_UNKNOWN = 04.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
READ TABLE LT_EDIDC INDEX 1.
control_record_out-direct = '1'.
CONTROL_RECORD_OUT-DOCNUM = DOCNUM. " ***
control_record_out-serial = sy-datum.
control_record_out-serial+8 = sy-uzeit.
control_record_out-mestyp = LT_EDIDC-mestyp.
control_record_out-idoctp = LT_EDIDC-idoctp.
control_record_out-SNDPRN = 'HCM_00_786'.
MOVE 'MM_PO_FILO' TO control_record_out-RCVPOR.
MOVE 'LI' TO control_record_out-SNDPRT.
MOVE 'SAPQIS' TO control_record_out-SNDPOR.
ENDFUNCTION. -
Implement callback for an asynchronous BPEL process through Java
Hi ,
I am trying to implement a callback functionality for an asynchronous BPEL process through java.
I found the code in the samples folder of SOA suite installation folder .
<SOA_HOME>\bpel\samples\tutorials\102.InvokingProcesses\rmi\com\otn\samples\async.
There is an AsyncInstanceWatchdog object which registers a callback object(in this case an object of AsyncCallbackImpl class) for a specific CONVERSATION_ID.
String convId = GUIDGenerator.generateGUID();
nm.setProperty(NormalizedMessage.CONVERSATION_ID, convId);
deliveryService.post(proc_name, "initiate", nm);
// register the callback
watchdog.registerAsyncCallback(convId, testAsyncHandler,
locator.getDomainAuth());
// start it
watchdog.start();
There is no problem till the last line. But once the BPEL process returns the control( does a callback), it throws the following error.
May 25, 2010 3:36:06 PM oracle.j2ee.rmi.RMIMessages EXCEPTION_ORIGINATES_FROM_THE_REMOTE_SERVER
WARNING: Exception returned by remote server: {0}
ORABPEL-02118
Variant not found.
The variant "output" has not been declared in the current scope. All variants must be declared in the scope before being accessed.
Please check that the variant "output" is properly declared; otherwise there may be a misspelling in the name of the variant.
at com.collaxa.cube.engine.core.Scope.getVariantRV(Scope.java:535)
at com.collaxa.cube.engine.CubeEngine.getFieldValue(CubeEngine.java:2668)
For your reference the variable output is declared in the definition of AsyncCallbackImpl (which implements the IAsyncInstanceCallback interface).
There are 2 methods defined in the AsyncCallbackImpl class.
public void onResult(Map pResultMessage) {
System.out.println("called back! ");
Iterator iTest = pResultMessage.keySet().iterator();
while (iTest.hasNext()) {
String key = (String)iTest.next();
System.out.println(XMLHelper.elementToString((Element)pResultMessage.get(key)));
public String getVariableName() {
return "output";
The variable name is same given in the sample code. And the BPEL process returns variable named output. So the name should not be a problem.
Is it because of the scope of the variable.. If so, how do I change it.
Any help would be appreciated.
Edited by: saptarishi on May 25, 2010 4:24 PM
Edited by: saptarishi on May 26, 2010 4:45 PMSolved it by some googling .... :)
Here is the link:-
[http://abhishek-soablog.blogspot.com/2008/09/orabpel-02118.html]
or
[http://beautifulwaste.blogspot.com/2008/04/calling-asynchronous-bpel-process.html]
Both gives the same solution..
In pre 10.1.3.3 release the default behaviour were to keep global variable information along with the instance information for completed BPEL processes.
In 10.1.3.3 or later, this behaviour changed for performance reasons so that the default behaviour is now, not to keep any global variables for a BPEL process once the BPEL process has completed.
You can configure this behaviour on a process level basis by using the parameter keepGlobalVariables in the bpel.xml file for the specific process:
<BPELSuitcase>
<BPELProcess src=".........." id="...........">
<configurations>
<property name="keepGlobalVariables">true</property>
</configurations>
</BPELProcess>
</BPELSuitcase>
Thanks
saptarishi -
Hi i am interested to know the configuration details for maintaining output determination.Pls send me any material to my mail id.
My id is:[email protected]
Thanks&ragardsHi Kishore Kumar,
OUTPUT DETERMINATION:
Output determination in sales and distribution allows you to control proposal using assignments and groupings in such a way that the system selects the output allowed in each sales transaction and carries out output processing according to predefined criteria.
In the SAP System there are two possible ways of controlling output determination for each output:
proposal of output from the customer master record
proposal of output using the condition technique
SAP recommends the output proposal using the condition technique. This is because it is much more flexible than taking the proposal via the customer master. For example, the condition technique makes it possible to determine the most suitable output from several different types of output.
Note
Output control occurs separately in the header and item levels.
The proposal of output for sales support outputs can only be carried out using the condition technique.
Hope you are aware of that the output determination is done for
1. Sales Activities
2.Sales Documents
3.Delviery
4.Shiping and Transportation
5.Billing
FOR Customization please follow below steps:
MENU ;- IMG --> Sale and Distribution --> Basic Functions --> Output Control -->
Output Determination --> Output Determination using Condition Technique :
Maintain Output Determination for Sales Documents :
1.Maintain Condition Tables
2.Maintain Output Types
3.Maintain Access Sequence
4.Maintain Output Determination Procedure
5.Assign the Output Determination Procedure.
Finally Create condition Record using the T.Code: VV11
Then Create the Sales Order and Save it and go to the same sales order in Change mode.
Here in Sales Order main Screen --> Click on Extras --> Output --> Header --> Click on Print Preview.
T.Code: NACE
Output Determination
Output is a form of media from a business to one of its business partners. The possible media forms are printouts, faxes, telexes, e-mails, and EDI. The output can be sent to any of the partners defined in the document. Outputs are usually in the form of order confirmations, delivery notes, invoices, and shipping notifications.
Output determinationOutputBasic fncsSDIMG
An output type is simply a type of output and it contains all the control features for the output. For ex, it defines the kind of output, which business transaction it applies to, which business partner receives the output, how the output is sent (the media), and the print program and SAP Script layout to use in formatting the output.
Output determination can be maintained as originating from the customer master record or as originating by using the condition technique.
Output proposal from the customer master record
Output proposal from the customer master record, Define outputOutput determinationOutputBasic fncsSDIMG
In this option one creates output types, such as BA00 (order confirmation). After creating the output type, one assigns the output type to an output procedure, such as DB0001. After the assignment of the output types to the procedure, the output procedure is then assigned to the customer account group. This is a simple procedure and results in the output that is placed on the customer master record being copied into the sales document.
Out put determination procedure
In SAP we can send the documents to respective partner functions through different transmission mediums. SAP uses condition technique to determine output t relevant partners with relevant transmission mediums.
Out put determination procedure has a integration with technical module, as ABAPers has to write SMART forms and FORMS to print the output , that SMART form output can be send to relevant partner function through relevant transmission mediums.
Out put determination procedure for order confirmation: (V/57)
a) Maintain condition table:
Path:
IMG
SD
Basic functions
Output control
Output determination
Output determination using the condition technique
Maintain out put determination from for sales document
Maintain condition tables
Maintain out put condition table for sales document
Here we define condition table
Ex: 007 order type (sales order types)
Save it
b) Maintain output types:
IMG
SD
Basic functions
Output control
Output determination
Output determination using the condition technique
Maintain out put determination from for sales document
Maintain out put types
Here we define out put types
Ex: AF00 -- Inquiry
AN00 quotation
BA00 Order confirmation
BA01 EDI odd response
KRMLCredit processing
LP00 -- Scheduling agreement
MAIL Internal message
RD03cash sales invoice
Choose BA00 copy it and rename as a MA00
click on details icon
click on display to change icon
then again choose MA00 click on details icon
Maintain data in general data tab
General data tab:
Access sequence: 0010(order type)
In IMG define access sequence and assign to the output type
Check access to conditions:
This indicator allows the system to read the condition records for output. If it is not been activated then system determines out put from customer master ex: By following out put determination procedure DB0001
Check cannot be changed:
This control specifies whether the out put can be changed or not
Ex: direct mailings can be changed during processing
Check multiple issuing:
This indicator allows the system to send the output multiply
Ex: sales order has been sent for 10 items again one item has been added to sales order so that business has to issue the new out put for sold to party with added line items. This indicator allows the system to send out put repeatedly.
Check partner independent out put:
During output processing when the indicator has not set then system allows only specific functions in specific partner functions
Dont write processing:
This indicator determines whether system has to write processing log for output
Default values tab:
Dispatch time:
Ex: send immediately: when carry the application this indicator determines when the output should be sent.
Transmission medium:
Ex: print out
Fax
Telex
Internal send
EDI
Simple mail
Special function
Events (SAP business workflow)
Distribution (ALE)
Tasks (SAP business work flow)
Specify the transmission medium through which the output should be sent. (Ex: print output)
Communication strategy
Specify the communication strategy if you want to send the output externally
A) Time tab:
Check timing: (Periodic job not allowed)
This indicator allows the system to carry out print program periodically.
B) PRINT NEXT TAB):
Print parameter: Ex sales org.
Specify the print parameter.
Click on mail title & Text control button under dialog structure.
Here we assign title for the mail along with relevant text Ex:-EN (English)
Processing routines control button under dialog structure.
Here we assign programs form routines & form that are written by ABAPER, they they various transmission mediums.
Ex; - Transmission medium shortest program form routine
1 print out RVADOR entry
Click on position function control button here we assign relevant partner function to relevant transmission mediums
EX: print out: SP (Sold to party)
C) Maintain access sequences:
Here we define Access sequence.
EX: 0010 & Assign the condition tables to this output.
D) Assign out put types to partner function:
Here we assign output types along with transmission mediums to relevant partner functions.
EX: Out put type Transmission medium
MA00 1
2
6
A
MAIL 7
E) Maintain output determination procedure:
Here we define output determination procedure
Ex: V10000 - Order output
V05000 - Inquiry output
V06000 - quotation output
V10001 - Cash sales output
Choose output determination procedure EX; V10000, copy it& rename it as MA0000
Assign output type MA00 by going control date section.
Save it.
F) Assign output determination procedures;
Allocate sales document Header.
_ Choose sales document type OR & Assign output determination procedure i.e MA0000 & Assign output type MA00.
Assign sales document items.
-Choose item category TAN & Assign output determination procedure Ex: Ma0000
- save it & exit.
Maintain output records (vv11)
Path:
Logistic > S&D > Master data > output > sales document > VV11 Create
Specify output MA00, Click on Key combination & specify sales document type (OR), partner function (sp) transmission medium (1) dispatch type (4) language (EN)
Click on communication button on application tool bar
Specify output device LOCL or LP01
Check print immediately check release after output
Save it
Go to Va01 raise the sales order
Go to extra button output header edit.
Specify output type: MA00 partner function
Select line, click on communication methods
Specify logical destination
Check print immediately
Check release after output
go back save it & exit
Go to VA02, Go to Extras output header print preview
Check out (order confirmation )
Please Reward If Really Helpful,
Thanks and Regards,
Sateesh.Kandula -
Please send one exicuted program example of inbound idoc process
Dear Friends,
I am facing one problem to process inbound idoc process.Please example send anybody ?
I have faced problem in standalone process to do inbound idoc process.
iam waiting for your valuble response.
Definitly best answer will get best reward.
Regards.
Sridhar Menda.Hi Sridhar,
Here is a example of program for inbound idoc process.
Example Program to Process an IDoc
The Example Program to Process an IDoc shows how the fictitious message type XAMPLE, communicated with IDocs of type XAMPLE01, is processed using the inbound function module Idoc_Input_Xample. The IDoc type has a header segment, E1xhead, and any number of item segments E1xitem. The data from the IDoc is written to two database tables, XHEAD and XITEM respectively. XHEAD and XITEM contain the same field names as E1xhead and E1xitem respectively. The fields names and data types are shown in the following two tables:
Field Name in XHEAD
Docmnt_no
Date
Currency
Country
Description
Document number
Date
Currency
Country
Type in e1xhead
CHAR
CHAR
CHAR
CHAR
Type in XHEAD
NUMC
DATS
CUKY
CHAR
Field Name in XITEM
Item_no
Materialid
Descript
Unit
Quantity
Value
Ship_Inst
Description
Item number
Material number
Material description
Unit of measure
Quantity
Value
Shipping instructions
Type in e1xitem
CHAR
CHAR
CHAR
CHAR
CHAR
CHAR
CHAR
Type in xitem
NUMC
CHAR
CHAR
UNIT
QUAN
CURR
UNIT
The data on the database is assigned a new document number (field DOCMNT_NO) using number assignment. The field DOCMNT_NO is not stored in the newly created table XHEAD.
FUNCTION·IDOC_INPUT_XAMPLE.
*"Local·interface:
*"·······IMPORTING
*"·············VALUE(INPUT_METHOD)·LIKE··BDWFAP_PAR-INPUTMETHD
*"·············VALUE(MASS_PROCESSING)·LIKE··BDWFAP_PAR-MASS_PROC
*"·······EXPORTING
*"·············VALUE(WORKFLOW_RESULT)·LIKE··BDWF_PARAM-RESULT
*"·············VALUE(APPLICATION_VARIABLE)·LIKE··BDWF_PARAM-APPL_VAR
*"·············VALUE(IN_UPDATE_TASK)·LIKE··BDWFAP_PAR-UPDATETASK
*"·············VALUE(CALL_TRANSACTION_DONE)·LIKE··BDWFAP_PAR-CALLTRANS
*"·······TABLES
*"··············IDOC_CONTRL·STRUCTURE··EDIDC
*"··············IDOC_DATA·STRUCTURE··EDIDD
*"··············IDOC_STATUS·STRUCTURE··BDIDOCSTAT
*"··············RETURN_VARIABLES·STRUCTURE··BDWFRETVAR
*"··············SERIALIZATION_INFO·STRUCTURE··BDI_SER
*"·······EXCEPTIONS
*"··············WRONG_FUNCTION_CALLED
·05·July·1996·----
*·Example·function·module·for·processing·inbound·IDocs·for·ALE·or·EDI.
*·This·example·applies·for·processing
*···with····-··one·IDoc·at·a·time
*···without·-··serialization
*···········-··customer-exits
*···········-··calling·an·ALE-enabled·transaction
*···········-··mass·processing·(more·than·one·IDoc·at·a·time)
·Naming·conventions·----
*·Internal·tables·start·with·'t_'
*·Internal·field·strings·start·with·'f_'
*·>>·The·following·line·must·appear·in·the·global·part·of·your
*·>>·function·group:
*····include·mbdconwf.············"Report·containing·the·ALE·constants.
*·The·ALE·constants·start·with·'c_'.
··DATA:·SUBRC·LIKE·SY-SUBRC,
········OBJECT_NUMBER·LIKE·XHEAD-DOCMNT_NO.
*·Initialize·variables
··SUBRC·=·0.
*·Read·the·IDoc's·control·record
··READ·TABLE·IDOC_CONTRL·INDEX·1.
*·Process·the·IDoc·and·post·the·data·to·the·database
··PERFORM·IDOC_PROCESS_XAMPLE·TABLES···IDOC_DATA
·······································IDOC_STATUS
······························USING····IDOC_CONTRL
······························CHANGING·OBJECT_NUMBER
·······································SUBRC.
*·Fill·the·ALE·export·parameters
··CLEAR·IN_UPDATE_TASK.
··CLEAR·CALL_TRANSACTION_DONE.·········"Call·Transaction·is·not·used.
··IF·SUBRC·<>·0.·······················"Error·occurred
····WORKFLOW_RESULT·=·C_WF_RESULT_ERROR.
····RETURN_VARIABLES-WF_PARAM·=·C_WF_PAR_ERROR_IDOCS.
····RETURN_VARIABLES-DOC_NUMBER·=·IDOC_CONTRL-DOCNUM.
····APPEND·RETURN_VARIABLES.
··ELSE.································"IDoc·processed·successfully
····WORKFLOW_RESULT·=·C_WF_RESULT_OK.
····RETURN_VARIABLES-WF_PARAM·=·C_WF_PAR_PROCESSED_IDOCS.
····RETURN_VARIABLES-DOC_NUMBER·=·IDOC_CONTRL-DOCNUM.
····APPEND·RETURN_VARIABLES.
····RETURN_VARIABLES-WF_PARAM·=·C_WF_PAR_APPL_OBJECTS.
····RETURN_VARIABLES-DOC_NUMBER·=·OBJECT_NUMBER.
····APPEND·RETURN_VARIABLES.
··ELSE.
ENDFUNCTION.
·······FORM·IDOC_PROCESS_XAMPLE······································
··This·routine·creates·an·application·document·based·on·the·IDoc's···
··contents.·Object_Number·contains·the·new·document's·number.··········If·an·error·occurs,·subrc·is·non-zero,·t_idoc_status·is·filled.·······Note:·if·more·than·one·error·is·detected,·t_idoc_status·contains···
········more·than·one·status·record.·································
··-->··F_IDOC_CONTRL····IDoc·control·record··························
··-->··T_IDOC_DATA······IDoc·data·records····························
··<--··T_IDOC_STATUS····IDoc·status·records··························
··<--··OBJECT_NUMBER····Created·document's·number····················
··<--··SUBRC············Return·code··································
FORM·IDOC_PROCESS_XAMPLE
·······TABLES···T_IDOC_DATA····STRUCTURE·EDIDD
················T_IDOC_STATUS··STRUCTURE·BDIDOCSTAT
·······USING····F_IDOC_CONTRL··STRUCTURE·EDIDC
·······CHANGING·OBJECT_NUMBER··LIKE·XHEAD-DOCMNT_NO
················SUBRC··········LIKE·SY-SUBRC.
*·Internal·field·string·for·the·document·header.
··DATA:·F_XHEAD·LIKE·XHEAD.
*·Internal·table·for·the·document·items.
··DATA:·T_XITEM·LIKE·XITEM·OCCURS·0·WITH·HEADER·LINE.
*·Number·given·to·the·created·document·DOCUMENT_NUMBER·LIKE·F_XHEAD-DOCMNT_NO.
*·Move·the·data·in·the·IDoc·to·the·internal·structures/tables
*·f_xhead·and·t_xitem.
··PERFORM·IDOC_INTERPRET·TABLES···T_IDOC_DATA
··································T_XITEM
··································T_IDOC_STATUS
·························USING····F_IDOC_CONTRL
·························CHANGING·F_XHEAD
··································SUBRC.
*·Create·the·application·object·if·no·error·occurred·so·far.
··IF·SUBRC·=·0.
*···This·fictitious·function·module·creates·a·new·object·based·on·the
*···data·that·was·read·from·the·IDoc.·The·new·object's·ID·is·returned
*···in·the·parameter·'document_number'.
*···The·function·module·checks·that·the·data·is·correct,·and·raises
*···an·exception·if·an·error·is·detected.
····CALL·FUNCTION·'XAMPLE_OBJECT_CREATE'
·········EXPORTING
··············XHEAD···········=·F_XHEAD
·········IMPORTING
··············DOCUMENT_NUMBER·=·DOCUMENT_NUMBER
·········TABLES
··············XITEM···········=·T_XITEM
·········EXCEPTIONS
··············OTHERS··········=·1.
····IF·SY-SUBRC·<>·0.
······SUBRC·=·1.
*·····Put·the·error·message·into·'t_idoc_status'
······PERFORM·STATUS_FILL_SY_ERROR
················TABLES···T_IDOC_STATUS
················USING····T_IDOC_DATA
·························SY
·························''············"Field·name
·························'idoc_process_xample'.·········"Form·routine
····ELSE.
*·····Fill·the·remaining·export·parameters
······OBJECT_NUMBER·=·DOCUMENT_NUMBER.··········"New·document's·number
······t_idoc_status-docnum·=·f_idoc_contrl-docnum.
······t_idoc_status-status·=·c_idoc_status_ok.
······t_idoc_status-msgty··=·'S'.
······t_idoc_status-msgid··=·your_msgid.·"Global·variable.
······t_idoc_status-msgno··=·msgno_success."Global·variable.
······t_idoc_status-msgv1··=·object_number.
······APPEND·T_IDOC_STATUS.
····ENDIF.·····························"if·sy-subrc·<>·0.
··ENDIF.·····························"if·subrc·=·0.
ENDFORM.
·······FORM·IDOC_INTERPRET···········································
··This·routine·checks·that·the·correct·message·type·is·being·used,···
··and·then·converts·and·moves·the·data·from·the·IDoc·segments·to·the·
··internal·structure·f_xhead·and·internal·table·t_xitem.·············
··If·an·error·occurs,·t_idoc_status·is·filled·an·subrc·<>·0.·········
··-->··T_IDOC_STATUS·················································
··-->··T_XITEM·······················································
··-->··F_IDOC_DATA···················································
··-->··F_XHEAD·······················································
··-->··SUBRC·························································
FORM·IDOC_INTERPRET·TABLES···T_IDOC_DATA····STRUCTURE·EDIDD
·····························T_XITEM········STRUCTURE·XITEM
·····························T_IDOC_STATUS··STRUCTURE·BDIDOCSTAT
····················USING····F_IDOC_CONTRL··STRUCTURE·EDIDC
····················CHANGING·F_XHEAD········STRUCTURE·XHEAD
·····························SUBRC··········LIKE·SY-SUBRC.
*·Check·that·the·IDoc·contains·the·correct·message·type.
*··Note:·if·your·message·type·is·reducible,·check·field·'idoctp'
*·······(IDoc·type)·instead·of·'mestyp'.
··IF·F_IDOC_CONTRL-MESTYP·<>·'XAMPLE'.
····MESSAGE·ID······YOUR_MSGID···············"Global·variable
············TYPE····'E'
············NUMBER··MSGNO_WRONG_FUNCTION·····"Global·variable
············WITH····F_IDOC_CONTRL-MESTYP·····"message·type
····················'IDOC_INPUT_XAMPLE'······"Your·function·module.
····················F_IDOC_CONTRL-SNDPRT·····"Sender·partner·type
····················F_IDOC_CONTRL-SNDPRN·····"Sender·number.
············RAISING·WRONG_FUNCTION_CALLED.
··ENDIF.
*·Loop·through·the·IDoc's·segments·and·convert·the·data·from·the·IDoc
*·format·to·the·internal·format.
··LOOP·AT·T_IDOC_DATA·WHERE·DOCNUM·=·F_IDOC_CONTRL-DOCNUM.
····CASE·T_IDOC_DATA-SEGNAM.
······WHEN·'E1XHEAD'.
········PERFORM·E1XHEAD_PROCESS·TABLES···T_IDOC_STATUS
································USING····T_IDOC_DATA
································CHANGING·F_XHEAD
·········································SUBRC.
······WHEN·'E1XITEM'.
········PERFORM·E1XITEM_PROCESS·TABLES···T_XITEM
·········································T_IDOC_STATUS
································USING····F_XHEAD-CURRENCY
·········································T_IDOC_DATA
································CHANGING·SUBRC.
····ENDCASE.
··ENDLOOP.
ENDFORM.
·······FORM·E1XHEAD_PROCESS··········································
··This·routine·fills·'f_xhead'·out·of·segment·e1xhead.·················If·an·error·occurs,·subrc·is·non-zero,·t_idoc_status·is·filled.····*
··-->··F_IDOC_DATA·······IDoc·segment·containing·e1xhead·fields······
··<--··F_XHEAD···········Internal·structure·containing·doc.·header···
··<--··T_IDOC_STATUS·····Status·fields·for·error·handling············
··<--··SUBRC·············Return·code:·non-zero·if·an·error·occurred··
FORM·E1XHEAD_PROCESS·TABLES···T_IDOC_STATUS··STRUCTURE·BDIDOCSTAT
·····················USING····F_IDOC_DATA····STRUCTURE·EDIDD
·····················CHANGING·F_XHEAD········STRUCTURE·XHEAD
······························SUBRC··········LIKE·SY-SUBRC.
··DATA:·F_E1XHEAD·LIKE·E1XHEAD.
··F_E1XHEAD·=·F_IDOC_DATA-SDATA.
*·Process·fields·that·need·conversion·from·ISO-codes·to·SAP-codes
··PERFORM·E1XHEAD_CODES_ISO_TO_SAP
·········TABLES···T_IDOC_STATUS
·········USING····F_E1XHEAD
··················F_IDOC_DATA
·········CHANGING·F_XHEAD
··················SUBRC.
*·Process·fields·containing·dates·or·times
··PERFORM·E1XHEAD_DATE_TIME·USING····F_E1XHEAD
····························CHANGING·F_XHEAD.
ENDFORM.·······························"e1xhead_process
·······FORM·E1XITEM_PROCESS··········································
··This·routine·converts·the·data·in·the·segment·'e1xitem'·for········
··to·the·format·of·table·'t_xitem'·and·appends·it·to·the·table.········If·an·error·occurs,·subrc·is·non-zero,·t_idoc_status·is·filled.····*
··-->··F_IDOC_DATA······IDoc·segment·································
··<--··T_XITEM··········Document·items·to·be·updated·to·database·····
··<--··T_IDOC_STATUS····Status·fields·filled·if·an·error·occurred····
··<--··SUBRC············Return·code:·0·if·all·OK·····················
FORM·E1XITEM_PROCESS·TABLES···T_XITEM·······STRUCTURE·XITEM
······························T_IDOC_STATUS·STRUCTURE·BDIDOCSTAT
·····················USING····CURRENCY······LIKE·XHEAD-CURRENCY
······························F_IDOC_DATA···STRUCTURE·EDIDD
·····················CHANGING·SUBRC·········LIKE·SY-SUBRC.
··DATA:·F_E1XITEM·LIKE·E1XITEM.
··F_E1XITEM·=·F_IDOC_DATA-SDATA.
*·Fields·of·type·CHAR,·NUMC,·QUAN·need·no·conversion.
··T_XITEM-ITEM_NO····=·F_E1XITEM-ITEM_NO.
··T_XITEM-MATERIALID·=·F_E1XITEM-MATERIALID.
··T_XITEM-DESCRIPT···=·F_E1XITEM-DESCRIPT.
··T_XITEM-QUANTITY···=·F_E1XITEM-QUANTITY.
*·Process·fields·that·need·conversion·from·ISO-codes·to·SAP-codes
··PERFORM·E1XHEAD_CODES_ISO_TO_SAP
·········TABLES···T_IDOC_STATUS
·········USING····F_E1XHEAD
··················F_IDOC_DATA
·········CHANGING·F_XHEAD
··················SUBRC.
*·Process·fields·that·contain·monetary·values
··PERFORM·E1XITEM_VALUE_IDOC_TO_SAP·TABLES···T_IDOC_STATUS
····································USING····F_E1XITEM
·············································CURRENCY
·············································F_IDOC_DATA
····································CHANGING·T_XITEM
·············································SUBRC.
··APPEND·T_XITEM.
ENDFORM.
·······FORM·E1XHEAD_CODES_ISO_TO_SAP·································
··Converts·ISO-Codes·in·f_e1xhead·to·SAP-codes·in·f_xhead.·············f_idoc_data,·t_idoc_status·and·subrc·are·used·for·error·handling.··*
FORM·E1XHEAD_CODES_ISO_TO_SAP
·······TABLES···T_IDOC_STATUS·STRUCTURE·BDIDOCSTAT
·······USING····F_E1XHEAD·····STRUCTURE·E1XHEAD
················F_IDOC_DATA···STRUCTURE·EDIDD
·······CHANGING·F_XHEAD·······STRUCTURE·XHEAD
················SUBRC.
*·f_xhead-currency···Type·CUKY·=>·convert·ISO-Code·to·SAP-Code.
··PERFORM·CURRENCY_CODE_ISO_TO_SAP
·········TABLES···T_IDOC_STATUS
·········USING····F_E1XHEAD-CURRENCY
··················F_IDOC_DATA
··················'CURRENCY'
·········CHANGING·F_XHEAD-CURRENCY
··················SUBRC.
··CHECK·SUBRC·=·0.
*·f_xhead-country···Contains·a·country·=>·convert·from·ISO·to·SAP·code.
··PERFORM·COUNTRY_CODE_ISO_TO_SAP
·········TABLES···T_IDOC_STATUS
·········USING····F_E1XHEAD-COUNTRY
··················F_IDOC_DATA
··················'COUNTRY'
·········CHANGING·F_XHEAD-COUNTRY
··················SUBRC.
ENDFORM.
·······FORM·E1XITEM_CODES_ISO_TO_SAP·································
··Converts·ISO-Codes·in·f_e1xitem·to·SAP-codes·in·f_xitem············
··f_idoc_data,·t_idoc_status·and·subrc·are·used·for·error·handling.··
FORM·E1XITEM_CODES_ISO_TO_SAP
·······TABLES···T_IDOC_STATUS·STRUCTURE·BDIDOCSTAT
·······USING····F_E1XITEM·····STRUCTURE·E1XITEM
················F_IDOC_DATA···STRUCTURE·EDIDD
·······CHANGING·F_XITEM·······STRUCTURE·XITEM
················SUBRC·········LIKE·SY-SUBRC.
*·f_xitem-unit·······Type·UNIT·=>·convert·ISO-Code·to·SAP-Code.
··PERFORM·UNIT_OF_MEASURE_ISO_TO_SAP
·········TABLES···T_IDOC_STATUS
·········USING····F_E1XITEM-UNIT
··················F_IDOC_DATA
··················'unit'
·········CHANGING·F_XITEM-UNIT
··················SUBRC.
*·f_xitem-ship_inst··Contains·shipping·instructions·=>·ISO·to·SAP·code.
··PERFORM·SHIPPING_INSTRUCT_ISO_TO_SAP
·········TABLES···T_IDOC_STATUS
·········USING····F_E1XITEM-SHIP_INST
··················F_IDOC_DATA
··················'ship_inst'
·········CHANGING·F_XITEM-SHIP_INST
··················SUBRC.
ENDFORM.
·······FORM·E1XITEM_VALUE_IDOC_TO_SAP································
··Converts·fields·containing·monetary·values·in·f_e1xitem·to·········
··the·internal·representation·in·f_xitem.······························f_idoc_data,·t_idoc_status·and·subrc·are·used·for·error·handling.··*
FORM·E1XITEM_VALUE_IDOC_TO_SAP
·······TABLES···T_IDOC_STATUS·STRUCTURE·BDIDOCSTAT
·······USING····F_E1XITEM·····STRUCTURE·E1XITEM
················CURRENCY······LIKE·XHEAD-CURRENCY
················F_IDOC_DATA···STRUCTURE·EDIDD
·······CHANGING·F_XITEM·······STRUCTURE·XITEM
················SUBRC·········LIKE·SY-SUBRC.
*·f_xitem-value····Type·CURR·=>·convert·IDoc·amount·to·internal·amount.
*·N.B.·the·currency·code·used·here·must·be·the·SAP-internal·one,·not
*······the·one·contained·in·the·IDoc!
··CALL·FUNCTION·'CURRENCY_AMOUNT_IDOC_TO_SAP'
·······EXPORTING
············CURRENCY····=·CURRENCY
············IDOC_AMOUNT·=·F_E1XITEM-VALUE
·······IMPORTING
············SAP_AMOUNT··=·F_XITEM-VALUE
·······EXCEPTIONS
············OTHERS······=·1.
··IF·SY-SUBRC·<>·0.
····SUBRC·=·1.
*···Put·the·error·message·into·'t_idoc_status'
····PERFORM·STATUS_FILL_SY_ERROR
··············TABLES···T_IDOC_STATUS
··············USING····F_IDOC_DATA
·······················SY
·······················'value'·········"Field·name
·······················'e1xitem_value_idoc_to_sap'.······"Form·routine
··ENDIF.·······························"if·sy-subrc·<>·0.
ENDFORM.
·······FORM·E1XHEAD_DATE_TIME········································
··Moves·date·and·time·fields·in·f_e1xhead·to·the·fields·in·f_xhead.··
FORM·E1XHEAD_DATE_TIME·USING····F_E1XHEAD·STRUCTURE·E1XHEAD
·······················CHANGING·F_XHEAD·STRUCTURE·XHEAD.
*·f_xhead-date····Type·DATS·=>·initial·value·is·not·'blank'.
··IF·E1XHEAD-DATE·IS·INITIAL.
····CLEAR·F_XHEAD-DATE.
····F_XHEAD-DATE·=·F_E1XHEAD-DATE.
··ENDIF.
ENDFORM.
·······FORM·CURRENCY_CODE_ISO_TO_SAP·································
··Converts·ISO·currency·code·'iso_currency_code'·to·SAP·code·in······
··'sap_currency_code'················································
··f_idoc_data,·field_name,·t_idoc_status·and·subrc·are·used·for······
··for·error·handling.················································
FORM·CURRENCY_CODE_ISO_TO_SAP
·······TABLES···T_IDOC_STATUS·····STRUCTURE·BDIDOCSTAT
·······USING····ISO_CURRENCY_CODE·LIKE·TCURC-ISOCD
················F_IDOC_DATA·······STRUCTURE·EDIDD
················FIELD_NAME········LIKE·BDIDOCSTAT-SEGFLD
·······CHANGING·SAP_CURRENCY_CODE·LIKE·TCURC-WAERS
················SUBRC·············LIKE·SY-SUBRC.
··IF·ISO_CURRENCY_CODE·IS·INITIAL.
····CLEAR·SAP_CURRENCY_CODE.
··ELSE.
····CALL·FUNCTION·'CURRENCY_CODE_ISO_TO_SAP'
·········EXPORTING
··············ISO_CODE·=·ISO_CURRENCY_CODE
·········IMPORTING
··············SAP_CODE·=·SAP_CURRENCY_CODE
·········EXCEPTIONS
··············OTHERS···=·1.
····IF·SY-SUBRC·<>·0.
······SUBRC·=·1.
*·····Put·the·error·message·into·'t_idoc_status'
······PERFORM·STATUS_FILL_SY_ERROR
················TABLES···T_IDOC_STATUS
················USING····F_IDOC_DATA
·························SY
·························FIELD_NAME
·························'currency_code_iso_to_sap'.·····"Form·routine
··ENDIF.·····························"if·sy-subrc·<>·0.
··ENDIF.·······························"if·iso_currency_code·is·initial.
ENDFORM.
·······FORM·CURRENCY_CODE_ISO_TO_SAP·································
··Converts·ISO·currency·code·'iso_currency_code'·to·SAP·code·in······
··'sap_currency_code'················································
··f_idoc_data,·field_name,·t_idoc_status·and·subrc·are·used·for······
··for·error·handling.················································
FORM·COUNTRY_CODE_ISO_TO_SAP
·······TABLES···T_IDOC_STATUS····STRUCTURE·BDIDOCSTAT
·······USING····ISO_COUNTRY_CODE·LIKE·T005-INTCA
················F_IDOC_DATA······STRUCTURE·EDIDD
················FIELD_NAME·······LIKE·BDIDOCSTAT-SEGFLD
·······CHANGING·SAP_COUNTRY_CODE·LIKE·T005-LAND1
················SUBRC············LIKE·SY-SUBRC.
*·Only·convert·if·the·field·is·not·initial.
··IF·ISO_COUNTRY_CODE·IS·INITIAL.
····CLEAR·SAP_COUNTRY_CODE.
··ELSE.
····CALL·FUNCTION·'COUNTRY_CODE_ISO_TO_SAP'
·········EXPORTING
··············ISO_CODE·=·ISO_COUNTRY_CODE
·········IMPORTING
··············SAP_CODE·=·SAP_COUNTRY_CODE
·········EXCEPTIONS
··············OTHERS···=·1.
····IF·SY-SUBRC·<>·0.
······SUBRC·=·1.
*·····Put·the·error·message·into·'t_idoc_status'
······PERFORM·STATUS_FILL_SY_ERROR
················TABLES···T_IDOC_STATUS
················USING····F_IDOC_DATA
·························SY
·························FIELD_NAME
·························'country_code_iso_to_sap'.······"Form·routine
··ENDIF.·····························"if·sy-subrc·<>·0.
··ENDIF.·······························"if·iso_country_code·is·initial.
ENDFORM.
·······FORM·UNIT_OF_MEASURE_ISO_TO_SAP·······························
··Converts·ISO·unit·of·measure·code·'iso_unit_of_measure'·to·SAP·····
··code·in·'sap_unit_of_measure'.·····································
··f_idoc_data,·field_name,·t_idoc_status·and·subrc·are·used·for······
··for·error·handling.················································
FORM·UNIT_OF_MEASURE_ISO_TO_SAP
·······TABLES···T_IDOC_STATUS·······STRUCTURE·BDIDOCSTAT
·······USING····ISO_UNIT_OF_MEASURE·LIKE·T006-ISOCODE
················F_IDOC_DATA·········STRUCTURE·EDIDD
················FIELD_NAME··········LIKE·BDIDOCSTAT-SEGFLD
·······CHANGING·SAP_UNIT_OF_MEASURE·LIKE·T006-MSEHI
················SUBRC···············LIKE·SY-SUBRC.
*·Only·convert·the·field·if·it·is·not·empty.
··IF·ISO_UNIT_OF_MEASURE·IS·INITIAL.
····CLEAR·SAP_UNIT_OF_MEASURE.
··ELSE.
····CALL·FUNCTION·'UNIT_OF_MEASURE_ISO_TO_SAP'
·········EXPORTING
··············ISO_CODE·=·ISO_UNIT_OF_MEASURE
·········IMPORTING
··············SAP_CODE·=·SAP_UNIT_OF_MEASURE
·········EXCEPTIONS
··············OTHERS···=·1.
····IF·SY-SUBRC·<>·0.
······SUBRC·=·1.
*·····Put·the·error·message·into·'t_idoc_status'
······PERFORM·STATUS_FILL_SY_ERROR
················TABLES···T_IDOC_STATUS
················USING····F_IDOC_DATA
·························SY
·························FIELD_NAME
·························'unit_of_measure_iso_to_sap'.··"Form·routine
··ENDIF.·····························"if·sy-subrc·<>·0.
··ENDIF.··················"if·iso_unit_of_measure_code·is·initial.
ENDFORM.
·······FORM·SHIPPING_INSTRUCT_ISO_TO_SAP·····························
··Converts·ISO·package·code·'iso_package_type'·to·SAP·code·for·······
··purchasing·shipping·instructions·in·'sap_shipping_instructions'.···
··f_idoc_data,·field_name,·t_idoc_status·and·subrc·are·used·for······
··for·error·handling.················································
FORM·SHIPPING_INSTRUCT_ISO_TO_SAP
·······TABLES···T_IDOC_STATUS·············STRUCTURE·BDIDOCSTAT
·······USING····ISO_PACKAGE_TYPE··········LIKE·T027A-IVERS
················F_IDOC_DATA···············STRUCTURE·EDIDD
················FIELD_NAME················LIKE·BDIDOCSTAT-SEGFLD
·······CHANGING·SAP_SHIPPING_INSTRUCTIONS·LIKE·T027A-EVERS
················SUBRC·····················LIKE·SY-SUBRC.
*·Only·convert·the·field·if·it·is·not·empty.
··IF·ISO_PACKAGE_TYPE·IS·INITIAL.
····CLEAR·SAP_SHIPPING_INSTRUCTIONS.
··ELSE.
····CALL·FUNCTION·'ISO_TO_SAP_PACKAGE_TYPE_CODE'
·········EXPORTING
··············ISO_CODE·=·ISO_PACKAGE_TYPE
·········IMPORTING
··············SAP_CODE·=·SAP_SHIPPING_INSTRUCTIONS
·········EXCEPTIONS
··············OTHERS···=·1.
····IF·SY-SUBRC·<>·0.
······SUBRC·=·1.
*·····Put·the·error·message·into·'t_idoc_status'
······PERFORM·STATUS_FILL_SY_ERROR
················TABLES···T_IDOC_STATUS
················USING····F_IDOC_DATA
·························SY
·························FIELD_NAME
·························'shipping_instruct_iso_to_sap'.·"Form·rout.
··ENDIF.·····························"if·sy-subrc·<>·0.
··ENDIF.··················"if·iso_unit_of_measure_code·is·initial.
ENDFORM.
·······FORM·STATUS_FILL_SY_ERROR·····································
··Fills·the·structure·t_idoc_status·with·the·import·parameters·······
··plus·the·relevant·sy·fields.·······································
··-->··IDOC_NUMBER···········IDoc·number·····························
··-->··SEGNUM················Segment·number··························
··-->··SEGFLD················Field·in·segment························
··-->··ROUTID················Name·of·routine·························
··<--··T_IDOC_STATUS·········Status·fields···························
FORM·STATUS_FILL_SY_ERROR·TABLES···T_IDOC_STATUS·STRUCTURE·BDIDOCSTAT
··························USING····F_IDOC_DATA···STRUCTURE·EDIDD
···································VALUE(F_SY)···STRUCTURE·SY
···································SEGFLD········LIKE·BDIDOCSTAT-SEGFLD
···································ROUTID········LIKE·BDIDOCSTAT-ROUTID.
··t_idoc_status-docnum·=·f_idoc_data-docnum.
··t_idoc_status-status·=·c_idoc_status_error.
··t_idoc_status-msgty··=·f_sy-msgty.
··t_idoc_status-msgid··=·f_sy-msgid.
··T_IDOC_STATUS-MSGNO··=·F_SY-MSGNO.
··t_idoc_status-msgv1··=·f_sy-msgv1.
··t_idoc_status-msgv2··=·f_sy-msgv2.
··t_idoc_status-msgv3··=·f_sy-msgv3.
··t_idoc_status-msgv4··=·f_sy-msgv4.
··t_idoc_status-segnum·=·f_idoc_data-segnum.
··t_idoc_status-segfld·=·segfld.
··t_idoc_status-repid··=·f_sy-repid.
··t_idoc_status-routid·=·routid.
··APPEND·T_IDOC_STATUS.
ENDFORM.
Also Check out these docs.
http://help.sap.com/saphelp_nw04/helpdata/en/dc/6b7ee143d711d1893e0000e8323c4f/frameset.htm
http://help.sap.com/saphelp_nw04/helpdata/en/1a/178ad32d3011d3bc3500105a6588b2/frameset.htm
Dont forget to reward pts, if it helps ;>)
Regards,
Rakesh.
Maybe you are looking for
-
Need help with hyperlinks in InDesign CS3 to PDF
I've done everything I can see in the forums, in the InDesign help and in InDesign for Dummies... but other than spelling out the entire URL in the text (IE where you can see it in the document) I cannot get a URL hyperlink to work after exporting it
-
How do i change the title to my photo album:(ios7)
How do I change the name of the title for one of my photo albums in ios 7
-
Why does not the text "Powered by Adobe Forms Central" fästän man has paid form
Why does not the text "Powered by Adobe Forms Central" fästän man has paid form [email protected]
-
SharePoint Branding - New Custom Item Style does not appear on dropdown of Item Styles
We are using custom styles on our SharePoint site. We need to create a new item style for a user requirement. I have created my new item style on the xml file using the existing Visual Studio solution then deployed it on our site. Unfortunately, I co
-
Hi I have created a Z Table. i have updated this table with few entries. Now again i have created few more fields in this Table. While activating, an error is pronpting .. "table is not yet classified". I have used SE14 to adjust the table and activa