midrange.com code scratchpad
Name:
SQLRPGLE Program
Scriptlanguage:
Plain Text
Tabwidth:
4
Date:
09/14/2023 07:00:15 pm
IP:
Logged
Description:
SQLRPGLE Program
Code:
  1.      H DftActGrp(*No)
  2.      H ActGrp(*New)
  3.      H BndDir('*Libl/STARBND':'*Libl/QC2LE')
  4.      H UsrPrf(*Owner)
  5.      H Option(*NoSrcStmt:*NoDebugio)
  6.      ‚*-------------------------------------------------------------------*
  7.      
  8.      FGPK510CD  CF   E             WorkStn
  9.      FLHLOAD02  IF   E           K Disk
  10.      FLOLOAD08  IF   E           K Disk    Rename(LO00RC:LO08RC)
  11.      FLOLOAD00  IF   E           K Disk
  12.      FLXLOAD00  IF   E           K Disk
  13.      FPHPICK00  IF   E           K Disk
  14.      FPDPICKZ1  IF   E           K Disk
  15.      F** JA01 PDPICK10  IF   E           K Disk
  16.      F*****CDCARTZ1  IF   E           K Disk
  17.      FCDCARTZ1  UF   E           K Disk
  18.      FILLOCN00  IF   E           K Disk
  19.      FODOUTQ00  IF   E           K Disk
  20.      FPKXAPICKP IF   E           K Disk
  21.      FMBC6RES0  IF   E           K Disk
  22.  |   FMBCDRESM  IF   E           K Disk    Prefix(N_)
  23.  |   FMBDMCPS2  IF   E           K Disk
  24.      FEDI850DTL IF   E           K Disk
  25.      FPIPICK01  IF   E           K Disk
  26.      FPOPCDIRL2 IF   E           K Disk
  27. |    FPOPCDIRL3 IF   E           K Disk    Rename(Pofcdir:PofcdirL3)
  28.      FITM020PLM1IF   E           K Disk
  29.      FGPK510WP  IF   E           K Disk
  30.      FGPK510CP  O    E             Printer OflInd(*In99) UsrOpn
  31.      F                                     INFDS(OutputFDS)
  32.      Famax70p   IF   E           K Disk
  33.      FPOLCDIR2  IF   E           K Disk    Rename(Pofcdir:Pol2)
  34.      F                                     Prefix(l2_)
  35.      FMBCDRES0  IF   E           K Disk    Prefix(s0_)
  36.      FMBBWCPS0  IF   E           K Disk
  37.      FMBGGCPS5  IF   E           K Disk
  38.      FUSUSER00  IF   E           K Disk    Prefix(s0_)
  39.      FPOLTOL99  IF   E           K Disk
  40.      FIVLMSTRC  IF   E           K Disk
  41.      ‚*-------------------------------------------------------------------*
  42.      ‚* Entry Parameters
  43.      ‚*
  44.      D*File Information Data Structure
  45.  |   D OutputFDS       DS
  46.      D  CUR_LINE             367    368I 0                                      Current line num
  47.      ‚*
  48.      ‚* Work Variables
  49.      ‚*
  50.      D  Wk_RtrnCode    S              1A   Inz
  51.      D  Wk_TotlOrdQ    S              9S 0 Inz
  52.      D  Wk_TotlShpQ    S              9S 0 Inz
  53.      D  Wk_NumbrStp    S              2S 0 Inz
  54.      D  Wk_StopNmbr    S              2S 0 Inz
  55.      D  Wk_ItemNmbr    S             25A   Inz
  56.      D  Wk_ItemStyl    S              8A   Inz
  57.      D  Wk_ItemSffx    S              7A   Inz
  58.      D  Wk_ItemDesc    S             35A   Inz
  59.      D  Wk_PickQnty    S              7S 0 Inz
  60.      D  Wk_StopSeqn    S              5S 0 Inz
  61.      D  Wk_PickLocn    S             10A   Inz
  62.      D  Wk_OrdrNmbr    S              7A   Inz
  63.      D  Wk_OrdrNmb1    S              7A   Inz
  64.      D  Wk_WCMessage   S             35A   INZ('***** USE VINYL AIR BAGS ONLY *+
  65.      D                                     ****')
  66.      D  Wk_Zip         S             11A   Inz                                  DB06 size 5A
  67.      D  I              S              5S 0 Inz
  68.      D  II             S              5S 0 Inz
  69.      D  JJ             S              5S 0 Inz
  70.      D  kk             S              5S 0 Inz
  71.      D  XX             S              5S 0 Inz
  72.      D  ZZ             S              5S 0 Inz
  73.      D  YY             S              5S 0 Inz
  74.      D  Wk_Equip       S              1a
  75.      D  Wk_Part        S              1a
  76.      ‚*
  77.      D  CPFMSGID       S              7A   Import('_EXCP_MSGID')
  78.      ‚*
  79.      ‚* Date Variables
  80.      ‚*
  81.      D  Dt_CurrDate    S               D   Inz(*Sys)
  82.      D  Dt_WorkDate    S               D   Inz
  83.      ‚*
  84.      ‚* Arrays
  85.      ‚*
  86.      D  Ar_Err         S             80A   Dim(05) CtData PerRcd(1)
  87.      D**Ar_Cmd         S             90A   Dim(01) CtData PerRcd(1)
  88.      D  Ar_Cmd         S             91A   Dim(01) CtData PerRcd(1)
  89.      ‚* DB04 - Changed the array size from 99 to 9999
  90.      D  Ar_SKL         S             10A   Dim(9999) Inz
  91.      D  Ar_Stp         S              2A   Dim(9999) Inz
  92.      D  Ar_PQt         S              7S 0 Dim(9999) Inz
  93.      D  Ar_PKL         S              5S 0 Dim(9999) Inz
  94.      D**Ar_cdlin       S              5S 0 Dim(9999) Inz
  95.      D  Ar_cdlin       S              6S 0 Dim(9999) Inz
  96.      D  Ar_cdsku       S             25A   Dim(9999) Inz
  97.      D  Wk_mis2sku     S             25A   Inz
  98.       ‚*
  99.      d Ky_70p          Ds                   LikeRec(amax70r:*key)
  100.      ‚*
  101.      D                 DS
  102.      D  SC_LOAD#01
  103.      D  SC_LOAD#02
  104.      D  SC_LOAD#03
  105.      D  SC_LOAD#04
  106.      D  SC_LOAD#05
  107.      D  SC_LOAD#06
  108.      D  SC_LOAD#07
  109.      D  SC_LOAD#08
  110.      D  SC_LOAD#09
  111.      D  SC_LOAD#10
  112.      D  Wk_LoadNmbr            1    100A
  113.      D  Ar_LD#                       10A   Dim(10) Overlay(Wk_LoadNmbr:1)
  114.      ‚*
  115.      ‚* Pointer Type Variables
  116.      ‚*
  117.      D  Pt_Indicators  S               *   Inz(%Addr(*In))
  118.      ‚*
  119.      ‚* Indicator Type Variables
  120.      ‚*
  121.      D  Ds_Indicators  DS                  Based(Pt_Indicators)
  122.      D   In_ExitPrgm          03     03N
  123.      D   In_AddtlPrm          10     10N
  124.      D   In_PrevPrgm          12     12N
  125.      D   In_ConfirmS          16     16N
  126.      D   In_MsgSubfl          27     27N
  127.      D   In_OverFlow          99     99N
  128.      ‚*
  129.      D   In_FrstPage   S               N   Inz
  130.      D   In_PgmError   S               N   Inz
  131.      D   In_PrtShIns   S               N   Inz
  132.      D  Wk_Done        S               N   Inz
  133.  |   D  DT3_ItemNbr    S                   Like(DMG7TX)
  134.      D  Wk_POKEY       S                   Like(X_POKEY)
  135.      D  S_PDMPKT       S                   Like(PDMPKT)
  136.      D  Wk_HDPONO      S                   Like(HDPONO)
  137.      D  Chk_Num_PONO   S              7A
  138.      D  Wk_Num_Check   S               N   Inz
  139. sp01 ‚* QCmdExc Parameters
  140. sp01 D  Wk_Cmd         S           2000    Inz
  141. sp01 D  Wk_CmdLen      S             15P 5 Inz
  142. sp01 D  Pos            S              2S 0 Inz
  143. sp01 D  Quote          S              1A   Inz('''')
  144.      ‚*
  145.      ‚* Data Structures
  146.      ‚*
  147.      D                SDS
  148.      D  Wk_PrgmName      *PROC
  149.      D  Wk_UserName          254    263
  150.      ‚*
  151.      D  Ds_LDLDAR00  E DS                  ExtName(LDLDAR00) DtaAra(*LDA)
  152.      ‚*
  153.      ‚* Prototypes Definition
  154.      ‚*
  155.      D  Pr_DateToNumb  PR            10I 0 ExtProc('atol')
  156.      D                                 *   Value Options(*String)
  157.      ‚*
  158.      D  Pr_AddnlParms  PR                  ExtPgm('PTG0G8RP')
  159.      D    Pm_PrgmName                10A
  160.      ‚*
  161.      D  Pr_AS400Cmmds  PR            10I 0 ExtProc('system')
  162.      D    Pm_CmmdLeng                  *   Value Options(*String)
  163.       *
  164.       * Delay job for a set number of seconds.
  165. NK08 d DlyJob          PR                  ExtPgm('QCMDEXC')
  166.  |   d                              512    Const
  167.  |   d                               15P 5 Const
  168. NK08 D*
  169.      ‚*******************************************************************
  170. DB01
  171. |    D PCKORD_DS       DS
  172. |    D MajPick#                            Like(PhPCtl)
  173. |    D Item#                         16
  174. |    D MinPick#                            Like(PhPCtl)
  175. |    D CustOrd#                      20
  176. |    D ItemDs                        35
  177. |    D PickLine#                      5  0
  178. |    D Priority                      20
  179. |    D OrdQty                        11  4
  180. |    D ShpQty                        11  4
  181. |    D PckQty                        11  4
  182. DB01  *
  183. DB04 ‚* DB04 - Changed the array size from 99 to 9999
  184. |    D MajPick#_Ar     S                   Like(PhPCtl)    Dim(9999)
  185. |    D Item#_Ar        S                   Like(Item#)    Dim(9999)
  186. |    D MinPick#_Ar     S                   Like(PhPCtl)    Dim(9999)
  187. |    D CustOrd#_Ar     S                   Like(CustOrd#)  Dim(9999)
  188. |    D ItemDs_Ar       S                   Like(ItemDs)    Dim(9999)
  189. |    D PickLine#_Ar    S                   Like(PickLine#) Dim(9999)
  190. |    D Priority_Ar     S                   Like(Priority)  Dim(9999)
  191. |    D OrdQty_Ar       S                   Like(OrdQty)    Dim(9999)
  192. |    D ShpQty_Ar       S                   Like(ShpQty)    Dim(9999)
  193. |    D PckQty_Ar       S                   Like(PckQty)    Dim(9999)
  194. |    D Count_Ar        S              5  0
  195. DB04 D Index_Ar        S              5  0
  196. DB01 D CustOrd#_Save   S                   Like(CustOrd#)
  197. |    D MinPick#_Save   S                   Like(PhPCtl)
  198. |    D RfPn_Flag       S              1A   Inz
  199. |    D PickLine#_Var   S              5  0
  200. |    D Pick#_Var       S                   Like(PhPCtl)
  201. |    D CountShpq       S             11  4
  202. |    D BaseQty         S             11  4
  203. DB01 ‚*
  204. DB04 ‚* DB04 - Changed the array size from 99 to 9999
  205. |    D  Ar_PkLQty      S                   Like(ShpQtY) Dim(9999)
  206. DB04 D  Ar_PkLItem#    S                   Like(Item#) Dim(9999)
  207. DB01 ‚*
  208. |
  209. |    D SKULOC_DS       DS
  210. |    D  SkLPick#                           Like(PhPCtl)
  211. |    D  SkLItem#                           Like(Item#)
  212. |    D  SkLLine#                           Like(PdPkLn)
  213. |    D  SkLZone                            Like(PdZone)
  214. |    D  SkLAisl                            Like(PdAisl)
  215. |    D  SkLBay                             Like(PdBay)
  216. |    D  SkLLevl                            Like(PdLevl)
  217. |    D  SkLPosn                            Like(PdPosn)
  218. |    D  SkLTBPU                            Like(PdShQt)
  219. |    D  SkLPAKU                            Like(PdShQt)
  220. |    ‚*
  221. DB04 ‚* DB04 - Changed the array size from 99 to 9999
  222. |    D  Ar_SkLPick#    S                   Like(PhPCtl) Dim(9999)
  223. |    D  Ar_SkLItem#    S                   Like(Item#) Dim(9999)
  224. |    D  Ar_SkLLine#    S                   Like(PdPkLn) Dim(9999)
  225. |    D  Ar_SkLZone     S                   Like(PdZone) Dim(9999)
  226. |    D  Ar_SkLAisl     S                   Like(PdAisl) Dim(9999)
  227. |    D  Ar_SkLBay      S                   Like(PdBay) Dim(9999)
  228. |    D  Ar_SkLLevl     S                   Like(PdLevl) Dim(9999)
  229. |    D  Ar_SkLPosn     S                   Like(PdPosn) Dim(9999)
  230. DB04 D  Ar_SkLTBPU     S                   Like(PdShQt) Dim(9999)
  231. ra01 D  skuTotal0      S              5s 0 inz
  232. ra01 D  moreThanOne    S               n   inz(*off)
  233.       *
  234. DB01 D*--------------------------------------------------
  235. |    D* Procedure name: declareCursor
  236. |    D* Purpose:        Declare cursor
  237. |    D* Returns:
  238. |    D*--------------------------------------------------
  239. |    D declareCursor   PR
  240. |    D declareCursor1  PR
  241. |    D declareCursor2  PR
  242. |     *
  243. |    D*--------------------------------------------------
  244. |    D* Procedure name: openCursor
  245. |    D* Purpose:        Open cursor
  246. |    D* Returns:
  247. |    D*--------------------------------------------------
  248. |    D openCursor      PR
  249. |    D openCursor1     PR
  250. |    D openCursor2     PR
  251. |
  252. |    D*--------------------------------------------------
  253. |    D* Procedure name: fetch
  254. |    D* Purpose:        fetch record from cursor
  255. |    D* Returns:
  256. |    D*--------------------------------------------------
  257. |    D fetch           PR
  258. |    D fetch1          PR
  259. |    D fetch2          PR
  260. |     *
  261. |    D*--------------------------------------------------
  262. |    D* Procedure name: closeCursor
  263. |    D* Purpose:        Close cursor
  264. |    D* Returns:
  265. |    D*--------------------------------------------------
  266. |    D closeCursor     PR
  267. |    D closeCursor1    PR
  268. |    D closeCursor2    PR
  269. |
  270. DB01  *
  271.      ‚*******************************************************************
  272.       /Copy *Libl/QCPYSRC,Snd_MsgPgm
  273.       /Copy *Libl/QCPYSRC,Rmv_MsgPgm
  274.      ‚*-------------------------------------------------------------------*
  275.      ‚* MAIN CODE LINE                                                    *
  276.      ‚*-------------------------------------------------------------------*
  277.       /Free
  278.  
  279.        // Override Printer File and Display Prompt Screen
  280.  
  281. NK06     // ExSr Sr_OverrdPrtf;
  282. NK06   ExSr OvrPrtfile2;
  283.  
  284.        ExSr Sr_DsplPrompt;
  285.  
  286.        // Execute ShutDown Taks And Kill Program
  287.  
  288.        ExSr Sr_ExeShtDown;
  289.  
  290.        *InLr = *On;
  291.        Return;
  292.  
  293.       /End-Free
  294.      ‚*-------------------------------------------------------------------*
  295.      ‚* ShutDown Taks Routine.                                            *
  296.      ‚*-------------------------------------------------------------------*
  297.       /Free
  298.  
  299.        BegSr Sr_ExeShtDown;
  300.  
  301.        EndSr;
  302.  
  303.       /End-Free
  304.      ‚*-------------------------------------------------------------------*
  305.      ‚* Display Prompt Screen                                             *
  306.      ‚*-------------------------------------------------------------------*
  307.       /Free
  308.  
  309.        BegSr Sr_DsplPrompt;
  310.  
  311.          // Loop Till Exit Requested
  312.  
  313.          DoW Not In_ExitPrgm And Not In_PrevPrgm;
  314.  
  315.            // Display Message Subfile
  316.  
  317.            Write MSGCTL;
  318.  
  319.            // Display Prompt Screen
  320.  
  321.            Exfmt RCD001;
  322.  
  323.            // Remove Messages from Pgm Msg Queue and Kill Error Indicators
  324.  
  325.            Rmv_MsgPgm();
  326.            Clear In_PgmError;
  327.            For II = 1 by 1 to %Elem(Ar_LD#);
  328.                *In(50 + II) = *Off;
  329.            EndFor;
  330.  
  331.            // F3=Exit Program
  332.  
  333.            Select;
  334.            When In_ExitPrgm;
  335.              Leave;
  336.  
  337.            // F10=Additional Parameters
  338.  
  339.            When In_AddtlPrm;
  340.              Out Ds_LDLDAR00;
  341.              Pr_AddnlParms(Wk_PrgmName);
  342.              In Ds_LDLDAR00;
  343.              If LDWSID <> *Blanks;
  344.                 %SubSt(Ar_Cmd(01):43:10) = LDWSID;
  345.                 CallP(E) Pr_AS400Cmmds(Ar_Cmd(01));
  346.              EndIf;
  347.              Iter;
  348.  
  349.            // F12=Previous Pgm
  350.  
  351.            When In_PrevPrgm;
  352.              Leave;
  353.  
  354.            // F16=Confirm
  355.  
  356.            When In_ConfirmS;
  357.              ExSr Sr_EditPrompt;
  358.              If Not In_PgmError;
  359.                 ExSr Sr_ProcessRqt;
  360.                 Snd_MsgPgm(Ar_Err(03));
  361.              EndIf;
  362.              Iter;
  363.  
  364.            // Check if Any User Selection
  365.  
  366.            Other;
  367.              ExSr Sr_EditPrompt;
  368.  
  369.            EndSl;
  370.  
  371.          EndDo;
  372.  
  373.        EndSr;
  374.  
  375.       /End-Free
  376.      ‚*-------------------------------------------------------------------*
  377.      ‚* Validate Prompt Routine.                                          *
  378.      ‚*-------------------------------------------------------------------*
  379.       /Free
  380.  
  381.        BegSr Sr_EditPrompt;
  382.  
  383.      If  SC_Packer <> *Blanks;
  384.  |         Chain(N)  SC_Packer  USUSER00;
  385.  |          if  NOT %Found(USUSER00);
  386.  |            Snd_MsgPgm(Ar_Err(05));
  387.  |            In_PgmError = *On;
  388.  |            LeaveSr;
  389.  |          endif;
  390.      EndIf;
  391.  
  392.          If In_ConfirmS And Wk_LoadNmbr = *Blanks;
  393.            Snd_MsgPgm(Ar_Err(04));
  394.            In_PgmError = *On;
  395.            LeaveSr;
  396.          EndIf;
  397.  
  398.          For II = 1 by 1 to %Elem(Ar_LD#);
  399.              If Ar_LD#(II) <> *Blanks;
  400. NK04            Chain  (SC_WHSECOD:Ar_LD#(II))  LHLOAD02;
  401. NK04            If Not %Found(LHLOAD02);
  402.                    Snd_MsgPgm(Ar_Err(01));
  403.                    In_PgmError = *On;
  404.                    *In(50 + II) = *On;
  405.                 EndIf;
  406.              EndIf;
  407.          EndFor;
  408.  
  409.          If Not In_PgmError = *On And Not In_ConfirmS And
  410.             Wk_LoadNmbr <> *Blanks;
  411.            Snd_MsgPgm(Ar_Err(02));
  412.          EndIf;
  413.  
  414.        EndSr;
  415.  
  416.       /End-Free
  417.      ‚*-------------------------------------------------------------------*
  418.      ‚* Process Print Request.                                            *
  419.      ‚*-------------------------------------------------------------------*
  420.       /Free
  421.  
  422.        BegSr Sr_ProcessRqt;
  423.  
  424. NK08      DlyJob('DLYJOB DLY(05)':14);
  425.  
  426.          For II = 1 by 1 to %Elem(Ar_LD#);
  427.              If Ar_LD#(II) <> *Blanks;
  428.                 Open GPK510CP;
  429.                 ExSr Sr_PrtLoadDoc;
  430.                 Close GPK510CP;
  431.       /End-Free
  432. sp01 C                   Eval      Pos = %Scan('@' :sc_email)
  433. sp01 C     SC_Email      IFNE      *Blanks
  434. sp01 C     Pos           ANDGT     *Zeros
  435. sp01 C                   Eval      Wk_Cmd = 'ESEND/ESNDMAIL RECIPIENT('  +
  436. sp01 C                                 Quote + %Trim(sc_email) + Quote + ') +
  437. sp01 C                                  SUBJECT(''LTL Ld Sum doc for Load '+
  438. sp01 C                                      %Trim(LOADBRCD) +''') ' +
  439. sp01 C                                      ' MSG(''See attached file'') +
  440. sp01 C                             ATTLIST((* *PDF *N GPK510CP *))'
  441. sp01 C*
  442. sp01 C                   Eval      Wk_CmdLen = %len(%trim(Wk_Cmd))
  443. sp01 C                   Call      'QCMDEXC'
  444. sp01 C                   Parm                    Wk_Cmd
  445. sp01 C                   Parm                    Wk_CmdLen
  446. sp01  *
  447. sp01 C                   EndIf
  448. sp01  *
  449.       /Free
  450.              EndIf;
  451.          EndFor;
  452.  
  453.          Clear Wk_LoadNmbr;
  454.  
  455.        EndSr;
  456.  
  457.       /End-Free
  458.      ‚*-------------------------------------------------------------------*
  459.      ‚* Print Trailer Load Summary Document.                              *
  460.      ‚*-------------------------------------------------------------------*
  461.       /Free
  462.  
  463.        BegSr Sr_PrtLoadDoc;
  464.  
  465.          In_FrstPage = *On;
  466.          Clear Wk_TotlOrdQ;
  467.          Clear Wk_TotlShpQ;
  468.  
  469. NK04     Chain  (SC_WHSECOD:Ar_LD#(II))  LHLOAD02;
  470.          ExSr Sr_GetNbroStp;
  471.  
  472.          RP_LOADNBR = Ar_LD#(II);
  473.      LOADBRCD   = Ar_LD#(II);
  474.          RP_PGMNAME = Wk_PrgmName;
  475.          RP_USERNAM = Wk_UserName;
  476. DB05     //RP_TRLRNBR = LHTRLN;
  477. DB05     //**DB06** RP_TRLRNBR = LHCARR;
  478. DB06     RP_TRLRNBR = %Trim(LHCARR) + ' ' + %Trim(LHTRLN);
  479.          RP_NBRSTOP = Wk_NumbrStp;
  480.  
  481. em02     // Check if load contains equipment and parts
  482.  |       RP_MESSAGE = *blanks;
  483.  |       If LdWhse = 'DLC';
  484.  |         Exsr CheckItemTypes;
  485. em02     Endif;
  486.  
  487.          Setll Ar_LD#(II) LOLOAD08;
  488.          ReadE Ar_LD#(II) LOLOAD08;
  489.          Wk_StopSeqn = LOSTSQ;
  490.          Dow Not %EOF(LOLOAD08);
  491.  
  492. NK14              SHMTBRCD   = LOSHNO;
  493.  
  494.              Setll (LOLDNO:LOSHNO) LXLOAD00;
  495.              ReadE (LOLDNO:LOSHNO) LXLOAD00;
  496.  
  497.              Dow Not %EOF(LXLOAD00);
  498.  
  499.                  Chain LXPCTL PHPICK00;
  500.                  If %Found(PHPICK00);
  501.                     RP_STOPNBR = %Trim(%Char(LOSTSQ));
  502.                     RP_CUSTNBR = PHSOTO;
  503.                     RP_SHPTONM = PHSHNM;
  504.                     RP_SHPTNBR = PHSHTO;
  505.                     RP_SHPTOA1 = PHSHA1;
  506.                     // JA01 RP_CUSTPON = PHCUPO;
  507.  
  508.               Clear *In38;
  509.  |                RP_Packer = *Blanks;
  510.  |              if SC_Packer <> *Blanks  And  PhPstf = '40';
  511.  |                 *In38 = *ON;
  512.  |                 RP_Packer = 'Packer   : ' + SC_Packer;
  513.             endif;
  514.  
  515.                     Clear *In30;
  516.                     If PHSHA2  = *Blanks;
  517.                        RP_SHPTOA2 = %Trim(PHSHCT) + ',' + %Trim(PHSHST) +
  518.                                     ' ' + PHSHZP;
  519.                     Else;
  520.                        RP_SHPTOA2 = PHSHA2;
  521.                        RP_SHPTOA2 = %Trim(PHSHCT) + ',' + %Trim(PHSHST) +
  522.                                    ' ' + PHSHZP;
  523.                        *In30 = *On;
  524.                     EndIf;
  525. DB06
  526. |                   Clear RP_WCMsg;
  527. |                   Clear *In37;
  528. DB06                If PHMIS1 <> 'SPH' And PHMIS1 <> 'SPF';
  529.  
  530.                    Clear Wk_Zip;
  531.  |                     Wk_Zip = PHSHZP;
  532.  |                    Chain (PhSoto:PhMis6:Wk_Zip) GPK510WP;
  533.  |                    If %Found(GPK510WP);
  534.  |                       *In37 = *On;
  535.  |                       RP_WCMsg = WkMsg;
  536.                   Else;
  537.  
  538.                     Clear Wk_Zip;
  539.  |                      Wk_Zip = %Subst(PHSHZP:1:5);
  540.  |                      Chain (PhSoto:PhMis6:Wk_Zip) GPK510WP;
  541.  |                      If %Found(GPK510WP);
  542.  |                         *In37 = *On;
  543.  |                         RP_WCMsg = WkMsg;
  544.                   Else;
  545.  
  546. DB07                   Clear Wk_Zip;
  547. |                      Wk_Zip = PHSHZP;
  548. |                      Chain (PhSoto:' ':Wk_Zip) GPK510WP;
  549. |                      If %Found(GPK510WP);
  550. |                         *In37 = *On;
  551. |         //**        RP_WCMsg = Wk_WCMessage;
  552.                       RP_WCMsg = WkMsg;
  553. |                      Else;
  554. |
  555. DB07                      Clear Wk_Zip;
  556. DB06                      Wk_Zip = %Subst(PHSHZP:1:5);
  557. |                         Chain (PhSoto:' ':Wk_Zip) GPK510WP;
  558. |                         If %Found(GPK510WP);
  559. |                            *In37 = *On;
  560. |         //**           RP_WCMsg = Wk_WCMessage;
  561.                          RP_WCMsg = WkMsg;
  562. DB06                      EndIf;
  563. DB07                   EndIf;
  564.                 EndIf;
  565. DB06              EndIf;
  566.             EndIf;
  567.  
  568.           //        ExSr Sr_PrtLoadDtl;
  569.                     ExSr Sr_PrtLoadDtlNew;
  570.  
  571. NK05                Exsr  Sr_PrtSpcInst; //Special Instruction
  572.  
  573.                  EndIf;
  574.  
  575.                  ReadE (LOLDNO:LOSHNO) LXLOAD00;
  576.  
  577.              EndDo;
  578.  
  579.              ReadE Ar_LD#(II) LOLOAD08;
  580.          EndDo;
  581.  
  582.          If Wk_TotlOrdQ <> *Zeros;
  583.             RP_TOTORDQ = Wk_TotlOrdQ;
  584.             RP_TOTSHPQ = Wk_TotlShpQ;
  585.             RP_TSTOPNB = %Trim(%Char(Wk_StopSeqn));
  586.             Write TOT001;
  587.          EndIf;
  588.  
  589.          Write END001;
  590.  
  591. em03    If CUR_LINE > 55;
  592.  |          Clear In_FrstPage;
  593.  |          Clear In_OverFlow;
  594.  |          Write HDR001;
  595.  |       EndIf;
  596.  |
  597. em03     Write END002;
  598.  
  599.        EndSr;
  600.  
  601.       /End-Free
  602.      ‚*-------------------------------------------------------------------*
  603.      ‚* Get Number Of Stops.                                              *
  604.      ‚*-------------------------------------------------------------------*
  605.       /Free
  606.  
  607.        BegSr Sr_PrtLoadDtl;
  608.  
  609.          If Wk_StopSeqn <> LOSTSQ;
  610.             RP_TOTORDQ = Wk_TotlOrdQ;
  611.             RP_TOTSHPQ = Wk_TotlShpQ;
  612.             RP_TSTOPNB = %Trim(%Char(Wk_StopSeqn));
  613.             Write TOT001;
  614.             Wk_StopSeqn =  LOSTSQ;
  615.             In_FrstPage = *On;
  616.             Clear Wk_TotlOrdQ;
  617.             Clear Wk_TotlShpQ;
  618.          EndIf;
  619.  
  620. NK07     Clear  S_PDMPKT;
  621.  
  622.          // JA01 Setll LXPCTL PDPICK10;
  623.          // JA01 ReadE LXPCTL PDPICK10;
  624. JA01     Setll LXPCTL PDPICKZ1;
  625. JA01     ReadE LXPCTL PDPICKZ1;
  626.  
  627.          Wk_ItemNmbr = PDSTYL + PDSSFX;
  628. JA01     Wk_OrdrNmbr = %SubSt(PDMIS2:3:7);
  629. JA01     Wk_OrdrNmb1 = *Blanks;
  630.          Wk_ItemDesc = PDSTYD;
  631. JA01     Clear XX;
  632. JA01     Clear Ar_PKL;
  633. ash02    Clear Ar_cdlin;
  634. ash04    Clear Ar_cdsku;
  635. NK07       S_PDMPKT = PDMPKT;
  636.  
  637.          // JA01 Dow Not %EOF(PDPICK10);
  638. JA01     Dow Not %EOF(PDPICKZ1);
  639.  
  640.              If Wk_ItemNmbr <> PDSTYL + PDSSFX Or
  641. JA01            Wk_OrdrNmbr <> %SubSt(PDMIS2:3:7);
  642. JA01
  643. JA01            If Wk_OrdrNmb1 <> Wk_OrdrNmbr;
  644. JA01               Wk_OrdrNmb1  = Wk_OrdrNmbr;
  645. JA01               ExSr Sr_BreakByPO#;
  646. JA01            EndIf;
  647. JA01
  648. JA01            Clear XX;
  649. JA01            Clear Ar_SkL;
  650. JA01            Clear Ar_PQt;
  651. JA01            Clear Wk_PickQnty;
  652. JA01
  653. JA01            For YY=1 to ZZ;
  654. JA01                ExSr Sr_GetSkuLocn;
  655. JA01            EndFor;
  656.  
  657.                 ExSr Sr_WrtSkuDetl;
  658.                 Wk_ItemNmbr = PDSTYL + PDSSFX;
  659.                 Wk_OrdrNmbr = %SubSt(PDMIS2:3:7);
  660.                 Wk_ItemDesc = PDSTYD;
  661. JA01            Clear ZZ;
  662. JA01            Clear Ar_PKL;
  663. ash02           Clear Ar_cdlin;
  664. ash04           Clear Ar_cdsku;
  665.  
  666. NK07               S_PDMPKT = PDMPKT;
  667.              EndIf;
  668.  
  669. JA01         ZZ += 1;
  670. JA01         Ar_PKL(ZZ) = PDPKLN;
  671. ash02        Ar_cdlin(ZZ) = PDnum1;
  672. ash04        Ar_cdsku(ZZ) = %trim(pdmis2)+%trim(PDstyl+pdssfx);
  673.  
  674.              RP_ORDRQTY  += PDOPQT;
  675.              RP_SHIPQTY  += PDSHQT;
  676. ash01        Wk_TotlOrdQ += PDOPQT;
  677. ash01       // Wk_TotlOrdQ += PDOGQT;
  678.              Wk_TotlShpQ += PDSHQT;
  679.  
  680.              // JA01 ReadE LXPCTL PDPICK10;
  681. JA01         ReadE LXPCTL PDPICKZ1;
  682.  
  683.          EndDo;
  684.  
  685.          If Wk_TotlOrdQ <> *Zeros;
  686. JA01        If Wk_OrdrNmb1 <> Wk_OrdrNmbr;
  687. JA01           Wk_OrdrNmb1  = Wk_OrdrNmbr;
  688. JA01           ExSr Sr_BreakByPO#;
  689. JA01        EndIf;
  690. JA01
  691. JA01        Clear XX;
  692. JA01        Clear Ar_SkL;
  693. JA01        Clear Ar_PQt;
  694. JA01        Clear Wk_PickQnty;
  695. JA01
  696. JA01        For YY=1 to ZZ;
  697.                 ExSr Sr_GetSkuLocn;
  698. JA01        EndFor;
  699. JA01
  700. JA01        Clear ZZ;
  701. JA01        Clear Ar_PKL;
  702. ash02       Clear Ar_cdlin;
  703. ash04       Clear Ar_cdsku;
  704.  
  705.             ExSr Sr_WrtSkuDetl;
  706.          EndIf;
  707.  
  708.        EndSr;
  709.  
  710.       /End-Free
  711. JA01 ‚*-------------------------------------------------------------------*
  712. JA01 ‚* Break by PO Number.                                               *
  713. JA01 ‚*-------------------------------------------------------------------*
  714. JA01  /Free
  715. JA01
  716. JA01   BegSr Sr_BreakByPO#;
  717. JA01
  718. JA01     If In_FrstPage Or In_OverFlow;
  719. JA01        Clear In_FrstPage;
  720. JA01        Clear In_OverFlow;
  721. JA01        Write HDR001;
  722. JA01     EndIf;
  723.  
  724. NK01        Clear CUPO#;
  725. NK01        Clear ORDR#;
  726. NK03        Clear USRF1;
  727.  
  728.          If PHMSPK = '1';                           //AS01
  729. JA01       //NK07  Chain (PDMPKT:Wk_OrdrNmbr) PKXAPICKP;   //AS01
  730. NK07        Chain (S_PDMPKT:Wk_OrdrNmbr) PKXAPICKP;   //AS01
  731.          Else;                                      //AS01
  732. JA01        Chain (LXPCTL:Wk_OrdrNmbr) PKXAPICKP;
  733.          EndIf;                                     //AS01
  734. ash06
  735.          if CUPO# = ' ';
  736.            select;
  737.            when PHMSPK = '1';
  738.                chain(n) (S_PDMPKT) Phpick00;
  739.            other;
  740.                chain(n) (LXPCTL) Phpick00;
  741.            endsl;
  742.            chain(n) (pdstyl+pdssfx) IVLMSTRC;  //ash07
  743.            CMNO08 =  %int(%subst(phpctl:3:7));
  744.            //ash07 chain(N) (CMNO08) POLTOL99;
  745.            chain(N) (CMNO08:IVNO07) POLTOL99;
  746.            if %found(POLTOL99);
  747.               CUPO# = %char(PONO01);
  748.            else;  //ash07
  749.               chain(N) (CMNO08) POLTOL99;
  750.               //ash09 CUPO# = %char(PONO01);
  751.               CUPO# = ' '; //ash09
  752.            endif;
  753.          endif;
  754. ash06
  755. JA01
  756.            if usrf1 = *blanks;
  757.  
  758. JA01             RP_POORDR# = 'Customer PO#: ' + %Trim(CUPO#) + ' / ' +
  759. JA01                    'Ordr#: ' + ORDR#;
  760.            else;
  761.  
  762. NK03             RP_POORDR# = 'Starnet PO#: ' + %Trim(CUPO#) + ' / ' +
  763.  |                    'Customer PO#: ' + %Trim(USRF1) + ' / ' +
  764.  |                    'Ordr#: ' + ORDR#;
  765.            endif;
  766. NK03
  767.  
  768. JA01     Write DTL002;
  769. JA01
  770. JA01   EndSr;
  771. JA01
  772. JA01  /End-Free
  773.      ‚*-------------------------------------------------------------------*
  774.      ‚* Get Sku Pick Locations and Quantity.                              *
  775.      ‚*-------------------------------------------------------------------*
  776.       /Free
  777.  
  778.        BegSr Sr_GetSkuLocn;
  779.  
  780.          Wk_ItemStyl = %SubSt(Wk_ItemNmbr:1:8);
  781.          Wk_ItemSffx = %SubSt(Wk_ItemNmbr:9:7);
  782.  
  783.          // JA01 SetLL (PDPCTL:Wk_ItemStyl:Wk_ItemSffx) CDCARTZ1;
  784.          // JA01 ReadE (PDPCTL:Wk_ItemStyl:Wk_ItemSffx) CDCARTZ1;
  785. JA01     SetLL (PDPCTL:Wk_ItemStyl:Wk_ItemSffx:Ar_PKL(YY)) CDCARTZ1;
  786. JA01     ReadE (PDPCTL:Wk_ItemStyl:Wk_ItemSffx:Ar_PKL(YY)) CDCARTZ1;
  787.  
  788.          DoW Not %EOF(CDCARTZ1);
  789.  
  790.              // Chain (LDWHSE:CDAREA:CDZONE:CDAISL
  791.              //          :CDBAY:CDLEVL:CDPOSN) ILLOCN00;
  792.  
  793.              Wk_PickLocn = %Trim(CDZONE) + %Trim(CDAISL) + %Trim(CDBAY) +
  794.                            %Trim(CDLEVL) + %Trim(CDPOSN);
  795.  
  796.              If Wk_PickLocn = *Blanks;
  797.                 Wk_PickLocn ='NO LOCTN';
  798.              EndIf;
  799.  
  800.              If %LookUp(Wk_PickLocn:Ar_SkL) = *Zeros;
  801.                 XX += 1;
  802.                 Ar_SkL(XX) = Wk_PickLocn;
  803.              EndIf;
  804.  
  805. NK08         if  PhPstf < '40';
  806.                 Ar_PQt(%LookUp(Wk_PickLocn:Ar_SkL)) += CDTBPU;
  807. NK08         else;
  808.  |              Ar_PQt(%LookUp(Wk_PickLocn:Ar_SkL)) += CDPAKU;
  809. NK08         endif;
  810.  
  811. NK08         if  PhPstf < '40';
  812.                 Wk_PickQnty += CDTBPU;
  813. NK08         else;
  814.  |              Wk_PickQnty += CDPAKU;
  815. NK08         endif;
  816.  
  817.          if  PhPstf = '40' And SC_Packer <> *Blanks;
  818.  |               CDPAKR = SC_Packer;
  819. em01             if phmis1 = 'PRT' or phmis1 = 'PDC';  // em04
  820. em01               cdmis2 = %char(%date():*iso0) + ' ' + %char(%time():*iso0);
  821. em01             endif;
  822.  |               Update  CD00RC;
  823.          endif;
  824.  
  825.              // JA01 ReadE (PDPCTL:Wk_ItemStyl:Wk_ItemSffx) CDCARTZ1   ;
  826. JA01         ReadE (PDPCTL:Wk_ItemStyl:Wk_ItemSffx:Ar_PKL(YY)) CDCARTZ1;
  827.  
  828.          EndDo;
  829.  
  830.          If XX = *Zeros;
  831.             Ar_SkL(01)='NO LOCTN';
  832.             XX = 01;
  833.          EndIf;
  834.  
  835.        EndSr;
  836.  
  837.       /End-Free
  838.      ‚*-------------------------------------------------------------------*
  839.      ‚* Write Sku Detail.                                                 *
  840.      ‚*-------------------------------------------------------------------*
  841.       /Free
  842.  
  843.        BegSr Sr_WrtSkuDetl;
  844.  
  845.          If PHMSPK = '1';                           //AS01
  846.            //NK07 RP_PICKNBR  = PDMPKT;                   //AS01
  847. NK07        RP_PICKNBR  = S_PDMPKT;                   //AS01
  848.          Else;                                      //AS01
  849.             RP_PICKNBR  = PDPCTL;
  850.          EndIf;                                     //AS01
  851.          RP_SHIPPTY  = PDMIS1;
  852.          RP_ITEMNBR  = Wk_ItemNmbr;
  853.          RP_SKUDESC  = Wk_ItemDesc;
  854.  
  855.          For JJ = 1 to XX;
  856.  
  857.              If In_FrstPage Or In_OverFlow;
  858.                 Clear In_FrstPage;
  859.                 Clear In_OverFlow;
  860.                 Write HDR001;
  861. RPG01           // JA01 Write DTL002;
  862.              EndIf;
  863.  
  864.              RP_SKULOCN = Ar_SkL(JJ);
  865.              RP_PICKQTY = Ar_PQt(JJ);
  866.  
  867.              Write DTL001;
  868.  
  869.              Clear RP_PICKNBR;
  870.              Clear RP_ITEMNBR;
  871.              Clear RP_SKUDESC;
  872.              Clear RP_ORDRQTY;
  873.              Clear RP_SHIPQTY;
  874.              Clear RP_SHIPPTY;
  875.  
  876.          EndFor;
  877.  
  878. NK02     Exsr   Substitute_SKU;
  879.  
  880.          Clear RP_PICKNBR;
  881.          Clear RP_ITEMNBR;
  882.          Clear RP_ORDRQTY;
  883.          Clear RP_SHIPQTY;
  884.  
  885.  
  886. ra01     if XX > 1;
  887. ra01        RP_SKUTOTQ = wk_PickQnty;
  888. ra01        write SKUTOT;
  889. ra01        clear RP_SKUTOTQ;
  890. ra01     endIf;
  891.  
  892.        EndSr;
  893.  
  894.       /End-Free
  895. NK02 ‚*-------------------------------------------------------------------*
  896.  |   ‚* Get Substituted SKU (DB08 - This subroutine not in use but I am   *
  897.  |   ‚*                      still changing to keep all routines in sync. *
  898.  |   ‚*-------------------------------------------------------------------*
  899.  |    /Free
  900.  |
  901.  |     BegSr  Substitute_SKU;
  902.  |
  903.  |       DT3_Item  =  *Blanks;          // printed on report
  904.  |       DT3_ItemNbr  =  *Blanks;       // for data fetch
  905.  |       DT3_ItemNbr  =  Wk_ItemNmbr;
  906.  |
  907.  |       C6AENB  =  %INT( %SUBST(PDMIS2:1:2) );
  908.  |       C6DCCD  =  '1' ;
  909.  |       C6CVNB  =  %SUBST(PDMIS2:3:7) ;
  910.  |
  911.  |       Chain (C6AENB:C6DCCD:C6CVNB)  MBC6RES0 ;  // Order Header
  912.  |       IF  %Found(MBC6RES0) ;
  913.  |
  914.  |
  915.  |              Chain (C6AENB:C6DCCD:C6CVNB:DT3_ItemNbr)  MBCDRESM ;      // Order d
  916.  |              if  %found(MBCDRESM)  And  N_CDAALM <> *blanks;
  917.  |                  DT3_Item  =  N_CDAALM;
  918.  |              endif;
  919. NK02
  920. DB08     ELSE ;
  921.  |          Chain (C6AENB:C6DCCD:C6CVNB)  MBBWCPS0 ;  // Order Header History
  922.  |          IF  %Found(MBBWCPS0) ;
  923.  |              Chain (C6AENB:DT3_ItemNbr:C6DCCD:C6CVNB)  MBGGCPS5 ;      // Order d
  924.  |              if  %found(MBGGCPS5)  And  GGABYG <> *blanks;
  925.  |                  DT3_Item  =  GGABYG;
  926.  |              endif;
  927. DB08        ENDIF ;
  928. NK02
  929.  |       ENDIF ;
  930.  |
  931.  |          if  DT3_Item <> *Blanks;
  932.  |              Write  DTL003;
  933.  |          endif;
  934.  |
  935.  |     EndSr;
  936.  |
  937. NK02  /End-Free
  938.      **-------------------------------------------------------------------*
  939.      ** Get Number Of Stops.                                              *
  940.      **-------------------------------------------------------------------*
  941.       /Free
  942.  
  943.        BegSr Sr_GetNbroStp;
  944.  
  945.          Clear Wk_NumbrStp;
  946.          Clear Ar_Stp;
  947.  
  948.          Setll Ar_LD#(II) LOLOAD00;
  949.          ReadE Ar_LD#(II) LOLOAD00;
  950.          Dow Not %EOF(LOLOAD00);
  951.              Wk_StopNmbr = LOSTSQ;
  952.              If %LookUp(%EditC(Wk_StopNmbr:'X'):Ar_Stp) = *Zeros;
  953.                 Wk_NumbrStp += 1;
  954.                 Ar_Stp(Wk_NumbrStp) = %EditC(Wk_StopNmbr:'X');
  955.              EndIf;
  956.              ReadE AR_LD#(II) LOLOAD00;
  957.          EndDo;
  958.  
  959.        EndSr;
  960.  
  961.       /End-Free
  962.      ‚*-------------------------------------------------------------------*
  963.      ‚* Override Printer File routine.                                    *
  964.      ‚*-------------------------------------------------------------------*
  965.       /Free
  966.  
  967.        BegSr Sr_OverrdPrtf;
  968.  
  969.          Chain (Wk_PrgmName:SC_WHSECOD:'*') ODOUTQ00;
  970.          If %Found(ODOUTQ00) And ODOUTQ <> *Blanks;
  971.             %SubSt(Ar_Cmd(01):43:10) = ODOUTQ;
  972.             %SubSt(Ar_Cmd(01):62:03) = %EditC(ODCOPY:'X');
  973.             CallP(E) Pr_AS400Cmmds(Ar_Cmd(01));
  974.          EndIf;
  975.  
  976.        EndSr;
  977. NK05     //--------------------------------------------------------
  978.  |       // Special Instruction
  979.  |       //--------------------------------------------------------
  980.  |     BegSr Sr_PrtSpcInst;
  981.  |
  982.  |       // Print Pick ticket special instruction
  983.  |       SetLL LXPCTL PIPICK01;
  984.  |       ReadE LXPCTL PIPICK01;
  985.  |       Dow Not %EOF(PIPICK01);
  986.  |           If  PIITYP = 'PK' and  PIIDES <> *Blanks;
  987.  |                if In_OverFlow;
  988.  |                   Clear In_FrstPage;
  989.  |                   Clear In_OverFlow;
  990.  |                   Write HDR001;
  991.  |                endif;
  992.  |                   Write HDR004;   //Special Inst Header
  993.  |                   Leave;
  994.  |           EndIf;
  995.  |       ReadE LXPCTL PIPICK01;
  996.  |       EndDo;
  997.  |
  998.  |       SetLL LXPCTL PIPICK01;
  999.  |       ReadE LXPCTL PIPICK01;
  1000.  |       Dow Not %EOF(PIPICK01);
  1001.  |           If  PIITYP = 'PK' and  PIIDES <> *Blanks;
  1002.  |               RP_SPCINST  = %TRIM(PIIDES);
  1003.  |                if In_OverFlow;
  1004.  |                   Clear In_FrstPage;
  1005.  |                   Clear In_OverFlow;
  1006.  |                   Write HDR001;
  1007.  |                   Write HDR004;
  1008.  |                endif;
  1009.  |               Write  DTL004;      //Special Inst Detail
  1010.  |           EndIf;
  1011.  |       ReadE LXPCTL PIPICK01;
  1012.  |       EndDo;
  1013.  |
  1014. NK05   EndSr;
  1015.  
  1016.       /End-Free
  1017.      ‚*-------------------------------------------------------------------*
  1018.      ‚* Intialization Routine                                             *
  1019.      ‚*-------------------------------------------------------------------*
  1020.      C     *InzSr        BegSr
  1021.      ‚*                  -----
  1022.      C                   In        Ds_LDLDAR00
  1023.       *
  1024.      C                   Eval      SC_WHSECOD  = LDWHSE
  1025.      C                   Eval      SC_COMPCOD  = LDCO
  1026.      C                   Eval      SC_DIVSCOD  = LDDIV
  1027.      ‚*
  1028.      ‚* Set Program Name and Program Message Queue
  1029.      ‚*
  1030.      C                   Eval      SC_PGMMSGQ  = '*'
  1031.      C                   Eval      SC_PGMNAME  = Wk_PrgmName
  1032.      ‚*
  1033.      ‚* Set Display Message Subfile Indicator
  1034.      ‚*
  1035.      C                   Eval      In_MsgSubfl = *On
  1036.      ‚*                  -----
  1037.      C                   EndSr
  1038. NK06  **********************************************************************
  1039.  |    * Subroutine OvrPrtfile2   - To override print files to diff OUTQs  *
  1040.  |    **********************************************************************
  1041.  |   C     OvrPrtfile2   BegSr
  1042.  |    *
  1043.  |   C                   MoveL     LdWhse        Ovpr_Whs
  1044.  |   C                   MoveL     *Blanks       Ovpr_Apm
  1045.  |   C                   MoveL     'GPK510CR'    Ovpr_Prn
  1046.  |   C                   ExSr      Ovpr_Ovrpr
  1047.  |    *
  1048.  |    /Free
  1049.  |           In Ds_LDLDAR00;
  1050.  |           If %SubSt(LDPAR2:24:10) <>  *Blanks;
  1051.  |              %SubSt(Ar_Cmd(01):43:10) = %SubSt(LDPAR2:24:10);
  1052.  |              %SubSt(Ar_Cmd(01):62:3) = %SubSt(LDPAR2:46:3);
  1053.  |              CallP(E) Pr_AS400Cmmds(Ar_Cmd(01));
  1054.  |           EndIf;
  1055.  |    /End-Free
  1056.  |    *
  1057. NK06 C                   EndSr
  1058.      ‚*-------------------------------------------------------------------*
  1059.      ‚* Get Number Of Stops.                                              *
  1060.      ‚*-------------------------------------------------------------------*
  1061.       /Free
  1062.  
  1063.        BegSr Sr_PrtLoadDtlNew;
  1064.  
  1065.          If Wk_StopSeqn <> LOSTSQ;
  1066.             RP_TOTORDQ = Wk_TotlOrdQ;
  1067.             RP_TOTSHPQ = Wk_TotlShpQ;
  1068.             RP_TSTOPNB = %Trim(%Char(Wk_StopSeqn));
  1069.             Write TOT001;
  1070.             Wk_StopSeqn =  LOSTSQ;
  1071.             In_FrstPage = *On;
  1072.             Clear Wk_TotlOrdQ;
  1073.             Clear Wk_TotlShpQ;
  1074.          EndIf;
  1075.  
  1076. NK07     Clear  S_PDMPKT;
  1077.  
  1078. DB01
  1079. |        ExSr Create_MinPick#_CustOrd#_Ary;
  1080. |        ExSr Create_SKU_Locn_Ary;
  1081. |
  1082. |        Clear XX;
  1083. |        Clear Ar_PkL;
  1084. |        Clear Ar_cdlin; //ash02
  1085. |        Clear Ar_cdsku; //ash04
  1086. |        Clear Ar_PkLItem#;
  1087. |        Clear Ar_PkLQty;
  1088. |        Setll LXPCTL PDPICKZ1;
  1089. |        ReadE LXPCTL PDPICKZ1;
  1090. |        Dow Not %EOF(PDPICKZ1);
  1091. |           XX += 1;
  1092. |           Ar_PkL(XX) = PDPKLN;
  1093. |           Ar_cdlin(XX) = PDnum1;  //ash02
  1094. |           Ar_cdsku(XX) = %trim(pdmis2)+%trim(PDstyl+pdssfx);//ash04
  1095. |           Ar_PkLItem#(XX) = PDSTYL + PDSSFX;
  1096.         *in90 = *off;
  1097. |           Select;
  1098. |             When PhPSTF >= '20' and PhPSTF < '40';   // Printed
  1099. |               Ar_PkLQty(XX) = PDPIQT;
  1100. |             When PhPSTF >= '40' and PhPSTF < '90';    // Packed
  1101. |               Ar_PkLQty(XX) = PDPAKU;
  1102. |             When PhPSTF = '90';                      // Invoiced
  1103. |               Ar_PkLQty(XX) = PDSHQT;
  1104.           *in90 = *on;
  1105. |           EndSl;
  1106. |         ReadE LXPCTL  PDPICKZ1;
  1107. |        EndDo;
  1108. |
  1109. |        // Major Pick# Routine (To get Minor Pick# & Cust. Ord#)
  1110. |        Clear CustOrd#_Save;
  1111. |        Clear MinPick#_Save;
  1112. |        Index_Ar = 1;
  1113. |        DoW Index_Ar <= Count_Ar;
  1114. |           If CustOrd#_Ar(Index_Ar) <> CustOrd#_Save Or
  1115. |              MinPick#_Ar(Index_Ar) <> MinPick#_Save;
  1116. |              CustOrd#_Save = CustOrd#_Ar(Index_Ar);
  1117. |              MinPick#_Save = MinPick#_Ar(Index_Ar);
  1118. |              Wk_OrdrNmbr = %SubSt(CustOrd#_Ar(Index_Ar):3:7);
  1119. |              ExSr Sr_BreakByPO#_Maj;
  1120. |           EndIf;
  1121. |
  1122. |           Wk_ItemNmbr = Item#_Ar(Index_Ar);
  1123. |           Wk_OrdrNmb1 = *Blanks;
  1124. |           Wk_ItemDesc = ItemDS_Ar(Index_Ar);
  1125. |           ExSr Sr_PrtPickDtl;
  1126. |
  1127. |           Index_Ar = Index_Ar + 1;
  1128. |
  1129. DB01     EndDo;
  1130.  
  1131.        EndSr;
  1132.  
  1133.       /End-Free
  1134. DB01 ‚*-------------------------------------------------------------------*
  1135. |    ‚* Create Array of Minor Pick# and Customer Ord# for Major Pick#     *
  1136. |    ‚*-------------------------------------------------------------------*
  1137. |     /Free
  1138. |         BegSr Create_MinPick#_CustOrd#_Ary;
  1139. |
  1140. |         Clear MajPick#_Ar;
  1141. |         Clear Item#_Ar;
  1142. |         Clear MinPick#_Ar;
  1143. |         Clear CustOrd#_Ar;
  1144. |         Clear ItemDs_Ar;
  1145. |         Clear PickLine#_Ar;
  1146. |         Clear Priority_Ar;
  1147. |         Clear OrdQty_Ar;
  1148. |         Clear ShpQty_Ar;
  1149. |         Clear PckQty_Ar;
  1150. |
  1151. |         If PhMsPk = '1' and PhRfPn = *Blanks;
  1152. |            RfPn_Flag = 'Y';
  1153. |         Else;
  1154. |            RfPn_Flag = 'N';
  1155. |         EndIf;
  1156. |
  1157. |         If RfPn_Flag = 'Y';
  1158. |         // Declare Cursor @C1
  1159. |            declareCursor();
  1160. |         // Open Cursor
  1161. |            openCursor();
  1162. |         // Fetch record
  1163. |            fetch();
  1164. |         Else;
  1165. |         // Declare Cursor @X1
  1166. |            declareCursor1();
  1167. |         // Open Cursor
  1168. |            openCursor1();
  1169. |         // Fetch record
  1170. |            fetch1();
  1171. |         EndIf;
  1172. |
  1173. |         Count_Ar = 0;
  1174. |
  1175. |      DoW (SQLCOD = 0);
  1176. |         Count_Ar = Count_Ar + 1;
  1177. |         MajPick#_Ar(Count_Ar) = MajPick#;
  1178. |         Item#_Ar(Count_Ar)    = Item#;
  1179. |         MinPick#_Ar(Count_Ar) = MinPick#;
  1180. |         CustOrd#_Ar(Count_Ar) = CustOrd#;
  1181. |         ItemDS_Ar(Count_Ar) = ItemDs;
  1182. |         PickLine#_Ar(Count_Ar) = PickLine#;
  1183. |         Priority_Ar(Count_Ar) = Priority;
  1184. |         OrdQty_Ar(Count_Ar)  = OrdQty;
  1185. |         ShpQty_Ar(Count_Ar)  = ShpQty;
  1186. |         PckQty_Ar(Count_Ar)  = PckQty;
  1187. |         If RfPn_Flag = 'Y';
  1188. |            fetch();
  1189. |         Else;
  1190. |            fetch1();
  1191. |         EndIf;
  1192. |      EndDo;
  1193. |
  1194. |      // Close Cursor
  1195. |         If RfPn_Flag = 'Y';
  1196. |            closeCursor();
  1197. |         Else;
  1198. |            closeCursor1();
  1199. |         EndIf;
  1200. |
  1201.    // Fill in Pack & Ship quantities from Minor picktickets
  1202. ||     for i = 1 to count_ar;
  1203. ||       chain (minpick#_ar(i):custord#_ar(i):' ':' ':%subst(item#_ar(i):1:8):
  1204. ||             %subst(item#_ar(i):9:8)) pdpickz1;
  1205. ||       if %found (pdpickz1);
  1206. ||         pckqty_ar(i) = pdpiqt;
  1207. ||         shpqty_ar(i) = pdshqt;
  1208. ||       endif;
  1209.    endfor;
  1210. |
  1211. |         EndSr;
  1212. |     /End-Free
  1213. DB01 ‚*-------------------------------------------------------------------*
  1214. |    ‚* Create Array of SKU Locations by Pick#/Item#/Line#                *
  1215. |    ‚*-------------------------------------------------------------------*
  1216. |     /Free
  1217. |         BegSr Create_SKU_Locn_Ary;
  1218. |
  1219. |         Clear Ar_SkLPick#;
  1220. |         Clear Ar_SkLItem#;
  1221. |         Clear Ar_SkLLine#;
  1222. |         Clear Ar_SkLZone;
  1223. |         Clear Ar_SkLAisl;
  1224. |         Clear Ar_SkLBay;
  1225. |         Clear Ar_SkLLevl;
  1226. |         Clear Ar_SkLPosn;
  1227. |         Clear Ar_SkLTBPU;
  1228. |
  1229. |         // Declare Cursor @C1
  1230. |            declareCursor2();
  1231. |         // Open Cursor
  1232. |            openCursor2();
  1233. |         // Fetch record
  1234. |            fetch2();
  1235. |
  1236. |         YY = 0;
  1237. |
  1238. |      DoW (SQLCOD = 0);
  1239. |         YY = YY + 1;
  1240. |         Ar_SkLPick#(YY) = SkLPick#;
  1241. |         Ar_SkLItem#(YY) = SkLItem#;
  1242. |         Ar_SkLLine#(YY) = SkLLine#;
  1243. |         Ar_SkLZone(YY) = SkLZone;
  1244. |         Ar_SkLAisl(YY) = SkLAisl;
  1245. |         Ar_SkLBay(YY) = SkLBay;
  1246. |         Ar_SkLLevl(YY) = SkLLevl;
  1247. |         Ar_SkLPosn(YY) = SkLPosn;
  1248. |         Select;
  1249. |           When PhPSTF >= '20' and PhPSTF < '40';   // Printed
  1250. |             Ar_SklTBPU(YY) = SkLTBPU;
  1251. |           When PhPSTF >= '40' and PhPSTF < '99';   // Packed
  1252. |             if SkLPAKU > 0;
  1253. |                Ar_SkLTBPU(YY) = SkLPAKU;
  1254. |             else;
  1255. |                Ar_SkLTBPU(YY) = SkLTBPU;
  1256. |             endif;
  1257. |
  1258. |         EndSl;
  1259. |         fetch2();
  1260. |      EndDo;
  1261. |
  1262. |      // Close Cursor
  1263. |      closeCursor2();
  1264. |
  1265.          if  PhPstf = '40' And SC_Packer <> *Blanks;
  1266.  |             SetLL PhPctl CDCARTZ1;
  1267.  |             ReadE PhPctl CDCARTZ1;
  1268.  |             DoW Not %EOF(CDCARTZ1);
  1269.  |               CDPAKR = SC_Packer;
  1270. em01             if phmis1 = 'PRT' or phmis1 = 'PDC';  // em04
  1271. em01               cdmis2 = %char(%date():*iso0) + ' ' + %char(%time():*iso0);
  1272. em01             endif;
  1273.  |               Update  CD00RC;
  1274.  |             ReadE PhPctl CDCARTZ1;
  1275.  |             EndDo;
  1276.          endif;
  1277.  
  1278. |         EndSr;
  1279. DB01  /End-Free
  1280. DB01 ‚*-------------------------------------------------------------------*
  1281. JA01 ‚* Break by PO Number for Major Pick                                 *
  1282. JA01 ‚*-------------------------------------------------------------------*
  1283. JA01  /Free
  1284. JA01
  1285. JA01   BegSr Sr_BreakByPO#_Maj;
  1286. JA01
  1287. JA01     If In_FrstPage Or In_OverFlow;
  1288. JA01        Clear In_FrstPage;
  1289. JA01        Clear In_OverFlow;
  1290. JA01        Write HDR001;
  1291. JA01     EndIf;
  1292.  
  1293. NK01        Clear CUPO#;
  1294.  |          Clear ORDR#;
  1295. NK01        Clear USRF1;
  1296.  
  1297. DB01     Chain (MinPick#_AR(Index_Ar):Wk_OrdrNmbr) PKXAPICKP;
  1298. ash06
  1299.          if CUPO# = ' ';
  1300.            if xx > 0;
  1301.               chain(n) (Ar_PkLItem#(XX)) IVLMSTRC;  //ash07
  1302.            else;
  1303.               ivno07 = 0;
  1304.            endif;
  1305.            chain(n) (MinPick#_AR(Index_Ar)) Phpick00;
  1306.            CMNO08 =  %int(%subst(phpctl:3:7));
  1307.            //ash07 chain(N) (CMNO08) POLTOL99;
  1308.            chain(N) (CMNO08:IVNO07) POLTOL99; //ash07
  1309.            if %found(POLTOL99);
  1310.               CUPO# = %char(PONO01);
  1311.            else;  //ash07
  1312.               chain(N) (CMNO08) POLTOL99;
  1313.               //ash09 CUPO# = %char(PONO01);
  1314.               CUPO# = ' '; //ash09
  1315.            endif;
  1316.          endif;
  1317. ash06
  1318. JA01
  1319.          if usrf1 = *blanks;
  1320. JA01             RP_POORDR# = 'Customer PO#: ' + %Trim(CUPO#) + ' / ' +
  1321. JA01                        'Ordr#: ' + ORDR#  +
  1322. NK12                        '  Shmt#: ' + LOSHNO ;
  1323.          else;
  1324.              RP_POORDR# = 'Starnet PO#: ' + %Trim(CUPO#) + '/ ' +
  1325.  |                    'Customer PO#: ' + %Trim(USRF1) + '/ ' +
  1326.  |                    'Ordr#: ' + ORDR# +
  1327.                   ' Shmt#: ' + LOSHNO ;
  1328.          endif;
  1329. DB01
  1330. |        // Clear RP_MinPck#;
  1331. |        If RfPn_Flag = 'Y';
  1332. |          // RP_MinPck# = 'Minor Pick#: ' + MinPick#_AR(Index_Ar);
  1333. DB01     EndIf;
  1334.  
  1335. JA01     Write DTL002;
  1336. JA01
  1337. JA01   EndSr;
  1338. JA01
  1339. JA01  /End-Free
  1340.      ‚*-------------------------------------------------------------------*
  1341.      ‚* Print Pick Detail.                                                *
  1342.      ‚*-------------------------------------------------------------------*
  1343.       /Free
  1344.  
  1345.        BegSr Sr_PrtPickDtl;
  1346. JA01
  1347. DB01        Clear ZZ;
  1348. JA01        Clear XX;
  1349. JA01        Clear Ar_SkL;
  1350. JA01        Clear Ar_PQt;
  1351. JA01        Clear Wk_PickQnty;
  1352. JA01
  1353. RS01        // ExSr Sr_WrtSkuDetl;
  1354. RS01        ExSr Sr_WrtSkuDetlNew;
  1355.  
  1356.        EndSr;
  1357.  
  1358.       /End-Free
  1359.      ‚*-------------------------------------------------------------------*
  1360.      ‚* Write Sku Detail.                                                 *
  1361.      ‚*-------------------------------------------------------------------*
  1362.       /Free
  1363.  
  1364.        BegSr Sr_WrtSkuDetlNew;
  1365.  
  1366. DB01     Clear Wk_PickLocn;
  1367.  
  1368.          RP_SHIPPTY  = Priority_Ar(Index_Ar);
  1369.          RP_ITEMNBR  = Wk_ItemNmbr;
  1370.          RP_SKUDESC  = Wk_ItemDesc;
  1371.          RP_PICKNBR  = MinPick#_AR(Index_Ar);
  1372. DB05
  1373. |           *in35 = '0';
  1374. |           Ky_70p.am70trgr = phrout;
  1375. |           Ky_70p.am70item = RP_ITEMNBR;
  1376. |           chain %kds(Ky_70p:2) amax70p;
  1377. |           if %found(amax70p) and (am70prty >= 50);
  1378. |               *in35 = '1';
  1379. DB05        endif;
  1380. DB01
  1381. |        If RfPn_Flag = 'Y';
  1382. |           Pick#_Var = MajPick#_Ar(Index_Ar);
  1383. |           ZZ = %Lookup(Wk_ItemNmbr:Ar_PkLItem#);
  1384. |           If ZZ > 0;
  1385. |              PickLine#_Var = Ar_PkL(ZZ);
  1386. |              //ash11 If Ar_PklQty(ZZ) > OrdQty_Ar(Index_AR);
  1387.                If Ar_PklQty(ZZ) > PckQty_Ar(Index_AR);//ash11
  1388.                   //ash11 BaseQty = OrdQty_Ar(Index_AR);
  1389. |                 BaseQty = PckQty_Ar(Index_AR);//ash11
  1390. |                 If PhPSTF = '90';                        // Invoiced
  1391. |                    RP_ShipQTY  = BaseQty;
  1392. |                    Wk_TotlShpQ += BaseQty;
  1393.                  *in90 = *on;
  1394. |                 EndIf;
  1395.                   //ash11Ar_PklQty(ZZ) =  Ar_PklQty(ZZ) - OrdQty_Ar(Index_AR);
  1396. |                 Ar_PklQty(ZZ) =  Ar_PklQty(ZZ) - PckQty_Ar(Index_AR);//ash11
  1397. |              Else;
  1398. |                 BaseQty = Ar_PklQty(ZZ);
  1399. |                 If PhPSTF = '90';                        // Invoiced
  1400. |                    RP_ShipQTY  = BaseQty;
  1401. |                    Wk_TotlShpQ += BaseQty;
  1402.                  *in90 = *on;
  1403. |                 EndIf;
  1404. |                 Ar_PklQty(ZZ) =  0;
  1405. |              EndIf;
  1406. |           EndIf;
  1407. |        Else;
  1408. |           Pick#_Var = MinPick#_Ar(Index_Ar);
  1409. |           PickLine#_Var = PickLine#_Ar(Index_Ar);
  1410.         *in90 = *off;
  1411. |           Select;
  1412. |             When PhPSTF >= '20' and PhPSTF < '40';   // Printed
  1413. |               BaseQty = OrdQty_Ar(Index_AR);
  1414. |             When PhPSTF >= '40' and PhPSTF < '90';   // Packed
  1415. |               BaseQty = PckQty_Ar(Index_AR);
  1416. |             When PhPSTF = '90';                      // Invoiced
  1417. |               BaseQty = ShpQty_Ar(Index_AR);
  1418. |               RP_ShipQTY  = ShpQty_Ar(Index_AR);
  1419. |               Wk_TotlShpQ += ShpQty_Ar(Index_AR);
  1420.             *in90 = *on;
  1421. |           EndSl;
  1422. |        EndIf;
  1423. |
  1424. |        CountShpQ = BaseQty;
  1425. |
  1426. |        RP_ORDRQTY  = OrdQty_Ar(Index_AR);
  1427. |        Wk_TotlOrdQ += OrdQty_Ar(Index_AR);
  1428. |
  1429. |        ZZ = %Lookup(Wk_ItemNmbr:Ar_SkLItem#);
  1430. |        If ZZ = 0;
  1431. |            Wk_PickLocn ='NO LOCTN';
  1432. |            RP_SKULOCN = Wk_PickLocn;
  1433. |            Write DTL001;
  1434. DB02
  1435. |            Exsr   Substitute_SKUNew;
  1436. DB02
  1437. |            Clear RP_PICKNBR;
  1438. |            Clear RP_ITEMNBR;
  1439. |            Clear RP_SKUDESC;
  1440. |            Clear RP_ORDRQTY;
  1441. |            Clear RP_SHIPQTY;
  1442. |            Clear RP_PICKQTY;
  1443. |           LeaveSr;
  1444. DB01     EndIf;
  1445. ra01     skuTotal0 = 0;
  1446. ra01     RP_SKUTOTQ = 0;
  1447. ra01     moreThanOne = *Off;
  1448.  
  1449. DB01     For JJ = ZZ to YY;
  1450.  
  1451.              If In_FrstPage Or In_OverFlow;
  1452.                 Clear In_FrstPage;
  1453.                 Clear In_OverFlow;
  1454.                 Write HDR001;
  1455.              EndIf;
  1456.  
  1457. DB01         If Ar_SkLPick#(JJ) = Pick#_Var And
  1458. |               Ar_SkLItem#(JJ) = Wk_ItemNmbr;
  1459. |               If Ar_SkLLine#(JJ) = PickLine#_Var And
  1460. |                  Ar_SkLtBPU(JJ) > 0;
  1461. |                  If Ar_SkLTBPU(JJ) > CountShpQ;
  1462. |                     Wk_PickLocn = %Trim(Ar_SkLZone(JJ)) +
  1463. |                                   %Trim(Ar_SkLAISL(JJ)) +
  1464. |                                   %Trim(Ar_SkLBAY(JJ)) +
  1465. |                                   %Trim(Ar_SkLLEVL(JJ)) +
  1466. |                                   %Trim(Ar_SkLPOSN(JJ));
  1467. |                     RP_SKULOCN = Wk_PickLocn;
  1468. |                     RP_PICKQTY = CountShpQ;
  1469. |                     Ar_SkLTBPU(JJ) = Ar_SkLTBPU(JJ) - CountShpQ;
  1470. |                     CountShpQ = 0;
  1471. |                  Else;
  1472. |                     Wk_PickLocn = %Trim(Ar_SkLZone(JJ)) +
  1473. |                                   %Trim(Ar_SkLAISL(JJ)) +
  1474. |                                   %Trim(Ar_SkLBAY(JJ)) +
  1475. |                                   %Trim(Ar_SkLLEVL(JJ)) +
  1476. |                                   %Trim(Ar_SkLPOSN(JJ));
  1477. |                     RP_SKULOCN = Wk_PickLocn;
  1478. |                     RP_PICKQTY = Ar_SkLTBPU(JJ);
  1479. |                     CountShpQ = CountShpQ - Ar_SkLTBPU(JJ);
  1480. |                     Ar_SkLTBPU(JJ) = 0;
  1481. DB01               EndIf;
  1482.  
  1483. ra01               skuTotal0 = RP_PICKQTY;
  1484.  
  1485.                    Write DTL001;
  1486. DB02
  1487. |                  //DB08 Exsr   Substitute_SKUNew;
  1488. DB02
  1489. ra01               //if SKU present in > one location
  1490. ra01               if %lookUp(Wk_ItemNmbr:Ar_SkLItem#:JJ + 1) <> 0;
  1491. ra01                 RP_SKUTOTQ += skuTotal0;
  1492. ra01                 moreThanOne = *On;
  1493. ra01               else;
  1494. ra01                 if moreThanOne;
  1495. ra01                   RP_SKUTOTQ += skuTotal0;
  1496. ra01                   write SKUTOT;
  1497. ra01                   RP_SKUTOTQ = 0;
  1498. ra01                   moreThanOne = *Off;
  1499. ra01                 endif;
  1500. ra01                 skuTotal0 = 0;
  1501. ra01               endif;
  1502. DB01
  1503. |                  Clear RP_PICKNBR;
  1504. |                  Clear RP_ITEMNBR;
  1505. |                  Clear RP_SKUDESC;
  1506. |                  Clear RP_ORDRQTY;
  1507. |                  Clear RP_SHIPQTY;
  1508. |                  Clear RP_PICKQTY;
  1509. DB01            EndIf;
  1510.  
  1511. DB01         Else;
  1512. |               Clear RP_PICKNBR;
  1513. |               Clear RP_ITEMNBR;
  1514. |               Clear RP_ORDRQTY;
  1515. |               Clear RP_SHIPQTY;
  1516. |               Clear RP_SHIPPTY;
  1517. DB01            Clear RP_PICKQTY;
  1518. DB08            Exsr   Substitute_SKUNew;
  1519. DB01            LeaveSr;
  1520. |            EndIf;
  1521. |
  1522. |            //ash08 If CountShpQ = 0;
  1523. ash08        If CountShpQ = 0 and (Ar_SkLLine#(JJ) = PickLine#_Var);
  1524. |               Clear RP_PICKNBR;
  1525. |               Clear RP_ITEMNBR;
  1526. |               Clear RP_ORDRQTY;
  1527. |               Clear RP_SHIPQTY;
  1528. |               Clear RP_SHIPPTY;
  1529. DB01            Clear RP_PICKQTY;
  1530. DB08            Exsr   Substitute_SKUNew;
  1531. DB01            LeaveSr;
  1532. DB01         EndIf;
  1533.  
  1534.          EndFor;
  1535. DB08     Exsr   Substitute_SKUNew;
  1536.        EndSr;
  1537.  
  1538.       /End-Free
  1539. DB02 ‚*-------------------------------------------------------------------*
  1540. |    ‚* Get Substituted SKU                                               *
  1541. |    ‚*-------------------------------------------------------------------*
  1542. |     /Free
  1543. |
  1544. |      BegSr  Substitute_SKUNew;
  1545. |
  1546. |        DT3_ITEM    =  *Blanks;          // printed on report
  1547. |        DT3_ItemNbr  =  *Blanks;       // for data fetch
  1548. |        DT3_ItemNbr  =  Wk_ItemNmbr;
  1549. |
  1550. DB02     //*DB03 C6AENB  =  %INT( %SUBST(PDMIS2:1:2) );
  1551. DB03     C6AENB  =  %INT(%SubSt(Pick#:1:2));
  1552. DB02     C6DCCD  =  '1' ;
  1553. DB03     C6CVNB  =  Ordr#;
  1554. DB02     //*DB03 C6CVNB  =  %SUBST(PDMIS2:3:7) ;
  1555. |
  1556. |        Chain (C6AENB:C6DCCD:C6CVNB)  MBC6RES0 ;  // Order Header
  1557. |        IF  %Found(MBC6RES0) ;
  1558. |
  1559. |                  Chain (C6AENB:C6DCCD:C6CVNB:DT3_ItemNbr) MBCDRESM;    // Order d
  1560. |                  if %found(MBCDRESM)  And  N_CDAALM <> *blanks;
  1561. |                     DT3_ITEM   =  N_CDAALM;
  1562. |                  endif;
  1563. DB02
  1564. DB08     ELSE ;
  1565.  |          Chain (C6AENB:C6DCCD:C6CVNB)  MBBWCPS0 ;  // Order Header History
  1566.  |          IF  %Found(MBBWCPS0) ;
  1567.  |              Chain (C6AENB:DT3_ItemNbr:C6DCCD:C6CVNB)  MBGGCPS5 ;      // Order d
  1568.  |              if  %found(MBGGCPS5)  And  GGABYG <> *blanks;
  1569.  |                  DT3_Item  =  GGABYG;
  1570.  |              endif;
  1571. DB08        ENDIF ;
  1572. DB02
  1573. |        ENDIF ;
  1574. |
  1575. |           if  DT3_ITEM   <> *Blanks;
  1576. |               Write  DTL003;
  1577. |           endif;
  1578. |
  1579. |           Clear DT3_ITEM  ;
  1580. |
  1581. |      EndSr;
  1582. |
  1583. DB02  /End-Free
  1584. DB03 ‚*-------------------------------------------------------------------*
  1585. |    ‚* Mincron_Sub_Item                                                  *
  1586. |    ‚*-------------------------------------------------------------------*
  1587. |     /Free
  1588. |
  1589. |      BegSr  Mincron_Sub_Item;
  1590. |
  1591. |      DT3_ItemNbr  =  *Blanks;       // for data fetch
  1592. |      DT3_ItemNbr  =  Wk_ItemNmbr;
  1593. |
  1594. |      SetLL  DT3_ItemNbr ITM020PLM1; // Item substitution file
  1595. |      ReadE  DT3_ItemNbr ITM020PLM1;
  1596. |      DoW  NOT  %EOF(ITM020PLM1);
  1597. |         If I020_RITM <> I020_BITM;
  1598. |            Chain (Wk_HdPoNo:I020_RITM) POPCDIRL3;
  1599. |            If %Found(POPCDIRL3);
  1600. |               DT3_ITEM =  WfSKU;
  1601. |               LeaveSr;
  1602. |            Endif;
  1603. |         EndIf;
  1604. |         ReadE  DT3_ItemNbr ITM020PLM1;
  1605. |      EndDo;
  1606. |
  1607. |      EndSr;
  1608. |
  1609. DB03  /End-Free
  1610. ash02‚*-------------------------------------------------------------------*
  1611. |    ‚* New_Mincron_Sub_Item                                              *
  1612. |    ‚*-------------------------------------------------------------------*
  1613. |     /Free
  1614. |
  1615. |      BegSr  New_Mincron_Sub_Item;
  1616. |
  1617. |        //ash02 Chain (C6AENB:C6DCCD:C6CVNB:DT3_ItemNbr) MBCDRESM;
  1618.          //ash04
  1619.           Wk_mis2sku = %editc(c6aenb:'X')+c6cvnb+DT3_ItemNbr;
  1620.           kk =  %Lookup(Wk_mis2sku:Ar_cdsku);
  1621.           if kk > 0;
  1622. |           Chain (C6AENB:C6DCCD:C6CVNB:Ar_cdlin(kk)) MBCDRES0;
  1623. |           if  %found(MBCDRES0);
  1624. |              Chain (Wk_HDPONO:s0_CDAAYJ) POLCDIR2;
  1625. |            //ash03  If  %Found(POPCDIRL2);      // Mincron Order
  1626. |              If  %Found(POLCDIR2) and
  1627. |                   s0_CDAITX <> l2_WfSKU ;   // Mincron Order
  1628. |                 DT3_ITEM =  l2_WfSKU;
  1629. |              Endif;
  1630. |           endif;
  1631. |         endif;
  1632. |
  1633. |      EndSr;
  1634. |
  1635. DB03  /End-Free
  1636. DB03  *-------------------------------------------------------------------*
  1637. |     * Valida If Serial Number Entered is Numeric                        *
  1638. |     *-------------------------------------------------------------------*
  1639. |    C     Sr_TestNumericBegSr
  1640. |     *                  -----
  1641. |    C                   TestN                   Chk_Num_Pono         30
  1642. |    C                   If        Not *In30
  1643. |    C                   Eval      Wk_Num_Check = *On
  1644. |    C                   EndIf
  1645. |     *                  -----
  1646. DB03 C                   EndSr
  1647. em02  **********************************************************************
  1648.  |    * Subroutine CheckItemTypes                                          *
  1649.  |    **********************************************************************
  1650.  |    /free
  1651.  |      begsr CheckItemTypes;
  1652.  |
  1653.  |       Wk_Equip = 'N';
  1654.  |       Wk_Part = 'N';
  1655.  |
  1656.  |       exec sql
  1657.  |         declare csr1 cursor for
  1658.  |           select phmis1 from phpick29 where phldno = :RP_LOADNBR
  1659.  |             group by phmis1 order by phmis1;
  1660.  |
  1661.  |       exec sql
  1662.  |          open csr1;
  1663.  |
  1664.  |       exec sql fetch csr1 into :phmis1;
  1665.  |
  1666.  |       dow sqlstt = '00000';
  1667.  |
  1668. em04       if phmis1 = 'PRT' or phmis1 = 'PDC';
  1669.  |           Wk_Part = 'Y';
  1670.  |         Endif;
  1671.  |
  1672. em04       if phmis1 <> *blanks and phmis1 <> 'PRT' and phmis1 <> 'PDC';
  1673.  |           Wk_Equip = 'Y';
  1674.  |         Endif;
  1675.  |
  1676.  |         exec sql fetch csr1 into :phmis1;
  1677.  |       enddo;
  1678.  |
  1679.  |       exec sql
  1680.  |          close csr1;
  1681.  |
  1682.  |       if Wk_Equip = 'Y' and Wk_Part = 'Y';
  1683.  |         RP_MESSAGE = '(MERGE EQUIPMENT AND PARTS)';
  1684.  |       endif;
  1685.  |
  1686.  |      endsr;
  1687. em02  /end-free
  1688.      ‚*-------------------------------------------------------------------*
  1689.       **********************************************************************
  1690. NK06 C/COPY QCPYLESRC,CBCOVPR
  1691.      ‚*-------------------------------------------------------------------*
  1692. DB01  *
  1693. |    P*--------------------------------------------------
  1694. |    P* Procedure name: declareCursor
  1695. |    P* Purpose:        Declare cursor
  1696. |    P* Returns:
  1697. |    P*--------------------------------------------------
  1698. |    P declareCursor   B
  1699. |    D declareCursor   PI
  1700. |    C/Exec SQL
  1701. |     + Declare @C1 Cursor for
  1702. |     + Select PHRFPN, PDSTYL||PDSSFX, PHPCTL, PDMIS2, PDSTYD,
  1703. |     +            PDPKLN, PDMIS1, Sum(PDPIQT), Sum(PDSHQT), Sum(PDPAKU)
  1704. |     + FROM PHPICK28 a, PDPICK00 b WHERE
  1705. |     + PHPCTL = PDPCTL and  PHRFPN = :PHPCTL
  1706. |     + GROUP BY  PHRFPN, PHPCTL, PDMIS2, PDSTYL||PDSSFX, PDSTYD,
  1707. |     +            PDPKLN, PDMIS1
  1708. |     + ORDER BY  PHRFPN, PDMIS2, PHPCTL, PDSTYL||PDSSFX
  1709. |    C/End-Exec
  1710. |    P declareCursor   E
  1711. |    P*--------------------------------------------------
  1712. |    P* Procedure name: openCursor
  1713. |    P* Purpose:        Open cursor
  1714. |    P* Returns:
  1715. |    P*--------------------------------------------------
  1716. |     *
  1717. |    P OpenCursor      B
  1718. |    D OpenCursor      PI
  1719. |     *
  1720. |    C/Exec SQL
  1721. |     + Open @C1
  1722. |    C/End-Exec
  1723. |    P openCursor      E
  1724. |    P*--------------------------------------------------
  1725. |    P* Procedure name: fetch
  1726. |    P* Purpose:        fetch record from cursor
  1727. |    P* Returns:
  1728. |    P*--------------------------------------------------
  1729. |     *
  1730. |    P fetch           B
  1731. |    D fetch           PI
  1732. |     *
  1733. |    C/Exec SQL
  1734. |     + Fetch @C1 into :PckOrd_DS
  1735. |    C/End-Exec
  1736. |    P fetch           E
  1737. |    P*--------------------------------------------------
  1738. |    P* Procedure name: closeCursor
  1739. |    P* Purpose:        Close cursor
  1740. |    P* Returns:
  1741. |    P*--------------------------------------------------
  1742. |     *
  1743. |    P CloseCursor     B
  1744. |    D CloseCursor     PI
  1745. |     *
  1746. |    C/Exec SQL
  1747. |     + Close @C1
  1748. |    C/End-Exec
  1749. |    P closeCursor     E
  1750. DB01  *
  1751. |    P*--------------------------------------------------
  1752. |    P* Procedure name: declareCursor1
  1753. |    P* Purpose:        Declare cursor
  1754. |    P* Returns:
  1755. |    P*--------------------------------------------------
  1756. |    P declareCursor1  B
  1757. |    D declareCursor1  PI
  1758. |    C/Exec SQL
  1759. |     + Declare @X1 Cursor for
  1760. |     + Select PHRFPN, PDSTYL||PDSSFX, PHPCTL, PDMIS2, PDSTYD,
  1761. |     +            PDPKLN, PDMIS1, Sum(PDPIQT), Sum(PDSHQT), Sum(PDPAKU)
  1762. |     + FROM PHPICK28 a, PDPICK00 b WHERE
  1763. |     + PHPCTL = PDPCTL and  PHPCTL = :PHPCTL
  1764. |     + GROUP BY  PHRFPN, PHPCTL, PDMIS2, PDSTYL||PDSSFX, PDSTYD,
  1765. |     +            PDPKLN, PDMIS1
  1766. |     + ORDER BY  PHRFPN, PDMIS2, PHPCTL, PDSTYL||PDSSFX
  1767. |    C/End-Exec
  1768. |    P declareCursor1  E
  1769. |    P*--------------------------------------------------
  1770. |    P* Procedure name: openCursor1
  1771. |    P* Purpose:        Open cursor
  1772. |    P* Returns:
  1773. |    P*--------------------------------------------------
  1774. |     *
  1775. |    P OpenCursor1     B
  1776. |    D OpenCursor1     PI
  1777. |     *
  1778. |    C/Exec SQL
  1779. |     + Open @X1
  1780. |    C/End-Exec
  1781. |    P openCursor1     E
  1782. |    P*--------------------------------------------------
  1783. |    P* Procedure name: fetch1
  1784. |    P* Purpose:        fetch record from cursor
  1785. |    P* Returns:
  1786. |    P*--------------------------------------------------
  1787. |     *
  1788. |    P fetch1          B
  1789. |    D fetch1          PI
  1790. |     *
  1791. |    C/Exec SQL
  1792. |     + Fetch @X1 into :PckOrd_DS
  1793. |    C/End-Exec
  1794. |    P fetch1          E
  1795. |    P*--------------------------------------------------
  1796. |    P* Procedure name: closeCursor1
  1797. |    P* Purpose:        Close cursor
  1798. |    P* Returns:
  1799. |    P*--------------------------------------------------
  1800. |     *
  1801. |    P CloseCursor1    B
  1802. |    D CloseCursor1    PI
  1803. |     *
  1804. |    C/Exec SQL
  1805. |     + Close @X1
  1806. |    C/End-Exec
  1807. |    P closeCursor1    E
  1808. DB01
  1809. DB01  *
  1810. |    P*--------------------------------------------------
  1811. |    P* Procedure name: declareCursor2
  1812. |    P* Purpose:        Declare cursor
  1813. |    P* Returns:
  1814. |    P*--------------------------------------------------
  1815. |    P declareCursor2  B
  1816. |    D declareCursor2  PI
  1817. |    C/Exec SQL
  1818. |     + Declare @S1 Cursor for
  1819. |     + Select CDPCTL, CDSTYL||CDSSFX, CDPKLN, CDZONE, CDAISL, CDBAY,
  1820. |     +            CDLEVL, CDPOSN, Sum(CDTBPU), Sum(CDPAKU)
  1821. |     + FROM CDCART00 Where
  1822. |     + CDPCTL = :PHPCTL
  1823. |     + GROUP BY  CDPCTL, CDSTYL||CDSSFX, CDPKLN, CDZONE, CDAISL,
  1824. |     +           CDBAY, CDLEVL, CDPOSN
  1825. |     + ORDER BY  CDPCTL, CDSTYL||CDSSFX, CDPKLN
  1826. |    C/End-Exec
  1827. |    P declareCursor2  E
  1828. |    P*--------------------------------------------------
  1829. |    P* Procedure name: openCursor2
  1830. |    P* Purpose:        Open cursor
  1831. |    P* Returns:
  1832. |    P*--------------------------------------------------
  1833. |     *
  1834. |    P OpenCursor2     B
  1835. |    D OpenCursor2     PI
  1836. |     *
  1837. |    C/Exec SQL
  1838. |     + Open @S1
  1839. |    C/End-Exec
  1840. |    P openCursor2     E
  1841. |    P*--------------------------------------------------
  1842. |    P* Procedure name: fetch2
  1843. |    P* Purpose:        fetch record from cursor
  1844. |    P* Returns:
  1845. |    P*--------------------------------------------------
  1846. |     *
  1847. |    P fetch2          B
  1848. |    D fetch2          PI
  1849. |     *
  1850. |    C/Exec SQL
  1851. |     + Fetch @S1 into :SkuLoc_DS
  1852. |    C/End-Exec
  1853. |    P fetch2          E
  1854. |    P*--------------------------------------------------
  1855. |    P* Procedure name: closeCursor2
  1856. |    P* Purpose:        Close cursor
  1857. |    P* Returns:
  1858. |    P*--------------------------------------------------
  1859. |     *
  1860. |    P CloseCursor2    B
  1861. |    D CloseCursor2    PI
  1862. |     *
  1863. |    C/Exec SQL
  1864. |     + Close @S1
  1865. |    C/End-Exec
  1866. |    P closeCursor2    E
  1867. DB01
  1868.      ‚*-------------------------------------------------------------------*
  1869. ** Error Messages
  1870. E - Load Number Not Found.
  1871. I - Press F16 to Confirm.
  1872. I - Trailer Load Summary Document Printed.
  1873. I - No Load Entered. Please Enter Load(S).
  1874. E - Invalid PKMS User entered
  1875. ** AS400 Commands
  1876. OVRPRTF FILE(GPK510CP) TOFILE(*FILE) OUTQ(          ) COPIES(   )
  1877.  
© 2004-2019 by midrange.com generated in 0.01s valid xhtml & css