SeanHoppe.com › Cleo CodeSamples › Inbound Exit Point using Short Parm List to Check Pricing in JDE Table:F4104
For additional EXTOL EDI Integrator RPGLE Examples: Sean Hoppe Consulting Group Coding Samples
H/TITLE Determine if pricing exists for uom/item H DATEDIT(*YMD) OPTION(*DEBUGIO) DEBUG(*YES) * * MAPPING SETUP: * FS: IMSRP2 FD: SZMCU Q:ITEM * FS: IMITM FD: SZMCU Q:ITEM2 * FS: WWAN8 FD: SZURRF Q:TPID * * ELEMENT ATTACHMENT: * SYURRF ST01 Q: CLEAR * SYMCU SE01 Q: RETURN * * FF4104_14 if e k Disk RENAME(F4104:F4104) FF4101_1 if e k Disk RENAME(F4101:F4101) FF03012_3 if e k Disk RENAME(F03012:F03012) FF4094LC if e k Disk RENAME(F4094:F4094) FF4106LD if e k Disk RENAME(F4106:F4106) FF41002_4 if e k Disk RENAME(F41002:F41002) * Parameter declarations <--- SHORT PARM LIST HERE ---> * * D @LITM s Like(imlitm) D @ITM s Like(imitm) D @ITEM2 s 8a D @UOM s 2 D @UOM1 s 2 D @UOM2 s 2 D @BP53 s 1s 0 D @BP54 s 1s 0 D @MCU s 3A D @TPIDA s 8A D*@TPID s 8s 0 Inz(241985) D @TPID s 8s 0 D @AN8 s 8S 0 D @PODT8 s 8S 0 D @POS s 2S 0 D*@INDAT s 15S 5 D*@OUTDAT s 15S 5 D @EFTJ s Like(BPEFTJ) D @EXDJ s Like(BPEXDJ) D @XRT s 2 Inz('C') D @TSTIND s 1S 0 Inz(0) D @TSTERR s 1S 0 Inz(0) /EJECT ***************************************************************** * Entry parameters C *ENTRY PLIST <--- PARAMETER LIST HERE ---> ***************************************************************** * * CASE: PAR.Code trans directions is Inward translation C P1CDTT IFEQ 'I' * Use Standard if non-blank; else use qualifier: C* P4CDQD IFEQ 'TPID' C* MOVEL *BLANKS @TPIDA C* Z-ADD *ZEROS @TPID C* MOVEL P3CDST @TPID C* MOVEL @TPID @TPIDA C* MOVEL P3CDST @TPIDA C* MOVE @TPIDA @TPID * C P4CDQD IFEQ 'XXXXV' C CLEAR @TPID C MOVE 00241985 @TPID C END * C P4CDQD IFEQ 'XXXXA' C CLEAR @TPID C MOVE 00336787 @TPID C END * C P4CDQD IFEQ 'CLEAR' C EXSR SRclear C END * C P4CDQD IFEQ 'CLRDTL' C EXSR SRclrdtl C END * C P4CDQD IFEQ 'ITEM' C MOVEL P3CDST @LITM C EXSR SRitem C END * * RETURN is called for each detail line. Formula: MSGQITMPRC * calls routine to test for error. If error exists then formula * remits message into MSGQ. * C P4CDQD IFEQ 'RETURN' * C IF %SUBST(IVLITM:1:4) ='3690' SCAN FOR ITEM CODES C OR %SUBST(IVLITM:1:4) ='3694' WITH 3690 OR 3690 C MOVE 0 @TSTIND IN THE 4TH POSITION C ENDIF C* C IF %SCAN('16 ':IVLITM) >0 IF LAST 2 CHARS = 16 C MOVE 0 @TSTIND THE @TSTIND = 0 C ENDIF C* C IF IVLITM = '840' IF ITEM IS PALLET C MOVE 0 @TSTIND THE @TSTIND = 0 C ENDIF C* C @TSTIND IFNE 0 C MOVE 1 @TSTERR C END C MOVEL @TSTIND P5CDLC C END * * CHKERR is called at the end of map. If any detail lines error'd * then PO wil error. * C P4CDQD IFEQ 'CHKERR' C @TSTERR IFNE 0 C MOVEL 'USR0034' P0RTN C END C END * C P4CDQD IFEQ 'UOM' C MOVEL P3CDST @UOM C END * C P4CDQD IFEQ 'PODAT' C Z-ADD *ZEROS @INDAT 15 5 C Z-ADD *ZEROS @OUTDAT 15 5 C MOVEL P3CDST @PODT8 C MOVEL @PODT8 @INDATT 13 5 C MOVE @INDATT @INDAT C CALL 'CVTFJULYMD' C PARM @INDAT C PARM @OUTDAT C END * * C ELSE else not "I" * CASE: PAR.Code trans directions is Outward translation C P1CDTT IFEQ 'O' * Use Local if non-blank; else use qualifier: C END C END C RETURN * * A "Return code" of non-blank will be logged as a translation error: C* MOVEL *BLANK P5CDLC *Return code C* ************************************************************************** * Initialize variables ************************************************************************** C SRclear BEGSR C* C MOVEL *ZEROS @AN8 C MOVEL *BLANKS @LITM C MOVEL *ZEROS @ITM C MOVEL *BLANKS @UOM C MOVEL *BLANKS @UOM1 C MOVEL *BLANKS @UOM2 C MOVEL *ZERO @TSTIND C MOVEL *ZERO @TSTERR C* * Key to the Code Table File C KeyF4104 KLIST C KFLD @LITM C KFLD @XRT C KFLD @TPID C * Key to item master file C KeyF4101 KLIST C KFLD IVITM C* C KeyF03012 KLIST C KFLD @TPID C* C KeyF4094 KLIST C KFLD AICPGP C KFLD IMPRGR C KFLD IMSRP7 C* C KeyF4106 KLIST C KFLD KIICID C KFLD @UOM1 C* C KeyF41002 KLIST C KFLD IMITM C KFLD @UOM1 C C ENclear ENDSR C* ************************************************************************** * Initialize variables for detail line ************************************************************************** C SRclrdtl BEGSR C* C MOVEL *BLANKS @LITM C MOVEL *ZEROS @ITM C MOVEL *BLANKS @UOM C MOVEL *BLANKS @UOM1 C MOVEL *BLANKS @UOM2 C MOVEL *ZERO @TSTIND C MOVEL *ZEROS @EFTJ C MOVEL *ZEROS @EXDJ C* C ENclrdtl ENDSR C* ************************************************************************** * Chain to following files: F4104_14 -> F4101_2 -> F03012_3 -> F4094LC -> F4106LC ************************************************************************** C SRitem BEGSR C* C KeyF4104 CHAIN F4104 91 IF01 C *IN91 IFEQ *OFF C* C KeyF4101 CHAIN F4101 92 IF02 C *IN92 IFEQ *OFF C* C KeyF03012 CHAIN F03012 93 IF03 C *IN93 IFEQ *OFF C* C KeyF4094 CHAIN F4094 94 IF04 C *IN94 IFEQ *OFF C* C* Check to see if UOM and CID value exists in PF:F4106 C* C MOVEL @UOM @UOM1 C EXSR SR4106 C C* C* If record is not found in F4106 then check PF:F41002. C* If cross reference is found for UOM (UMUM -> UMRUM) C* then check to see if UMCONV = 10000000. If UMCONV = 10000000 C* then call subroutine: SR4106 to see if entry exists in F4106 C* using UMRUM. If record exists then @TSTIND = 0 C* IF05 C @TSTIND IFNE 0 C KeyF41002 SETLL F41002 C KeyF41002 READE F41002 96 C MOVE 6 @TSTIND DO06 C *IN96 DOWEQ *OFF IF10 C @TSTIND IFNE 0 C* C IF UMCONV = 10000000 C MOVEL UMRUM @UOM1 C EXSR SR4106 C ENDIF END10C ENDIF C* C KeyF41002 READE F41002 96 END06C ENDDO C* END05C ENDIF ELS04C ELSE C MOVE 4 @TSTIND END04C ENDIF ELS03C ELSE C MOVE 3 @TSTIND END03C ENDIF ELS02C ELSE C MOVE 2 @TSTIND END02C ENDIF ELS01C ELSE C MOVE 1 @TSTIND END01C ENDIF C* C ENitem ENDSR C* ************************************************************************** * Using CID and UOM, check to see if record entry exists in F4106. * If entry does exist check PO's date versus effective and expiration * date. ************************************************************************** C* C SR4106 BEGSR C* C KeyF4106 SETLL F4106 C KeyF4106 READE F4106 95 C MOVE 5 @TSTIND DO06 C *IN95 DOWEQ *OFF IF07 C @TSTIND IFNE 0 C* C MOVE 9 @TSTIND C MOVE BPEFTJ @EFTJ C MOVE BPEXDJ @EXDJ C IF08 C IF @OUTDAT<=@EXDJ AND @OUTDAT>=@EFTJ C EVAL @TSTIND = 0 END08C ENDIF ELS07C ELSE C LEAVESR END07C ENDIF C* C KeyF4106 READE F4106 95 END05C ENDDO C EN1406 ENDSR * Exit program