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
    Nanda

    Hi,
    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 user’s 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_data

    Worked 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.satyanarayana

    Hi
    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

  • Programs related to BDC

    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.

  • BAPI FOR  - 54

    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.T

    Hi
    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
    ravi

    BDC 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 Area

    This 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_values

    solved

  • 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 AM

    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.

  • 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 BDC

    Try 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

  • JAMAL NOORANI

    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 FORMAT

    What's the problem?
    Regds
    Manohar

Maybe you are looking for