Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

SAP script field refresh problem

Former Member
0 Likes
4,012

Hi Experts,

I have to solve a problem with SAP script form displayed for an FI report.

This report was previously developed by someone else and I am totally new to SAP scripts.

The problem is when the user enters one document name and executes the form is displayed properly

But if he enters multiple documents and executes then in all pages of the forms, same vendor name and address is printed which is of the last document.

Rest all the info is displayed properly on all the pages.

I checked the code but it is written very badly and I tried to clear the variables for vendor name & add but then it is not displayed on the form.

So pls help me where should I look for the problem ?

Thanks,

Vishal.

18 REPLIES 18
Read only

arthur_alvesteixeira
Active Participant
0 Likes
3,549

It's necessary more details about this code,
but if the vendor name in all pages is the same global variable name
maybe your error it's loading from main program only one vendor name because this variable.

It's possible to loop in main program your vendors and call inside this loop the layout window,


All this examples depends of your current code and your layout requeriment.

Read only

0 Likes
3,549

Just to be clear.  Only the main window varies as the data flows.  In all other windows the data is only read once.  I'd expect the OPs problem is in another window.

Neal

Read only

Former Member
0 Likes
3,549

It's been a long time, but try close_form then open_form between documents.  This happens in the print program not in the sapscript.

Neal

Read only

arthur_alvesteixeira
Active Participant
0 Likes
3,549

... if necessary (regarding your current code and your requirement) check write_form_lines function: WRITE_FORM_LINES - BC - SAPscript Printing with Forms - SAP Library

Read only

Former Member
0 Likes
3,549

  • find formularprogramm and formular used for printing
  • how is the loop-logic inside formularprogramm
  • when are the variables printed (write-form statment pushes global variables to sapscript)
  • is there endform /closeform - logic and is everything printed befor endform/closeform
  • sometimes its because first and last loop entry is not handeled properly
  • you need to debug step by step

normaly thats work for sap-script experts

regards

Stefan Seeburger

Read only

Former Member
0 Likes
3,549

Hi all,

I checked everything as you all have mentioned and found out that the vendor name and address are global variables. (v_name1 & v_name2)

After alot of debugging done, these variable are filled with correct data but still not printed on each appropriate form.

I am still not able to find where the problem is exactly.

I know its too much but still I am attaching the code file and a screen shots of the window of the script form where the vendor data is printed.

And currently how the forms are printed.

Pls help me to solve this problem.

Thanks,

Vishal.

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

Read only

0 Likes
3,549

hi,

can you please post text or jpg files - i dont want to unzip or exe

i will have a look after work.

regards

Stefan Seeburger

Read only

0 Likes
3,549

Ok I pasted the code in two parts in my below replies.

Pls check whenever you can and reply.

Thanks,

Vishal          

Read only

0 Likes
3,549

Recalling my earlier statement:  Window - Window4 is not window - Main.  It is not possible for data to change in that window.  It is necessary to close the form and reopen it every time you want that data to change.

Neal

Read only

0 Likes
3,549

Hi Neal,

Thanks for your reply.

I did notice your comment regarding the data flow in the main window,

But if u look at the images I pasted on my above reply, you will notice that the data in the adjacent window is changing, and this window5 is not in the main window also.

The FI document no,, Bill & posing dates change with the page change.

Regards,

Vishal.

Read only

Former Member
0 Likes
3,549

Hi Stefan,

I attached a text file only but somehow it was converted to ZIP file.

Anyway I m trying to attached it again but it is automatically converted to a ZIP file.

So I tried pasting the code here but its not posting saying Message body is too large.

What should I do ? pls try to unzip the file only one text file is in it.

And form print images are already posted in previous reply.

Thanks,

Vishal.

Read only

0 Likes
3,549

*&---------------------------------------------------------------------*

*& Report  YR_FI_VOUCHERS_SUJ

*&

*&---------------------------------------------------------------------*

*&

*&

*&----------------------------------------------------------------------*

REPORT  yr_fi_vouchers_suj

      MESSAGE-ID zfi NO STANDARD PAGE HEADING LINE-SIZE 132.

TABLES : adrc , stxh.

DATA : v_logo(25) TYPE c.

TYPES : BEGIN OF ty_t001w,

         werks TYPE t001w-werks,

          name1 TYPE t001w-name1,

    END OF ty_t001w.

DATA :it_t001w TYPE TABLE OF ty_t001w,

       wa_t001w TYPE ty_t001w.

DATA : p_plant TYPE t001w-werks.

DATA : p_name TYPE t001w-name1,

       v_prctr TYPE bseg-prctr,

       v_prctr1(10),

       v_werks TYPE t001w-werks.

DATA: v_belnr TYPE bkpf-belnr,

        t_belnr TYPE bkpf-belnr,

         t_blart TYPE bkpf-blart,

         t_budat TYPE bkpf-budat,

       t_bldat  TYPE bkpf-bldat,

         t_xblnr TYPE bkpf-xblnr.

DATA : v_name TYPE adrc-name1,

       v_add1 TYPE  rstxt-tdname,

v_add2  TYPE  rstxt-tdname,

v_add3  TYPE  rstxt-tdname.

DATA : v_sort TYPE adrc-name1.

DATA :v_name1 TYPE adrc-name1,

       v_name2 TYPE adrc-name1,

        v_add1_1 TYPE  rstxt-tdname,

v_add2_1  TYPE  rstxt-tdname,

v_add3_1  TYPE  rstxt-tdname.

DATA : v_comp TYPE zlogo_mas-bukrs.

DATA : v_plant TYPE zlogo_mas-werks.

DATA :v_telno TYPE adrc-tel_number, "Added new

       v_faxno TYPE adrc-fax_number.

DATA :v_telno1 TYPE rstxt-tdname, "Added new

       v_faxno1 TYPE rstxt-tdname.

DATA :v_telno_1 TYPE adrc-tel_number, "Added new

       v_faxno_1 TYPE adrc-fax_number.

DATA :v_telno1_2 TYPE rstxt-tdname, "Added new

       v_faxno1_2 TYPE rstxt-tdname.

DATA : wrk_name(50) VALUE 'XXXXXXXXXXXXXXXXXXXXX'.

DATA : simple LIKE thead-tdname.

DATA : itline LIKE tline OCCURS 0 WITH HEADER LINE.

DATA: wrk_acc(10),

       vend_name(50),

       wrk_desc(50),

       wrk_kostl(25),

       flg_check,

       wrk_dueon LIKE sy-datum ,

       amt_inr LIKE bseg-wrbtr,

       amt_usd(16) TYPE p DECIMALS 2,

       a_inr LIKE bseg-wrbtr,

       a_usd(16) TYPE p DECIMALS 2,

       pay_term(50),

       bsart LIKE ekko-bsart,

       zterm LIKE ekko-zterm,

       flg_w.

*DECLARATION FOR OUTPUT IN CHECK PROGRAM STYLE

DATA : txt_zeile(132)    TYPE c,            "WORK FIELD FOR TEXT

        flg_local(1)      TYPE c.            "LOCAL FLAG

DATA  BEGIN OF tab_fimsg OCCURS 5.     "NIMMT GESAMMELTE MESSAGES AUF

         INCLUDE STRUCTURE fimsg.       "ERROR MESSAGES

DATA: END OF tab_fimsg.

DATA: BEGIN OF tab_ausgabe OCCURS 3,   "SPOOLNUMMERN DER FORMULARE UND

   filename(47)    TYPE c,              "LISTEN UND FILENAME BEI DTA

   renum           LIKE regut-renum,    "SPOOL NUMBERS OF FORMS AND LISTS

   dataset         LIKE sy-prdsn,       "AND FILE NAMES (DME)

   name(35)        TYPE c,

   spoolnr         LIKE sy-sponr,

   immed(1)        TYPE c,

   error(1)        TYPE c,

END OF tab_ausgabe.

DATA ikokrs LIKE tka02-kokrs.

* GLOBAL DECLARATIONS:

INCLUDE rfkori00.

* DATA DECLARATIONS:

INCLUDE yr_fi_vouchers_include.

begin_of_block 0 .

SELECT-OPTIONS : rbukrs   FOR  bkpf-bukrs OBLIGATORY DEFAULT 1000,

                  rgsber   FOR  bseg-gsber. "OBLIGATORY.

*                RBELNR   FOR  BKPF-BELNR,      " COMMENTED SHANU

*                RBUDAT   FOR  BKPF-BUDAT,      " COMMENTED SHANU

PARAMETERS    : rgjahr   LIKE bkpf-gjahr OBLIGATORY.

end_of_block 0.

begin_of_block 1.

* SELECT-OPTIONS: RGSBER   FOR  BSEG-GSBER DEFAULT '*'. "COMMENTED SHANU

SELECT-OPTIONS: rbelnr   FOR  bkpf-belnr,

                 rbudat   FOR  bkpf-budat,

*                RBLART   FOR  BKPF-BLART,

                 rusnam   FOR  bkpf-usnam.

end_of_block 1.

SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-001.

PARAMETERS p_purch RADIOBUTTON GROUP rad"FOR PURCHASE VOUCHER

               p_bank RADIOBUTTON GROUP rad"FOR BANK VOUCHER

               p_cash RADIOBUTTON GROUP rad"CASH VOUCHER

               p_journ RADIOBUTTON GROUP rad"JOURNAL VOUCHERS

SELECTION-SCREEN END OF BLOCK b2.

begin_of_block 2.

PARAMETERS printer LIKE rfpdo-fordpriz OBLIGATORY.

end_of_block 2.

START-OF-SELECTION.

*FOR COMPAY NAME - TITLE IN THE LAYOUT

   SELECT * FROM t001

     INTO CORRESPONDING FIELDS OF TABLE it001

     WHERE bukrs IN rbukrs.

*END

   READ TABLE it001 INDEX 1.

   SELECT SINGLE * FROM adrc WHERE addrnumber = it001-adrnr.

*  IF RBELNR-LOW = 1.

   IF rbelnr-low IS INITIAL.

* IF DOC. NO IS NOT SPECIFIED, CREATE VOUCHER FOR POSTING DATE:

     PERFORM process_for_pos_date.

   ELSE.

* IF DOC. NO. IS GIVEN, CREATE VOUCHER FOR DOC. NO.:

     PERFORM process_for_doc_no.

   ENDIF.

   PERFORM close_form.

*---------------------------------------------------------------------*

TOP-OF-PAGE.

   WRITE :/127 sy-pagno.

*&---------------------------------------------------------------------*

FORM process_for_doc_no.

   break abapcons.

   IF p_purch = 'X'.

*************************************FOR PURCHASE VOUCHER***********************************

     SELECT * FROM  bkpf

            INTO CORRESPONDING FIELDS OF TABLE bkpftab

            WHERE bukrs IN rbukrs AND belnr IN rbelnr

                  AND gjahr EQ rgjahr AND blart IN ('RE','RA','RN','RK','P1','P2','P3','P4','P5','P6','P7','P8') " ADDED NEW FOR REQ BY PRASANNA ON 4.5.2012

                  AND usnam IN rusnam AND budat IN rbudat.

*************************************END PURCHASE VOUCHER***********************************

   ELSEIF p_bank = 'X'.

*************************************FOR BANK VOUCHER***********************************

     SELECT * FROM  bkpf

            INTO CORRESPONDING FIELDS OF TABLE bkpftab

            WHERE bukrs IN rbukrs AND belnr IN rbelnr

                  AND gjahr EQ rgjahr AND blart IN ('KZ','DZ', 'IP', 'IR')

                  AND usnam IN rusnam AND budat IN rbudat.

*************************************END BANK VOUCHER***********************************

   ELSEIF p_cash = 'X'.

*************************************FOR CASH VOUCHER***********************************

     SELECT * FROM  bkpf

            INTO CORRESPONDING FIELDS OF TABLE bkpftab

            WHERE bukrs IN rbukrs AND belnr IN rbelnr

                  AND gjahr EQ rgjahr AND blart IN ('CJ','BJ')

                  AND usnam IN rusnam AND budat IN rbudat.

*************************************END CASH VOUCHER***********************************

   ELSE.

*************************************JOURNAL VOUCHER***********************************

     SELECT * FROM  bkpf

            INTO CORRESPONDING FIELDS OF TABLE bkpftab

            WHERE bukrs IN rbukrs AND belnr IN rbelnr

                  AND gjahr EQ rgjahr AND blart NOT IN ('RE','RA','RN','RK','KZ','DZ','IP','IR','CJ','BJ','P1','P2','P3','P4','P5','P6','P7','P8') " ADDED NEW FOR REQ BY PRASANNA ON 5.5.2012)

                  AND usnam IN rusnam AND budat IN rbudat.

*************************************END JOURNAL VOUCHER***********************************

   ENDIF.

   IF sy-subrc = 0.     "IF LINE ITEM HEADERS EXIST IN BKPF

     CLEAR wrk_dueon.

     LOOP AT bkpftab .

       bkpftab-v_belnr = bkpftab-awkey+0(10).

       MODIFY bkpftab TRANSPORTING v_belnr.

       READ TABLE bsegtab WITH KEY belnr = bkpftab-belnr

                                   bukrs = bkpftab-bukrs

                                   gjahr = bkpftab-gjahr

                                   bschl = 86.

       IF sy-subrc = 0.

*   clear:p_name.

         SELECT SINGLE name1 FROM t001w INTO p_name WHERE werks = bsegtab-prctr1.

       ENDIF.

