KNB1-ZTERM update
Hi,
based on customer number and company code, i want to update the KNB1-ZTERM (payment terms). The change log must be updated, so i need a bapi.
Which bapi will do the job ?
gr
Hans
Hi,
You can use class CMD_EI_API. You can find in SDN how use it and put partameters.
To change KNB1-ZTERM You should use in method MAINTAIN_BAPI parameters:
MASTER_DATA->CUSTOMER->COMPANY_DATA->COMPANY (add line in table) and fields:
TASK = 'U' (Update)
DATA_KEY-BUKRS = (company code)
DATA-ZTERM = (payment terms)
DATAX-ZTERM = 'X'
Jarek
Similar Messages
-
Update & upload the database table
Hi
I have a small issue. In which i have to Upload the data from a flat file based on primary key its a customised table in which there are 4 primary keys. Based on this the customer numbers should be updated and on emore thing is the data should not be repeated. In the selection screen i'll provide a path based on this path it will upload all the data in the flat file
Regards
NandaHi,
Below is the sample code :
*& Report ZCUSTOMER_MASTER_UPLOAD
REPORT ZCUSTOMER_MASTER_UPLOAD
no standard page heading line-size 255.
*include bdcrecx1.
TABLES : T100. "Company Codes
* Internal table declaration *
DATA : begin of it_customer occurs 0, "Internal table for creating customer
INDEX(4), "Index
KUNNR(16), "Customer No
BUKRS(4), "Company code
VKORG(4), "Sales Organization
VTWEG(2), "Distribution Channel
SPART(2), "Division
KTOKD(4), "Account group
ANRED(30), "Title
NAME1(35), "Name1
SORTL(10), "Search field
NAME2(35), "Name2
NAME3(35), "Name3
NAME4(35), "Name4
STRAS(35), "House and street
STREET2(35),
PFACH(10), "PO box
ORT01(35), "City
PSTLZ(10), "Postal code
ORT02(35), "District
PFORT(35), "PO Box city
PSTL2(10), "Postal code
LAND1(3), "Country Key
REGIO(3), "Region
SPRAS(2), "Language key
TELX1(30), "Telex number
TELF1(16), "First telephone number
TELFX(30), "Fax number
TELF2(16), "Second telephone number
TELTX(30), "Second telex number
KNURL(132), "URL
STCEG(20), "VAT Registration number
AKONT(10), "Recon Account
ZUAWA(4), "Sort key
ZTERM(4), "Terms of payment key
ZWELS(10), "List of payment methods to be considered
BZIRK(6), "Sales district
* AWAHR(3), "Order probability
VKBUR(4), "Sales office
VKGRP(3), "Sales group
KDGRP(2), "Customer group
WAERS(5), "Currency
KALKS(1), "Pricing procedure assigned to this customer
VERSG(1), "Customer statistics group
LPRIO(2), "Delivery Priority
VWERK(4), "Delivering Plant
* ANTLF(1) VALUE 9, "Maximum partial deliveries allowed
INCO1(3), "Inco terms1
INCO2(28), "Inco terms2
ZTERM_01(4), "Terms of payment key
KTGRD(2), "Account assignment group
TAXKD_01(1), "Tax classification1
TAXKD_02(1), "Tax classification2
er_message(100),
end of it_customer.
data : begin of it_customer_ext occurs 0, "Internal table for extending customer
KUNNR(16), "Customer No
VKORG(4), "Sales Organization
VTWEG(2), "Distribution channel
SPART(2), "Division
KTOKD(4), "Account group
BZIRK(6), "Sales district
VKBUR(4), "Sales office
VKGRP(3), "Sales group
KDGRP(2), "Customer group
WAERS(5), "Currency
KALKS(1), "Pricing procedure assigned to this customer
VERSG(1), "Customer statistics group
LPRIO(2), "Delivery priority
VWERK(4), "Delivery plant
INCO1(3), "Incoterms (part 1)
INCO2(28), "Incoterms (part 2)
ZTERM(4), "Terms of payment key
KTGRD(2), "Account assignment group for this customer
TAXKD_01(1), "Tax classification1
TAXKD_02(1), "Tax classification2
end of it_customer_ext.
* Internal table to get the error data *
DATA : it_error like it_customer occurs 0 with header line.
DATA : BDCDATA like BDCDATA occurs 0 with header line.
DATA : i_msgtab like bdcmsgcoll occurs 0 with header line.
* Internal table to find the error from the legacy data *
DATA : begin of it_erfind occurs 0,
INDEX(10), "Index for error file
kunnr(16),
er_message(100), "For Error Message
end of it_erfind.
* Variables declaration *
DATA : g_message(200),
time(10),
date(10) ,
v_error_filename like RLGRAP-FILENAME.
date = sy-datum.
time = sy-uzeit.
* Initialization
initialization.
* Generating Error file name with date and time.
perform make_file_name.
* Selection Screen *
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
parameter: p_file like IBIPPARMS-PATH obligatory.
SELECTION-SCREEN SKIP.
SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME TITLE text-005.
parameters : pm_crt radiobutton group g1 default 'X',
pm_ext radiobutton group g1.
SELECTION-SCREEN END OF BLOCK B2.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(30) text-003.
SELECTION-SCREEN COMMENT 33(79) text-004.
SELECTION-SCREEN end OF LINE.
SELECTION-SCREEN:END OF BLOCK B1.
at selection-screen ON VALUE-REQUEST FOR p_file .
perform get_filename.
* Start of selection
start-of-selection.
perform upload_data.
if pm_crt = 'X'. "If Customer creation is selected
perform fill_data_create.
elseif pm_ext = 'X'. "If Customer extension is selected
perform fill_data_extension.
endif.
end-of-selection.
FORM fill_data_create.
loop at it_customer.
perform bdc_dynpro using 'SAPMF02D' '0100'.
perform bdc_field using 'BDC_CURSOR'
'RF02D-KTOKD'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'RF02D-KUNNR'
it_customer-KUNNR.
perform bdc_field using 'RF02D-BUKRS'
it_customer-BUKRS.
perform bdc_field using 'RF02D-VKORG'
it_customer-VKORG.
perform bdc_field using 'RF02D-VTWEG'
it_customer-VTWEG.
perform bdc_field using 'RF02D-SPART'
it_customer-SPART.
perform bdc_field using 'RF02D-KTOKD'
it_customer-KTOKD.
perform bdc_dynpro using 'SAPMF02D' '0110'.
perform bdc_field using 'BDC_CURSOR'
'KNA1-KNURL'.
perform bdc_field using 'BDC_OKCODE'
'=VW'.
perform bdc_field using 'KNA1-ANRED'
it_customer-ANRED.
perform bdc_field using 'KNA1-NAME1'
it_customer-NAME1.
perform bdc_field using 'KNA1-SORTL'
it_customer-SORTL.
perform bdc_field using 'KNA1-NAME2'
it_customer-NAME2.
perform bdc_field using 'KNA1-NAME3'
it_customer-NAME3.
perform bdc_field using 'KNA1-NAME4'
it_customer-NAME4.
perform bdc_field using 'KNA1-STRAS'
it_customer-STRAS.
perform bdc_field using 'KNA1-STREET2'
it_customer-STREET2.
perform bdc_field using 'KNA1-PFACH'
it_customer-PFACH.
perform bdc_field using 'KNA1-ORT01'
it_customer-ORT01.
perform bdc_field using 'KNA1-PSTLZ'
it_customer-PSTLZ.
perform bdc_field using 'KNA1-ORT02'
it_customer-ORT02.
perform bdc_field using 'KNA1-PFORT'
it_customer-PFORT.
perform bdc_field using 'KNA1-PSTL2'
it_customer-PSTL2.
perform bdc_field using 'KNA1-LAND1'
it_customer-LAND1.
perform bdc_field using 'KNA1-REGIO'
it_customer-REGIO.
perform bdc_field using 'KNA1-SPRAS'
it_customer-SPRAS.
perform bdc_field using 'KNA1-TELX1'
it_customer-TELX1.
perform bdc_field using 'KNA1-TELF1'
it_customer-TELF1.
perform bdc_field using 'KNA1-TELFX'
it_customer-TELFX.
perform bdc_field using 'KNA1-TELF2'
it_customer-TELF2.
perform bdc_field using 'KNA1-TELTX'
it_customer-TELTX.
perform bdc_field using 'KNA1-KNURL'
it_customer-KNURL.
if it_customer-KTOKD = 'Z002' or
it_customer-KTOKD = 'Z003' or
it_customer-KTOKD = 'Z004' or
it_customer-KTOKD = 'Z005' or
it_customer-KTOKD = 'Z006' or
it_customer-KTOKD = 'Z007'.
perform customer_001.
elseif it_customer-KTOKD = 'Z011'.
perform customer_002.
else.
perform customer_003.
endif.
perform bdc_transaction tables i_msgtab using 'XD01' 'A' 'L' .
* To fetch the error message from the standard error table
select single * from T100 where SPRSL = 'E'
and ARBGB = SY-MSGID
and MSGNR = SY-MSGNO.
G_MESSAGE = T100-TEXT.
* subroutine to change the error message for every document number
perform REPLACE_PARAMETERS using SY-MSGV1
SY-MSGV2
SY-MSGV3
SY-MSGV4
changing G_MESSAGE.
write: / 'System variables:'.
skip.
write: / ' Sy-msgty:', SY-MSGTY.
write: / ' Sy-msgid:', SY-MSGID.
write: / ' Sy-msgno:', SY-MSGNO.
write: / ' Sy-msgv1:', SY-MSGV1.
write: / ' Sy-msgv2:', SY-MSGV2.
write: / ' Sy-msgv3:', SY-MSGV3.
write: / ' Sy-msgv4:', SY-MSGV4.
skip.
write: / 'Message:'.
skip.
write: / SY-MSGTY, G_MESSAGE.
* To find out the error in the legacy data if there is anything and pass
* the document no with error message to the seperate internal table
* called it_erfind
if sy-msgty = 'E'.
it_erfind-index = it_customer-index.
it_erfind-er_message = G_MESSAGE.
append it_erfind.
endif.
* Finally we are segregating the error and downloading the error data.
at last.
* To segregate the error
perform segregate_error.
* To download the error from it_error internal table with err mesg
perform error_download.
perform display_message.
endat.
endloop.
clear it_customer.
ENDFORM.
FORM fill_data_extension.
loop at it_customer_ext.
perform bdc_dynpro using 'SAPMF02D' '0107'.
perform bdc_field using 'BDC_CURSOR'
'RF02D-KTOKD'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'RF02D-KUNNR'
it_customer_ext-KUNNR.
perform bdc_field using 'RF02D-VKORG'
it_customer_ext-VKORG.
perform bdc_field using 'RF02D-VTWEG'
it_customer_ext-VTWEG.
perform bdc_field using 'RF02D-SPART'
it_customer_ext-SPART.
perform bdc_field using 'RF02D-KTOKD'
it_customer_ext-KTOKD.
if it_customer_ext-KTOKD = 'Z002' or
it_customer_ext-KTOKD = 'Z003' or
it_customer_ext-KTOKD = 'Z004' or
it_customer_ext-KTOKD = 'Z005' or
it_customer_ext-KTOKD = 'Z006' or
it_customer_ext-KTOKD = 'Z007' or
it_customer_ext-KTOKD = 'Z011'.
perform customer_extension_001.
else.
perform customer_extension_002.
endif.
perform bdc_transaction tables i_msgtab using 'VD01' 'N' 'L' .
* To fetch the error message from the standard error table
select single * from T100 where SPRSL = 'E'
and ARBGB = SY-MSGID
and MSGNR = SY-MSGNO.
G_MESSAGE = T100-TEXT.
* subroutine to change the error message for every document number
perform REPLACE_PARAMETERS using SY-MSGV1
SY-MSGV2
SY-MSGV3
SY-MSGV4
changing G_MESSAGE.
write: / 'System variables:'.
skip.
write: / ' Sy-msgty:', SY-MSGTY.
write: / ' Sy-msgid:', SY-MSGID.
write: / ' Sy-msgno:', SY-MSGNO.
write: / ' Sy-msgv1:', SY-MSGV1.
write: / ' Sy-msgv2:', SY-MSGV2.
write: / ' Sy-msgv3:', SY-MSGV3.
write: / ' Sy-msgv4:', SY-MSGV4.
skip.
write: / 'Message:'.
skip.
write: / SY-MSGTY, G_MESSAGE.
* To find out the error in the legacy data if there is anything and pass
* the document no with error message to the seperate internal table
* called it_erfind
if sy-msgty = 'E'.
it_erfind-kunnr = it_customer_ext-kunnr.
it_erfind-er_message = G_MESSAGE.
append it_erfind.
endif.
* Finally we are segregating the error and downloading the error data.
at last.
* To segregate the error
perform segregate_error.
* To download the error from it_error internal table with err mesg
perform error_download.
perform display_message.
endat.
endloop.
clear it_customer_ext.
ENDFORM.
*This subroutine is used to fill the data for the Account groups
*Z002,Z003,Z004,Z005,Z006 AND Z007
FORM customer_001.
perform bdc_dynpro using 'SAPMF02D' '0120'.
perform bdc_field using 'BDC_CURSOR'
'KNA1-TXJCD'.
perform bdc_field using 'BDC_OKCODE'
'=VW'.
perform bdc_dynpro using 'SAPMF02D' '0360'.
perform bdc_field using 'BDC_CURSOR'
'KNVK-NAMEV(01)'.
perform bdc_field using 'BDC_OKCODE'
'=VW'.
perform bdc_dynpro using 'SAPMF02D' '0310'.
perform bdc_field using 'BDC_CURSOR'
'KNVV-VERSG'.
perform bdc_field using 'BDC_OKCODE'
'=VW'.
perform bdc_field using 'KNVV-BZIRK'
it_customer-BZIRK.
perform bdc_field using 'KNVV-VKBUR'
it_customer-VKBUR.
perform bdc_field using 'KNVV-VKGRP'
it_customer-VKGRP.
perform bdc_field using 'KNVV-VERSG'
it_customer-VERSG.
perform bdc_dynpro using 'SAPMF02D' '0324'.
perform bdc_field using 'BDC_CURSOR'
'KNVP-PARVW(01)'.
perform bdc_field using 'BDC_OKCODE'
'=UPDA'.
* perform bdc_transaction using 'XD01'.
ENDFORM.
*This subroutine is used to fill the data for the Account group Z011
FORM customer_002.
perform bdc_dynpro using 'SAPMF02D' '0120'.
perform bdc_field using 'BDC_CURSOR'
'KNA1-LIFNR'.
perform bdc_field using 'BDC_OKCODE'
'=VW'.
perform bdc_dynpro using 'SAPMF02D' '0125'.
perform bdc_field using 'BDC_CURSOR'
'KNA1-NIELS'.
perform bdc_field using 'BDC_OKCODE'
'=VW'.
perform bdc_dynpro using 'SAPMF02D' '0130'.
perform bdc_field using 'BDC_CURSOR'
'KNBK-BANKS(01)'.
perform bdc_field using 'BDC_OKCODE'
'=VW'.
perform bdc_dynpro using 'SAPMF02D' '0340'.
perform bdc_field using 'BDC_CURSOR'
'RF02D-KUNNR'.
perform bdc_field using 'BDC_OKCODE'
'=VW'.
perform bdc_dynpro using 'SAPMF02D' '0370'.
perform bdc_field using 'BDC_CURSOR'
'RF02D-KUNNR'.
perform bdc_field using 'BDC_OKCODE'
'=VW'.
perform bdc_field using 'KNA1-CIVVE'
'X'.
perform bdc_dynpro using 'SAPMF02D' '0360'.
perform bdc_field using 'BDC_CURSOR'
'KNVK-NAMEV(01)'.
perform bdc_field using 'BDC_OKCODE'
'=VW'.
perform bdc_dynpro using 'SAPMF02D' '0310'.
perform bdc_field using 'BDC_CURSOR'
'KNVV-VERSG'.
perform bdc_field using 'BDC_OKCODE'
'=VW'.
perform bdc_field using 'KNVV-BZIRK'
it_customer-BZIRK.
perform bdc_field using 'KNVV-VERSG'
it_customer-VERSG.
perform bdc_dynpro using 'SAPMF02D' '0324'.
perform bdc_field using 'BDC_CURSOR'
'KNVP-PARVW(01)'.
perform bdc_field using 'BDC_OKCODE'
'=UPDA'.
ENDFORM.
*This subroutine is used to fill the data for the Account groups
*Z020,Z021,Z022,Z023,Z200,Z201.
FORM customer_003.
perform bdc_dynpro using 'SAPMF02D' '0120'.
perform bdc_field using 'BDC_CURSOR'
'KNA1-STCEG'.
perform bdc_field using 'BDC_OKCODE'
'=VW'.
perform bdc_field using 'KNA1-STCEG'
it_customer-STCEG.
perform bdc_dynpro using 'SAPMF02D' '0125'.
perform bdc_field using 'BDC_CURSOR'
'KNA1-NIELS'.
perform bdc_field using 'BDC_OKCODE'
'=VW'.
perform bdc_dynpro using 'SAPMF02D' '0130'.
perform bdc_field using 'BDC_CURSOR'
'KNBK-BANKS(01)'.
perform bdc_field using 'BDC_OKCODE'
'=VW'.
perform bdc_dynpro using 'SAPMF02D' '0340'.
perform bdc_field using 'BDC_CURSOR'
'RF02D-KUNNR'.
perform bdc_field using 'BDC_OKCODE'
'=VW'.
perform bdc_dynpro using 'SAPMF02D' '0370'.
perform bdc_field using 'BDC_CURSOR'
'RF02D-KUNNR'.
perform bdc_field using 'BDC_OKCODE'
'=VW'.
perform bdc_field using 'KNA1-CIVVE'
'X'.
perform bdc_dynpro using 'SAPMF02D' '0360'.
perform bdc_field using 'BDC_CURSOR'
'KNVK-NAMEV(01)'.
perform bdc_field using 'BDC_OKCODE'
'=VW'.
perform bdc_dynpro using 'SAPMF02D' '0210'.
perform bdc_field using 'BDC_CURSOR'
'KNB1-KNRZE'.
perform bdc_field using 'BDC_OKCODE'
'=VW'.
perform bdc_field using 'KNB1-AKONT'
it_customer-AKONT.
perform bdc_field using 'KNB1-ZUAWA'
it_customer-ZUAWA.
perform bdc_dynpro using 'SAPMF02D' '0215'.
perform bdc_field using 'BDC_CURSOR'
'KNB1-ZWELS'.
perform bdc_field using 'BDC_OKCODE'
'=VW'.
perform bdc_field using 'KNB1-ZTERM'
it_customer-ZTERM.
perform bdc_field using 'KNB1-ZWELS'
it_customer-ZWELS.
perform bdc_dynpro using 'SAPMF02D' '0220'.
perform bdc_field using 'BDC_CURSOR'
'KNB5-MAHNA'.
perform bdc_field using 'BDC_OKCODE'
'=VW'.
perform bdc_dynpro using 'SAPMF02D' '0230'.
perform bdc_field using 'BDC_CURSOR'
'KNB1-VRSNR'.
perform bdc_field using 'BDC_OKCODE'
'=VW'.
perform bdc_dynpro using 'SAPMF02D' '0610'.
perform bdc_field using 'BDC_OKCODE'
'=VW'.
perform bdc_field using 'BDC_CURSOR'
'RF02D-KUNNR'.
perform bdc_dynpro using 'SAPMF02D' '0310'.
perform bdc_field using 'BDC_CURSOR'
'KNVV-VERSG'.
perform bdc_field using 'BDC_OKCODE'
'=VW'.
perform bdc_field using 'KNVV-BZIRK'
it_customer-BZIRK.
* perform bdc_field using 'KNVV-AWAHR'
* it_customer-AWAHR.
perform bdc_field using 'KNVV-VKBUR'
it_customer-VKBUR.
perform bdc_field using 'KNVV-VKGRP'
it_customer-VKGRP.
perform bdc_field using 'KNVV-KDGRP'
it_customer-KDGRP.
perform bdc_field using 'KNVV-WAERS'
it_customer-WAERS.
perform bdc_field using 'KNVV-KALKS'
it_customer-KALKS.
perform bdc_field using 'KNVV-VERSG'
it_customer-VERSG.
perform bdc_dynpro using 'SAPMF02D' '0315'.
perform bdc_field using 'BDC_CURSOR'
'KNVV-VWERK'.
perform bdc_field using 'BDC_OKCODE'
'=VW'.
perform bdc_field using 'KNVV-LPRIO'
it_customer-LPRIO.
* perform bdc_field using 'KNVV-KZAZU'
* 'X'.
perform bdc_field using 'KNVV-VWERK'
it_customer-VWERK.
* perform bdc_field using 'KNVV-ANTLF'
* it_customer-ANTLF.
perform bdc_dynpro using 'SAPMF02D' '0320'.
perform bdc_field using 'BDC_CURSOR'
'KNVV-KTGRD'.
perform bdc_field using 'BDC_OKCODE'
'=VW'.
perform bdc_field using 'KNVV-INCO1'
it_customer-INCO1.
perform bdc_field using 'KNVV-INCO2'
it_customer-INCO2.
perform bdc_field using 'KNVV-ZTERM'
it_customer-ZTERM_01.
perform bdc_field using 'KNVV-KTGRD'
it_customer-KTGRD.
perform bdc_dynpro using 'SAPMF02D' '1350'.
perform bdc_field using 'BDC_CURSOR'
'KNVI-TAXKD(02)'.
perform bdc_field using 'BDC_OKCODE'
'=VW'.
perform bdc_field using 'KNVI-TAXKD(01)'
it_customer-TAXKD_01.
perform bdc_field using 'KNVI-TAXKD(02)'
it_customer-TAXKD_02.
perform bdc_dynpro using 'SAPMF02D' '0324'.
perform bdc_field using 'BDC_CURSOR'
'KNVP-PARVW(01)'.
perform bdc_field using 'BDC_OKCODE'
'=UPDA'.
* perform bdc_transaction using 'XD01'.
ENDFORM.
FORM customer_extension_001.
perform bdc_dynpro using 'SAPMF02D' '0310'.
perform bdc_field using 'BDC_CURSOR'
'KNVV-VERSG'.
perform bdc_field using 'BDC_OKCODE'
'=VW'.
perform bdc_field using 'KNVV-BZIRK'
it_customer_ext-BZIRK.
if not it_customer_ext-KTOKD = 'Z011'.
perform bdc_field using 'KNVV-VKBUR'
it_customer_ext-VKBUR.
perform bdc_field using 'KNVV-VKGRP'
it_customer_ext-VKGRP.
endif.
perform bdc_field using 'KNVV-VERSG'
it_customer_ext-VERSG.
perform bdc_dynpro using 'SAPMF02D' '0324'.
perform bdc_field using 'BDC_CURSOR'
'KNVP-PARVW(01)'.
perform bdc_field using 'BDC_OKCODE'
'=UPDA'.
ENDFORM.
FORM customer_extension_002.
perform bdc_dynpro using 'SAPMF02D' '0310'.
perform bdc_field using 'BDC_CURSOR'
'KNVV-VERSG'.
perform bdc_field using 'BDC_OKCODE'
'=VW'.
perform bdc_field using 'KNVV-BZIRK'
it_customer_ext-BZIRK.
* perform bdc_field using 'KNVV-AWAHR'
* '100'.
perform bdc_field using 'KNVV-VKBUR'
it_customer_ext-VKBUR.
perform bdc_field using 'KNVV-VKGRP'
it_customer_ext-VKGRP.
perform bdc_field using 'KNVV-KDGRP'
it_customer_ext-KDGRP.
perform bdc_field using 'KNVV-WAERS'
it_customer_ext-WAERS.
perform bdc_field using 'KNVV-KALKS'
it_customer_ext-KALKS.
perform bdc_field using 'KNVV-VERSG'
it_customer_ext-VERSG.
perform bdc_dynpro using 'SAPMF02D' '0315'.
perform bdc_field using 'BDC_CURSOR'
'KNVV-VWERK'.
perform bdc_field using 'BDC_OKCODE'
'=VW'.
perform bdc_field using 'KNVV-LPRIO'
it_customer_ext-LPRIO.
* perform bdc_field using 'KNVV-KZAZU'
* 'X'.
perform bdc_field using 'KNVV-VWERK'
it_customer_ext-VWERK.
* perform bdc_field using 'KNVV-ANTLF'
* '9'.
perform bdc_dynpro using 'SAPMF02D' '0320'.
perform bdc_field using 'BDC_CURSOR'
'KNVV-KTGRD'.
perform bdc_field using 'BDC_OKCODE'
'=VW'.
perform bdc_field using 'KNVV-INCO1'
it_customer_ext-INCO1.
perform bdc_field using 'KNVV-INCO2'
it_customer_ext-INCO2.
perform bdc_field using 'KNVV-ZTERM'
it_customer_ext-ZTERM.
perform bdc_field using 'KNVV-KTGRD'
it_customer_ext-KTGRD.
perform bdc_dynpro using 'SAPMF02D' '1350'.
perform bdc_field using 'BDC_CURSOR'
'RF02D-KUNNR'.
perform bdc_field using 'BDC_OKCODE'
'=VW'.
perform bdc_dynpro using 'SAPMF02D' '0324'.
perform bdc_field using 'BDC_CURSOR'
'KNVP-PARVW(01)'.
perform bdc_field using 'BDC_OKCODE'
'=UPDA'.
ENDFORM.
*Subrotine to replace the parameters
FORM REPLACE_PARAMETERS USING P_PAR_1 P_PAR_2 P_PAR_3
P_PAR_4 CHANGING P_MESSAGE.
* erst mal pruefen, ob numerierte Parameter verwendet wurden
DO.
REPLACE '&1' WITH P_PAR_1 INTO P_MESSAGE.
IF SY-SUBRC <> 0.
EXIT.
ENDIF.
ENDDO.
DO.
REPLACE '&2' WITH P_PAR_2 INTO P_MESSAGE.
IF SY-SUBRC <> 0.
EXIT.
ENDIF.
ENDDO.
DO.
REPLACE '&3' WITH P_PAR_3 INTO P_MESSAGE.
IF SY-SUBRC <> 0.
EXIT.
ENDIF.
ENDDO.
DO.
REPLACE '&4' WITH P_PAR_4 INTO P_MESSAGE.
IF SY-SUBRC <> 0.
EXIT.
ENDIF.
ENDDO.
* falls keine numerierten Parameter vorh., ersetzen wie gehabt
REPLACE '&' WITH P_PAR_1 INTO P_MESSAGE.
CONDENSE P_MESSAGE.
IF SY-SUBRC EQ 0.
REPLACE '&' WITH P_PAR_2 INTO P_MESSAGE.
CONDENSE P_MESSAGE.
IF SY-SUBRC EQ 0.
REPLACE '&' WITH P_PAR_3 INTO P_MESSAGE.
CONDENSE P_MESSAGE.
IF SY-SUBRC EQ 0.
REPLACE '&' WITH P_PAR_4 INTO P_MESSAGE.
CONDENSE P_MESSAGE.
ENDIF.
ENDIF.
ENDIF.
ENDFORM.
*Subroutine to segregate the error data from the legacy data
FORM segregate_error.
loop at it_erfind.
if pm_crt = 'X'.
loop at it_customer where index = it_erfind-index.
move-corresponding it_customer to it_error.
it_error-er_message = it_erfind-er_message.
append it_error.
endloop.
elseif pm_ext = 'X'.
loop at it_customer_ext where kunnr = it_erfind-kunnr.
move-corresponding it_customer_ext to it_error.
it_error-er_message = it_erfind-er_message.
append it_error.
endloop.
endif.
endloop.
ENDFORM.
*Subroutine to download the error data from the it_error table.
FORM error_download.
if it_error[] is not initial.
call function 'WS_DOWNLOAD'
exporting
CODEPAGE = 'IBM'
FILENAME = v_error_filename
FILETYPE = 'DAT'
tables
DATA_TAB = IT_ERROR.
endif.
ENDFORM.
* Start new screen *
FORM BDC_DYNPRO USING PROGRAM DYNPRO.
CLEAR BDCDATA.
BDCDATA-PROGRAM = PROGRAM.
BDCDATA-DYNPRO = DYNPRO.
BDCDATA-DYNBEGIN = 'X'.
APPEND BDCDATA.
ENDFORM.
* Insert field *
FORM BDC_FIELD USING FNAM FVAL.
* IF FVAL <> NODATA.
CLEAR BDCDATA.
BDCDATA-FNAM = FNAM.
BDCDATA-FVAL = FVAL.
APPEND BDCDATA.
* ENDIF.
ENDFORM.
FORM bdc_transaction tables MESSTAB USING TCODE CTUMODE CUPDATE .
CALL TRANSACTION TCODE USING BDCDATA
MODE CTUMODE
UPDATE CUPDATE
MESSAGES INTO MESSTAB.
REFRESH BDCDATA.
clear BDCDATA.
ENDFORM. " bdc_transaction
* Uploading data file to internal table. *
FORM upload_data.
if pm_crt = 'X'.
CALL FUNCTION 'WS_UPLOAD'
EXPORTING
FILENAME = p_file
* CODEPAGE = 'IBM '
FILETYPE = 'DAT'
TABLES
DATA_TAB = it_customer
EXCEPTIONS
CONVERSION_ERROR = 1
INVALID_TABLE_WIDTH = 2
INVALID_TYPE = 3
NO_BATCH = 4
UNKNOWN_ERROR = 5
GUI_REFUSE_FILETRANSFER = 6
OTHERS = 7.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
elseif pm_ext = 'X'.
CALL FUNCTION 'WS_UPLOAD'
EXPORTING
FILENAME = p_file
* CODEPAGE = 'IBM '
FILETYPE = 'DAT'
TABLES
DATA_TAB = it_customer_ext
EXCEPTIONS
CONVERSION_ERROR = 1
INVALID_TABLE_WIDTH = 2
INVALID_TYPE = 3
NO_BATCH = 4
UNKNOWN_ERROR = 5
GUI_REFUSE_FILETRANSFER = 6
OTHERS = 7.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
endif.
{size:13}Here you can use sort and delete statement to delete the duplicate entries.{size}
ENDFORM.
*& Form display_message
FORM display_message .
if it_error[] is initial.
message i019(zmsg). "Success
else.
message e020(zmsg). "Failed
endif.
ENDFORM. " display_message
*& Form get_filename
* text
* --> p1 text
* <-- p2 text
FORM get_filename .
CALL FUNCTION 'F4_FILENAME'
EXPORTING
PROGRAM_NAME = SYST-CPROG
DYNPRO_NUMBER = SYST-DYNNR
* FIELD_NAME = p_file
IMPORTING
FILE_NAME = p_file .
if sy-subrc NE 0 .
write : / 'Enter File Name'.
endif.
ENDFORM. " get_filename
*& Form make_file_name
FORM make_file_name .
write sy-datum to date MM/DD/YYYY.
write sy-uzeit to time USING EDIT MASK ' __ __ __'.
concatenate Text-002 date time '.txt'
into v_error_filename.
ENDFORM. " make_file_name
Thanks,
Sriram Ponna. -
Not able to display flat file's error line in output
The below Source Code is BDC for XD01 (update Customer Master Record) in CALL TRANSACTION method. This program is written in call transaction method cause as per users requirement, user wants error log to be printed as soon as the BDC process finished in the background mode.
When you execute this below program it will show a selection screen from where you can select your flat file from system.
After executing this code show output like below as soon as it finished processing the FLAT file.
1. Customer Update Summary
2. Successful record with customer number and name.
3. Error Records with 'record number' and 'reason for error'
(For testing you just have to copy-paste-save-active the source code)
And I have encountered an issue over here in 3rd section-Record Number of Error Records.
The Record Number is for display the line number of that flat file line which in which error has occurred.
The Record Number Entries showing only 0 instead of showing line number of error entry .
I have used Function Module FORMAT_MESSAGE to capture the errors. But not able to display line number of that flat file which is containing error.
So please suggest me what changes I should make in below source code to get proper output.
Flat file for your R&D
1000 1000 10 10 0001 Company Chobey & Group1N Choubey Amit Choubey New Alipore Road Habijabi Apartment Rastar Dhra 777777 kolkata 777777 kolikata howrah 777777 IN WB 1111111111 2222222222 3333333333 4444444444 5555555555 6666666666 0700 EAST 02 01 1060003 A1 Z1 ZZ13 CALS 1 A 10 1
1000 1000 10 10 0001 Company Chobey & Group2N Choubey Amit Choubey New Alipore Road Habijabi Apartment Rastar Dhra 777777 kolkata 777777 kolikata howrah 777777 IN WB 1111111111 2222222222 3333333333 4444444444 5555555555 6666666666 0700 EAST 02 01 1060003 A1 Z1 ZZ13 CALS 1 A 10 1
1000 1000 10 10 0001 Company Chobey & Group3N Choubey Amit Choubey New Alipore Road Habijabi Apartment Rastar Dhra 777777 kolkata 777777 kolikata howrah 777777 IN WB 1111111111 2222222222 3333333333 4444444444 5555555555 6666666666 0700 EAST 02 01 1060003 A1 Z1 ZZ13 CALS . A 10 1
1000 1000 10 10 0001 Company Chobey & Group4N Choubey Amit Choubey New Alipore Road Habijabi Apartment Rastar Dhra 777777 kolkata 777777 kolikata howrah 777777 IN WB 1111111111 2222222222 3333333333 4444444444 5555555555 6666666666 0700 EAST 02 01 1060003 A1 Z1 ZZ13 CALS 1 A .. 1
1000 1000 10 10 0001 Company Chobey & Group5N Choubey Amit Choubey New Alipore Road Habijabi Apartment Rastar Dhra 777777 kolkata 777777 kolikata howrah 777777 IN WB 1111111111 2222222222 3333333333 4444444444 5555555555 6666666666 0700 EAST 02 01 1060003 A1 Z1 ZZ13 CALS 1 A 10 1
And Source Code
*& Report Z_TEST_SAI *
REPORT Z_TEST_SAI no standard page heading line-size 255.
TYPES: BEGIN OF t_cust,
bukrs like rf02d-bukrs,
vkorg like rf02d-vkorg,
vtweg like rf02d-vtweg,
spart like rf02d-spart,
ktokd like rf02d-ktokd,
anred like kna1-anred,
name1 like kna1-name1,
sortl like kna1-sortl,
name2 like kna1-name2,
name3 like kna1-name3,
name4 like kna1-name4,
stras like kna1-stras,
pfach like kna1-pfach,
ort01 like kna1-ort01,
pstlz like kna1-pstlz,
ort02 like kna1-ort02,
pfort like kna1-pfort,
pstl2 like kna1-pstl2,
land1 like kna1-land1,
regio like kna1-regio,
telx1 like kna1-telx1,
telf1 like kna1-telf1,
telfx like kna1-telfx,
telf2 like kna1-telf2,
teltx like kna1-teltx,
stceg like kna1-stceg,
cityc like kna1-cityc,
lzone like kna1-lzone,
niels like kna1-niels,
kukla like kna1-kukla,
akont like knb1-akont,
fdgrv like knb1-fdgrv,
vzskz like knb1-vzskz,
zterm like knb1-zterm,
vkbur like knvv-vkbur,
versg like knvv-versg,
vsbed like knvv-vsbed,
ktgrd like knvv-ktgrd,
taxkd like knvi-taxkd,
END OF t_cust.
TYPES: BEGIN OF t_sucrec,
cnum TYPE kna1-kunnr, "Customer Number
cnam TYPE kna1-name1, "Customer Name
END OF t_sucrec.
TYPES: BEGIN OF t_errrec,
* lineno TYPE i, "Line Number
lineno TYPE string,
message TYPE string, "Error Message
END OF t_errrec.
DATA: v_file TYPE string, "Variable for storing flat file
it_cust TYPE STANDARD TABLE OF t_cust, "Internal table of Customer
wa_cust LIKE LINE OF it_cust, "Workarea of Internal table it_cust
it_sucrec TYPE STANDARD TABLE OF t_sucrec, "Internal table of Success records
wa_sucrec LIKE LINE OF it_sucrec, "Workarea of Internal table it_sucrec
it_errrec TYPE STANDARD TABLE OF t_errrec,
wa_errrec LIKE LINE OF it_errrec,
it_bdctab LIKE bdcdata OCCURS 0 WITH HEADER LINE, "Internal table structure of BDCDATA
it_messagetab LIKE bdcmsgcoll OCCURS 0 WITH HEADER LINE, "Tracing Error Messages
v_date LIKE sy-datum, "Controlling of session date
v_index LIKE sy-index, "Index Number
v_totrec TYPE i, "Total Records
v_errrec TYPE i, "Error Records
v_sucrec TYPE i, "Success Records
v_sesschk TYPE c. "Session maintenance
*& SELECTION-SCREEN
SELECTION-SCREEN: BEGIN OF BLOCK blk1 WITH FRAME TITLE text-001 NO INTERVALS.
PARAMETERS: p_file TYPE rlgrap-filename. "rlgrap-filename is a predefined structure
SELECTION-SCREEN: END OF BLOCK blk1.
SELECTION-SCREEN: BEGIN OF BLOCK blk2 WITH FRAME TITLE text-002 NO INTERVALS.
PARAMETERS: p_mode LIKE ctu_params-dismode DEFAULT 'N',
p_update LIKE ctu_params-updmode DEFAULT 'A'.
SELECTION-SCREEN END OF BLOCK blk2.
*& INITIALIZATION
INITIALIZATION.
v_date = sy-datum - 1.
*& AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
CALL FUNCTION 'F4_FILENAME'
EXPORTING
program_name = syst-cprog
dynpro_number = syst-dynnr
FIELD_NAME = ' '
IMPORTING
file_name = p_file.
*& START-OF-SELECTION
START-OF-SELECTION.
v_file = p_file.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
filename = v_file
filetype = 'ASC'
has_field_separator = 'X'
TABLES
data_tab = it_cust
EXCEPTIONS
file_open_error = 1
file_read_error = 2
no_batch = 3
gui_refuse_filetransfer = 4
invalid_type = 5
no_authority = 6
unknown_error = 7
bad_data_format = 8
header_not_allowed = 9
separator_not_allowed = 10
header_too_long = 11
unknown_dp_error = 12
access_denied = 13
dp_out_of_memory = 14
disk_full = 15
dp_timeout = 16
OTHERS = 17.
IF sy-subrc = 0.
*MESSAGE ID sy-msgid
*TYPE sy-msgty
*NUMBER sy-msgno
*WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
*& END-OF-SELECTION
END-OF-SELECTION.
v_index = sy-index.
LOOP AT it_cust INTO wa_cust.
perform bdc_dynpro using 'SAPMF02D' '0100'.
perform bdc_field using 'BDC_CURSOR'
'RF02D-KTOKD'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'RF02D-BUKRS'
wa_cust-bukrs.
perform bdc_field using 'RF02D-VKORG'
wa_cust-vkorg.
perform bdc_field using 'RF02D-VTWEG'
wa_cust-vtweg.
perform bdc_field using 'RF02D-SPART'
wa_cust-spart.
perform bdc_field using 'RF02D-KTOKD'
wa_cust-ktokd.
perform bdc_dynpro using 'SAPMF02D' '0110'.
perform bdc_field using 'BDC_CURSOR'
'KNA1-TELTX'.
perform bdc_field using 'BDC_OKCODE'
'=VW'.
perform bdc_field using 'KNA1-ANRED'
wa_cust-anred.
perform bdc_field using 'KNA1-NAME1'
wa_cust-name1.
perform bdc_field using 'KNA1-SORTL'
wa_cust-sortl.
perform bdc_field using 'KNA1-NAME2'
wa_cust-name2.
perform bdc_field using 'KNA1-NAME3'
wa_cust-name3.
perform bdc_field using 'KNA1-NAME4'
wa_cust-name4.
perform bdc_field using 'KNA1-STRAS'
wa_cust-stras.
perform bdc_field using 'KNA1-PFACH'
wa_cust-pfach.
perform bdc_field using 'KNA1-ORT01'
wa_cust-ort01.
perform bdc_field using 'KNA1-PSTLZ'
wa_cust-pstlz.
perform bdc_field using 'KNA1-ORT02'
wa_cust-ort02.
perform bdc_field using 'KNA1-PFORT'
wa_cust-pfort.
perform bdc_field using 'KNA1-PSTL2'
wa_cust-pstl2.
perform bdc_field using 'KNA1-LAND1'
wa_cust-land1.
perform bdc_field using 'KNA1-REGIO'
wa_cust-regio.
perform bdc_field using 'KNA1-SPRAS'
'EN'.
perform bdc_field using 'KNA1-TELX1'
wa_cust-telx1.
perform bdc_field using 'KNA1-TELF1'
wa_cust-telf1.
perform bdc_field using 'KNA1-TELFX'
wa_cust-telfx.
perform bdc_field using 'KNA1-TELF2'
wa_cust-telf2.
perform bdc_field using 'KNA1-TELTX'
wa_cust-teltx.
perform bdc_dynpro using 'SAPMF02D' '0120'.
perform bdc_field using 'BDC_CURSOR'
'KNA1-CITYC'.
perform bdc_field using 'BDC_OKCODE'
'=VW'.
perform bdc_field using 'KNA1-STCEG'
wa_cust-stceg.
perform bdc_field using 'KNA1-CITYC'
wa_cust-cityc.
perform bdc_field using 'KNA1-LZONE'
wa_cust-lzone.
perform bdc_dynpro using 'SAPMF02D' '0125'.
perform bdc_field using 'BDC_CURSOR'
'KNA1-KUKLA'.
perform bdc_field using 'BDC_OKCODE'
'=VW'.
perform bdc_field using 'KNA1-NIELS'
wa_cust-niels.
perform bdc_field using 'KNA1-KUKLA'
wa_cust-kukla.
perform bdc_dynpro using 'SAPMF02D' '0130'.
perform bdc_field using 'BDC_CURSOR'
'KNBK-BANKS(01)'.
perform bdc_field using 'BDC_OKCODE'
'=VW'.
perform bdc_dynpro using 'SAPMF02D' '0340'.
perform bdc_field using 'BDC_CURSOR'
'RF02D-KUNNR'.
perform bdc_field using 'BDC_OKCODE'
'=VW'.
perform bdc_dynpro using 'SAPMF02D' '0360'.
perform bdc_field using 'BDC_CURSOR'
'KNVK-NAMEV(01)'.
perform bdc_field using 'BDC_OKCODE'
'=VW'.
perform bdc_dynpro using 'SAPMF02D' '0210'.
perform bdc_field using 'BDC_CURSOR'
'KNB1-VZSKZ'.
perform bdc_field using 'BDC_OKCODE'
'=VW'.
perform bdc_field using 'KNB1-AKONT'
wa_cust-akont.
perform bdc_field using 'KNB1-FDGRV'
wa_cust-fdgrv.
perform bdc_field using 'KNB1-VZSKZ'
wa_cust-vzskz.
perform bdc_dynpro using 'SAPMF02D' '0215'.
perform bdc_field using 'BDC_CURSOR'
'KNB1-ZTERM'.
perform bdc_field using 'BDC_OKCODE'
'=VW'.
perform bdc_field using 'KNB1-ZTERM'
wa_cust-zterm.
perform bdc_dynpro using 'SAPMF02D' '0220'.
perform bdc_field using 'BDC_CURSOR'
'KNB5-MAHNA'.
perform bdc_field using 'BDC_OKCODE'
'=VW'.
perform bdc_dynpro using 'SAPMF02D' '0230'.
perform bdc_field using 'BDC_CURSOR'
'KNB1-VRSNR'.
perform bdc_field using 'BDC_OKCODE'
'=VW'.
perform bdc_dynpro using 'SAPMF02D' '0610'.
perform bdc_field using 'BDC_OKCODE'
'=VW'.
perform bdc_field using 'BDC_CURSOR'
'RF02D-KUNNR'.
perform bdc_dynpro using 'SAPMF02D' '0310'.
perform bdc_field using 'BDC_CURSOR'
'KNVV-VERSG'.
perform bdc_field using 'BDC_OKCODE'
'=VW'.
perform bdc_field using 'KNVV-AWAHR'
'100'.
perform bdc_field using 'KNVV-VKBUR'
wa_cust-vkbur.
perform bdc_field using 'KNVV-WAERS'
'INR'.
perform bdc_field using 'KNVV-KALKS'
'1'.
perform bdc_field using 'KNVV-VERSG'
wa_cust-versg.
perform bdc_dynpro using 'SAPMF02D' '0315'.
perform bdc_field using 'BDC_CURSOR'
'KNVV-VSBED'.
perform bdc_field using 'BDC_OKCODE'
'=VW'.
perform bdc_field using 'KNVV-LPRIO'
perform bdc_field using 'KNVV-KZAZU'
'X'.
perform bdc_field using 'KNVV-VSBED'
wa_cust-vsbed.
perform bdc_field using 'KNVV-ANTLF'
'9'.
perform bdc_dynpro using 'SAPMF02D' '0320'.
perform bdc_field using 'BDC_CURSOR'
'KNVV-KTGRD'.
perform bdc_field using 'BDC_OKCODE'
'=VW'.
perform bdc_field using 'KNVV-BOKRE'
'X'.
perform bdc_field using 'KNVV-KTGRD'
wa_cust-ktgrd.
perform bdc_dynpro using 'SAPMF02D' '1350'.
perform bdc_field using 'BDC_CURSOR'
'KNVI-TAXKD(01)'.
perform bdc_field using 'BDC_OKCODE'
'=VW'.
perform bdc_field using 'KNVI-TAXKD(01)'
wa_cust-taxkd.
perform bdc_dynpro using 'SAPMF02D' '0324'.
perform bdc_field using 'BDC_CURSOR'
'KNVP-PARVW(01)'.
perform bdc_field using 'BDC_OKCODE'
'=UPDA'.
CALL TRANSACTION 'XD01' USING it_bdctab
MODE p_mode
UPDATE p_update
MESSAGES INTO it_messagetab.
IF sy-subrc = 0.
*& reading success records to corresponding internal table
READ TABLE it_messagetab WITH KEY msgtyp = 'S'.
IF sy-subrc = 0.
wa_sucrec-cnum = it_messagetab-msgv1.
wa_sucrec-cnam = wa_cust-name1.
APPEND wa_sucrec TO it_sucrec.
CLEAR wa_sucrec.
ENDIF.
ELSE.
*& reading error records to corresponding internal table
READ TABLE it_messagetab WITH KEY msgtyp = 'E'.
IF sy-subrc = 0.
CALL FUNCTION 'FORMAT_MESSAGE'
EXPORTING
id = sy-msgid
no = it_messagetab-msgnr
v1 = it_messagetab-msgv1
v2 = it_messagetab-msgv2
v3 = it_messagetab-msgv3
v4 = it_messagetab-msgv4
IMPORTING
msg = wa_errrec-message.
wa_errrec-lineno = v_index.
*******wa_errrec-lineno = v_index.
*******wa_errrec-message = it_messagetab-msgv1.
APPEND wa_errrec TO it_errrec.
CLEAR wa_errrec.
ENDIF.
ENDIF.
CLEAR : it_bdctab, it_messagetab.
REFRESH: it_bdctab, it_messagetab.
ENDLOOP.
DESCRIBE TABLE it_cust LINES v_totrec.
DESCRIBE TABLE it_errrec LINES v_errrec.
DESCRIBE TABLE it_sucrec LINES v_sucrec.
PERFORM disp_data.
SKIP 2.
IF v_sucrec > 0.
PERFORM disp_success_data.
ENDIF.
SKIP 2.
IF v_errrec > 0.
PERFORM disp_error_data.
ENDIF.
*& Form bdc_dynpro
*# text
*# -->P_0104 text
*# -->P_0105 text
FORM bdc_dynpro USING program
dynpro.
CLEAR it_bdctab.
it_bdctab-program = program.
it_bdctab-dynpro = dynpro.
it_bdctab-dynbegin = 'X'.
APPEND it_bdctab.
ENDFORM. " bdc_dynpro
*& Form bdc_field
*# text
*# -->P_0109 text
*# -->P_IT_cust_LIFNR text
FORM bdc_field USING fnam
fval.
CLEAR it_bdctab.
it_bdctab-fnam = fnam.
it_bdctab-fval = fval.
APPEND it_bdctab.
ENDFORM. " bdc_field
*& Form disp_data
*# text
*# --> p1 text
*# <-- p2 text
FORM disp_data .
ULINE (45).
WRITE : / sy-vline,
12 'FAMD CUSTOMER UPDATE SUMMARY'(004) COLOR 1,
45 sy-vline.
ULINE /(45).
WRITE : / sy-vline,
'Total Records Processed'(007),
28 '=',
30 v_totrec,
45 sy-vline,
/ sy-vline,
'Error Records'(005),
28 '=',
30 v_errrec,
45 sy-vline,
/ sy-vline,
'Successful Records'(006),
28 '=',
30 v_sucrec,
45 sy-vline.
ULINE /(45).
ENDFORM. " disp_data
*& Form disp_success_data
*# text
*# --> p1 text
*# <-- p2 text
FORM disp_success_data .
ULINE (45).
WRITE : / sy-vline,
14 'Successful Records'(012) COLOR 1,
45 sy-vline.
ULINE /(45).
WRITE : / sy-vline ,
'Customer Number'(010) COLOR 2,
17 sy-vline,
25 'Customer Name'(011) COLOR 2,
45 sy-vline.
ULINE /(45).
LOOP AT it_sucrec INTO wa_sucrec.
WRITE: / sy-vline ,
wa_sucrec-cnum,
17 sy-vline,
19 wa_sucrec-cnam,
45 sy-vline.
ENDLOOP.
ULINE /(45).
ENDFORM. " disp_success_data
*& Form disp_error_data
*# text
*# --> p1 text
*# <-- p2 text
FORM disp_error_data .
ULINE (85).
WRITE : / sy-vline,
35 'Error Records'(013) COLOR 1,
85 sy-vline.
ULINE /(85).
WRITE : / sy-vline,
'Record Number'(008) COLOR 2,
sy-vline,
37 'Reason for error'(009) COLOR 2,
85 sy-vline.
ULINE /(85).
LOOP AT it_errrec INTO wa_errrec.
WRITE : / sy-vline,
wa_errrec-lineno,
17 sy-vline,
wa_errrec-message,
85 sy-vline.
ENDLOOP.
ULINE /(85).
ENDFORM. " disp_error_dataWorked out n found the solution
-
ERROR WHILE CREATING XD01 THROUGH WORKFLOE IN BACKGROUND
HI,
I am facing problem while creating xd01 in background.
actually i have created method in workflow in mehhod i am using Z function module
with following xd01 recoding code with workflow method is foreground it is working fine
if workflow method (Task set background) is giving error like
MSGTYP 00. MSGID 255 Fieldname kna1-lifnr in BDCMSGCOll
please reply me as soon as possible
perform bdc_dynpro using 'SAPMF02D' '0100'.
perform bdc_field using 'BDC_CURSOR'
'USE_ZAV'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'RF02D-BUKRS'
it_customer-bukrs. ""'1000'.
perform bdc_field using 'RF02D-VKORG'
it_customer-vkorg. ""'1000'.
perform bdc_field using 'RF02D-VTWEG'
it_customer-VTWEG . ""'20'.
perform bdc_field using 'RF02D-SPART'
it_customer-spart . ""'30'.
perform bdc_field using 'RF02D-KTOKD'
it_customer-KTOKD. ""'ZD01'.
perform bdc_field using 'USE_ZAV'
it_customer-check . ""'X'.
'X'.
perform bdc_dynpro using 'SAPMF02D' '0111'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'BDC_CURSOR'
'SZA1_D0100-SMTP_ADDR'.
perform bdc_field using 'SZA1_D0100-TITLE_MEDI'
it_customer-ANRED. ""'Company'.
perform bdc_field using 'ADDR1_DATA-NAME1'
it_customer-name1 . ""'NAME 1'.
perform bdc_field using 'ADDR1_DATA-NAME2'
it_customer-name2. ""NAME 2'.
perform bdc_field using 'ADDR1_DATA-SORT1'
it_customer-SORT1.
"" 'TEST DATA'.
perform bdc_field using 'ADDR1_DATA-STR_SUPPL1'
it_customer-STR_SUPPL1. ""'STREET 2'.
perform bdc_field using 'ADDR1_DATA-STR_SUPPL2'
it_customer-STR_SUPPL2 . "" STREET 3'.
perform bdc_field using 'ADDR1_DATA-STREET'
it_customer-STREET. "'STREET 1'.
*perform bdc_field using 'ADDR1_DATA-STR_SUPPL3'
it_customer-STR_SUPPL3. ""'STREET 4'.
perform bdc_field using 'ADDR1_DATA-POST_CODE1'
it_customer-POST_CODE1. ""'400055'.
perform bdc_field using 'ADDR1_DATA-CITY1'
it_customer-CITY1. ""'mumbai'.
perform bdc_field using 'ADDR1_DATA-COUNTRY'
it_customer-country. ""'IN'.
perform bdc_field using 'ADDR1_DATA-REGION'
it_customer-region. ""'13'.
*perform bdc_field using 'ADDR1_DATA-TIME_ZONE'
it_customer-TIME_ZONE. ""'INDIA'.
perform bdc_field using 'ADDR1_DATA-TRANSPZONE'
it_customer-TRANSPZONE. ""'201300'.
perform bdc_field using 'ADDR1_DATA-LANGU'
it_customer-langu. " 'EN'.
perform bdc_field using 'SZA1_D0100-TEL_NUMBER'
it_customer-TEL_NUMBER. "'022-677623420'.
perform bdc_field using 'SZA1_D0100-MOB_NUMBER'
it_customer-MOB_NUMBER. ""'9867936636'.
perform bdc_field using 'SZA1_D0100-FAX_NUMBER'
it_customer-FAX_NUMBER. ""'022-67768877'.
perform bdc_field using 'SZA1_D0100-SMTP_ADDR'
it_customer-SMTP_ADDR.
perform bdc_dynpro using 'SAPMF02D' '0120'.
perform bdc_field using 'BDC_CURSOR'
'KNA1-LIFNR'.
perform bdc_field using 'BDC_OKCODE'
'=OPFI'.
perform bdc_dynpro using 'SAPLJ1I_MASTER' '0200'.
perform bdc_field using 'BDC_OKCODE'
'=CIN_CUSTOMER_FC2'.
perform bdc_field using 'BDC_CURSOR'
'J_1IMOCUST-J_1IEXCICU'.
perform bdc_field using 'J_1IMOCUST-J_1IEXCD'
it_customer-J_1IEXCD. ""'AAACW6074DXD001'.
perform bdc_field using 'J_1IMOCUST-J_1IEXRN'
it_customer-J_1IEXrn. "" 'AAACW6074DXD001'.
perform bdc_field using 'J_1IMOCUST-J_1IEXRG'
""'KALYAN'.
it_customer-j_1iexrg.
perform bdc_field using 'J_1IMOCUST-J_1IEXDI'
it_customer-j_1iexdi.
""'IV'.
perform bdc_field using 'J_1IMOCUST-J_1IEXCO'
it_customer-J_1IEXCO. "" 'ADDJCK'.
perform bdc_field using 'J_1IMOCUST-J_1IEXCICU'
it_customer-J_1IEXCICU. ""'1'.
perform bdc_dynpro using 'SAPLJ1I_MASTER' '0200'.
perform bdc_field using 'BDC_OKCODE'
'=CIN_CUSTOMER_FC3'.
perform bdc_field using 'BDC_CURSOR'
'J_1IMOCUST-J_1ISERN'.
perform bdc_field using 'J_1IMOCUST-J_1ICSTNO'
it_customer-J_1ICSTNO. "" 'CSTV123983E4B'.
perform bdc_field using 'J_1IMOCUST-J_1ILSTNO'
it_customer-J_1IlSTNO. ""'LST93U4R983FC'.
perform bdc_field using 'J_1IMOCUST-J_1ISERN'
it_customer-J_1ISERN. ""'AADDK388494M'.
perform bdc_dynpro using 'SAPLJ1I_MASTER' '0200'.
perform bdc_field using 'BDC_OKCODE'
'=BACK'.
perform bdc_field using 'BDC_CURSOR'
'J_1IMOCUST-J_1IPANNO'.
perform bdc_field using 'J_1IMOCUST-J_1IPANNO'
it_customer-J_1IPANNO.
""'PAND883322M'.
perform bdc_dynpro using 'SAPMF02D' '0120'.
perform bdc_field using 'BDC_CURSOR'
'KNA1-LIFNR'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'KNA1-LIFNR'
it_customer-lifnr. ""'100000'.
perform bdc_dynpro using 'SAPMF02D' '0125'.
perform bdc_field using 'BDC_CURSOR'
'KNA1-KUKLA'.
perform bdc_field using 'BDC_OKCODE'
'=ENTR' . "" '/00'.
perform bdc_field using 'KNA1-KUKLA'
it_customer-KUKLA. ""'02'.
perform bdc_dynpro using 'SAPMF02D' '0130'.
perform bdc_field using 'BDC_CURSOR'
'KNBK-BANKS(01)'.
perform bdc_field using 'BDC_OKCODE'
'=ENTR'.
perform bdc_dynpro using 'SAPMF02D' '0340'.
perform bdc_field using 'BDC_CURSOR'
'RF02D-KUNNR'.
perform bdc_field using 'BDC_OKCODE'
'=ENTR'.
perform bdc_dynpro using 'SAPMF02D' '0370'.
perform bdc_field using 'BDC_CURSOR'
'RF02D-KUNNR'.
perform bdc_field using 'BDC_OKCODE'
'=ENTR'.
perform bdc_field using 'KNA1-CIVVE'
it_customer-CIVVE.""'X'.
'X'.
perform bdc_dynpro using 'SAPMF02D' '0360'.
perform bdc_field using 'BDC_CURSOR'
'KNVK-NAMEV(01)'.
perform bdc_field using 'BDC_OKCODE'
'=ENTR'.
IF ( it_customer-KTOKD <> 'ZD02' ) .
perform bdc_dynpro using 'SAPMF02D' '0210'.
perform bdc_field using 'BDC_CURSOR'
'KNB1-FDGRV'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'KNB1-AKONT'
it_customer-akont."" '213002'.
perform bdc_field using 'KNB1-ZUAWA'
it_customer-ZUAWA.""'001'.
perform bdc_field using 'KNB1-FDGRV'
it_customer-FDGRV. ""'E2'.
perform bdc_dynpro using 'SAPMF02D' '0215'.
perform bdc_field using 'BDC_CURSOR'
'KNB1-ZWELS'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'KNB1-ZTERM'
it_customer-ZTERM.""'0001'.
perform bdc_field using 'KNB1-ZWELS'
it_customer-ZWELS. ""'C'.
perform bdc_dynpro using 'SAPMF02D' '0220'.
perform bdc_field using 'BDC_CURSOR'
'KNB5-MAHNA'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_dynpro using 'SAPMF02D' '0230'.
perform bdc_field using 'BDC_CURSOR'
'KNB1-VRSNR'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_dynpro using 'SAPMF02D' '0610'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'BDC_CURSOR'
'RF02D-KUNNR'.
ENDIF.
perform bdc_dynpro using 'SAPMF02D' '0310'.
perform bdc_field using 'BDC_CURSOR'
'KNVV-VERSG'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
*perform bdc_field using 'KNVV-AWAHR'
it_customer-awahr. ""'100'.
perform bdc_field using 'KNVV-VKBUR'
it_customer-vkbur. ""'1000'.
perform bdc_field using 'KNVV-WAERS'
it_customer-WAERS. ""'INR'.
perform bdc_field using 'KNVV-KALKS'
it_customer-KALKS. "'1'.
perform bdc_field using 'KNVV-VERSG'
it_customer-VERSG.
""'1'.
perform bdc_dynpro using 'SAPMF02D' '0315'.
perform bdc_field using 'BDC_CURSOR'
'KNVV-VSBED'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'KNVV-LPRIO'
it_customer-LPRIO. "'1'.
perform bdc_field using 'KNVV-KZAZU'
it_customer-KZAZU.""'X'.
'X'.
perform bdc_field using 'KNVV-VSBED'
it_customer-VSBED.""'20'.
perform bdc_field using 'KNVV-ANTLF'
it_customer-ANTLF. ""'9'.
'9'.
if ( it_customer-ktoKd <> 'ZD02' and it_customer-ktoKd <> 'ZD01' ).
perform bdc_dynpro using 'SAPMF02D' '0320'.
perform bdc_field using 'BDC_CURSOR'
'KNVV-INCO2'.
perform bdc_field using 'BDC_OKCODE'
'=ENTS'.
perform bdc_field using 'KNVV-INCO1'
it_customer-INCO1." 'CIF'.
perform bdc_field using 'KNVV-INCO2'
it_customer-INCO2. "" 'mumbai'.
perform bdc_field using 'KNVV-ZTERM'
it_customer-ZTERM. ""'0001'.
perform bdc_field using 'KNVV-KKBER'
it_customer-kkber.""'1000'.
ENDIF.
if it_customer-ktokd <> 'ZD04'.
perform bdc_dynpro using 'SAPMF02D' '0320'.
perform bdc_field using 'BDC_CURSOR'
'KNVV-INCO2'.
perform bdc_field using 'BDC_OKCODE'
'=ENTS'.
perform bdc_field using 'KNVV-INCO1'
it_customer-INCO1." 'CIF'.
perform bdc_field using 'KNVV-INCO2'
it_customer-INCO2. "" 'mumbai'.
perform bdc_field using 'KNVV-ZTERM'
it_customer-ZTERM. ""'0001'.
perform bdc_field using 'KNVV-KKBER'
it_customer-kkber.""'1000'.
perform bdc_dynpro using 'SAPMF02D' '1350'.
perform bdc_field using 'BDC_CURSOR'
'KNVI-TAXKD(03)'.
perform bdc_field using 'BDC_OKCODE'
'=ENTR'.
DATA : FNAM(20) TYPE C,
IDX(2) TYPE C.
MOVE 1 TO IDX.
loop at gt_tax where kunnr = it_customer-kunnr.
CONCATENATE 'KNVI-TAXKD(' '0' IDX ')' INTO FNAM.
perform bdc_field using FNAM
GT_TAX-TAXKD.
idx = idx + 1.
ENDLOOP.
ENDIF.
perform bdc_dynpro using 'SAPMF02D' '1350'.
perform bdc_field using 'BDC_CURSOR'
'RF02D-KUNNR'.
perform bdc_field using 'BDC_OKCODE'
'=ENTR'.
perform bdc_dynpro using 'SAPMF02D' '0324'.
perform bdc_field using 'BDC_CURSOR'
'KNVP-PARVW(01)'.
perform bdc_field using 'BDC_OKCODE'
'=ENTR'.
CALL TRANSACTION C_XD01 USING IT_BDCDATA
OPTIONS FROM x_options
mode C_MODE
update C_UPDATE
MESSAGES INTO IT_BDCMSGCOLL.
regards,
K.satyanarayanaHi
We are in 11.5.10.2 and I already checked notes which you sent before and setups are fine as the relationship type' Ship to' having 'contacts' enabled in the setup.
I am also seeing a differernt issue as once I update existing item instnace with the status 'Return for Credit' through API, system is not allowing me to update the extended attributes through front end application manually and I am seeing a note at the end of the screen as 'Note: This item instance cannot be updated. ' and this is only happening when I update the item instance status to 'Returned for Credit' not when I create new item instances with status as 'Created'. Is this intended functionality to restrict update on extended attributes if I change the status of item instnace to 'Return for Credit' ?
Thanks -
Hi,
please give me some programs related to call transaction.
i want to update the ztable using f-22 t.code.
Thanks,
srii.hi,
see the example for transaction XD01 using call transaction:
*& STRUCTURES DECLARATION
TYPES: BEGIN OF TY_XD01,
KUNNR(16) TYPE C,
BUKRS(4) TYPE C,
VKORG(4) TYPE C,
VTWEG(2) TYPE C,
SPART(2) TYPE C,
KTOKD(4) TYPE C,
NAME1(35) TYPE C,
ORT01(35) TYPE C,
LAND1(3) TYPE C,
SPRAS(2) TYPE C,
PSTLZ(10) TYPE C,
civve(1) type c,
AKONT(10) TYPE C,
ZTERM(4) TYPE C,
AWAHR(3) TYPE C,
WAERS(5) TYPE C,
KALKS(1) TYPE C,
KZAZU(1) TYPE C,
VSBED(2) TYPE C,
ANTLF(1) TYPE C,
TAXKD(1) TYPE C,
TAXKD_02(1) TYPE C,
TAXKD_03(1) TYPE C,
TAXKD_04(1) TYPE C,
END OF TY_XD01.
TYPES: BEGIN OF TY_MESSG,
MESSG TYPE STRING,
END OF TY_MESSG.
*& INTERNAL TABLE DECLARATION
DATA : I_XD01 TYPE TABLE OF TY_XD01, "XD01 STRUCTURE WORK AREA
I_BDCDATA TYPE TABLE OF BDCDATA, "BDC DATA INTERNAL TABLE
I_BDCMSGCOLL TYPE TABLE OF BDCMSGCOLL, "BDCMSGCOLL INTERNAL TABLE
I_SUCCESS TYPE TABLE OF TY_MESSG, "SUCCESS WA_XD01 INTERNAL TABLE
I_ERROR TYPE TABLE OF TY_MESSG. "ERROR WA_XD01 INTERNAL TABLE
*& WORK AREA DECLARATION
DATA: WA_XD01 TYPE TY_XD01, "XK01 STRUCTURE WORK AREA
WA_BDCDATA TYPE BDCDATA, "BDC DATA WORK AREA
WA_BDCMSGCOLL TYPE BDCMSGCOLL, "BDCMSGCOLL WORK AREA
WA_SUCCESS TYPE TY_MESSG, "SUCCESS WA_XD01 WORK AREA
WA_ERROR TYPE TY_MESSG. "ERROR RECOED WORK AREA
*& VARIABLE DECLARATION
DATA: FILE_NAME TYPE STRING, "VALUE 'D:\Documents and Settings\cz0stc\Desktop\DATA.txt',
SUU_FILENAME TYPE STRING VALUE 'D:\Documents and Settings\cz0stc\Desktop\TESTDATA\SUCC.txt',
ERR_FILENAME TYPE STRING VALUE 'D:\Documents and Settings\cz0stc\Desktop\TESTDATA\ERROR.txt'.
DATA: MESSG TYPE STRING.
*& SELECTION-SCREEN
SELECTION-SCREEN : BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
PARAMETERS : P_SRCFIL LIKE RLGRAP-FILENAME, "OBLIGATORY DEFAULT 'D:\Documents and Settings\cz0stc\Desktop\DATA.txt' ,
P_SUCFIL LIKE RLGRAP-FILENAME OBLIGATORY DEFAULT 'D:\Documents and Settings\cz0stc\Desktop\TESTDATA\SUCC.txt',
P_ERFIL LIKE RLGRAP-FILENAME OBLIGATORY DEFAULT 'D:\Documents and Settings\cz0stc\Desktop\TESTDATA\ERROR.txt'.
SELECTION-SCREEN : END OF BLOCK B1.
*& AT SELECTION SCREEN ON VALUE-REQUEST *
*F4 FUNCTIONALITY FOR FILE UPLOAD
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_SRCFIL.
PERFORM GET_FILEPATH USING P_SRCFIL.
*& *F4 FUNCTIONALITY FOR SUCCESS FILE DOWNLOAD
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_SUCFIL.
PERFORM GET_FILEPATH USING P_SUCFIL.
*& *F4 FUNCTIONALITY FOR ERROR FILE DOWNLOAD
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_ERFIL.
PERFORM GET_FILEPATH USING P_ERFIL.
*& AT SELECTION-SCREEN
AT SELECTION-SCREEN.
FILE_NAME = P_SRCFIL.
SUU_FILENAME = P_SUCFIL.
ERR_FILENAME = P_ERFIL.
*& START OF SELECTION *
START-OF-SELECTION.
PERFORM UPLOAD_DATA USING FILE_NAME.
PERFORM POPULATE_DATA.
*& Form POPULATE_DATA
text
--> p1 text
<-- p2 text
FORM POPULATE_DATA .
LOOP AT I_XD01 INTO WA_XD01.
*& FIRST SCREEN *
PERFORM BDC_DYNPRO USING 'SAPMF02D' '0100'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'RF02D-KTOKD'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'RF02D-KUNNR'
WA_XD01-KUNNR.
PERFORM BDC_FIELD USING 'RF02D-BUKRS'
WA_XD01-BUKRS.
PERFORM BDC_FIELD USING 'RF02D-VKORG'
WA_XD01-VKORG.
PERFORM BDC_FIELD USING 'RF02D-VTWEG'
WA_XD01-VTWEG.
PERFORM BDC_FIELD USING 'RF02D-SPART'
WA_XD01-SPART.
PERFORM BDC_FIELD USING 'RF02D-KTOKD'
WA_XD01-KTOKD.
*& SECOND SCREEN *
PERFORM BDC_DYNPRO USING 'SAPMF02D' '0110'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KNA1-SPRAS'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'KNA1-NAME1'
WA_XD01-NAME1.
PERFORM BDC_FIELD USING 'KNA1-ORT01'
WA_XD01-ORT01.
PERFORM BDC_FIELD USING 'KNA1-LAND1'
WA_XD01-LAND1.
PERFORM BDC_FIELD USING 'KNA1-SPRAS'
WA_XD01-SPRAS.
PERFORM BDC_FIELD USING 'KNA1-PSTLZ'
WA_XD01-PSTLZ.
*& THIRD SCREEN *
PERFORM BDC_DYNPRO USING 'SAPMF02D' '0120'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KNA1-LIFNR'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
*& FOURTH SCREEN *
PERFORM BDC_DYNPRO USING 'SAPMF02D' '0125'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KNA1-NIELS'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
*& FIFTH SCREEN *
PERFORM BDC_DYNPRO USING 'SAPMF02D' '0130'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KNBK-BANKS(01)'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=ENTR'.
*& SIXTH SCREEN *
PERFORM BDC_DYNPRO USING 'SAPMF02D' '0340'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'RF02D-KUNNR'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=ENTR'.
*& SEVENTH SCREEN *
PERFORM BDC_DYNPRO USING 'SAPMF02D' '0370'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'RF02D-KUNNR'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=ENTR'.
*perform bdc_field using 'KNA1-CIVVE'
WA_XD01-CIVVE.
*& EIGHT SCREEN *
PERFORM BDC_DYNPRO USING 'SAPMF02D' '0360'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KNVK-NAMEV(01)'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=ENTR'.
*& NINTH SCREEN *
PERFORM BDC_DYNPRO USING 'SAPMF02D' '0210'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KNB1-AKONT'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
*& TENTH SCREEN *
PERFORM BDC_FIELD USING 'KNB1-AKONT'
WA_XD01-AKONT.
PERFORM BDC_DYNPRO USING 'SAPMF02D' '0215'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KNB1-ZTERM'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'KNB1-ZTERM'
WA_XD01-ZTERM.
*& ELEVENTH SCREEN *
PERFORM BDC_DYNPRO USING 'SAPMF02D' '0220'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KNB5-MAHNA'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
*& TWELTH SCREEN *
PERFORM BDC_DYNPRO USING 'SAPMF02D' '0230'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KNB1-VRSNR'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
*& THIRTEEN SCREEN *
PERFORM BDC_DYNPRO USING 'SAPMF02D' '0310'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KNVV-BZIRK'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'KNVV-AWAHR'
WA_XD01-AWAHR.
PERFORM BDC_FIELD USING 'KNVV-WAERS'
WA_XD01-WAERS.
PERFORM BDC_FIELD USING 'KNVV-KALKS'
WA_XD01-KALKS.
*& FOURTEEN SCREEN *
PERFORM BDC_DYNPRO USING 'SAPMF02D' '0315'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KNVV-VSBED'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'KNVV-KZAZU'
WA_XD01-KZAZU.
PERFORM BDC_FIELD USING 'KNVV-VSBED'
WA_XD01-VSBED.
PERFORM BDC_FIELD USING 'KNVV-ANTLF'
WA_XD01-ANTLF.
*& FIFTEEN SCREEN *
PERFORM BDC_DYNPRO USING 'SAPMF02D' '0320'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KNVV-PERFK'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=ENTS'.
PERFORM BDC_DYNPRO USING 'SAPMF02D' '1350'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'RF02D-KUNNR'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'ENTR'.
PERFORM BDC_FIELD USING 'KNVI-TAXKD(01)'
WA_XD01-TAXKD.
PERFORM BDC_FIELD USING 'KNVI-TAXKD(02)'
WA_XD01-TAXKD_02.
PERFORM BDC_FIELD USING 'KNVI-TAXKD(03)'
WA_XD01-TAXKD_03.
PERFORM BDC_FIELD USING 'KNVI-TAXKD(04)'
WA_XD01-TAXKD_04.
PERFORM BDC_DYNPRO USING 'SAPMF02D' '1350'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'RF02D-KUNNR'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=ENTR'.
PERFORM BDC_DYNPRO USING 'SAPMF02D' '0324'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KNVP-PARVW(01)'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=ENTR'.
CLEAR WA_XD01.
*& CALL TRANSACTION
CALL TRANSACTION 'XD01' USING I_BDCDATA MODE 'N' UPDATE 'S' MESSAGES INTO I_BDCMSGCOLL.
REFRESH I_BDCDATA.
ENDLOOP.
ENDFORM. " POPULATE_DATA
END-OF-SELECTION.
LOOP AT I_BDCMSGCOLL INTO WA_BDCMSGCOLL.
*& FORMATTING MESSAGES
CALL FUNCTION 'FORMAT_MESSAGE'
EXPORTING
ID = WA_BDCMSGCOLL-MSGID
LANG = WA_BDCMSGCOLL-MSGSPRA
NO = WA_BDCMSGCOLL-MSGNR
V1 = WA_BDCMSGCOLL-MSGV1
V2 = WA_BDCMSGCOLL-MSGV2
V3 = WA_BDCMSGCOLL-MSGV3
V4 = WA_BDCMSGCOLL-MSGV4
IMPORTING
MSG = MESSG.
IF WA_BDCMSGCOLL-MSGTYP = 'S'. "SUCCESS MESSAGE
WA_SUCCESS-MESSG = MESSG.
APPEND WA_SUCCESS TO I_SUCCESS.
ELSE.
WA_ERROR-MESSG = MESSG. "ERROR MESSAGE
APPEND WA_ERROR TO I_ERROR.
ENDIF.
ENDLOOP.
*& DOWNLOADING THE SUCCESS RECORD
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
FILENAME = SUU_FILENAME
FILETYPE = 'ASC'
WRITE_FIELD_SEPARATOR = ' '
TABLES
DATA_TAB = I_SUCCESS.
FIELDNAMES =
*& DOWNLOADING THE ERROR RECORD
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
FILENAME = ERR_FILENAME
FILETYPE = 'ASC'
WRITE_FIELD_SEPARATOR = ' '
TABLES
DATA_TAB = I_ERROR.
FIELDNAMES =
*& Form GET_FILEPATH
text
-->P_P_SRCFIL text
FORM GET_FILEPATH USING P_P_SRCFIL LIKE RLGRAP-FILENAME.
CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
EXPORTING
PROGRAM_NAME = SYST-REPID
DYNPRO_NUMBER = SYST-DYNNR
FIELD_NAME = 'P_P_SRCFIL'
CHANGING
FILE_NAME = P_P_SRCFIL.
EXCEPTIONS
OTHERS = 2.
IF SY-SUBRC = 2.
CLEAR P_P_SRCFIL.
ENDIF.
ENDFORM. " GET_FILEPATH
*& Form UPLOAD_DATA
text
-->P_FILE_NAME text
FORM UPLOAD_DATA USING P_FILE_NAME TYPE STRING.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
FILENAME = P_FILE_NAME
FILETYPE = 'ASC'
HAS_FIELD_SEPARATOR = 'X'
TABLES
DATA_TAB = I_XD01
EXCEPTIONS
FILE_OPEN_ERROR = 1
BAD_DATA_FORMAT = 8.
IF SY-SUBRC <> 0 .
MESSAGE I000(ZGEMSCONV) .
ELSEIF SY-SUBRC = 8.
MESSAGE E002(ZGEMSCONV).
ENDIF.
ENDFORM. " UPLOAD_DATA
*& Form bdc_dynpro
text
-->P_0551 text
-->P_0552 text
FORM BDC_DYNPRO USING PROGRAM LIKE BDCDATA-PROGRAM DYNPRO LIKE BDCDATA-DYNPRO.
CLEAR WA_BDCDATA.
WA_BDCDATA-PROGRAM = PROGRAM.
WA_BDCDATA-DYNPRO = DYNPRO.
WA_BDCDATA-DYNBEGIN = 'X'.
APPEND WA_BDCDATA TO I_BDCDATA.
ENDFORM. " bdc_dynpro
*& Form bdc_field
text
-->P_0606 text
-->P_0607 text
FORM BDC_FIELD USING FNAM LIKE BDCDATA-FNAM FVAL TYPE ANY .
CLEAR WA_BDCDATA.
WA_BDCDATA-FNAM = FNAM.
WA_BDCDATA-FVAL = FVAL.
APPEND WA_BDCDATA TO I_BDCDATA.
ENDFORM. " bdc_field
reward if usefull,
thanks and regards. -
Dear All,
I needs to write a BDC For the Tr F-54. Can any one tell me is there any BAPI for
the Clear vendor down payments(F-54). Plz help me.
Thanks & Regards,
Durai.THi
i m sending u the code for BDCFOR F-64 that is to park the document for customer and vendor so it has two recording customer and vendor..
Just see to it
and do reward points pls...
REPORT ZFI_F64_TOS
NO STANDARD PAGE HEADING LINE-SIZE 255.
*include bdcrecx1.
**======================================================
**DATA DECLARATION FOR CUSTOMER
**=======================================================
TYPES : BEGIN OF TY_BSEG,
BELNR TYPE BSEG-BELNR, "Doc no
ZFBDT TYPE BSEG-ZFBDT, "base line date
ZTERM TYPE BSEG-ZTERM, " payment terms
ZLSCH TYPE BSEG-ZLSCH, " pay. mode
VALUT TYPE BSEG-VALUT, " valut date
FIPOS TYPE BSEG-FIPOS, " commitment line
END OF TY_BSEG.
TYPES: BEGIN OF TY_KNB1,
KUNNR TYPE KNB1-KUNNR,
BUKRS TYPE KNB1-BUKRS,
ZWELS TYPE KNB1-ZWELS,
ZTERM TYPE KNB1-ZTERM,
END OF TY_KNB1.
TYPES : BEGIN OF TY_RECO,
SRNO TYPE I,
BLDAT_001(010), " BLDAT
BLART_002(002), " BLART
BUKRS_003 TYPE BSEG-BUKRS, " BUKRS
BUDAT_004(010), " BUDAT
MONAT_005(002), " MONAT
WAERS_006(005), " WAERS
XBLNR_007(016), " XBLNR1
BKTXT_008(025), " BKTXT
XBWAE_009(001), " XBWAE
DOCID_010(010), " SAEOBJART
NEWBS_011(002), " NEWBS
NEWKO_012 TYPE BSEG-KUNNR ,"(017), " NEWKO
WRBTR_013(016), " WRBTR
XMWST_014(001), " XMWST
MWSKZ_015(002), " MWSKZ
ZTERM_016(004), " DZTERM
ZFBDT_017(010), " DZFBDT
ZLSCH_018(001), " SCHZW_BSEG
NEWBS_019(002), " NEWBS
NEWKO_020(017), " NEWKO
WRBTR_021(016), " WRBTR
MWSKZ_022(002), " MWSKZ
XMWST_023(001), " XMWST
VALUT_024(010), " VALUT
FMORE_025(001), " FMORE
GSBER_026(004), " GSBER
FIPEX_027(024), " FM_FIPEX
FIPOS_028(024), " FIPOS
QTY(024),
UOM(020),
FIELD_13_029(032), " EIGXX
FIELD_15_030(032), " EIGXX
FIELD_09_031(032), " EIGXX
FIELD_10_032(032), " EIGXX
FIELD_11_033(032), " EIGXX
FIELD_12_034(032), " EIGXX
FIELD_13_035(032), " EIGXX
FIELD_14_036(032), " EIGXX
FIELD_15_037(032), " EIGXX
GSBER_038(004), " GSBER
PRCTR_039(010), " PRCTR
FIPEX_040(024), " FM_FIPEX
FIPOS_041(024), " FIPOS
NEWBS_042(002), " NEWBS
NEWKO_043(017), " NEWKO
MWSKZ_044(002), " MWSKZ
XMWST_045(001), " XMWST
VALUT_046(010), " VALUT
FMORE_047(001), " FMORE
FIPEX_048(024), " FM_FIPEX
FIPOS_049(024), " FIPOS
END OF TY_RECO.
TYPES: BEGIN OF RECORD_CUST ,
SRNO TYPE I,
data element: BLDAT
BLDAT_001(010),
data element: BLART
BLART_002(002),
data element: BUKRS
BUKRS_003(004),
data element: BUDAT
BUDAT_004(010),
data element: MONAT
MONAT_005(002),
data element: WAERS
WAERS_006(005),
data element: XBLNR1
XBLNR_007(016),
data element: BKTXT
BKTXT_008(025),
data element: XBWAE
XBWAE_009(001),
data element: SAEOBJART
DOCID_010(010),
data element: NEWBS
NEWBS_011(002),
data element: NEWKO
NEWKO_012(017),
data element: WRBTR
WRBTR_013(016),
data element: XMWST
XMWST_014(001),
data element: MWSKZ
MWSKZ_015(002),
data element: DZTERM
ZTERM_016(004),
data element: DZFBDT
ZFBDT_017(010),
data element: SCHZW_BSEG
ZLSCH_018(001),
data element: NEWBS
NEWBS_019(002),
data element: NEWKO
NEWKO_020(017),
data element: WRBTR
WRBTR_021(016),
data element: MWSKZ
MWSKZ_022(002),
data element: XMWST
XMWST_023(001),
data element: VALUT
VALUT_024(010),
data element: FMORE
FMORE_025(001),
data element: GSBER
GSBER_026(004),
data element: FM_FIPEX
QTY(024),
UOM(020),
FIPEX_027(024),
data element: FIPOS
FIPOS_028(024),
data element: EIGXX
FIELD_13_029(032),
data element: EIGXX
FIELD_15_030(032),
data element: EIGXX
FIELD_09_031(032),
data element: EIGXX
FIELD_10_032(032),
data element: EIGXX
FIELD_11_033(032),
data element: EIGXX
FIELD_12_034(032),
data element: EIGXX
FIELD_13_035(032),
data element: EIGXX
FIELD_14_036(032),
data element: EIGXX
FIELD_15_037(032),
data element: GSBER
GSBER_038(004),
data element: PRCTR
PRCTR_039(010),
data element: FM_FIPEX
FIPEX_040(024),
data element: FIPOS
FIPOS_041(024),
data element: NEWBS
NEWBS_042(002),
data element: NEWKO
NEWKO_043(017),
data element: MWSKZ
MWSKZ_044(002),
data element: XMWST
XMWST_045(001),
data element: VALUT
VALUT_046(010),
data element: FMORE
FMORE_047(001),
data element: FM_FIPEX
FIPEX_048(024),
data element: FIPOS
FIPOS_049(024),
END OF RECORD_CUST.
End generated data section ***
DATA : RECORD TYPE STANDARD TABLE OF RECORD_CUST,
WA_RECORD TYPE RECORD_CUST.
DATA : IT_RECO TYPE STANDARD TABLE OF TY_RECO,
WA_RECO TYPE TY_RECO,
IT_RECO1 TYPE STANDARD TABLE OF RECORD_CUST,
WA_RECO1 TYPE RECORD_CUST,
WA_RECO2 TYPE RECORD_CUST.
DATA : TEMP TYPE I.
DATA : IT_BSEG TYPE STANDARD TABLE OF TY_BSEG,
WA_BSEG TYPE TY_BSEG.
DATA : IT_KNB1 TYPE STANDARD TABLE OF TY_KNB1,
WA_KNB1 TYPE TY_KNB1.
DATA: BDCDATA TYPE STANDARD TABLE OF BDCDATA ,
WA_BDCDATA TYPE BDCDATA,
MESSTAB TYPE STANDARD TABLE OF BDCMSGCOLL ,
WA_MESSTAB TYPE BDCMSGCOLL.
**======================================================
**DATA DECLARATION FOR VENDOR
**=======================================================
TYPES : BEGIN OF TY_BSEG_VEN,
BELNR TYPE BSEG-BELNR, "Doc no
ZFBDT TYPE BSEG-ZFBDT, "base line date
ZTERM TYPE BSEG-ZTERM, " payment terms
ZLSCH TYPE BSEG-ZLSCH, " pay. mode
VALUT TYPE BSEG-VALUT, " valut date
FIPOS TYPE BSEG-FIPOS, " commitment line
ZBD1T TYPE BSEG-ZBD1T, " NO OF DAYS
ZLSPR TYPE BSEG-ZLSPR, " STOP PAYMENT
FISTL TYPE BSEG-FISTL, " FUND CENTER
END OF TY_BSEG_VEN.
TYPES: BEGIN OF TY_LFB1,
LIFNR TYPE LFB1-LIFNR,
BUKRS TYPE LFB1-BUKRS,
ZWELS TYPE LFB1-ZWELS,
ZTERM TYPE LFB1-ZTERM,
END OF TY_LFB1.
TYPES : BEGIN OF TY_RECO_VEN,
SRNO TYPE I,
BLDAT_001(010),
BLART_002(002),
BUKRS_003 TYPE BSEG-BUKRS ,
BUDAT_004(010),
MONAT_005(002),
WAERS_006(005),
XBLNR_007(016),
BKTXT_008(025),
XBWAE_009(001),
DOCID_010(010),
NEWBS_011(002),
NEWKO_012 TYPE BSEG-LIFNR ,
WRBTR_013(016),
XMWST_014(001),
MWSKZ_015(002),
ZTERM_016(004),
ZBD1T_017(003),
ZFBDT_018(010),
ZLSPR_019(001),
ZLSCH_020(001),
NEWBS_021(002),
NEWKO_022(017),
WRBTR_023(016),
MWSKZ_024(002),
XMWST_025(001),
VALUT_026(010),
FMORE_027(001),
GSBER_028(004),
QTY(024),
UOM(020),
FISTL_029(016), "FUND CENTER
FIPEX_030(024),
FIPOS_031(024),
FIELD_13_032(032),
FIELD_15_033(032),
FIELD_09_034(032),
FIELD_10_035(032),
FIELD_11_036(032),
FIELD_13_037(032),
FIELD_14_038(032),
FIELD_15_039(032),
GSBER_040(004),
PRCTR_041(010),
FISTL_042(016),
FIPEX_043(024),
FIPOS_044(024),
END OF TY_RECO_VEN.
TYPES: BEGIN OF RECORD_VEN ,
SRNO TYPE I,
data element: BLDAT
BLDAT_001(010),
data element: BLART
BLART_002(002),
data element: BUKRS
BUKRS_003(004),
data element: BUDAT
BUDAT_004(010),
data element: MONAT
MONAT_005(002),
data element: WAERS
WAERS_006(005),
data element: XBLNR1
XBLNR_007(016),
data element: BKTXT
BKTXT_008(025),
data element: XBWAE
XBWAE_009(001),
data element: SAEOBJART
DOCID_010(010),
data element: NEWBS
NEWBS_011(002),
data element: NEWKO
NEWKO_012(017),
data element: WRBTR
WRBTR_013(016),
data element: XMWST
XMWST_014(001),
data element: MWSKZ
MWSKZ_015(002),
data element: DZTERM
ZTERM_016(004),
data element: DZBD1T
ZBD1T_017(003),
data element: DZFBDT
ZFBDT_018(010),
data element: DZLSPR
ZLSPR_019(001),
data element: SCHZW_BSEG
ZLSCH_020(001),
data element: NEWBS
NEWBS_021(002),
data element: NEWKO
NEWKO_022(017),
data element: WRBTR
WRBTR_023(016),
data element: MWSKZ
MWSKZ_024(002),
data element: XMWST
XMWST_025(001),
data element: VALUT
VALUT_026(010),
data element: FMORE
FMORE_027(001),
data element: GSBER
GSBER_028(004),
QTY(024),
UOM(020),
data element: FISTL
FISTL_029(016),
data element: FM_FIPEX
FIPEX_030(024),
data element: FIPOS
FIPOS_031(024),
data element: EIGXX
FIELD_13_032(032),
data element: EIGXX
FIELD_15_033(032),
data element: EIGXX
FIELD_09_034(032),
data element: EIGXX
FIELD_10_035(032),
data element: EIGXX
FIELD_11_036(032),
data element: EIGXX
FIELD_13_037(032),
data element: EIGXX
FIELD_14_038(032),
data element: EIGXX
FIELD_15_039(032),
data element: GSBER
GSBER_040(004),
data element: PRCTR
PRCTR_041(010),
data element: FISTL
FISTL_042(016),
data element: FM_FIPEX
FIPEX_043(024),
data element: FIPOS
FIPOS_044(024),
NEWBS_043(002),
NEWKO_044(017),
END OF RECORD_VEN.
DATA : RECORD_VEN TYPE STANDARD TABLE OF RECORD_VEN,
WA_RECORD_VEN TYPE RECORD_VEN.
DATA : IT_RECO_VEN TYPE STANDARD TABLE OF TY_RECO_VEN,
WA_RECO_VEN TYPE TY_RECO_VEN.
DATA : IT_RECO1_VEN TYPE STANDARD TABLE OF RECORD_VEN ,
WA_RECO1_VEN TYPE RECORD_VEN,
WA_RECO2_VEN TYPE RECORD_VEN.
DATA : TEMP_VEN TYPE I.
DATA : IT_BSEG_VEN TYPE STANDARD TABLE OF TY_BSEG_VEN,
WA_BSEG_VEN TYPE TY_BSEG_VEN.
DATA : IT_LFB1_VEN TYPE STANDARD TABLE OF TY_LFB1,
WA_LFB1_VEN TYPE TY_LFB1.
DATA: BDCDATA_VEN TYPE STANDARD TABLE OF BDCDATA ,
WA_BDCDATA_VEN TYPE BDCDATA,
MESSTAB_VEN TYPE STANDARD TABLE OF BDCMSGCOLL ,
WA_MESSTAB_VEN TYPE BDCMSGCOLL.
DATA: BDCDATA_VEN1 TYPE STANDARD TABLE OF BDCDATA ,
WA_BDCDATA_VEN1 TYPE BDCDATA,
WA_BDCDATA_VEN2 TYPE BDCDATA.
End generated data section ***
**====================================================
**SELECTION SCREEN
**====================================================
SELECTION-SCREEN: BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT_001 . "NO INTERVALS.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(10) TEXT_002.
PARAMETERS: FLNAME TYPE RLGRAP-FILENAME .
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK B1.
SELECTION-SCREEN: BEGIN OF BLOCK B2 WITH FRAME TITLE TEXT_003 NO INTERVALS.
SELECTION-SCREEN BEGIN OF LINE .
PARAMETERS: R01 RADIOBUTTON GROUP R1 DEFAULT 'X' USER-COMMAND RAD.
SELECTION-SCREEN COMMENT 5(15) TEXT_004.
*SELECTION-SCREEN END OF LINE.
*SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS: R02 RADIOBUTTON GROUP R1 .
SELECTION-SCREEN COMMENT 25(15) TEXT_005.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE .
PARAMETERS: R_FOR RADIOBUTTON GROUP R2 DEFAULT 'X' USER-COMMAND RAD.
SELECTION-SCREEN COMMENT 5(15) TEXT_006.
*SELECTION-SCREEN END OF LINE.
*SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS: R_BACK RADIOBUTTON GROUP R2 .
SELECTION-SCREEN COMMENT 25(15) TEXT_007.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK B2.
INITIALIZATION.
TEXT_001 = 'Report Specification'.
TEXT_002 = 'File name'.
TEXT_003 = 'Output Specification'.
TEXT_004 = 'Customer Data'.
TEXT_005 = 'Vendor Data'.
TEXT_006 = 'ForeGround'.
TEXT_007 = 'BackGround'.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR FLNAME.
PERFORM GET_FILENAME.
START-OF-SELECTION.
IF FLNAME IS INITIAL.
MESSAGE 'Please select file' TYPE 'S'.
LEAVE LIST-PROCESSING.
ENDIF.
IF R01 = 'X'.
PERFORM GUI_UPLOAD.
PERFORM FILL_RECORDS.
IF RECORD[] IS NOT INITIAL.
PERFORM BDC_FILL.
ENDIF.
ELSEIF R02 = 'X'.
PERFORM GUI_UPLOAD_VEN.
PERFORM FILL_RECORDS_VEN.
IF RECORD_VEN[] IS NOT INITIAL.
PERFORM BDC_FILL_VEN.
ENDIF.
ENDIF.
*& Form FILL_RECORDS
FORM FILL_RECORDS .
DATA: V_PERIOD TYPE I,
V_PERIOD1 TYPE I.
LOOP AT IT_RECO INTO WA_RECO.
V_PERIOD = WA_RECO-BUDAT_004+3(2) .
IF V_PERIOD = 1.
V_PERIOD1 = '10'.
ELSEIF V_PERIOD = 2.
V_PERIOD1 = '11'.
ELSEIF V_PERIOD = 3.
V_PERIOD1 = '12'.
ELSEIF V_PERIOD = 4.
V_PERIOD1 = '1'.
ELSEIF V_PERIOD = 5.
V_PERIOD1 = '2'.
ELSEIF V_PERIOD = 6.
V_PERIOD1 = '3'.
ELSEIF V_PERIOD = 7.
V_PERIOD1 = '4'.
ELSEIF V_PERIOD = 8.
V_PERIOD1 = '5'.
ELSEIF V_PERIOD = 9.
V_PERIOD1 = '6'.
ELSEIF V_PERIOD = 10.
V_PERIOD1 = '7'.
ELSEIF V_PERIOD = 11.
V_PERIOD1 = '8'.
ELSEIF V_PERIOD = 12.
V_PERIOD1 = '9'.
ENDIF.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = WA_RECO-NEWBS_011
IMPORTING
OUTPUT = WA_RECO-NEWBS_011.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = WA_RECO-NEWKO_012
IMPORTING
OUTPUT = WA_RECO-NEWKO_012.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = WA_RECO-BUKRS_003
IMPORTING
OUTPUT = WA_RECO-BUKRS_003.
SELECT SINGLE BELNR ZFBDT ZTERM ZLSCH VALUT FIPOS
FROM BSEG INTO WA_BSEG WHERE KUNNR = WA_RECO-NEWKO_012
AND BUKRS = WA_RECO-BUKRS_003.
AND ZTERM ''
AND ZLSCH '' .
SELECT SINGLE KUNNR BUKRS ZWELS ZTERM
FROM KNB1 INTO WA_KNB1 WHERE KUNNR = WA_RECO-NEWKO_012
AND BUKRS = WA_RECO-BUKRS_003.
SORT IT_BSEG BY ZFBDT DESCENDING.
READ TABLE IT_BSEG INTO WA_BSEG INDEX 1.
DATA: STR TYPE STRING,
STR1 TYPE STRING,
STR2 TYPE STRING,
STR3 TYPE STRING.
STR1 = WA_BSEG-ZFBDT+0(4).
STR2 = WA_BSEG-ZFBDT+4(2).
STR3 = WA_BSEG-ZFBDT+6(2).
CONCATENATE STR3 '.' STR2 '.' STR1 INTO STR.
CONDENSE STR NO-GAPS.
WA_RECORD-SRNO = WA_RECO-SRNO.
WA_RECORD-BLDAT_001 = WA_RECO-BLDAT_001.
WA_RECORD-BLART_002 = WA_RECO-BLART_002.
WA_RECORD-BUKRS_003 = WA_RECO-BUKRS_003.
WA_RECORD-BUDAT_004 = WA_RECO-BUDAT_004.
WA_RECORD-MONAT_005 = V_PERIOD1.
WA_RECORD-WAERS_006 = WA_RECO-WAERS_006.
WA_RECORD-XBLNR_007 = WA_RECO-XBLNR_007.
WA_RECORD-BKTXT_008 = WA_RECO-BKTXT_008.
WA_RECORD-XBWAE_009 = 'X'.
WA_RECORD-DOCID_010 = '*'.
WA_RECORD-NEWBS_011 = WA_RECO-NEWBS_011.
WA_RECORD-NEWKO_012 = WA_RECO-NEWKO_012.
WA_RECORD-WRBTR_013 = WA_RECO-WRBTR_013.
WA_RECORD-XMWST_014 = 'X'.
WA_RECORD-MWSKZ_015 = WA_RECO-MWSKZ_015.
WA_RECORD-ZTERM_016 = WA_KNB1-ZTERM .
WA_RECORD-ZFBDT_017 = WA_RECO-BLDAT_001. "STR." WA_BSEG-ZFBDT .
WA_RECORD-ZLSCH_018 = WA_KNB1-ZWELS.
WA_RECORD-NEWBS_019 = WA_RECO-NEWBS_011.
WA_RECORD-NEWKO_020 = WA_RECO-NEWKO_012.
WA_RECORD-WRBTR_021 = WA_RECO-WRBTR_013.
WA_RECORD-MWSKZ_022 = WA_RECO-MWSKZ_015.
WA_RECORD-XMWST_023 = 'X'.
WA_RECORD-VALUT_024 = WA_RECO-BLDAT_001. "STR """"""""""""""""""""""""""WA_BSEG-VALUT.
WA_RECORD-FMORE_025 = 'X'.
WA_RECORD-GSBER_026 = WA_RECO-GSBER_026.
WA_RECORD-FIPEX_027 = WA_BSEG-FIPOS.
WA_RECORD-FIPOS_028 = WA_BSEG-FIPOS.
WA_RECORD-QTY = WA_RECO-QTY.
WA_RECORD-UOM = WA_RECO-UOM.
WA_RECORD-FIELD_13_029 = WA_RECO-FIELD_13_029.
WA_RECORD-FIELD_15_030 = WA_RECO-FIELD_15_030.
WA_RECORD-FIELD_09_031 = WA_RECO-FIELD_09_031.
WA_RECORD-FIELD_10_032 = WA_RECO-FIELD_10_032.
WA_RECORD-FIELD_11_033 = WA_RECO-FIELD_11_033.
WA_RECORD-FIELD_12_034 = ''. "WA_RECO-FIELD_12_034.
WA_RECORD-FIELD_13_035 = WA_RECO-FIELD_13_035.
WA_RECORD-FIELD_14_036 = WA_RECO-FIELD_14_036.
WA_RECORD-FIELD_15_037 = WA_RECO-FIELD_15_037.
WA_RECORD-GSBER_038 = WA_RECO-GSBER_026.
WA_RECORD-PRCTR_039 = WA_RECO-FIELD_13_029.
WA_RECORD-FIPEX_040 = WA_BSEG-FIPOS.
WA_RECORD-FIPOS_041 = WA_BSEG-FIPOS.
WA_RECORD-NEWBS_042 = WA_RECO-NEWBS_011.
WA_RECORD-NEWKO_043 = WA_RECO-NEWKO_012.
WA_RECORD-MWSKZ_044 = WA_RECO-MWSKZ_015.
WA_RECORD-XMWST_045 = 'X'.
WA_RECORD-VALUT_046 = WA_RECO-BLDAT_001. """str """""""""""""""""""""""WA_BSEG-VALUT.
WA_RECORD-FMORE_047 = 'X'.
WA_RECORD-FIPEX_048 = WA_BSEG-FIPOS.
WA_RECORD-FIPOS_049 = WA_BSEG-FIPOS.
MOVE-CORRESPONDING WA_RECO TO WA_RECORD.
APPEND WA_RECORD TO RECORD.
CLEAR WA_RECORD.
ENDLOOP.
ENDFORM. " FILL_RECORDS
*& Form BDC_FILL
FORM BDC_FILL .
DATA : CNT1 TYPE I VALUE 1.
IT_RECO1[] = RECORD[].
DELETE IT_RECO1 WHERE GSBER_026 = ''.
SORT RECORD BY SRNO ASCENDING .
SORT RECORD BY WRBTR_013 DESCENDING.
DELETE ADJACENT DUPLICATES FROM RECORD COMPARING SRNO .
LOOP AT RECORD INTO WA_RECORD.
TEMP = SY-TABIX.
PERFORM BDC_DYNPRO USING 'SAPLF040' '0100'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'RF05V-NEWKO'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'BKPF-BLDAT'
WA_RECORD-BLDAT_001.
PERFORM BDC_FIELD USING 'BKPF-BLART'
WA_RECORD-BLART_002.
PERFORM BDC_FIELD USING 'BKPF-BUKRS'
WA_RECORD-BUKRS_003.
PERFORM BDC_FIELD USING 'BKPF-BUDAT'
WA_RECORD-BUDAT_004.
PERFORM BDC_FIELD USING 'BKPF-MONAT'
WA_RECORD-MONAT_005.
PERFORM BDC_FIELD USING 'BKPF-WAERS'
WA_RECORD-WAERS_006.
PERFORM BDC_FIELD USING 'BKPF-XBLNR'
WA_RECORD-XBLNR_007.
PERFORM BDC_FIELD USING 'BKPF-BKTXT'
WA_RECORD-BKTXT_008.
PERFORM BDC_FIELD USING 'VBKPF-XBWAE'
WA_RECORD-XBWAE_009.
PERFORM BDC_FIELD USING 'FS006-DOCID'
WA_RECORD-DOCID_010.
PERFORM BDC_FIELD USING 'RF05V-NEWBS'
WA_RECORD-NEWBS_011.
PERFORM BDC_FIELD USING 'RF05V-NEWKO'
WA_RECORD-NEWKO_012.
PERFORM BDC_DYNPRO USING 'SAPLF040' '0301'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'RF05V-NEWKO'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'BSEG-WRBTR'
WA_RECORD-WRBTR_013.
PERFORM BDC_FIELD USING 'BKPF-XMWST'
WA_RECORD-XMWST_014.
PERFORM BDC_FIELD USING 'BSEG-MWSKZ'
WA_RECORD-MWSKZ_015.
PERFORM BDC_FIELD USING 'BSEG-ZTERM'
WA_RECORD-ZTERM_016.
PERFORM BDC_FIELD USING 'BSEG-ZFBDT'
WA_RECORD-ZFBDT_017.
PERFORM BDC_FIELD USING 'BSEG-ZLSCH'
WA_RECORD-ZLSCH_018.
LOOP AT IT_RECO1 WHERE SRNO = RECORD-SRNO.
READ TABLE IT_RECO1 INTO WA_RECO1 WITH KEY SRNO = WA_RECORD-SRNO ."INDEX TEMP.
PERFORM BDC_FIELD USING 'RF05V-NEWBS'
WA_RECO1-NEWBS_019.
PERFORM BDC_FIELD USING 'RF05V-NEWKO'
WA_RECO1-NEWKO_020.
CLEAR cnt1.
LOOP AT IT_RECO1 INTO WA_RECO1 WHERE SRNO = WA_RECORD-SRNO.
CNT1 = 1 + SY-TABIX.
PERFORM BDC_DYNPRO USING 'SAPLF040' '0300'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'BSEG-WRBTR'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=ZK'.
PERFORM BDC_FIELD USING 'BSEG-WRBTR'
WA_RECO1-WRBTR_021.
PERFORM BDC_FIELD USING 'BSEG-MWSKZ'
WA_RECO1-MWSKZ_022.
PERFORM BDC_FIELD USING 'BKPF-XMWST'
WA_RECO1-XMWST_023.
PERFORM BDC_FIELD USING 'BSEG-VALUT'
WA_RECO1-VALUT_024.
PERFORM BDC_FIELD USING 'DKACB-FMORE'
WA_RECO1-FMORE_025.
PERFORM BDC_FIELD USING 'BSEG-MENGE'
WA_RECO1-QTY.
PERFORM BDC_FIELD USING 'BSEG-MEINS'
WA_RECO1-UOM.
PERFORM BDC_DYNPRO USING 'SAPLKACB' '0002'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'COBL-GSBER'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=COBL_XERGO'.
PERFORM BDC_FIELD USING 'COBL-GSBER'
WA_RECO1-GSBER_026.
PERFORM BDC_FIELD USING 'COBL-FIPEX'
WA_RECO1-FIPEX_027.
PERFORM BDC_FIELD USING 'COBL-FIPOS'
WA_RECO1-FIPOS_028.
CHANGEED ON 25 APRIL BY RAJAN
PERFORM BDC_FIELD USING 'BSEG-MENGE'
WA_RECO1-QTY.
PERFORM BDC_FIELD USING 'BSEG-MEINS'
WA_RECO1-UOM.
CHANGEED ON 25 APRIL BY RAJAN
PERFORM BDC_DYNPRO USING 'SAPLKEAK' '0300'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'RKEAK-FIELD(15)'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=P+'.
PERFORM BDC_FIELD USING 'RKEAK-FIELD(13)'
WA_RECO1-FIELD_13_029.
PERFORM BDC_FIELD USING 'RKEAK-FIELD(15)'
WA_RECO1-FIELD_15_030.
PERFORM BDC_DYNPRO USING 'SAPLKEAK' '0300'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'RKEAK-FIELD(15)'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=WEIT'.
PERFORM BDC_FIELD USING 'RKEAK-FIELD(09)'
WA_RECO1-FIELD_09_031.
PERFORM BDC_FIELD USING 'RKEAK-FIELD(10)'
WA_RECO1-FIELD_10_032.
PERFORM BDC_FIELD USING 'RKEAK-FIELD(11)'
WA_RECO1-FIELD_11_033.
PERFORM BDC_FIELD USING 'RKEAK-FIELD(12)'
WA_RECO1-FIELD_12_034.
PERFORM BDC_FIELD USING 'RKEAK-FIELD(13)'
WA_RECO1-FIELD_13_035.
PERFORM BDC_FIELD USING 'RKEAK-FIELD(14)'
WA_RECO1-FIELD_14_036.
PERFORM BDC_FIELD USING 'RKEAK-FIELD(15)'
WA_RECO1-FIELD_15_037.
PERFORM BDC_DYNPRO USING 'SAPLKACB' '0002'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'COBL-GSBER'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=ENTE'.
PERFORM BDC_FIELD USING 'COBL-GSBER'
WA_RECO1-GSBER_038.
PERFORM BDC_FIELD USING 'COBL-PRCTR'
WA_RECO1-PRCTR_039.
PERFORM BDC_FIELD USING 'COBL-FIPEX'
WA_RECO1-FIPEX_040.
PERFORM BDC_FIELD USING 'COBL-FIPOS'
WA_RECO1-FIPOS_041.
PERFORM BDC_DYNPRO USING 'SAPLF040' '0330'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'RF05V-NEWKO'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
READ TABLE IT_RECO1 INTO WA_RECO2 INDEX CNT1.
IF SY-SUBRC = 0.
PERFORM BDC_FIELD USING 'RF05V-NEWBS'
WA_RECO2-NEWBS_042.
PERFORM BDC_FIELD USING 'RF05V-NEWKO'
WA_RECO2-NEWKO_043.
ELSE.
PERFORM BDC_FIELD USING 'RF05V-NEWBS'
WA_RECO1-NEWBS_042.
PERFORM BDC_FIELD USING 'RF05V-NEWKO'
WA_RECO1-NEWKO_043.
ENDIF.
ENDLOOP.
CLEAR CNT1.
PERFORM BDC_DYNPRO USING 'SAPLF040' '0330'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'BSEG-WRBTR'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=BP'.
PERFORM BDC_DYNPRO_ven USING 'SAPLF040' '0330'.
PERFORM BDC_FIELD_ven USING 'BDC_CURSOR'
'BSEG-LZBKZ'.
PERFORM BDC_FIELD_ven USING 'BDC_OKCODE'
'=BP'.
REFRESH BDCDATA_VEN1.
FREE BDCDATA_VEN1[].
BDCDATA_VEN1[] = BDCDATA[].
DATA : CNT TYPE I,
TEMP TYPE I,
TEMP1 TYPE I,
TEMP2 TYPE I,
TEMP3 TYPE I,
TEMP4 TYPE I.
LOOP AT BDCDATA_VEN1 INTO WA_BDCDATA_VEN1 WHERE DYNPRO = 330.
TEMP = SY-TABIX.
TEMP1 = TEMP + 1.
TEMP2 = TEMP1 + 1.
TEMP3 = TEMP2 + 1.
TEMP4 = TEMP3 + 1.
CNT = SY-TABIX + 5.
READ TABLE BDCDATA_VEN1 INTO WA_BDCDATA_VEN2 INDEX CNT.
IF WA_BDCDATA_VEN2-DYNPRO = 330.
DELETE BDCDATA_VEN1 FROM TEMP TO TEMP4.
EXIT.
ENDIF.
ENDLOOP.
PERFORM BDC_DYNPRO USING 'SAPLF040' '0300'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'BSEG-WRBTR'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=BP'.
PERFORM BDC_FIELD USING 'BSEG-MWSKZ'
WA_RECORD-MWSKZ_044.
PERFORM BDC_FIELD USING 'BKPF-XMWST'
WA_RECORD-XMWST_045.
PERFORM BDC_FIELD USING 'BSEG-VALUT'
WA_RECORD-VALUT_046.
PERFORM BDC_FIELD USING 'DKACB-FMORE'
WA_RECORD-FMORE_047.
PERFORM BDC_DYNPRO USING 'SAPLKACB' '0002'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'COBL-GSBER'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=ENTE'.
PERFORM BDC_FIELD USING 'COBL-FIPEX'
WA_RECORD-FIPEX_048.
PERFORM BDC_FIELD USING 'COBL-FIPOS'
WA_RECORD-FIPOS_049.
PERFORM BDC_TRANSACTION USING 'F-64'.
READ TABLE MESSTAB INTO WA_MESSTAB WITH KEY TCODE = 'FBV1'
MSGTYP = 'S'
MSGID = 'FP'.
IF SY-SUBRC = 0.
PERFORM BDC_MSG_S.
ELSE.
PERFORM BDC_MSG_E.
ENDIF.
FREE MESSTAB.
ENDLOOP.
ENDFORM. " BDC_FILL
*& Form BDC_MSG_S
FORM BDC_MSG_S.
IF WA_MESSTAB-MSGTYP = 'S'.
DATA : MESS1(10),
MESS2(10).
MESS1 = WA_MESSTAB-MSGV1.
MESS2 = WA_MESSTAB-MSGV2.
WRITE :/1 'Parked Documents',
MESS1 COLOR 6 INTENSIFIED ON INVERSE ON,
'For Company Code',
MESS2 COLOR 6 INTENSIFIED ON INVERSE ON.
ENDIF.
ENDFORM. " BDC_MSG_S
*& Form BDC_MSG_E
FORM BDC_MSG_E.
READ TABLE MESSTAB INTO WA_MESSTAB WITH KEY TCODE = 'FBV1'
MSGTYP = 'E'
MSGID = 'F5'.
READ TABLE RECORD INTO WA_RECORD INDEX TEMP.
IF WA_MESSTAB-MSGTYP = 'E' AND SY-SUBRC = 0.
SKIP.
WRITE: /1 'Error occured during inserting data for sr. no :' COLOR 5 INTENSIFIED ON INVERSE ON,
WA_RECORD-SRNO COLOR 5 INTENSIFIED ON INVERSE ON.
MESSTAB-MSGV1 COLOR 6 INTENSIFIED ON INVERSE ON.
SKIP.
ENDIF.
ENDFORM. " BDC_MSG_E
*& Form GUI_UPLOAD
FORM GUI_UPLOAD .
DATA: FNAME TYPE STRING.
FNAME = FLNAME.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
FILENAME = FNAME
FILETYPE = 'ASC'
HAS_FIELD_SEPARATOR = 'X'
HEADER_LENGTH = 0
READ_BY_LINE = 'X'
DAT_MODE = ' '
CODEPAGE = ' '
IGNORE_CERR = ABAP_TRUE
REPLACEMENT = '#'
CHECK_BOM = ' '
VIRUS_SCAN_PROFILE =
NO_AUTH_CHECK = ' '
IMPORTING
FILELENGTH =
HEADER =
TABLES
DATA_TAB = IT_RECO
EXCEPTIONS
FILE_OPEN_ERROR = 1
FILE_READ_ERROR = 2
NO_BATCH = 3
GUI_REFUSE_FILETRANSFER = 4
INVALID_TYPE = 5
NO_AUTHORITY = 6
UNKNOWN_ERROR = 7
BAD_DATA_FORMAT = 8
HEADER_NOT_ALLOWED = 9
SEPARATOR_NOT_ALLOWED = 10
HEADER_TOO_LONG = 11
UNKNOWN_DP_ERROR = 12
ACCESS_DENIED = 13
DP_OUT_OF_MEMORY = 14
DISK_FULL = 15
DP_TIMEOUT = 16
OTHERS = 17
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. " GUI_UPLOAD
*& Form GET_FILENAME
FORM GET_FILENAME .
CALL FUNCTION 'F4_FILENAME'
IMPORTING
FILE_NAME = FLNAME.
ENDFORM. " GET_FILENAME
*& Form bdc_transaction
FORM BDC_TRANSACTION USING VALUE(P_0522).
IF R_FOR = 'X'.
CALL TRANSACTION 'F-64' USING BDCDATA_VEN1
MODE 'A' "A
UPDATE 'A'
MESSAGES INTO MESSTAB.
ELSEIF R_BACK = 'X'.
CALL TRANSACTION 'F-64' USING BDCDATA_VEN1
MODE 'N' "A
UPDATE 'A'
MESSAGES INTO MESSTAB.
ENDIF.
REFRESH BDCDATA.
FREE BDCDATA[].
ENDFORM. " bdc_transaction
*& Form BDC_DYNPRO
FORM BDC_DYNPRO USING PROGRAM DYNPRO.
CLEAR WA_BDCDATA.
WA_BDCDATA-PROGRAM = PROGRAM.
WA_BDCDATA-DYNPRO = DYNPRO.
WA_BDCDATA-DYNBEGIN = 'X'.
APPEND WA_BDCDATA TO BDCDATA.
ENDFORM. "BDC_DYNPRO
*& Form BDC_FIELD
FORM BDC_FIELD USING FNAM FVAL.
CLEAR WA_BDCDATA.
WA_BDCDATA-FNAM = FNAM.
WA_BDCDATA-FVAL = FVAL.
APPEND WA_BDCDATA TO BDCDATA.
ENDFORM. "BDC_FIELD
*& Form FILL_RECORDS
FORM FILL_RECORDS_VEN .
DATA: V_PERIOD TYPE I,
V_PERIOD1 TYPE I.
LOOP AT IT_RECO_VEN INTO WA_RECO_VEN.
V_PERIOD = WA_RECO_VEN-BUDAT_004+3(2) .
IF V_PERIOD = 1.
V_PERIOD1 = '10'.
ELSEIF V_PERIOD = 2.
V_PERIOD1 = '11'.
ELSEIF V_PERIOD = 3.
V_PERIOD1 = '12'.
ELSEIF V_PERIOD = 4.
V_PERIOD1 = '1'.
ELSEIF V_PERIOD = 5.
V_PERIOD1 = '2'.
ELSEIF V_PERIOD = 6.
V_PERIOD1 = '3'.
ELSEIF V_PERIOD = 7.
V_PERIOD1 = '4'.
ELSEIF V_PERIOD = 8.
V_PERIOD1 = '5'.
ELSEIF V_PERIOD = 9.
V_PERIOD1 = '6'.
ELSEIF V_PERIOD = 10.
V_PERIOD1 = '7'.
ELSEIF V_PERIOD = 11.
V_PERIOD1 = '8'.
ELSEIF V_PERIOD = 12.
V_PERIOD1 = '9'.
ENDIF.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = WA_RECO_VEN-NEWBS_011
IMPORTING
OUTPUT = WA_RECO_VEN-NEWBS_011.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = WA_RECO_VEN-NEWKO_012
IMPORTING
OUTPUT = WA_RECO_VEN-NEWKO_012.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = WA_RECO_VEN-BUKRS_003
IMPORTING
OUTPUT = WA_RECO_VEN-BUKRS_003.
SELECT SINGLE BELNR ZFBDT ZTERM ZLSCH VALUT FIPOS ZBD1T ZLSPR FISTL
FROM BSEG INTO WA_BSEG_VEN WHERE LIFNR = WA_RECO_VEN-NEWKO_012
AND BUKRS = WA_RECO_VEN-BUKRS_003.
AND ZTERM ''
AND ZLSCH '' .
SELECT SINGLE LIFNR BUKRS ZWELS ZTERM
FROM LFB1 INTO WA_LFB1_VEN WHERE LIFNR = WA_RECO_VEN-NEWKO_012
AND BUKRS = WA_RECO_VEN-BUKRS_003.
SORT IT_BSEG_VEN BY ZFBDT DESCENDING.
READ TABLE IT_BSEG_VEN INTO WA_BSEG_VEN INDEX 1.
DATA: STR TYPE STRING,
STR1 TYPE STRING,
STR2 TYPE STRING,
STR3 TYPE STRING.
STR1 = WA_BSEG_VEN-ZFBDT+0(4).
STR2 = WA_BSEG_VEN-ZFBDT+4(2).
STR3 = WA_BSEG_VEN-ZFBDT+6(2).
CONCATENATE STR3 '.' STR2 '.' STR1 INTO STR.
CONDENSE STR NO-GAPS.
WA_RECORD_VEN-SRNO = WA_RECO_VEN-SRNO.
WA_RECORD_VEN-BLDAT_001 = WA_RECO_VEN-BLDAT_001.
WA_RECORD_VEN-BLART_002 = WA_RECO_VEN-BLART_002.
WA_RECORD_VEN-BUKRS_003 = WA_RECO_VEN-BUKRS_003. -
Hi pls give names of some standard BDC program
thank you
raviBDC allows you to perform database updates in the background using standard SAP transactions.
The resultant entries will be as if the user had manually entered the data via SAP. This means
that you do not bypass any of the standard SAP consistency checks, authorisations etc.
There are two main methods of ABAP BDC, these are Call Transaction and Batch Input.
Other methods of update include Direct update, Idoc and BAPI.
e
Example program : 1
Report ZBDC_EXAMPLE *
*& Example BDC program, which updates net price of item 00010 of a *
*& particular Purchase order(EBELN). *
REPORT ZBDC_EXAMPLE NO STANDARD PAGE HEADING
LINE-SIZE 132.
* Data declaration
TABLES: ekko, ekpo.
TYPES: BEGIN OF t_ekko,
ebeln TYPE ekko-ebeln,
waers TYPE ekko-waers,
netpr TYPE ekpo-netpr,
err_msg(73) TYPE c,
END OF t_ekko.
DATA: it_ekko TYPE STANDARD TABLE OF t_ekko INITIAL SIZE 0,
wa_ekko TYPE t_ekko,
it_error TYPE STANDARD TABLE OF t_ekko INITIAL SIZE 0,
wa_error TYPE t_ekko,
it_success TYPE STANDARD TABLE OF t_ekko INITIAL SIZE 0,
wa_success TYPE t_ekko.
DATA: w_textout LIKE t100-text.
DATA: gd_update TYPE i,
gd_lines TYPE i.
*Used to store BDC data
DATA: BEGIN OF bdc_tab OCCURS 0.
INCLUDE STRUCTURE bdcdata.
DATA: END OF bdc_tab.
*Used to stores error information from CALL TRANSACTION Function Module
DATA: BEGIN OF messtab OCCURS 0.
INCLUDE STRUCTURE bdcmsgcoll.
DATA: END OF messtab.
*Screen declaration
SELECTION-SCREEN BEGIN OF BLOCK block1 WITH FRAME
TITLE text-001. "Purchase order Num
SELECT-OPTIONS: so_ebeln FOR ekko-ebeln OBLIGATORY.
SELECTION-SCREEN END OF BLOCK block1.
SELECTION-SCREEN BEGIN OF BLOCK block2 WITH FRAME
TITLE text-002. "New NETPR value
PARAMETERS: p_newpr(14) TYPE c obligatory. "LIKE ekpo-netpr.
SELECTION-SCREEN END OF BLOCK block2.
*START-OF-SELECTION
START-OF-SELECTION.
* Retrieve data from Purchase order table(EKKO)
SELECT ekko~ebeln ekko~waers ekpo~netpr
INTO TABLE it_ekko
FROM ekko AS ekko INNER JOIN ekpo AS ekpo
ON ekpo~ebeln EQ ekko~ebeln
WHERE ekko~ebeln IN so_ebeln AND
ekpo~ebelp EQ '10'.
*END-OF-SELECTION
END-OF-SELECTION.
* Check data has been retrieved ready for processing
DESCRIBE TABLE it_ekko LINES gd_lines.
IF gd_lines LE 0.
* Display message if no data has been retrieved
MESSAGE i003(zp) WITH 'No Records Found'(001).
LEAVE TO SCREEN 0.
ELSE.
* Update Customer master data (instalment text)
LOOP AT it_ekko INTO wa_ekko.
PERFORM bdc_update.
ENDLOOP.
* Display message confirming number of records updated
IF gd_update GT 1.
MESSAGE i003(zp) WITH gd_update 'Records updated'(002).
ELSE.
MESSAGE i003(zp) WITH gd_update 'Record updated'(003).
ENDIF.
* Display Success Report
* Check Success table
DESCRIBE TABLE it_success LINES gd_lines.
IF gd_lines GT 0.
* Display result report column headings
PERFORM display_column_headings.
* Display result report
PERFORM display_report.
ENDIF.
* Display Error Report
* Check errors table
DESCRIBE TABLE it_error LINES gd_lines.
* If errors exist then display errors report
IF gd_lines GT 0.
* Display errors report
PERFORM display_error_headings.
PERFORM display_error_report.
ENDIF.
ENDIF.
*& Form DISPLAY_COLUMN_HEADINGS
* Display column headings
FORM display_column_headings.
WRITE:2 ' Success Report '(014) COLOR COL_POSITIVE.
SKIP.
WRITE:2 'The following records updated successfully:'(013).
WRITE:/ sy-uline(42).
FORMAT COLOR COL_HEADING.
WRITE:/ sy-vline,
(10) 'Purchase Order'(004), sy-vline,
(11) 'Old Netpr'(005), sy-vline,
(11) 'New Netpr'(006), sy-vline.
WRITE:/ sy-uline(42).
ENDFORM. " DISPLAY_COLUMN_HEADINGS
*& Form BDC_UPDATE
* Populate BDC table and call transaction ME22
FORM bdc_update.
PERFORM dynpro USING:
'X' 'SAPMM06E' '0105',
' ' 'BDC_CURSOR' 'RM06E-BSTNR',
' ' 'RM06E-BSTNR' wa_ekko-ebeln,
' ' 'BDC_OKCODE' '/00', "OK code
'X' 'SAPMM06E' '0120',
' ' 'BDC_CURSOR' 'EKPO-NETPR(01)',
' ' 'EKPO-NETPR(01)' p_newpr,
' ' 'BDC_OKCODE' '=BU'. "OK code
* Call transaction to update customer instalment text
CALL TRANSACTION 'ME22' USING bdc_tab MODE 'N' UPDATE 'S'
MESSAGES INTO messtab.
* Check if update was succesful
IF sy-subrc EQ 0.
ADD 1 TO gd_update.
APPEND wa_ekko TO it_success.
ELSE.
* Retrieve error messages displayed during BDC update
LOOP AT messtab WHERE msgtyp = 'E'.
* Builds actual message based on info returned from Call transaction
CALL FUNCTION 'MESSAGE_TEXT_BUILD'
EXPORTING
msgid = messtab-msgid
msgnr = messtab-msgnr
msgv1 = messtab-msgv1
msgv2 = messtab-msgv2
msgv3 = messtab-msgv3
msgv4 = messtab-msgv4
IMPORTING
message_text_output = w_textout.
ENDLOOP.
* Build error table ready for output
wa_error = wa_ekko.
wa_error-err_msg = w_textout.
APPEND wa_error TO it_error.
CLEAR: wa_error.
ENDIF.
* Clear bdc date table
CLEAR: bdc_tab.
REFRESH: bdc_tab.
ENDFORM. " BDC_UPDATE
* FORM DYNPRO *
* stores values to bdc table *
* --> DYNBEGIN *
* --> NAME *
* --> VALUE *
FORM dynpro USING dynbegin name value.
IF dynbegin = 'X'.
CLEAR bdc_tab.
MOVE: name TO bdc_tab-program,
value TO bdc_tab-dynpro,
'X' TO bdc_tab-dynbegin.
APPEND bdc_tab.
ELSE.
CLEAR bdc_tab.
MOVE: name TO bdc_tab-fnam,
value TO bdc_tab-fval.
APPEND bdc_tab.
ENDIF.
ENDFORM. " DYNPRO
*& Form DISPLAY_REPORT
* Display Report
FORM display_report.
FORMAT COLOR COL_NORMAL.
* Loop at data table
LOOP AT it_success INTO wa_success.
WRITE:/ sy-vline,
(10) wa_success-ebeln, sy-vline,
(11) wa_success-netpr CURRENCY wa_success-waers, sy-vline,
(11) p_newpr, sy-vline.
CLEAR: wa_success.
ENDLOOP.
WRITE:/ sy-uline(42).
REFRESH: it_success.
FORMAT COLOR COL_BACKGROUND.
ENDFORM. " DISPLAY_REPORT
*& Form DISPLAY_ERROR_REPORT
* Display error report data
FORM display_error_report.
LOOP AT it_error INTO wa_error.
WRITE:/ sy-vline,
(10) wa_error-ebeln, sy-vline,
(11) wa_error-netpr CURRENCY wa_error-waers, sy-vline,
(73) wa_error-err_msg, sy-vline.
ENDLOOP.
WRITE:/ sy-uline(104).
REFRESH: it_error.
ENDFORM. " DISPLAY_ERROR_REPORT
*& Form DISPLAY_ERROR_HEADINGS
* Display error report headings
FORM display_error_headings.
SKIP.
WRITE:2 ' Error Report '(007) COLOR COL_NEGATIVE.
SKIP.
WRITE:2 'The following records failed during update:'(008).
WRITE:/ sy-uline(104).
FORMAT COLOR COL_HEADING.
WRITE:/ sy-vline,
(10) 'Purchase Order'(009), sy-vline,
(11) 'Netpr'(010), sy-vline,
(73) 'Error Message'(012), sy-vline.
WRITE:/ sy-uline(104).
FORMAT COLOR COL_NORMAL.
ENDFORM. " DISPLAY_ERROR_HEADINGS
Example : 2
Goto transaction SHBD enter a recording name and specify the transaction code.
Enter the test data and save it , it will actomatically create a bdc program.
now select that recording name and click create program icon and specify the program name.
This is the program which was created using transaction SHDB for XD01.
include bdcrecx1.
parameters: dataset(132) lower case.
*** DO NOT CHANGE - the generated data section - DO NOT CHANGE ***
* If it is nessesary to change the data section use the rules:
* 1.) Each definition of a field exists of two lines
* 2.) The first line shows exactly the comment
* '* data element: ' followed with the data element
* which describes the field.
* If you don't have a data element use the
* comment without a data element name
* 3.) The second line shows the fieldname of the
* structure, the fieldname must consist of
* a fieldname and optional the character '_' and
* three numbers and the field length in brackets
* 4.) Each field must be type C.
*** Generated data section with specific formatting - DO NOT CHANGE ***
data: begin of record,
* data element: KUN16
KUNNR_001(016),
* data element: BUKRS
BUKRS_002(004),
* data element: VKORG
VKORG_003(004),
* data element: VTWEG
VTWEG_004(002),
* data element: SPART
SPART_005(002),
* data element: KTOKD
KTOKD_006(004),
* data element: ANRED
ANRED_007(015),
* data element: NAME1_GP
NAME1_008(035),
* data element: SORTL
SORTL_009(010),
* data element: NAME2_GP
NAME2_010(035),
* data element: STRAS_GP
STRAS_011(035),
* data element: PFACH
PFACH_012(010),
* data element: ORT01_GP
ORT01_013(035),
* data element: PSTLZ
PSTLZ_014(010),
* data element: ORT02_GP
ORT02_015(035),
* data element: PFORT_GP
PFORT_016(035),
* data element: PSTL2
PSTL2_017(010),
* data element: LAND1_GP
LAND1_018(003),
* data element: REGIO
REGIO_019(003),
* data element: SPRAS
SPRAS_020(002),
* data element: TELX1
TELX1_021(030),
* data element: TELF1
TELF1_022(016),
* data element: TELFX
TELFX_023(031),
* data element: TELF2
TELF2_024(016),
* data element: TELTX
TELTX_025(030),
* data element: TELBX
TELBX_026(015),
* data element: URL
KNURL_027(132),
* data element: STCD1
STCD1_028(016),
* data element: STCD2
STCD2_029(011),
* data element: BBBNR
BBBNR_030(007),
* data element: BBSNR
BBSNR_031(005),
* data element: BUBKZ
BUBKZ_032(001),
* data element: BRSCH
BRSCH_033(004),
* data element: LZONE
LZONE_034(010),
* data element: KUKLA
KUKLA_035(002),
* data element: BRSCH
BRSCH_036(004),
* data element: UMSA1
UMSA1_037(020),
* data element: UWAER
UWAER_038(005),
* data element: UMJAH
UMJAH_039(004),
* data element: JMZAH
JMZAH_040(006),
* data element: JMJAH
JMJAH_041(004),
* data element: BANKS
BANKS_01_042(003),
* data element: BANKK
BANKL_01_043(015),
* data element: BANKN
BANKN_01_044(018),
* data element: ABLAD
ABLAD_01_045(025),
* data element: KNKAL
KNFAK_01_046(002),
* data element: CIVVE
CIVVE_047(001),
* data element: ANRED_AP
ANRED_01_048(030),
* data element: ANRED_AP
ANRED_02_049(030),
* data element: NAMEV_VP
NAMEV_01_050(035),
* data element: NAMEV_VP
NAMEV_02_051(035),
* data element: NAME1_GP
NAME1_01_052(035),
* data element: NAME1_GP
NAME1_02_053(035),
* data element: TELF1
TELF1_01_054(016),
* data element: TELF1
TELF1_02_055(016),
* data element: ABTNR_PA
ABTNR_01_056(004),
* data element: ABTNR_PA
ABTNR_02_057(004),
* data element: AKONT
AKONT_058(010),
* data element: DZTERM
ZTERM_059(004),
* data element: MAHNA
MAHNA_060(004),
* data element: BZIRK
BZIRK_061(006),
* data element: AWAHR
AWAHR_062(003),
* data element: WAERS_V02D
WAERS_063(005),
* data element: KALKS
KALKS_064(001),
* data element: LPRIO
LPRIO_065(002),
* data element: KZAZU_D
KZAZU_066(001),
* data element: ANTLF
ANTLF_067(001),
* data element: PERFK
PERFK_068(002),
end of record.
*** End generated data section ***
start-of-selection.
perform open_dataset using dataset.
perform open_group.
do.
read dataset dataset into record.
if sy-subrc <> 0. exit. endif.
perform bdc_dynpro using 'SAPMF02D' '0100'.
perform bdc_field using 'BDC_CURSOR'
'RF02D-KTOKD'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'RF02D-KUNNR'
record-KUNNR_001.
perform bdc_field using 'RF02D-BUKRS'
record-BUKRS_002.
perform bdc_field using 'RF02D-VKORG'
record-VKORG_003.
perform bdc_field using 'RF02D-VTWEG'
record-VTWEG_004.
perform bdc_field using 'RF02D-SPART'
record-SPART_005.
perform bdc_field using 'RF02D-KTOKD'
record-KTOKD_006.
perform bdc_dynpro using 'SAPMF02D' '0110'.
perform bdc_field using 'BDC_CURSOR'
'KNA1-KNURL'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'KNA1-ANRED'
record-ANRED_007.
perform bdc_field using 'KNA1-NAME1'
record-NAME1_008.
perform bdc_field using 'KNA1-SORTL'
record-SORTL_009.
perform bdc_field using 'KNA1-NAME2'
record-NAME2_010.
perform bdc_field using 'KNA1-STRAS'
record-STRAS_011.
perform bdc_field using 'KNA1-PFACH'
record-PFACH_012.
perform bdc_field using 'KNA1-ORT01'
record-ORT01_013.
perform bdc_field using 'KNA1-PSTLZ'
record-PSTLZ_014.
perform bdc_field using 'KNA1-ORT02'
record-ORT02_015.
perform bdc_field using 'KNA1-PFORT'
record-PFORT_016.
perform bdc_field using 'KNA1-PSTL2'
record-PSTL2_017.
perform bdc_field using 'KNA1-LAND1'
record-LAND1_018.
perform bdc_field using 'KNA1-REGIO'
record-REGIO_019.
perform bdc_field using 'KNA1-SPRAS'
record-SPRAS_020.
perform bdc_field using 'KNA1-TELX1'
record-TELX1_021.
perform bdc_field using 'KNA1-TELF1'
record-TELF1_022.
perform bdc_field using 'KNA1-TELFX'
record-TELFX_023.
perform bdc_field using 'KNA1-TELF2'
record-TELF2_024.
perform bdc_field using 'KNA1-TELTX'
record-TELTX_025.
perform bdc_field using 'KNA1-TELBX'
record-TELBX_026.
perform bdc_field using 'KNA1-KNURL'
record-KNURL_027.
perform bdc_dynpro using 'SAPMF02D' '0120'.
perform bdc_field using 'BDC_CURSOR'
'KNA1-LZONE'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'KNA1-STCD1'
record-STCD1_028.
perform bdc_field using 'KNA1-STCD2'
record-STCD2_029.
perform bdc_field using 'KNA1-BBBNR'
record-BBBNR_030.
perform bdc_field using 'KNA1-BBSNR'
record-BBSNR_031.
perform bdc_field using 'KNA1-BUBKZ'
record-BUBKZ_032.
perform bdc_field using 'KNA1-BRSCH'
record-BRSCH_033.
perform bdc_field using 'KNA1-LZONE'
record-LZONE_034.
perform bdc_dynpro using 'SAPMF02D' '0125'.
perform bdc_field using 'BDC_CURSOR'
'KNA1-JMJAH'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'KNA1-KUKLA'
record-KUKLA_035.
perform bdc_field using 'KNA1-BRSCH'
record-BRSCH_036.
perform bdc_field using 'KNA1-UMSA1'
record-UMSA1_037.
perform bdc_field using 'KNA1-UWAER'
record-UWAER_038.
perform bdc_field using 'KNA1-UMJAH'
record-UMJAH_039.
perform bdc_field using 'KNA1-JMZAH'
record-JMZAH_040.
perform bdc_field using 'KNA1-JMJAH'
record-JMJAH_041.
perform bdc_dynpro using 'SAPMF02D' '0130'.
perform bdc_field using 'BDC_CURSOR'
'KNBK-BANKN(01)'.
perform bdc_field using 'BDC_OKCODE'
'=ENTR'.
perform bdc_field using 'KNBK-BANKS(01)'
record-BANKS_01_042.
perform bdc_field using 'KNBK-BANKL(01)'
record-BANKL_01_043.
perform bdc_field using 'KNBK-BANKN(01)'
record-BANKN_01_044.
perform bdc_dynpro using 'SAPMF02D' '0130'.
perform bdc_field using 'BDC_CURSOR'
'KNBK-BANKS(01)'.
perform bdc_field using 'BDC_OKCODE'
'=ENTR'.
perform bdc_dynpro using 'SAPMF02D' '0340'.
perform bdc_field using 'BDC_CURSOR'
'KNVA-KNFAK(01)'.
perform bdc_field using 'BDC_OKCODE'
'=ENTR'.
perform bdc_field using 'KNVA-ABLAD(01)'
record-ABLAD_01_045.
perform bdc_field using 'KNVA-KNFAK(01)'
record-KNFAK_01_046.
perform bdc_dynpro using 'SAPMF02D' '0340'.
perform bdc_field using 'BDC_CURSOR'
'RF02D-KUNNR'.
perform bdc_field using 'BDC_OKCODE'
'=ENTR'.
perform bdc_dynpro using 'SAPMF02D' '0370'.
perform bdc_field using 'BDC_CURSOR'
'KNA1-CIVVE'.
perform bdc_field using 'BDC_OKCODE'
'=ENTR'.
perform bdc_field using 'KNA1-CIVVE'
record-CIVVE_047.
perform bdc_dynpro using 'SAPMF02D' '0360'.
perform bdc_field using 'BDC_CURSOR'
'KNVK-ABTNR(02)'.
perform bdc_field using 'BDC_OKCODE'
'=ENTR'.
perform bdc_field using 'KNVK-ANRED(01)'
record-ANRED_01_048.
perform bdc_field using 'KNVK-ANRED(02)'
record-ANRED_02_049.
perform bdc_field using 'KNVK-NAMEV(01)'
record-NAMEV_01_050.
perform bdc_field using 'KNVK-NAMEV(02)'
record-NAMEV_02_051.
perform bdc_field using 'KNVK-NAME1(01)'
record-NAME1_01_052.
perform bdc_field using 'KNVK-NAME1(02)'
record-NAME1_02_053.
perform bdc_field using 'KNVK-TELF1(01)'
record-TELF1_01_054.
perform bdc_field using 'KNVK-TELF1(02)'
record-TELF1_02_055.
perform bdc_field using 'KNVK-ABTNR(01)'
record-ABTNR_01_056.
perform bdc_field using 'KNVK-ABTNR(02)'
record-ABTNR_02_057.
perform bdc_dynpro using 'SAPMF02D' '0360'.
perform bdc_field using 'BDC_CURSOR'
'KNVK-NAMEV(01)'.
perform bdc_field using 'BDC_OKCODE'
'=ENTR'.
perform bdc_dynpro using 'SAPMF02D' '0210'.
perform bdc_field using 'BDC_CURSOR'
'KNB1-AKONT'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'KNB1-AKONT'
record-AKONT_058.
perform bdc_dynpro using 'SAPMF02D' '0215'.
perform bdc_field using 'BDC_CURSOR'
'KNB1-ZTERM'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'KNB1-ZTERM'
record-ZTERM_059.
perform bdc_dynpro using 'SAPMF02D' '0220'.
perform bdc_field using 'BDC_CURSOR'
'KNB5-MAHNA'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'KNB5-MAHNA'
record-MAHNA_060.
perform bdc_dynpro using 'SAPMF02D' '0230'.
perform bdc_field using 'BDC_CURSOR'
'KNB1-VRSNR'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_dynpro using 'SAPMF02D' '0310'.
perform bdc_field using 'BDC_CURSOR'
'KNVV-WAERS'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'KNVV-BZIRK'
record-BZIRK_061.
perform bdc_field using 'KNVV-AWAHR'
record-AWAHR_062.
perform bdc_field using 'KNVV-WAERS'
record-WAERS_063.
perform bdc_field using 'KNVV-KALKS'
record-KALKS_064.
perform bdc_dynpro using 'SAPMF02D' '0315'.
perform bdc_field using 'BDC_CURSOR'
'KNVV-LPRIO'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'KNVV-LPRIO'
record-LPRIO_065.
perform bdc_field using 'KNVV-KZAZU'
record-KZAZU_066.
perform bdc_field using 'KNVV-ANTLF'
record-ANTLF_067.
perform bdc_dynpro using 'SAPMF02D' '0320'.
perform bdc_field using 'BDC_CURSOR'
'KNVV-PERFK'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'KNVV-PERFK'
record-PERFK_068.
perform bdc_dynpro using 'SAPMF02D' '1350'.
perform bdc_field using 'BDC_CURSOR'
'RF02D-KUNNR'.
perform bdc_field using 'BDC_OKCODE'
'=ENTR'.
perform bdc_dynpro using 'SAPMF02D' '0324'.
perform bdc_field using 'BDC_CURSOR'
'KNVP-PARVW(01)'.
perform bdc_field using 'BDC_OKCODE'
'=ENTR'.
perform bdc_transaction using 'XD01'.
enddo.
perform close_group.
perform close_dataset using dataset.
gIRISH -
Help with Upgrade report in FI
Hey All Gurus,
Im in a thick soup here. I am trying to do something like this -
if you see the selection screen i have rep and super rep, when a user enters a rep value --- it should use the same value to pull all open items for the super rep as well, since they are essentially the same. please help! this one needs to be done fast. i am pasting the code so that it will be easier ...
thanks a million!
*& Report ZFDOFW04_NEW
REPORT ZFDOFW04_NEW MESSAGE-ID FR
LINE-SIZE 132
LINE-COUNT 60.
*==================================================================
Program: ZFDOFW03 - Aged Trial Balance Report
This produces an Accounts Receivable Past Due Aging Report
in a more simplified/condensed format than the
SAP supplied aging report program - RFDOPR10.
This program is a modified copy of RFDOFW00, - a SAP
Future-Due Report.
This was a 'rush' job - program probably should be
rewritten someday not using logical databases as that
maybe why this runs so slowly!
Original: Feb 1997.
MAINTENANCE HISTORY:
NES071797 Copied from ZFDOFW03. Adding parameter for saeles rep.
JDEDERER - changed header text so it is differnet from ZFDORW03. 9/23
*TEXT SYMBOLS :
001 Open items per
002 O p e n
003 D u e o n
004 cc ba in total
005 until
006 Days until
007 Days over
008 Days
009 over
011 valid until........
012 Insurance limit.....
016 F u t u r e
017 + days
018 D u e
020 Last dunn.notice...
021 Dunning level....
030 S U M M A R Y S H E E T
031 =====================
050 Name Page
051 Burton Snowboard
SELECTION TEXTS:
SUMMEN Output totals only
TAGE1 Due date I until
TAGE2 Due date II until
TAGE3 Due date III until
TAGE4 Due date IV until
TABLES: T001, KNA1, KNB1, KNB5, BSID, BSEGA, RFPDO1, KNVP,
T014, "credit control areas JAM
KNVK, "cust master - contact partner JAM
T014T, "Credit control areas names
BKPF, "TONY ISSUE 4743
TVKO, "TONY ISSUE 4743
KNKK. "cust master - credit mgmt JAM
TYPES: BEGIN OF TOT_TYPE, "DEVK939546
BUKRS LIKE LFB1-BUKRS, "DEVK939546
GSBER LIKE BSIK-GSBER, "DEVK939546
KKBER LIKE BSID-KKBER,
RAST1 TYPE P, "DEVK939546
RAST2 TYPE P, "DEVK939546
RAST3 TYPE P, "DEVK939546
RAST4 TYPE P, "DEVK939546
RAST5 TYPE P, "DEVK939546
RAST6 TYPE P, "DEVK939546
RAST7 TYPE P, "DEVK939546
END OF TOT_TYPE, "DEVK939546
TOT_TAB TYPE TOT_TYPE OCCURS 0. "DEVK939546
CONSTANTS:
C_FALSE TYPE I VALUE 0, "JAM
C_TRUE TYPE I VALUE 1.
DATA: BEGIN OF GTAB OCCURS 1000,
SUPER(10) TYPE C, "TONYC
REP(10) TYPE C, "TONYC
FILKD(10), "tonyc show buying groups
LAND1 LIKE KNA1-LAND1,
GSBER LIKE BSIK-GSBER,
REGIO LIKE KNA1-REGIO,
NAME1 LIKE KNA1-NAME1,
NAME2 LIKE KNA1-NAME2,
ORT01 LIKE KNA1-ORT01,
TELF1 LIKE KNVK-TELF1, "telephone number JAM
CONT_NAME1 LIKE KNVK-NAME1, "contact name JAM
NAMEV LIKE KNVK-NAMEV, "contact name JAM
KUNNR LIKE KNA1-KUNNR, "TONYC
BUKRS LIKE LFB1-BUKRS, "TONYC
KKBER LIKE BSID-KKBER, "tonyc issue #2500
ZTERM LIKE KNB1-ZTERM, "tonyc issue #2500
KLIMK_TXT(22) TYPE C, "credit limit JAM
WAERS LIKE T014-WAERS, "currency JAM
SORT_GSB, "TONYC
RAST1 TYPE P,
RAST2 TYPE P,
RAST3 TYPE P,
RAST4 TYPE P,
RAST5 TYPE P,
RAST6 TYPE P,
RAST7 TYPE P,
T_IND,
END OF GTAB.
DATA HOLD_NAME(40).
DATA HOLD_BUKRS LIKE T001-BUKRS. "tonyc
DATA GOOD_SUPER_REP. "tonyc
DATA: HOLD_REP LIKE KNA1-KUNNR, "tonyc
SUPER_NAME LIKE KNA1-NAME1, "tonyc
REP_NAME LIKE KNA1-NAME1. "tonyc
DATA NAME_LENGTH(2) TYPE C. "tonyc
DATA BACKSLASH(3) VALUE ' / '. "tonyc
DATA REPS_INFO(70) TYPE C. "tonyc
DATA REPORT_TYPE(12) TYPE C.
DATA: C_CREDIT_ABTNR LIKE KNVK-ABTNR. "dept 003 = credit
DATA Z_HOLD_LIMIT(22) TYPE N. "tonyc issue#2216
DATA Z_DESCRIPTION(18). "tonyc issue#2216
DATA WRITE_TOTAL.
DATA HOLD_KLIMK LIKE KNKK-KLIMK.
DATA HOLD_KLIMK2(22) TYPE C.
DATA HOLD-CTLPC LIKE KNKK-CTLPC.
DATA HOLD-CTLPC-TEXT LIKE T691T-RTEXT.
DATA HOLD_ZTERM LIKE KNVV-ZTERM.
DATA TOTAL_RAST7 TYPE P.
DATA TOTAL_RAST2 TYPE P.
DATA TOTAL_RAST3 TYPE P.
DATA TOTAL_RAST4 TYPE P.
DATA TOTAL_RAST5 TYPE P.
DATA TOTAL_RAST6 TYPE P.
DATA TOTAL_RAST1 TYPE P.
DATA HOLD_BUKRS2 LIKE T001-BUKRS.
DATA HOLD_KKBER LIKE BSID-KKBER.
DATA HOLD_KKBER_DESC LIKE T014T-KKBTX.
DATA HOLD_KKBER_DESC2 LIKE T014T-KKBTX.
DATA HOLD_KUNNR2 LIKE KNA1-KUNNR.
DATA L_FIRST_DAY_OF_FISCAL LIKE SY-DATUM. "tonyc issue #3047
DATA: STAB TYPE TOT_TAB WITH HEADER LINE, "DEVK939546
RTOT TYPE TOT_TAB WITH HEADER LINE, "DEVK939546
STOT TYPE TOT_TAB WITH HEADER LINE, "DEVK939546
OP,
MAXMANDT LIKE DD_STIDA,
MAXMANST TYPE P,
SUMKLIMB TYPE P,
SUMVLIBB TYPE P,
VERZUG TYPE P,
OBAD TYPE P,
BLOCK_CNT TYPE P,
INTENS,
ONEBYTE(1) TYPE C,
TAGE1A LIKE RFPDO1-ALLGFAEL,
TAGE2A LIKE RFPDO1-ALLGFAEL,
TAGE3A LIKE RFPDO1-ALLGFAEL,
HOLD_KUNNR LIKE KNA1-KUNNR, "tonyc
HOLD_SUPER LIKE KNA1-KUNNR, "tonyc
HOLD_REP2 LIKE KNA1-KUNNR, "tonyc
SUPER_REP LIKE KNA1-KUNNR, "tonyc
TEMP_TELF1 LIKE KNA1-TELF1, "JAM
IT_T014 LIKE T014 OCCURS 0 WITH HEADER LINE, "JAM
G_KLIMK_TXT LIKE GTAB-KLIMK_TXT, "JAM
G_WAERS LIKE GTAB-WAERS, "JAM
G_CONT_NAME(50) TYPE C. "JA
DATA FILL_REP_INFO.
BC SUNILP 05/14/2007
DATA: BEGIN OF ITAB_VBRP OCCURS 0.
INCLUDE STRUCTURE VBRP.
DATA: END OF ITAB_VBRP.
DATA: T_PERC TYPE F,
SUM_NETWR LIKE VBRP-NETWR.
*DATA: GTAB_LINES LIKE GTAB OCCURS 0 WITH HEADER LINE.
DATA: BEGIN OF GTAB_LINES OCCURS 0.
INCLUDE STRUCTURE GTAB.
DATA: IND(1),
OBAD TYPE P.
DATA: END OF GTAB_LINES.
DATA: BEGIN OF ITAB_VBRP1 OCCURS 0,
VBELN LIKE VBRP-VBELN,
NETWR LIKE VBRP-NETWR,
ZZMREP LIKE VBRP-ZZMREP, "Super Rep
ZZLREP LIKE VBRP-ZZLREP, "Rep
PERC TYPE F,
END OF ITAB_VBRP1.
EC SUNILP 05/14/2007
BEGIN_OF_BLOCK 2.
PARAMETERS: REGIO LIKE KNA1-REGIO.
PARAMETERS: CONSOL AS CHECKBOX. "TONYC
PARAMETERS: P_KKBER AS CHECKBOX, "TONYC
P_CONV AS CHECKBOX. "tonyc issue #3047
PARAMETERS: SUMMEN LIKE RFPDO1-ALLGSUMM,
TAGE1 LIKE RFPDO1-ALLGFAEL DEFAULT '30',
TAGE2 LIKE RFPDO1-ALLGFAEL DEFAULT '60',
TAGE3 LIKE RFPDO1-ALLGFAEL DEFAULT '90',
TAGE4 LIKE RFPDO1-ALLGFAEL DEFAULT '120'.
END_OF_BLOCK 2.
BEGIN_OF_BLOCK 3.
SELECT-OPTIONS: P_SUPREP FOR KNVP-KUNNR, "Super REP "DEVK939546
P_REP FOR KNVP-KUNNR, "SALES REP "DEVK939546
P_VKORG FOR TVKO-VKORG, "TONYC ISSUE 4743
P_LOTKZ FOR BKPF-LOTKZ. "TONYC ISSUE 4743
END_OF_BLOCK 3.
INITIALIZATION. "JAM
PERFORM LOAD_T014. "JAM
refresh dd_augdt.
clear dd_augdt.
dd_augdt-option = 'EQ'.
dd_augdt-sign = 'I'.
dd_augdt-low = ' '.
append dd_augdt.
AT SELECTION-SCREEN.
IF CONSOL = 'X'.
IF NOT P_SUPREP[] IS INITIAL. "DEVK939546
MESSAGE E999 WITH 'Consolidated report not allowed w/ Super Rep'.
ENDIF.
ENDIF.
CHECK IF THE REP INFO IS ADDED OR NOT - VS
IF NOT P_SUPREP IS INITIAL OR"TONY ISSUE 4743
NOT P_REP IS INITIAL."TONY ISSUE 4743
FILL_REP_INFO = 'X'."TONY ISSUE 4743
ENDIF."TONY ISSUE 4743
START-OF-SELECTION.
get_frame_title 2.
add function module to track usage JD 10/13/98 *****
CALL FUNCTION 'Z_RUN_LOG'
EXCEPTIONS
OTHERS = 1.
*IF NOT P_SUPREP IS INITIAL AND NOT P_REP IS INITIAL.
P_SUPREP = ' '.
*ENDIF.
GET KNA1 FIELDS LAND1 REGIO KUNNR NAME1 NAME2 ORT01 TELF1. "JAM
new-page.
skip.
TEMP_TELF1 = KNA1-TELF1.
MAXMANDT = '19000101'.
MAXMANST = 0.
SUMVLIBB = 0.
PERFORM GET_CUST_CONTACT. "JAM
Check sales rep- NES071797
Get any valid record and exit.
IF NOT p_suprep[] IS INITIAL. "DEVK939546 "TONY ISSUE 4743 start
good_super_rep = ' '.
SELECT kunn2 INTO super_rep FROM knvp UP TO 1 ROWS
WHERE
kunnr = kna1-kunnr AND
parvw = 'ZS' AND
kunn2 IN p_suprep.
EXIT.
ENDSELECT.
IF sy-subrc = 0.
good_super_rep = 'X'.
gtab-super = super_rep.
super_rep = ' '.
ENDIF.
CHECK good_super_rep = 'X'.
SELECT kunn2 INTO gtab-rep FROM knvp UP TO 1 ROWS
WHERE
kunnr = kna1-kunnr AND
parvw = 'ZR' AND
kunn2 IN p_rep.
EXIT.
ENDSELECT.
CHECK sy-subrc = 0.
ELSEIF NOT p_rep[] IS INITIAL. "DEVK939546
SELECT kunn2 INTO gtab-rep FROM knvp UP TO 1 ROWS
WHERE
kunnr = kna1-kunnr AND
parvw = 'ZR' AND
kunn2 IN p_rep.
EXIT.
ENDSELECT.
CHECK sy-subrc = 0.
ENDIF. "TONY ISSUE 4743 end
GET KNB1 FIELDS BUKRS VLIBB ZTERM. "tonyc #2500
GTAB-BUKRS = KNB1-BUKRS.
GTAB-ZTERM = KNB1-ZTERM.
SUMVLIBB = SUMVLIBB + KNB1-VLIBB.
GET KNB5.
IF KNB5-MADAT > MAXMANDT.
MAXMANDT = KNB5-MADAT.
ENDIF.
IF KNB5-MAHNS > MAXMANST.
MAXMANST = KNB5-MAHNS.
ENDIF.
SUMKLIMB = SUMKLIMB + KLIMB.
GET BSID.
CHECK BSID-BSTAT = SPACE.
field was intended for Business Area, changed to use Currency
GTAB-GSBER = BSID-WAERS.
IF P_KKBER = 'X'. "TONYC ISSUE #2500
IF BSID-KKBER = ' '.
GTAB-KKBER = BSID-BUKRS.
ELSE.
GTAB-KKBER = BSID-KKBER. "TONYC ISSUE #2500
ENDIF.
ENDIF. "TONYC ISSUE #2500
SELECT SINGLE * FROM BKPF "TONY ISSUE 4743
WHERE BUKRS = BSID-BUKRS "TONY ISSUE 4743
AND BELNR = BSID-BELNR "TONY ISSUE 4743
AND GJAHR = BSID-GJAHR. "TONY ISSUE 4743
BC SUNILP 05/14/2007
IF BKPF-XREF2_HD IS NOT INITIAL.
CHECK BKPF-XREF2_HD IN P_SUPREP. "TONY ISSUE 4743
ELSE.
IF P_REP[] IS INITIAL.
REFRESH: ITAB_VBRP, ITAB_VBRP1.
IF NOT BKPF-XBLNR IS INITIAL.
SELECT * FROM VBRP INTO ITAB_VBRP WHERE VBELN = BKPF-XBLNR.
APPEND ITAB_VBRP. CLEAR ITAB_VBRP.
ENDSELECT.
CHECK ITAB_VBRP[] IS NOT INITIAL.
CLEAR: SUM_NETWR.
LOOP AT ITAB_VBRP.
CHECK ITAB_VBRP-ZZMREP IN P_SUPREP.
CHECK ITAB_VBRP-ZZLREP IN P_REP.
MOVE-CORRESPONDING ITAB_VBRP TO ITAB_VBRP1.
COLLECT: ITAB_VBRP1.
SUM_NETWR = SUM_NETWR + ITAB_VBRP-NETWR.
CLEAR ITAB_VBRP.
ENDLOOP.
CHECK ITAB_VBRP1[] IS NOT INITIAL.
LOOP AT ITAB_VBRP1.
CLEAR: T_PERC.
T_PERC = ( ITAB_VBRP1-NETWR / SUM_NETWR ).
ITAB_VBRP1-PERC = T_PERC.
MODIFY ITAB_VBRP1 INDEX SY-TABIX TRANSPORTING PERC.
ENDLOOP.
ENDIF.
ENDIF.
ENDIF.
EC SUNILP 05/14/2007
IF FILL_REP_INFO = 'X'.
GTAB-SUPER = BKPF-XREF2_HD. "TONY ISSUE 4743 "MOVE THE CONTENTS OF XREF2_HD TO GTAB INTERNAL TABLE - VS
ENDIF.
BC SUNILP 05/14/2007
IF BKPF-XREF1_HD IS NOT INITIAL.
CHECK BKPF-XREF1_HD IN P_REP. "TONY ISSUE 4743 " ELSE MOVE THE CONTENTS OF - VS
ELSE.
REFRESH: ITAB_VBRP, ITAB_VBRP1.
IF NOT BKPF-XBLNR IS INITIAL.
SELECT * FROM VBRP INTO ITAB_VBRP WHERE VBELN = BKPF-XBLNR.
APPEND ITAB_VBRP. CLEAR ITAB_VBRP.
ENDSELECT.
CHECK ITAB_VBRP[] IS NOT INITIAL.
CLEAR: SUM_NETWR.
LOOP AT ITAB_VBRP.
CHECK ITAB_VBRP-ZZMREP IN P_SUPREP.
CHECK ITAB_VBRP-ZZLREP IN P_REP.
MOVE-CORRESPONDING ITAB_VBRP TO ITAB_VBRP1.
COLLECT: ITAB_VBRP1.
SUM_NETWR = SUM_NETWR + ITAB_VBRP-NETWR.
CLEAR ITAB_VBRP.
ENDLOOP.
CHECK ITAB_VBRP1[] IS NOT INITIAL.
LOOP AT ITAB_VBRP1.
CLEAR: T_PERC.
T_PERC = ( ITAB_VBRP1-NETWR / SUM_NETWR ).
ITAB_VBRP1-PERC = T_PERC.
MODIFY ITAB_VBRP1 INDEX SY-TABIX TRANSPORTING PERC.
ENDLOOP.
ENDIF.
ENDIF.
EC SUNILP 05/14/2007
IF FILL_REP_INFO = 'X'.
GTAB-REP = BKPF-XREF1_HD. "TONY ISSUE 4743
ENDIF.
CHECK BKPF-LOTKZ IN P_LOTKZ. "TONY ISSUE 4743
CHECK BKPF-BRNCH IN P_VKORG. "TONY ISSUE 4743
SELECT SINGLE FILKD INTO GTAB-FILKD FROM BSEG
WHERE BUKRS = BSID-BUKRS
AND BELNR = BSID-BELNR
AND GJAHR = BSID-GJAHR
AND BUZEI = BSID-BUZEI.
gtab-gsber = bsid-gsber.
get rep info for each bsid record
IF NOT P_SUPREP IS INITIAL. "tonyc
SELECT KUNNR FROM VBPA INTO HOLD_REP UP TO 1 ROWS "tonyc
WHERE VBELN = BSID-VBELN "tonyc
AND PARVW = 'ZR'. "tonyc
ENDSELECT. "tonyc
IF NOT P_REP IS INITIAL. "tonyc
CHECK HOLD_REP = P_REP. "tonyc
ENDIF. "tonyc
GTAB-REP = HOLD_REP. "tonyc
HOLD_REP = ' '. "tonyc
ENDIF. "tonyc
PERFORM GET_KNKK_INFO. "JAM
GTAB-KLIMK_TXT = G_KLIMK_TXT.
GTAB-WAERS = G_WAERS.
GTAB-LAND1 = KNA1-LAND1.
GTAB-REGIO = KNA1-REGIO.
GTAB-KUNNR = KNA1-KUNNR.
GTAB-NAME1 = KNA1-NAME1.
GTAB-NAME2 = KNA1-NAME2.
GTAB-ORT01 = KNA1-ORT01.
*if there is no phone number for the contact, pull the phone
*number from the sold-to
IF KNVK-TELF1 = ' '.
GTAB-TELF1 = TEMP_TELF1.
ELSE.
GTAB-TELF1 = KNVK-TELF1. "JAM
ENDIF.
GTAB-CONT_NAME1 = KNVK-NAME1.
GTAB-NAMEV = KNVK-NAMEV.
verzug = bsega-netdt - dd_stida.
VERZUG = DD_STIDA - BSEGA-NETDT. "days past due calculation
OP = 'X'.
GTAB-RAST2 = GTAB-RAST3 = GTAB-RAST4 = 0.
GTAB-RAST5 = GTAB-RAST6 = OBAD = GTAB-RAST7 = 0.
IF VERZUG LE 0. "future due
GTAB-RAST1 = BSEGA-WRSHB.
ELSE.
IF VERZUG LE TAGE1. "past due 1 to tage1 days
GTAB-RAST1 = BSEGA-WRSHB.
GTAB-RAST2 = BSEGA-WRSHB.
OBAD = BSEGA-WRSHB.
ELSE.
IF VERZUG LE TAGE2. "past due tage1 to tage2 days
GTAB-RAST1 = BSEGA-WRSHB.
GTAB-RAST3 = BSEGA-WRSHB.
OBAD = BSEGA-WRSHB.
ELSE.
IF VERZUG LE TAGE3. "past due tage2 to tage3 days
GTAB-RAST1 = BSEGA-WRSHB.
GTAB-RAST4 = BSEGA-WRSHB.
OBAD = BSEGA-WRSHB.
ELSE.
IF VERZUG LE TAGE4. "past due tage3 to tage4 days
GTAB-RAST1 = BSEGA-WRSHB.
GTAB-RAST5 = BSEGA-WRSHB.
OBAD = BSEGA-WRSHB.
ELSE.
IF VERZUG GT TAGE4. "past due > tage4 days
GTAB-RAST1 = BSEGA-WRSHB.
GTAB-RAST6 = BSEGA-WRSHB.
OBAD = BSEGA-WRSHB.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
GTAB-RAST7 = GTAB-RAST1 - OBAD.
stab = gtab.
MOVE-CORRESPONDING GTAB TO STAB.
BC SUNILP 05/15/2007
IF ITAB_VBRP1[] IS NOT INITIAL.
GTAB-T_IND = 'X'.
LOOP AT ITAB_VBRP1.
MOVE-CORRESPONDING GTAB TO GTAB_LINES.
GTAB_LINES-SORT_GSB = '1'.
GTAB_LINES-SUPER = ITAB_VBRP1-ZZMREP.
GTAB_LINES-REP = ITAB_VBRP1-ZZLREP.
GTAB_LINES-RAST1 = GTAB_LINES-RAST1 * ITAB_VBRP1-PERC.
GTAB_LINES-RAST2 = GTAB_LINES-RAST2 * ITAB_VBRP1-PERC.
GTAB_LINES-RAST3 = GTAB_LINES-RAST3 * ITAB_VBRP1-PERC.
GTAB_LINES-RAST4 = GTAB_LINES-RAST4 * ITAB_VBRP1-PERC.
GTAB_LINES-RAST5 = GTAB_LINES-RAST5 * ITAB_VBRP1-PERC.
GTAB_LINES-RAST6 = GTAB_LINES-RAST6 * ITAB_VBRP1-PERC.
GTAB_LINES-RAST7 = GTAB_LINES-RAST7 * ITAB_VBRP1-PERC.
GTAB_LINES-OBAD = GTAB_LINES-OBAD * ITAB_VBRP1-PERC.
COLLECT: GTAB_LINES.
ENDLOOP.
ELSE.
MOVE-CORRESPONDING GTAB TO GTAB_LINES.
GTAB_LINES-T_IND = 'X'.
GTAB_LINES-SORT_GSB = '1'.
IF GTAB_LINES-SUPER IN P_SUPREP OR GTAB_LINES-REP IN P_REP.
COLLECT: GTAB_LINES.
ENDIF.
ENDIF.
EC SUNILP 05/15/2007
gtab-sort_gsb = stab-sort_gsb = '0'.
collect: gtab, stab.
gtab-gsber = stab-gsber = '****'.
GTAB-SORT_GSB = '1'.
IF REGIO = SPACE OR REGIO = GTAB-REGIO.
IF GTAB_LINES-SUPER IN P_SUPREP OR GTAB_LINES-REP IN P_REP.
COLLECT: GTAB, STAB.
ENDIF.
ENDIF.
END-OF-SELECTION.
TAGE1A = TAGE1 + 1.
TAGE2A = TAGE2 + 1.
TAGE3A = TAGE3 + 1.
IF SUMMEN = ' '.
sort gtab by bukrs land1 regio kunnr gsber sort_gsb.
sort gtab by bukrs land1 regio name1 kunnr gsber sort_gsb. "JAM
IF CONSOL = 'X'.
SORT GTAB BY LAND1 REGIO NAME1 KUNNR BUKRS KKBER GSBER SORT_GSB.
"TONYC
REPORT_TYPE = 'consolidated'.
ELSEIF NOT P_SUPREP[] IS INITIAL. "DEVK939546
SORT GTAB
BY SUPER REP NAME1 BUKRS KKBER LAND1 REGIO NAME1 GSBER SORT_GSB.
BC SUNILP 05/15/2007
SORT GTAB_LINES
BY SUPER REP NAME1 BUKRS KKBER LAND1 REGIO NAME1 GSBER SORT_GSB.
EC SUNILP 05/15/2007
REPORT_TYPE = 'super rep'.
CLEAR STAB. "tonyc 03/06/2004
REFRESH STAB. "tonyc 03/06/2004
ELSEIF NOT P_REP[] IS INITIAL. "DEVK939546
SORT GTAB "DEVK939546
BY REP NAME1 BUKRS KKBER LAND1 REGIO NAME1 GSBER SORT_GSB.
"DEVK939546
BC SUNILP 05/15/2007
SORT GTAB_LINES
BY REP NAME1 BUKRS KKBER LAND1 REGIO NAME1 GSBER SORT_GSB.
EC SUNILP 05/15/2007
REPORT_TYPE = 'rep'. "DEVK939546
CLEAR STAB. "tonyc 03/06/2004
REFRESH STAB. "tonyc 03/06/2004
ELSE.
SORT GTAB BY BUKRS KKBER LAND1 REGIO NAME1 KUNNR GSBER SORT_GSB.
BC SUNILP 05/15/2007
SORT GTAB_LINES BY BUKRS KKBER LAND1 REGIO NAME1 KUNNR GSBER SORT_GSB.
EC SUNILP 05/15/2007
REPORT_TYPE = 'regular'.
ENDIF.
BC SUNILP 05/15/2007
DELETE ADJACENT DUPLICATES FROM GTAB COMPARING BUKRS NAME1.
LOOP AT GTAB_LINES.
IF P_REP[] IS INITIAL.
IF GTAB_LINES-SUPER NOT IN P_SUPREP.
DELETE GTAB_LINES.
ENDIF.
ELSE.
IF GTAB_LINES-SUPER NOT IN P_SUPREP OR GTAB_LINES-REP NOT IN P_REP.
DELETE GTAB_LINES.
ENDIF.
ENDIF.
ENDLOOP.
LOOP AT GTAB.
READ TABLE GTAB_LINES WITH KEY BUKRS = GTAB-BUKRS
NAME1 = GTAB-NAME1.
IF SY-SUBRC NE '0'.
DELETE GTAB.
ENDIF.
ENDLOOP.
EC SUNILP 05/15/2007
LOOP AT GTAB.
MOVE GTAB-BUKRS TO T001-BUKRS. READ TABLE T001.
RESERVE 5 LINES.
CASE REPORT_TYPE.
WHEN 'regular'.
IF HOLD_BUKRS <> GTAB-BUKRS.
IF SY-TABIX > 1. "TONYC
NEW-PAGE. SKIP. "TONYC
ENDIF. "TONYC
ENDIF.
PERFORM WRITE_CUST_INFO. "TONYC
PERFORM WRITE_DETAIL.
hold_bukrs = gtab-bukrs. "tonyc
WHEN 'consolidated'.
IF HOLD_KUNNR <> GTAB-KUNNR. "TONYC
PERFORM WRITE_CUST_INFO. "TONYC
ENDIF. "TONYC
HOLD_KUNNR = GTAB-KUNNR. "TONYC
PERFORM WRITE_DETAIL.
WHEN 'super rep'.
IF GTAB-T_IND NE 'X'.
BC SUNILP 05/22/2007
READ TABLE GTAB_LINES WITH KEY BUKRS = GTAB-BUKRS
NAME1 = GTAB-NAME1.
EC SUNILP 05/22/2007
IF ( HOLD_SUPER <> GTAB_LINES-SUPER ) OR
( HOLD_REP2 <> GTAB_LINES-REP ).
NEW-PAGE.
PERFORM GET_AND_WRITE_SUPERINFO.
ENDIF.
HOLD_REP2 = GTAB_LINES-REP.
HOLD_SUPER = GTAB_LINES-SUPER.
IF HOLD_KUNNR <> GTAB-KUNNR. "TONYC
WRITE :/. "TONYC
ULINE. "TONYC
PERFORM WRITE_CUST_INFO. "TONYC
ENDIF. "TONYC
HOLD_KUNNR = GTAB-KUNNR. "TONYC
PERFORM WRITE_DETAIL. "TONYC
AT END OF REP. "DEVK939546
SKIP. "DEVK939546
RESERVE 7 LINES. "DEVK939546
FORMAT COLOR COL_TOTAL INTENSIFIED. "DEVK939546
WRITE: / 'Summary for Rep:', "DEVK939546
GTAB-REP, '/', REP_NAME, 132 ONEBYTE."DEVK939546
PERFORM WRITE_TOTS TABLES RTOT. "DEVK939546
REFRESH RTOT. "DEVK939546
ENDAT. "DEVK939546
AT END OF SUPER. "DEVK939546
CLEAR STAB. "tonyc 03/06/2004
REFRESH STAB. "tonyc 03/06/2004
NEW-PAGE. SKIP. "DEVK939546
FORMAT COLOR COL_TOTAL INTENSIFIED. "DEVK939546
WRITE: / 'Summary for Super Rep:', "DEVK939546
GTAB-SUPER, '/', SUPER_NAME, 132 ONEBYTE."DEVK939546
PERFORM WRITE_TOTS TABLES STOT. "DEVK939546
REFRESH STOT. "DEVK939546
ENDAT. "DEVK939546
ELSE.
LOOP AT GTAB_LINES WHERE BUKRS = GTAB-BUKRS
AND NAME1 = GTAB-NAME1.
IF ( HOLD_SUPER <> GTAB_LINES-SUPER ) OR
( HOLD_REP2 <> GTAB_LINES-REP ).
NEW-PAGE.
PERFORM GET_AND_WRITE_SUPERINFO.
ENDIF.
HOLD_REP2 = GTAB_LINES-REP.
HOLD_SUPER = GTAB_LINES-SUPER.
IF HOLD_KUNNR <> GTAB_LINES-KUNNR.
WRITE :/.
ULINE.
PERFORM WRITE_CUST_INFO.
ENDIF.
HOLD_KUNNR = GTAB_LINES-KUNNR.
PERFORM WRITE_DETAIL.
AT END OF REP.
SKIP.
RESERVE 7 LINES.
FORMAT COLOR COL_TOTAL INTENSIFIED.
WRITE: / 'Summary for Rep:',
GTAB_LINES-REP, '/', REP_NAME, 132 ONEBYTE.
PERFORM WRITE_TOTS TABLES RTOT.
REFRESH RTOT.
ENDAT.
AT END OF SUPER.
CLEAR STAB. "tonyc 03/06/2004
REFRESH STAB. "tonyc 03/06/2004
NEW-PAGE. SKIP.
FORMAT COLOR COL_TOTAL INTENSIFIED.
WRITE: / 'Summary for Super Rep:',
GTAB_LINES-SUPER, '/', SUPER_NAME, 132 ONEBYTE.
PERFORM WRITE_TOTS TABLES STOT.
REFRESH STOT.
ENDAT.
ENDLOOP.
ENDIF.
WHEN 'rep'. "DEVK939546
LOOP AT GTAB_LINES WHERE BUKRS = GTAB-BUKRS
AND NAME1 = GTAB-NAME1.
IF HOLD_REP2 <> GTAB_LINES-REP. "DEVK939546
NEW-PAGE. "DEVK939546
PERFORM GET_AND_WRITE_REPINFO. "DEVK939546
ENDIF. "DEVK939546
HOLD_REP2 = GTAB_LINES-REP. "DEVK939546
IF HOLD_KUNNR <> GTAB_LINES-KUNNR. "DEVK939546
WRITE :/. "DEVK939546
ULINE. "DEVK939546
PERFORM WRITE_CUST_INFO. "DEVK939546
ENDIF. "DEVK939546
HOLD_KUNNR = GTAB_LINES-KUNNR. "DEVK939546
PERFORM WRITE_DETAIL. "DEVK939546
AT END OF REP. "DEVK939546
SKIP. "DEVK939546
RESERVE 7 LINES. "DEVK939546
FORMAT COLOR COL_TOTAL INTENSIFIED. "DEVK939546
WRITE: / 'Summary for Rep:', "DEVK939546
GTAB_LINES-REP, '/', REP_NAME, 132 ONEBYTE."DEVK939546
PERFORM WRITE_TOTS TABLES RTOT. "DEVK939546
REFRESH RTOT. "DEVK939546
ENDAT. "DEVK939546
ENDLOOP.
ENDCASE.
ENDLOOP.
ENDIF.
OP = ' '.
REFRESH GTAB.
IF NOT REPORT_TYPE = 'super rep'.
ULINE.
ENDIF.
SKIP 1.
IF SUMMEN = ' '. "if 'output totals only' bypass new-page
NEW-PAGE. SKIP.
ENDIF.
WRITE: /25 TEXT-030, 132 ONEBYTE, /25 TEXT-031, 132 ONEBYTE.
PERFORM WRITE_TOTS TABLES STAB. "DEVK939546
TOP-OF-PAGE.
INTENS = SPACE.
FORMAT COLOR COL_HEADING INTENSIFIED ON.
WRITE: / SY-VLINE, 1 TEXT-001, DD_STIDA, 75 TEXT-051, 132 SY-VLINE.
ULINE.
WRITE: / SY-VLINE, 13 SY-VLINE, 30 SY-VLINE,
47 SY-VLINE, 58 TEXT-003, 81 SY-VLINE,
92 TEXT-003, 115 SY-VLINE, 118 TEXT-003, 132 SY-VLINE,
/ SY-VLINE, 02 TEXT-004, 13 SY-VLINE, TEXT-002,
30 SY-VLINE, 32 TEXT-018, 47 SY-VLINE,
50 '1', 54 TEXT-040, 57 TAGE1, 64 SY-VLINE, " 65 tage2,
67 TAGE1A, 72 TEXT-040, 75 TAGE2,
81 SY-VLINE, 83 TAGE2A, 89 TEXT-040, 91 TAGE3, 98 SY-VLINE,
101 TAGE3A, 107 TEXT-040, 110 TAGE4, 115 SY-VLINE,
117 TAGE4, 123 TEXT-017, 132 SY-VLINE.
ULINE.
SKIP 1.
SUMMARY.
FORMAT COLOR COL_HEADING INTENSIFIED OFF.
FORM write_tots *
--> PTAB *
FORM WRITE_TOTS TABLES PTAB TYPE TOT_TAB. "DEVK939546
CLEAR INTENS. "DEVK939546
FORMAT COLOR COL_HEADING INTENSIFIED OFF. "DEVK939546
IF P_CONV = 'X'. "tonyc issue #3047 begin
WRITE /4 TEXT-101.
WRITE: /4 TEXT-102,
50 TEXT-100.
ENDIF. "tonyc issue #3047 end
ULINE. "DEVK939546
SORT PTAB BY BUKRS GSBER. "DEVK939546
LOOP AT PTAB. "DEVK939546
IF SY-TABIX > 1.
WRITE_TOTAL = 'X'.
ENDIF.
MOVE PTAB-BUKRS TO T001-BUKRS. READ TABLE T001. "DEVK939546
MOVE PTAB-GSBER TO T001-WAERS. "DEVK939546
IF P_CONV = 'X'. "tonyc issue #3047 begin
PERFORM CONVERT_VALUES USING STAB-RAST1
STAB-GSBER.
PERFORM CONVERT_VALUES USING STAB-RAST2
STAB-GSBER.
PERFORM CONVERT_VALUES USING STAB-RAST3
STAB-GSBER.
PERFORM CONVERT_VALUES USING STAB-RAST4
STAB-GSBER.
PERFORM CONVERT_VALUES USING STAB-RAST5
STAB-GSBER.
PERFORM CONVERT_VALUES USING STAB-RAST6
STAB-GSBER.
PERFORM CONVERT_VALUES USING STAB-RAST7
STAB-GSBER.
ENDIF. "TOnyc issue #3047 end
MOVE-CORRESPONDING PTAB TO STAB.
COLLECT STAB.
IF P_KKBER = 'X'. "TONYC ISSUE #2500
CLEAR HOLD_KKBER_DESC2.
SELECT SINGLE KKBTX INTO HOLD_KKBER_DESC2 FROM T014T
WHERE KKBER = STAB-KKBER AND
SPRAS = 'E'.
IF SY-SUBRC <> '0'.
HOLD_KKBER_DESC2 = 'Undetermined'.
ENDIF.
FORMAT COLOR OFF.
WRITE: / SY-VLINE.
FORMAT COLOR COL_HEADING INTENSIFIED OFF.
WRITE: 6 STAB-GSBER, HOLD_KKBER_DESC2, SY-VLINE.
ULINE.
FORMAT COLOR OFF.
WRITE: / SY-VLINE.
FORMAT COLOR COL_HEADING INTENSIFIED OFF.
IF P_CONV = 'X'. "tonyc issue #3047 begin
T001-WAERS = 'USD'.
ENDIF. "tonyc issue #3047 end
WRITE: 13 STAB-RAST1 NO-ZERO CURRENCY T001-WAERS, SY-VLINE,
(14) STAB-RAST7 NO-ZERO CURRENCY T001-WAERS, SY-VLINE,
(14) STAB-RAST2 NO-ZERO CURRENCY T001-WAERS, SY-VLINE,
(14) STAB-RAST3 NO-ZERO CURRENCY T001-WAERS, SY-VLINE,
(14) STAB-RAST4 NO-ZERO CURRENCY T001-WAERS, SY-VLINE,
(14) STAB-RAST5 NO-ZERO CURRENCY T001-WAERS, SY-VLINE,
(14) STAB-RAST6 NO-ZERO CURRENCY T001-WAERS, SY-VLINE.
HOLD_BUKRS2 = STAB-BUKRS. "TONYC ISSUE #2500
ULINE.
FORMAT COLOR OFF.
TOTAL_RAST1 = STAB-RAST1 + TOTAL_RAST1.
TOTAL_RAST2 = STAB-RAST2 + TOTAL_RAST2.
TOTAL_RAST3 = STAB-RAST3 + TOTAL_RAST3.
TOTAL_RAST4 = STAB-RAST4 + TOTAL_RAST4.
TOTAL_RAST5 = STAB-RAST5 + TOTAL_RAST5.
TOTAL_RAST6 = STAB-RAST6 + TOTAL_RAST6.
TOTAL_RAST7 = STAB-RAST7 + TOTAL_RAST7.
ELSE.
FORMAT COLOR COL_NORMAL INTENSIFIED OFF. "DEVK939546
IF INTENS = SPACE. "DEVK939546
FORMAT COLOR COL_NORMAL INTENSIFIED OFF. "DEVK939546
INTENS = 'X'. "DEVK939546
ELSE. "DEVK939546
FORMAT COLOR COL_NORMAL INTENSIFIED ON. "DEVK939546
INTENS = SPACE. "DEVK939546
ENDIF. "DEVK939546
WRITE: / SY-VLINE, PTAB-BUKRS, PTAB-GSBER, SY-VLINE, "DEVK939546
(14) PTAB-RAST1 NO-ZERO CURRENCY T001-WAERS, SY-VLINE,"DEVK939546
(14) PTAB-RAST7 NO-ZERO CURRENCY T001-WAERS, SY-VLINE,"DEVK939546
(14) PTAB-RAST2 NO-ZERO CURRENCY T001-WAERS, SY-VLINE,"DEVK939546
(14) PTAB-RAST3 NO-ZERO CURRENCY T001-WAERS, SY-VLINE,"DEVK939546
(14) PTAB-RAST4 NO-ZERO CURRENCY T001-WAERS, SY-VLINE,"DEVK939546
(14) PTAB-RAST5 NO-ZERO CURRENCY T001-WAERS, SY-VLINE,"DEVK939546
(14) PTAB-RAST6 NO-ZERO CURRENCY T001-WAERS, SY-VLINE."DEVK939546
TOTAL_RAST1 = STAB-RAST1 + TOTAL_RAST1.
TOTAL_RAST2 = STAB-RAST2 + TOTAL_RAST2.
TOTAL_RAST3 = STAB-RAST3 + TOTAL_RAST3.
TOTAL_RAST4 = STAB-RAST4 + TOTAL_RAST4.
TOTAL_RAST5 = STAB-RAST5 + TOTAL_RAST5.
TOTAL_RAST6 = STAB-RAST6 + TOTAL_RAST6.
TOTAL_RAST7 = STAB-RAST7 + TOTAL_RAST7.
ENDIF.
ENDLOOP. "DEVK939546
ULINE. "DEVK939546
IF P_KKBER = 'X'. "TONYC ISSUE #2500
IF P_CONV = 'X'. "tonyc issue #3047 begin
FORMAT COLOR OFF.
FORMAT COLOR COL_HEADING INTENSIFIED OFF.
WRITE: SY-VLINE,
6 'TOTAL ', SY-VLINE.
ULINE.
FORMAT COLOR OFF.
WRITE: / SY-VLINE.
FORMAT COLOR COL_HEADING INTENSIFIED OFF.
WRITE: 13 TOTAL_RAST1 NO-ZERO CURRENCY T001-WAERS, SY-VLINE,
(14) TOTAL_RAST7 NO-ZERO CURRENCY T001-WAERS, SY-VLINE,
(14) TOTAL_RAST2 NO-ZERO CURRENCY T001-WAERS, SY-VLINE,
(14) TOTAL_RAST3 NO-ZERO CURRENCY T001-WAERS, SY-VLINE,
(14) TOTAL_RAST4 NO-ZERO CURRENCY T001-WAERS, SY-VLINE,
(14) TOTAL_RAST5 NO-ZERO CURRENCY T001-WAERS, SY-VLINE,
(14) TOTAL_RAST6 NO-ZERO CURRENCY T001-WAERS, SY-VLINE.
ULINE.
ENDIF. "tonyc issue #3047 end
ELSE.
IF P_CONV = 'X'.
FORMAT COLOR OFF.
FORMAT COLOR COL_HEADING INTENSIFIED OFF.
WRITE: SY-VLINE,
6 'TOTAL ', SY-VLINE.
ULINE.
FORMAT COLOR OFF.
WRITE: / SY-VLINE.
FORMAT COLOR COL_HEADING INTENSIFIED OFF.
WRITE: 13 TOTAL_RAST1 NO-ZERO CURRENCY T001-WAERS, SY-VLINE,
(14) TOTAL_RAST7 NO-ZERO CURRENCY T001-WAERS, SY-VLINE,
(14) TOTAL_RAST2 NO-ZERO CURRENCY T001-WAERS, SY-VLINE,
(14) TOTAL_RAST3 NO-ZERO CURRENCY T001-WAERS, SY-VLINE,
(14) TOTAL_RAST4 NO-ZERO CURRENCY T001-WAERS, SY-VLINE,
(14) TOTAL_RAST5 NO-ZERO CURRENCY T001-WAERS, SY-VLINE,
(14) TOTAL_RAST6 NO-ZERO CURRENCY T001-WAERS, SY-VLINE.
ULINE.
ENDIF.
ENDIF.
SKIP 1. "DEVK939546
ENDFORM. "DEVK939546
*& Form GET_KNKK_INFO
text
--> p1 text
<-- p2 text
FORM GET_KNKK_INFO.
CLEAR: G_WAERS,
G_KLIMK_TXT,
KNKK-KLIMK.
get credit control area (KKBER) for comp code (BUKRS)
SELECT SINGLE KLIMK
INTO KNKK-KLIMK
FROM KNKK
WHERE KUNNR = KNA1-KUNNR AND
KKBER = T001-KKBER.
IF SY-SUBRC = 0.
get currency for cred ctrl area
CLEAR IT_T014.
READ TABLE IT_T014 WITH KEY KKBER = T001-KKBER BINARY SEARCH.
G_WAERS = IT_T014-WAERS.
WRITE KNKK-KLIMK TO G_KLIMK_TXT CURRENCY G_WAERS.
ENDIF.
ENDFORM. " GET_KNKK_INFO
*& Form SELECT_KNKK
text
-->P_KKBER Credit Limit Controlling AreaThis is a FI Aging report.
-
Need Rep to extrct Opn Sale Ords whch has diff Paymnt terms frm Cust Mast
Hi All,
I need code for a Report to extract the Open Sales Orders which has the different Payment Terms from Customer Master .Please help.
It's urgent.Check out table VBFA and KNB1-ZTERM.
You need to see if there are any deliveries for the orders.
I think, you first need to get the zterm from customer master then retrieve all open sales orders from VBFA. Also check out VBUP for the item status. -
Ar aging report, need help urgent please help!
Hey All Gurus,
Im in a thick soup here. I am trying to do something like this -
if you see the selection screen i have rep and super rep, when a user enters a rep value --- it should use the same value to pull all open items for the super rep as well, since they are essentially the same. please help! this one needs to be done fast. i am pasting the code so that it will be easier ...
thanks a million!
*& Report ZFDOFW04_NEW
REPORT ZFDOFW04_NEW MESSAGE-ID FR
LINE-SIZE 132
LINE-COUNT 60.
*==================================================================
Program: ZFDOFW03 - Aged Trial Balance Report
This produces an Accounts Receivable Past Due Aging Report
in a more simplified/condensed format than the
SAP supplied aging report program - RFDOPR10.
This program is a modified copy of RFDOFW00, - a SAP
Future-Due Report.
This was a 'rush' job - program probably should be
rewritten someday not using logical databases as that
maybe why this runs so slowly!
Original: Feb 1997.
MAINTENANCE HISTORY:
NES071797 Copied from ZFDOFW03. Adding parameter for saeles rep.
JDEDERER - changed header text so it is differnet from ZFDORW03. 9/23
*TEXT SYMBOLS :
001 Open items per
002 O p e n
003 D u e o n
004 cc ba in total
005 until
006 Days until
007 Days over
008 Days
009 over
011 valid until........
012 Insurance limit.....
016 F u t u r e
017 + days
018 D u e
020 Last dunn.notice...
021 Dunning level....
030 S U M M A R Y S H E E T
031 =====================
050 Name Page
051 Burton Snowboard
SELECTION TEXTS:
SUMMEN Output totals only
TAGE1 Due date I until
TAGE2 Due date II until
TAGE3 Due date III until
TAGE4 Due date IV until
TABLES: T001, KNA1, KNB1, KNB5, BSID, BSEGA, RFPDO1, KNVP,
T014, "credit control areas JAM
KNVK, "cust master - contact partner JAM
T014T, "Credit control areas names
BKPF, "TONY ISSUE 4743
TVKO, "TONY ISSUE 4743
KNKK. "cust master - credit mgmt JAM
TYPES: BEGIN OF TOT_TYPE, "DEVK939546
BUKRS LIKE LFB1-BUKRS, "DEVK939546
GSBER LIKE BSIK-GSBER, "DEVK939546
KKBER LIKE BSID-KKBER,
RAST1 TYPE P, "DEVK939546
RAST2 TYPE P, "DEVK939546
RAST3 TYPE P, "DEVK939546
RAST4 TYPE P, "DEVK939546
RAST5 TYPE P, "DEVK939546
RAST6 TYPE P, "DEVK939546
RAST7 TYPE P, "DEVK939546
END OF TOT_TYPE, "DEVK939546
TOT_TAB TYPE TOT_TYPE OCCURS 0. "DEVK939546
CONSTANTS:
C_FALSE TYPE I VALUE 0, "JAM
C_TRUE TYPE I VALUE 1.
DATA: BEGIN OF GTAB OCCURS 1000,
SUPER(10) TYPE C, "TONYC
REP(10) TYPE C, "TONYC
FILKD(10), "tonyc show buying groups
LAND1 LIKE KNA1-LAND1,
GSBER LIKE BSIK-GSBER,
REGIO LIKE KNA1-REGIO,
NAME1 LIKE KNA1-NAME1,
NAME2 LIKE KNA1-NAME2,
ORT01 LIKE KNA1-ORT01,
TELF1 LIKE KNVK-TELF1, "telephone number JAM
CONT_NAME1 LIKE KNVK-NAME1, "contact name JAM
NAMEV LIKE KNVK-NAMEV, "contact name JAM
KUNNR LIKE KNA1-KUNNR, "TONYC
BUKRS LIKE LFB1-BUKRS, "TONYC
KKBER LIKE BSID-KKBER, "tonyc issue #2500
ZTERM LIKE KNB1-ZTERM, "tonyc issue #2500
KLIMK_TXT(22) TYPE C, "credit limit JAM
WAERS LIKE T014-WAERS, "currency JAM
SORT_GSB, "TONYC
RAST1 TYPE P,
RAST2 TYPE P,
RAST3 TYPE P,
RAST4 TYPE P,
RAST5 TYPE P,
RAST6 TYPE P,
RAST7 TYPE P,
T_IND,
END OF GTAB.
DATA HOLD_NAME(40).
DATA HOLD_BUKRS LIKE T001-BUKRS. "tonyc
DATA GOOD_SUPER_REP. "tonyc
DATA: HOLD_REP LIKE KNA1-KUNNR, "tonyc
SUPER_NAME LIKE KNA1-NAME1, "tonyc
REP_NAME LIKE KNA1-NAME1. "tonyc
DATA NAME_LENGTH(2) TYPE C. "tonyc
DATA BACKSLASH(3) VALUE ' / '. "tonyc
DATA REPS_INFO(70) TYPE C. "tonyc
DATA REPORT_TYPE(12) TYPE C.
DATA: C_CREDIT_ABTNR LIKE KNVK-ABTNR. "dept 003 = credit
DATA Z_HOLD_LIMIT(22) TYPE N. "tonyc issue#2216
DATA Z_DESCRIPTION(18). "tonyc issue#2216
DATA WRITE_TOTAL.
DATA HOLD_KLIMK LIKE KNKK-KLIMK.
DATA HOLD_KLIMK2(22) TYPE C.
DATA HOLD-CTLPC LIKE KNKK-CTLPC.
DATA HOLD-CTLPC-TEXT LIKE T691T-RTEXT.
DATA HOLD_ZTERM LIKE KNVV-ZTERM.
DATA TOTAL_RAST7 TYPE P.
DATA TOTAL_RAST2 TYPE P.
DATA TOTAL_RAST3 TYPE P.
DATA TOTAL_RAST4 TYPE P.
DATA TOTAL_RAST5 TYPE P.
DATA TOTAL_RAST6 TYPE P.
DATA TOTAL_RAST1 TYPE P.
DATA HOLD_BUKRS2 LIKE T001-BUKRS.
DATA HOLD_KKBER LIKE BSID-KKBER.
DATA HOLD_KKBER_DESC LIKE T014T-KKBTX.
DATA HOLD_KKBER_DESC2 LIKE T014T-KKBTX.
DATA HOLD_KUNNR2 LIKE KNA1-KUNNR.
DATA L_FIRST_DAY_OF_FISCAL LIKE SY-DATUM. "tonyc issue #3047
DATA: STAB TYPE TOT_TAB WITH HEADER LINE, "DEVK939546
RTOT TYPE TOT_TAB WITH HEADER LINE, "DEVK939546
STOT TYPE TOT_TAB WITH HEADER LINE, "DEVK939546
OP,
MAXMANDT LIKE DD_STIDA,
MAXMANST TYPE P,
SUMKLIMB TYPE P,
SUMVLIBB TYPE P,
VERZUG TYPE P,
OBAD TYPE P,
BLOCK_CNT TYPE P,
INTENS,
ONEBYTE(1) TYPE C,
TAGE1A LIKE RFPDO1-ALLGFAEL,
TAGE2A LIKE RFPDO1-ALLGFAEL,
TAGE3A LIKE RFPDO1-ALLGFAEL,
HOLD_KUNNR LIKE KNA1-KUNNR, "tonyc
HOLD_SUPER LIKE KNA1-KUNNR, "tonyc
HOLD_REP2 LIKE KNA1-KUNNR, "tonyc
SUPER_REP LIKE KNA1-KUNNR, "tonyc
TEMP_TELF1 LIKE KNA1-TELF1, "JAM
IT_T014 LIKE T014 OCCURS 0 WITH HEADER LINE, "JAM
G_KLIMK_TXT LIKE GTAB-KLIMK_TXT, "JAM
G_WAERS LIKE GTAB-WAERS, "JAM
G_CONT_NAME(50) TYPE C. "JA
DATA FILL_REP_INFO.
BC SUNILP 05/14/2007
DATA: BEGIN OF ITAB_VBRP OCCURS 0.
INCLUDE STRUCTURE VBRP.
DATA: END OF ITAB_VBRP.
DATA: T_PERC TYPE F,
SUM_NETWR LIKE VBRP-NETWR.
*DATA: GTAB_LINES LIKE GTAB OCCURS 0 WITH HEADER LINE.
DATA: BEGIN OF GTAB_LINES OCCURS 0.
INCLUDE STRUCTURE GTAB.
DATA: IND(1),
OBAD TYPE P.
DATA: END OF GTAB_LINES.
DATA: BEGIN OF ITAB_VBRP1 OCCURS 0,
VBELN LIKE VBRP-VBELN,
NETWR LIKE VBRP-NETWR,
ZZMREP LIKE VBRP-ZZMREP, "Super Rep
ZZLREP LIKE VBRP-ZZLREP, "Rep
PERC TYPE F,
END OF ITAB_VBRP1.
EC SUNILP 05/14/2007
BEGIN_OF_BLOCK 2.
PARAMETERS: REGIO LIKE KNA1-REGIO.
PARAMETERS: CONSOL AS CHECKBOX. "TONYC
PARAMETERS: P_KKBER AS CHECKBOX, "TONYC
P_CONV AS CHECKBOX. "tonyc issue #3047
PARAMETERS: SUMMEN LIKE RFPDO1-ALLGSUMM,
TAGE1 LIKE RFPDO1-ALLGFAEL DEFAULT '30',
TAGE2 LIKE RFPDO1-ALLGFAEL DEFAULT '60',
TAGE3 LIKE RFPDO1-ALLGFAEL DEFAULT '90',
TAGE4 LIKE RFPDO1-ALLGFAEL DEFAULT '120'.
END_OF_BLOCK 2.
BEGIN_OF_BLOCK 3.
SELECT-OPTIONS: P_SUPREP FOR KNVP-KUNNR, "Super REP "DEVK939546
P_REP FOR KNVP-KUNNR, "SALES REP "DEVK939546
P_VKORG FOR TVKO-VKORG, "TONYC ISSUE 4743
P_LOTKZ FOR BKPF-LOTKZ. "TONYC ISSUE 4743
END_OF_BLOCK 3.
INITIALIZATION. "JAM
PERFORM LOAD_T014. "JAM
refresh dd_augdt.
clear dd_augdt.
dd_augdt-option = 'EQ'.
dd_augdt-sign = 'I'.
dd_augdt-low = ' '.
append dd_augdt.
AT SELECTION-SCREEN.
IF CONSOL = 'X'.
IF NOT P_SUPREP[] IS INITIAL. "DEVK939546
MESSAGE E999 WITH 'Consolidated report not allowed w/ Super Rep'.
ENDIF.
ENDIF.
CHECK IF THE REP INFO IS ADDED OR NOT - VS
IF NOT P_SUPREP IS INITIAL OR"TONY ISSUE 4743
NOT P_REP IS INITIAL."TONY ISSUE 4743
FILL_REP_INFO = 'X'."TONY ISSUE 4743
ENDIF."TONY ISSUE 4743
START-OF-SELECTION.
get_frame_title 2.
add function module to track usage JD 10/13/98 *****
CALL FUNCTION 'Z_RUN_LOG'
EXCEPTIONS
OTHERS = 1.
*IF NOT P_SUPREP IS INITIAL AND NOT P_REP IS INITIAL.
P_SUPREP = ' '.
*ENDIF.
GET KNA1 FIELDS LAND1 REGIO KUNNR NAME1 NAME2 ORT01 TELF1. "JAM
new-page.
skip.
TEMP_TELF1 = KNA1-TELF1.
MAXMANDT = '19000101'.
MAXMANST = 0.
SUMVLIBB = 0.
PERFORM GET_CUST_CONTACT. "JAM
Check sales rep- NES071797
Get any valid record and exit.
IF NOT p_suprep[] IS INITIAL. "DEVK939546 "TONY ISSUE 4743 start
good_super_rep = ' '.
SELECT kunn2 INTO super_rep FROM knvp UP TO 1 ROWS
WHERE
kunnr = kna1-kunnr AND
parvw = 'ZS' AND
kunn2 IN p_suprep.
EXIT.
ENDSELECT.
IF sy-subrc = 0.
good_super_rep = 'X'.
gtab-super = super_rep.
super_rep = ' '.
ENDIF.
CHECK good_super_rep = 'X'.
SELECT kunn2 INTO gtab-rep FROM knvp UP TO 1 ROWS
WHERE
kunnr = kna1-kunnr AND
parvw = 'ZR' AND
kunn2 IN p_rep.
EXIT.
ENDSELECT.
CHECK sy-subrc = 0.
ELSEIF NOT p_rep[] IS INITIAL. "DEVK939546
SELECT kunn2 INTO gtab-rep FROM knvp UP TO 1 ROWS
WHERE
kunnr = kna1-kunnr AND
parvw = 'ZR' AND
kunn2 IN p_rep.
EXIT.
ENDSELECT.
CHECK sy-subrc = 0.
ENDIF. "TONY ISSUE 4743 end
GET KNB1 FIELDS BUKRS VLIBB ZTERM. "tonyc #2500
GTAB-BUKRS = KNB1-BUKRS.
GTAB-ZTERM = KNB1-ZTERM.
SUMVLIBB = SUMVLIBB + KNB1-VLIBB.
GET KNB5.
IF KNB5-MADAT > MAXMANDT.
MAXMANDT = KNB5-MADAT.
ENDIF.
IF KNB5-MAHNS > MAXMANST.
MAXMANST = KNB5-MAHNS.
ENDIF.
SUMKLIMB = SUMKLIMB + KLIMB.
GET BSID.
CHECK BSID-BSTAT = SPACE.
field was intended for Business Area, changed to use Currency
GTAB-GSBER = BSID-WAERS.
IF P_KKBER = 'X'. "TONYC ISSUE #2500
IF BSID-KKBER = ' '.
GTAB-KKBER = BSID-BUKRS.
ELSE.
GTAB-KKBER = BSID-KKBER. "TONYC ISSUE #2500
ENDIF.
ENDIF. "TONYC ISSUE #2500
SELECT SINGLE * FROM BKPF "TONY ISSUE 4743
WHERE BUKRS = BSID-BUKRS "TONY ISSUE 4743
AND BELNR = BSID-BELNR "TONY ISSUE 4743
AND GJAHR = BSID-GJAHR. "TONY ISSUE 4743
BC SUNILP 05/14/2007
IF BKPF-XREF2_HD IS NOT INITIAL.
CHECK BKPF-XREF2_HD IN P_SUPREP. "TONY ISSUE 4743
ELSE.
IF P_REP[] IS INITIAL.
REFRESH: ITAB_VBRP, ITAB_VBRP1.
IF NOT BKPF-XBLNR IS INITIAL.
SELECT * FROM VBRP INTO ITAB_VBRP WHERE VBELN = BKPF-XBLNR.
APPEND ITAB_VBRP. CLEAR ITAB_VBRP.
ENDSELECT.
CHECK ITAB_VBRP[] IS NOT INITIAL.
CLEAR: SUM_NETWR.
LOOP AT ITAB_VBRP.
CHECK ITAB_VBRP-ZZMREP IN P_SUPREP.
CHECK ITAB_VBRP-ZZLREP IN P_REP.
MOVE-CORRESPONDING ITAB_VBRP TO ITAB_VBRP1.
COLLECT: ITAB_VBRP1.
SUM_NETWR = SUM_NETWR + ITAB_VBRP-NETWR.
CLEAR ITAB_VBRP.
ENDLOOP.
CHECK ITAB_VBRP1[] IS NOT INITIAL.
LOOP AT ITAB_VBRP1.
CLEAR: T_PERC.
T_PERC = ( ITAB_VBRP1-NETWR / SUM_NETWR ).
ITAB_VBRP1-PERC = T_PERC.
MODIFY ITAB_VBRP1 INDEX SY-TABIX TRANSPORTING PERC.
ENDLOOP.
ENDIF.
ENDIF.
ENDIF.
EC SUNILP 05/14/2007
IF FILL_REP_INFO = 'X'.
GTAB-SUPER = BKPF-XREF2_HD. "TONY ISSUE 4743 "MOVE THE CONTENTS OF XREF2_HD TO GTAB INTERNAL TABLE - VS
ENDIF.
BC SUNILP 05/14/2007
IF BKPF-XREF1_HD IS NOT INITIAL.
CHECK BKPF-XREF1_HD IN P_REP. "TONY ISSUE 4743 " ELSE MOVE THE CONTENTS OF - VS
ELSE.
REFRESH: ITAB_VBRP, ITAB_VBRP1.
IF NOT BKPF-XBLNR IS INITIAL.
SELECT * FROM VBRP INTO ITAB_VBRP WHERE VBELN = BKPF-XBLNR.
APPEND ITAB_VBRP. CLEAR ITAB_VBRP.
ENDSELECT.
CHECK ITAB_VBRP[] IS NOT INITIAL.
CLEAR: SUM_NETWR.
LOOP AT ITAB_VBRP.
CHECK ITAB_VBRP-ZZMREP IN P_SUPREP.
CHECK ITAB_VBRP-ZZLREP IN P_REP.
MOVE-CORRESPONDING ITAB_VBRP TO ITAB_VBRP1.
COLLECT: ITAB_VBRP1.
SUM_NETWR = SUM_NETWR + ITAB_VBRP-NETWR.
CLEAR ITAB_VBRP.
ENDLOOP.
CHECK ITAB_VBRP1[] IS NOT INITIAL.
LOOP AT ITAB_VBRP1.
CLEAR: T_PERC.
T_PERC = ( ITAB_VBRP1-NETWR / SUM_NETWR ).
ITAB_VBRP1-PERC = T_PERC.
MODIFY ITAB_VBRP1 INDEX SY-TABIX TRANSPORTING PERC.
ENDLOOP.
ENDIF.
ENDIF.
EC SUNILP 05/14/2007
IF FILL_REP_INFO = 'X'.
GTAB-REP = BKPF-XREF1_HD. "TONY ISSUE 4743
ENDIF.
CHECK BKPF-LOTKZ IN P_LOTKZ. "TONY ISSUE 4743
CHECK BKPF-BRNCH IN P_VKORG. "TONY ISSUE 4743
SELECT SINGLE FILKD INTO GTAB-FILKD FROM BSEG
WHERE BUKRS = BSID-BUKRS
AND BELNR = BSID-BELNR
AND GJAHR = BSID-GJAHR
AND BUZEI = BSID-BUZEI.
gtab-gsber = bsid-gsber.
get rep info for each bsid record
IF NOT P_SUPREP IS INITIAL. "tonyc
SELECT KUNNR FROM VBPA INTO HOLD_REP UP TO 1 ROWS "tonyc
WHERE VBELN = BSID-VBELN "tonyc
AND PARVW = 'ZR'. "tonyc
ENDSELECT. "tonyc
IF NOT P_REP IS INITIAL. "tonyc
CHECK HOLD_REP = P_REP. "tonyc
ENDIF. "tonyc
GTAB-REP = HOLD_REP. "tonyc
HOLD_REP = ' '. "tonyc
ENDIF. "tonyc
PERFORM GET_KNKK_INFO. "JAM
GTAB-KLIMK_TXT = G_KLIMK_TXT.
GTAB-WAERS = G_WAERS.
GTAB-LAND1 = KNA1-LAND1.
GTAB-REGIO = KNA1-REGIO.
GTAB-KUNNR = KNA1-KUNNR.
GTAB-NAME1 = KNA1-NAME1.
GTAB-NAME2 = KNA1-NAME2.
GTAB-ORT01 = KNA1-ORT01.
*if there is no phone number for the contact, pull the phone
*number from the sold-to
IF KNVK-TELF1 = ' '.
GTAB-TELF1 = TEMP_TELF1.
ELSE.
GTAB-TELF1 = KNVK-TELF1. "JAM
ENDIF.
GTAB-CONT_NAME1 = KNVK-NAME1.
GTAB-NAMEV = KNVK-NAMEV.
verzug = bsega-netdt - dd_stida.
VERZUG = DD_STIDA - BSEGA-NETDT. "days past due calculation
OP = 'X'.
GTAB-RAST2 = GTAB-RAST3 = GTAB-RAST4 = 0.
GTAB-RAST5 = GTAB-RAST6 = OBAD = GTAB-RAST7 = 0.
IF VERZUG LE 0. "future due
GTAB-RAST1 = BSEGA-WRSHB.
ELSE.
IF VERZUG LE TAGE1. "past due 1 to tage1 days
GTAB-RAST1 = BSEGA-WRSHB.
GTAB-RAST2 = BSEGA-WRSHB.
OBAD = BSEGA-WRSHB.
ELSE.
IF VERZUG LE TAGE2. "past due tage1 to tage2 days
GTAB-RAST1 = BSEGA-WRSHB.
GTAB-RAST3 = BSEGA-WRSHB.
OBAD = BSEGA-WRSHB.
ELSE.
IF VERZUG LE TAGE3. "past due tage2 to tage3 days
GTAB-RAST1 = BSEGA-WRSHB.
GTAB-RAST4 = BSEGA-WRSHB.
OBAD = BSEGA-WRSHB.
ELSE.
IF VERZUG LE TAGE4. "past due tage3 to tage4 days
GTAB-RAST1 = BSEGA-WRSHB.
GTAB-RAST5 = BSEGA-WRSHB.
OBAD = BSEGA-WRSHB.
ELSE.
IF VERZUG GT TAGE4. "past due > tage4 days
GTAB-RAST1 = BSEGA-WRSHB.
GTAB-RAST6 = BSEGA-WRSHB.
OBAD = BSEGA-WRSHB.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
GTAB-RAST7 = GTAB-RAST1 - OBAD.
stab = gtab.
MOVE-CORRESPONDING GTAB TO STAB.
BC SUNILP 05/15/2007
IF ITAB_VBRP1[] IS NOT INITIAL.
GTAB-T_IND = 'X'.
LOOP AT ITAB_VBRP1.
MOVE-CORRESPONDING GTAB TO GTAB_LINES.
GTAB_LINES-SORT_GSB = '1'.
GTAB_LINES-SUPER = ITAB_VBRP1-ZZMREP.
GTAB_LINES-REP = ITAB_VBRP1-ZZLREP.
GTAB_LINES-RAST1 = GTAB_LINES-RAST1 * ITAB_VBRP1-PERC.
GTAB_LINES-RAST2 = GTAB_LINES-RAST2 * ITAB_VBRP1-PERC.
GTAB_LINES-RAST3 = GTAB_LINES-RAST3 * ITAB_VBRP1-PERC.
GTAB_LINES-RAST4 = GTAB_LINES-RAST4 * ITAB_VBRP1-PERC.
GTAB_LINES-RAST5 = GTAB_LINES-RAST5 * ITAB_VBRP1-PERC.
GTAB_LINES-RAST6 = GTAB_LINES-RAST6 * ITAB_VBRP1-PERC.
GTAB_LINES-RAST7 = GTAB_LINES-RAST7 * ITAB_VBRP1-PERC.
GTAB_LINES-OBAD = GTAB_LINES-OBAD * ITAB_VBRP1-PERC.
COLLECT: GTAB_LINES.
ENDLOOP.
ELSE.
MOVE-CORRESPONDING GTAB TO GTAB_LINES.
GTAB_LINES-T_IND = 'X'.
GTAB_LINES-SORT_GSB = '1'.
IF GTAB_LINES-SUPER IN P_SUPREP OR GTAB_LINES-REP IN P_REP.
COLLECT: GTAB_LINES.
ENDIF.
ENDIF.
EC SUNILP 05/15/2007
gtab-sort_gsb = stab-sort_gsb = '0'.
collect: gtab, stab.
gtab-gsber = stab-gsber = '****'.
GTAB-SORT_GSB = '1'.
IF REGIO = SPACE OR REGIO = GTAB-REGIO.
IF GTAB_LINES-SUPER IN P_SUPREP OR GTAB_LINES-REP IN P_REP.
COLLECT: GTAB, STAB.
ENDIF.
ENDIF.
END-OF-SELECTION.
TAGE1A = TAGE1 + 1.
TAGE2A = TAGE2 + 1.
TAGE3A = TAGE3 + 1.
IF SUMMEN = ' '.
sort gtab by bukrs land1 regio kunnr gsber sort_gsb.
sort gtab by bukrs land1 regio name1 kunnr gsber sort_gsb. "JAM
IF CONSOL = 'X'.
SORT GTAB BY LAND1 REGIO NAME1 KUNNR BUKRS KKBER GSBER SORT_GSB.
"TONYC
REPORT_TYPE = 'consolidated'.
ELSEIF NOT P_SUPREP[] IS INITIAL. "DEVK939546
SORT GTAB
BY SUPER REP NAME1 BUKRS KKBER LAND1 REGIO NAME1 GSBER SORT_GSB.
BC SUNILP 05/15/2007
SORT GTAB_LINES
BY SUPER REP NAME1 BUKRS KKBER LAND1 REGIO NAME1 GSBER SORT_GSB.
EC SUNILP 05/15/2007
REPORT_TYPE = 'super rep'.
CLEAR STAB. "tonyc 03/06/2004
REFRESH STAB. "tonyc 03/06/2004
ELSEIF NOT P_REP[] IS INITIAL. "DEVK939546
SORT GTAB "DEVK939546
BY REP NAME1 BUKRS KKBER LAND1 REGIO NAME1 GSBER SORT_GSB.
"DEVK939546
BC SUNILP 05/15/2007
SORT GTAB_LINES
BY REP NAME1 BUKRS KKBER LAND1 REGIO NAME1 GSBER SORT_GSB.
EC SUNILP 05/15/2007
REPORT_TYPE = 'rep'. "DEVK939546
CLEAR STAB. "tonyc 03/06/2004
REFRESH STAB. "tonyc 03/06/2004
ELSE.
SORT GTAB BY BUKRS KKBER LAND1 REGIO NAME1 KUNNR GSBER SORT_GSB.
BC SUNILP 05/15/2007
SORT GTAB_LINES BY BUKRS KKBER LAND1 REGIO NAME1 KUNNR GSBER SORT_GSB.
EC SUNILP 05/15/2007
REPORT_TYPE = 'regular'.
ENDIF.
BC SUNILP 05/15/2007
DELETE ADJACENT DUPLICATES FROM GTAB COMPARING BUKRS NAME1.
LOOP AT GTAB_LINES.
IF P_REP[] IS INITIAL.
IF GTAB_LINES-SUPER NOT IN P_SUPREP.
DELETE GTAB_LINES.
ENDIF.
ELSE.
IF GTAB_LINES-SUPER NOT IN P_SUPREP OR GTAB_LINES-REP NOT IN P_REP.
DELETE GTAB_LINES.
ENDIF.
ENDIF.
ENDLOOP.
LOOP AT GTAB.
READ TABLE GTAB_LINES WITH KEY BUKRS = GTAB-BUKRS
NAME1 = GTAB-NAME1.
IF SY-SUBRC NE '0'.
DELETE GTAB.
ENDIF.
ENDLOOP.
EC SUNILP 05/15/2007
LOOP AT GTAB.
MOVE GTAB-BUKRS TO T001-BUKRS. READ TABLE T001.
RESERVE 5 LINES.
CASE REPORT_TYPE.
WHEN 'regular'.
IF HOLD_BUKRS <> GTAB-BUKRS.
IF SY-TABIX > 1. "TONYC
NEW-PAGE. SKIP. "TONYC
ENDIF. "TONYC
ENDIF.
PERFORM WRITE_CUST_INFO. "TONYC
PERFORM WRITE_DETAIL.
hold_bukrs = gtab-bukrs. "tonyc
WHEN 'consolidated'.
IF HOLD_KUNNR <> GTAB-KUNNR. "TONYC
PERFORM WRITE_CUST_INFO. "TONYC
ENDIF. "TONYC
HOLD_KUNNR = GTAB-KUNNR. "TONYC
PERFORM WRITE_DETAIL.
WHEN 'super rep'.
IF GTAB-T_IND NE 'X'.
BC SUNILP 05/22/2007
READ TABLE GTAB_LINES WITH KEY BUKRS = GTAB-BUKRS
NAME1 = GTAB-NAME1.
EC SUNILP 05/22/2007
IF ( HOLD_SUPER <> GTAB_LINES-SUPER ) OR
( HOLD_REP2 <> GTAB_LINES-REP ).
NEW-PAGE.
PERFORM GET_AND_WRITE_SUPERINFO.
ENDIF.
HOLD_REP2 = GTAB_LINES-REP.
HOLD_SUPER = GTAB_LINES-SUPER.
IF HOLD_KUNNR <> GTAB-KUNNR. "TONYC
WRITE :/. "TONYC
ULINE. "TONYC
PERFORM WRITE_CUST_INFO. "TONYC
ENDIF. "TONYC
HOLD_KUNNR = GTAB-KUNNR. "TONYC
PERFORM WRITE_DETAIL. "TONYC
AT END OF REP. "DEVK939546
SKIP. "DEVK939546
RESERVE 7 LINES. "DEVK939546
FORMAT COLOR COL_TOTAL INTENSIFIED. "DEVK939546
WRITE: / 'Summary for Rep:', "DEVK939546
GTAB-REP, '/', REP_NAME, 132 ONEBYTE."DEVK939546
PERFORM WRITE_TOTS TABLES RTOT. "DEVK939546
REFRESH RTOT. "DEVK939546
ENDAT. "DEVK939546
AT END OF SUPER. "DEVK939546
CLEAR STAB. "tonyc 03/06/2004
REFRESH STAB. "tonyc 03/06/2004
NEW-PAGE. SKIP. "DEVK939546
FORMAT COLOR COL_TOTAL INTENSIFIED. "DEVK939546
WRITE: / 'Summary for Super Rep:', "DEVK939546
GTAB-SUPER, '/', SUPER_NAME, 132 ONEBYTE."DEVK939546
PERFORM WRITE_TOTS TABLES STOT. "DEVK939546
REFRESH STOT. "DEVK939546
ENDAT. "DEVK939546
ELSE.
LOOP AT GTAB_LINES WHERE BUKRS = GTAB-BUKRS
AND NAME1 = GTAB-NAME1.
IF ( HOLD_SUPER <> GTAB_LINES-SUPER ) OR
( HOLD_REP2 <> GTAB_LINES-REP ).
NEW-PAGE.
PERFORM GET_AND_WRITE_SUPERINFO.
ENDIF.
HOLD_REP2 = GTAB_LINES-REP.
HOLD_SUPER = GTAB_LINES-SUPER.
IF HOLD_KUNNR <> GTAB_LINES-KUNNR.
WRITE :/.
ULINE.
PERFORM WRITE_CUST_INFO.
ENDIF.
HOLD_KUNNR = GTAB_LINES-KUNNR.
PERFORM WRITE_DETAIL.
AT END OF REP.
SKIP.
RESERVE 7 LINES.
FORMAT COLOR COL_TOTAL INTENSIFIED.
WRITE: / 'Summary for Rep:',
GTAB_LINES-REP, '/', REP_NAME, 132 ONEBYTE.
PERFORM WRITE_TOTS TABLES RTOT.
REFRESH RTOT.
ENDAT.
AT END OF SUPER.
CLEAR STAB. "tonyc 03/06/2004
REFRESH STAB. "tonyc 03/06/2004
NEW-PAGE. SKIP.
FORMAT COLOR COL_TOTAL INTENSIFIED.
WRITE: / 'Summary for Super Rep:',
GTAB_LINES-SUPER, '/', SUPER_NAME, 132 ONEBYTE.
PERFORM WRITE_TOTS TABLES STOT.
REFRESH STOT.
ENDAT.
ENDLOOP.
ENDIF.
WHEN 'rep'. "DEVK939546
LOOP AT GTAB_LINES WHERE BUKRS = GTAB-BUKRS
AND NAME1 = GTAB-NAME1.
IF HOLD_REP2 <> GTAB_LINES-REP. "DEVK939546
NEW-PAGE. "DEVK939546
PERFORM GET_AND_WRITE_REPINFO. "DEVK939546
ENDIF. "DEVK939546
HOLD_REP2 = GTAB_LINES-REP. "DEVK939546
IF HOLD_KUNNR <> GTAB_LINES-KUNNR. "DEVK939546
WRITE :/. "DEVK939546
ULINE. "DEVK939546
PERFORM WRITE_CUST_INFO. "DEVK939546
ENDIF. "DEVK939546
HOLD_KUNNR = GTAB_LINES-KUNNR. "DEVK939546
PERFORM WRITE_DETAIL. "DEVK939546
AT END OF REP. "DEVK939546
SKIP. "DEVK939546
RESERVE 7 LINES. "DEVK939546
FORMAT COLOR COL_TOTAL INTENSIFIED. "DEVK939546
WRITE: / 'Summary for Rep:', "DEVK939546
GTAB_LINES-REP, '/', REP_NAME, 132 ONEBYTE."DEVK939546
PERFORM WRITE_TOTS TABLES RTOT. "DEVK939546
REFRESH RTOT. "DEVK939546
ENDAT. "DEVK939546
ENDLOOP.
ENDCASE.
ENDLOOP.
ENDIF.
OP = ' '.
REFRESH GTAB.
IF NOT REPORT_TYPE = 'super rep'.
ULINE.
ENDIF.
SKIP 1.
IF SUMMEN = ' '. "if 'output totals only' bypass new-page
NEW-PAGE. SKIP.
ENDIF.
WRITE: /25 TEXT-030, 132 ONEBYTE, /25 TEXT-031, 132 ONEBYTE.
PERFORM WRITE_TOTS TABLES STAB. "DEVK939546
TOP-OF-PAGE.
INTENS = SPACE.
FORMAT COLOR COL_HEADING INTENSIFIED ON.
WRITE: / SY-VLINE, 1 TEXT-001, DD_STIDA, 75 TEXT-051, 132 SY-VLINE.
ULINE.
WRITE: / SY-VLINE, 13 SY-VLINE, 30 SY-VLINE,
47 SY-VLINE, 58 TEXT-003, 81 SY-VLINE,
92 TEXT-003, 115 SY-VLINE, 118 TEXT-003, 132 SY-VLINE,
/ SY-VLINE, 02 TEXT-004, 13 SY-VLINE, TEXT-002,
30 SY-VLINE, 32 TEXT-018, 47 SY-VLINE,
50 '1', 54 TEXT-040, 57 TAGE1, 64 SY-VLINE, " 65 tage2,
67 TAGE1A, 72 TEXT-040, 75 TAGE2,
81 SY-VLINE, 83 TAGE2A, 89 TEXT-040, 91 TAGE3, 98 SY-VLINE,
101 TAGE3A, 107 TEXT-040, 110 TAGE4, 115 SY-VLINE,
117 TAGE4, 123 TEXT-017, 132 SY-VLINE.
ULINE.
SKIP 1.
SUMMARY.
FORMAT COLOR COL_HEADING INTENSIFIED OFF.
FORM write_tots *
--> PTAB *
FORM WRITE_TOTS TABLES PTAB TYPE TOT_TAB. "DEVK939546
CLEAR INTENS. "DEVK939546
FORMAT COLOR COL_HEADING INTENSIFIED OFF. "DEVK939546
IF P_CONV = 'X'. "tonyc issue #3047 begin
WRITE /4 TEXT-101.
WRITE: /4 TEXT-102,
50 TEXT-100.
ENDIF. "tonyc issue #3047 end
ULINE. "DEVK939546
SORT PTAB BY BUKRS GSBER. "DEVK939546
LOOP AT PTAB. "DEVK939546
IF SY-TABIX > 1.
WRITE_TOTAL = 'X'.
ENDIF.
MOVE PTAB-BUKRS TO T001-BUKRS. READ TABLE T001. "DEVK939546
MOVE PTAB-GSBER TO T001-WAERS. "DEVK939546
IF P_CONV = 'X'. "tonyc issue #3047 begin
PERFORM CONVERT_VALUES USING STAB-RAST1
STAB-GSBER.
PERFORM CONVERT_VALUES USING STAB-RAST2
STAB-GSBER.
PERFORM CONVERT_VALUES USING STAB-RAST3
STAB-GSBER.
PERFORM CONVERT_VALUES USING STAB-RAST4
STAB-GSBER.
PERFORM CONVERT_VALUES USING STAB-RAST5
STAB-GSBER.
PERFORM CONVERT_VALUES USING STAB-RAST6
STAB-GSBER.
PERFORM CONVERT_VALUES USING STAB-RAST7
STAB-GSBER.
ENDIF. "TOnyc issue #3047 end
MOVE-CORRESPONDING PTAB TO STAB.
COLLECT STAB.
IF P_KKBER = 'X'. "TONYC ISSUE #2500
CLEAR HOLD_KKBER_DESC2.
SELECT SINGLE KKBTX INTO HOLD_KKBER_DESC2 FROM T014T
WHERE KKBER = STAB-KKBER AND
SPRAS = 'E'.
IF SY-SUBRC <> '0'.
HOLD_KKBER_DESC2 = 'Undetermined'.
ENDIF.
FORMAT COLOR OFF.
WRITE: / SY-VLINE.
FORMAT COLOR COL_HEADING INTENSIFIED OFF.
WRITE: 6 STAB-GSBER, HOLD_KKBER_DESC2, SY-VLINE.
ULINE.
FORMAT COLOR OFF.
WRITE: / SY-VLINE.
FORMAT COLOR COL_HEADING INTENSIFIED OFF.
IF P_CONV = 'X'. "tonyc issue #3047 begin
T001-WAERS = 'USD'.
ENDIF. "tonyc issue #3047 end
WRITE: 13 STAB-RAST1 NO-ZERO CURRENCY T001-WAERS, SY-VLINE,
(14) STAB-RAST7 NO-ZERO CURRENCY T001-WAERS, SY-VLINE,
(14) STAB-RAST2 NO-ZERO CURRENCY T001-WAERS, SY-VLINE,
(14) STAB-RAST3 NO-ZERO CURRENCY T001-WAERS, SY-VLINE,
(14) STAB-RAST4 NO-ZERO CURRENCY T001-WAERS, SY-VLINE,
(14) STAB-RAST5 NO-ZERO CURRENCY T001-WAERS, SY-VLINE,
(14) STAB-RAST6 NO-ZERO CURRENCY T001-WAERS, SY-VLINE.
HOLD_BUKRS2 = STAB-BUKRS. "TONYC ISSUE #2500
ULINE.
FORMAT COLOR OFF.
TOTAL_RAST1 = STAB-RAST1 + TOTAL_RAST1.
TOTAL_RAST2 = STAB-RAST2 + TOTAL_RAST2.
TOTAL_RAST3 = STAB-RAST3 + TOTAL_RAST3.
TOTAL_RAST4 = STAB-RAST4 + TOTAL_RAST4.
TOTAL_RAST5 = STAB-RAST5 + TOTAL_RAST5.
TOTAL_RAST6 = STAB-RAST6 + TOTAL_RAST6.
TOTAL_RAST7 = STAB-RAST7 + TOTAL_RAST7.
ELSE.
FORMAT COLOR COL_NORMAL INTENSIFIED OFF. "DEVK939546
IF INTENS = SPACE. "DEVK939546
FORMAT COLOR COL_NORMAL INTENSIFIED OFF. "DEVK939546
INTENS = 'X'. "DEVK939546
ELSE. "DEVK939546
FORMAT COLOR COL_NORMAL INTENSIFIED ON. "DEVK939546
INTENS = SPACE. "DEVK939546
ENDIF. "DEVK939546
WRITE: / SY-VLINE, PTAB-BUKRS, PTAB-GSBER, SY-VLINE, "DEVK939546
(14) PTAB-RAST1 NO-ZERO CURRENCY T001-WAERS, SY-VLINE,"DEVK939546
(14) PTAB-RAST7 NO-ZERO CURRENCY T001-WAERS, SY-VLINE,"DEVK939546
(14) PTAB-RAST2 NO-ZERO CURRENCY T001-WAERS, SY-VLINE,"DEVK939546
(14) PTAB-RAST3 NO-ZERO CURRENCY T001-WAERS, SY-VLINE,"DEVK939546
(14) PTAB-RAST4 NO-ZERO CURRENCY T001-WAERS, SY-VLINE,"DEVK939546
(14) PTAB-RAST5 NO-ZERO CURRENCY T001-WAERS, SY-VLINE,"DEVK939546
(14) PTAB-RAST6 NO-ZERO CURRENCY T001-WAERS, SY-VLINE."DEVK939546
TOTAL_RAST1 = STAB-RAST1 + TOTAL_RAST1.
TOTAL_RAST2 = STAB-RAST2 + TOTAL_RAST2.
TOTAL_RAST3 = STAB-RAST3 + TOTAL_RAST3.
TOTAL_RAST4 = STAB-RAST4 + TOTAL_RAST4.
TOTAL_RAST5 = STAB-RAST5 + TOTAL_RAST5.
TOTAL_RAST6 = STAB-RAST6 + TOTAL_RAST6.
TOTAL_RAST7 = STAB-RAST7 + TOTAL_RAST7.
ENDIF.
ENDLOOP. "DEVK939546
ULINE. "DEVK939546
IF P_KKBER = 'X'. "TONYC ISSUE #2500
IF P_CONV = 'X'. "tonyc issue #3047 begin
FORMAT COLOR OFF.
FORMAT COLOR COL_HEADING INTENSIFIED OFF.
WRITE: SY-VLINE,
6 'TOTAL ', SY-VLINE.
ULINE.
FORMAT COLOR OFF.
WRITE: / SY-VLINE.
FORMAT COLOR COL_HEADING INTENSIFIED OFF.
WRITE: 13 TOTAL_RAST1 NO-ZERO CURRENCY T001-WAERS, SY-VLINE,
(14) TOTAL_RAST7 NO-ZERO CURRENCY T001-WAERS, SY-VLINE,
(14) TOTAL_RAST2 NO-ZERO CURRENCY T001-WAERS, SY-VLINE,
(14) TOTAL_RAST3 NO-ZERO CURRENCY T001-WAERS, SY-VLINE,
(14) TOTAL_RAST4 NO-ZERO CURRENCY T001-WAERS, SY-VLINE,
(14) TOTAL_RAST5 NO-ZERO CURRENCY T001-WAERS, SY-VLINE,
(14) TOTAL_RAST6 NO-ZERO CURRENCY T001-WAERS, SY-VLINE.
ULINE.
ENDIF. "tonyc issue #3047 end
ELSE.
IF P_CONV = 'X'.
FORMAT COLOR OFF.
FORMAT COLOR COL_HEADING INTENSIFIED OFF.
WRITE: SY-VLINE,
6 'TOTAL ', SY-VLINE.
ULINE.
FORMAT COLOR OFF.
WRITE: / SY-VLINE.
FORMAT COLOR COL_HEADING INTENSIFIED OFF.
WRITE: 13 TOTAL_RAST1 NO-ZERO CURRENCY T001-WAERS, SY-VLINE,
(14) TOTAL_RAST7 NO-ZERO CURRENCY T001-WAERS, SY-VLINE,
(14) TOTAL_RAST2 NO-ZERO CURRENCY T001-WAERS, SY-VLINE,
(14) TOTAL_RAST3 NO-ZERO CURRENCY T001-WAERS, SY-VLINE,
(14) TOTAL_RAST4 NO-ZERO CURRENCY T001-WAERS, SY-VLINE,
(14) TOTAL_RAST5 NO-ZERO CURRENCY T001-WAERS, SY-VLINE,
(14) TOTAL_RAST6 NO-ZERO CURRENCY T001-WAERS, SY-VLINE.
ULINE.
ENDIF.
ENDIF.
SKIP 1. "DEVK939546
ENDFORM. "DEVK939546
*& Form GET_KNKK_INFO
text
--> p1 text
<-- p2 text
FORM GET_KNKK_INFO.
CLEAR: G_WAERS,
G_KLIMK_TXT,
KNKK-KLIMK.
get credit control area (KKBER) for comp code (BUKRS)
SELECT SINGLE KLIMK
INTO KNKK-KLIMK
FROM KNKK
WHERE KUNNR = KNA1-KUNNR AND
KKBER = T001-KKBER.
IF SY-SUBRC = 0.
get currency for cred ctrl area
CLEAR IT_T014.
READ TABLE IT_T014 WITH KEY KKBER = T001-KKBER BINARY SEARCH.
G_WAERS = IT_T014-WAERS.
WRITE KNKK-KLIMK TO G_KLIMK_TXT CURRENCY G_WAERS.
ENDIF.
ENDFORM. " GET_KNKK_INFO
*& Form SELECT_KNKK
text
-->P_KKBER Credit Limit Controlling Area
<--P_FOUND_KNKK Indicates if record found
FORM SELECT_KNKK USING P_KKBER
CHANGING P_FOUND_KNKK.
CLEAR: G_WAERS,
G_KLIMK_TXT,
KNKK-KLIMK.
SELECT SINGLE KLIMK
INTO KNKK-KLIMK
FROM KNKK
WHERE KUNNR = KNA1-KUNNR AND
KKBER = P_KKBER.
IF SY-SUBRC = 0.
P_FOUND_KNKK = C_TRUE.
get currency for cred ctrl area
CLEAR IT_T014.
READ TABLE IT_T014 WITH KEY KKBER = P_KKBER BINARY SEARCH.
G_WAERS = IT_T014-WAERS.
WRITE KNKK-KLIMK TO G_KLIMK_TXT CURRENCY G_WAERS.
ELSE.
P_FOUND_KNKK = C_FALSE.
ENDIF.
ENDFORM. " SELECT_KNKK
*& Form GET_CUST_CONTACT & PHONE NUMBER
FORM GET_CUST_CONTACT.
CLEAR KNVK.
C_CREDIT_ABTNR = '0003'. "look for contact in credit dept
SELECT NAME1
NAMEV
TELF1
INTO (KNVK-NAME1,
KNVK-NAMEV,
KNVK-TELF1)
FROM KNVK
WHERE KUNNR = KNA1-KUNNR AND
ABTNR = C_CREDIT_ABTNR.
ENDSELECT.
If there wasn't a contact person for the credit dept, then just
pull up the first contact info we find regardless of dept
IF SY-SUBRC <> 0.
CLEAR KNVK.
SELECT NAME1
NAMEV
TELF1
INTO (KNVK-NAME1,
KNVK-NAMEV,
KNVK-TELF1)
FROM KNVK
WHERE KUNNR = KNA1-KUNNR.
IF SY-SUBRC = 0.
EXIT.
ENDIF.
ENDSELECT.
ELSE.
EXIT.
ENDIF. "not contact found in credit dept.
ENDFORM. " GET_CUST_CONTACT
*& Form LOAD_T014
FORM LOAD_T014.
SELECT *
INTO TABLE IT_T014
FROM T014.
SORT IT_T014.
ENDFORM. " LOAD_T014
*& Form WRITE_CUST_INFO "TONYC
text moved code and created a form. for cleaner code "TONYC
--> p1 text
<-- p2 text
FORM WRITE_CUST_INFO.
IF NOT REPORT_TYPE = 'super rep'.
IF SY-TABIX > 1.
ULINE.
ENDIF.
ENDIF.
CONCATENATE GTAB-NAMEV "JAM
GTAB-CONT_NAME1
INTO G_CONT_NAME
SEPARATED BY SPACE.
FORMAT COLOR COL_TOTAL INTENSIFIED OFF.
IF REPORT_TYPE = 'super rep'.
IF GTAB-T_IND NE 'X'.
WRITE: / GTAB-KUNNR, GTAB-NAME1, GTAB-ORT01, GTAB-REGIO, GTAB-LAND1,
"g_cont_name,
132 ONEBYTE.
ELSE.
WRITE: / GTAB_LINES-KUNNR, GTAB_LINES-NAME1, GTAB_LINES-ORT01, GTAB_LINES-REGIO, GTAB_LINES-LAND1,
"g_cont_name,
132 ONEBYTE.
ENDIF.
WRITE: /21 onebyte, 12 gtab-name2, 45 gtab-ort01,
gtab-telf1, "gtab-klimk_txt, gtab-waers.
132 onebyte.
ELSE.
WRITE: / GTAB-KUNNR, GTAB-NAME1, GTAB-ORT01, GTAB-REGIO, GTAB-LAND1,
"g_cont_name, "JAM
132 ONEBYTE.
WRITE: /11 onebyte, 12 gtab-name2, 45 gtab-ort01,
gtab-telf1, "gtab-klimk_txt, gtab-waers, "JAM
132 onebyte.
ENDIF.
ENDFORM. " WRITE_CUST_INFO
*& Form GET_AND_WRITE_SUPERINFO
text
--> p1 text
<-- p2 text
FORM GET_AND_WRITE_SUPERINFO.
ULINE.
IF GTAB-T_IND NE 'X'.
SELECT SINGLE NAME1 FROM KNA1 INTO SUPER_NAME "TONYC
WHERE KUNNR = GTAB-SUPER. "TONYC
SELECT SINGLE NAME1 FROM KNA1 INTO REP_NAME "TONYC
WHERE KUNNR = GTAB-REP. "TONYC
CONCATENATE SUPER_NAME REP_NAME INTO REPS_INFO "TONYC
SEPARATED BY BACKSLASH. "TONYC
FORMAT COLOR COL_TOTAL INTENSIFIED. "TONYC
WRITE:/ GTAB-SUPER, '/', "TONYC
GTAB-REP, "TONYC
25 REPS_INFO, 132 ONEBYTE. "TONYC
ELSE.
SELECT SINGLE NAME1 FROM KNA1 INTO SUPER_NAME
WHERE KUNNR = GTAB_LINES-SUPER.
SELECT SINGLE NAME1 FROM KNA1 INTO REP_NAME
WHERE KUNNR = GTAB_LINES-REP.
CONCATENATE SUPER_NAME REP_NAME INTO REPS_INFO
SEPARATED BY BACKSLASH.
FORMAT COLOR COL_TOTAL INTENSIFIED.
WRITE:/ GTAB_LINES-SUPER, '/',
GTAB_LINES-REP,
25 REPS_INFO, 132 ONEBYTE.
ENDIF.
ENDFORM. " GET_AND_WRITE_SUPERINFO
*& Form GET_AND_WRITE_REPINFO
text
--> p1 text
<-- p2 text
FORM GET_AND_WRITE_REPINFO.
ULINE.
SELECT SINGLE NAME1 FROM KNA1 INTO REP_NAME
WHERE KUNNR = GTAB-REP.
FORMAT COLOR COL_TOTAL INTENSIFIED.
WRITE:/ GTAB-REP,
25 REP_NAME, 132 ONEBYTE.
ENDFORM. " GET_AND_WRITE_REPINFO
*& Form WRITE_DETAIL
text
--> p1 text
<-- p2 text
FORM WRITE_DETAIL.
clear z_description. "TONYC #2216
move GTAB-KLIMK_TXT to z_hold_limit.
IF z_hold_limit = 400.
z_description = 'COD/Check'.
elseif z_hold_limit = 500.
z_description = 'COD/Cash'.
elseif z_hold_limit = 600.
z_description = 'Need Dealer Agree'.
elseif z_hold_limit = 700.
z_description = 'Need PDCs'.
elseif z_hold_limit = 800.
z_description = 'Need Fin Statements'.
elseif z_hold_limit = 900.
z_description = 'Past Due Balance'.
elseif z_hold_limit = 1000.
z_description = 'Miracle?'.
endif. "TONYC #2216
MOVE GTAB-GSBER TO T001-WAERS.
FORMAT COLOR COL_TOTAL INTENSIFIED OFF.
IF HOLD_KUNNR2 <> GTAB-KUNNR. "TONYC
IF REPORT_TYPE = 'super rep'.
WRITE: /3 ONEBYTE, GTAB-BUKRS.
WRITE: 92 gtab-klimk_txt, gtab-waers, 132 onebyte. "TONYC
WRITE: 92 gtab-klimk_txt, z_description,132 onebyte."TONYC #2500
ELSE.
WRITE: / ONEBYTE, GTAB-BUKRS.
WRITE: 92 gtab-klimk_txt, z_description,132 onebyte."TONYC #2500
WRITE: 92 gtab-klimk_txt, gtab-waers, 132 onebyte. "TONYC
ENDIF.
ENDIF.
FORMAT COLOR COL_TOTAL INTENSIFIED OFF.
IF P_KKBER = 'X'. "TONYC ISSUE# 2500
CLEAR HOLD_KKBER_DESC.
SELECT SINGLE KKBTX INTO HOLD_KKBER_DESC FROM T014T
WHERE KKBER = GTAB-KKBER AND
SPRAS = 'E'.
IF SY-SUBRC <> '0'.
HOLD_KKBER_DESC = 'Undetermined'.
ENDIF.
SELECT SINGLE KLIMK CTLPC
INTO (HOLD_KLIMK, HOLD-CTLPC)
FROM KNKK
WHERE KUNNR = GTAB-KUNNR AND
KKBER = GTAB-KKBER.
SELECT SINGLE RTEXT INTO HOLD-CTLPC-TEXT FROM T691T
WHERE SPRAS = 'EN' AND
CTLPC = HOLD-CTLPC AND
KKBER = GTAB-KKBER.
WRITE HOLD_KLIMK TO HOLD_KLIMK2 CURRENCY GTAB-WAERS.
WRITE: /7 GTAB-KKBER,
12 HOLD_KKBER_DESC,
80 HOLD_KLIMK2,
103 GTAB-GSBER,
108 HOLD-CTLPC-TEXT.
ENDIF. "TONYC ISSUE# 2500
FORMAT COLOR COL_NORMAL INTENSIFIED ON. "TONYC
MOVE STAB-GSBER TO T001-WAERS.
CLEAR HOLD_NAME.
SELECT SINGLE NAME1 FROM KNA1 INTO HOLD_NAME
WHERE KUNNR = GTAB-FILKD.
WRITE: /15 GTAB-FILKD,
30 HOLD_NAME.
IF GTAB-T_IND NE 'X'.
WRITE: /15(14) GTAB-RAST1 NO-ZERO CURRENCY T001-WAERS, ONEBYTE,
(14) GTAB-RAST7 NO-ZERO CURRENCY T001-WAERS, ONEBYTE,
(14) GTAB-RAST2 NO-ZERO CURRENCY T001-WAERS, ONEBYTE,
(14) GTAB-RAST3 NO-ZERO CURRENCY T001-WAERS, ONEBYTE,
(14) GTAB-RAST4 NO-ZERO CURRENCY T001-WAERS, ONEBYTE,
(14) GTAB-RAST5 NO-ZERO CURRENCY T001-WAERS, ONEBYTE,
(14) GTAB-RAST6 NO-ZERO CURRENCY T001-WAERS, ONEBYTE,
132 ONEBYTE.
ELSE.
IF REPORT_TYPE NE 'super rep'.
LOOP AT GTAB_LINES WHERE KUNNR = GTAB-KUNNR.
WRITE: / GTAB_LINES-SUPER, ONEBYTE,
15(14) GTAB_LINES-RAST1 NO-ZERO CURRENCY T001-WAERS, ONEBYTE,
(14) GTAB_LINES-RAST7 NO-ZERO CURRENCY T001-WAERS, ONEBYTE,
(14) GTAB_LINES-RAST2 NO-ZERO CURRENCY T001-WAERS, ONEBYTE,
(14) GTAB_LINES-RAST3 NO-ZERO CURRENCY T001-WAERS, ONEBYTE,
(14) GTAB_LINES-RAST4 NO-ZERO CURRENCY T001-WAERS, ONEBYTE,
(14) GTAB_LINES-RAST5 NO-ZERO CURRENCY T001-WAERS, ONEBYTE,
(14) GTAB_LINES-RAST6 NO-ZERO CURRENCY T001-WAERS, ONEBYTE,
132 ONEBYTE.
ENDLOOP.
ELSE.
WRITE: / GTAB_LINES-SUPER, ONEBYTE,
15(14) GTAB_LINES-RAST1 NO-ZERO CURRENCY T001-WAERS, ONEBYTE,
(14) GTAB_LINES-RAST7 NO-ZERO CURRENCY T001-WAERS, ONEBYTE,
(14) GTAB_LINES-RAST2 NO-ZERO CURRENCY T001-WAERS, ONEBYTE,
(14) GTAB_LINES-RAST3 NO-ZERO CURRENCY T001-WAERS, ONEBYTE,
(14) GTAB_LINES-RAST4 NO-ZERO CURRENCY T001-WAERS, ONEBYTE,
(14) GTAB_LINES-RAST5 NO-ZERO CURRENCY T001-WAERS, ONEBYTE,
(14) GTAB_LINES-RAST6 NO-ZERO CURRENCY T001-WAERS, ONEBYTE,
132 ONEBYTE.
ENDIF.
ENDIF.
HOLD_BUKRS = GTAB-BUKRS. "Tonyc
HOLD_KUNNR2 = GTAB-KUNNR. "TONYC
HOLD_KKBER = GTAB-KKBER. "TONYC ISSUE #2500
IF REPORT_TYPE = 'super rep' OR REPORT_TYPE = 'rep'. "DEVK939546
IF GTAB-T_IND NE 'X'.
MOVE-CORRESPONDING GTAB TO RTOT. "DEVK939546
COLLECT RTOT. "DEVK939546
ELSE.
MOVE-CORRESPONDING GTAB_LINES TO RTOT.
COLLECT RTOT.
ENDIF.
IF REPORT_TYPE = 'super rep'. "DEVK939546
IF GTAB-T_IND NE 'X'.
MOVE-CORRESPONDING GTAB TO STOT. "DEVK939546
COLLECT STOT. "DEVK939546
ELSE.
MOVE-CORRESPONDING GTAB_LINES TO STOT.
COLLECT STOT.
ENDIF.
ENDIF. "DEVK939546
ENDIF. "DEVK939546
ENDFORM. " WRITE_DETAIL
*& Form convert_values
text
-->P_STAB_RAST1 text
-->P_STAB_GSBER text
FORM CONVERT_VALUES USING P_STAB_RAST1 "tonyc issue #3047 begin
P_STAB-GSBER.
CALL FUNCTION 'CONVERT_TO_LOCAL_CURRENCY'
EXPORTING
CLIENT = SY-MANDT
DATE = SY-DATUM
FOREIGN_AMOUNT = P_STAB_RAST1
FOREIGN_CURRENCY = P_STAB-GSBER
LOCAL_CURRENCY = 'USD'
RATE = 0
TYPE_OF_RATE = 'M'
READ_TCURR = 'X'
IMPORTING
EXCHANGE_RATE =
FOREIGN_FACTOR =
LOCAL_AMOUNT = P_STAB_RAST1
LOCAL_FACTOR =
EXCHANGE_RATEX =
FIXED_RATE =
DERIVED_RATE_TYPE =
EXCEPTIONS
NO_RATE_FOUND = 1
OVERFLOW = 2
NO_FACTORS_FOUND = 3
NO_SPREAD_FOUND = 4
DERIVED_2_TIMES = 5
OTHERS = 6 .
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. " convert_valuessolved
-
ALV output problem in displaying the field lengths.( LONG_DES1 & LONG DES)
I have declared itab of ALV output like below...
Internal table for ALV report generation***********
DATA : Begin of pdet_otab_alv occurs 0,
bukrs LIKE bsid-bukrs, "Company code
postm(4), "Posting month (YYMM format)
xblnr LIKE bsid-xblnr, "Reference document number
kunnr LIKE bsid-kunnr, "Customer (Supplier Billing Customer)
name1 LIKE kna1-name1, "Name 1
buzei like bsid-buzei,
gjahr like bsid-gjahr,
filkd like bsid-filkd, "Rep Number
rname like kna1-name1, "Rep Name
belnr LIKE bsid-belnr, "Document number (invoice number)
blart LIKE bsid-blart, "Document type
zfbdt LIKE bsid-zfbdt, "Baseline date
zterm LIKE knb1-zterm, "Terms
netdt LIKE bsega-netdt,"Due date
sgtxt LIKE bsid-sgtxt, "Text
agerg TYPE t_agerg, "Age range of invoice
wrbtr LIKE bsid-wrbtr, "Original invoice amount
due LIKE bsid-wrbtr, "Amount outstanding on invoice
long_des(250) type c, " Long description
<b> long_des TYPE string,
long_des1 TYPE string,</b>
date_s(10) type c, " Date
short_des(20) type c, " Short Description
counter type i,
End of pdet_otab_alv.
And after filling the internal table fields ( fields 'LONG_DES1' & 'LONG_DES' from FM READ_TEXT 's longtext, which are of 265 chars each )
<b>'LONG_DES1' & 'LONG_DES' are trimmed in ALV out put WHY ?</b>
w_fieldcat-fieldname = 'LONG_DES1'.
w_fieldcat-tabname = 'PDEL_OTAB_ALV'.
w_fieldcat-ref_fieldname = 'SCRTEXT_L'.
w_fieldcat-ref_tabname = 'DD03P'.
w_fieldcat-seltext_l = 'Original Note'.
w_fieldcat-col_pos = 17.
APPEND w_fieldcat TO fieldcat.
CLEAR w_fieldcat.
w_fieldcat-fieldname = 'LONG_DES'.
w_fieldcat-tabname = 'PDEL_OTAB_ALV'.
w_fieldcat-ref_fieldname = 'SCRTEXT_L'.
w_fieldcat-ref_tabname = 'DD03P'.
w_fieldcat-seltext_l = 'Latest Note'.
w_fieldcat-col_pos = 18.
APPEND w_fieldcat TO fieldcat.
CLEAR w_fieldcat.
<b>next part i.e., before passing fieldcat.... I have filled s_layout like below.</b>
<b> s_layout-max_linesize = 1000.
s_layout-colwidth_optimize = 'X'.</b>
Call the following function to display output in ALV form
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = 'ZFRSBOI0'
is_layout = s_layout
it_fieldcat = fieldcat
it_events = p_events[]
it_sort = p_it_sort[]
i_save = 'A'
TABLES
t_outtab = pdet_otab_alv1
EXCEPTIONS
program_error = 1
OTHERS = 2.
If the function call is not successful, raise error message
and come out from the program
IF sy-subrc <> 0.
message e000(00) with
'Unable to display report'(e01).
exit.
ENDIF.some body suggested me....we can display full length of text by below coding ?
Is that not correct - just asking....
s_layout-max_linesize = 1000.
s_layout-colwidth_optimize = 'X'.
Call the following function to display output in ALV form
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = 'ZFRSBOI0'
is_layout = s_layout
it_fieldcat = fieldcat
it_events = p_events[]
it_sort = p_it_sort[]
i_save = 'A'
TABLES
t_outtab = pdet_otab_alv1
EXCEPTIONS
program_error = 1
OTHERS = 2.
If the function call is not successful, raise error message
and come out from the program
IF sy-subrc <> 0.
message e000(00) with
'Unable to display report'(e01).
exit.
ENDIF. -
Passing the values like this,why m i getting error,please reply
FUNCTION ZAR_RFC_PAYTERMS.
""Local Interface:
*" IMPORTING
*" VALUE(ZAR_PAYTERMS) TYPE ZAR_PAYTERMS_SC OPTIONAL
*" VALUE(ZAR_GRDAYS) TYPE ZAR_PAYTERMS_SC OPTIONAL
*" EXPORTING
*" VALUE(PAY_TERMS) TYPE KNB1-ZTERM
DATA:ZAR_PAYTERMS_SC.
SELECT SINGLE zterm
INTO PAY_TERMS
FROM ZAR_PAYTERMS_SC
WHERE ZAR_PAYTERMS = ZAR_PAYTERMS_SC-ZAR_PAYTERMS
AND ZAR_GRDAYS = ZAR_PAYTERMS_SC-ZAR_GRDAYS.
ENDFUNCTION.
Moderator message: please read the following before posting again:
[Asking Good Questions in the Forums to get Good Answers|/people/rob.burbank/blog/2010/05/12/asking-good-questions-in-the-forums-to-get-good-answers]
Edited by: Thomas Zloch on Jul 16, 2010 9:34 AMFUNCTION ZAR_RFC_PAYTERMS.
""Local Interface:
*" IMPORTING
*" VALUE(ZAR_PAYTERMS) TYPE ZAR_PAYTERMS_SC OPTIONAL
*" VALUE(ZAR_GRDAYS) TYPE ZAR_PAYTERMS_SC OPTIONAL
*" EXPORTING
*" VALUE(PAY_TERMS) TYPE KNB1-ZTERM
DATA:ZAR_PAYTERMS_SC.
SELECT SINGLE zterm
INTO (PAY_TERMS)
FROM ZAR_PAYTERMS_SC
WHERE ZAR_PAYTERMS = ZAR_PAYTERMS_SC-ZAR_PAYTERMS
AND ZAR_GRDAYS = ZAR_PAYTERMS_SC-ZAR_GRDAYS.
ENDFUNCTION. -
Change terms of payment and credit limit
Hello, i need to change the terms of payment of a customer as well as his credit limit.
CUSTOMER - terms of payment
KNB1-ZTERM
KNVV-ZTERM
CUSTOMER - credit limit
KNKA-KLIMG
KNKA-KLIME
KNKK-KNKK
any idea of how to do this (bapi or FM) besides of doing a BDCTry function "BAPI_CUSTOMER_CREATEFROMDATA1"
First look at it seems to show that it might work. It calls function "SD_CUSTOMER_MAINTAIN_KNKA_K":
(iv) insert the credit control data
IF CREDIT_CONTROL_FLAG = 'X'
AND SY-SUBRC = 0.
CALL FUNCTION 'SD_CUSTOMER_MAINTAIN_KNKA_K'
EXPORTING
PI_REF_CUSTOMER = I_BAPIKNA102-REF_CUSTMR
PI_CUSTOMER = I_BAPIKNA103-CUSTOMER
EXCEPTIONS
KNKA_INSERT_ERROR = 23
KNKK_INSERT_ERROR = 24.
ENDIF.
Would still require some investigation. But seems like it might be a good starting point for you.
~Ian -
Merge 2 internal tables into one and show first record from common fields
Hello PPl,
I have 3 tables kna1 knb1 and knvp i have to join kna1 and knb1 on kunnr and move the data into an internal table it_data then on the basis of that data in it_data i have to retrieve records FOR ALL ENTRIES from KNVP and move it into it_knvp.
Then both it_data and it_knvp should be merged in it_alv and from that internal table report has to be displayed.
[NOTE: i had tried using loop twice but the report got messed up]
Apart from that for these set of values
0000000004
0000000418
0000000954
0000001190
0000001222
0000001451
0000001453
0000001455
0000001470
0000001508
finally knvp is showing records in such a way that for 2 records kunnr is same and so does all the other fields except PARZA and KUNN2 so the req. is to display only the first record among 2.
Plz help me by providing code for that its urgent......
Below i m providing my code so far, i hope it will be of some help.
TREMENDOUS REWARD POINTS GURANTEED!!!!!
REPORT zfanz_alv_report_whv.
TYPE-GROUPS *
TYPE-POOLS: slis.
TYPES *
TYPES: BEGIN OF ty_data,
kunnr TYPE kunnr,
ort01 TYPE ort01,
pstlz TYPE pstlz,
regio TYPE regio,
bukrs TYPE bukrs,
zterm TYPE zterm,
END OF ty_data,
BEGIN OF ty_knvp,
vkorg TYPE vkorg,
vtweg TYPE vtweg,
spart TYPE spart,
parvw TYPE parvw,
parza TYPE parza,
kunn2 TYPE kunn2,
lifnr TYPE lifnr,
END OF ty_knvp,
BEGIN OF ty_alv,
kunnr TYPE kunnr,
ort01 TYPE ort01,
pstlz TYPE pstlz,
regio TYPE regio,
bukrs TYPE bukrs,
zterm TYPE zterm,
vkorg TYPE vkorg,
vtweg TYPE vtweg,
spart TYPE spart,
parvw TYPE parvw,
parza TYPE parza,
kunn2 TYPE kunn2,
lifnr TYPE lifnr,
END OF ty_alv,
BEGIN OF ty_kna1,
kunnr TYPE kunnr,
END OF ty_kna1,
BEGIN OF ty_knb1,
bukrs TYPE bukrs,
END OF ty_knb1.
*DATA: IT_KNVP TYPE KNVP,
DATA: it_knvp TYPE STANDARD TABLE OF ty_knvp WITH HEADER LINE.
DATA: it_data TYPE STANDARD TABLE OF ty_data WITH HEADER LINE.
Report data to be shown.
DATA: it_alv TYPE STANDARD TABLE OF ty_alv WITH HEADER LINE.
Heading of the report.
DATA: t_heading TYPE slis_t_listheader.
*DATA: fieldcatalog type standard table of slis_fieldcat_alv with header
*line.
DATA: fieldcatalog TYPE slis_t_fieldcat_alv WITH HEADER LINE.
*TABLES
tables:knvp,kna1,knb1.
CONSTANTS *
CONSTANTS: c_kunnr TYPE char5 VALUE 'KUNNR',
c_ort01 TYPE char5 VALUE 'ORT01',
c_pstlz TYPE char5 VALUE 'PSTLZ',
c_regio TYPE char5 VALUE 'REGIO',
c_bukrs TYPE char5 VALUE 'BUKRS',
c_zterm TYPE char5 VALUE 'ZTERM',
c_vkorg TYPE char5 VALUE 'VKORG',
c_vtweg TYPE char5 VALUE 'VTWEG',
c_spart TYPE char5 VALUE 'SPART',
c_parvw TYPE char5 VALUE 'PARVW',
c_parza TYPE char5 VALUE 'PARZA',
c_kunn2 TYPE char5 VALUE 'KUNN2',
c_lifnr TYPE char5 VALUE 'LIFNR'.
WORKAREA *
DATA: wa_data TYPE ty_data,
wa_knvp TYPE ty_knvp,
wa_alv TYPE ty_alv,
wa_fcat TYPE slis_fieldcat_alv,
wa_layout TYPE slis_layout_alv.
======================= Selection Screen ==========================
SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
*DATA: wa_kunnr LIKE kna1-kunnr,
wa_bukrs LIKE knb1-bukrs,
wa_vkorg LIKE knvp-vkorg,
wa_vtweg LIKE knvp-vtweg,
wa_spart LIKE knvp-spart,
wa_parvw LIKE knvp-parvw.
SELECT-OPTIONS *
SELECT-OPTIONS s_kunnr FOR kna1-kunnr NO INTERVALS OBLIGATORY
SELECT-OPTIONS: s_bukrs FOR knb1-bukrs NO-EXTENSION NO INTERVALS,
s_vkorg FOR knvp-vkorg NO-EXTENSION NO INTERVALS,
s_vtweg FOR knvp-vtweg NO-EXTENSION NO INTERVALS,
s_spart FOR knvp-spart NO-EXTENSION NO INTERVALS,
s_parvw FOR knvp-parvw NO-EXTENSION NO INTERVALS.
SELECTION-SCREEN: END OF BLOCK b1.
AT SELECTION-SCREEN *
AT SELECTION-SCREEN ON s_kunnr.
PERFORM validate_data.
START-OF-SELECTION *
START-OF-SELECTION.
PERFORM get_data. "fetch data from table and perform join on them
PERFORM final_table.
PERFORM build_fieldcatalog. "populate field catalog
PERFORM build_layout.
PERFORM grid_display. "display the result in ALV grid
END-OF-SELECTION *
END-OF-SELECTION.
describe
SUBROUTINES (FORMS)
*& Form get_data
Gets the information to be shown in the report.
Join on tables KNA1, KNB1 and for all enteries in KNVP
--> p1 text
<-- p2 text
FORM get_data.
SELECT kna1~kunnr
kna1~ort01
kna1~pstlz
kna1~regio
knb1~bukrs
knb1~zterm
INTO TABLE it_data
FROM kna1 INNER JOIN knb1
ON kna1kunnr = knb1kunnr
WHERE kna1~kunnr IN s_kunnr
AND knb1~bukrs IN s_bukrs.
SELECT vkorg
vtweg
spart
parvw
parza
kunn2
lifnr
INTO TABLE it_knvp FROM knvp
FOR ALL ENTRIES IN it_data
WHERE knvp~kunnr = it_data-kunnr
AND vkorg IN s_vkorg
AND vtweg IN s_vtweg
AND spart IN s_spart
AND parvw IN s_parvw.
ENDFORM. " get_data
*ENDFORM. " get_data
*& Form FINAL_TABLE
text
--> p1 text
<-- p2 text
FORM final_table .
LOOP AT it_data.
it_alv-kunnr = it_data-kunnr.
it_alv-ort01 = it_data-ort01.
it_alv-pstlz = it_data-pstlz.
it_alv-regio = it_data-regio.
it_alv-bukrs = it_data-bukrs.
it_alv-zterm = it_data-zterm.
APPEND it_alv.
CLEAR it_alv.
ENDLOOP.
LOOP AT it_knvp.
it_alv-vkorg = it_knvp-vkorg.
it_alv-vtweg = it_knvp-vtweg.
it_alv-spart = it_knvp-spart.
it_alv-parvw = it_knvp-parvw.
it_alv-parza = it_knvp-parza.
it_alv-kunn2 = it_knvp-kunn2.
it_alv-lifnr = it_knvp-lifnr.
APPEND it_alv.
CLEAR it_alv.
ENDLOOP.
ENDFORM. " FINAL_TABLE
*& Form BUILD_FIELDCATALOG
Build Fieldcatalog for ALV Report
FORM build_fieldcatalog.
IF it_alv[] IS NOT INITIAL.
wa_fcat-fieldname = c_kunnr.
wa_fcat-seltext_l = 'Customer Master'(001).
wa_fcat-col_pos = 1.
APPEND wa_fcat TO fieldcatalog.
CLEAR wa_fcat.
wa_fcat-fieldname = c_ort01.
wa_fcat-seltext_l = 'City'(002).
wa_fcat-col_pos = 2.
APPEND wa_fcat TO fieldcatalog.
CLEAR wa_fcat.
wa_fcat-fieldname = c_pstlz.
wa_fcat-seltext_l = 'Postal Code'(003).
wa_fcat-col_pos = 3.
APPEND wa_fcat TO fieldcatalog.
CLEAR wa_fcat.
wa_fcat-fieldname = c_regio.
wa_fcat-seltext_l = 'Region'(004).
wa_fcat-col_pos = 4.
APPEND wa_fcat TO fieldcatalog.
CLEAR wa_fcat.
wa_fcat-fieldname = c_bukrs.
wa_fcat-seltext_l = 'Company Code'(005).
wa_fcat-col_pos = 5.
APPEND wa_fcat TO fieldcatalog.
CLEAR wa_fcat.
wa_fcat-fieldname = c_zterm.
wa_fcat-seltext_l = 'Terms of payment'(006).
wa_fcat-col_pos = 6.
APPEND wa_fcat TO fieldcatalog.
CLEAR wa_fcat.
wa_fcat-fieldname = c_vkorg.
wa_fcat-seltext_l = 'Sales Organization'(007).
wa_fcat-col_pos = 7.
APPEND wa_fcat TO fieldcatalog.
CLEAR wa_fcat.
wa_fcat-fieldname = c_vtweg.
wa_fcat-seltext_l = 'Distribution Channel'(008).
wa_fcat-col_pos = 8.
APPEND wa_fcat TO fieldcatalog.
CLEAR wa_fcat.
wa_fcat-fieldname = c_spart.
wa_fcat-seltext_l = 'Division'(009).
wa_fcat-col_pos = 9.
APPEND wa_fcat TO fieldcatalog.
CLEAR wa_fcat.
wa_fcat-fieldname = c_parvw.
wa_fcat-seltext_l = 'Partner function'(010).
wa_fcat-col_pos = 10.
APPEND wa_fcat TO fieldcatalog.
CLEAR wa_fcat.
wa_fcat-fieldname = c_kunn2.
wa_fcat-seltext_l = 'Customer number of partner'(011).
wa_fcat-col_pos = 11.
APPEND wa_fcat TO fieldcatalog.
CLEAR wa_fcat.
wa_fcat-fieldname = c_lifnr.
wa_fcat-seltext_l = 'Account Number of Vendor'(012).
wa_fcat-col_pos = 12.
APPEND wa_fcat TO fieldcatalog.
CLEAR wa_fcat.
wa_fcat-fieldname = c_parza.
wa_fcat-seltext_l = 'Partner counter'(013).
wa_fcat-col_pos = 13.
APPEND wa_fcat TO fieldcatalog.
CLEAR wa_fcat.
*fieldcatalog-fieldname = c_kunnr.
fieldcatalog-seltext_l = 'Customer Master'(001).
fieldcatalog-col_pos = 1.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = c_ort01.
fieldcatalog-seltext_l = 'City'(002).
fieldcatalog-col_pos = 2.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = c_pstlz.
fieldcatalog-seltext_l = 'Postal Code'(003).
fieldcatalog-col_pos = 3.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = c_regio.
fieldcatalog-seltext_l = 'Region'(004).
fieldcatalog-col_pos = 4.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = c_bukrs.
fieldcatalog-seltext_l = 'Company Code'(005).
fieldcatalog-col_pos = 5.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = c_zterm.
fieldcatalog-seltext_l = 'Terms of payment'(006).
fieldcatalog-col_pos = 6.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = c_vkorg.
fieldcatalog-seltext_l = 'Sales Organization'(007).
fieldcatalog-col_pos = 7.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = c_vtweg.
fieldcatalog-seltext_l = 'Distribution Channel'(008).
fieldcatalog-col_pos = 8.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = c_spart.
fieldcatalog-seltext_l = 'Division'(009).
fieldcatalog-col_pos = 9.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = c_parvw.
fieldcatalog-seltext_l = 'Partner function'(010).
fieldcatalog-col_pos = 10.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = c_kunn2.
fieldcatalog-seltext_l = 'Customer number of partner'(011).
fieldcatalog-col_pos = 11.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = c_lifnr.
fieldcatalog-seltext_l = 'Account Number of Vendor'(012).
fieldcatalog-col_pos = 12.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = c_parza.
fieldcatalog-seltext_l = 'Partner counter'(013).
fieldcatalog-col_pos = 13.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
ENDIF.
ENDFORM. " BUILD_FIELDCATALOG
*& Form build_layout
text
--> p1 text
<-- p2 text
form build_layout .
Set layout field for field attributes(i.e. input/output)
wa_layout-stylefname = 'FIELD_STYLE'.
wa_layout-zebra = 'X'.
endform. " build_layout
*& Form GRID_DISPLAY
text
FORM grid_display. "using t_data type ty_tbl_data.
IF it_alv[] IS NOT INITIAL.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid
IS_LAYOUT = wa_layout
it_fieldcat = fieldcatalog[]
TABLES
t_outtab = it_alv[]
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDIF.
ENDIF.
ENDFORM. "GRID_DISPLAY
*& Form VALIDATE_DATA
text
--> p1 text
<-- p2 text
FORM validate_data .
DATA : li_kna1 TYPE STANDARD TABLE OF ty_kna1,
li_knb1 TYPE STANDARD TABLE OF ty_knb1,
li_knvp TYPE STANDARD TABLE OF ty_knvp.
SELECT kunnr
FROM kna1
INTO TABLE li_kna1
WHERE kunnr IN s_kunnr.
IF sy-subrc <> 0.
MESSAGE 'Invalid Customer Number'(013) TYPE 'E'.
ENDIF.
SELECT bukrs
FROM t001
INTO TABLE li_knb1
WHERE bukrs IN s_bukrs.
IF sy-subrc <> 0.
MESSAGE 'Invalid Company Code'(014) TYPE 'E'.
ENDIF.
SELECT vkorg
FROM tvko
INTO TABLE li_knvp
WHERE vkorg IN s_vkorg.
IF sy-subrc <> 0.
MESSAGE 'Invalid Sales Organization'(015) TYPE 'E'.
ENDIF.
SELECT vtweg
FROM tvtw
INTO TABLE li_knvp
WHERE vtweg IN s_vtweg.
IF sy-subrc <> 0.
MESSAGE 'Invalid Distribution Channel'(016) TYPE 'E'.
ENDIF.
SELECT spart
FROM tspa
INTO TABLE li_knvp
WHERE spart IN s_spart.
IF sy-subrc <> 0.
MESSAGE 'Invalid Division'(017) TYPE 'E'.
ENDIF.
SELECT parvw
FROM tpar
INTO TABLE li_knvp
WHERE parvw IN s_parvw.
IF sy-subrc <> 0.
MESSAGE 'Invalid Partner function'(018) TYPE 'E'.
ENDIF.
ENDFORM. " VALIDATE_DATA*1----
FORM get_data.
SELECT kna1~kunnr
kna1~ort01
kna1~pstlz
kna1~regio
knb1~bukrs
knb1~zterm
INTO TABLE it_data
FROM kna1 INNER JOIN knb1
ON kna1kunnr = knb1kunnr
WHERE kna1~kunnr IN s_kunnr
AND knb1~bukrs IN s_bukrs.
CHECK it_data[] IS NOT INITIAL.
SELECT kunnr
vkorg
vtweg
spart
parvw
parza
kunn2
lifnr
INTO TABLE it_knvp FROM knvp
FOR ALL ENTRIES IN it_data
WHERE kunnr = it_data-kunnr
AND vkorg IN s_vkorg
AND vtweg IN s_vtweg
AND spart IN s_spart
AND parvw IN s_parvw.
IF sy-subrc EQ 0.
SORT it_knvp BY kunnr.
ENDIF.
ENDFORM. " get_data
*2----
FORM final_table .
LOOP AT it_data INTO wa_data.
READ TABLE it_knvp
INTO wa_knvp
WITH KEY kunnr = wa_data-kunnr
BINARY SEARCH .
IF sy-subrc = 0.
MOVE-CORRESPONDING wa_data TO wa_alv.
MOVE-CORRESPONDING wa_knvp TO wa_alv.
APPEND wa_alv TO it_alv.
ENDIF.
ENDLOOP.
ENDFORM. " FINAL_TABLE
Edited by: Faisal Khan on Mar 27, 2008 1:59 PM -
report ZSD_CUST_CREATE
no standard page heading line-size 255.
include bdcrecx1.
Selection-screen **
SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME TITLE text-001.
PARAMETERS : p_fnam LIKE rlgrap-filename.
SELECTION-SCREEN END OF BLOCK blk1.
Declaration **
DATA : p_fname TYPE string.
data : val(2).
DATA : BEGIN OF it_xd01 OCCURS 0,
KTOKD(4), "ACCOUNT GROUP
BUKRS(4), "COMPANY CODE
VKORG(4), "SALES ORGANISATION
VTWEG(2), "DISTRIBUTION CHANNEL
SPART(2), "DIVISION
ZAV(1), "ADDRESS
NAME1(35), "NAME1
NAME2(40), "NAME2
NAME3(40), "NAME3
NAME4(40), "NAME4
SORT1(20), "SEARCH TERM A
SORT2(20), "SEARCH TERM B
STRAS(35), "STREET
HOUSE1(10), "HOUSE NUMBER 1
HOUSE2(10), "HOUSE NUMBER 2
STREET(60), "Street
*"Rajat
STREET2(35), "STREET2
STREET3(35), "STREET3
STREET4(35), "STREET4
STREET5(35), "STREET5
ORT02(35), "DISTRICT
PSTLZ(10), "POSTAL CODE
ORT01(35), "CITY
land1(3), "Country key
regio(3), "Region (State, Province, County)
TXJCD(15), "TAX JURISDICTION
LZONE(10), "TRANSPORTATION ZONE
spras(2), "Language key
TELF1(16), "TELEPHONE
TELEXT(10), "EXTENSION TEL
TELFX(31), "TELEFAX
TELFEXT(10), "TELEFAX EXTENSION
KNURL(132), "EMAIL ID
COMM(13), "STANDRAD COMMUNICATION TYPE
VENDOR(10), "VENDOR
begru(4), "Authorization group
STCD1(16), "TAX CODE1
STCD2(11), "TAX CODE2
STCEG(20), "VAT REGISTRATION NUMBER
KUKLA(2), "CUSTOMER CLASS
BRAN1(10), "INDUSTRY CODE
BRAN2(10), "INDUSTRY CODE1
BRAN3(10), "INDUSTRY CODE2
BRAN4(10), "INDUSTRY CODE3
BRAN5(10), "INDUSTRY CODE4
ABLAD1(25), "UNLOADING POINT
ABLAD2(25), "UNLOADING POINT
DEFAB(1) , "CHECKBOX
KNFAK(2), "CALENDAR KEY
KNFAK1(2), "CALENDAR KEY
WANID(3), "GOODS RECIEVING HOURS FOR BN
WANID1(3), "GOODS RECIEVING HOURS FOR SV
name11(40), "Name 1
name12(35), "Name 2
ABTNR11(4), "DEPARTMENT
pafkt11(2), "Contact person function
PARLA11(2), "CONTACT PERSON LANGUAGE
TELEF11(16), "TELEPHONE NUMBER
TELEX11(10), "TELEPHONE EXTENSION
TELFA11(31), "FAX
TELFX11(10), "FAX EXTENSION
EMAIL11(40), "EMAIL
COMMU11(10), "COMMUNICATION TYPE
name21(40), "Name 1
name22(35), "Name 2
ABTNR21(4), "DEPARTMENT
pafkt21(2), "Contact person function
PARLA21(2), "CONTACT PERSON LANGUAGE
TELEF21(16), "TELEPHONE NUMBER
TELEX21(10), "TELEPHONE EXTENSION
TELFA21(31), "FAX
TELFX21(10), "FAX EXTENSION
EMAIL21(40), "EMAIL
COMMU21(10), "COMMUNICATION TYPE
name31(40), "Name 1
name32(35), "Name 2
ABTNR31(4), "DEPARTMENT
pafkt31(2), "Contact person function
PARLA31(2), "CONTACT PERSON LANGUAGE
TELEF31(16), "TELEPHONE NUMBER
TELEX31(10), "TELEPHONE EXTENSION
TELFA31(31), "FAX
TELFX31(10), "FAX EXTENSION
EMAIL31(40), "EMAIL
COMMU31(10), "COMMUNICATION TYPE
name41(40), "Name 1
name42(35), "Name 2
ABTNR41(4), "DEPARTMENT
pafkt41(2), "Contact person function
PARLA41(2), "CONTACT PERSON LANGUAGE
TELEF41(16), "TELEPHONE NUMBER
TELEX41(10), "TELEPHONE EXTENSION
TELFA41(42), "FAX
TELFX41(10), "FAX EXTENSION
EMAIL41(40), "EMAIL
COMMU41(10), "COMMUNICATION TYPE
name51(40), "Name 1
name52(35), "Name 2
ABTNR51(4), "DEPARTMENT
pafkt51(2), "Contact person function
PARLA51(2), "CONTACT PERSON LANGUAGE
TELEF51(16), "TELEPHONE NUMBER
TELEX51(10), "TELEPHONE EXTENSION
TELFA51(42), "FAX
TELFX51(10), "FAX EXTENSION
EMAIL51(40), "EMAIL
COMMU51(10), "COMMUNICATION TYPE
akont(10), "Reconciliation Account in General Ledger
zuawa(3), "Key for sorting according to assignment numbers
BEGRU1(4), "Authorization group
fdgrv(10), "Planning group
ZTERM(4), "Terms of payment key
XZVER(1), "Indicator: Record Payment History
MAHNS(1), "DUNNING LEVEL
BUSAB(2), "ACCOUNTING CLERK
AWAHR(3),
VKBUR(4), "SALES OFFICE
BEGRU2(2), "AUTHORIZATION GROUP
VKGRP(3), "SALES GROUP
ORDER(3), "ORDER PROBABILITY
KDGRP(2), "CUSTOMER GROUP
WAERS(3), "CURRENCY
KONDA(2), "PRICE GROUP
KALKS(1), "CUSTOMER PRICING PROCEDURE
VSBED(2), "DELIVERY PRIORITY
VWERK(4), "DELIVERING PLANT
AUTLF(1), "COMPLETE DELIVERY
KZTLF(1), "Partial delivery at line item
ANTLF(2), "MAXIMUM PARTIAL DELIVERY
PERFK(2), "Invoice dates (calendar identification)
PERRL(2), "Invoice list schedule (calendar identification)
INCO1(3), "Incoterms (part 1)
INCO2(28), "Incoterms (part 2)
ZTERM1(6), "Terms of payment key
KKBER(4), "Credit control area
KTGRD(2), "Account assignment group for this customer
TAX(5), "Tax
KTONR1(10), "CUSTOMER NUMBER OF FOR BP
KTONR2(10), "CUSTOMER NUMBER OF FOR PY
KTONR3(10), "CUSTOMER NUMBER OF FOR SH
KTONR4(10), "CUSTOMER NUMBER OF FOR Y1
KTONR5(10), "CUSTOMER NUMBER OF FOR Y2
KTONR6(10), "CUSTOMER NUMBER OF FOR Y3
KTONR7(10), "CUSTOMER NUMBER OF FOR ZF
KTONR8(10), "CUSTOMER NUMBER OF FOR ZR
KTONR9(10), "CUSTOMER NUMBER OF FOR ZS
KTONR10(10), "CUSTOMER NUMBER OF FOR ZZ
END OF IT_XD01.
I N I T I A L I Z A T I O N
INITIALIZATION.
VALUE_REQUEST FOR FILE UPLOAD *
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_fnam.
CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
EXPORTING
PROGRAM_NAME = SYST-REPID
DYNPRO_NUMBER = SYST-DYNNR
FIELD_NAME = ' '
STATIC = ' '
MASK = '*.TXT'
CHANGING
file_name = p_fnam
EXCEPTIONS
mask_too_long = 0
OTHERS = 0.
S T A R T O F S E L E C T I O N
START-OF-SELECTION.
perform upload.
The data from presentation server is being uploaded to R/3 system
start-of-selection.
perform open_group.
LOOP AT IT_XD01.
data : txjcd(15).
REFRESH BDCDATA.
perform bdc_dynpro using 'SAPMF02D' '0100'.
*perform bdc_field using 'BDC_CURSOR' 'USE_ZAV'.
perform bdc_field using 'BDC_OKCODE' '/00'.
perform bdc_field using 'RF02D-BUKRS' IT_XD01-BUKRS.
perform bdc_field using 'RF02D-VKORG' IT_XD01-VKORG.
perform bdc_field using 'RF02D-VTWEG' IT_XD01-VTWEG.
perform bdc_field using 'RF02D-SPART' IT_XD01-SPART.
perform bdc_field using 'RF02D-KTOKD' IT_XD01-KTOKD.
perform bdc_field using 'USE_ZAV' 'X'.
perform bdc_dynpro using 'SAPMF02D' '0111'.
perform bdc_field using 'BDC_OKCODE' '=$2OC'.
perform bdc_field using 'BDC_CURSOR' 'SZA1_D0100-SMTP_ADDR'.
perform bdc_field using 'BDC_CURSOR' 'ADDR1_DATA-TAXJURCODE'.
*"Rajat
perform bdc_field using 'ADDR1_DATA-NAME1' IT_XD01-NAME1.
perform bdc_field using 'ADDR1_DATA-NAME2' IT_XD01-NAME2.
perform bdc_field using 'ADDR1_DATA-NAME3' IT_XD01-NAME3.
perform bdc_field using 'ADDR1_DATA-NAME4' IT_XD01-NAME4.
perform bdc_field using 'ADDR1_DATA-SORT1' IT_XD01-SORT1.
perform bdc_field using 'ADDR1_DATA-SORT2' IT_XD01-SORT2.
perform bdc_field using 'ADDR1_DATA-STREET' IT_XD01-STRAS.
perform bdc_field using 'ADDR1_DATA-HOUSE_NUM1' IT_XD01-HOUSE1.
perform bdc_field using 'ADDR1_DATA-HOUSE_NUM2' IT_XD01-HOUSE2.
perform bdc_field using 'ADDR1_DATA-CITY2' IT_XD01-ORT02.
perform bdc_field using 'ADDR1_DATA-POST_CODE1' IT_XD01-PSTLZ.
perform bdc_field using 'ADDR1_DATA-CITY1' IT_XD01-ORT01.
perform bdc_field using 'ADDR1_DATA-COUNTRY' IT_XD01-LAND1.
perform bdc_field using 'ADDR1_DATA-REGION' IT_XD01-REGIO.
if it_xd01-LAND1 = 'US'.
CALL FUNCTION 'DETERMINE_TXJCD_EXTERNALLY'
EXPORTING
country = it_xd01-land1
region = it_xd01-regio
city = it_xd01-ORT01
COUNTY = it_xd01-ORT02
zipcode = it_xd01-pstlz
IMPORTING
TXJCD = txjcd.
perform bdc_field using 'ADDR1_DATA-TAXJURCODE' txjcd.
ENDIF.
perform bdc_field using 'ADDR1_DATA-TRANSPZONE' IT_XD01-LZONE.
perform bdc_field using 'ADDR1_DATA-LANGU' IT_XD01-SPRAS.
perform bdc_field using 'SZA1_D0100-TEL_NUMBER' IT_XD01-TELF1.
perform bdc_field using 'SZA1_D0100-TEL_EXTENS' IT_XD01-TELEXT.
perform bdc_field using 'SZA1_D0100-FAX_NUMBER' IT_XD01-TELFX.
perform bdc_field using 'SZA1_D0100-FAX_EXTENS' IT_XD01-TELFEXT.
perform bdc_field using 'SZA1_D0100-SMTP_ADDR' IT_XD01-KNURL.
perform bdc_field using 'ADDR1_DATA-DEFLT_COMM' IT_XD01-COMM.
perform bdc_dynpro using 'SAPMF02D' '0111'.
perform bdc_field using 'BDC_OKCODE' '/00'.
perform bdc_field using 'BDC_CURSOR' 'ADDR1_DATA-LOCATION'.
*perform bdc_field using 'ADDR1_DATA-NAME1' 'NAME1'.
*perform bdc_field using 'ADDR1_DATA-NAME2' 'NAME2'.
*perform bdc_field using 'ADDR1_DATA-NAME3' 'NAME3'.
*perform bdc_field using 'ADDR1_DATA-NAME4' 'NAME4'.
*perform bdc_field using 'ADDR1_DATA-SORT1' 'SITECODE'.
*perform bdc_field using 'ADDR1_DATA-SORT2' 'DUNS NUMBER'.
perform bdc_field using 'ADDR1_DATA-STR_SUPPL1' IT_XD01-STREET2.
perform bdc_field using 'ADDR1_DATA-STR_SUPPL2' IT_XD01-STREET3.
*perform bdc_field using 'ADDR1_DATA-STREET' IT_XD01-STREET3.
*"Rajat
*perform bdc_field using 'ADDR1_DATA-HOUSE_NUM1' '129'.
*perform bdc_field using 'ADDR1_DATA-HOUSE_NUM2' 'YY'.
perform bdc_field using 'ADDR1_DATA-STR_SUPPL3' IT_XD01-STREET4.
perform bdc_field using 'ADDR1_DATA-LOCATION' IT_XD01-STREET5.
*perform bdc_field using 'ADDR1_DATA-CITY2' 'DISTRICT'.
*perform bdc_field using 'ADDR1_DATA-POST_CODE1' '44087'.
*perform bdc_field using 'ADDR1_DATA-CITY1' 'TWINSBERG'.
*perform bdc_field using 'ADDR1_DATA-COUNTRY' 'US'.
*perform bdc_field using 'ADDR1_DATA-REGION' 'OH'.
*perform bdc_field using 'ADDR1_DATA-TAXJURCODE' '3615325401'
*perform bdc_field using 'ADDR1_DATA-TRANSPZONE' '0000000001'.
*perform bdc_field using 'ADDR1_DATA-LANGU' 'EN'.
*perform bdc_field using 'SZA1_D0100-TEL_NUMBER' '3304258926'.
*perform bdc_field using 'SZA1_D0100-TEL_EXTENS' '8926'.
*perform bdc_field using 'SZA1_D0100-FAX_NUMBER' '3304258926'.
*perform bdc_field using 'SZA1_D0100-FAX_EXTENS' '8926'.
*perform bdc_field using 'SZA1_D0100-SMTP_ADDR' '[email protected]'
*perform bdc_field using 'ADDR1_DATA-DEFLT_COMM' 'FAX'.
perform bdc_dynpro using 'SAPMF02D' '0120'.
perform bdc_field using 'BDC_CURSOR' 'KNA1-STCD2'.
perform bdc_field using 'BDC_OKCODE' '/00'.
perform bdc_field using 'KNA1-LIFNR' IT_XD01-VENDOR."Rajat
perform bdc_field using 'KNA1-BEGRU' IT_XD01-BEGRU.
perform bdc_field using 'KNA1-STCD1' IT_XD01-STCD1.
perform bdc_field using 'KNA1-STCD2' IT_XD01-STCD2.
perform bdc_field using 'KNA1-STCEG' IT_XD01-STCEG.
perform bdc_field using 'KNA1-TXJCD' IT_XD01-TXJCD.
perform bdc_field using 'KNA1-LZONE' IT_XD01-LZONE.
perform bdc_dynpro using 'SAPMF02D' '0125'.
perform bdc_field using 'BDC_CURSOR' 'KNA1-BRAN1'.
perform bdc_field using 'BDC_OKCODE' '=BRAN'.
perform bdc_field using 'KNA1-KUKLA' IT_XD01-KUKLA.
perform bdc_field using 'KNA1-BRAN1' IT_XD01-BRAN1.
perform bdc_dynpro using 'SAPMF02D' '1250'.
perform bdc_field using 'BDC_CURSOR' 'KNA1-BRAN5'.
perform bdc_field using 'BDC_OKCODE' '=ENTR'.
perform bdc_field using 'KNA1-BRAN2' IT_XD01-BRAN2.
perform bdc_field using 'KNA1-BRAN3' IT_XD01-BRAN3.
perform bdc_field using 'KNA1-BRAN4' IT_XD01-BRAN4.
perform bdc_field using 'KNA1-BRAN5' IT_XD01-BRAN5.
perform bdc_dynpro using 'SAPMF02D' '0125'.
perform bdc_field using 'BDC_CURSOR' 'KNA1-KUKLA'.
perform bdc_field using 'BDC_OKCODE' '/00'.
perform bdc_field using 'KNA1-KUKLA' IT_XD01-KUKLA.
perform bdc_field using 'KNA1-BRAN1' IT_XD01-BRAN1.
perform bdc_dynpro using 'SAPMF02D' '0130'.
perform bdc_field using 'BDC_CURSOR' 'KNBK-BANKS(01)'.
perform bdc_field using 'BDC_OKCODE' '=ENTR'.
perform bdc_dynpro using 'SAPMF02D' '0340'.
perform bdc_field using 'BDC_CURSOR' 'KNVA-KNFAK(02)'.
perform bdc_field using 'BDC_OKCODE' '=ENTR'.
perform bdc_field using 'KNVA-ABLAD(01)' IT_XD01-ABLAD1.
perform bdc_field using 'KNVA-ABLAD(02)' IT_XD01-ABLAD2.
perform bdc_field using 'KNVA-DEFAB(01)' 'X'.
perform bdc_field using 'KNVA-KNFAK(01)' IT_XD01-KNFAK.
perform bdc_field using 'KNVA-KNFAK(02)' IT_XD01-KNFAK1.
perform bdc_dynpro using 'SAPMF02D' '0340'.
perform bdc_field using 'BDC_CURSOR' 'KNVA-KNFAK(01)'.
perform bdc_field using 'BDC_OKCODE' '=WANZ'.
perform bdc_dynpro using 'SAPMF02D' '1340'.
perform bdc_field using 'BDC_CURSOR' 'KNVA-WANID'.
perform bdc_field using 'BDC_OKCODE' '=ENTR'.
perform bdc_field using 'KNVA-WANID' IT_XD01-WANID.
perform bdc_dynpro using 'SAPMF02D' '0340'.
perform bdc_field using 'BDC_CURSOR' 'KNVA-KNFAK(02)'.
perform bdc_field using 'BDC_OKCODE' '=WANZ'.
perform bdc_dynpro using 'SAPMF02D' '1340'.
perform bdc_field using 'BDC_CURSOR' 'KNVA-WANID'.
perform bdc_field using 'BDC_OKCODE' '=ENTR'.
perform bdc_field using 'KNVA-WANID' IT_XD01-WANID1.
perform bdc_dynpro using 'SAPMF02D' '0340'.
perform bdc_field using 'BDC_CURSOR' 'RF02D-KUNNR'.
perform bdc_field using 'BDC_OKCODE' '=ENTR'.
perform bdc_dynpro using 'SAPMF02D' '0370'.
perform bdc_field using 'BDC_CURSOR' 'RF02D-KUNNR'.
perform bdc_field using 'BDC_OKCODE' '=ENTR'.
perform bdc_field using 'KNA1-CIVVE' 'X'.
perform bdc_dynpro using 'SAPMF02D' '0360'.
perform bdc_field using 'BDC_CURSOR' 'KNVK-PAFKT(01)'.
perform bdc_field using 'BDC_OKCODE' '=ENTR'.
IF IT_XD01-NAME11 <> 'X'.
perform bdc_field using 'KNVK-NAMEV(01)' IT_XD01-NAME12.
perform bdc_field using 'KNVK-NAME1(01)' IT_XD01-NAME11.
perform bdc_field using 'KNVK-ABTNR(01)' IT_XD01-ABTNR11.
perform bdc_field using 'KNVK-PAFKT(01)' IT_XD01-PAFKT11.
perform bdc_dynpro using 'SAPMF02D' '0360'.
perform bdc_field using 'BDC_CURSOR' 'KNVK-NAME1(01)'.
perform bdc_field using 'BDC_OKCODE' '=LSDP'.
perform bdc_dynpro using 'SAPMF02D' '1361'.
perform bdc_field using 'BDC_OKCODE' '/00'.
perform bdc_field using 'KNVK-ABTNR' IT_XD01-ABTNR11.
perform bdc_field using 'KNVK-PAFKT' IT_XD01-PAFKT11.
perform bdc_field using 'BDC_CURSOR' 'SZA5_D0700-SMTP_ADDR'.
perform bdc_field using 'ADDR3_DATA-NAME_LAST' IT_XD01-NAME12.
perform bdc_field using 'ADDR3_DATA-NAME_FIRST' IT_XD01-NAME11.
perform bdc_field using 'ADDR3_DATA-LANGU_P' IT_XD01-PARLA11.
perform bdc_field using 'SZA5_D0700-TEL_NUMBER' IT_XD01-TELEF11 .
perform bdc_field using 'SZA5_D0700-TEL_EXTENS' it_xd01-telex11.
perform bdc_field using 'SZA5_D0700-FAX_NUMBER' IT_XD01-TELFA11.
perform bdc_field using 'SZA5_D0700-FAX_EXTENS' IT_XD01-TELFX11.
perform bdc_field using 'SZA5_D0700-SMTP_ADDR' IT_XD01-EMAIL11.
perform bdc_field using 'ADDR3_DATA-DEFLT_COMM' IT_XD01-COMMU11.
perform bdc_dynpro using 'SAPMF02D' '1361'.
perform bdc_field using 'BDC_OKCODE' '/00'.
perform bdc_dynpro using 'SAPMF02D' '0360'.
perform bdc_field using 'BDC_CURSOR' 'KNVK-PAFKT(02)'.
perform bdc_field using 'BDC_OKCODE' '=ENTR'.
ENDIF.
IF IT_XD01-NAME21 <> 'X'.
perform bdc_field using 'KNVK-NAMEV(02)' IT_XD01-NAME22.
perform bdc_field using 'KNVK-NAME1(02)' IT_XD01-NAME21.
perform bdc_field using 'KNVK-ABTNR(02)' IT_XD01-ABTNR21.
perform bdc_field using 'KNVK-PAFKT(02)' IT_XD01-PAFKT21.
perform bdc_dynpro using 'SAPMF02D' '0360'.
perform bdc_field using 'BDC_CURSOR' 'KNVK-NAME1(02)'.
perform bdc_field using 'BDC_OKCODE' '=LSDP'.
perform bdc_dynpro using 'SAPMF02D' '1361'.
perform bdc_field using 'BDC_OKCODE' '/00'.
perform bdc_field using 'KNVK-ABTNR' IT_XD01-ABTNR21.
perform bdc_field using 'KNVK-PAFKT' IT_XD01-PAFKT21.
perform bdc_field using 'BDC_CURSOR' 'ADDR3_DATA-DEFLT_COMM'.
perform bdc_field using 'ADDR3_DATA-NAME_LAST' IT_XD01-NAME22.
perform bdc_field using 'ADDR3_DATA-NAME_FIRST' IT_XD01-NAME21.
perform bdc_field using 'ADDR3_DATA-LANGU_P' IT_XD01-PARLA21.
perform bdc_field using 'SZA5_D0700-TEL_NUMBER' IT_XD01-TELEF21.
perform bdc_field using 'SZA5_D0700-TEL_EXTENS' IT_XD01-TELEX21.
perform bdc_field using 'SZA5_D0700-FAX_NUMBER' IT_XD01-TELFA21.
perform bdc_field using 'SZA5_D0700-FAX_EXTENS' IT_XD01-TELFX21.
perform bdc_field using 'SZA5_D0700-SMTP_ADDR' IT_XD01-EMAIL21.
perform bdc_field using 'ADDR3_DATA-DEFLT_COMM' IT_XD01-COMMU21.
perform bdc_dynpro using 'SAPMF02D' '1361'.
perform bdc_field using 'BDC_OKCODE' '/00'.
perform bdc_dynpro using 'SAPMF02D' '0360'.
perform bdc_field using 'BDC_CURSOR' 'KNVK-PAFKT(03)'.
perform bdc_field using 'BDC_OKCODE' '=ENTR'.
ENDIF.
IF IT_XD01-NAME31 <> 'X'.
perform bdc_field using 'KNVK-NAMEV(03)' IT_XD01-NAME32.
perform bdc_field using 'KNVK-NAME1(03)' IT_XD01-NAME31.
perform bdc_field using 'KNVK-ABTNR(03)' IT_XD01-ABTNR31.
perform bdc_field using 'KNVK-PAFKT(03)' IT_XD01-PAFKT31.
perform bdc_dynpro using 'SAPMF02D' '0360'.
perform bdc_field using 'BDC_CURSOR' 'KNVK-NAME1(03)'.
perform bdc_field using 'BDC_OKCODE' '=LSDP'.
perform bdc_dynpro using 'SAPMF02D' '1361'.
perform bdc_field using 'BDC_OKCODE' '/00'.
perform bdc_field using 'KNVK-ABTNR' IT_XD01-ABTNR31.
perform bdc_field using 'KNVK-PAFKT' IT_XD01-PAFKT31.
perform bdc_field using 'BDC_CURSOR' 'ADDR3_DATA-DEFLT_COMM'.
perform bdc_field using 'ADDR3_DATA-NAME_LAST' IT_XD01-NAME32.
perform bdc_field using 'ADDR3_DATA-NAME_FIRST' IT_XD01-NAME31.
perform bdc_field using 'ADDR3_DATA-LANGU_P' IT_XD01-PARLA31
perform bdc_field using 'SZA5_D0700-TEL_NUMBER' IT_XD01-TELEF31.
perform bdc_field using 'SZA5_D0700-TEL_EXTENS' IT_XD01-TELEX31.
perform bdc_field using 'SZA5_D0700-FAX_NUMBER' IT_XD01-TELFA31.
perform bdc_field using 'SZA5_D0700-FAX_EXTENS' IT_XD01-TELFX31.
perform bdc_field using 'SZA5_D0700-SMTP_ADDR' IT_XD01-EMAIL31.
perform bdc_field using 'ADDR3_DATA-DEFLT_COMM' IT_XD01-COMMU31.
perform bdc_dynpro using 'SAPMF02D' '1361'.
perform bdc_field using 'BDC_OKCODE' '/00'.
perform bdc_dynpro using 'SAPMF02D' '0360'.
perform bdc_field using 'BDC_CURSOR' 'KNVK-PAFKT(04)'.
perform bdc_field using 'BDC_OKCODE' '=ENTR'.
ENDIF.
IF IT_XD01-NAME41 <> 'X'.
perform bdc_field using 'KNVK-NAMEV(04)' IT_XD01-NAME42.
perform bdc_field using 'KNVK-NAME1(04)' IT_XD01-NAME41.
perform bdc_field using 'KNVK-ABTNR(04)' IT_XD01-ABTNR41.
perform bdc_field using 'KNVK-PAFKT(04)' IT_XD01-PAFKT41.
perform bdc_dynpro using 'SAPMF02D' '0360'.
perform bdc_field using 'BDC_CURSOR' 'KNVK-NAME1(04)'.
perform bdc_field using 'BDC_OKCODE' '=LSDP'.
perform bdc_dynpro using 'SAPMF02D' '1361'.
perform bdc_field using 'BDC_OKCODE' '/00'.
perform bdc_field using 'KNVK-ABTNR' IT_XD01-ABTNR41.
perform bdc_field using 'KNVK-PAFKT' IT_XD01-PAFKT41.
perform bdc_field using 'BDC_CURSOR' 'ADDR3_DATA-DEFLT_COMM'.
perform bdc_field using 'ADDR3_DATA-NAME_LAST' IT_XD01-NAME42.
perform bdc_field using 'ADDR3_DATA-NAME_FIRST' IT_XD01-NAME41.
perform bdc_field using 'ADDR3_DATA-LANGU_P' IT_XD01-PARLA41.
perform bdc_field using 'SZA5_D0700-TEL_NUMBER' IT_XD01-TELEF41.
perform bdc_field using 'SZA5_D0700-TEL_EXTENS' IT_XD01-TELEX41.
perform bdc_field using 'SZA5_D0700-FAX_NUMBER' IT_XD01-TELFA41.
perform bdc_field using 'SZA5_D0700-FAX_EXTENS' IT_XD01-TELFX41.
perform bdc_field using 'SZA5_D0700-SMTP_ADDR' IT_XD01-EMAIL41.
perform bdc_field using 'ADDR3_DATA-DEFLT_COMM' IT_XD01-COMMU41.
perform bdc_dynpro using 'SAPMF02D' '1361'.
perform bdc_field using 'BDC_OKCODE' '/00'.
perform bdc_dynpro using 'SAPMF02D' '0360'.
perform bdc_field using 'BDC_CURSOR' 'KNVK-PAFKT(05)'.
perform bdc_field using 'BDC_OKCODE' '=ENTR'.
ENDIF.
IF IT_XD01-NAME51 <> 'X'.
perform bdc_field using 'KNVK-NAMEV(05)' IT_XD01-NAME52.
perform bdc_field using 'KNVK-NAME1(05)' IT_XD01-NAME51.
perform bdc_field using 'KNVK-ABTNR(05)' IT_XD01-ABTNR51.
perform bdc_field using 'KNVK-PAFKT(05)' IT_XD01-PAFKT51.
perform bdc_dynpro using 'SAPMF02D' '0360'.
perform bdc_field using 'BDC_CURSOR' 'KNVK-NAME1(05)'.
perform bdc_field using 'BDC_OKCODE' '=LSDP'.
perform bdc_dynpro using 'SAPMF02D' '1361'.
perform bdc_field using 'BDC_OKCODE' '/00'.
perform bdc_field using 'KNVK-ABTNR' IT_XD01-ABTNR51.
perform bdc_field using 'KNVK-PAFKT' IT_XD01-PAFKT51.
perform bdc_field using 'BDC_CURSOR' 'ADDR3_DATA-DEFLT_COMM'.
perform bdc_field using 'ADDR3_DATA-NAME_LAST' IT_XD01-NAME52.
perform bdc_field using 'ADDR3_DATA-NAME_FIRST' IT_XD01-NAME51.
perform bdc_field using 'ADDR3_DATA-LANGU_P' IT_XD01-PARLA51.
perform bdc_field using 'SZA5_D0700-TEL_NUMBER' IT_XD01-TELEF51.
perform bdc_field using 'SZA5_D0700-TEL_EXTENS' IT_XD01-TELEX51.
perform bdc_field using 'SZA5_D0700-FAX_NUMBER' IT_XD01-TELFA51.
perform bdc_field using 'SZA5_D0700-FAX_EXTENS' IT_XD01-TELFX51.
perform bdc_field using 'SZA5_D0700-SMTP_ADDR' IT_XD01-EMAIL51.
perform bdc_field using 'ADDR3_DATA-DEFLT_COMM' IT_XD01-COMMU51.
perform bdc_dynpro using 'SAPMF02D' '1361'.
perform bdc_field using 'BDC_OKCODE' '/00'.
perform bdc_dynpro using 'SAPMF02D' '0360'.
perform bdc_field using 'BDC_CURSOR' 'KNVK-NAMEV(01)'.
perform bdc_field using 'BDC_OKCODE' '=ENTR'.
ENDIF.
perform bdc_dynpro using 'SAPMF02D' '0210'.
perform bdc_field using 'BDC_CURSOR' 'KNB1-BEGRU'.
perform bdc_field using 'BDC_OKCODE' '/00'.
perform bdc_field using 'KNB1-AKONT' IT_XD01-AKONT.
perform bdc_field using 'KNB1-ZUAWA' IT_XD01-ZUAWA.
perform bdc_field using 'KNB1-BEGRU' IT_XD01-BEGRU1.
perform bdc_field using 'KNB1-FDGRV' IT_XD01-FDGRV.
perform bdc_dynpro using 'SAPMF02D' '0215'.
perform bdc_field using 'BDC_CURSOR' 'KNB1-XZVER'.
perform bdc_field using 'BDC_OKCODE' '/00'.
perform bdc_field using 'KNB1-ZTERM' IT_XD01-ZTERM.
perform bdc_field using 'KNB1-XZVER' 'X'..
perform bdc_dynpro using 'SAPMF02D' '0220'.
perform bdc_field using 'BDC_CURSOR' 'KNB1-TLFNS'.
perform bdc_field using 'BDC_OKCODE' '/00'.
perform bdc_field using 'KNB5-MAHNS' IT_XD01-MAHNS.
perform bdc_field using 'KNB1-BUSAB' IT_XD01-BUSAB.
perform bdc_dynpro using 'SAPMF02D' '0230'.
perform bdc_field using 'BDC_CURSOR' 'RF02D-KUNNR'.
perform bdc_field using 'BDC_OKCODE' '/00'.
perform bdc_dynpro using 'SAPMF02D' '0310'.
perform bdc_field using 'BDC_CURSOR' 'KNVV-KONDA'.
perform bdc_field using 'BDC_OKCODE' '/00'.
perform bdc_field using 'KNVV-VKBUR' IT_XD01-VKBUR.
perform bdc_field using 'KNVV-BEGRU' IT_XD01-BEGRU2.
perform bdc_field using 'KNVV-VKGRP' IT_XD01-VKGRP.
perform bdc_field using 'KNVV-AWAHR' IT_XD01-ORDER.
perform bdc_field using 'KNVV-KDGRP' IT_XD01-KDGRP.
perform bdc_field using 'KNVV-WAERS' IT_XD01-WAERS.
perform bdc_field using 'KNVV-KONDA' IT_XD01-KONDA.
perform bdc_field using 'KNVV-KALKS' IT_XD01-KALKS.
perform bdc_dynpro using 'SAPMF02D' '0315'.
perform bdc_field using 'BDC_CURSOR' 'KNVV-KZTLF'.
perform bdc_field using 'BDC_OKCODE' '/00'.
perform bdc_field using 'KNVV-VSBED' IT_XD01-VSBED.
perform bdc_field using 'KNVV-VWERK' IT_XD01-VWERK.
*IF IT_XD01-AUTLF = 'X'.
perform bdc_field using 'KNVV-AUTLF' 'X'.
perform bdc_field using 'KNVV-KZTLF' IT_XD01-KZTLF.
*ELSE.
perform bdc_field using 'KNVV-ANTLF' IT_XD01-ANTLF.
*ENDIF.
perform bdc_dynpro using 'SAPMF02D' '0320'.
perform bdc_field using 'BDC_CURSOR' 'KNVV-KTGRD'.
perform bdc_field using 'BDC_OKCODE' '/00'.
perform bdc_field using 'KNVV-PERFK' IT_XD01-PERFK.
perform bdc_field using 'KNVV-PERRL' IT_XD01-PERRL.
perform bdc_field using 'KNVV-INCO1' IT_XD01-INCO1.
perform bdc_field using 'KNVV-INCO2' IT_XD01-INCO2.
perform bdc_field using 'KNVV-ZTERM' IT_XD01-ZTERM1.
perform bdc_field using 'KNVV-KKBER' IT_XD01-KKBER.
perform bdc_field using 'KNVV-KTGRD' IT_XD01-KTGRD.
perform bdc_dynpro using 'SAPMF02D' '1350'.
perform bdc_field using 'BDC_CURSOR' 'KNVI-TAXKD(01)'.
perform bdc_field using 'BDC_OKCODE' '=ENTR'.
perform bdc_field using 'KNVI-TAXKD(01)' IT_XD01-TAX.
perform bdc_dynpro using 'SAPMF02D' '1350'.
perform bdc_field using 'BDC_CURSOR' 'RF02D-KUNNR'.
perform bdc_field using 'BDC_OKCODE' '=ENTR'.
perform bdc_dynpro using 'SAPMF02D' '0324'.
perform bdc_field using 'BDC_CURSOR' 'RF02D-KTONR(11)'.
perform bdc_field using 'BDC_OKCODE' '=ENTR'.
perform bdc_field using 'RF02D-KTONR(02)' IT_XD01-KTONR1.
perform bdc_field using 'RF02D-KTONR(03)' IT_XD01-KTONR2.
perform bdc_field using 'RF02D-KTONR(04)' IT_XD01-KTONR3.
perform bdc_field using 'RF02D-KTONR(05)' IT_XD01-KTONR4.
perform bdc_field using 'RF02D-KTONR(06)' IT_XD01-KTONR5.
perform bdc_field using 'RF02D-KTONR(07)' IT_XD01-KTONR6.
perform bdc_field using 'RF02D-KTONR(08)' IT_XD01-KTONR7.
perform bdc_field using 'RF02D-KTONR(10)' IT_XD01-KTONR8.
perform bdc_field using 'RF02D-KTONR(11)' IT_XD01-KTONR9.
if session = 'X'.
PERFORM BDC_FIELD USING 'BDC_OKCODE' 'FCNP'.
perform bdc_dynpro using 'SAPMF02D' '0324'.
perform bdc_field using 'BDC_CURSOR' 'RF02D-KTONR(01)'.
perform bdc_field using 'BDC_OKCODE' '=ENTR'.
perform bdc_field using 'RF02D-KTONR(01)' IT_XD01-KTONR10.
else.
perform bdc_field using 'RF02D-KTONR(12)' IT_XD01-KTONR10.
endif.
perform bdc_dynpro using 'SAPMF02D' '0324'.
perform bdc_field using 'BDC_CURSOR' 'KNVP-PARVW(01)'.
perform bdc_field using 'BDC_OKCODE' '=UPDA'.
perform bdc_transaction using 'XD01'.
ENDLOOP.
refresh it_xd01.
perform close_group.
*& Form upload
text
--> p1 text
<-- p2 text
form upload.
move p_fnam to p_fname.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
filename = p_fname
FILETYPE = 'ASC'
HAS_FIELD_SEPARATOR = 'X'
HEADER_LENGTH = 0
READ_BY_LINE = 'X'
DAT_MODE = ' '
IMPORTING
FILELENGTH =
HEADER =
tables
data_tab = it_xd01
EXCEPTIONS
FILE_OPEN_ERROR = 1
FILE_READ_ERROR = 2
NO_BATCH = 3
GUI_REFUSE_FILETRANSFER = 4
INVALID_TYPE = 5
NO_AUTHORITY = 6
UNKNOWN_ERROR = 7
BAD_DATA_FORMAT = 8
HEADER_NOT_ALLOWED = 9
SEPARATOR_NOT_ALLOWED = 10
HEADER_TOO_LONG = 11
UNKNOWN_DP_ERROR = 12
ACCESS_DENIED = 13
DP_OUT_OF_MEMORY = 14
DISK_FULL = 15
DP_TIMEOUT = 16
OTHERS = 17
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
*Rajat Change
*End Change
endform. " upload
*& Form US
text
--> p1 text
<-- p2 texT
NOTE : THAT I HAVE NOT USED AN LOOP FOR TABLE CONTROL BECOZ MY FLAT FILE WAS IN DIFFERENT FORMATWhat's the problem?
Regds
Manohar
Maybe you are looking for
-
How do I connect my Home Theatre System to Apple TV such that I Can Play the Music on my iPhone through the Home Theatre System?
-
Searching for Flash Photo Gallery with numbered navigation menu.
I'm looking for a photo gallery with a numbered navigation menu. I've seen this gallery on several flash web pages. Is this type of photo gallery a template that comes with flash? Has anyone come across a tutorial for a photo gallery similar to the l
-
Help viewer is not loading content
When I try to view the help files for certain apps, nothing loads. I get a spinning gray wheel. I first noticed this when trying to view the help files for iPhoto (9.5.1), but other apps such as iTunes and iBooks Author have the same problem. Some ap
-
In our company we create business application which is made from 3 projects and they are related to each other. This 3 projects are: Model ModelIRC200 View Example of problem: ircbutton.java has this lines package irc.irc2000.ircSwing.komponente; imp
-
Upgrading from sap pl35 to sap pl49
hello sap experts I want to upgrade from sapb1 2005 pl35 to sapb1 2005 pl49 can any explain briefly how to upgrade in step by step regards Jenny