* Descriptions : PhhCL * Updates Tables : NONE * Input Parameters : * Output Parameters : * Return Codes : * Special Logic : * Includes : ************************************************************************ * Modification Log ************************************************************************ * Date Ver. Programmer Descriptions * -------- ---- ------------ ------------------------------------------- * 05/12/08 Chia Hui ************************************************************************ REPORT ZRUAP011 MESSAGE-ID YU LINE-SIZE 130 NO STANDARD PAGE HEADING. ************************************************************************ * Tables Definitions ************************************************************************ TABLES : ZGUI27, ZGUI28, ZGUI0, LFA1, KNA1, MAKT, ZGUI4,ZGUI1A,ADRC,BSEC ,VBAP. ************************************************************************ * Data Definitions ************************************************************************ DATA: T_ZGUI27 LIKE ZGUI27 OCCURS 0 WITH HEADER LINE. DATA : BEGIN OF INTAB OCCURS 100. INCLUDE STRUCTURE ZGUI27. DATA : ANRED LIKE ADRC-SORT2, SELECTED, STYLE(2), PREFIX(2), NUMBER(8), ADDRESS2(50), END OF INTAB. DATA: T_DATA LIKE ZDISCONT OCCURS 0 WITH HEADER LINE. DATA : W_DTYPE LIKE ZGUI27-DOCTYPE. DATA: YES(1), FLD_NAME(30), I TYPE I, SORT_TYPE TYPE I, W_CNT LIKE SY-TABIX. DATA:P_CURR TYPE T001-WAERS. DATA:WA_CNT TYPE I, W_I TYPE P DECIMALS 2, W_I2 TYPE P. DATA:W_INDEX LIKE SY-TABIX. ************************************************************************ * Includes Module ************************************************************************ INCLUDE : ZIUGU100, ZICOM001. ************************************************************************ * Selection Screen ************************************************************************ SELECTION-SCREEN BEGIN OF BLOCK BLK1 WITH FRAME. PARAMETERS : P_BUKRS LIKE ZGUI27-BUKRS MEMORY ID BUK OBLIGATORY, P_VAT LIKE ZGUI27-VATCODE MEMORY ID ZVA OBLIGATORY, P_GJAHR LIKE ZGUI27-GJAHR MEMORY ID GJR OBLIGATORY. SELECTION-SCREEN SKIP. SELECT-OPTIONS : S_DICNR FOR ZGUI27-DICBELNR MATCHCODE OBJECT ZU05, S_DICDAT FOR ZGUI27-DICDAT, S_GUINO FOR ZGUI27-GUINO, S_ERRNAM FOR ZGUI27-ERRNAM, S_DOCNO FOR ZGUI27-DOCNO. SELECTION-SCREEN END OF BLOCK BLK1. SELECTION-SCREEN BEGIN OF BLOCK BLK2 WITH FRAME. PARAMETERS: P_RD1 RADIOBUTTON GROUP RAD1, P_RD2 RADIOBUTTON GROUP RAD1. SELECTION-SCREEN END OF BLOCK BLK2. ************************************************************************ * Initialization ************************************************************************ INITIALIZATION. IF SY-TCODE = 'ZU82'. W_DTYPE = 'P'. "i SY-TITLE = '~HifhX'. ELSE. W_DTYPE = 'R'. "P SY-TITLE = '~HPfh^'. ENDIF. ************************************************************************ * At Selection Screen Output ************************************************************************ AT SELECTION-SCREEN OUTPUT. ************************************************************************ * At Selection Screen ************************************************************************ AT SELECTION-SCREEN. AT LINE-SELECTION. AT USER-COMMAND. CASE SY-UCOMM. WHEN 'PRNT' OR 'REVE'. PERFORM PRINT_DATA USING SY-UCOMM. PERFORM LIST_DATA. WHEN 'SELE'. PERFORM MARK_ALL_LIST USING 'X'. WHEN 'DESE'. PERFORM MARK_ALL_LIST USING SPACE. WHEN 'ASRT'. PERFORM SORT_DATA_LIST TABLES INTAB USING 1. PERFORM LIST_DATA. WHEN 'DSRT'. PERFORM SORT_DATA_LIST TABLES INTAB USING 2. PERFORM LIST_DATA. ENDCASE. ************************************************************************ * Report Format ************************************************************************ TOP-OF-PAGE. END-OF-PAGE. ************************************************************************ * Main Process ************************************************************************ START-OF-SELECTION. SET PF-STATUS 'MAIN' EXCLUDING 'REVE'. PERFORM GET_CURR USING P_BUKRS CHANGING P_CURR. PERFORM GET_DATA. " Prepare data to list PERFORM LIST_DATA. END-OF-SELECTION. *&---------------------------------------------------------------------* *& Form READ_DATA *&---------------------------------------------------------------------* FORM GET_DATA. IF P_RD1 = 'X' AND SY-TCODE = 'ZU82'. SELECT * INTO TABLE T_ZGUI27 FROM ZGUI27 WHERE BUKRS EQ P_BUKRS AND GJAHR EQ P_GJAHR AND VATCODE EQ P_VAT AND DICBELNR IN S_DICNR AND DICDAT IN S_DICDAT AND GUINO IN S_GUINO AND DOCNO EQ SPACE AND REPPD >= '200608' AND ERRNAM IN S_ERRNAM AND DOCTYPE EQ 'P'. ELSEIF P_RD1 = 'X' AND SY-TCODE = 'ZU66'. SELECT * INTO TABLE T_ZGUI27 FROM ZGUI27 WHERE BUKRS EQ P_BUKRS AND GJAHR EQ P_GJAHR AND VATCODE EQ P_VAT AND DICBELNR IN S_DICNR AND DICDAT IN S_DICDAT AND GUINO IN S_GUINO AND DOCNO EQ SPACE AND REPPD >= '200608' AND ERRNAM IN S_ERRNAM AND DOCTYPE EQ 'R'. ELSEIF P_RD2 = 'X' AND SY-TCODE = 'ZU66'. LOOP AT S_DOCNO. CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' EXPORTING INPUT = S_DOCNO-LOW IMPORTING OUTPUT = S_DOCNO-LOW. CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' EXPORTING INPUT = S_DOCNO-HIGH IMPORTING OUTPUT = S_DOCNO-HIGH. MODIFY S_DOCNO INDEX SY-TABIX. ENDLOOP. SELECT * INTO TABLE T_ZGUI27 FROM ZGUI27 WHERE BUKRS EQ P_BUKRS AND GJAHR EQ P_GJAHR AND VATCODE EQ P_VAT AND DICBELNR IN S_DICNR AND DICDAT IN S_DICDAT AND GUINO IN S_GUINO AND DOCNO NE SPACE AND DOCTYPE EQ 'R' AND REPPD >= '200608' AND ERRNAM IN S_ERRNAM AND DOCNO IN S_DOCNO . ELSEIF P_RD2 = 'X' AND SY-TCODE = 'ZU82'. LOOP AT S_DOCNO. CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' EXPORTING INPUT = S_DOCNO-LOW IMPORTING OUTPUT = S_DOCNO-LOW. CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' EXPORTING INPUT = S_DOCNO-HIGH IMPORTING OUTPUT = S_DOCNO-HIGH. MODIFY S_DOCNO INDEX SY-TABIX. ENDLOOP. SELECT * INTO TABLE T_ZGUI27 FROM ZGUI27 WHERE BUKRS EQ P_BUKRS AND GJAHR EQ P_GJAHR AND VATCODE EQ P_VAT AND DICBELNR IN S_DICNR AND DICDAT IN S_DICDAT AND GUINO IN S_GUINO AND DOCNO NE SPACE AND DOCTYPE EQ 'P' AND ERRNAM IN S_ERRNAM AND REPPD >= '200608' AND DOCNO IN S_DOCNO . ENDIF. LOOP AT T_ZGUI27. CHECK T_ZGUI27-ISDEL EQ SPACE. " check discount normal CLEAR INTAB. INTAB = T_ZGUI27. ***GET ADDRESS SELECT SINGLE * FROM KNA1 WHERE KUNNR = T_ZGUI27-KUNNR. IF SY-SUBRC EQ 0. ***O_@ IF KNA1-XCPDK EQ 'X'. SELECT SINGLE * FROM BSEC WHERE BUKRS = T_ZGUI27-BUKRS AND BELNR = T_ZGUI27-DICBELNR AND GJAHR = T_ZGUI27-GJAHR. CONCATENATE BSEC-PSTLZ BSEC-ORT01 BSEC-STRAS INTO INTAB-ADDRESS2. CONDENSE INTAB-ADDRESS2. CONCATENATE BSEC-NAME1 BSEC-NAME2 INTO INTAB-ANRED. CONDENSE INTAB-ANRED. CLEAR BSEC. ELSE. SELECT SINGLE * FROM ZGUI1A WHERE BUKRS = T_ZGUI27-BUKRS AND VATCODE = T_ZGUI27-VATCODE AND GJAHR = T_ZGUI27-GJAHR AND GUINO = T_ZGUI27-GUINO. IF SY-SUBRC = 0. INTAB-TAXNO = ZGUI1A-STCEG. INTAB-ANRED = ZGUI1A-NAME1. INTAB-ADDRESS2 = ZGUI1A-ADDRESS. ELSE. CONCATENATE KNA1-NAME1 KNA1-NAME2 INTO INTAB-ANRED. SELECT SINGLE * FROM ADRC WHERE ADDRNUMBER = KNA1-ADRNR AND NATION = 'M'. IF SY-SUBRC = 0. IF ADRC-HOUSE_NUM1 NE ''. CONCATENATE ADRC-STREET ADRC-HOUSE_NUM1 ADRC-FLOOR INTO INTAB-ADDRESS2. ELSE. CONCATENATE ADRC-POST_CODE1 ADRC-CITY1 ADRC-CITY2 ADRC-STREET INTO INTAB-ADDRESS2. ENDIF. CONDENSE INTAB-ADDRESS2. ENDIF. ENDIF. ENDIF. ELSE. SELECT SINGLE * FROM LFA1 WHERE LIFNR = T_ZGUI27-LIFNR. IF LFA1-XCPDK EQ 'X'. SELECT SINGLE * FROM BSEC WHERE BUKRS = T_ZGUI27-BUKRS AND BELNR = T_ZGUI27-DICBELNR AND GJAHR = T_ZGUI27-GJAHR. CONCATENATE BSEC-PSTLZ BSEC-ORT01 BSEC-STRAS INTO INTAB-ADDRESS2. CONDENSE INTAB-ADDRESS2. CONCATENATE BSEC-NAME1 BSEC-NAME2 INTO INTAB-ANRED. CONDENSE INTAB-ANRED. CLEAR BSEC. ELSE. SELECT SINGLE * FROM ADRC WHERE ADDRNUMBER = LFA1-ADRNR AND NATION = 'M'. IF SY-SUBRC = 0. IF ADRC-HOUSE_NUM1 NE ''. CONCATENATE ADRC-POST_CODE1 ADRC-STREET ADRC-HOUSE_NUM1 ADRC-FLOOR INTO INTAB-ADDRESS2. ELSE. CONCATENATE ADRC-POST_CODE1 ADRC-CITY1 ADRC-CITY2 ADRC-STREET INTO INTAB-ADDRESS2. ENDIF. CONDENSE INTAB-ADDRESS2. ENDIF. ENDIF. ENDIF. *************** CASE T_ZGUI27-DOCTYPE. WHEN 'P'. "A/P SELECT SINGLE CPUDT INTO BKPF-CPUDT FROM BKPF WHERE BELNR = T_ZGUI27-DICBELNR. T_ZGUI27-GJAHR = P_GJAHR. INTAB-KUNNR = T_ZGUI27-LIFNR. * PERFORM GET_ANRED_NAME USING 'lfa1' INTAB-KUNNR INTAB-ANRED. SELECT SINGLE * FROM LFA1 WHERE LIFNR = INTAB-KUNNR. SELECT SINGLE * FROM ADRC WHERE ADDRNUMBER = LFA1-ADRNR AND NATION = 'M'. IF SY-SUBRC = 0. INTAB-ANRED = ADRC-NAME1. ENDIF. WHEN 'R'. "A/R INTAB-KUNNR = T_ZGUI27-KUNNR. * PERFORM GET_ANRED_NAME USING 'KNA1' INTAB-KUNNR INTAB-ANRED. SELECT SINGLE * FROM KNA1 WHERE KUNNR = INTAB-KUNNR. SELECT SINGLE * FROM ADRC WHERE ADDRNUMBER = KNA1-ADRNR AND NATION = 'M'. IF SY-SUBRC = 0. INTAB-ANRED = ADRC-NAME1. *--20161202 alice *--qtransaction XD03 or FD03 *--International Version (Poa}P) INTAB-ADDRESS2 = ADRC-STREET. CONDENSE INTAB-ADDRESS2. ENDIF. ENDCASE. INTAB-BUDAT = T_ZGUI27-BUDAT. INTAB-PREFIX = T_ZGUI27-GUINO+0(2). INTAB-NUMBER = T_ZGUI27-GUINO+2(8). INTAB-WAERS = P_CURR. CASE T_ZGUI27-GUIMWSKZ. WHEN '31' OR '32' OR '33' OR '71' OR '72' OR '73' OR '81' OR '82' OR '83' OR '21' OR '22' OR '23' OR '24' OR '25' OR '26' OR '11' OR '12' OR '13' OR '14' OR '15' OR '16'. INTAB-STYLE = '3'. WHEN '34' OR '35' OR '36' OR '74' OR '75' OR '76' OR '84' OR '85' OR '86'. INTAB-STYLE = '2'. ENDCASE. APPEND INTAB. ENDLOOP. SORT INTAB BY KUNNR. ENDFORM. " READ_DATA *&---------------------------------------------------------------------* *& Form mark_all_inv_list *&---------------------------------------------------------------------* FORM MARK_ALL_LIST USING C. DESCRIBE TABLE INTAB LINES W_CNT. ADD 4 TO W_CNT. I = 5. WHILE I <= W_CNT. READ LINE I. SY-LISEL+1(1) = C. MODIFY LINE I. I = I + 1. ENDWHILE. ENDFORM. " mark_all_inv_list *&---------------------------------------------------------------------* *& Form sort_data_list *&---------------------------------------------------------------------* FORM SORT_DATA_LIST TABLES ITAB USING TP. GET CURSOR FIELD FLD_NAME. SEARCH FLD_NAME FOR '-'. IF SY-FDPOS = 0. MESSAGE E000 WITH 'Sorting function does not support field:' FLD_NAME. ENDIF. I = SY-FDPOS + 1. SHIFT FLD_NAME LEFT BY I PLACES. CHECK FLD_NAME NE 'ULINE'. IF TP = 1. SORT ITAB BY (FLD_NAME) ASCENDING. SORT_TYPE = 1. ELSE. SORT ITAB BY (FLD_NAME) DESCENDING. SORT_TYPE = 2. ENDIF. ENDFORM. " SORT_DATA_LIST *&---------------------------------------------------------------------* *& Form WRITE_DATA *&---------------------------------------------------------------------* FORM LIST_DATA. SY-LSIND = 0. WRITE: / 'Sort by:', 'NX'. ULINE AT /(128). FORMAT COLOR 1 INTENSIFIED OFF. WRITE: /0(1) SY-VLINE, ' ' NO-GAP,SY-VLINE NO-GAP, (10) '/hf' CENTERED NO-GAP, SY-VLINE NO-GAP, (10) 's' CENTERED NO-GAP, SY-VLINE NO-GAP, (10) 'o' CENTERED NO-GAP, SY-VLINE NO-GAP, (10) 'oX' CENTERED NO-GAP, SY-VLINE NO-GAP, (10) '' CENTERED NO-GAP, SY-VLINE NO-GAP, (10) 'NX' CENTERED NO-GAP, SY-VLINE NO-GAP, (15) 'W' CENTERED NO-GAP, SY-VLINE NO-GAP, (02) 'p' CENTERED NO-GAP, SY-VLINE NO-GAP, (13) 'B' CENTERED NO-GAP, SY-VLINE NO-GAP, (08) '|B' CENTERED NO-GAP, SY-VLINE NO-GAP, (04) 'O' CENTERED NO-GAP, SY-VLINE NO-GAP, (10) 'X' CENTERED NO-GAP, SY-VLINE NO-GAP. ULINE AT /(128). FORMAT COLOR 2. LOOP AT INTAB. WRITE: /0(1) SY-VLINE NO-GAP, 2 YES AS CHECKBOX, SY-VLINE NO-GAP, (10) INTAB-DICDAT NO-GAP, SY-VLINE NO-GAP, (10) INTAB-DICBELNR NO-GAP, SY-VLINE NO-GAP, (10) INTAB-GUIBUDAT NO-GAP, SY-VLINE NO-GAP, (10) INTAB-GUINO NO-GAP, SY-VLINE NO-GAP, (10) INTAB-BUDAT NO-GAP, SY-VLINE NO-GAP, (10) INTAB-KUNNR NO-GAP, SY-VLINE NO-GAP, (15) INTAB-ANRED NO-GAP, SY-VLINE NO-GAP, (02) INTAB-STYLE NO-GAP, SY-VLINE NO-GAP, (13) INTAB-DMBTR CURRENCY INTAB-WAERS NO-GAP, SY-VLINE NO-GAP, (08) INTAB-MWSTS CURRENCY INTAB-WAERS NO-GAP, SY-VLINE NO-GAP, (04) INTAB-WAERS NO-GAP, SY-VLINE NO-GAP, (10) INTAB-DOCNO NO-GAP, SY-VLINE NO-GAP. ENDLOOP. FORMAT COLOR 6 INVERSE ON. FORMAT COLOR 2 INVERSE OFF. ULINE AT /(128). ENDFORM. " WRITE_DATA *&---------------------------------------------------------------------* *& Form PRINT_DATA *&---------------------------------------------------------------------* FORM PRINT_DATA USING P_KIND. DATA: REPLY(1), MNO(10), WL_IDX LIKE SY-TABIX. CLEAR: T_DATA[], T_DATA. IF P_KIND = 'PRNT'. PERFORM GET_REPLY USING SPACE 'O_CL?' REPLY. ELSE. PERFORM GET_REPLY USING SPACE 'O_X?' REPLY. ENDIF. CHECK REPLY = '1'. YES = SPACE. DESCRIBE TABLE INTAB LINES W_CNT. ADD 4 TO W_CNT. I = 5. WHILE I <= W_CNT. READ LINE I. IF SY-LISEL+1(1) = 'X'. MNO = SY-LISEL+15(10). READ TABLE INTAB WITH KEY DICBELNR = MNO GUINO = SY-LISEL+37(10). CHECK SY-SUBRC = 0. WL_IDX = SY-TABIX. IF P_KIND = 'PRNT'. PERFORM PREPARE_DATA. ELSE. UPDATE ZGUI27 SET DOCNO = SPACE WHERE BUKRS = P_BUKRS AND VATCODE = INTAB-VATCODE AND GJAHR = INTAB-GJAHR AND DICBELNR = INTAB-DICBELNR AND GUINO = INTAB-GUINO. INTAB-DOCNO = SPACE. MODIFY INTAB INDEX WL_IDX. ENDIF. ENDIF. I = I + 1. ENDWHILE. CHECK P_KIND = 'PRNT'. CHECK NOT T_DATA[] IS INITIAL. PERFORM GET_DOCNO. * output smartform PERFORM CALL_SMARTFORM. ENDFORM. " PRINT_DATA *&---------------------------------------------------------------------* *& Form GET_REPLY *&---------------------------------------------------------------------* FORM GET_REPLY USING A B C. CLEAR C. CALL FUNCTION 'POPUP_TO_CONFIRM' EXPORTING TITLEBAR = A TEXT_QUESTION = B DEFAULT_BUTTON = '2' DISPLAY_CANCEL_BUTTON = SPACE POPUP_TYPE = 'ICON_MESSAGE_WARNING' IMPORTING ANSWER = C EXCEPTIONS TEXT_NOT_FOUND = 1 OTHERS = 2. ENDFORM. " GET_REPLY *&---------------------------------------------------------------------* *& Form PREPARE_DATA *&---------------------------------------------------------------------* FORM PREPARE_DATA. DATA:C_CMPRE(13). MOVE-CORRESPONDING INTAB TO T_DATA. * |O SELECT SINGLE * FROM ZGUI4 WHERE BUKRS = INTAB-BUKRS AND VATCODE = INTAB-VATCODE AND GUIMWSKZ = INTAB-GUIMWSKZ AND MWSKZ = INTAB-MWSKZ. IF SY-SUBRC = 0. SELECT SINGLE DDTEXT INTO T_DATA-GUITXT FROM DD07T WHERE DOMNAME = 'ZGUIXTYPE' AND DDLANGUAGE = SY-LANGU AND DOMVALUE_L = ZGUI4-GUIXTYPE. ENDIF. *WBsBa} IF SY-TCODE = 'ZU82'. *--> 2006/07/11 T_DATA-NAME = INTAB-ANRED. T_DATA-LCYNO = T_DATA-TAXNO. T_DATA-ADDRESS = T_DATA-ADDRESS2. SELECT SINGLE TITLE TAXNO ADDRESS INTO (T_DATA-ANRED,T_DATA-TAXNO,T_DATA-ADDRESS2) FROM ZGUI0 WHERE BUKRS = INTAB-BUKRS AND VATCODE = INTAB-VATCODE. ELSE. * LCY VATNO SELECT SINGLE TITLE TAXNO ADDRESS INTO (T_DATA-NAME,T_DATA-LCYNO, T_DATA-ADDRESS) FROM ZGUI0 WHERE BUKRS = INTAB-BUKRS AND VATCODE = INTAB-VATCODE. ENDIF. SELECT * FROM ZGUI28 WHERE BUKRS = INTAB-BUKRS AND VATCODE = INTAB-VATCODE AND GJAHR = INTAB-GJAHR AND DICBELNR = INTAB-DICBELNR AND GUINO = INTAB-GUINO. T_DATA-MAKTX = ZGUI28-MAKTX. T_DATA-FKIMG = ZGUI28-FKIMG. T_DATA-CMPRE = ZGUI28-CMPRE. T_DATA-PDMBTR = ZGUI28-PDMBTR. *--> v CLEAR:BKPF,VBAP. SELECT SINGLE * FROM BKPF WHERE BUKRS = ZGUI28-BUKRS AND BELNR = ZGUI28-DICBELNR AND GJAHR = ZGUI28-GJAHR. SELECT SINGLE * FROM VBAP WHERE VBELN = ZGUI28-NVBELN AND POSNR = ZGUI28-NSOPOSNR. IF VBAP-KPEIN = 0. VBAP-KPEIN = 1. ENDIF. IF SY-SUBRC = 0. CALL FUNCTION 'CURRENCY_AMOUNT_SAP_TO_IDOC' EXPORTING CURRENCY = 'NTD' SAP_AMOUNT = ZGUI28-DMBTR IMPORTING IDOC_AMOUNT = C_CMPRE. ZGUI28-DMBTR = C_CMPRE. IF INTAB-STYLE = '2'. IF ZGUI28-FKIMG = 0. T_DATA-NETPR = 0. ELSE. T_DATA-NETPR = ZGUI28-DMBTR / ( ZGUI28-FKIMG / VBAP-KPEIN ) * BKPF-KURSF * ( 105 / 100 ). ENDIF. ELSE. IF ZGUI28-FKIMG = 0. T_DATA-NETPR = 0. ELSE. T_DATA-NETPR = ZGUI28-DMBTR / ( ZGUI28-FKIMG / VBAP-KPEIN ) * BKPF-KURSF. ENDIF. ENDIF. ENDIF. T_DATA-DMBTR_D = ZGUI28-DMBTR. T_DATA-MWSTS_D = ZGUI28-MWSTS. T_DATA-REMARK = ZGUI28-REMARK. ***YOhoAhqH0. *--20170526 alice *--qtransaction XD03 or FD03 *--International Version (Poa}P) CLEAR:KNA1,ADRC. SELECT SINGLE * FROM KNA1 WHERE KUNNR = T_DATA-KUNNR. SELECT SINGLE * FROM ADRC WHERE ADDRNUMBER = KNA1-ADRNR AND NATION = 'M'. IF SY-SUBRC = 0. CONCATENATE KNA1-PSTLZ ADRC-city1 ADRC-STREET INTO T_DATA-ADDRESS2. CONDENSE T_DATA-ADDRESS2. ENDIF. APPEND T_DATA. ENDSELECT. CLEAR T_DATA. ENDFORM. " PREPARE_DATA *&---------------------------------------------------------------------* *& Form GET_DOCNO *&---------------------------------------------------------------------* FORM GET_DOCNO. DATA:BEGIN OF W_DOCNO OCCURS 0, DOCNO LIKE ZGUI27-DOCNO. DATA:END OF W_DOCNO. DATA: WL_CNT TYPE I, W_NO LIKE ZGUI27-DOCNO, WL_TABIX LIKE SY-TABIX. DATA:T_KUNNR LIKE ZGUI27-KUNNR. SORT T_DATA BY KUNNR DOCNO DICBELNR GUINO. *20080425 MAY START IF P_RD1 = 'X'. "@L LOOP AT T_DATA. W_INDEX = SY-TABIX. WA_CNT = WA_CNT + 1. AT END OF KUNNR. T_KUNNR = T_DATA-KUNNR. W_I2 = CEIL( WA_CNT / 5 ). LOOP AT T_DATA WHERE KUNNR = T_KUNNR. T_DATA-PAGE = W_I2. "pSMARTFORMS|X MODIFY T_DATA. ENDLOOP. CLEAR:WA_CNT,W_I,W_I2. ENDAT. ENDLOOP. ELSE. "wgXF LOOP AT T_DATA. READ TABLE W_DOCNO WITH KEY DOCNO = T_DATA-DOCNO. IF SY-SUBRC <> 0. MOVE-CORRESPONDING T_DATA TO W_DOCNO. APPEND W_DOCNO. ENDIF. ENDLOOP. LOOP AT W_DOCNO. W_INDEX = SY-TABIX. LOOP AT T_DATA WHERE DOCNO = W_DOCNO-DOCNO. WA_CNT = WA_CNT + 1. AT END OF DOCNO. * W_I = WA_CNT / 5 * -1. W_I2 = CEIL( WA_CNT / 5 ) . LOOP AT T_DATA WHERE DOCNO = W_DOCNO-DOCNO. T_DATA-PAGE = W_I2. "pSMARTFORMS|X *--20161212 alice *--qtransaction XD03 or FD03 *--International Version (Poa}P) CLEAR:KNA1,ADRC. SELECT SINGLE * FROM KNA1 WHERE KUNNR = T_DATA-KUNNR. SELECT SINGLE * FROM ADRC WHERE ADDRNUMBER = KNA1-ADRNR AND NATION = 'M'. IF SY-SUBRC = 0. CONCATENATE KNA1-PSTLZ ADRC-city1 ADRC-STREET INTO T_DATA-ADDRESS2. CONDENSE T_DATA-ADDRESS2. ENDIF. MODIFY T_DATA. ENDLOOP. CLEAR:WA_CNT,W_I,W_I2. ENDAT. ENDLOOP. ENDLOOP. ENDIF. *20080425 MAY END WL_CNT = 1. LOOP AT T_DATA. CHECK T_DATA-DOCNO = SPACE. WL_TABIX = SY-TABIX. * X AT NEW KUNNR. PERFORM GEN_DOCNO USING W_NO. WL_CNT = 1. ENDAT. *TINHWEI MARK 20060712 * IF WL_CNT > 5. * PERFORM GEN_DOCNO USING W_NO. * WL_CNT = 1. * ENDIF. T_DATA-DOCNO = INTAB-DOCNO = W_NO. *--20161202 alice *--qtransaction XD03 or FD03 *--International Version (Poa}P) CLEAR:KNA1,ADRC. SELECT SINGLE * FROM KNA1 WHERE KUNNR = T_DATA-KUNNR. SELECT SINGLE * FROM ADRC WHERE ADDRNUMBER = KNA1-ADRNR AND NATION = 'M'. IF SY-SUBRC = 0. CONCATENATE KNA1-PSTLZ ADRC-city1 ADRC-STREET INTO T_DATA-ADDRESS2. CONDENSE T_DATA-ADDRESS2. ENDIF. MODIFY T_DATA INDEX WL_TABIX. MODIFY INTAB TRANSPORTING DOCNO WHERE DICBELNR = T_DATA-DICBELNR AND GUINO = T_DATA-GUINO. ADD 1 TO WL_CNT. UPDATE ZGUI27 SET DOCNO = W_NO WHERE BUKRS = P_BUKRS AND VATCODE = T_DATA-VATCODE AND GJAHR = P_GJAHR AND DICBELNR = T_DATA-DICBELNR AND GUINO = T_DATA-GUINO. ENDLOOP. ENDFORM. " GET_DOCNO *&---------------------------------------------------------------------* *& Form GEN_DOCNO *&---------------------------------------------------------------------* FORM GEN_DOCNO USING P_NO. CLEAR P_NO. CALL FUNCTION 'NUMBER_GET_NEXT' EXPORTING NR_RANGE_NR = '01' OBJECT = 'ZGUI' IMPORTING NUMBER = P_NO EXCEPTIONS INTERVAL_NOT_FOUND = 1 NUMBER_RANGE_NOT_INTERN = 2 OBJECT_NOT_FOUND = 3 QUANTITY_IS_0 = 4 QUANTITY_IS_NOT_1 = 5 INTERVAL_OVERFLOW = 6 BUFFER_OVERFLOW = 7 OTHERS = 8. IF SY-SUBRC NE 0. MESSAGE I000 WITH '~(Object:ZGUI)'. STOP. ENDIF. ENDFORM. " GEN_DOCNO *&---------------------------------------------------------------------* *& Form CALL_SMARTFORM *&---------------------------------------------------------------------* FORM CALL_SMARTFORM . DATA: FM_NAME TYPE RS38L_FNAM. DATA: LS_COMPOSER_PARAM TYPE SSFCOMPOP, W_CONTROL_PARAMETER TYPE SSFCTRLOP, W_SSFCRESPD TYPE SSFCRESPD, W_SSFCRESCL TYPE SSFCRESCL, W_SSFCRESOP TYPE SSFCRESOP, USER_SETTINGS(1). CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME' EXPORTING FORMNAME = 'Z_GUIDISCOUNT_DOC' IMPORTING FM_NAME = FM_NAME EXCEPTIONS NO_FORM = 1 NO_FUNCTION_MODULE = 2 OTHERS = 3. IF SY-SUBRC <> 0. MESSAGE I001 WITH 'Smartforms: Z_GUIDISCOUNT_DOC Can''t OPEN !!'. STOP. ENDIF. LS_COMPOSER_PARAM-TDDEST = 'LOCM'. LS_COMPOSER_PARAM-RQPOSNAME = '\\stw01\STWP0015'. W_CONTROL_PARAMETER-NO_DIALOG = SPACE. LS_COMPOSER_PARAM-TDIMMED = 'X'."print immediately LS_COMPOSER_PARAM-TDDELETE = 'X'."new spool request LS_COMPOSER_PARAM-TDNEWID = 'X'."new spool request CALL FUNCTION FM_NAME EXPORTING OUTPUT_OPTIONS = LS_COMPOSER_PARAM CONTROL_PARAMETERS = W_CONTROL_PARAMETER USER_SETTINGS = '' IMPORTING DOCUMENT_OUTPUT_INFO = W_SSFCRESPD JOB_OUTPUT_INFO = W_SSFCRESCL JOB_OUTPUT_OPTIONS = W_SSFCRESOP TABLES INTAB1 = T_DATA EXCEPTIONS FORMATTING_ERROR = 1 INTERNAL_ERROR = 2 SEND_ERROR = 3 USER_CANCELED = 4 OTHERS = 5. IF SY-SUBRC <> 0. MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDIF. ENDFORM. " CALL_SMARTFORM *&---------------------------------------------------------------------* *& Form GET_CURR *&---------------------------------------------------------------------* FORM GET_CURR USING BUKRS CHANGING CURR. CALL FUNCTION 'EMUL_READ_LOCAL_CURRENCY' EXPORTING COMPANY_CODE = BUKRS IMPORTING LOCAL_CURR = CURR. IF SY-SUBRC <> 0. MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDIF. ENDFORM. " GET_CURR