************************ADDED BY ASHOK KOTHARI FOR PURCHASE ORDER DETAILS : ON 03-09-09*******************

       IF bkpftab-v_belnr IS NOT INITIAL.

         SELECT belnr gjahr ebeln matnr menge knttp xblnr lfbnr wrbtr bukrs"ADDED NEW WRBTR

                FROM rseg

                INTO CORRESPONDING FIELDS OF TABLE itab_rseg

                FOR ALL ENTRIES IN bkpftab

                WHERE belnr = bkpftab-v_belnr AND gjahr = bkpftab-gjahr" MODIFIED BY PRASANNA  ON 7.5.2012

       ELSE.

         SELECT belnr gjahr ebeln matnr menge knttp xblnr lfbnr lfgja wrbtr bukrs"modified by prasanna on 5.5.2012"WRBTR

                FROM rseg

                INTO CORRESPONDING FIELDS OF TABLE itab_rseg

                FOR ALL ENTRIES IN bkpftab

                WHERE belnr = bkpftab-belnr AND gjahr = bkpftab-gjahr.

       ENDIF.

       CLEAR : bkpftab.

       REFRESH:it_rbkp.

       IF itab_rseg[] IS NOT INITIAL.

         SELECT belnr gjahr bukrs waers

             FROM rbkp INTO TABLE it_rbkp

             FOR ALL ENTRIES IN itab_rseg

             WHERE belnr = itab_rseg-belnr

                AND gjahr = itab_rseg-gjahr

                AND bukrs = itab_rseg-bukrs.

       ENDIF.

       LOOP AT  itab_rseg.

         IF itab_rseg-menge NE '            0.00'.

           READ TABLE it_rbkp INTO wa_rbkp WITH KEY belnr = itab_rseg-belnr "Added by ananth on 02.07.2012

                                                    gjahr = itab_rseg-gjahr

                                                    bukrs = itab_rseg-bukrs.

           IF sy-subrc = 0.

             IF wa_rbkp-waers <> 'INR'.

               itab_rseg-wrbtr = ( itab_rseg-wrbtr / 100 / itab_rseg-menge .     "Added by ananth on 02.07.2012

             ELSE.

               itab_rseg-wrbtr = itab_rseg-wrbtr / itab_rseg-menge .                 "Added by ananth on 02.07.2012

             ENDIF.

           ENDIF.

         ENDIF.

         MODIFY itab_rseg TRANSPORTING  wrbtr.

         CLEAR : itab_rseg.

       ENDLOOP.

     ENDLOOP.

     SELECT matnr maktx

            FROM makt

            INTO TABLE itab_makt

            FOR ALL ENTRIES IN itab_rseg

            WHERE matnr = itab_rseg-matnr AND spras = 'EN'.

     LOOP AT itab_rseg.

       READ TABLE itab_makt WITH KEY matnr = itab_rseg-matnr.

       IF sy-subrc = 0.

         MOVE itab_makt-maktx TO itab_rseg-maktx.

         MODIFY itab_rseg.

       ENDIF.

       CLEAR itab_makt.

       CLEAR itab_rseg.

     ENDLOOP.

*ADDED BY GD ON 20/05/2002

     PERFORM gsber_selection.

     LOOP AT bkpftab.   "FOR EACH SUCH HEADER, SELECT ALL LINE ITEMS

       CLEAR: zcheck_no , flg_w.

       SELECT * FROM  bseg              "BSEG

         WHERE belnr = bkpftab-belnr

           AND gjahr = bkpftab-gjahr

           AND bukrs = bkpftab-bukrs.

         MOVE-CORRESPONDING bseg TO bsegtab.

         IF NOT bseg-umskz IS INITIAL.

           CONCATENATE bsegtab-bschl   bseg-umskz INTO bsegtab-bschl.

         ENDIF.

* ADDED FOR PUTTING DUE ON  DATE

         IF flg_w IS INITIAL.

           CLEAR wrk_dueon.

         ENDIF.

         IF wrk_dueon IS INITIAL AND bseg-umskz NE 'W'.

           IF NOT bseg-zfbdt IS INITIAL.

             wrk_dueon = bseg-zfbdt + bseg-zbd1t.

             WRITE wrk_dueon TO bkpftab-dueon DD/MM/YYYY.

*            CONCATENATE 'DUE DATE     : ' ' ' BKPFTAB-DUEON INTO BKPFTAB-DUEON SEPARATED BY SPACE.

             MODIFY bkpftab.

           ENDIF.

         ELSEIF bseg-umskz = 'W'.

           flg_w = 'X'.

           wrk_dueon = bseg-zfbdt + bseg-zbd1t.

           WRITE wrk_dueon TO bkpftab-dueon DD/MM/YYYY.

*          CONCATENATE 'DUE DATE     : ' ' ' BKPFTAB-DUEON INTO BKPFTAB-DUEON SEPARATED BY SPACE.

           MODIFY bkpftab.

         ENDIF.

***

         SELECT SINGLE * FROM  t001       CLIENT SPECIFIED

           WHERE mandt  = sy-mandt

             AND bukrs  = bseg-bukrs.

         bsegtab-ktopl = t001-ktopl.

         APPEND bsegtab.

       ENDSELECT.

     ENDLOOP.

     DATA : curr TYPE c LENGTH 3.

     curr = 'INR'.

     LOOP AT bsegtab.

       IF bsegtab-lifnr IS  NOT INITIAL.

         MOVE : bsegtab-lifnr TO bsegtab-lifnr1.

       ELSEIF    bsegtab-kunnr IS NOT INITIAL.

         bsegtab-kunnr1 bsegtab-kunnr.

       ENDIF.

       IF bsegtab-shkzg EQ 'H'.

         IF bsegtab-wrbtr IS NOT INITIAL.

           READ TABLE bkpftab WITH KEY belnr = bsegtab-belnr

                                       gjahr = bsegtab-gjahr

                                       bukrs = bsegtab-bukrs.

           IF sy-subrc = 0.

             IF bkpftab-waers <> 'INR'.     "Commenetd by ananth on 10.07.2012

               bsegtab-credit = bsegtab-wrbtr / 100.

             ELSE.

               bsegtab-credit = bsegtab-wrbtr.

             ENDIF.

           ENDIF.

         ENDIF.

         bsegtab-tot_credit = bsegtab-tot_credit + bsegtab-credit."dmbtr. "ADDED NEW FOR TOTAL

       ELSEIF

          bsegtab-shkzg EQ 'S'.

         IF bsegtab-wrbtr IS NOT INITIAL.

           READ TABLE bkpftab WITH KEY belnr = bsegtab-belnr

                                     gjahr = bsegtab-gjahr

                                     bukrs = bsegtab-bukrs.

           IF sy-subrc = 0.

             IF bkpftab-waers <> 'INR'.

               bsegtab-debit = ( bsegtab-wrbtr / 100 ).

             ELSE.

               bsegtab-debit = bsegtab-wrbtr.

             ENDIF.

           ENDIF.

         ENDIF.

         bsegtab-tot_debit = bsegtab-tot_debit + bsegtab-debit."bsegtab-dmbtr.        "ADDED NEW FOR TOTAL

       ENDIF.

       MODIFY bsegtab  TRANSPORTING lifnr1 kunnr1 credit debit tot_debit tot_credit.

       CLEAR : bsegtab.

     ENDLOOP.

     TYPES : BEGIN OF ty_itab,

            belnr TYPE bseg-belnr,

            gjahr TYPE bseg-gjahr,

            bukrs TYPE bseg-bukrs,

            tot_debit TYPE bseg-dmbtr,

           tot_credit TYPE bseg-dmbtr,

          END OF ty_itab.

     DATA : itab TYPE TABLE OF ty_itab,

             wa TYPE ty_itab.

     LOOP AT bsegtab .

       MOVE-CORRESPONDING : bsegtab TO wa.

       COLLECT wa INTO itab.

       CLEAR : bsegtab , wa.

     ENDLOOP.

     LOOP AT bsegtab.

       READ TABLE itab INTO wa WITH  KEY  belnr = bsegtab-belnr gjahr = bsegtab-gjahr bukrs = bsegtab-bukrs.

       IF sy-subrc EQ 0.

         MOVE : wa-tot_debit TO bsegtab-tot_debit,

                  wa-tot_credit TO bsegtab-tot_credit.

         MODIFY bsegtab TRANSPORTING tot_debit tot_credit.

         CLEAR : wa , bsegtab.

       ENDIF.

     ENDLOOP.

     LOOP AT  bsegtab WHERE koart = 'K' OR koart  = 'D'." INTO WA_ITEM.

       IF bsegtab-lifnr1 IS NOT INITIAL.

         title1_1 = 'Vendor Code'.

         title1 = 'Vendor Name & Address'.

*NAME1 = WA_ITEM-NAME1.

*BSEGTAB-acc_code = BSEGTAB-lifnr1. " comm for req

         bsegtab-acc_code1 = bsegtab-lifnr1. "added new by prasanna on 4.5.2012

*BSEGTAB-acc_des = wa_item-name1.

       ELSEIF bsegtab-kunnr1 IS NOT INITIAL.

         title1_1 = 'Customer Code'.

         title1 = 'Customer Name & Address'.

         bsegtab-acc_code1 = bsegtab-kunnr1. "added new by prasanna on 4.5.2012

       ENDIF.

       MODIFY bsegtab TRANSPORTING acc_code1 ."acc_code ." modify on 22.5.2012

       CLEAR : bsegtab.

     ENDLOOP.

     IF bsegtab[] IS NOT INITIAL.

       SELECT lifnr FROM lfa1 INTO TABLE it_vendor

         FOR ALL ENTRIES IN bsegtab

         WHERE lifnr = bsegtab-lifnr"lifnr1.   modified on 22.5.2012

     ENDIF.

     CALL METHOD it_addr->yif_address_mul_joh~vendor_address

       EXPORTING

         itab_lifnr = it_vendor

       IMPORTING

         it_addr    = it_vendor_addr." itab_addr.

     IF bsegtab[] IS NOT INITIAL.

       SELECT kunnr FROM kna1 INTO TABLE it_customer

         FOR ALL ENTRIES IN bsegtab

         WHERE kunnr = bsegtab-kunnr.

     ENDIF.

     CALL METHOD it_addr->yif_address_mul_joh~cust_address

       EXPORTING

         itab_kunnr = it_customer

       IMPORTING

         it_addr    = it_customer_addr." itab_addr.

     IF it_customer_addr IS NOT INITIAL AND   it_vendor_addr IS NOT INITIAL.

       LOOP AT it_vendor_addr INTO wa_vendor_addr.

         MOVE-CORRESPONDING : wa_vendor_addr TO wa_address.

         APPEND wa_address TO it_address.

         CLEAR : wa_address.

       ENDLOOP.

       LOOP AT it_customer_addr INTO wa_customer_addr.

         MOVE-CORRESPONDING : wa_customer_addr TO wa_address.

         APPEND wa_address TO it_address.

         CLEAR : wa_address.

       ENDLOOP.

     ELSEIF  it_vendor_addr IS NOT INITIAL.

       it_address  = it_vendor_addr.

     ELSEIF

         it_customer_addr IS NOT INITIAL.

       it_address = it_customer_addr.

     ENDIF.

     TYPES:BEGIN OF st_plant,

       werks TYPE vbrp-werks,

       END OF st_plant.

     DATA plant_addr TYPE REF TO  ycl_address_mul_joh.   "Select_address

     DATA :it_plant TYPE TABLE OF st_plant, "Yaddr_com,

           wa_plant  TYPE st_plant,

        it_plant1 TYPE TABLE OF yaddr_com,

       wa_plant1 TYPE yaddr_com.

     DATA : var1 TYPE bseg-prctr. "added new by prasanna

     LOOP AT bsegtab.

       CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'

         EXPORTING

           input  = bsegtab-prctr

         IMPORTING

           output = bsegtab-prctr.

       MOVE : bsegtab-prctr TO bsegtab-prctr1.

       MODIFY bsegtab TRANSPORTING prctr1.

       CLEAR : bsegtab.

     ENDLOOP.

     LOOP AT bsegtab.

       IF bsegtab-lifnr IS  NOT INITIAL.

         MOVE : bsegtab-prctr1 TO wa_plant-werks.

         IF wa_plant-werks IS NOT INITIAL.

           SELECT  SINGLE name1 FROM t001w INTO p_name

            WHERE  werks = wa_plant-werks. " p_plant.

         ENDIF.

       ELSEIF

         bsegtab-kunnr IS NOT INITIAL.

         MOVE bsegtab-prctr1 TO wa_plant-werks.

         IF wa_plant-werks IS NOT INITIAL.

           SELECT  SINGLE name1 FROM t001w INTO p_name

               WHERE  werks = wa_plant-werks.

         ENDIF.

       ENDIF.

       APPEND  wa_plant TO it_plant.

       CLEAR : wa_plant , wa_bseg.

       SELECT SINGLE logo FROM zlogo_mas INTO v_logo

          WHERE werks = bsegtab-prctr1.

       MOVE : bsegtab-bukrs TO v_comp.

     ENDLOOP.

     DELETE it_plant WHERE werks EQ '   '.

     IF it_plant IS INITIAL.

       LOOP AT bsegtab.

         IF bsegtab-hkont IS NOT INITIAL.

           MOVE bsegtab-prctr1 TO wa_plant-werks.

           IF wa_plant-werks IS NOT INITIAL.

             SELECT  SINGLE name1 FROM t001w INTO p_name

            WHERE  werks = wa_plant-werks.

           ENDIF.

         ENDIF.

         APPEND wa_plant TO it_plant.

         CLEAR : wa_plant.

       ENDLOOP.

     ENDIF.

**************Added new for req on 9.5.2012

********

     LOOP AT  it_plant INTO wa_plant.

       MOVE : wa_plant-werks TO p_plant.

       CLEAR: wa_plant.

     ENDLOOP.

     IF it_plant[] IS NOT INITIAL.

       CREATE OBJECT plant_addr.

       CALL METHOD plant_addr->yif_address_mul_joh~plant_addr

         EXPORTING

           it_werks  = it_plant[]

         IMPORTING

           plant_adr = it_plant1[].

     ENDIF.

     LOOP AT it_plant1 INTO wa_plant1.

       CLEAR:v_add1,v_add2,v_add3.

       v_name = wa_plant1-name.

       IF wa_plant1-house_num1 IS NOT INITIAL.

         CONCATENATE wa_plant1-house_num1 v_add1 INTO v_add1 .

       ENDIF.

       IF wa_plant1-street IS NOT INITIAL.

         IF v_add1 IS INITIAL.

           CONCATENATE v_add1 wa_plant1-street  INTO v_add1.

         ELSE.

           CONCATENATE v_add1 wa_plant1-street  INTO v_add1 SEPARATED BY

           ','.

         ENDIF.

       ENDIF.

       IF wa_plant1-str_suppl1 IS NOT INITIAL.

         IF v_add1 IS INITIAL.

           CONCATENATE  v_add1 wa_plant1-str_suppl1 INTO v_add1 .

         ELSE.

           CONCATENATE  v_add1 wa_plant1-str_suppl1 INTO v_add1

                SEPARATED BY ','.

         ENDIF.

       ENDIF.

       IF wa_plant1-str_suppl2 IS NOT INITIAL.

         CONCATENATE wa_plant1-str_suppl2 v_add2 INTO v_add2 .

       ENDIF.

       IF wa_plant1-str_suppl3 IS NOT INITIAL.

         IF v_add2 IS INITIAL.

           CONCATENATE v_add2 wa_plant1-str_suppl3  INTO v_add2 .

         ELSE.

           CONCATENATE v_add2 wa_plant1-str_suppl3  INTO v_add2

                SEPARATED BY ','.

         ENDIF.

       ENDIF.

       IF wa_plant1-city IS NOT INITIAL.

         IF v_add2 IS INITIAL.

           CONCATENATE v_add2 wa_plant1-city  INTO v_add2 .

         ELSE.

           CONCATENATE v_add2 wa_plant1-city  INTO v_add2

                SEPARATED BY ','.

         ENDIF.

       ENDIF.

       IF wa_plant1-state IS NOT INITIAL.

         CONCATENATE v_add3 wa_plant1-state  INTO v_add3.

       ENDIF.

       IF wa_plant1-postal IS NOT INITIAL.

         IF v_add3 IS INITIAL.

           CONCATENATE v_add3 wa_plant1-postal  INTO v_add3.

         ELSE.

           CONCATENATE v_add3 wa_plant1-postal  INTO v_add3

                SEPARATED BY ','.

         ENDIF.

       ENDIF.

       IF wa_plant1-country_name IS NOT INITIAL.

         IF v_add3 IS INITIAL.

           CONCATENATE v_add3  wa_plant1-country_name INTO v_add3 .

         ELSE.

           CONCATENATE v_add3  wa_plant1-country_name INTO v_add3

                SEPARATED BY ','.

         ENDIF.

       ENDIF.

       IF wa_plant1-tel_number IS NOT INITIAL.

         MOVE: wa_plant1-tel_number TO v_telno.

       ENDIF .

       IF v_telno IS NOT INITIAL.

         CONCATENATE 'TEL:' v_telno  INTO v_telno1 SEPARATED BY space.

       ENDIF.

       IF wa_plant1-fax_number IS   NOT  INITIAL.

         MOVE : wa_plant1-fax_number TO v_faxno.

       ENDIF.

       IF v_faxno IS NOT INITIAL.

         CONCATENATE 'FAX:' v_faxno  INTO v_faxno1 SEPARATED BY space.

       ENDIF.

       CLEAR: wa_plant1.

     ENDLOOP.

*************FOR GETTING WBS NO. ***********************************

     LOOP AT bsegtab.

       CALL FUNCTION 'CONVERSION_EXIT_ABPSP_OUTPUT'

         EXPORTING

           input  = bsegtab-projk

         IMPORTING

           output = bsegtab-wbsno.

       IF sy-subrc = 0.

         MODIFY bsegtab.

       ENDIF.

     ENDLOOP.

*****************END GETTING WBS NO.**********************************

*FOR EACH ACCOUNT NO. APPEARING IN BSEGTAB, TEXT EXPLAINING THE NATURE

*OF THE ACCOUNT IS PICKED UP FROM SKAT, AND STORED IN A SEPARATE FIELD

*-------------------------------------------------------------------++

     LOOP AT bsegtab.

       CASE bsegtab-koart.

         WHEN 'S' OR 'A'.

           SELECT SINGLE * FROM skat

             WHERE saknr = bsegtab-hkont

               AND ktopl = bsegtab-ktopl

               AND spras = 'E'.

*          BSEGTAB-TXT50 = SKAT-TXT50. "commented for short text

           bsegtab-txt50 = skat-txt20."added new

           MODIFY bsegtab.

         WHEN 'K'.

           SELECT SINGLE * FROM lfa1

             WHERE lifnr = bsegtab-lifnr.

*          BSEGTAB-NAME1 = LFA1-NAME1.

           bsegtab-txt50 = lfa1-name1.

           MODIFY bsegtab.

         WHEN 'M'.

           SELECT SINGLE * FROM skat

             WHERE spras = 'E'

               AND saknr = bsegtab-hkont.

*          BSEGTAB-TXT50 = SKAT-TXT50. "comm for sh. txt

           bsegtab-txt50 = skat-txt20."added new

           MODIFY bsegtab.

         WHEN 'D'.

           SELECT SINGLE name1

              FROM kna1

              INTO bsegtab-txt50

              WHERE kunnr = bsegtab-kunnr.

           MODIFY bsegtab.

       ENDCASE.

       CLEAR:bsegtab. "Added by ananth

     ENDLOOP.

*VOUCHER DETAILS AS GATHERED ABOVE ARE DISPLAYED IN TABLE FORM ON SCREEN

     PERFORM print_voucher_data.

   ELSE.          "IF LINE ITEM HEADER ACCORDING TO INPUT IS NOT IN BKPF

     MESSAGE i000 WITH 'DOCUMENT DOES NOT EXIST'.

   ENDIF.

ENDFORM.                               " PROCESS_FOR_DOC_NO

*&---------------------------------------------------------------------*

FORM process_for_pos_date.

*SELECTING LINE ITEM HEADERS FROM BKPF ACCORDING TO USER INPUT AND STORING THEM IN BKPFTAB

   IF p_purch = 'X'.

*************************************FOR PURCHASE VOUCHER***********************************

     SELECT * FROM  bkpf

            INTO CORRESPONDING FIELDS OF TABLE bkpftab

            WHERE bukrs IN rbukrs

                  AND gjahr EQ rgjahr AND blart IN ('RE','RA','RN','RK','P1','P2','P3','P4','P5','P6','P7','P8') "added new by prasanna (P1,p2,p3)

                  AND usnam IN rusnam AND budat IN rbudat.

*************************************END PURCHASE VOUCHER***********************************

   ELSEIF p_bank = 'X'.

*************************************FOR BANK VOUCHER***********************************

     SELECT * FROM  bkpf

            INTO CORRESPONDING FIELDS OF TABLE bkpftab

            WHERE bukrs IN rbukrs

                  AND gjahr EQ rgjahr AND blart IN ('KZ','DZ', 'IP', 'IR')

                  AND usnam IN rusnam AND budat IN rbudat.

*************************************END BANK VOUCHER***********************************

   ELSEIF p_cash = 'X'.

*************************************FOR CASH VOUCHER***********************************

     SELECT * FROM  bkpf

            INTO CORRESPONDING FIELDS OF TABLE bkpftab

            WHERE bukrs IN rbukrs

                  AND gjahr EQ rgjahr AND blart IN ('CJ','BJ')

                  AND usnam IN rusnam AND budat IN rbudat.

*************************************END CASH VOUCHER***********************************

   ELSE.

*************************************JOURNAL VOUCHER***************************************

     SELECT * FROM  bkpf

            INTO CORRESPONDING FIELDS OF TABLE bkpftab

            WHERE bukrs IN rbukrs

                  AND gjahr EQ rgjahr AND blart NOT IN ('RE','RA','RN','RK','KZ','DZ','IP','IR','CJ','BJ','P1','P2','P3','P4','P5','P6','P7','P8') " ADDED NEW FOR REQ BY PRASANNA ON 5.5.2012)

                  AND usnam IN rusnam AND budat IN rbudat.

*************************************END JOURNAL VOUCHER***********************************

   ENDIF.

************************ADDED BY ASHOK KOTHARI FOR PURCHASE ORDER DETAILS : ON 03-09-09*******************

********************Added new by prasanna on 7.5.2012

   LOOP AT bkpftab .

     bkpftab-v_belnr = bkpftab-awkey+0(10).

     MODIFY bkpftab TRANSPORTING v_belnr.

************************ADDED BY ASHOK KOTHARI FOR PURCHASE ORDER DETAILS : ON 03-09-09*******************

     IF bkpftab-v_belnr IS NOT INITIAL.

       SELECT belnr gjahr ebeln matnr menge knttp xblnr lfbnr wrbtr

              FROM rseg

              INTO CORRESPONDING FIELDS OF TABLE itab_rseg

              FOR ALL ENTRIES IN bkpftab

              WHERE belnr = bkpftab-v_belnr AND gjahr = bkpftab-gjahr" MODIFIED BY PRASANNA  ON 7.5.2012

     ELSE.

       SELECT belnr gjahr ebeln matnr menge knttp xblnr lfbnr wrbtr "ADDED NEW BY PRASANNA ON 19.5.2012

              FROM rseg

              INTO CORRESPONDING FIELDS OF TABLE itab_rseg

              FOR ALL ENTRIES IN bkpftab

              WHERE belnr = bkpftab-belnr AND gjahr = bkpftab-gjahr.

     ENDIF.

     CLEAR : bkpftab.

   ENDLOOP.

********************" MODIFIED BY PRASANNA  ON 7.5.2012 by prasanna on 7.5.2012

   SELECT matnr maktx

          FROM makt

          INTO TABLE itab_makt

          FOR ALL ENTRIES IN itab_rseg

          WHERE matnr = itab_rseg-matnr AND spras = 'EN'.

   LOOP AT itab_rseg.

     READ TABLE itab_makt WITH KEY matnr = itab_rseg-matnr.

     IF sy-subrc = 0.

       MOVE itab_makt-maktx TO itab_rseg-maktx.

       MODIFY itab_rseg.

     ENDIF.

     CLEAR itab_makt.

     CLEAR itab_rseg.

   ENDLOOP.

*************************END ADDING************************************************************************

   PERFORM gsber_selection.

   IF sy-subrc = 0.     "IF LINE ITEM HEADERS EXIST IN BKPF

     LOOP AT bkpftab.   "FOR EACH SUCH HEADER, SELECT ALL LINE ITEMS FROM

       SELECT * FROM  bseg              "BSEG

               WHERE belnr = bkpftab-belnr AND

                     gjahr = bkpftab-gjahr AND

                     bukrs = bkpftab-bukrs.

         MOVE-CORRESPONDING bseg TO bsegtab.

*

         IF NOT bseg-umskz IS INITIAL.

           CONCATENATE bsegtab-bschl   bseg-umskz INTO bsegtab-bschl.

         ENDIF.

* ADDED FOR PUTTING DUE ON  DATE

         IF flg_w IS INITIAL.

           CLEAR wrk_dueon.

         ENDIF.

         IF wrk_dueon IS INITIAL AND bseg-umskz NE 'W'.

           IF NOT bseg-zfbdt IS INITIAL.

             wrk_dueon = bseg-zfbdt + bseg-zbd1t.

             WRITE wrk_dueon TO bkpftab-dueon DD/MM/YYYY.

*            CONCATENATE 'DUE DATE     : ' ' ' BKPFTAB-DUEON INTO BKPFTAB-DUEON SEPARATED BY SPACE.

             MODIFY bkpftab.

           ENDIF.

         ELSEIF bseg-umskz = 'W'.

           flg_w = 'X'.

           wrk_dueon = bseg-zfbdt + bseg-zbd1t.

           WRITE wrk_dueon TO bkpftab-dueon DD/MM/YYYY.

*          CONCATENATE 'DUE DATE     : ' ' ' BKPFTAB-DUEON INTO BKPFTAB-DUEON SEPARATED BY SPACE.

           MODIFY bkpftab.

         ENDIF.

***

         APPEND bsegtab.

       ENDSELECT.

     ENDLOOP.

     IF rgsber-low <> '*' AND rgsber-low <> ' '.

       LOOP AT bsegtab.

*      IF BSEGTAB-GSBER >= RGSBER-LOW AND BSEGTAB-GSBER <= RGSBER-HIGH.

         IF bsegtab-gsber <> rgsber.

* ABOVE COMMENTED AND REPLACED WITH STATEMENT BELOW.

*       IF BSEGTAB-GSBER = RGSBER.

           doctab-belnr = bsegtab-belnr.

           COLLECT doctab.    "EACH DOC. NO. IS STORED ONLY ONCE

         ENDIF.

       ENDLOOP.

*SORTING DOC. NOS. SO THAT A BINARY SEARCH THROUGH DOCTAB IS FACILITATED

       SORT doctab BY belnr AS TEXT.

*GOING THROUGH EACH RECORD OF BSEGTAB, AND CHECKING WHETHER THE DOC. NO.

*IS PRESENT IN DOCTAB, OTHERWISE THE DOC. IS LABELLED 'INVALID' AND

*DELETED FROM BSEGTAB       " ZFIDFORM

       LOOP AT bsegtab.

         valid_doc = 'FALSE'.

         READ TABLE doctab WITH KEY belnr = bsegtab-belnr BINARY SEARCH.

         IF sy-subrc = 0.

           valid_doc = 'TRUE'.

         ENDIF.

         IF valid_doc = 'FALSE'.

           DELETE bsegtab.

         ENDIF.

       ENDLOOP.

*GOING THROUGH EACH RECORD OF BKPFTAB, AND CHECKING WHETHER THE DOC. NO.

*IS PRESENT IN DOCTAB, OTHERWISE THE DOC. IS LABELLED 'INVALID' AND

*DELETED FROM BKPFTAB

       LOOP AT bkpftab.

         valid_doc = 'FALSE'.

         READ TABLE doctab WITH KEY belnr = bkpftab-belnr BINARY SEARCH.

         READ TABLE doctab WITH KEY belnr = bkpftab-belnr BINARY SEARCH.

         IF sy-subrc = 0.

           valid_doc = 'TRUE'.

         ENDIF.

         IF valid_doc = 'FALSE'.

           DELETE bkpftab.

         ENDIF.

       ENDLOOP.

       FREE doctab.

     ENDIF.

     LOOP AT bsegtab.

***************ADDED BY ASHOK KOTHARI ON 02-09-09 FOR DESCRIPTION************************

       SELECT SINGLE ktopl

              FROM  t001 CLIENT SPECIFIED

              INTO bsegtab-ktopl

              WHERE mandt  = sy-mandt

              AND bukrs  = bseg-bukrs.

       MODIFY bsegtab.

****************END ADDING****************************************************************

       CASE bsegtab-koart.

         WHEN 'S' OR 'A'.

           SELECT SINGLE * FROM skat

             WHERE saknr = bsegtab-hkont

               AND ktopl = bsegtab-ktopl

               AND spras = 'E'.

           bsegtab-txt50 = skat-txt50.

           MODIFY bsegtab.

         WHEN 'K'.

           SELECT SINGLE * FROM lfa1

             WHERE lifnr = bsegtab-lifnr.

*          BSEGTAB-NAME1 = LFA1-NAME1.

           bsegtab-txt50 = lfa1-name1.

           MODIFY bsegtab.

         WHEN 'M'.

           SELECT SINGLE * FROM skat

             WHERE spras = 'E'

               AND saknr = bsegtab-hkont.

           bsegtab-txt50 = skat-txt50.

           MODIFY bsegtab.

         WHEN 'D'.

           SELECT SINGLE name1

              FROM kna1

              INTO bsegtab-txt50

              WHERE kunnr = bsegtab-kunnr.

           MODIFY bsegtab.

       ENDCASE.

       CLEAR:bsegtab."Added by ananth

     ENDLOOP.

*VOUCHER DETAILS AS GATHERED ABOVE ARE DISPLAYED IN TABLE FORM ON SCREEN

*   PERFORM DISPLAY-VOUCHER-DATA.

     PERFORM print_voucher_data.

   ELSE.            "IF LINE ITEM HEADER AS PER USER INPUT IS NOT IN BKPF

     MESSAGE i000 WITH 'DOCUMENT DOES NOT EXIST'.

   ENDIF.

ENDFORM.                               " PROCESS_FOR_POS_DATE

*&---------------------------------------------------------------------*

FORM print_voucher_data.

   DATA : ilines(5) TYPE n,

          ino(5)    TYPE n.

   itcpo-tdtitle    = 'VOUCHER PRINTOUT'.

   itcpo-tdcovtitle = 'VOUCHER PRINTOUT'.

   CLEAR itcpo.

   itcpo-tdpageslct  = space.           "ALL PAGES

   itcpo-tdnewid     = 'X'.             "CREATE NEW SPOOL DATASET

   itcpo-tdcopies    = 1.               "ONE COPY

   itcpo-tddest      = printer.         "NAME OF PRINTER

   itcpo-tdpreview   = ' '.             "NO PREVIEW

   itcpo-tdcover     = space.           "NO COVER PAGE

*  ITCPO-TDDATASET   = P_TDDATASET.    "DATASET NAME

*  IF ZW_XVORL EQ SPACE.

*    ITCPO-TDSUFFIX1 = P_TDDEST.       "NAME OR PRINTER

*  ELSE.

*    ITCPO-TDSUFFIX1 = 'TEST'.              "TEST RUN

*  ENDIF.

*  ITCPO-TDSUFFIX2   = PAR_VARI.            "NAME OF REPORT VARIANT

   itcpo-tdimmed     = ' '.                  "PRINT IMMEDIATELY?

   itcpo-tddelete    = space.                "DO NOT DELETE AFTER PRINT

   itcpo-tdtitle     = 'VOUCHER PRINTOUT'.   "TITLE OF POP-UP-WINDOW

   itcpo-tdcovtitle  = 'VOUCHER PRINTOUT'.   "TITLE OF PRINT-COVER

*  ITCPO-TDAUTORITY  = P_TDAUTORITY.        "PRINT AUTHORITY

   itcpo-tdarmod     = 1.                    "PRINT ONLY

   CALL FUNCTION 'OPEN_FORM'

     EXPORTING

       device   = 'PRINTER'

       dialog   = 'X'

       form     = 'YSCR_FI_VOUCHER'

       language = sy-langu

       options  = itcpo

     IMPORTING

       result   = itcpp

     EXCEPTIONS

       canceled = 1

       device   = 2

       form     = 3

       options  = 4

       unclosed = 5

       OTHERS   = 6.

   DATA flg_start.

   CLEAR flg_start.

*FOR DOCUMENT TYPE DESCRPTION

   LOOP AT bkpftab.

     SELECT SINGLE * FROM t003t

       WHERE blart EQ bkpftab-blart

         AND spras EQ 'E'.

     IF sy-subrc EQ 0.

       MOVE t003t-ltext TO bkpftab-ltext.

       MODIFY bkpftab.

     ENDIF.

   ENDLOOP.

************************Added new logic for change of heading.

*LOOP AT BKPFTAB.

*break sdcons.

   LOOP AT bkpftab.

     IF  bkpftab-v_belnr IS NOT INITIAL.

       SELECT belnr tbtkz FROM rseg INTO CORRESPONDING FIELDS OF  TABLE itab_text

       FOR ALL ENTRIES IN bkpftab  WHERE belnr = bkpftab-v_belnr.

     ELSE.

*  IF bkpftab IS NOT INITIAL.

       SELECT belnr tbtkz FROM rseg INTO CORRESPONDING FIELDS OF  TABLE itab_text

       FOR ALL ENTRIES IN bkpftab  WHERE belnr = bkpftab-belnr.

     ENDIF.

     IF bkpftab-v_belnr IS NOT INITIAL.

       SELECT belnr xrech FROM rbkp INTO CORRESPONDING FIELDS OF  TABLE itab_text1

       FOR ALL ENTRIES IN bkpftab  WHERE belnr = bkpftab-v_belnr.

     ELSE.

       SELECT belnr xrech FROM rbkp INTO CORRESPONDING FIELDS OF  TABLE itab_text1

       FOR ALL ENTRIES IN bkpftab  WHERE belnr = bkpftab-belnr.

     ENDIF.

   ENDLOOP.

   LOOP AT itab_text1 INTO wa_text1.

     READ TABLE itab_text INTO wa_text WITH  KEY belnr = wa_text1-belnr.

     IF wa_text-tbtkz NE ' '.

       MOVE: wa_text-tbtkz TO wa_text1-tbtkz.

*  MODIFY itab_text1  FROM wa_text1 TRANSPORTING tbtkz.  "commented by prasanna on 7.5.2012

       MODIFY itab_text1  FROM wa_text1 TRANSPORTING tbtkz.

       CLEAR : wa_text.

     ENDIF.

   ENDLOOP.

   IF bkpftab-blart = 'RE' .

     LOOP AT itab_text1 INTO wa_text1.

       IF wa_text1-xrech = 'X' AND wa_text1-tbtkz = ' '.

         wa_text1-text = 'INVOICE'.

       ELSEIF wa_text1-xrech = ' ' AND wa_text1-tbtkz = ' '.

         wa_text1-text = 'DEBIT MEMO'."'CREDIT MEMO'.

       ELSEIF wa_text1-xrech = 'X' AND wa_text1-tbtkz = 'X'.

         wa_text1-text = 'SUBSEQUENT CREDIT'."'SUBSEQUENT DEBIT'.

       ELSEIF wa_text1-xrech = ' ' AND wa_text1-tbtkz = 'X'.

         wa_text1-text = 'SUBSEQUENT DEBIT'."'SUBSEQUENT CREDIT'.

       ENDIF.

       MODIFY itab_text1 FROM wa_text1  TRANSPORTING text.

     ENDLOOP.

     LOOP AT  bkpftab.

       READ TABLE  itab_text1 INTO wa_text1 WITH  KEY belnr = bkpftab-belnr.

       IF sy-subrc EQ 0.

         MOVE : wa_text1-text TO bkpftab-ltext.

         MODIFY  bkpftab TRANSPORTING ltext.

       ENDIF.

     ENDLOOP.

   ELSEIF   bkpftab-blart = 'P1'.

     LOOP AT itab_text1 INTO wa_text1.

       IF wa_text1-xrech = 'X' AND wa_text1-tbtkz = ' '.

         wa_text1-text = 'INVOICE'.

       ELSEIF wa_text1-xrech = ' ' AND wa_text1-tbtkz = ' '.

         wa_text1-text = 'DEBIT MEMO'."'CREDIT MEMO'.

       ELSEIF wa_text1-xrech = 'X' AND wa_text1-tbtkz = 'X'.

         wa_text1-text = 'SUBSEQUENT CREDIT'."'SUBSEQUENT DEBIT'.

       ELSEIF wa_text1-xrech = ' ' AND wa_text1-tbtkz = 'X'.

         wa_text1-text = 'SUBSEQUENT DEBIT'."'SUBSEQUENT CREDIT'.

       ENDIF.

       MODIFY itab_text1 FROM wa_text1  TRANSPORTING text.

     ENDLOOP.

     LOOP AT  bkpftab.

*      READ TABLE  itab_text1 INTO wa_text1 WITH  KEY belnr = bkpftab-belnr. "commented by prasanna on 8.5.2012

       READ TABLE  itab_text1 INTO wa_text1 WITH  KEY belnr = bkpftab-v_belnr. "added by prasanna on 8.5.2012

       IF sy-subrc EQ 0.

         MOVE : wa_text1-text TO bkpftab-ltext.

         MODIFY  bkpftab TRANSPORTING ltext.

       ENDIF.

     ENDLOOP.

   ELSEIF bkpftab-blart = 'P2' .

     LOOP AT itab_text1 INTO wa_text1.

       IF wa_text1-xrech = 'X' AND wa_text1-tbtkz = ' '.

         wa_text1-text = 'INVOICE'.

       ELSEIF wa_text1-xrech = ' ' AND wa_text1-tbtkz = ' '.

         wa_text1-text = 'DEBIT MEMO'."'CREDIT MEMO'.

       ELSEIF wa_text1-xrech = 'X' AND wa_text1-tbtkz = 'X'.

         wa_text1-text = 'SUBSEQUENT CREDIT'."'SUBSEQUENT DEBIT'.

       ELSEIF wa_text1-xrech = ' ' AND wa_text1-tbtkz = 'X'.

         wa_text1-text = 'SUBSEQUENT DEBIT'."'SUBSEQUENT CREDIT'.

       ENDIF.

       MODIFY itab_text1 FROM wa_text1  TRANSPORTING text.

     ENDLOOP.

     LOOP AT  bkpftab.

       READ TABLE  itab_text1 INTO wa_text1 WITH  KEY belnr = bkpftab-v_belnr.

       IF sy-subrc EQ 0.

         MOVE : wa_text1-text TO bkpftab-ltext.

         MODIFY  bkpftab TRANSPORTING ltext.

       ENDIF.

     ENDLOOP.

   ELSEIF bkpftab-blart = 'P3'.   "OR  bkpftab-blart = 'P1' OR  bkpftab-blart = 'P2' OR  bkpftab-blart = 'P3'  .

     LOOP AT itab_text1 INTO wa_text1.

       IF wa_text1-xrech = 'X' AND wa_text1-tbtkz = ' '.

         wa_text1-text = 'INVOICE'.

       ELSEIF wa_text1-xrech = ' ' AND wa_text1-tbtkz = ' '.

         wa_text1-text = 'DEBIT MEMO'."'CREDIT MEMO'.

       ELSEIF wa_text1-xrech = 'X' AND wa_text1-tbtkz = 'X'.

         wa_text1-text = 'SUBSEQUENT CREDIT'."'SUBSEQUENT DEBIT'.

       ELSEIF wa_text1-xrech = ' ' AND wa_text1-tbtkz = 'X'.

         wa_text1-text = 'SUBSEQUENT DEBIT'."'SUBSEQUENT CREDIT'.

       ENDIF.

       MODIFY itab_text1 FROM wa_text1  TRANSPORTING text.

     ENDLOOP.

     LOOP AT  bkpftab.

       READ TABLE  itab_text1 INTO wa_text1 WITH  KEY belnr = bkpftab-v_belnr.

       IF sy-subrc EQ 0.

         MOVE : wa_text1-text TO bkpftab-ltext.

         MODIFY  bkpftab TRANSPORTING ltext.

       ENDIF.

     ENDLOOP.

   ELSEIF bkpftab-blart = 'P4'.   "OR  bkpftab-blart = 'P1' OR  bkpftab-blart = 'P2' OR  bkpftab-blart = 'P3'  .

     LOOP AT itab_text1 INTO wa_text1.

       IF wa_text1-xrech = 'X' AND wa_text1-tbtkz = ' '.

         wa_text1-text = 'INVOICE'.

       ELSEIF wa_text1-xrech = ' ' AND wa_text1-tbtkz = ' '.

         wa_text1-text = 'DEBIT MEMO'."'CREDIT MEMO'.

       ELSEIF wa_text1-xrech = 'X' AND wa_text1-tbtkz = 'X'.

         wa_text1-text = 'SUBSEQUENT CREDIT'."'SUBSEQUENT DEBIT'.

       ELSEIF wa_text1-xrech = ' ' AND wa_text1-tbtkz = 'X'.

         wa_text1-text = 'SUBSEQUENT DEBIT'."'SUBSEQUENT CREDIT'.

       ENDIF.

       MODIFY itab_text1 FROM wa_text1  TRANSPORTING text.

     ENDLOOP.

     LOOP AT  bkpftab.

       READ TABLE  itab_text1 INTO wa_text1 WITH  KEY belnr = bkpftab-v_belnr.

       IF sy-subrc EQ 0.

         MOVE : wa_text1-text TO bkpftab-ltext.

         MODIFY  bkpftab TRANSPORTING ltext.

       ENDIF.

     ENDLOOP.

   ELSEIF bkpftab-blart = 'P5'.   "OR  bkpftab-blart = 'P1' OR  bkpftab-blart = 'P2' OR  bkpftab-blart = 'P3'  .

     LOOP AT itab_text1 INTO wa_text1.

       IF wa_text1-xrech = 'X' AND wa_text1-tbtkz = ' '.

         wa_text1-text = 'INVOICE'.

       ELSEIF wa_text1-xrech = ' ' AND wa_text1-tbtkz = ' '.

         wa_text1-text = 'DEBIT MEMO'."'CREDIT MEMO'.

       ELSEIF wa_text1-xrech = 'X' AND wa_text1-tbtkz = 'X'.

         wa_text1-text = 'SUBSEQUENT CREDIT'."'SUBSEQUENT DEBIT'.

       ELSEIF wa_text1-xrech = ' ' AND wa_text1-tbtkz = 'X'.

         wa_text1-text = 'SUBSEQUENT DEBIT'."'SUBSEQUENT CREDIT'.

       ENDIF.

       MODIFY itab_text1 FROM wa_text1  TRANSPORTING text.

     ENDLOOP.

     LOOP AT  bkpftab.

       READ TABLE  itab_text1 INTO wa_text1 WITH  KEY belnr = bkpftab-v_belnr.

       IF sy-subrc EQ 0.

         MOVE : wa_text1-text TO bkpftab-ltext.

         MODIFY  bkpftab TRANSPORTING ltext.

       ENDIF.

     ENDLOOP.

   ELSEIF bkpftab-blart = 'P6'.   "OR  bkpftab-blart = 'P1' OR  bkpftab-blart = 'P2' OR  bkpftab-blart = 'P3'  .

     LOOP AT itab_text1 INTO wa_text1.

       IF wa_text1-xrech = 'X' AND wa_text1-tbtkz = ' '.

         wa_text1-text = 'INVOICE'.

       ELSEIF wa_text1-xrech = ' ' AND wa_text1-tbtkz = ' '.

         wa_text1-text = 'DEBIT MEMO'."'CREDIT MEMO'.

       ELSEIF wa_text1-xrech = 'X' AND wa_text1-tbtkz = 'X'.

         wa_text1-text = 'SUBSEQUENT CREDIT'."'SUBSEQUENT DEBIT'.

       ELSEIF wa_text1-xrech = ' ' AND wa_text1-tbtkz = 'X'.

         wa_text1-text = 'SUBSEQUENT DEBIT'."'SUBSEQUENT CREDIT'.

       ENDIF.

       MODIFY itab_text1 FROM wa_text1  TRANSPORTING text.

     ENDLOOP.

     LOOP AT  bkpftab.

       READ TABLE  itab_text1 INTO wa_text1 WITH  KEY belnr = bkpftab-v_belnr.

       IF sy-subrc EQ 0.

         MOVE : wa_text1-text TO bkpftab-ltext.

         MODIFY  bkpftab TRANSPORTING ltext.

       ENDIF.

     ENDLOOP.

   ELSEIF bkpftab-blart = 'P7'.   "OR  bkpftab-blart = 'P1' OR  bkpftab-blart = 'P2' OR  bkpftab-blart = 'P3'  .

     LOOP AT itab_text1 INTO wa_text1.

       IF wa_text1-xrech = 'X' AND wa_text1-tbtkz = ' '.

         wa_text1-text = 'INVOICE'.

       ELSEIF wa_text1-xrech = ' ' AND wa_text1-tbtkz = ' '.

         wa_text1-text = 'DEBIT MEMO'."'CREDIT MEMO'.

       ELSEIF wa_text1-xrech = 'X' AND wa_text1-tbtkz = 'X'.

         wa_text1-text = 'SUBSEQUENT CREDIT'."'SUBSEQUENT DEBIT'.

       ELSEIF wa_text1-xrech = ' ' AND wa_text1-tbtkz = 'X'.

         wa_text1-text = 'SUBSEQUENT DEBIT'."'SUBSEQUENT CREDIT'.

       ENDIF.

       MODIFY itab_text1 FROM wa_text1  TRANSPORTING text.

     ENDLOOP.

     LOOP AT  bkpftab.

       READ TABLE  itab_text1 INTO wa_text1 WITH  KEY belnr = bkpftab-v_belnr.

       IF sy-subrc EQ 0.

         MOVE : wa_text1-text TO bkpftab-ltext.

         MODIFY  bkpftab TRANSPORTING ltext.

       ENDIF.

     ENDLOOP.

   ELSEIF bkpftab-blart = 'P8'.   "OR  bkpftab-blart = 'P1' OR  bkpftab-blart = 'P2' OR  bkpftab-blart = 'P3'  .

     LOOP AT itab_text1 INTO wa_text1.

       IF wa_text1-xrech = 'X' AND wa_text1-tbtkz = ' '.

         wa_text1-text = 'INVOICE'.

       ELSEIF wa_text1-xrech = ' ' AND wa_text1-tbtkz = ' '.

         wa_text1-text = 'DEBIT MEMO'."'CREDIT MEMO'.

       ELSEIF wa_text1-xrech = 'X' AND wa_text1-tbtkz = 'X'.

         wa_text1-text = 'SUBSEQUENT CREDIT'."'SUBSEQUENT DEBIT'.

       ELSEIF wa_text1-xrech = ' ' AND wa_text1-tbtkz = 'X'.

         wa_text1-text = 'SUBSEQUENT DEBIT'."'SUBSEQUENT CREDIT'.

       ENDIF.

       MODIFY itab_text1 FROM wa_text1  TRANSPORTING text.

     ENDLOOP.

Read only

0 Likes
3,549

     LOOP AT  bkpftab.

       READ TABLE  itab_text1 INTO wa_text1 WITH  KEY belnr = bkpftab-v_belnr.

       IF sy-subrc EQ 0.

         MOVE : wa_text1-text TO bkpftab-ltext.

         MODIFY  bkpftab TRANSPORTING ltext.

       ENDIF.

     ENDLOOP.

   ENDIF . " commented by prasanna on 7.5.2012

   DESCRIBE TABLE bkpftab LINES ilines.

   DATA:v_belnr TYPE bkpf-belnr.

   DATA:v_bukrs TYPE bkpf-bukrs.

   DATA:v_gjahr TYPE bkpf-gjahr.

   DATA:v_werks TYPE t001w-werks.

   DATA:v_lifnr TYPE lfa1-lifnr.

   SORT bkpftab BY belnr.

*break sdcons.

   LOOP AT bkpftab.

     CLEAR:v_belnr,v_lifnr,v_werks,v_prctr1,v_prctr,v_bukrs,v_gjahr.

     CLEAR : p_name .

     v_belnr = bkpftab-belnr. "Commented by ananth

     v_bukrs = bkpftab-bukrs.

     v_gjahr = bkpftab-gjahr.

*v_lifnr = bkpftab-lifnr.

     CLEAR:bkpftab.

     READ TABLE bkpftab WITH KEY belnr = v_belnr

                                 bukrs = v_bukrs

                                 gjahr = v_gjahr.

     ino = ino + 1.

     CLEAR: zcheck_no, zcheck_date.

     SELECT SINGLE * FROM payr WHERE

               zbukr bkpftab-bukrs AND

               vblnr bkpftab-belnr AND

               gjahr rgjahr AND

               voidr = '0'.

     IF sy-subrc EQ 0.

       WRITE  payr-chect TO zcheck_no NO-ZERO.

*      CONCATENATE 'CHECK NO:' ZCHECK_NO INTO ZCHECK_NO SEPARATED BY SPACE.

       WRITE payr-zaldt TO zcheck_date DD/MM/YYYY.

*      CONCATENATE 'DATE:' ZCHECK_DATE INTO ZCHECK_DATE SEPARATED BY SPACE.

     ENDIF.

     READ TABLE it001 WITH KEY bukrs = rbukrs-low.

     CLEARdr_tot, cr_tot.

*    PERFORM WRITE_FORM USING 'HEADERS' 'SET' 'BODY' 'MAIN'.

     PERFORM write_form USING 'HEAD' 'SET' 'BODY' 'HEADER'." 'LOGO'."'NEW

*BREAK-POINT.

     PERFORM write_form USING 'ADDRESS' 'SET' 'BODY' 'WINDOW1'.

     PERFORM write_form USING 'ADDRESS' 'SET' 'BODY' 'WINDOW2'.

*     PERFORM write_form USING 'ADDRESS' 'SET' 'BODY' 'WINDOW5'.

*PERFORM WRITE_FORM USING 'ADDRESS' 'SET' 'BODY' 'WINDOW3'.

     CALL FUNCTION 'WRITE_FORM'

       EXPORTING

         element   = 'WIN3'

*       FUNCTION  = P_FUN

*       TYPE      = P_TYP

         window    = 'WINDOW3'

       EXCEPTIONS

         element   = 1

         function  = 2

         type      = 3

         unopened  = 4

         unstarted = 5

         window    = 6

         OTHERS    = 7.

     break abapcons.

     READ TABLE bkpftab WITH KEY belnr = v_belnr

                                 bukrs = v_bukrs

                                 gjahr = v_gjahr.

     IF sy-subrc = 0.

       SELECT SINGLE  prctr FROM bseg INTO v_prctr WHERE belnr = bkpftab-belnr

                                  AND bukrs = bkpftab-bukrs

                                   AND gjahr = bkpftab-gjahr

                                   AND prctr <> ''.

       IF sy-subrc = 0.

         v_prctr1 = v_prctr.

         CONDENSE v_prctr1.

         SHIFT v_prctr1 LEFT DELETING LEADING '0'.

         v_werks = v_prctr1.

*   clear:p_name.

         SELECT SINGLE name1 FROM t001w INTO p_name WHERE werks = v_werks."bsegtab-prctr1.

       ENDIF.

       CLEAR:bsegtab.

     ENDIF.

     CALL FUNCTION 'WRITE_FORM'

       EXPORTING

         element   = 'WIN5'

         function  = 'SET'

         type      = 'BODY'"P_TYP

         window    = 'WINDOW5'

       EXCEPTIONS

         element   = 1

         function  = 2

         type      = 3

         unopened  = 4

         unstarted = 5

         window    = 6

         OTHERS    = 7.

     READ TABLE bkpftab WITH KEY belnr = v_belnr

                                 bukrs = v_bukrs

                                 gjahr = v_gjahr. "Added by ananth

     bsegtab_new[] = bsegtab[].

     READ TABLE bkpftab WITH KEY belnr = v_belnr

                                 bukrs = v_bukrs

                                 gjahr = v_gjahr.. "Added by ananth

*SORT bsegtab_new by lifnr kunnr.

     DELETE bsegtab_new WHERE koart = 'A'OR koart 'M' OR koart 'S' .

*DELETE bsegtab_new WHERE koart ne  'D'.

*DELETE bsegtab_new WHERE   NOT in koart('K','D').

     IF it_vendor_addr IS NOT INITIAL AND it_customer_addr IS NOT INITIAL.

       SORT  bsegtab_new  DESCENDING BY koart.

     ELSEIF

        it_vendor_addr IS NOT INITIAL.

       SORT bsegtab_new BY lifnr.

     ELSEIF

       it_customer_addr IS NOT INITIAL.

       SORT   bsegtab_new BY kunnr.

     ENDIF.

*BREAK-POINT.

     LOOP AT bsegtab_new WHERE belnr = bkpftab-belnr AND lifnr  IS NOT INITIAL OR kunnr IS  NOT INITIAL .

       IF bsegtab_new-lifnr1 IS NOT INITIAL.

         SORT it_address BY lifnr.

*****************commented as on  01.06.2012

         IF p_journ EQ 'X'.

           READ TABLE bsegtab WITH KEY belnr = v_belnr

                                       bukrs = v_bukrs

                                       gjahr = v_gjahr.

           IF sy-subrc = 0.

             v_lifnr = bsegtab_new-lifnr.

           ENDIF.

           CLEAR: bsegtab_new-lifnr.

           bsegtab_new-lifnr = v_lifnr.

         ENDIF.

*****************commented as on  01.06.2012

         READ TABLE it_address INTO wa_address WITH KEY lifnr = bsegtab_new-lifnr.

         CLEAR:v_add1_1,v_add2_1,v_add3_1.

         IF sy-subrc EQ 0.

           v_name1 = wa_address-name.

           v_name2 = wa_address-name2.

           IF wa_address-house_num1 IS NOT INITIAL.

             CONCATENATE wa_address-house_num1 v_add1_1 INTO v_add1_1 .

           ENDIF.

           IF wa_address-street IS NOT INITIAL.

             IF v_add1_1 IS INITIAL.

               CONCATENATE v_add1_1 wa_address-street  INTO v_add1_1.

             ELSE.

               CONCATENATE v_add1_1 wa_address-street  INTO v_add1_1 SEPARATED BY

               ','.

             ENDIF.

           ENDIF.

           IF wa_address-str_suppl1 IS NOT INITIAL.

             IF v_add1_1 IS INITIAL.

               CONCATENATE  v_add1_1 wa_address-str_suppl1 INTO v_add1_1 .

             ELSE.

               CONCATENATE  v_add1_1 wa_address-str_suppl1 INTO v_add1_1

                    SEPARATED BY ','.

             ENDIF.

           ENDIF.

           IF wa_address-str_suppl2 IS NOT INITIAL.

             CONCATENATE wa_address-str_suppl2 v_add2_1 INTO v_add2_1 .

           ENDIF.

           IF wa_address-str_suppl3 IS NOT INITIAL.

             IF v_add2_1 IS INITIAL.

               CONCATENATE v_add2_1 wa_address-str_suppl3  INTO v_add2_1 .

             ELSE.

               CONCATENATE v_add2_1 wa_address-str_suppl3  INTO v_add2_1

                    SEPARATED BY ','.

             ENDIF.

           ENDIF.

           IF wa_address-city IS NOT INITIAL.

             IF v_add2_1 IS INITIAL.

               CONCATENATE v_add2_1 wa_address-city  INTO v_add2_1 .

             ELSE.

               CONCATENATE v_add2_1 wa_address-city  INTO v_add2_1

                    SEPARATED BY ','.

             ENDIF.

           ENDIF.

           IF wa_address-state IS NOT INITIAL.

             CONCATENATE v_add3_1 wa_address-state  INTO v_add3_1.

           ENDIF.

           IF wa_address-postal IS NOT INITIAL.

             IF v_add3_1 IS INITIAL.

               CONCATENATE v_add3_1 wa_address-postal  INTO v_add3_1.

             ELSE.

               CONCATENATE v_add3_1 wa_address-postal  INTO v_add3_1

                    SEPARATED BY ','.

             ENDIF.

           ENDIF.

           IF wa_address-country_name IS NOT INITIAL.

             IF v_add3_1 IS INITIAL.

               CONCATENATE v_add3_1  wa_address-country_name INTO v_add3_1 .

             ELSE.

               CONCATENATE v_add3_1  wa_address-country_name INTO v_add3_1

                    SEPARATED BY ','.

             ENDIF.

           ENDIF.

           IF wa_address-tel_number IS NOT INITIAL.

             MOVE: wa_address-tel_number TO v_telno_1.

           ENDIF .

           IF v_telno_1 IS NOT INITIAL.

             CONCATENATE 'TEL:' v_telno_1  INTO v_telno1_2 SEPARATED BY space.

           ENDIF.

           IF wa_address-fax_number IS   NOT  INITIAL.

             MOVE : wa_address-fax_number TO v_faxno_1.

           ENDIF.

           IF v_faxno_1 IS NOT INITIAL.

             CONCATENATE 'FAX:' v_faxno_1  INTO v_faxno1_2 SEPARATED BY space.

           ENDIF.

***********************Added new ended on 2.5.2012

           break abapcons.

           CALL FUNCTION 'WRITE_FORM'

             EXPORTING

               element   = 'VENADD'

*             FUNCTION  = P_FUN

*             TYPE      = P_TYP

               window    = 'WINDOW4'

             EXCEPTIONS

               element   = 1

               function  = 2

               type      = 3

               unopened  = 4

               unstarted = 5

               window    = 6

               OTHERS    = 7.

           "added by ananth

           READ TABLE bkpftab WITH KEY belnr = v_belnr

                                       bukrs = v_bukrs

                                       gjahr = v_gjahr.

           IF sy-subrc = 0.

             SELECT SINGLE  prctr FROM bseg INTO v_prctr WHERE belnr = bkpftab-belnr

                                        AND bukrs = bkpftab-bukrs

                                         AND gjahr = bkpftab-gjahr

                                         AND prctr <> ''.

             IF sy-subrc = 0.

               v_prctr1 = v_prctr.

               CONDENSE v_prctr1.

               SHIFT v_prctr1 LEFT DELETING LEADING '0'.

               v_werks = v_prctr1.

*  clear:p_name.

               SELECT SINGLE name1 FROM t001w INTO p_name WHERE werks = bsegtab-prctr1.

             ENDIF.

*  endif.

             CLEAR:bsegtab.

             CALL FUNCTION 'WRITE_FORM'

               EXPORTING

                 element   = 'WIN5'

                 function  = 'SET'

                 type      = 'BODY'"P_TYP

                 window    = 'WINDOW5'

               EXCEPTIONS

                 element   = 1

                 function  = 2

                 type      = 3

                 unopened  = 4

                 unstarted = 5

                 window    = 6

                 OTHERS    = 7.

*READ TABLE bkpftab with key belnr = v_belnr. "Added by ananth

           ENDIF.

*****************aDDED NEW BY PRASANNA ON 18.5.2012

           CLEAR: wa_address.

         ENDIF.

       ELSEIF

              bsegtab_new-kunnr1 IS NOT INITIAL.

         SORT it_address BY kunnr.

         READ TABLE it_address INTO wa_address WITH KEY kunnr = bsegtab_new-kunnr.

         IF sy-subrc EQ 0.

           CLEAR:v_add1_1,v_add2_1,v_add3_1.

           v_name1 = wa_address-name.

           v_name2 = wa_address-name2.

           IF wa_address-house_num1 IS NOT INITIAL.

             CONCATENATE wa_address-house_num1 v_add1_1 INTO v_add1_1 .

           ENDIF.

           IF wa_address-street IS NOT INITIAL.

             IF v_add1_1 IS INITIAL.

               CONCATENATE v_add1_1 wa_address-street  INTO v_add1_1.

             ELSE.

               CONCATENATE v_add1_1 wa_address-street  INTO v_add1_1 SEPARATED BY

               ','.

             ENDIF.

           ENDIF.

           IF wa_address-str_suppl1 IS NOT INITIAL.

             IF v_add1_1 IS INITIAL.

               CONCATENATE  v_add1_1 wa_address-str_suppl1 INTO v_add1_1 .

             ELSE.

               CONCATENATE  v_add1_1 wa_address-str_suppl1 INTO v_add1_1

                    SEPARATED BY ','.

             ENDIF.

           ENDIF.

           IF wa_address-str_suppl2 IS NOT INITIAL.

             CONCATENATE wa_address-str_suppl2 v_add2_1 INTO v_add2_1 .

           ENDIF.

           IF wa_address-str_suppl3 IS NOT INITIAL.

             IF v_add2_1 IS INITIAL.

               CONCATENATE v_add2_1 wa_address-str_suppl3  INTO v_add2_1 .

             ELSE.

               CONCATENATE v_add2_1 wa_address-str_suppl3  INTO v_add2_1

                    SEPARATED BY ','.

             ENDIF.

           ENDIF.

           IF wa_address-city IS NOT INITIAL.

             IF v_add2_1 IS INITIAL.

               CONCATENATE v_add2_1 wa_address-city  INTO v_add2_1 .

             ELSE.

               CONCATENATE v_add2_1 wa_address-city  INTO v_add2_1

                    SEPARATED BY ','.

             ENDIF.

           ENDIF.

           IF wa_address-state IS NOT INITIAL.

             CONCATENATE v_add3_1 wa_address-state  INTO v_add3_1.

           ENDIF.

           IF wa_address-postal IS NOT INITIAL.

             IF v_add3_1 IS INITIAL.

               CONCATENATE v_add3_1 wa_address-postal  INTO v_add3_1.

             ELSE.

               CONCATENATE v_add3_1 wa_address-postal  INTO v_add3_1

                    SEPARATED BY ','.

             ENDIF.

           ENDIF.

           IF wa_address-country_name IS NOT INITIAL.

             IF v_add3_1 IS INITIAL.

               CONCATENATE v_add3_1  wa_address-country_name INTO v_add3_1 .

             ELSE.

               CONCATENATE v_add3_1  wa_address-country_name INTO v_add3_1

                    SEPARATED BY ','.

             ENDIF.

           ENDIF.

           IF wa_address-tel_number IS NOT INITIAL.

             MOVE: wa_address-tel_number TO v_telno_1.

           ENDIF .

           IF v_telno_1 IS NOT INITIAL.

             CONCATENATE 'TEL:' v_telno_1  INTO v_telno1_2 SEPARATED BY space.

           ENDIF.

           IF wa_address-fax_number IS   NOT  INITIAL.

             MOVE : wa_address-fax_number TO v_faxno_1.

           ENDIF.

           IF v_faxno_1 IS NOT INITIAL.

             CONCATENATE 'FAX:' v_faxno_1  INTO v_faxno1_2 SEPARATED BY space.

           ENDIF.

           CALL FUNCTION 'WRITE_FORM'

             EXPORTING

               element   = 'VENADD'

*             FUNCTION  = P_FUN

*             TYPE      = P_TYP

               window    = 'WINDOW4'

             EXCEPTIONS

               element   = 1

               function  = 2

               type      = 3

               unopened  = 4

               unstarted = 5

               window    = 6

               OTHERS    = 7.

           READ TABLE bkpftab WITH KEY belnr = v_belnr

                                       bukrs = v_bukrs

                                       gjahr = v_gjahr.

           IF sy-subrc = 0.

             SELECT SINGLE  prctr FROM bseg INTO v_prctr WHERE belnr = bkpftab-belnr

                                        AND bukrs = bkpftab-bukrs

                                         AND gjahr = bkpftab-gjahr

                                         AND prctr <> ''.

             IF sy-subrc = 0.

               v_prctr1 = v_prctr.

               CONDENSE v_prctr1.

               SHIFT v_prctr1 LEFT DELETING LEADING '0'.

               v_werks = v_prctr1.

*  clear:p_name.

               SELECT SINGLE name1 FROM t001w INTO p_name WHERE werks = bsegtab-prctr1.

             ENDIF.

             CLEAR:bsegtab.

*endif.

             CALL FUNCTION 'WRITE_FORM'

               EXPORTING

                 element   = 'WIN5'

                 function  = 'SET'

                 type      = 'BODY'"P_TYP

                 window    = 'WINDOW5'

               EXCEPTIONS

                 element   = 1

                 function  = 2

                 type      = 3

                 unopened  = 4

                 unstarted = 5

                 window    = 6

                 OTHERS    = 7.

           ENDIF.

         ENDIF.

       ENDIF .

     ENDLOOP.

     READ TABLE bkpftab WITH KEY belnr = v_belnr

                                 bukrs = v_bukrs

                                 gjahr = v_gjahr. "Added by ananth

     LOOP AT bsegtab WHERE belnr = v_belnr."bkpftab-belnr.

       CLEAR wrk_kostl.

       IF NOT bsegtab-kostl IS INITIAL AND NOT bsegtab-aufnr IS INITIAL AND NOT bsegtab-wbsno IS INITIAL.

         CONCATENATE bsegtab-kostl '\' bsegtab-aufnr  '\' bsegtab-wbsno INTO wrk_kostl.

       ELSE.

         IF bsegtab-kostl IS INITIAL AND NOT bsegtab-aufnr IS INITIAL AND NOT bsegtab-wbsno IS INITIAL.

           CONCATENATE bsegtab-aufnr  '\' bsegtab-wbsno INTO wrk_kostl.

         ELSEIF NOT bsegtab-kostl IS INITIAL AND bsegtab-aufnr IS INITIAL AND NOT bsegtab-wbsno IS INITIAL.

           CONCATENATE bsegtab-kostl  '\' bsegtab-wbsno INTO wrk_kostl.

         ELSEIF NOT bsegtab-kostl IS INITIAL AND NOT bsegtab-aufnr IS INITIAL AND bsegtab-wbsno IS INITIAL.

           CONCATENATE bsegtab-kostl  '\' bsegtab-aufnr INTO wrk_kostl.

         ELSEIF bsegtab-kostl IS INITIAL AND bsegtab-aufnr IS INITIAL AND NOT bsegtab-wbsno IS INITIAL.

           wrk_kostl bsegtab-wbsno.

         ELSEIF bsegtab-kostl IS INITIAL AND NOT bsegtab-aufnr IS INITIAL AND bsegtab-wbsno IS INITIAL.

           wrk_kostl bsegtab-aufnr.

         ELSE.

           wrk_kostl bsegtab-kostl.

         ENDIF.

       ENDIF.

       CLEAR: wrk_acc, wrk_desc, signed_dmbtr, signed_wrbtr.

****************Code For Getting Narration ********************************

       SELECT SINGLE sgtxt

              FROM bseg

              INTO sgtxt

              WHERE belnr = bkpftab-belnr AND sgtxt <> '' AND bukrs  bkpftab-bukrs  AND gjahr bkpftab-gjahr .

****************End *******************************************************

*****************Added new by prasanna as on  30/5/2012

       IF bsegtab-shkzg EQ 'S'.

         IF bkpftab-waers <> 'INR' AND bkpf-waers <> 'ACUD'.

           a_usd = '0.0000'.

           a_inr = '0.00'.

           SELECT SINGLE wrbtr

                  FROM bseg

                  INTO a_usd

                  WHERE belnr = bkpftab-belnr

                 AND bukrs = bkpftab-bukrs

                 AND gjahr = bkpftab-gjahr.

           a_usd = a_usd / 100.

           amt_usd = amt_usd + a_usd.

         ELSE.

           a_inr = '0.00'.

           a_usd = '0.0000'.

           a_inr = bsegtab-wrbtr.

           amt_inr = amt_inr + a_inr.

         ENDIF.

       ENDIF.

       CASE bsegtab-koart.

         WHEN 'S' OR 'M' OR 'A'.

           WRITE bsegtab-hkont TO wrk_acc NO-ZERO.

           wrk_desc = bsegtab-txt50.

         WHEN 'K'.

           bupla = bsegtab-bupla.

           secco = bsegtab-secco.

           WRITE bsegtab-lifnr TO wrk_acc NO-ZERO.

           wrk_desc = bsegtab-txt50.

           vend_name = bsegtab-txt50.

       ENDCASE.

       IF amt_inr IS NOT INITIAL.

         CALL FUNCTION 'Z_SPELL_AMOUNT_CURR_SENT'

           EXPORTING

             amount    = amt_inr

             currency  = 'INR'

*           FILLER    = ' '

*           LANGUAGE  = 'EN'

           IMPORTING

             in_words  = amt_words

           EXCEPTIONS

             not_found = 1

             too_large = 2

             OTHERS    = 3.

         IF sy-subrc <> 0.

* Implement suitable error handling here

         ENDIF.

       ENDIF.

       MOVE: amt_words-word TO amt.

       IF amt_usd IS NOT INITIAL.

         CALL FUNCTION 'Z_SPELL_AMOUNT_CURR_SENT'

           EXPORTING

             amount    = amt_usd

             currency  = 'USD'

*           FILLER    = ' '

*           LANGUAGE  = 'EN'

           IMPORTING

             in_words  = amt_words1

           EXCEPTIONS

             not_found = 1

             too_large = 2

             OTHERS    = 3.

         IF sy-subrc <> 0.

* Implement suitable error handling here

         ENDIF.

       ENDIF.

       MOVE: amt_words1-word TO amt1.

***************Added new ended by prasanna for amout in words

       MOVE bsegtab-dmbtr TO signed_dmbtr.

       MOVE bsegtab-wrbtr TO signed_wrbtr.

*APPEND A NEGATIVE SIGN TO CREDIT AMOUNTS, WHILE DISPLAYING ON SCREEN

       IF bsegtab-shkzg = 'S'.

         dr_tot = dr_tot + bsegtab-dmbtr.

         CONCATENATE signed_dmbtr ' ' INTO signed_dmbtr.

         CONCATENATE signed_wrbtr ' ' INTO signed_wrbtr.

         zdr_cr = 'DR'.

         IF wrk_narr IS INITIAL.

           wrk_narr = bsegtab-sgtxt.

         ENDIF.

       ELSE.

         cr_tot = cr_tot + bsegtab-dmbtr.

         CONCATENATE signed_dmbtr '-' INTO signed_dmbtr.

         CONCATENATE signed_wrbtr '-' INTO signed_wrbtr.

         zdr_cr = 'CR'.

       ENDIF.

       IF  NOT bsegtab-lifnr IS INITIAL.

         IF bsegtab-shkzg = 'K'.

           WRITE bsegtab-lifnr TO wrk_acc NO-ZERO.

           SELECT SINGLE * FROM  lfa1       CLIENT SPECIFIED

                  WHERE  mandt       = sy-mandt

                  AND    lifnr       = bsegtab-lifnr.

           wrk_desc =     lfa1-name1 .

         ENDIF.

       ELSEIF NOT bsegtab-kunnr IS INITIAL.

         WRITE bsegtab-kunnr TO wrk_acc NO-ZERO.

         SELECT SINGLE * FROM  kna1       CLIENT SPECIFIED

                WHERE  mandt       = sy-mandt

                AND    kunnr       = bsegtab-kunnr.

         wrk_desc = kna1-name1.

       ENDIF.

       SELECT SINGLE gtext

            FROM tgsbt

            INTO gtext

            WHERE gsber = bsegtab-gsber AND spras = 'EN'.

       IF sy-subrc = 0.

         MODIFY bsegtab.

       ENDIF.

       PERFORM write_form USING 'ITEMS' 'SET' 'BODY' 'MAIN'.

       READ TABLE bkpftab WITH KEY belnr = v_belnr

                                   bukrs = v_bukrs

                                   gjahr = v_gjahr."Added by ananth

     ENDLOOP.

     PERFORM write_form USING 'DEBIT' 'SET' 'BODY' 'MAIN'.

*CLEAR : tot_debit, tot_credit.

*    IF P_CASH <> 'X'.             "CONDITION CHECK NOT FOR CASH VOUCHER

     PERFORM write_form USING 'POHEAD' 'SET' 'BODY' 'MAIN'.

*      CLEAR : tot_debit, tot_credit.

*ENDLOOP.

**********Added new by prasanna on 23.5.2012

     READ TABLE bkpftab WITH KEY belnr = v_belnr

                                 bukrs = v_bukrs

                                 gjahr = v_gjahr. "Added by ananth

     LOOP AT bsegtab WHERE belnr = bkpftab-belnr AND gjahr = bkpftab-gjahr.

       CONCATENATE bkpftab-belnr bkpftab-gjahr INTO simple.

       SELECT SINGLE * FROM stxh WHERE tdname EQ simple AND tdid = '0001'          "FOR NOTE

         AND tdobject = 'RBKP'.

       IF sy-subrc IS INITIAL.

         CALL FUNCTION 'READ_TEXT'

           EXPORTING

             client   = sy-mandt

             id       = '0001'

             language = 'E'

             name     = simple

             object   = 'RBKP'

           TABLES

             lines    = itline.

         READ TABLE itline INDEX 1.

         MOVE itline-tdline TO bsegtab-note.

         MODIFY bsegtab.

         CLEAR bsegtab.

       ENDIF.

       IF NOT bsegtab-zterm IS INITIAL.            "FOR PAYMENT TERMS IF PURCHASE ORDER IS NOT THERE

         CALL FUNCTION 'FI_PRINT_ZTERM'

           EXPORTING

             i_zterm  = bsegtab-zterm

             i_langu  = sy-langu

             i_xt052u = 'X'

           TABLES

             t_ztext  = zbtxt.

         READ TABLE zbtxt INDEX 1.

         IF sy-subrc = 0.

           MOVE zbtxt-text1 TO pay_term.

         ENDIF.

       ENDIF.

       SELECT SINGLE ktext

              FROM aufk

              INTO bsegtab-ord_txt

              WHERE aufnr = bsegtab-aufnr.

       IF sy-subrc = 0.

         MODIFY bsegtab.

       ENDIF.

     ENDLOOP.

     READ TABLE bkpftab WITH KEY belnr = v_belnr

                                 bukrs = v_bukrs

                                 gjahr = v_gjahr. "Added by ananth

     LOOP AT bsegtab WHERE belnr = bkpftab-belnr AND gjahr = bkpftab-gjahr AND projk <> '00000000'.

       SELECT SINGLE post1

              FROM prps

              INTO bsegtab-wbs

              WHERE pspnr = bsegtab-projk.

       IF sy-subrc = 0.

         MODIFY bsegtab.

       ENDIF.

     ENDLOOP.

**************PICKING MORE THAN ONE COST CENTER *************************************************

     READ TABLE bkpftab WITH KEY belnr = v_belnr

                             bukrs = v_bukrs

                             gjahr = v_gjahr. "Added by ananth

     LOOP AT bsegtab WHERE belnr = bkpftab-belnr AND gjahr = bkpftab-gjahr AND NOT kostl IS INITIAL.

       SELECT SINGLE ktext

              FROM cskt

              INTO bsegtab-cost_center

              WHERE kostl = bsegtab-kostl AND spras = 'EN'.

       IF sy-subrc = 0.

         MODIFY bsegtab.

         MOVE bsegtab-cost_center TO itab_center-cost_center.

         APPEND itab_center.

       ENDIF.

     ENDLOOP.

     READ TABLE bkpftab WITH KEY belnr = v_belnr

                                 bukrs = v_bukrs

                                 gjahr = v_gjahr. "Added by ananth

     DELETE ADJACENT DUPLICATES FROM itab_center.

     CLEAR cost_center.

     IF NOT itab_center[] IS INITIAL.

       LOOP AT itab_center.

         CONCATENATE itab_center-cost_center ',' cost_center INTO cost_center.

       ENDLOOP.

       count = strlen( cost_center ).

       count = count - 1.

       cost_center = cost_center+0(count).

     ENDIF.

     CLEAR : itab_center[].

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

     LOOP AT itab_rseg WHERE belnr = bkpftab-belnr OR belnr = bkpftab-v_belnr AND gjahr = bkpftab-gjahr. " modified by prasanna 'added v_belnr condition

       bsart = ''.

       SELECT SINGLE bsart zterm                    "FOR PAYMENT TERMS OF PURCHASE ORDER

              FROM ekko

              INTO (bsart, zterm)

              WHERE ebeln EQ itab_rseg-ebeln.

*       ************CHANGES BY CG

       IF bsart EQ 'ZSER' .

         SELECT SINGLE mblnr FROM mseg INTO itab_rseg-mblnr WHERE ebeln EQ itab_rseg-ebeln AND mjahr = bkpftab-gjahr.

         MODIFY itab_rseg .

       ENDIF .

*          ******************eND OF CHANGES ***************

       IF NOT zterm IS INITIAL.

         CALL FUNCTION 'FI_PRINT_ZTERM'

           EXPORTING

             i_zterm  = zterm

             i_langu  = sy-langu

             i_xt052u = 'X'

           TABLES

             t_ztext  = zbtxt.

         READ TABLE zbtxt INDEX 1.

         IF sy-subrc = 0.

           MOVE zbtxt-text1 TO pay_term.

         ENDIF.

       ENDIF.

****************Code For Adding Network Number ****************************

       SELECT SINGLE nplnr

              FROM ekkn

              INTO nplnr

              WHERE ebeln = itab_rseg-ebeln AND nplnr <> ''.

*****************End*******************************************************

       PERFORM write_form USING 'PO' 'SET' 'BODY' 'MAIN'.

*      CLEAR : tot_debit,tot_credit.

     ENDLOOP.

     IF bkpftab-kursf IS NOT INITIAL .

       MOVE : bkpftab-kursf TO exch_rate.

     ENDIF.

     READ TABLE bkpftab WITH KEY belnr = v_belnr

                                 bukrs = v_bukrs

                                 gjahr = v_gjahr. "Added by ananth

*ENDLOOP.

     IF bkpftab-kursf IS INITIAL .

       bkpftab-kursf = '1.0000'.

       exch_rate = '1.0000'.

     ENDIF.

     PERFORM write_form USING 'NARR' 'SET' 'BODY' 'MAIN'.

     sgtxt = ''.

     nplnr = ''.

     CLEAR: dr_tot, cr_tot, amt_inr , amt_usd ,exch_rate.

     PERFORM write_form USING 'SIGN' 'SET' 'BODY' 'MAIN'.

     flg_start = 'X'.

     CLEAR: wrk_narr, flg_w, bupla, secco.

*    CLEAR: tot_debit,tot_credit.

     IF ino < ilines.

       IF NOT flg_start IS INITIAL.

         PERFORM write_form USING 'NEW' 'SET' 'BODY' 'MAIN'.

*       CLEAR: tot_debit,tot_credit.

       ENDIF.

     ENDIF.

     READ TABLE bkpftab WITH KEY belnr = v_belnr

                                 bukrs = v_bukrs

                                 gjahr = v_gjahr."Added by ananth

     READ TABLE bkpftab WITH KEY belnr = v_belnr

                                 bukrs = v_bukrs

                                 gjahr = v_gjahr."Added by ananth

*  CLEAR : p_name ."bkpftab ,

   ENDLOOP.

ENDFORM.                               " PRINT_VOUCHER_DATA

*----------------------------------------------------------------------*

FORM write_form USING    p_ele

                          p_fun

                          p_typ

                          p_win.

   CALL FUNCTION 'WRITE_FORM'

     EXPORTING

       element   = p_ele

       function  = p_fun

       type      = p_typ

       window    = p_win

     EXCEPTIONS

       element   = 1

       function  = 2

       type      = 3

       unopened  = 4

       unstarted = 5

       window    = 6

       OTHERS    = 7.

ENDFORM.                               " WRITE_FORM

*&---------------------------------------------------------------------*

FORM close_group.

   CALL FUNCTION 'CLOSE_FORM'

     EXCEPTIONS

       unopened = 1

       OTHERS   = 2.

ENDFORM.                               " CLOSE_GROUP

*&---------------------------------------------------------------------*

FORM close_form.

   CALL FUNCTION 'CLOSE_FORM'

     IMPORTING

       result   = itcpp

     EXCEPTIONS

       unopened = 1

       OTHERS   = 2.

   IF itcpp-tdspoolid NE 0.

     CLEAR tab_ausgabe.

     tab_ausgabe-name    = 'VOUCHER PRINTOUT'. "SPOOL REQUEST NAME

     tab_ausgabe-dataset = itcpp-tddataset.

     tab_ausgabe-spoolnr = itcpp-tdspoolid.

     tab_ausgabe-immed   = ' '.

     COLLECT tab_ausgabe.

   ENDIF.

   IF NOT itcpp-tdspoolid IS INITIAL.

     CALL FUNCTION 'RSPO_FINAL_SPOOLJOB'

       EXPORTING

         rqident = itcpp-tdspoolid

         set     = 'X'

       EXCEPTIONS

         OTHERS  = 0.

   ENDIF.

   PERFORM information.

ENDFORM.                               " CLOSE_FORM

*----------------------------------------------------------------------*

FORM gsber_selection.

*ADDED BY GD ON 20/05/2002 TO INCLUDE BUSINESS AREA SELECTION

   SELECT * FROM  bseg              "BSEG

     INTO CORRESPONDING FIELDS OF TABLE bseg_bus

     FOR ALL ENTRIES IN bkpftab

     WHERE belnr = bkpftab-belnr

       AND gjahr = bkpftab-gjahr

       AND bukrs = bkpftab-bukrs.

   SORT bseg_bus BY belnr gsber.

   DELETE ADJACENT DUPLICATES FROM bseg_bus COMPARING ALL FIELDS.

*THIS WILL DELETE BUSINESS AREA'S OTHER THAN GIVEN IN THE SELECTION

   LOOP AT bseg_bus.

     AT NEW belnr.

       bel = bseg_bus-belnr.

       found1 = 0.

     ENDAT.

     IF bseg_bus-gsber IN rgsber.

       found1 = 1.

     ENDIF.

     AT END OF belnr.

       IF found1 = 0.

         DELETE bseg_bus WHERE belnr = bel.

       ENDIF.

     ENDAT.

   ENDLOOP.

   DELETE ADJACENT DUPLICATES FROM bseg_bus COMPARING belnr.

   LOOP AT bkpftab.

     bel = bkpftab-belnr.

     READ TABLE bseg_bus WITH KEY belnr = bkpftab-belnr.

     IF NOT sy-subrc IS INITIAL.

       DELETE bkpftab WHERE belnr EQ bel.

     ENDIF.

   ENDLOOP.

ENDFORM.                                "GSBER_SELECTION

*----------------------------------------------------------------------*

FORM information.

   "BEI BEDINGTEM LOOP üBER INTERNE

   DATA:                                "TABELLEN WIRD DER ZEITPUNKT AT

     up_titel(1) TYPE n VALUE 0,        "FIRST NICHT DURCHLAUFEN!

     up_uline(1) TYPE n VALUE 0,        "LOOP DURCHLAUFEN ?

     up_rqident  LIKE tsp01-rqident.

   SORT tab_ausgabe.

* ERSTER LOOP FüR SOFORTDRUCK

   LOOP AT tab_ausgabe WHERE immed NE space.

     CHECK tab_ausgabe-spoolnr NE 0.

     up_rqident = tab_ausgabe-spoolnr.

     CALL FUNCTION 'RSPO_OUTPUT_SPOOL_REQUEST'

       EXPORTING

         spool_request_id = up_rqident

       EXCEPTIONS

         OTHERS           = 0.

   ENDLOOP.

   IF sy-batch EQ space.

     NEW-PAGE NO-TITLE LINE-SIZE 81.

   ENDIF.

* ZWEITER LOOP ZUR AUSGABE DER FILES

   CLEAR tab_ausgabe.

   LOOP AT tab_ausgabe WHERE renum NE space.

     up_uline = 1.

     IF up_titel EQ 0.

       IF sy-batch EQ space.

         FORMAT COLOR 1 INTENSIFIED.

         flg_local = space.

         WRITE:

             / sy-uline.

         HIDE flg_local.

         WRITE:

             / sy-vline NO-GAP,

          (79) text-092,

            81 sy-vline.

         HIDE flg_local.

         WRITE:

             / sy-uline.

         HIDE flg_local.

         FORMAT COLOR 1 INTENSIFIED OFF.

         WRITE:

             / sy-vline NO-GAP,

          (79) text-093,

         40(1) sy-vline,

            81 sy-vline.

         HIDE flg_local.

         WRITE:

             / sy-uline.

         HIDE flg_local.

       ELSE.

         MESSAGE s065.

         WRITE:

           text-092 TO txt_zeile.

         MESSAGE s065 WITH txt_zeile.

         WRITE:

           text-093 TO txt_zeile,

           '/'      TO txt_zeile+37(1).

         CONDENSE txt_zeile.

         MESSAGE s065 WITH txt_zeile.

         MESSAGE s064.

       ENDIF.

       up_titel = 1.

     ENDIF.

     IF sy-batch EQ space.

       FORMAT COLOR 2 INTENSIFIED OFF.

       flg_local = 'F'.

       FORMAT HOTSPOT ON.

       WRITE:

           / sy-vline NO-GAP,

             tab_ausgabe-name,

          40 sy-vline NO-GAP,

             tab_ausgabe-filename(40),

          81 sy-vline.

       FORMAT HOTSPOT OFF.

       HIDE: flg_local, tab_ausgabe.

     ELSE.

       WRITE:

         tab_ausgabe-name TO txt_zeile,

         '/'              TO txt_zeile+37(1).

       CONDENSE txt_zeile.

       MESSAGE s065 WITH txt_zeile tab_ausgabe-filename.

     ENDIF.

     DELETE tab_ausgabe.

   ENDLOOP.

* DRITTER LOOP ZUR AUSGABE DER SPOOL-DATEIEN

   CLEAR tab_ausgabe.

   LOOP AT tab_ausgabe.

     up_uline = 1.

     AT FIRST.

       IF sy-batch EQ space.

         FORMAT COLOR 1 INTENSIFIED.

         flg_local = space.

         WRITE:

             / sy-uline.

         HIDE flg_local.

         WRITE:

             / sy-vline NO-GAP,

          (79) text-090,

            81 sy-vline,

               sy-uline.

         HIDE flg_local.

         FORMAT COLOR 1 INTENSIFIED OFF.

         WRITE:

             / sy-vline NO-GAP,

          (79) text-091,

         40(1) sy-vline NO-GAP,

         55(1) sy-vline NO-GAP,

            81 sy-vline.

         HIDE flg_local.

         WRITE:

             / sy-uline.

         HIDE flg_local.

       ELSE.

         MESSAGE s065.

         WRITE:

           text-090 TO txt_zeile.

         MESSAGE s065 WITH txt_zeile.

         WRITE:

           text-091 TO txt_zeile,

           '/'      TO txt_zeile+37(1),

           '/'      TO txt_zeile+52(1).

         CONDENSE txt_zeile.

         MESSAGE s065 WITH txt_zeile.

         MESSAGE s064.

       ENDIF.

     ENDAT.

     IF sy-batch EQ space.

       IF tab_ausgabe-error EQ 'X'.

         FORMAT COLOR 6 INTENSIFIED.

       ELSE.

         FORMAT COLOR 2 INTENSIFIED OFF.

       ENDIF.

       IF tab_ausgabe-error EQ 'X'.

         flg_local = 'E'.

       ELSE.

         flg_local = 'S'.

       ENDIF.

       FORMAT HOTSPOT ON.

       WRITE:

           / sy-vline NO-GAP,

             tab_ausgabe-name,

          40 sy-vline NO-GAP,

             tab_ausgabe-dataset,

          55 sy-vline NO-GAP,

             tab_ausgabe-spoolnr,

          81 sy-vline.

       FORMAT HOTSPOT OFF.

       HIDE: flg_local, tab_ausgabe.

     ELSE.

       WRITE:

         tab_ausgabe-name     TO txt_zeile,

         '/'                  TO txt_zeile+37(1),

         tab_ausgabe-dataset  TO txt_zeile+40,

         '/'                  TO txt_zeile+52(1),

         tab_ausgabe-spoolnr  TO txt_zeile+55.

       CONDENSE txt_zeile.

       MESSAGE s065 WITH txt_zeile(50) txt_zeile+50.

     ENDIF.

   ENDLOOP.

   IF sy-batch EQ space AND up_uline NE 0.

     flg_local = space.

     WRITE:

       / sy-uline.

     HIDE flg_local.

   ENDIF.

ENDFORM.                               "INFORMATION

*----------------------------------------------------------------------*

* AT LINE-SELECTION                                                    *

*----------------------------------------------------------------------*

* AUSWAHL EINER ZEILE DER INFORMATION                                  *

* VERZWEIGEN IN DIE DTA-VERWALTUNG ODER DRUCKVERWALTUNG                *

*----------------------------------------------------------------------*

AT LINE-SELECTION.

   TYPE-POOLS sp01r.

   DATA up_list TYPE sp01r_id_list WITH HEADER LINE.

   DATA BEGIN OF up_bdc OCCURS 9.

           INCLUDE STRUCTURE bdcdata.

   DATA END OF up_bdc.

   DATA up_fdta      LIKE tstc-tcode VALUE 'FDTA'.

   DATA up_laufd(10) TYPE c.

   DATA up_meldung   LIKE shkontext-meldung.

   DATA up_titel     LIKE shkontext-titel.

   IF sy-lsind EQ 1.

     CASE flg_local.

       WHEN space.                      "KEINE GüLTIGE AUSWAHL

       WHEN 'E'.                        "FEHLERLISTE

         FORMAT COLOR 6 INTENSIFIED.

         ULINE AT (102).

         WRITE:

           /     sy-vline NO-GAP,

           (100) text-003 NO-GAP,

                 sy-vline.

         FORMAT COLOR 2.

         ULINE AT (102).

         REFRESH tab_fimsg.

         CALL FUNCTION 'FI_MESSAGE_GET'

           TABLES

             t_fimsg = tab_fimsg.

         LOOP AT tab_fimsg.

           fimsg = tab_fimsg.

           CALL FUNCTION 'K_MESSAGE_TRANSFORM'

             EXPORTING

               par_langu = sy-langu

               par_msgid = fimsg-msgid

               par_msgno = fimsg-msgno

               par_msgty = fimsg-msgty

               par_msgv1 = fimsg-msgv1

               par_msgv2 = fimsg-msgv2

               par_msgv3 = fimsg-msgv3

               par_msgv4 = fimsg-msgv4

             IMPORTING

               par_msgtx = txt_zeile

             EXCEPTIONS

               OTHERS    = 8.

           WRITE:

             /    sy-vline    NO-GAP,

                  fimsg-msgid(2),

                  fimsg-msgno NO-GAP,

                  sy-vline    NO-GAP,

             (93) txt_zeile   NO-GAP,

                  sy-vline.

           HIDE: flg_local, fimsg, txt_zeile.

           AT END OF msort.

             ULINE AT (102).

           ENDAT.

         ENDLOOP.

         CLEAR: fimsg, txt_zeile.

       WHEN 'F'.                        "SPRUNG IN DIE DTA-VERWALTUNG

         CALL FUNCTION 'AUTHORITY_CHECK_TCODE'

           EXPORTING

             tcode  = up_fdta

           EXCEPTIONS

             ok     = 0

             OTHERS = 4.

         IF sy-subrc NE 0.

           MESSAGE s172(00) WITH up_fdta.

         ELSE.

           REFRESH up_bdc.

           CLEAR up_bdc.

           up_bdc-program  = 'SAPMFDTA'.

           up_bdc-dynpro   = '100'.

           up_bdc-dynbegin = 'X'.

           APPEND up_bdc.

           CLEAR up_bdc.

           up_bdc-fnam     = 'REGUT-RENUM'.

           up_bdc-fval     = tab_ausgabe-renum.

           APPEND up_bdc.

           CLEAR up_bdc.

           up_bdc-fval     = '/8'.

           up_bdc-fnam     = 'BDC_OKCODE'.

           APPEND up_bdc.

           CLEAR up_bdc.

           up_bdc-program  = 'SAPMFDTA'.

           up_bdc-dynpro   = '200'.

           up_bdc-dynbegin = 'X'.

           APPEND up_bdc.

           CLEAR up_bdc.

           up_bdc-fval     = '/BDA'.

           up_bdc-fnam     = 'BDC_OKCODE'.

           APPEND up_bdc.

           CALL TRANSACTION up_fdta USING up_bdc MODE 'E'.

         ENDIF.

       WHEN 'S'.                        "SPRUNG IN DIE DRUCKVERWALTUNG

         CHECK tab_ausgabe-spoolnr NE space.

         REFRESH up_list.

         up_list-id = tab_ausgabe-spoolnr.

         APPEND up_list.

         CALL FUNCTION 'RSPO_RID_SPOOLREQ_LIST'

           EXPORTING

             id_list = up_list[]

           EXCEPTIONS

             OTHERS  = 0.

     ENDCASE.

   ELSE.

     CHECK:

       flg_local EQ 'E',

       NOT fimsg-msgid IS INITIAL,

       NOT fimsg-msgno IS INITIAL.

     up_titel   = text-003.

     up_meldung = txt_zeile.

     CALL FUNCTION 'HELPSCREEN_NA_CREATE'

       EXPORTING

         langu   = sy-langu

         meldung = up_meldung

         meld_id = fimsg-msgid

         meld_nr = fimsg-msgno

         msgv1   = fimsg-msgv1

         msgv2   = fimsg-msgv2

         msgv3   = fimsg-msgv3

         msgv4   = fimsg-msgv4

         titel   = up_titel.

     CLEAR fimsg.

   ENDIF.

Read only

0 Likes
3,549

Hi Vishal,

Can you pls give me your variable name, SAP Script Window Name and SAP Script Element Name.

ThankingYou All.

Read only

0 Likes
3,549

Hi Ankit,

I have attached one image 3.jpg with the zip file of the code in my second reply . its a screen shot from the script window.

The variable names are : v_name1, v_name2. v_add1_1, v_add2_1 , v_add3_1

Window name/id : VENADD. This window is not in the main window of the script.

And I am not sure what it means by script element but the same variable names are used in the window' VENADDs code as you can see in the image file i mentioned above.

Thanks,

Vishal.

Read only

Former Member
0 Likes
3,549

Hi vishal bhatt,

you have 2500 lines code without comments

with ancient coding like data definitions inbetween very hard to find bugs in coding like this.

You can only find the bug by investing lots of time in debugging. so i can just give hints on where you could debug. its not possible to find the bug by just looking at the code

As far as i understand your programm have 1 open form and 1 close form.

So to say, you have 1 formular with several pages.

if data in main window is larger than 1 page, it "generates" a new page. The data printed in the other windows stays constant.

I read some comments from 2012, this makes me think, this formular is in use already for at least 2 years, without bugs. did you figure out, since when does this bug happen? was it after a "small" code change?

When you debug your programm. Try to breakpoint at the loop-line which contains the wrong data. Try to figure out if a "write-form" is not getting performed. (due to if clause).

since every information in besides main window stays constant i would check the printed variables loop by loop.

what i did not understand is how a new page is printed with different information in non main-windows...

normaly you do new page by following 3 statements. but non of them are used more often then 1 time

close-form open-form

start-form end-form

new-window statment

what happens if you just test the wrong docnumber by selecting on selection screen? is it still wrong?

and what happens if you test the "docnumber befor the wrong document" + wrong docnumber? is there still wrong data?

regards

Stefan Seeburger

Read only

0 Likes
3,549

Hi Stefan,

Thanks for replying.

You are right, I guess I have to alot of debugging line by line to find the problem.

Another question is do I need to check anything in the script apart from the window code ??

I am pasting window4 & window5,both are out of main widnow, in the script form images below for your reference.

Window4 is in which the data is not changing and in window5 is changing

Regards,

Vishal.

Read only

0 Likes
3,549

Hi vishal bhatt,

i would guess the bug is in your programm, because you cant do much wrong defining your window. Just look that it is same type as window 5 - should be "VAR" in your case. --> you can set window as variable or const.

Const means, window is constant and content is the same for every page.

variable means content can vary for each page.

i think  you have set the window type as needed, because you have differnent content (just not always)

So i think the mistake is inside your loop logic, if the variables (used in your window) gets new value befor "write-form" or not.

regards

Stefan Seeburger