SAP
ZPURPRG5
上一篇 / 下一篇 2007-12-12 00:00:00 / 个人分类:工作日記
*&---------------------------------------------------------------------* *& Report ZPURPRG5 * *& * *&---------------------------------------------------------------------* *& Sun Luen Purchase Order Report * *& * *&---------------------------------------------------------------------* REPORT ZPURPRG5. TABLES: T005T, ADRC, T052U, EKPO, LFA1, ADR2, ADR3, EKET. DATA:BEGIN OF ZPUR_TAB, EBELN1 LIKE EKKO-EBELN, EBELP1 LIKE EKPO-EBELP, EINDT1 LIKE EKET-EINDT, MENGE1 LIKE EKET-MENGE, MATNR1 LIKE EKPO-MEINS, TXZ1 LIKE EKPO-TXZ01, IDNLF1 LIKE EKPO-IDNLF, MEINS1 LIKE EKPO-MEINS, NETPR1 LIKE EKPO-NETPR, END OF ZPUR_TAB. DATA: EBELN2 LIKE EKKO-EBELN, EBELP2 LIKE EKPO-EBELP, AMOUNT1 LIKE EKPO-NETWR, STR1 TYPE STRING , STR2 TYPE STRING , STR3 TYPE STRING , CURR1 LIKE SY-WAERS, LANGU LIKE SY-LANGU, WORDS1 LIKE SPELL, DATE TYPE STRING, DATED TYPE STRING, DATEM TYPE STRING, DATEY TYPE STRING, DATE1 LIKE EKET-EINDT. * amount1(15) type p decimals 3 . FORM SUB2 TABLES INTTAB STRUCTURE ITCSY OUTTAB STRUCTURE ITCSY. READ TABLE INTTAB INDEX 1. STR1 = INTTAB-VALUE. SPLIT STR1 AT '.' INTO DATED DATEM DATEY . IF SY-SUBRC = 0. READ TABLE OUTTAB INDEX 1. MOVE DATED TO OUTTAB-VALUE. MODIFY OUTTAB INDEX SY-TABIX. READ TABLE OUTTAB INDEX 2. MOVE DATEM TO OUTTAB-VALUE. MODIFY OUTTAB INDEX SY-TABIX. READ TABLE OUTTAB INDEX 3. MOVE DATEY TO OUTTAB-VALUE. MODIFY OUTTAB INDEX SY-TABIX. ENDIF. ENDFORM. "SUB2 *&--------------------------------------------------------------------* *& Form SUB3 *&--------------------------------------------------------------------* * text *---------------------------------------------------------------------* * -->INTTAB text * -->OUTTAB text *---------------------------------------------------------------------* FORM SUB3 TABLES INTTAB STRUCTURE ITCSY OUTTAB STRUCTURE ITCSY. READ TABLE INTTAB INDEX 1. STR1 = INTTAB-VALUE. SPLIT STR1 AT '.' INTO DATED DATEM DATEY . IF SY-SUBRC = 0. CASE DATEM. WHEN '01'. DATEM = 'JAN'. WHEN '02'. DATEM = 'FEB'. WHEN '03'. DATEM = 'MAR'. WHEN '04'. DATEM = 'APR'. WHEN '05'. DATEM = 'MAY'. WHEN '06'. DATEM = 'JUN'. WHEN '07'. DATEM = 'JUL'. WHEN '08'. DATEM = 'AUG'. WHEN '09'. DATEM = 'SEP'. WHEN '10'. DATEM = 'OCT'. WHEN '11'. DATEM = 'NOV'. WHEN '12'. DATEM = 'DEC'. ENDCASE. READ TABLE OUTTAB INDEX 1. MOVE DATED TO OUTTAB-VALUE. MODIFY OUTTAB INDEX SY-TABIX. READ TABLE OUTTAB INDEX 2. MOVE DATEM TO OUTTAB-VALUE. MODIFY OUTTAB INDEX SY-TABIX. READ TABLE OUTTAB INDEX 3. MOVE DATEY TO OUTTAB-VALUE. MODIFY OUTTAB INDEX SY-TABIX. ENDIF. ENDFORM. "SUB3 *&--------------------------------------------------------------------* *& Form SUB1 *&--------------------------------------------------------------------* * text *---------------------------------------------------------------------* * -->INTTAB text * -->OUTTAB text *---------------------------------------------------------------------* FORM SUB1 TABLES INTTAB STRUCTURE ITCSY OUTTAB STRUCTURE ITCSY. READ TABLE INTTAB INDEX 1. STR1 = INTTAB-VALUE. STR2 = ',' . STR3 = '.' . SEARCH STR1 FOR STR2 . IF SY-SUBRC = 0 . REPLACE STR2 WITH STR3 INTO STR1. ENDIF. AMOUNT1 = STR1. READ TABLE INTTAB INDEX 2. CURR1 = INTTAB-VALUE. READ TABLE INTTAB INDEX 3. LANGU = INTTAB-VALUE. IF LANGU EQ 'ZF'. LANGU = 'M '. ENDIF. IF CURR1 EQ 'JPY'. STR1 = TRUNC( AMOUNT1 ). CALL FUNCTION 'SPELL_AMOUNT' EXPORTING AMOUNT = STR1 CURRENCY = CURR1 FILLER = ' ' LANGUAGE = LANGU IMPORTING IN_WORDS = WORDS1 EXCEPTIONS NOT_FOUND = 1 TOO_LARGE = 2 OTHERS = 3. ELSE. *call function 'REPLACE_SUBSTRING' *exporting *I_OLD_SUBSTRING = ',' *I_new_SUBSTRING = '.' *I_STRING = str1 * *importing *E_STRING = str2 . *amount1 = STR2 . CALL FUNCTION 'SPELL_AMOUNT' EXPORTING AMOUNT = AMOUNT1 CURRENCY = CURR1 FILLER = ' ' LANGUAGE = LANGU IMPORTING IN_WORDS = WORDS1 EXCEPTIONS NOT_FOUND = 1 TOO_LARGE = 2 OTHERS = 3. ENDIF. * WRITE WORDS1. IF SY-SUBRC = 0. READ TABLE OUTTAB INDEX 1. MOVE WORDS1-WORD TO OUTTAB-VALUE. SHIFT OUTTAB-VALUE LEFT DELETING LEADING SPACE. MODIFY OUTTAB INDEX SY-TABIX. READ TABLE OUTTAB INDEX 2. MOVE WORDS1-DECWORD TO OUTTAB-VALUE. SHIFT OUTTAB-VALUE LEFT DELETING LEADING SPACE. MODIFY OUTTAB INDEX SY-TABIX. READ TABLE OUTTAB INDEX 3. MOVE WORDS1-DIG02 TO OUTTAB-VALUE. SHIFT OUTTAB-VALUE LEFT DELETING LEADING SPACE. MODIFY OUTTAB INDEX SY-TABIX. ELSE. READ TABLE OUTTAB INDEX 1. * with key name = 'WORDS2'. MOVE 'invalid data' TO OUTTAB-VALUE. SHIFT OUTTAB-VALUE LEFT DELETING LEADING SPACE. MODIFY OUTTAB INDEX SY-TABIX. READ TABLE OUTTAB INDEX 2. * with key name = 'WORDS2'. MOVE 'invalid data' TO OUTTAB-VALUE. SHIFT OUTTAB-VALUE LEFT DELETING LEADING SPACE. MODIFY OUTTAB INDEX SY-TABIX. ENDIF. ENDFORM. "SUB1 *&--------------------------------------------------------------------* *& Form SUB6 *&--------------------------------------------------------------------* * text *---------------------------------------------------------------------* * -->INTTAB text * -->OUTTAB text *---------------------------------------------------------------------* FORM SUB6 TABLES INTTAB STRUCTURE ITCSY OUTTAB STRUCTURE ITCSY. READ TABLE INTTAB INDEX 1. SELECT SINGLE * FROM ADR2 WHERE ADDRNUMBER = INTTAB-VALUE AND R3_USER = 1. IF SY-SUBRC = 0. READ TABLE OUTTAB INDEX 1. MOVE ADR2-TEL_NUMBER TO OUTTAB-VALUE. MODIFY OUTTAB INDEX SY-TABIX. *ELSE. * READ TABLE OUTTAB INDEX 1. * MOVE 'INVALID DATA' TO OUTTAB-VALUE. * MODIFY OUTTAB INDEX SY-TABIX. ENDIF. ENDFORM. "SUB6 *&--------------------------------------------------------------------* *& Form SUB7 *&--------------------------------------------------------------------* * text *---------------------------------------------------------------------* * -->INTTAB text * -->OUTTAB text *---------------------------------------------------------------------* FORM SUB7 TABLES INTTAB STRUCTURE ITCSY OUTTAB STRUCTURE ITCSY. READ TABLE INTTAB INDEX 1. SELECT SINGLE * FROM ADR3 WHERE ADDRNUMBER = INTTAB-VALUE. IF SY-SUBRC = 0. READ TABLE OUTTAB INDEX 1. MOVE ADR3-FAX_NUMBER TO OUTTAB-VALUE. MODIFY OUTTAB INDEX SY-TABIX. *ELSE. * READ TABLE OUTTAB INDEX 1. * MOVE 'INVALID DATA' TO OUTTAB-VALUE. * MODIFY OUTTAB INDEX SY-TABIX. ENDIF. ENDFORM. "SUB7 *&--------------------------------------------------------------------* *& Form SUB8 *&--------------------------------------------------------------------* * text *---------------------------------------------------------------------* * -->INTTAB text * -->OUTTAB text *---------------------------------------------------------------------* FORM SUB8 TABLES INTTAB STRUCTURE ITCSY OUTTAB STRUCTURE ITCSY. READ TABLE INTTAB INDEX 1. SELECT SINGLE * FROM ADR2 WHERE ADDRNUMBER = INTTAB-VALUE AND R3_USER = 3. IF SY-SUBRC = 0. READ TABLE OUTTAB INDEX 1. MOVE ADR2-TEL_NUMBER TO OUTTAB-VALUE. MODIFY OUTTAB INDEX SY-TABIX. *ELSE. * READ TABLE OUTTAB INDEX 1. * MOVE 'INVALID DATA' TO OUTTAB-VALUE. * MODIFY OUTTAB INDEX SY-TABIX. ENDIF. ENDFORM. "SUB8 *FORM SUB2 TABLES INTTAB STRUCTURE ITCSY * OUTTAB STRUCTURE ITCSY. * READ TABLE INTTAB INDEX 1. * EBELN2 = INTTAB-VALUE. * READ TABLE INTTAB INDEX 2. * EBELP2 = INTTAB-VALUE. ** SELECT EKET-EBELN,EKET-EBELP,EKET-EINDT,EKET-MENGE,EKET-MENGE * **EKPO-NETPR AS AMOUNT,EKPO-MATNR,EKPO-TXZ01,EKPO-IDNLF,EKPO-MEINS, **EKPO-NETPR FROM EKET INNER JOIN EKPO ON EKPO-EBELN = EKET-EBELN AND **EKET-EBELP = EKPO-EBELP WHERE EKET-EBELN = EBELN2 *ENDFORM. TABLES:TINCT. *&--------------------------------------------------------------------* *& Form sub9 *&--------------------------------------------------------------------* * text *---------------------------------------------------------------------* * -->INTTAB text * -->OUTTAB text *---------------------------------------------------------------------* FORM SUB9 TABLES INTTAB STRUCTURE ITCSY OUTTAB STRUCTURE ITCSY. READ TABLE INTTAB INDEX 1. SELECT SINGLE * FROM TINCT WHERE INCO1 = INTTAB-VALUE AND SPRAS = 'M' . IF SY-SUBRC = 0. READ TABLE OUTTAB INDEX 1. MOVE TINCT-BEZEI TO OUTTAB-VALUE. MODIFY OUTTAB INDEX SY-TABIX. ENDIF. ENDFORM. "sub9 *&--------------------------------------------------------------------* *& Form sub_deldate *&--------------------------------------------------------------------* * text *---------------------------------------------------------------------* * -->INTTAB text * -->OUTTAB text *---------------------------------------------------------------------* FORM SUB_DELDATE TABLES INTTAB STRUCTURE ITCSY OUTTAB STRUCTURE ITCSY. READ TABLE INTTAB INDEX 1. EBELN2 = INTTAB-VALUE. CASE STRLEN( EBELN2 ). WHEN 8. CONCATENATE '00' EBELN2 INTO EBELN2. WHEN 9. CONCATENATE '0' EBELN2 INTO EBELN2. ENDCASE. READ TABLE INTTAB INDEX 2. EBELP2 = INTTAB-VALUE. SELECT SINGLE EINDT INTO EKET-EINDT FROM EKET WHERE EBELN = EBELN2 AND EBELP = EBELP2 . IF SY-SUBRC = 0. PERFORM DATE_DD_MMM_YYYY. READ TABLE OUTTAB INDEX 1. MOVE DATE TO OUTTAB-VALUE. MODIFY OUTTAB INDEX SY-TABIX. ENDIF. ENDFORM. "sub_deldate *&--------------------------------------------------------------------* *& Form DATE_DD_MMM_YYYY *&--------------------------------------------------------------------* * text *---------------------------------------------------------------------* FORM DATE_DD_MMM_YYYY. DATED = EKET-EINDT+6(2). DATEM = EKET-EINDT+4(2). DATEY = EKET-EINDT+0(4). IF EKET-EINDT+4(2) = '01'. DATEM = '-Jan-'. ELSEIF EKET-EINDT+4(2) = '02'. DATEM = '-Feb-'. ELSEIF EKET-EINDT+4(2) = '03'. DATEM = '-Mar-'. ELSEIF EKET-EINDT+4(2) = '04'. DATEM = '-Apr-'. ELSEIF EKET-EINDT+4(2) = '05'. DATEM = '-May-'. ELSEIF EKET-EINDT+4(2) = '06'. DATEM = '-Jun-'. ELSEIF EKET-EINDT+4(2) = '07'. DATEM = '-Jul-'. ELSEIF EKET-EINDT+4(2) = '08'. DATEM = '-Aug-'. ELSEIF EKET-EINDT+4(2) = '09'. DATEM = '-Sep-'. ELSEIF EKET-EINDT+4(2) = '10'. DATEM = '-Oct-'. ELSEIF EKET-EINDT+4(2) = '11'. DATEM = '-Nov-'. ELSEIF EKET-EINDT+4(2) = '12'. DATEM = '-Dec-'. ENDIF. CONCATENATE DATED DATEM DATEY INTO DATE. ENDFORM. " DATE_DD_MMM_YYYY.
导入论坛 引用链接 收藏 分享给好友 推荐到圈子 管理 举报
TAG:


