Вы находитесь на странице: 1из 14

************************************************************************

* Program Name : ZRUAP011


* 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

Вам также может понравиться