close

之前收到了,採購提出的需求,希望apmt110採購收貨確認後,能夠發送MAIL通知請購者去驗收!

原本考慮用EASYFLOW處理,但是發現EF不能依照每次的請購者不同來通知!

只好來想其他方法!

估狗了一下,發現有人建議用鼎新內建的 cl_flow_notify()來處理

好啦,來研究一下~~

 

要使用cl_flow_notify()前提有幾件事要準備好

1.aooi999 MAIL參數維護作業,裡面MAIL預設主機要先設定好,要測試設定正不正確可以到

  <topprod:/u1/topprod/tiptop/ds4gl2/bin/javamail/demo> 裡,去修改test.xml,改成你主機的設定,然後執行runjmail來測試

2.預設郵件主機設定好後,aooi999裡新增程式代號 ex:apmt110,並勾選允許執行JAVAMAIL功能

3.p_flow裡,去新增一個流程,單身程式代號填入功能選Y確認,MAIL收件者如果都固定,可以打入,但這次要依照請購單的請購者不同來發送,所以這邊    可以先隨便填一個人。


在 CALL t110sub_y_chk 之前,我先呼叫自己建立的FUNCTION

WHEN "confirm"
            IF cl_chk_act_auth() AND NOT cl_null(g_rva.rva01) THEN
              #CALL t110_y()                               #FUN-9C0076 mark
              #FUN-9C0076 add str ---
               #CALL t110sub_y_chk(g_rva.rva01,g_argv5,g_argv2,g_argv6)   #CALL 原確認的 check 段#FUN-A10130 #CHI-C30118 mark
               CALL t110_upgag()                                          #CALL自建的FUNTION by reo20161214
               CALL t110sub_y_chk(g_rva.rva01,FALSE,'Y',g_argv5,g_argv2,g_rvu03_flag,g_argv6) #CHI-C30118 add


#為了依據請購單請購者寄送通知,建立這個FUNTION

FUNCTION t110_upgag()
DEFINE l_gag06 LIKE gag_file.gag06
DEFINE l_gag11 LIKE gag_file.gag11
DEFINE l_pmk12 LIKE pmk_file.pmk12
DEFINE l_rvb04 LIKE rvb_file.rvb04
DEFINE l_pmn24 LIKE pmn_file.pmn24
DEFINE l_zx02  LIKE zx_file.zx02
DEFINE l_zx09  LIKE zx_file.zx09
DEFINE l_gag08 LIKE gag_file.gag08
DEFINE l_rvb05 LIKE rvb_file.rvb05
DEFINE l_rvb051 LIKE rvb_file.rvb051
DEFINE l_rvb02 LIKE rvb_file.rvb02


LET l_gag06=''
LET l_gag11=''
LET l_zx02=''
LET l_zx09=''
LET l_gag08='apmt110收貨通知,請前往驗收!'


#先抓收貨單有幾張採購單
DECLARE t110_rvb04 CURSOR FOR
    SELECT DISTINCT rvb04 FROM rvb_file
    WHERE rvb01 = g_rva.rva01

    FOREACH t110_rvb04 INTO l_rvb04
     IF STATUS THEN
        CALL cl_err('foreach:',SQLCA.sqlcode,0)
        RETURN
     END IF

     #抓採購單有幾張請購單
     DECLARE t110_pmn24 CURSOR FOR
       SELECT DISTINCT pmn24 FROM pmn_file

         WHERE pmn01=l_rvb04

        FOREACH t110_pmn24 INTO l_pmn24
         IF STATUS THEN
           CALL cl_err('foreach:',SQLCA.sqlcode,0)
           RETURN
         END IF

         #請購者
         SELECT pmk12 INTO l_pmk12 FROM pmk_file
         WHERE pmk01=l_pmn24

         IF cl_null(l_gag11) THEN
            LET l_gag11 = l_pmk12
         ELSE
            LET l_gag11 = l_gag11 CLIPPED,":",l_pmk12
         END IF

         #名字,MAIL
         SELECT zx02,zx09 INTO l_zx02,l_zx09 FROM zx_file
         WHERE zx01=l_pmk12

         IF NOT cl_null(l_zx02) or NOT cl_null(l_zx09) THEN
            IF cl_null(l_gag06) THEN
               LET l_gag06 = l_zx09 CLIPPED,":",l_zx02
            ELSE
               LET l_gag06 = l_gag06 CLIPPED,";",l_zx09 CLIPPED,":",l_zx02
            END IF
         END IF

        END FOREACH

   END FOREACH

#單身內容
DECLARE t110_rvb05 CURSOR FOR

SELECT rvb02,rvb05,rvb051 FROM rvb_file
    WHERE rvb01 = g_rva.rva01

    FOREACH t110_rvb05 INTO l_rvb02,l_rvb05,l_rvb051
     IF STATUS THEN
        CALL cl_err('foreach:',SQLCA.sqlcode,0)
        RETURN
     END IF

     LET l_gag08 = l_gag08,"<br>",l_rvb02,":",l_rvb05,":",l_rvb051,"</br>"

    END FOREACH

#更新gag_file
   BEGIN WORK

   UPDATE gag_file SET gag06 = l_gag06,gag11 = l_gag11,gag08=l_gag08
   WHERE gag03='apmt110' AND gag04='Y'   AND gag01 IN (SELECT gaf01 FROM gaf_file WHERE gafacti='Y')

   IF STATUS THEN
            CALL s_errmsg('','','upd gag_file',SQLCA.sqlcode,1)
            ROLLBACK WORK
   ELSE
         COMMIT WORK

   END IF


END FUNCTION


這樣每次按下確認前,去撈出請購者的資料,UPDATE到gag_file

然後確認段裡用cl_flow_notify(Y)

這樣MAIL就發送了!

收工

arrow
arrow
    全站熱搜

    桄桄 發表在 痞客邦 留言(0) 人氣()