Program
EDIOUT.rpgle
1 note. Lines with a note are marked in brass.
1H DFTACTGRP(*NO) ACTGRP(*CALLER)2H OPTION(*SRCSTMT)3 *4 * EDIOUT - EDI 810 Invoice Output5 * Formats approved invoice records into EDI 810 transaction sets6 * and writes them to the outbound EDI spool file EDISPOOL.7 *8 * EDI 810 date segments use format YYYYMMDD per ISA/GS convention.9 * The trading partner's 997 acknowledgement uses the same format.10 *11 * Maintenance log:12 * 2018-06 RLT Initial version, date format MMDDYY per legacy spec13 * 2020-02 RLT Changed date format to YYYYMMDD per partner request #447114 *15FEDISPOOL O E DISK16 *17D InvNo S 8P 018D InvDate D19D CustNo S 7P 020D InvAmt S 11P 221D TaxAmt S 11P 222D EDILine S 256A23D DateStr S 8A24D SeqNo S 9P 025 *26 * Format invoice date as YYYYMMDD for EDI 810 BIG segment27C EVAL DateStr = %CHAR(InvDate:*ISO0)28 *29 * ISA segment - interchange control header30C EVAL EDILine =31C 'ISA*00* *00* ' +32C '*ZZ*SENDER *ZZ*RECEIVER ' +33C '*' + %SUBST(DateStr:3:6) +34C '*' + %SUBST(DateStr:9:4) +35C '*^*00501*' +36C %EDITC(SeqNo:'Z') +37C '*0*P*>'38C WRITE EDIREC39 *40 * GS segment - functional group header41C EVAL EDILine =42C 'GS*IN*SENDER*RECEIVER*' +43C DateStr + '*' +44C %SUBST(DateStr:9:4) +45C '*1*X*005010'46C WRITE EDIREC47 *48 * BIG segment - beginning segment for invoice49 * Date in YYYYMMDD format per current EDI 810 spec50C EVAL EDILine =51C 'BIG*' + DateStr +52C '*' + %EDITC(InvNo:'Z') +53C '**'54C WRITE EDIREC55 *56 * ITD - terms of sale / deferred terms57C EVAL EDILine =58C 'ITD*01*3***' +59C '***30*'60C WRITE EDIREC61 *62 * TDS - total monetary value summary63C EVAL EDILine =64C 'TDS*' +65C %EDITC(InvAmt * 100:'Z')66C WRITE EDIREC67 *68 * TXI - tax information69C EVAL EDILine =70C 'TXI*ST*' +71C %EDITC(TaxAmt:'1') +72C '****ST'73C WRITE EDIREC74 *75C EVAL *INLR = *ON