Idoc (posting program)
what is the posting program in idoc and what is the message type give me the exact definitions?
Hi Kiran,
The posting program in the mapping program which is used to do the mapping between the message types.
Check out the following links for further understanding of IDocs:
/people/ravikumar.allampallam/blog/2005/02/23/configuration-steps-required-for-posting-idocsxi
/people/prateek.shah/blog/2005/06/08/introduction-to-idoc-xi-file-scenario-and-complete-walk-through-for-starters
Regards,
Archana
Similar Messages
-
IDOC Posting Program for Vendor Master
Hi Guys,
Please give me the Sample Posting Program Vendor master Idoc.
Thanks a lot in advance.
Prabhu.rsearch with BD* in SE93
BD14 - Outbound program for vendor master
BD10 - Outbound Material master
BD12 - Outbound customer master -
Outbound idoc posting program Creation
Hi,
i want to create a posting program for my new idoc/segment, can anybody give some standerd posting program.HI,
use FM: IDOC_OUTBOUND_WRITE_TO_DB
Fill int_edidd with your IDoc Data and int_EDIDC with the IDoc control.
maybe it´s useful! -
Performance Improve of IDOC POSTING
CAn you give some tips for IDOC posting PROGRAM Improvement... As One of my program is taking long time while POSTING IDOC.
Hi chinmay,
1. data which is posted thru idoc
finally goes thru some standard bapi,
which ultimately posts the data.
2. bapis are standard sap code,
which do a lot of vlaidations
before putting data into tables.
3. Hence, i don't think,
we can much upon their improvement !
regards,
amit m. -
Idoc inbound posting program for CRMXIF_PARTNER_SAVE_M02
Hi Abapers,
Im working on datamigration for Business partner using Lsmw idoc method and getting Idoc status 53 with message crmxif_partner_save function module generated successfully with BP number but some of the entries of the fields is not getting inserted into master table BUT000,can any one put a tip of light what exactly is going wrong as i have taken all necesscary steps if any one can share their views like how to trace the posting program for inbound idoc crmxif_partner_save_m02 and where exactly the data is getting inserted into database table BUT000.
Will appreciate all your help.Hello,
at first, that would be very useful if you could say which fields/segments exactly are not transfered...
there can be lot's of reasonsd why the fields are not inserted with 53 result status, but in general you can try several points:
1. check if all the fields you want to transport are properly mapped
2. you can try to debug, if indeed your mapping rules are working during convertion
3. do you want to fill this fields in insert (to create new BP) or update mode (udate already created BP)?
etc.
regards, -
Hello Everyone,
Can anyone tell me as to how a posting program is create in ALE IDOC.As we have predefined posting program like BD10,BD11 etc.How do we create one for the custom made IDOCS.I expect a speedy response.
Thanking you in advance.
Regards,
Sirisha.Create new segments -- WE31
Create new IDOCs -- WE30
Create a new message type -- WE81
Link message type with IDOC type -- WE82
<b>Outbound program LOGIC</b>-<b><u>Posting program</u></b> with example
Select data from application tables
Fill data into IDOC
Pass IDOC to ALE layer
(Call function MASTER_IDOC_DISTRIBUTE)
Commit Work
REPORT zale_example.
Parameter for material number for getting related information
PARAMETER : s_matnr TYPE matnr.
Internal table for populating the control information for the IDOC
DATA : i_edidc TYPE STANDARD TABLE OF edidc INITIAL SIZE 0
WITH HEADER LINE.
Internal table for the communication control record
DATA : i_c_edidc TYPE STANDARD TABLE OF edidc INITIAL SIZE 0
WITH HEADER LINE.
Internal table for the populating the data record
DATA : i_edidd TYPE STANDARD TABLE OF edidd INITIAL SIZE 0
WITH HEADER LINE.
Structure for the storing material related information
DATA : struct_mara TYPE mara.
Structure for the storing the material description
DATA : struct_makt TYPE makt.
Structure for the segment to populate the record in the data record
DATA : struct_e1maram TYPE e1maram.
DATA : struct_e1maktm TYPE e1maktm.
Constants for the segment names.
DATA : c_e1maram TYPE edilsegtyp.
DATA : c_e1maktm TYPE edilsegtyp.
START-OF-SELECTION.
Get the application data from the tables MARA and MAKT
PERFORM get_app_data.
Populate the idoc.
PERFORM pop_idoc.
*& Form GET_APP_DATA
Get the Application data from the MARA and MAKT
FORM get_app_data .
Get the Material related information from the mara.
SELECT SINGLE *
FROM mara
INTO struct_mara
WHERE matnr = s_matnr.
Check for the sy-subrc value
IF sy-subrc NE 0.
Sy-subrc is not equal to zero go out of the program.
EXIT.
ENDIF.
Get the material description from the makt by using matnr
SELECT SINGLE *
FROM makt INTO struct_makt
WHERE matnr = s_matnr.
Check for the sy-subrc value
IF sy-subrc NE 0.
Sy-subrc is not equal to zero go out of the program.
EXIT.
ENDIF.
ENDFORM. " GET_APP_DATA
*& Form MOVE_TO_E1MARAM
populate the segment E!MARAM
FORM move_mara_to_e1maram .
Clear the segment
CLEAR struct_e1maram.
Pass the message type related information into the segment.
MOVE: "STRUCT_MARA-MSGFN TO STRUCT_E1MARAM-MSGFN,
struct_mara-matnr TO struct_e1maram-matnr,
struct_mara-ersda TO struct_e1maram-ersda,
struct_mara-ernam TO struct_e1maram-ernam,
struct_mara-meins TO struct_e1maram-meins.
Populate the internal table for the data record by passing the
Segment name and application data.
PERFORM pop_idoc_edidd USING c_e1maram struct_e1maram.
ENDFORM. " MOVE_TO_E1MARAM
*& Form MOVE_MAKT_TO_E1MAKTM
Populate the segment E1MAKTM
FORM move_makt_to_e1maktm .
Clear the segment
CLEAR struct_e1maktm.
Pass the message type related information into the segment.
MOVE : "STRUCT_MAKT-MSGFN TO STRUCT_E1MAKTM-MSGFN,
struct_makt-spras TO struct_e1maktm-spras,
struct_makt-maktx TO struct_e1maktm-maktx.
Populate the internal table for the data record by passing the
Segment name and application data.
PERFORM pop_idoc_edidd USING c_e1maktm struct_e1maktm.
ENDFORM. " MOVE_MAKT_TO_E1MAKTM
*& Form POP_IDOC_EDIDD
Populate the data record by passing the segement data
-->P_C_E1MAKTM segment name
-->P_STRUCT_E1MAKTM Application data
FORM pop_idoc_edidd USING p_c_e1maktm
p_struct_e1maktm.
Clear the work area for the data record internaltable I_edidd
CLEAR i_edidd.
Move the segment name
MOVE: p_c_e1maktm TO i_edidd-segnam,
Pass the application data
p_struct_e1maktm TO i_edidd-sdata.
Append the internaltable.
APPEND i_edidd.
ENDFORM. " POP_IDOC_EDIDD
*& Form POP_IDOC
Populate the Idoc with related information
FORM pop_idoc .
populate the control record
PERFORM pop_con_data.
populate the data record by first populating the header segment
PERFORM move_mara_to_e1maram.
Populate the data record by populate the data segment
PERFORM move_makt_to_e1maktm.
call the fM master idoc distribute for creating master idoc
PERFORM create_mat_idoc.
ENDFORM. " POP_IDOC
*& Form POP_CON_DATA
Populate the control record
FORM pop_con_data .
Variable for the logical system name
DATA: l_logsys TYPE edi_sndprn.
Get the logical system name.
CALL FUNCTION 'OWN_LOGICAL_SYSTEM_GET'
IMPORTING
own_logical_system = l_logsys
EXCEPTIONS
own_logical_system_not_defined = 1
OTHERS = 2.
Check for the sy-subrc value
IF sy-subrc NE 0.
Sy-subrc is not equal to zero go out of the program.
EXIT.
ENDIF.
Clear the work area of the control record
CLEAR i_edidc.
Move the partener type to the control record
MOVE : 'LS' TO i_edidc-sndprt,
Populate the sending system name
l_logsys TO i_edidc-sndprn,
Populate the type system partener used
'LS' TO i_edidc-rcvprt,
Populate the partner number
l_logsys TO i_edidc-rcvprn,
Populate message type
'MATMAS' TO i_edidc-mestyp,
Populate the idoc type.
'MATMAS03' TO i_edidc-idoctp.
Append the control record data.
APPEND i_edidc.
ENDFORM. " POP_CON_DATA
*& Form CREATE_MAT_IDOC
Call the FM MASTER_IDOC_DISTRIBUTE
FORM create_mat_idoc .
Call the FM MASTER_IDOC_DISTRIBUTE for passing the IDOC to ALE layer.
CALL FUNCTION 'MASTER_IDOC_DISTRIBUTE'
EXPORTING
master_idoc_control = i_edidc
TABLES
communication_idoc_control = i_c_edidc
master_idoc_data = i_edidd
EXCEPTIONS
error_in_idoc_control = 1
error_writing_idoc_status = 2
error_in_idoc_data = 3
sending_logical_system_unknown = 4
OTHERS = 5.
Check for the sy-subrc value
IF sy-subrc NE 0.
Sy-subrc is not equal to zero go out of the program.
EXIT.
ENDIF.
ENDFORM. " CREATE_MAT_IDOC -
Posting Program for Incoming Invoice
Hello,
I have a requirement to develop an Inbound Interface for Incoming Vendor Invoice which needs to be posted into SAP. Is IDOC_INPUT_INVOIC_MM the Posting Function Module which is used for this Purpose? Or do I need to develop a Custom Posting Program for Posting Invoices in MIRO? Please suggest the available BAPIs & FMs for MIRO Transaction if I need to go for a Custom Development.
Thanks,
Venkata Phani Prasad K.Hi,
The posting program for Posting an Vendor Invoice is IDOC_INPUT_INVOIC_MRM which is associated with the process code INVL.
I have used the above FM only to post the Vendor invoice idocs and it was successful.
Thanks,
Mahesh. -
Starting new database LUW inside ABAP during IDoc posting
Hi all,
During posting of an inbound IDoc, I am trying to update my Z-table in user-exit. I want to do it regardless of the result of IDoc posting. The problem is: if IDoc posted successfully - table is updated because COMMIT WORK is called at the end of the posting, however, if IDoc not posted - ROLLBACK WORK is called and table is not updated. So, my aim now is to commit the update of Z-table in any case, but it is the only thing that should be committed - no other prior update FMu2019s should be committed.
I'm aware about the following thread
http://forums.sdn.sap.com/thread.jspa?threadID=1884700
Author of this thread says that he solved a problem by means of RFC and STARTING NEW TASK. But ABAP help says
that starting asynchronous RFC triggers immediately a database commit in the calling program (which is unacceptable because all prior update FMu2019s will be committed ). I've checked and it is really the case.
From my point of view SET UPDATE TASK LOCAL with COMMIT WORK should work in such kind of tasks, but in case of IDoc processing the whole process runs in a local update (see SET UPDATE TASK LOCAL in FM 'IDOC_INPUT'), so writing once again SET UPDATE TASK LOCAL has no effect.
I tested SUBMIT statement as well. It had no effect and then I found out from ABAP help that SUBMIT ... AND RETURN starts new SAP LUW, but NOT a DB LUW. That is if I update my Z-table in the program called by SUBMIT - all ROLLBACK statements still affect my Z-table update.
Is there any simple solution? Please suggest.
Thanks in advance!Hello,
Try SUBMIT VIA JOB.....
Sample Code
call function 'JOB_OPEN'
exporting
jobname = name
importing
jobcount = number
exceptions
cant_create_job = 1
invalid_job_data = 2
jobname_missing = 3
others = 4.
if sy-subrc = 0.
submit z_idoc_create_process_order and return
via job name number number
with p_aufnr = it_header1-aufnr
with p_werks = it_header1-werks
with p_autyp = c_autyp
with p_auart = it_header1-auart
with p_dispo = it_header1-dispo
with p_opt = c_opt
with p_mestyp = c_mestyp.
if sy-subrc = 0.
call function 'JOB_CLOSE'
exporting
jobcount = number
jobname = name
strtimmed = 'X'
exceptions
cant_start_immediate = 1
invalid_startdate = 2
jobname_missing = 3
job_close_failed = 4
job_nosteps = 5
job_notex = 6
lock_failed = 7
others = 8.
if sy-subrc 0.
endif. -
Delay in the Inbound Idoc Posting Process
Dear Friends,
We have an scenario in the Inbound Idoc Posting Process, when we process the Idocs through the standard Inbound Program - RBDAPP01, we face the delay of 3hrs to 12 hrs, approx.
When we try to re-process the same through the manual process, we could successfully post the Idocs, immediately.
When the same happens, through the background job - the delay is happening.
As we see, there is no problem with the program - RBDAPP01, but can't able to trace the delay in the process.
Any suggestions / advises are welcome.
Thanks in advance.Hi Prasanna,
The update will happen only if a value already exists with the same unit of measure in the system. If the quantity is left blank in the system and if you are trying to update, the update might not happen. Even if the value is Zero in the system, provide the same unit of measure as the data used in the BAPI.
Regards,
Yogesh -
I am developing a function module in ECC that will be used to post inbound IDOC for customer creation DEBMAS07
The logic is as follows -
The function receives an IDOC structure
It then invokes function module 'IDOC_INPUT_DEBITOR'
IDOC_INPUT_DEBITOR takes care of creating a new customer in table KNA1. But I was expecting IDOC_INPUT_DEBITOR to also handle the IDOC posting. This way I can go to WE02 and see a new IDOC record. What am I missing? Is there some more code I need to write after the function module call?
Thank you.
* IDOC structures for using ALE
data lc_no_display type bdwfap_par-inputmethd value ' '.
data lt_idoc_control type standard table of edidc.
data ls_idoc_control type edidc.
data lt_idoc_data type standard table of edidd.
data lt_idoc_data_knvi type standard table of edidd.
data lt_idoc_status type standard table of bdidocstat.
data ls_idoc_status type bdidocstat.
data lt_return_variables type standard table of bdwfretvar.
data lt_serialization_info type standard table of bdi_ser.
data lv_workflow_result type bdwf_param-result.
data pi_idoctyp type edi_iapi00-idoctyp.
data pt_segments type standard table of edi_iapi11.
data lw_segments type edi_iapi11.
data ls_idoc_data type edidd.
data ls_e1kna1m type zdebmas07_e1kna1m.
data e1kna1m type e1kna1m.
*** CONTROL DATA
ls_idoc_control-mandt = input-idoc-edi_dc40-mandt.
ls_idoc_control-status = input-idoc-edi_dc40-status.
ls_idoc_control-doctyp = input-idoc-edi_dc40-idoctyp.
ls_idoc_control-direct = input-idoc-edi_dc40-outmod.
ls_idoc_control-rcvprt = input-idoc-edi_dc40-rcvprt.
ls_idoc_control-rcvprn = input-idoc-edi_dc40-rcvprn.
ls_idoc_control-stdmes = input-idoc-edi_dc40-stdmes.
ls_idoc_control-outmod = input-idoc-edi_dc40-outmod.
ls_idoc_control-sndpor = input-idoc-edi_dc40-sndpor.
ls_idoc_control-sndprt = input-idoc-edi_dc40-sndprt.
ls_idoc_control-sndprn = input-idoc-edi_dc40-sndprn.
ls_idoc_control-mestyp = input-idoc-edi_dc40-mestyp.
ls_idoc_control-idoctp = input-idoc-edi_dc40-idoctyp.
append ls_idoc_control to lt_idoc_control.
*** READ SEGMENTS
pi_idoctyp = ls_idoc_control-idoctp.
call function 'IDOCTYPE_READ_COMPLETE'
exporting
pi_idoctyp = pi_idoctyp
tables
pt_segments = pt_segments
exceptions
object_unknown = 1
segment_unknown = 2
relation_not_found = 3
others = 4.
loop at pt_segments into lw_segments.
case lw_segments-segmenttyp.
when 'E1KNA1M'.
ls_idoc_data-segnam = 'E1KNA1M'.
ls_idoc_data-mandt = sy-mandt.
ls_idoc_data-segnum = lw_segments-nr.
ls_idoc_data-psgnum = lw_segments-parpno.
ls_e1kna1m = input-idoc-e1kna1m.
move-corresponding ls_e1kna1m to e1kna1m.
move e1kna1m to ls_idoc_data-sdata.
append ls_idoc_data to lt_idoc_data.
exit.
endcase.
endloop.
*** IDOC INPUT CALL FUNCTION
data: response type zsi_create_customer_is_res_tab.
data: response_lwa type zsi_create_customer_is_respons.
data: lwa_error_message type string.
call function 'IDOC_INPUT_DEBITOR'
exporting
input_method = lc_no_display
mass_processing = space
importing
workflow_result = lv_workflow_result
tables
idoc_contrl = lt_idoc_control
idoc_data = lt_idoc_data
idoc_status = lt_idoc_status
return_variables = lt_return_variables
serialization_info = lt_serialization_info
exceptions
wrong_function_called = 1
others = 2.Hello Megan,
Check with the function modules
EDI_DATA_INCOMING
IDOC_WRITE_AND_START_INBOUND
Program:
RBDAPP01
I guess this would answer your query.
Regards,
TP -
Dear All,
1) Can anyone tell me if there is any Standard Posting Program to Post IDOC DELVRY03 from SAP to other external System. If there is no Standard program, Can any one let me know any Function module which can help me post IDOC DELVRY03.
2) Do anyone know about transportation planning point. How this needs to be Set for External Systems?
Thanks in advance,
AartiHello Ravi,
Thanks for your quick reply
But I don't want to use FM :IDOC_OUTPUT_DELVRY as this would want me to create a output type to initiate the NAST table required for the FM
Is there any standard transaction to Send Deliveries through IDOC DELVRY03 or any other FM which doesn't require to fill NAST table.
I checked WE64 as well, it links me to same FM :IDOC_OUTPUT_DELVRY as processing routine.
Regards,
Aarti -
hi,
how to Create a custom function module (posting program) which checks the credit limit for the sold to party for the outbound idoc.
ganeshHi,
custom(er) function modules are used in enhancements.User exits (Function module exits) are exits developed by SAP. The exit is implementerd as a call to a functionmodule. The code for the function module is writeen by the developer. You are not writing the code directly in the function module, but in the include that is implemented in the function module.
The call to a functionmodule exit is implemented as:
CALL CUSTOMER.-FUNCTION <3 digit suffix>
<b>Reward points</b>
Regards -
What triggers idoc posting in outbound message from sap ?
Do change or create events can be used to trigger Posting to IDOC? Have any body used idoc for outbound message sending from SAP?
Hi Reddy,
Posting IDoc Packets
Two groups of function modules are used to post IDocs:
· Function modules which process IDocs in mass. These transfer packets of IDocs for which individual IDocs are updated in the same Logical Unit of Work (LUW).
· Function modules which process one IDoc per call.
· INPUTTYP contains the code for posting function modules.
To display the function module's INPUTTYP on the ALE Development screen, choose IDoc ® Inbound Processing ® Function Module® Maintain Attributes (BD51).
INPUTTYP can contain the following values:
· "0", for function modules which process IDocs in packets.
"1" and "2" for function modules which process one IDoc per call:
If you post the IDocs immediately, the SAP sending system determines the packet size. ALE inbound processing can recognize if the posting function module allows packet processing and if so, passes the IDoc packet to it. If not, the IDoc packet is split into individual IDocs.
If IDocs are posted in the background, you can specify the size of the IDocs to be generated in the program RBDAPP01.
If you use function modules that can process IDocs in mass, the database load is reduced.
If you group IDocs into packets, this may also be practical for function modules that post inbound IDocs one at a time, because the ALE layer calls the function module several times in the same dialog process, thereby reducing the administrative load on the SAP system.
If program RBDAPP01 carries out the background processing, as a guide, you should use a packet size of between 20 and 100 IDocs.
Packet processing and parallelism complement one another. Packet processing and parallelism complement each other, although in some situations they may compete with each other. If the size of the packet is too big, this may mean that not all the available dialog processes are being used.
Scheduling IDoc Posting
There are two ways of posting IDocs in ALE inbound processing:
· Immediate processing:
Upon receipt inbound IDocs are immediately released for posting. ALE inbound processing splits the IDoc packets into individual IDocs.
· Background processing
Inbound IDocs and IDoc packets are first saved in the database. IDoc packets are split into single IDocs beforehand.
The program RBDAPP01 later releases the saved IDocs for processing. Single IDocs can be put into packets and then processed.
Perform the following steps:
1. Set-up background processing (IDoc/ALE area menu):
IDoc Interface/ALE ® Administration ® Runtime Settings ® Partner Profiles (WE20)
Then the required setting is: In the detail screen Inbound Parameters select the option Trigger by background program.
2. Schedule posting (ALE customizing):
Transaction SALE ® Set-Up System Monitoring ®
Posting IDocs in Recipient System ®Schedule
You can also process the IDocs manually by passing them to the posting function module. In ALE Administration choose Monitoring ®Status Monitor (BD87), select the IDocs and then select Process.
Regards,
Kumar. -
IDOC POsting Error: Transition no. OBJ_SYS is blocked by another user
Hi Experts,
I m sending the XML from a third party system into SAP using XI as middleware for IDOC posting (FB01).
I m getting an error <b>Transition no. <xx> is blocked by another user</b> while sending intercompany and cash applications. SAP is unable to process such XML directly.
But if i login to SAP and mannually post the IDOC, it is getting posted successfully.
Any idea what may be the cause?
Useful answers will be rewarded for sure.
Regards
DhanyaR NairHi Dhanya,
In your inbound idoc processing program, pls do use the lock mechanism for the FI document which you are processing and if it cannot be locked then keep it on wait for sometime and check for the same.
If its a standard program check whether it can be done in XI.
When SAP is locking the transaction it will be unlocked after the commit work and hence its happening.
The reason why you may not be getting this in individual processing is that you are doing the same thru a single session. And the lock if am not wrong is happening in table level and not in record level.
Cheers
JK -
Hi,
What are the posting programs are available in ALE IDOC?
and also how to find out the status of the idoc ?
Regards
Ramesh BaskaranTcode: WE05 gives the status of IDOC
table TEDS1 for all IDOC status and their descriptions
The following table describes outbound IDOC status codes that generate Tivoli Enterprise Console events:
Outbound IDOCs
Code Error Event Severity SAP Meaning
02 Yes Error Error passing data to port
03 No Error if transaction SM58 indicates an RFC transmission error Data pass to port OK
04 Yes Error Control information of EDI subsystem
05 Yes Error Translation
06 No Harmless Translation
07 Yes Error Syntax check
08 No Harmless Syntax check
09 Yes Error Interchange handling
10 No Harmless Interchange handling
11 Yes Error Dispatch
12, 13, 14 No Harmless OK
15 Yes Warning Interchange acknowledgement negative
16 No Harmless Functional acknowledgement
17 Yes Warning Functional acknowledgement negative
18 No Harmless Triggering EDI subsystem
20 Yes Error Triggering EDI subsystem
22 No Harmless Dispatch OK, acknowledgement still due
23 Yes Error Retransmission
24 No Harmless Control information of EDI subsystem
25 Yes Warning Processing despite syntax error
26 Yes Error Syntax check
27 Yes Error ALE error
29 Yes Error Error in ALE services
30 No Harmless Ready for dispatch (ALE)
31 No Harmless IDOC is marked for deletion
33 No Harmless Original of an IDOC which was edited
34 Yes Error Error in control record of IDOC
36 Yes Error Timeout error; electronic signature not performed
37 Yes Error IDOC added incorrectly
38 No Harmless IDOC archived
39 No Harmless Receive confirmed
40 Yes Error Application document not created in target system
41 No Harmless Application document created in target document
Reward points if useful.
Maybe you are looking for
-
Unable to open Bridge CS6 after installing Adobe Photoshop Elements 8
I have been using Bridge CS6 successfully until I installed Photoshop Elements 8 to use with a scanner I bought. After the installation, when clicking on Bridge CS6 it opens Bridge CS5. I had a look at some of the forums and tried Ctrl-clicking on
-
How to bypass FORALL in SELECT .. BULK COLLECT
Using Oracle 8.1.7 I developed a stored procedure LOT TYPE TIds IS Table of Integer; TYPE TFloats IS Table of Float; procedure LOT(Ids TIds) .... is Prices TFloats; Quantities TFloats; begin for I in 1..Ids.Count loop SELECT ... BULK COLLECT INTO Pri
-
Create pdf form from image file
is there any way to create a pdf form from an image? perhaps using ghostscript? TIA
-
Rules Manager and Expression Filter
I was wondering if someone could shed light on Rules Manager and Expression Filter. How will the use of Rule Based Development be efficient compared to todays Programming paradigm ?
-
Adobe InDesign API Navigator is available on Adobe labs
Adobe InDesign CS5 API Navigator is available on Adobe labs web site. You can download for free. http://labs.adobe.com/technologies/indesign_apinavigator/ If you are an InDesign C++ plug-in developer, you should definitely try this new tool. The InDe