J_3RF_SELL_BOOK_02
*----------------------------------------------------------------------* * FORM View_EXTRACT *----------------------------------------------------------------------* FORM VIEW_EXTRACT USING V_EXTRACT LIKE DISEXTRACT CHANGING CT_BOOK TYPE J_3R_T_SELL CS_TOTALS TYPE J_3RSELL. * data: it_book type j_3r_t_sell,"note 2140917 * wa_book type j_3rsell. DATA: "i_gjahr type bkpf-gjahr, LV_DELETED TYPE ABAP_BOOL, LV_SKIP TYPE ABAP_BOOL. FIELD-SYMBOLS: <FS_BOOK> LIKE LINE OF CT_BOOK."note 2140917 IF V_EXTRACT-EXNAME IS INITIAL AND VR_EMPTY IS NOT INITIAL. EXIT. ENDIF. PERFORM LOAD_EXTRACT USING V_EXTRACT CHANGING CT_BOOK CS_TOTALS. IF P_COLLCT IS INITIAL. * Tax tranfer document data have not been deleted - * the selections can apply LOOP AT CT_BOOK ASSIGNING <FS_BOOK>. "apply selection parameters for trn docs. PERFORM APPLY_SEL_PARAM_TRN CHANGING <FS_BOOK> LV_SKIP . IF LV_SKIP IS NOT INITIAL. LV_DELETED = ABAP_TRUE. CONTINUE. ENDIF. PERFORM FILL_ADD_FIELDS CHANGING <FS_BOOK>. * append <fs_book> to ct_book. ENDLOOP. ELSE. * Tax transfer document data have been deleted - * only Company code and Customer selections can apply LOOP AT CT_BOOK ASSIGNING <FS_BOOK> WHERE BUKRS IN BR_BUKRS AND LIFNR_CRED IN SEL_CLNT. PERFORM FILL_ADD_FIELDS CHANGING <FS_BOOK>. * append wa_book to ct_book. ENDLOOP. ENDIF. IF LV_DELETED IS NOT INITIAL. DELETE CT_BOOK WHERE BUKRS IS INITIAL. ENDIF. * free it_book. * 2074991 - renumerate PERFORM ADD_TRANSPARENT_NUMBER. """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""$"$\SE:(1) Form VIEW_EXTRACT, End A *$*$-Start: (1)---------------------------------------------------------------------------------$*$* ENHANCEMENT 1 Z_J_3RF_SELL_BOOK_02_VIEW_EXTR. "active version "需求描述:俄分Sales ledger 导出XML文件时,将凭证字段替换成ZOUNR字段(数值等同PI号) "需求编号:暂无 "开发者: "开发日期:2018.04.25 FIELD-SYMBOLS:<CT_BOOK> TYPE J_3RSELL. DATA:LT_BOOK_SEL TYPE TABLE OF J_3RSELL. DATA:LT_BKPF TYPE TABLE OF BKPF, LS_BKPF TYPE BKPF, LT_BSEG TYPE TABLE OF BSEG, LS_BSEG TYPE BSEG. DATA:LT_ACC_EXT TYPE TABLE OF ZSSD_J_3R_SALES_LEDGER_01, LS_ACC_EXT TYPE ZSSD_J_3R_SALES_LEDGER_01. * BREAK-POINT. CLEAR:LT_BOOK_SEL[],LT_BKPF[],LT_BSEG[]. LT_BOOK_SEL[] = CT_BOOK[]. IF LT_BOOK_SEL[] IS NOT INITIAL. SORT LT_BOOK_SEL BY BUKRS GJAHR_INV BELNR_INV. DELETE ADJACENT DUPLICATES FROM LT_BOOK_SEL COMPARING BUKRS GJAHR_INV BELNR_INV. SELECT BUKRS GJAHR BELNR INTO CORRESPONDING FIELDS OF TABLE LT_BKPF FROM BKPF FOR ALL ENTRIES IN LT_BOOK_SEL WHERE BUKRS EQ LT_BOOK_SEL-BUKRS AND GJAHR EQ LT_BOOK_SEL-GJAHR_INV AND BELNR EQ LT_BOOK_SEL-BELNR_INV AND GLVOR EQ 'SD00'. IF SY-SUBRC EQ 0. SELECT BUKRS GJAHR BELNR INTO CORRESPONDING FIELDS OF TABLE LT_BSEG FROM BSEG FOR ALL ENTRIES IN LT_BKPF WHERE BUKRS EQ LT_BKPF-BUKRS AND GJAHR EQ LT_BKPF-GJAHR AND BELNR EQ LT_BKPF-BELNR AND KOART EQ 'D'. SORT LT_BKPF BY BUKRS GJAHR BELNR. SORT LT_BSEG BY BUKRS GJAHR BELNR. ENDIF. ENDIF. CLEAR:LT_ACC_EXT. LOOP AT CT_BOOK ASSIGNING <CT_BOOK>. * IF <CT_BOOK>-ZUONR IS INITIAL." '指定' 字段为空时,还按原来的逻辑走 * CONTINUE. * ENDIF. READ TABLE LT_BKPF TRANSPORTING NO FIELDS WITH KEY BUKRS = <CT_BOOK>-BUKRS GJAHR = <CT_BOOK>-GJAHR_INV BELNR = <CT_BOOK>-BELNR_INV BINARY SEARCH. IF SY-SUBRC EQ 0. READ TABLE LT_BSEG TRANSPORTING NO FIELDS WITH KEY BUKRS = <CT_BOOK>-BUKRS GJAHR = <CT_BOOK>-GJAHR_INV BELNR = <CT_BOOK>-BELNR_INV BINARY SEARCH. CLEAR:LS_ACC_EXT. LS_ACC_EXT-NUM_LINE = <CT_BOOK>-NUM_LINE. LS_ACC_EXT-BUKRS = <CT_BOOK>-BUKRS. LS_ACC_EXT-GJAHR = <CT_BOOK>-GJAHR_INV. LS_ACC_EXT-BELNR = <CT_BOOK>-BELNR_INV. CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' EXPORTING INPUT = LS_ACC_EXT-BELNR IMPORTING OUTPUT = LS_ACC_EXT-BELNR . CONCATENATE LS_ACC_EXT-BUKRS LS_ACC_EXT-GJAHR '-' LS_ACC_EXT-BELNR INTO <CT_BOOK>-EXT_NUMBER. LS_ACC_EXT-EXT_NUMBER = <CT_BOOK>-EXT_NUMBER. APPEND LS_ACC_EXT TO LT_ACC_EXT. ENDIF. * <ct_book> ENDLOOP. IF LT_ACC_EXT[] IS NOT INITIAL. CALL FUNCTION 'ZFI_SET_ACC_EXT' TABLES IT_ACC_EXT = LT_ACC_EXT. ENDIF. ENDENHANCEMENT. *$*$-End: (1)---------------------------------------------------------------------------------$*$* ENDFORM. "View_EXTRACT
J_3RF_SELL_BOOK_02
*&---------------------------------------------------------------------* *& Form prepare_interface *&---------------------------------------------------------------------* FORM PREPARE_INTERFACE. DATA: NAME1 LIKE ADDR1_VAL-NAME1, NAME2 LIKE ADDR1_VAL-NAME2, NAME3 LIKE ADDR1_VAL-NAME3, NAME4 LIKE ADDR1_VAL-NAME4, NAME1_R LIKE ADDR1_VAL-NAME1, NAME2_R LIKE ADDR1_VAL-NAME2, NAME3_R LIKE ADDR1_VAL-NAME3, NAME4_R LIKE ADDR1_VAL-NAME4. DATA: WA_BOOK TYPE J_3RSELL, WA_BUFF TYPE J_3R_SALES_LEDGER_LINE, WA_TOTAL TYPE J_3R_SALES_LEDGER_LINE. DATA: L_VALUE TYPE STRING, L_LEN TYPE I. DATA: L_MONAT_LOW TYPE BKPF-MONAT, " 2056387 L_MONAT_HIGH TYPE BKPF-MONAT, " 2056387 LS_ADD_QUART_R LIKE LINE OF AD_MONAT[]. " 2056387 FIELD-SYMBOLS: <FS_BOOK> TYPE J_3RSELL. " maximum length of BKPF-XBLNR DATA: MAX_XBLNR_LEN TYPE I VALUE 16. " 2099024 DESCRIBE FIELD WA_BOOK-XBLNR_INV LENGTH MAX_XBLNR_LEN IN CHARACTER MODE. DESCRIBE FIELD WA_BUFF-EXT_NUMBER LENGTH L_LEN IN CHARACTER MODE. IF MAX_XBLNR_LEN >= L_LEN. CLEAR MAX_XBLNR_LEN. " do not read external texts ENDIF. REFRESH: BUFF_TAB, BUFF_TAB_ADD. CLEAR: IN_TOTALS. "N1362831 - get long external numbers IF P_EXTNUM EQ 'X' AND ( P_XBLNR = 'X' OR P_XBLNR1 = 'X' OR P_XBLNR2 = 'X' OR PAR_EXTP = 'X' ) AND PAR_EXT EQ 'X' AND PAR_EXTN NE SPACE AND MAX_XBLNR_LEN > 0. " 2099024 - do not load texts LOOP AT P_BOOK ASSIGNING <FS_BOOK>. * 1711413 - do not overwrite journal data CHECK <FS_BOOK>-JOURNAL IS INITIAL. CHECK LCL_SELL_BOOK=>IF_EXT_NUMBER( IS_BOOK = <FS_BOOK> IS_CORR = ' ' ) = 'X'. " 1909868 L_LEN = STRLEN( <FS_BOOK>-EXT_NUMBER ). IF L_LEN EQ MAX_XBLNR_LEN. PERFORM READ_TEXTS(J_3RF_BUY_BOOK_03) USING <FS_BOOK>-BUKRS <FS_BOOK>-BELNR_INV <FS_BOOK>-GJAHR_INV PAR_EXTN CHANGING L_VALUE. IF L_VALUE NE SPACE. <FS_BOOK>-EXT_NUMBER = L_VALUE. ENDIF. ENDIF. ENDLOOP. ENDIF. "end of N1362831 LOOP AT P_BOOK INTO WA_BOOK WHERE BELNR_ADD EQ SPACE. CLEAR WA_BUFF. MOVE-CORRESPONDING WA_BOOK TO WA_BUFF. "N1351387: fill FLG_BELNR_TRN for new format only IF P_DP_BAS IS INITIAL. CLEAR WA_BUFF-FLG_BELNR_TRN. ELSEIF WA_BUFF-FLG_BELNR_TRN = 'A'. CLEAR WA_BUFF-HWBAS2_TRN. " no totals CLEAR WA_BUFF-HWBAS5_TRN. * Note 2003630 CLEAR WA_BUFF-HWBAS3_TRN. CLEAR WA_BUFF-HWBAS4_TRN. ENDIF. * N1795513: print actual payment date IF P_ACTPAY = 'X'. WA_BUFF-BLDAT_PAY = WA_BOOK-BLDAT_ORIGPAY. ENDIF. IF VER2012 = 'X'. PERFORM ADOBE_FILL_INV USING WA_BOOK CHANGING WA_BUFF. ENDIF. APPEND WA_BUFF TO BUFF_TAB. ENDLOOP. * sort p_book by gjahr_add monat_add belnr_add bldat_inv. "note 2201957 LOOP AT P_BOOK INTO WA_BOOK WHERE BELNR_ADD NE SPACE. * The code below has been moved to form FILL_ADD_FIELDS * if ( wa_book-flag_add = 'X' ) and * ( wa_book-belnr_inv = wa_book-belnr_trn ). * wa_book-belnr_inv = wa_book-belnr_add. * endif. CLEAR WA_BUFF. MOVE-CORRESPONDING WA_BOOK TO WA_BUFF. "N1351387: fill FLG_BELNR_TRN for new format only IF P_DP_ADD IS INITIAL. CLEAR WA_BUFF-FLG_BELNR_TRN. ELSEIF WA_BUFF-FLG_BELNR_TRN = 'A'. CLEAR WA_BUFF-HWBAS2_TRN. " no totals CLEAR WA_BUFF-HWBAS5_TRN. * Note 2003630 CLEAR WA_BUFF-HWBAS3_TRN. CLEAR WA_BUFF-HWBAS4_TRN. ENDIF. IF VER2012 = 'X'. PERFORM ADOBE_FILL_INV USING WA_BOOK CHANGING WA_BUFF. ENDIF. APPEND WA_BUFF TO BUFF_TAB_ADD. ENDLOOP. SELECT SINGLE * FROM T001 WHERE BUKRS = MAINBUK. * INN SELECT SINGLE PAVAL INTO BUFF_HEADER-INN FROM T001Z WHERE BUKRS = MAINBUK AND PARTY = 'SAPR01'. * KPP SELECT SINGLE PAVAL INTO BUFF_HEADER-KPP FROM T001Z WHERE BUKRS = MAINBUK AND PARTY = 'SAPR10'. * Chief Accountant IF VER2012 IS INITIAL. " 1969939 - signature is chief accountant SELECT SINGLE PAVAL INTO BUFF_HEADER-CHIEF_ACCOUNTANT FROM T001Z WHERE BUKRS = MAINBUK AND PARTY = 'SAPR15'. ELSE. " 1969939 - signature is CEO SELECT SINGLE PAVAL INTO BUFF_HEADER-CHIEF_ACCOUNTANT FROM T001Z WHERE BUKRS = MAINBUK AND PARTY = 'SAPR13'. ENDIF. BUFF_HEADER-GJAHR = BR_GJAHR-LOW. BUFF_HEADER-BUDAT_BEGIN = BR_BUDAT-LOW. BUFF_HEADER-BUDAT_END = BR_BUDAT-HIGH. PERFORM GET_CALENDAR_PERIOD(J_3RF_BUY_BOOK_03) USING SEL_MONA-LOW CHANGING BUFF_HEADER-MONAT_BEGIN. PERFORM GET_CALENDAR_PERIOD(J_3RF_BUY_BOOK_03) USING SEL_MONA-HIGH CHANGING BUFF_HEADER-MONAT_END. * 1695097 - format from.. to.. dates IF VER2012 = 'X'. PERFORM ADOBE_PERIOD(J_3RF_BUY_BOOK_03) CHANGING BUFF_HEADER-GJAHR BUFF_HEADER-MONAT_BEGIN BUFF_HEADER-MONAT_END BUFF_HEADER-BUDAT_BEGIN BUFF_HEADER-BUDAT_END. ENDIF. PERFORM SELECT_ADDR USING NAME1 NAME2 NAME3 NAME4 NAME1_R NAME2_R NAME3_R NAME4_R MAINBUK. IF S_ADR <> 'X'. CONCATENATE NAME1 NAME2 NAME3 NAME4 INTO BUFF_HEADER-COMPANY_NAME SEPARATED BY SPACE. ELSE. CONCATENATE NAME1_R NAME2_R NAME3_R NAME4_R INTO BUFF_HEADER-COMPANY_NAME SEPARATED BY SPACE. ENDIF. IF NOT BUFF_TAB_ADD IS INITIAL OR NOT VR_EMPTY IS INITIAL. " 2178684 MOVE-CORRESPONDING BUFF_HEADER TO BUFF_HEADER_ADD. BUFF_HEADER_ADD-GJAHR = AD_GJAHR-LOW. BUFF_HEADER_ADD-BUDAT_BEGIN = AD_BUDAT-LOW. BUFF_HEADER_ADD-BUDAT_END = AD_BUDAT-HIGH. IF BUFF_HEADER_ADD-BUDAT_BEGIN IS INITIAL AND BUFF_HEADER_ADD-BUDAT_END IS INITIAL AND NOT AD_VTDAT-LOW IS INITIAL AND NOT AD_VTDAT-HIGH IS INITIAL. BUFF_HEADER_ADD-BUDAT_BEGIN = AD_VTDAT-LOW. BUFF_HEADER_ADD-BUDAT_END = AD_VTDAT-HIGH. ENDIF. L_MONAT_LOW = AD_MONAT-LOW. L_MONAT_HIGH = AD_MONAT-HIGH. * 2056387 - tax period from quarter IF NOT P_QUART IS INITIAL AND NOT ADD_QUART_R[] IS INITIAL AND P_XML IS INITIAL. " for XML - use months LOOP AT ADD_QUART_R INTO LS_ADD_QUART_R. L_MONAT_LOW = LS_ADD_QUART_R-LOW. L_MONAT_HIGH = LS_ADD_QUART_R-HIGH. EXIT. ENDLOOP. ENDIF. PERFORM GET_CALENDAR_PERIOD(J_3RF_BUY_BOOK_03) USING L_MONAT_LOW " 2056387 CHANGING BUFF_HEADER_ADD-MONAT_BEGIN. PERFORM GET_CALENDAR_PERIOD(J_3RF_BUY_BOOK_03) USING L_MONAT_HIGH " 2056387 CHANGING BUFF_HEADER_ADD-MONAT_END. IF NOT BUFF_HEADER_ADD-MONAT_BEGIN IS INITIAL AND " 2056387 BUFF_HEADER_ADD-MONAT_END IS INITIAL. BUFF_HEADER_ADD-MONAT_END = BUFF_HEADER_ADD-MONAT_BEGIN. ENDIF. BUFF_HEADER_ADD-AD_SHEET = AD_SHEET. BUFF_HEADER_ADD-DATE_OUTPUT = AD_DATE. MOVE-CORRESPONDING GS_TOTALS TO IN_TOTALS. ENDIF. BUFF_HEADER-DECREE451 = P_DP_BAS. BUFF_HEADER_ADD-DECREE451 = P_DP_ADD. """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""$"$\SE:(2) Form PREPARE_INTERFACE, End A *$*$-Start: (2)---------------------------------------------------------------------------------$*$* ENHANCEMENT 1 Z_J_3RF_SELL_BOOK_02_PREPARE. "active version "需求描述:俄分Sales ledger 导出XML文件时,将凭证字段替换成ZOUNR字段(数值等同PI号) "需求编号:暂无 "开发者: "开发日期:2018.08.07 DATA:LS_ACC_EXT TYPE ZSSD_J_3R_SALES_LEDGER_01, LT_ACC_EXT TYPE TABLE OF ZSSD_J_3R_SALES_LEDGER_01. CLEAR:LT_ACC_EXT[],LS_ACC_EXT. CALL FUNCTION 'ZFI_GET_ACC_EXT' TABLES ET_ACC_EXT = LT_ACC_EXT. IF LT_ACC_EXT[] IS NOT INITIAL. LOOP AT BUFF_TAB INTO WA_BUFF. CLEAR:LS_ACC_EXT. READ TABLE LT_ACC_EXT INTO LS_ACC_EXT WITH KEY NUM_LINE = WA_BUFF-NUM_LINE. IF SY-SUBRC EQ 0. WA_BUFF-EXT_NUMBER = LS_ACC_EXT-EXT_NUMBER. IF WA_BUFF-EXT_NUMBER_CORR IS NOT INITIAL. WA_BUFF-EXT_NUMBER_CORR = LS_ACC_EXT-EXT_NUMBER. ENDIF. MODIFY BUFF_TAB FROM WA_BUFF. ENDIF. CLEAR:WA_BUFF. ENDLOOP. ENDIF. ENDENHANCEMENT. *$*$-End: (2)---------------------------------------------------------------------------------$*$* ENDFORM. " prepare_interface
J_3RF_BUY_BOOK_03
*&---------------------------------------------------------------------* *& Form prepare_interface *&---------------------------------------------------------------------* FORM PREPARE_INTERFACE. DATA: NAME1 LIKE ADDR1_VAL-NAME1, NAME2 LIKE ADDR1_VAL-NAME2, NAME3 LIKE ADDR1_VAL-NAME3, NAME4 LIKE ADDR1_VAL-NAME4, NAME1_R LIKE ADDR1_VAL-NAME1, NAME2_R LIKE ADDR1_VAL-NAME2, NAME3_R LIKE ADDR1_VAL-NAME3, NAME4_R LIKE ADDR1_VAL-NAME4. DATA: WA_BOOK TYPE J_3RBUY, WA_BUFF TYPE TY_ADOBE_LINE, WA_TOTAL TYPE TY_ADOBE_TOTAL. DATA: IT_CUSTOMS TYPE TABLE OF STRING. DATA: L_LEN TYPE I, L_STR LIKE LINE OF IT_CUSTOMS. DATA: NUM_LINE_ADD(10) TYPE N VALUE '1'. DATA: L_VALUE TYPE STRING. DATA: L_MONAT_LOW TYPE BKPF-MONAT, " 2056387 L_MONAT_HIGH TYPE BKPF-MONAT, " 2056387 LS_ADD_QUART_R LIKE LINE OF AD_MONAT[]. " 2056387 " maximum length of BKPF-XBLNR DATA: MAX_XBLNR_LEN TYPE I VALUE 16, " 2099024 L_LONG_GTD TYPE STRING, " 2099024 L_CORR TYPE FLAG. " 2554457 DESCRIBE FIELD WA_BOOK-XBLNR_INV LENGTH MAX_XBLNR_LEN IN CHARACTER MODE. DESCRIBE FIELD WA_BUFF-EXT_NUMBER LENGTH L_LEN IN CHARACTER MODE. IF MAX_XBLNR_LEN >= L_LEN. CLEAR MAX_XBLNR_LEN. " do not read external texts ENDIF. REFRESH: BUFF_TAB, BUFF_TAB_ADD. CLEAR: IN_TOTALS. NUM_LINE_ADD = AD_DOC_N. "N1472064 IF NUM_LINE_ADD IS INITIAL. NUM_LINE_ADD = 1. ENDIF. LOOP AT P_BOOK_ALV1 INTO WA_BOOK. " where belnr_add eq space. CLEAR WA_BUFF. MOVE-CORRESPONDING WA_BOOK TO WA_BUFF. "#EC ENHOK "N1351387: fill FLG_BELNR_TRN for new format only CLEAR WA_BUFF-FLG_BELNR_TRN. IF ( WA_BOOK-BELNR_ADD EQ SPACE AND P_DP_BAS NE SPACE ) OR ( WA_BOOK-BELNR_ADD NE SPACE AND P_DP_ADD NE SPACE ). WA_BUFF-FLG_BELNR_TRN = WA_BOOK-FLG_BELNR_TRN. IF WA_BUFF-FLG_BELNR_TRN = 'A'. CLEAR WA_BUFF-MM_INV_VORNU." no gtd CLEAR WA_BUFF-HWBAS2_TRN. " no totals CLEAR WA_BUFF-HWBAS5_TRN. * Note 2003630 CLEAR WA_BUFF-HWBAS3_TRN. CLEAR WA_BUFF-HWBAS4_TRN. ENDIF. ENDIF. "N1362831 - get long external number L_LEN = STRLEN( WA_BUFF-EXT_NUMBER ). L_CORR = ' '. IF WA_BOOK-BELNR_CORR_INV = WA_BOOK-BELNR_INV AND " 2554457 WA_BOOK-GJAHR_CORR_INV = WA_BOOK-GJAHR_INV. L_CORR = 'X'. ENDIF. IF P_EXTNUM EQ 'X' AND WA_BOOK-JOURNAL IS INITIAL AND " 1711413 - do not overwrite journal data LCL_BUY_BOOK=>IF_EXT_NUMBER( IS_BOOK = WA_BOOK " 1802867 I_XBLNR = P_XBLNR I_XBLNR1 = P_XBLNR1 I_XBLNR2 = P_XBLNR2 IF_CORR = L_CORR ) = 'X' AND L_LEN EQ MAX_XBLNR_LEN AND PAR_EXT EQ 'X' AND PAR_EXTN NE SPACE AND MAX_XBLNR_LEN > 0. " 2099024 - do not load texts. PERFORM READ_TEXTS USING WA_BOOK-BUKRS WA_BOOK-BELNR_INV WA_BOOK-GJAHR_INV PAR_EXTN CHANGING L_VALUE. IF L_VALUE NE SPACE. WA_BUFF-EXT_NUMBER = L_VALUE. ENDIF. ENDIF. * Replace ; with space for better output in PDF form IF NOT WA_BUFF-MM_INV_VORNU IS INITIAL AND P_XML IS INITIAL. REFRESH IT_CUSTOMS. SPLIT WA_BUFF-MM_INV_VORNU AT ';' INTO TABLE IT_CUSTOMS. CONCATENATE LINES OF IT_CUSTOMS INTO WA_BUFF-MM_INV_VORNU SEPARATED BY SPACE. ENDIF. "N1326787: for long GTDs - load directly from the database REFRESH IT_CUSTOMS. L_LEN = STRLEN( WA_BUFF-MM_INV_VORNU ). IF P_LNGGTD EQ 'X' AND L_LEN > MAX_GTD_LEN. PERFORM GET_LONG_GTD TABLES IT_CUSTOMS USING WA_BOOK CHANGING L_LONG_GTD. " 2099024 * 2099024 - use full string * read table it_customs into l_str index 1. * if sy-subrc IS INITIAL. * wa_buff-mm_inv_vornu = l_str. * endif. REFRESH IT_CUSTOMS. WA_BUFF-MM_INV_VORNU = L_LONG_GTD. ENDIF. L_LEN = STRLEN( WA_BUFF-PAY_EXT_NUMBER ). IF P_LNGGTD EQ 'X' AND L_LEN > 250. DATA L_BELNR TYPE BKPF-BELNR. "2418782 DATA L_GJAHR TYPE BKPF-GJAHR. "2418782 IF WA_BUFF-OPER_TYP = '22'. "2418782 L_BELNR = WA_BOOK-BELNR_TRN. "2418782 L_GJAHR = WA_BOOK-GJAHR_TRN. "2418782 ELSE. "2418782 L_BELNR = WA_BOOK-BELNR_INV. "2418782 L_GJAHR = WA_BOOK-GJAHR_INV. "2418782 ENDIF. "2418782 PERFORM READ_TEXTS USING WA_BOOK-BUKRS L_BELNR L_GJAHR PAR_PAYN CHANGING L_LONG_GTD. WA_BUFF-PAY_EXT_NUMBER = L_LONG_GTD. ENDIF. "N1329299: print actual payment date IF P_ACTPAY EQ 'X'. WA_BUFF-BLDAT_PAY = WA_BOOK-BLDAT_ORIGPAY. ENDIF. * 1695097 - re-arrange columns for correction and revision invoices IF VER2012 = 'X'. PERFORM ADOBE_FILL_INV USING WA_BOOK CHANGING WA_BUFF. ENDIF. IF WA_BOOK-BELNR_ADD EQ SPACE. APPEND WA_BUFF TO BUFF_TAB. ELSE. "N1334957 - always renumerate additional sheets WA_BUFF-NUM_LINE = NUM_LINE_ADD. NUM_LINE_ADD = NUM_LINE_ADD + 1. APPEND WA_BUFF TO BUFF_TAB_ADD. ENDIF. "N1326787: now append GTD rows IF NOT IT_CUSTOMS IS INITIAL. CLEAR WA_BUFF. LOOP AT IT_CUSTOMS INTO L_STR FROM 2. WA_BUFF-MM_INV_VORNU = L_STR. IF WA_BOOK-BELNR_ADD EQ SPACE. APPEND WA_BUFF TO BUFF_TAB. ELSE. APPEND WA_BUFF TO BUFF_TAB_ADD. ENDIF. ENDLOOP. ENDIF. ENDLOOP. * The code below has been moved to form FILL_ADD_FIELDS * loop at p_book_alv1 into wa_book where belnr_add ne space. * if ( wa_book-flag_add = 'X' ) and * ( wa_book-belnr_inv = wa_book-belnr_trn ). * wa_book-belnr_inv = wa_book-belnr_add. ** wa_pbook-xblnr_inv = wa_pbook-xblnr_test. * endif. * move-corresponding wa_book to wa_buff. * append wa_buff to buff_tab_add. * endloop. SELECT SINGLE * FROM T001 WHERE BUKRS = MAINBUK. * INN SELECT SINGLE PAVAL INTO BUFF_HEADER-INN FROM T001Z WHERE BUKRS = MAINBUK AND PARTY = 'SAPR01'. * KPP SELECT SINGLE PAVAL INTO BUFF_HEADER-KPP FROM T001Z WHERE BUKRS = MAINBUK AND PARTY = 'SAPR10'. * Chief Accountant IF VER2012 IS INITIAL. " 1969939 - signature is chief accountant SELECT SINGLE PAVAL INTO BUFF_HEADER-CHIEF_ACCOUNTANT FROM T001Z WHERE BUKRS = MAINBUK AND PARTY = 'SAPR15'. ELSE. " 1969939 - signature is CEO SELECT SINGLE PAVAL INTO BUFF_HEADER-CHIEF_ACCOUNTANT FROM T001Z WHERE BUKRS = MAINBUK AND PARTY = 'SAPR13'. ENDIF. BUFF_HEADER-GJAHR = BR_GJAHR-LOW. BUFF_HEADER-BUDAT_BEGIN = BR_BUDAT-LOW. BUFF_HEADER-BUDAT_END = BR_BUDAT-HIGH. PERFORM GET_CALENDAR_PERIOD USING SEL_MONA-LOW CHANGING BUFF_HEADER-MONAT_BEGIN. PERFORM GET_CALENDAR_PERIOD USING SEL_MONA-HIGH CHANGING BUFF_HEADER-MONAT_END. * 1695097 - format from.. to.. dates IF VER2012 = 'X'. PERFORM ADOBE_PERIOD CHANGING BUFF_HEADER-GJAHR BUFF_HEADER-MONAT_BEGIN BUFF_HEADER-MONAT_END BUFF_HEADER-BUDAT_BEGIN BUFF_HEADER-BUDAT_END. ENDIF. PERFORM SELECT_ADDR USING NAME1 NAME2 NAME3 NAME4 NAME1_R NAME2_R NAME3_R NAME4_R MAINBUK. IF S_ADR <> 'X'. * Check if the Russian version of address is requested CONCATENATE NAME1 NAME2 NAME3 NAME4 INTO BUFF_HEADER-COMPANY_NAME SEPARATED BY SPACE. ELSE. CONCATENATE NAME1_R NAME2_R NAME3_R NAME4_R INTO BUFF_HEADER-COMPANY_NAME SEPARATED BY SPACE. ENDIF. IF NOT BUFF_TAB_ADD IS INITIAL OR NOT VR_EMPTY IS INITIAL. " 2178684 MOVE-CORRESPONDING BUFF_HEADER TO BUFF_HEADER_ADD. BUFF_HEADER_ADD-GJAHR = AD_GJAHR-LOW. BUFF_HEADER_ADD-BUDAT_BEGIN = AD_BUDAT-LOW. BUFF_HEADER_ADD-BUDAT_END = AD_BUDAT-HIGH. IF BUFF_HEADER_ADD-BUDAT_BEGIN IS INITIAL AND BUFF_HEADER_ADD-BUDAT_END IS INITIAL AND NOT AD_VTDAT-LOW IS INITIAL AND NOT AD_VTDAT-HIGH IS INITIAL. BUFF_HEADER_ADD-BUDAT_BEGIN = AD_VTDAT-LOW. BUFF_HEADER_ADD-BUDAT_END = AD_VTDAT-HIGH. ENDIF. L_MONAT_LOW = AD_MONAT-LOW. L_MONAT_HIGH = AD_MONAT-HIGH. * 2056387 - tax period from quarter IF NOT P_QUART IS INITIAL AND NOT ADD_QUART_R[] IS INITIAL AND P_XML IS INITIAL. " for XML - use months LOOP AT ADD_QUART_R INTO LS_ADD_QUART_R. L_MONAT_LOW = LS_ADD_QUART_R-LOW. L_MONAT_HIGH = LS_ADD_QUART_R-HIGH. EXIT. ENDLOOP. ENDIF. PERFORM GET_CALENDAR_PERIOD USING L_MONAT_LOW " 2056387 CHANGING BUFF_HEADER_ADD-MONAT_BEGIN. PERFORM GET_CALENDAR_PERIOD USING L_MONAT_HIGH " 2056387 CHANGING BUFF_HEADER_ADD-MONAT_END. IF NOT BUFF_HEADER_ADD-MONAT_BEGIN IS INITIAL AND " 2056387 BUFF_HEADER_ADD-MONAT_END IS INITIAL. BUFF_HEADER_ADD-MONAT_END = BUFF_HEADER_ADD-MONAT_BEGIN. ENDIF. BUFF_HEADER_ADD-AD_SHEET = AD_SHEET. BUFF_HEADER_ADD-DATE_OUTPUT = AD_DATE. MOVE-CORRESPONDING GS_TOTALS TO IN_TOTALS. "#EC ENHOK ENDIF. BUFF_HEADER-DECREE451 = P_DP_BAS. BUFF_HEADER_ADD-DECREE451 = P_DP_ADD. """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""$"$\SE:(2) Form PREPARE_INTERFACE, End A *$*$-Start: (2)---------------------------------------------------------------------------------$*$* ENHANCEMENT 1 Z_J_3RF_BUY_BOOK_03_PREPARE. "active version * "需求描述:俄分Sales ledger 导出XML文件时,将凭证字段替换成ZOUNR字段(数值等同PI号) "需求编号:暂无 "开发者: "开发日期:2018.08.06 DATA:LS_ACC_EXT TYPE ZSSD_J_3R_SALES_LEDGER_01, LT_ACC_EXT TYPE TABLE OF ZSSD_J_3R_SALES_LEDGER_01. CLEAR:LT_ACC_EXT[],LS_ACC_EXT. CALL FUNCTION 'ZFI_GET_ACC_EXT' TABLES ET_ACC_EXT = LT_ACC_EXT. IF LT_ACC_EXT[] IS NOT INITIAL. LOOP AT BUFF_TAB INTO WA_BUFF. CLEAR:LS_ACC_EXT. READ TABLE LT_ACC_EXT INTO LS_ACC_EXT WITH KEY NUM_LINE = WA_BUFF-NUM_LINE. IF SY-SUBRC EQ 0. WA_BUFF-EXT_NUMBER = LS_ACC_EXT-EXT_NUMBER. IF WA_BUFF-EXT_NUMBER_CORR IS NOT INITIAL. WA_BUFF-EXT_NUMBER_CORR = LS_ACC_EXT-EXT_NUMBER. ENDIF. MODIFY BUFF_TAB FROM WA_BUFF. ENDIF. CLEAR:WA_BUFF. ENDLOOP. ENDIF. ENDENHANCEMENT. *$*$-End: (2)---------------------------------------------------------------------------------$*$* ENDFORM. " prepare_interface
J_3RF_BUY_BOOK_03
*----------------------------------------------------------------------* * FORM View_EXTRACT *----------------------------------------------------------------------* FORM VIEW_EXTRACT USING V_EXTRACT LIKE DISEXTRACT CHANGING CT_BOOK TYPE J_3R_T_BUY CS_TOTALS TYPE J_3RBUY. DATA: * it_book type j_3r_t_buy, * wa_book type j_3rbuy, NUM_LINE_ADD(10) TYPE N VALUE '1', NUM_LINE_BAS(10) TYPE N, LV_DELETE TYPE ABAP_BOOL, LV_SKIP TYPE ABAP_BOOL. FIELD-SYMBOLS: <FS_BOOK> LIKE LINE OF CT_BOOK. IF V_EXTRACT-EXNAME IS INITIAL AND VR_EMPTY IS NOT INITIAL. EXIT. ENDIF. NUM_LINE_BAS = NUM_STRT. " 1695097 IF NUM_LINE_BAS IS INITIAL. NUM_LINE_BAS = 1. ENDIF. NUM_LINE_ADD = AD_DOC_N. "N1472064 IF NUM_LINE_ADD IS INITIAL. NUM_LINE_ADD = 1. ENDIF. PERFORM LOAD_EXTRACT USING V_EXTRACT CHANGING CT_BOOK CS_TOTALS. * Apply selections LOOP AT CT_BOOK ASSIGNING <FS_BOOK>. "apply selection parameters for trn docs. PERFORM APPLY_SEL_PARAM_TRN CHANGING <FS_BOOK> LV_SKIP . IF LV_SKIP IS NOT INITIAL. LV_DELETE = ABAP_TRUE. CONTINUE. ENDIF. IF VER2012 IS INITIAL. "note 2250473 CLEAR <FS_BOOK>-NUM_LINE. * Look for report's line number in numbering pool IF NUM_AUTO = 'X' AND <FS_BOOK>-BELNR_ADD IS INITIAL. " 1702300 <FS_BOOK>-NUM_LINE = NUM_LINE_BAS. NUM_LINE_BAS = NUM_LINE_BAS + 1. ELSEIF <FS_BOOK>-BELNR_ADD IS INITIAL AND <FS_BOOK>-BELNR_TRN IS INITIAL. "N1326572: 0% tax SELECT SINGLE BELNR_TRANSP INTO <FS_BOOK>-NUM_LINE FROM J_3RBUE_BOOK_NUM WHERE BUKRS = <FS_BOOK>-BUKRS AND BELNR = <FS_BOOK>-BELNR_INV AND GJAHR = <FS_BOOK>-GJAHR_INV AND BUZEI = <FS_BOOK>-BUZEI_TEST. ELSEIF <FS_BOOK>-BELNR_ADD IS INITIAL. SELECT SINGLE BELNR_TRANSP INTO <FS_BOOK>-NUM_LINE FROM J_3RBUE_BOOK_NUM WHERE BUKRS = <FS_BOOK>-BUKRS AND BELNR = <FS_BOOK>-BELNR_TRN AND GJAHR = <FS_BOOK>-GJAHR_TRN AND BUZEI = <FS_BOOK>-BUZEI_TEST. ELSE. * N1334957 - sequential numbering for additional sheets * select single belnr_transp into wa_book-num_line * from j_3rbue_book_num * where bukrs = wa_book-bukrs and * belnr = wa_book-belnr_add and * gjahr = wa_book-gjahr_add and * buzei = wa_book-buzei_add. <FS_BOOK>-NUM_LINE = NUM_LINE_ADD. NUM_LINE_ADD = NUM_LINE_ADD + 1. ENDIF. ENDIF. PERFORM FILL_ADD_FIELDS CHANGING <FS_BOOK>. * append wa_book to ct_book. ENDLOOP. IF LV_DELETE IS NOT INITIAL. DELETE CT_BOOK WHERE BUKRS IS INITIAL. ENDIF. * free it_book. """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""$"$\SE:(1) Form VIEW_EXTRACT, End A *$*$-Start: (1)---------------------------------------------------------------------------------$*$* ENHANCEMENT 1 Z_J_3RF_BUY_BOOK_03_VIEW. "active version * "需求描述:俄分Sales ledger 导出XML文件时,将凭证字段替换成ZOUNR字段(数值等同PI号) "需求编号:暂无 "开发者: "开发日期:2018.08.06 FIELD-SYMBOLS:<CT_BOOK> TYPE J_3RBUY. DATA:LT_BOOK_SEL TYPE TABLE OF J_3RBUY. DATA:LT_BKPF TYPE TABLE OF BKPF, LS_BKPF TYPE BKPF, LT_BSEG TYPE TABLE OF BSEG, LS_BSEG TYPE BSEG. DATA:LT_ACC_EXT TYPE TABLE OF ZSSD_J_3R_SALES_LEDGER_01, LS_ACC_EXT TYPE ZSSD_J_3R_SALES_LEDGER_01. * BREAK-POINT. CLEAR:LT_BOOK_SEL,LT_BKPF,LT_BSEG. LT_BOOK_SEL = CT_BOOK. IF LT_BOOK_SEL IS NOT INITIAL. SORT LT_BOOK_SEL BY BUKRS GJAHR_INV BELNR_INV. DELETE ADJACENT DUPLICATES FROM LT_BOOK_SEL COMPARING BUKRS GJAHR_INV BELNR_INV. SELECT BUKRS GJAHR BELNR INTO CORRESPONDING FIELDS OF TABLE LT_BKPF FROM BKPF FOR ALL ENTRIES IN LT_BOOK_SEL WHERE BUKRS = LT_BOOK_SEL-BUKRS AND GJAHR = LT_BOOK_SEL-GJAHR_INV AND BELNR = LT_BOOK_SEL-BELNR_INV AND GLVOR = 'SD00'. IF SY-SUBRC EQ 0. SELECT BUKRS GJAHR BELNR ZUONR INTO CORRESPONDING FIELDS OF TABLE LT_BSEG FROM BSEG FOR ALL ENTRIES IN LT_BKPF WHERE BUKRS = LT_BKPF-BUKRS AND GJAHR = LT_BKPF-GJAHR AND BELNR = LT_BKPF-BELNR AND KOART = 'D'. SORT LT_BKPF BY BUKRS GJAHR BELNR. SORT LT_BSEG BY BUKRS GJAHR BELNR. ENDIF. ENDIF. CLEAR:LT_ACC_EXT. LOOP AT CT_BOOK ASSIGNING <CT_BOOK>. READ TABLE LT_BKPF TRANSPORTING NO FIELDS WITH KEY BUKRS = <CT_BOOK>-BUKRS GJAHR = <CT_BOOK>-GJAHR_INV BELNR = <CT_BOOK>-BELNR_INV BINARY SEARCH. IF SY-SUBRC EQ 0. READ TABLE LT_BSEG INTO LS_BSEG WITH KEY BUKRS = <CT_BOOK>-BUKRS GJAHR = <CT_BOOK>-GJAHR_INV BELNR = <CT_BOOK>-BELNR_INV BINARY SEARCH. * IF LS_BSEG-ZUONR IS INITIAL. * CONTINUE. * ENDIF. CLEAR:LS_ACC_EXT. LS_ACC_EXT-NUM_LINE = <CT_BOOK>-NUM_LINE. LS_ACC_EXT-BUKRS = <CT_BOOK>-BUKRS. LS_ACC_EXT-GJAHR = <CT_BOOK>-GJAHR_INV. LS_ACC_EXT-BELNR = <CT_BOOK>-BELNR_INV. CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' EXPORTING INPUT = LS_ACC_EXT-BELNR IMPORTING OUTPUT = LS_ACC_EXT-BELNR . CONCATENATE LS_ACC_EXT-BUKRS LS_ACC_EXT-GJAHR '-' LS_ACC_EXT-BELNR INTO <CT_BOOK>-EXT_NUMBER. LS_ACC_EXT-EXT_NUMBER = <CT_BOOK>-EXT_NUMBER. APPEND LS_ACC_EXT TO LT_ACC_EXT. ENDIF. * <ct_book> ENDLOOP. IF LT_ACC_EXT[] IS NOT INITIAL. CALL FUNCTION 'ZFI_SET_ACC_EXT' TABLES IT_ACC_EXT = LT_ACC_EXT. ENDIF. ENDENHANCEMENT. *$*$-End: (1)---------------------------------------------------------------------------------$*$* ENDFORM. "View_EXTRACT