Question 1: Need to print out invoice from warehouse as soon as we operate Shipment Confirmation. Is there any way to perform this?
Answer 1: This can be done by implementing Subsystem job through Processing Option parameter of P4205 - 'Shipment confirmation' as follows:
Item #1: Subsystem Invoice (R42565), set 1 = 'Print Invoice automatically' from 'Print' tab Item #2 (Optional): Print Invoices (R42565) specify version to call
Question 2: If the version for subsystem invoice print is not specified, which version will be set as default?
Answer 2: If the version of Invoice Print (R42565) is not specified, standard subsystem version ZJDE0002 will be defaulted.
Question 3: What should be done to create a custom version to call?
Answer 3: Copy the version R42565|ZJDE0002. Note: Do not ADD, as subsystem implementation is done at Report Version level. This information is written into RDASPEC or equivalent specification file.
Question 4: After setting Processing Option parameter, and order was Ship Confirmed, but no data was in F986113?
Answer 4: The default Data Source in UTB is defaulted based on OCM mapping. For example, it will set Default Data Source as 'System - 900' but table F986113 belongs to Bootstrap files so Data Source from 'System - 900' has to be overridden to MACHINENAME - 900 Server Map' defined from JDE.ini in your logic server. For example:
jde.ini in logic server: [DB SYSTEM SETTINGS] Base Datasource=MACHINENAME - 900 Server Map Object Owner=SVM900 Server=ServerName
jde.ini in Local machine: [DB SYSTEM SETTINGS] Base Datasource=System - 900 Object Owner=SY900 Server=ServerName
Alternative way to confirm this:
(Fast Path) WSJ - Work with Servers call P986116 - Work with Servers
(Highlight) logic server you want to check, then (Row Exit) Subsystem Jobs to call P986113 - Subsystem Jobs. (Or you can call P986113 directly through subsystem)
On [Work with Subsystems] screen, choose radio button "Waiting Jobs" then press Find button to list up waiting jobs.
Question 5: How can we confirm subsystem job is on and running?
Answer 5: Subsystem job will be at waiting status till you submit job manually. This job has to be done whenever running job has been terminated or JDE service gets restarted.
Question 6: A paper invoice needs to be printed as soon as shipment confirmation is complete, can this be done?
Answer 6: First of all, make sure that there is a physical printer that has been mapped and defined it to the subsystem version used. Then whenever one transaction is done, it will send the PDF to printer buffer.
Question 7: The description of Processing Option parameter reads "Print Invoice automatically", does it mean that we do not have to change any settings from any initialized file?
Answer 7: This is for implementation of Subsystem only. That is, it does not mean that it will print out PDF result immediately. To print out immediately, JDE.ini (where it runs) and JAS.ini (where end-user are accessing) have to be modified as follows:
[NETWORK QUEUE SETTINGS] PrintImmediate=TRUE
Question 8: Sometimes, Detail line of Shipment confirmation is more than 10 lines. If next shipment confirmation handled before it prints invoice, what will happen?
Answer 8: Next job will be pending until the 1st job gets finished. So it is very important to know that Subsystem Job is most suitable for small size of batch.
Question 9: To minimize above scenario, what is a good way to implement above?
Answer 9: Define individual Job Queue for an individual Subsystem Job (do not set it for Default Job Queue) .
Add Job Queue through P986130 - 'Work With Job Queues'
Define above job queue in version detail
Question 10: Now there are a lot of waiting job from P986113, what went wrong? Is there additional action to take note?
Answer 10: Power user or system administrator has to submit version MANUALLY to the job queue defined when there is no RUNNING job. This action will:
Through API ubeReport_AddSubsystemRecord() (in lower release API jdeAddSubsystemRecord()] called from B4200760 - AddOrderToSubsystemQueue (Add Order to Subsystem Queue) will insert record into F986113 as follows:-
SVM900.F986113.SSJOBSTS(JobstatusOW) which appears as 'GC Job Type' 'R - Subsystem Record' SVM900.F986113.SSOPCR(UBEOptionCode) which appears as 'GC Job Status' 'W - Subsystem Record Waiting'
So if you confirm shipment for 10 different orders (click OK 10 times and committed) then there will be 10 different records from F986113.
Submit it manually then it creates records into F986113 with value of:
SVM900.F986113.SSJOBSTS(JobstatusOW) which appears as 'GC Job Type' 'S - Subsystem Job' SVM900.F986113.SSOPCR(UBEOptionCode) which appears as 'GC Job Status' 'R - Subsystem Job Running'
This implementation is embedded at version level (so when a custom version is created, make sure to copy existing version of R42565|ZJDE0002) by setting/defining Subsystem job (Version>Report Properties>(Tab) Advanced>Subsystem Job is checked with Wait Time (ms) = 50)
Like wise a normal UBE, one job will be written into SVM900.F986110 - 'Job Control Status Master' with status(F986110.JCJOBSTS) of 'W - Waiting'.
Then Queue kernel will look for any waiting job. If there is any available resources it will promote status to 'S - Queue' and then 'P - Processing'. The job will be remained as P - Processing Status until the job is terminated.
Question 11: From WSJ - Work with Server Job when we click View PDF it only shows the last Invoice printed, is this correct?
Answer 11: Yes, the results are correct. It will show only the last successful UBE of Invoice.
Question 12: Will individual invoice be stored in \PrintQueue directory of batch/logic server?
Answer 12: No, it will not create individual PDF file. As it described above, the job will be invoked when MANUAL submission was taken place. Then this submission will assign Job Number for this manual submission and this job number will be retained till job is killed/terminated. So the PDF result in PrintQueue will only be the first Job Number. For this example, the PDF you can view (direct file access) is R42565_ZJDE0002_JobNumber.pdf.
Question 13: Can this combine multiple sales orders into a single invoice?
Answer 13: As the data selection of subsystem job reads, it handles data DOCO - S/O Number, DCTO - S/O Type and KCOO - Order Company level. So one S/O will create one Invoice Number. The way it picks up date is depending on the processing option you have set. So in order not to pick up the lines which are not ship confirmed, ensure the status code in Processing Option is valid. If possible secure it to prevent users from changing it.
Question 14: Then what shall we do if we need to bill a customer once a week after combine multiple shipment?
Answer 14: The invoices can be consolidated by running Reprint Invoice.
Question 15: In case we need to have soft copy of PDF result, what shall we do?
Answer 15: Run Reprint Invoice (by setting Order Status properly in Processing Option).
Question 16: How does system write records into F986113 - 'Subsystem Job Master'?
Answer 16: Subsystem Job is implemented xxxEndDoc of master BSFN. For example:
N4200790 - ShipconfirmEndDoc will call BSFN B4200760 - AddOrderToSubsystemQueue (Add Order to Subsystem Queue)
Question 17: How to review JDE.INI settings?
Answer 17: Ensure JDE.ini (where Job is running) is the definition for UBE SUBSYSTEM KERNEL and maxNumberOfProcesses is greater than or equal to 1 and UBESubsystemLimit has value which is greater than 1.
Question 18: F986113 table contains huge number of records, what shall we do?
Answer 18: Validate whether the job written in F986113 is required for your daily business. If it is required, then let it run, otherwise modify the processing options accordingly and remove existing data using DML tools.
Question 19: What can be done in order to make sure P4205 completes all the updates before R42565 is run?
Answer 19: When ship confirming a sales order, the subsystem version of R42565 seems to run before the next status of the order is updated by P4205 and as a result, the order is not being selected for invoicing by R42565.
As per Bug 13713044 - "Subsystem Invoicing from Ship Confirm does not Work", the issue occurs because the UBE is executing before P4205 completes its commitments of the database transactions related to the sales order(s) being processed.
The solution is to get the UBE to pick up the sales order line(s) after Ship Confirm has completed its commitment processing of the transaction. There are a couple of recommended solutions for this fix.
Recommendation 1: Version ZJDE0002 for R42565 is shipped with a wait time setting of 50 milliseconds. This is a very short wait cycle for the usage of P4205. The recommendation is to reset this value to 2000 or 3000 MS. The higher the setting, the lower the likelihood of this issue ever occurring.
The subsystem setup white paper Doc ID 1265778.1 - "E1: SS: Overview of Subsystem Processing in EnterpriseOne" discusses how to accomplish this change.
Recommendation 2: Avoid submitting R42565 altogether from P4205 and set up R42565 to run off of a scheduled setup. The scheduled version of R42565 would be run as often needed, and the UBE would use data selection to pick up orders that were just run through Ship Confirm. If the customer is not using the scheduler, this solution will be more time consuming to implement. If the customer is using a scheduler to submit batch jobs, this solution may be the optimal fix as there are no chances of the UBE ever submitting before transaction processing completes.