cancel
Showing results for 
Search instead for 
Did you mean: 

Printing multiple smartforms at once

Former Member
0 Kudos

HI Experts,

I have a small problem with smartforms. I have developed a smart form which will print customer monthly statement. In the selection screen I have restricted the selection to one customer only. Everything is working fine, but now my functional consultant wants customer range instead of single customer. I don't know how to print statements for multiple customers in smartforms. In SAPscripts, I can do this by start_form and close_form, but how to do it in smartforms? The following is the working code for single customer.

Please reply.

Thanks and regards,

M.Madhusudan Rao.

REPORT ZRFI001.

*-> Data declaration

*-> tables

TABLES: BSID,

VBRK.

*-> selection screen

PARAMETER: PA_BUKRS TYPE BUKRS OBLIGATORY. " company code

  • pa_kunnr type kunnr obligatory, " customer no

SELECT-OPTIONS: SO_KUNNR FOR BSID-KUNNR NO INTERVALS NO-EXTENSION.

PARAMETER: PA_BUDAT TYPE BUDAT OBLIGATORY. " date

*-> smartforms parameter

DATA: LV_FM_NAME TYPE RS38L_FNAM.

DATA: TP_TABIX LIKE SY-TABIX.

*-> internal tables

DATA: LIT_BSID TYPE TABLE OF BSID WITH HEADER LINE,

LIT_VBRK TYPE TABLE OF VBRK WITH HEADER LINE,

LIT_BSAD TYPE TABLE OF BSAD WITH HEADER LINE.

*-> work areas

DATA: LWA_BSID TYPE BSID,

LWA_VBRK TYPE VBRK,

LWA_BSAD TYPE BSAD.

START-OF-SELECTION.

*-> fetch tables

SELECT * INTO TABLE LIT_BSID

FROM BSID

WHERE BUKRS = PA_BUKRS

AND KUNNR IN SO_KUNNR

AND BUDAT <= PA_BUDAT.

IF LIT_BSID[] IS NOT INITIAL.

SELECT * INTO TABLE LIT_BSAD

FROM BSAD

FOR ALL ENTRIES IN LIT_BSID

WHERE BELNR = LIT_BSID-BELNR

AND BUKRS = PA_BUKRS

AND BUDAT <= PA_BUDAT

AND AUGDT > PA_BUDAT.

ENDIF.

*-> check cleared account items

LOOP AT LIT_BSID INTO LWA_BSID.

TP_TABIX = SY-TABIX.

READ TABLE LIT_BSAD WITH KEY BELNR = LWA_BSID-BELNR

BUKRS = LWA_BSID-BUKRS.

IF SY-SUBRC = 0.

DELETE LIT_BSID INDEX TP_TABIX.

ENDIF.

ENDLOOP.

*-> fetch billing data

IF LIT_BSID[] IS NOT INITIAL.

SELECT * INTO TABLE LIT_VBRK

FROM VBRK

FOR ALL ENTRIES IN LIT_BSID

WHERE VBELN = LIT_BSID-VBELN.

ENDIF.

*-> sort table

SORT LIT_VBRK BY FKDAT VBELN.

SORT LIT_BSID BY BLDAT BELNR.

*-> clear itab

CLEAR: LIT_BSAD.

REFRESH: LIT_BSAD.

*break-point.

LOOP AT LIT_BSID INTO LWA_BSID.

IF LWA_BSID-BLART EQ 'DG'.

LWA_BSID-DMBTR = LWA_BSID-DMBTR * -1.

LWA_BSID-WRBTR = LWA_BSID-WRBTR * -1.

MODIFY LIT_BSID FROM LWA_BSID.

ENDIF.

ENDLOOP.

*-> call smartforms

CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'

EXPORTING

FORMNAME = 'ZHFI001'

  • VARIANT = ' '

  • DIRECT_CALL = ' '

IMPORTING

FM_NAME = LV_FM_NAME

EXCEPTIONS

NO_FORM = 1

NO_FUNCTION_MODULE = 2

OTHERS = 3

.

IF SY-SUBRC <> 0.

MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

CALL FUNCTION LV_FM_NAME

EXPORTING

GV_BUDAT = PA_BUDAT

GV_BUKRS = PA_BUKRS

TP_KUNNR1 = SO_KUNNR-LOW

TABLES

GIT_BSID = LIT_BSID

GIT_VBRK = LIT_VBRK

EXCEPTIONS

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

Accepted Solutions (1)

Accepted Solutions (1)

Former Member
0 Kudos

Hi,

Provide the select-options instead of parameters and select the data from the table asusal.

in the function module pass the customer data in one internal table and the item data in another internal table.

call function function name

tables

i_cust = it_customer

i_item = it_item_data.

Now in the smartform make a change as follows.

->in the gobal definitinon tab define the internal table same as the customer internal table.

->in the intialization tab pass the customer internal table as the input parameter and defined internal table name in glogal definition as output parameter.

-> in the coding secition move the custormer data to the new inernal table.

delete adjacent duplicates from new internal table comparing kunnr.

-> Now in the main window loop the new internal table .

->under that loop the item data and in the where condition put kunnr = new internal table kunnr.

-> After that create the command node and select the goto new page command and select the page name as same page in the drop box.

Thanks,

NN.

Answers (1)

Answers (1)

Former Member
0 Kudos

Hi Madhu,

For printing multiple smartforms..one for each customer ...with corresponding data from VBRK..do the following.

Just before calling smartform..in your code..

data: LIT_BSID_TEMP1 TYPE TABLE OF BSID WITH HEADER LINE.

data: LIT_BSID_TEMP2 TYPE TABLE OF BSID WITH HEADER LINE.

*-> call smartforms

LIT_BSID_TEMP1{ ] = LIT_BSID[].

LOOP AT LIT_BSID.

AT NEW KUNNR.

REFRESH : LIT_BSID_TEMP2{ ], LIT_VBRK[].

CLEAR : LIT_BSID_TEMP2, LIT_VBRK.

LOOP AT LIT_BSID_TEMP1 WHERE KUNNR = LIT_BSID-KUNNR.

move-corresponding LIT_BSID_TEMP1 to LIT_BSID_TEMP2.

APPEND LIT_BSID_TEMP2.

CLEAR LIT_BSID_TEMP2.

ENDLOOP.

*-> now fetch billing data..

IF LIT_BSID_TEMP2[] IS NOT INITIAL.

SELECT * INTO TABLE LIT_VBRK

FROM VBRK

FOR ALL ENTRIES IN LIT_BSID_TEMP2

WHERE VBELN = LIT_BSID_TEMP2-VBELN.

ENDIF.

CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'

EXPORTING

FORMNAME = 'ZHFI001'

VARIANT = ' '

DIRECT_CALL = ' '

IMPORTING

FM_NAME = LV_FM_NAME

EXCEPTIONS

NO_FORM = 1

NO_FUNCTION_MODULE = 2

OTHERS = 3

.

IF SY-SUBRC 0.

MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

CALL FUNCTION LV_FM_NAME

EXPORTING

GV_BUDAT = PA_BUDAT

GV_BUKRS = PA_BUKRS

TP_KUNNR1 = LIT_BSID-KUNNR

TABLES

GIT_BSID = LIT_BSID_TEMP2

GIT_VBRK = LIT_VBRK

EXCEPTIONS

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

ENDAT.

ENDLOOP.

The above code loops for each customer and selects the correspoding data from the VBRK table and then calls the smartform. By this way you can issue multiple smartforms using the same code.

NOTE: You can place the Function module SSF_FUNCTION_MODULE_NAME outside the loop for better performance.

I hope the above code / idea is useful to you.

Pls reward points if useful.

Regards,

Satya.

Former Member
0 Kudos

Hi Satya,

Thanks for the prompt response.

My problem is not solved. When I execute the code given by u, it displays the print dialog box, and when I click on print preview it shows the statement of one customer. Again when I press F3, it goes back to print dialog box and when I press print preview it shows the customer statement of next customer.

Because we are calling the FM in a loop this happens. But...

The functional customer requirement is that when he presses print preview or print.....all customer statements should be displayed or printed. This one I can do very easily in sapscript using start_form and close_form in the loop. But the problem is that another consultant designed the form in smartforms and I need to modify the program. So, how to do the same thing in smartforms? I am putting in the code which I wrote for another sapscript--official receipt...This should clearly explain my requirement.

Hope I have described the problem correctly! my english is bit bad ;( .

Thanks and regards,

M.Madhusudan Rao.

REPORT ZZRFI004.

TABLES : ADRC, BSAD.

*-> selection screen

SELECTION-SCREEN BEGIN OF BLOCK B01 WITH FRAME TITLE TEXT-B01.

SELECTION-SCREEN SKIP 1.

PARAMETERS: PA_BUKRS TYPE BSAD-BUKRS OBLIGATORY.

  • SO_KUNNR FOR BSAD-KUNNR OBLIGATORY,

SELECT-OPTIONS: SO_AUGBL FOR BSAD-AUGBL OBLIGATORY,

SO_BUDAT FOR BSAD-BUDAT.

  • SO_XBLNR FOR BSAD-XBLNR.

SELECTION-SCREEN SKIP 1.

SELECTION-SCREEN END OF BLOCK B01.

  • end of selection-screen

DATA: BEGIN OF GIT_BSAD OCCURS 0,

  • count type n,

KUNNR LIKE BSAD-KUNNR,

AUGBL LIKE BSAD-AUGBL,

BUKRS LIKE BSAD-BUKRS,

ZUONR LIKE BSAD-ZUONR,

BELNR LIKE BSAD-BELNR,

BUDAT LIKE BSAD-BUDAT,

XBLNR LIKE BSAD-XBLNR,

BLART LIKE BSAD-BLART,

WRBTR LIKE BSAD-WRBTR,

VBELN LIKE BSAD-VBELN,

SGTXT LIKE BSAD-SGTXT,

END OF GIT_BSAD.

DATA: GIT_FINAL LIKE GIT_BSAD OCCURS 0 WITH HEADER LINE.

  • internal table for address.

DATA : GIT_ADRC LIKE ADRC OCCURS 0 WITH HEADER LINE.

DATA : TP_ADRNR LIKE KNA1-ADRNR.

  • variable for counting

DATA : COUNT(2) TYPE N,

TP_TOTAL LIKE BSAD-WRBTR.

*----


START-OF-SELECTION.

  • get data from BSAD table

PERFORM GET_DATA.

  • open sapscript

PERFORM OPEN_FORM.

  • print data in sapscript

PERFORM WRITE_FORMS.

  • close sapscript

PERFORM CLOSE_FORM.

*end of program.

&----


*& Form OPEN_FORM

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM OPEN_FORM .

CALL FUNCTION 'OPEN_FORM'

EXPORTING

APPLICATION = 'TX'

  • ARCHIVE_INDEX =

  • ARCHIVE_PARAMS =

DEVICE = 'PRINTER'

DIALOG = 'X'

FORM = 'ZZHFI004'

LANGUAGE = SY-LANGU

  • OPTIONS =

  • MAIL_SENDER =

  • MAIL_RECIPIENT =

  • MAIL_APPL_OBJECT =

  • RAW_DATA_INTERFACE = '*'

  • SPONUMIV =

  • IMPORTING

  • LANGUAGE =

  • NEW_ARCHIVE_PARAMS =

  • RESULT =

EXCEPTIONS

CANCELED = 1

DEVICE = 2

FORM = 3

OPTIONS = 4

UNCLOSED = 5

MAIL_OPTIONS = 6

ARCHIVE_ERROR = 7

INVALID_FAX_NUMBER = 8

MORE_PARAMS_NEEDED_IN_BATCH = 9

SPOOL_ERROR = 10

CODEPAGE = 11

OTHERS = 12

.

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. " OPEN_FORM

&----


*& Form SCRIPTS

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM SCRIPTS .

PERFORM START_FORM.

LOOP AT GIT_BSAD WHERE AUGBL = GIT_FINAL-AUGBL.

IF GIT_BSAD-BLART NE 'DZ'.

COUNT = COUNT + 1.

CALL FUNCTION 'WRITE_FORM'

EXPORTING

ELEMENT = 'ITEMS '

  • FUNCTION = 'SET'

  • TYPE = 'BODY'

WINDOW = 'MAIN'

  • IMPORTING

  • PENDING_LINES =

EXCEPTIONS

ELEMENT = 1

FUNCTION = 2

TYPE = 3

UNOPENED = 4

UNSTARTED = 5

WINDOW = 6

BAD_PAGEFORMAT_FOR_PRINT = 7

SPOOL_ERROR = 8

CODEPAGE = 9

OTHERS = 10

.

IF SY-SUBRC <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

TP_TOTAL = TP_TOTAL + GIT_BSAD-WRBTR.

ENDIF.

CALL FUNCTION 'WRITE_FORM'

EXPORTING

ELEMENT = 'RECEIPT'

  • FUNCTION = 'SET'

  • TYPE = 'BODY'

WINDOW = 'ADDRESS'

  • IMPORTING

  • PENDING_LINES =

EXCEPTIONS

ELEMENT = 1

FUNCTION = 2

TYPE = 3

UNOPENED = 4

UNSTARTED = 5

WINDOW = 6

BAD_PAGEFORMAT_FOR_PRINT = 7

SPOOL_ERROR = 8

CODEPAGE = 9

OTHERS = 10

.

IF SY-SUBRC <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

SELECT SINGLE ADRNR FROM KNA1 INTO TP_ADRNR WHERE KUNNR = GIT_FINAL-KUNNR.

SELECT SINGLE * FROM ADRC INTO ADRC WHERE ADDRNUMBER = TP_ADRNR.

CALL FUNCTION 'WRITE_FORM'

EXPORTING

ELEMENT = 'ADDRESS'

  • FUNCTION = 'SET'

  • TYPE = 'BODY'

WINDOW = 'ADDRESS'

  • IMPORTING

  • PENDING_LINES =

EXCEPTIONS

ELEMENT = 1

FUNCTION = 2

TYPE = 3

UNOPENED = 4

UNSTARTED = 5

WINDOW = 6

BAD_PAGEFORMAT_FOR_PRINT = 7

SPOOL_ERROR = 8

CODEPAGE = 9

OTHERS = 10

.

IF SY-SUBRC <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

  • CALL FUNCTION 'WRITE_FORM'

  • EXPORTING

  • ELEMENT = 'AMOUNT'

    • FUNCTION = 'SET'

    • TYPE = 'BODY'

  • WINDOW = 'LEFT'

    • IMPORTING

    • PENDING_LINES =

  • EXCEPTIONS

  • ELEMENT = 1

  • FUNCTION = 2

  • TYPE = 3

  • UNOPENED = 4

  • UNSTARTED = 5

  • WINDOW = 6

  • BAD_PAGEFORMAT_FOR_PRINT = 7

  • SPOOL_ERROR = 8

  • CODEPAGE = 9

  • OTHERS = 10

  • .

  • IF SY-SUBRC <> 0.

    • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

    • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

  • ENDIF.

ENDLOOP.

LOOP AT GIT_BSAD WHERE AUGBL = GIT_FINAL-AUGBL AND BLART EQ 'DZ'.

PERFORM LEFT_WINDOW.

CALL FUNCTION 'WRITE_FORM'

EXPORTING

ELEMENT = 'TOTAL '

WINDOW = 'TOTAL'

EXCEPTIONS

ELEMENT = 1

FUNCTION = 2

TYPE = 3

UNOPENED = 4

UNSTARTED = 5

WINDOW = 6

BAD_PAGEFORMAT_FOR_PRINT = 7

SPOOL_ERROR = 8

CODEPAGE = 9

OTHERS = 10.

ENDLOOP.

PERFORM END_FORM.

CLEAR : COUNT.

ENDFORM. " SCRIPTS

&----


*& Form START_FORM

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM START_FORM .

CALL FUNCTION 'START_FORM'

EXPORTING

  • ARCHIVE_INDEX =

FORM = 'ZZHFI004'

LANGUAGE = SY-LANGU

STARTPAGE = 'X'

  • PROGRAM = ' '

  • MAIL_APPL_OBJECT =

  • IMPORTING

  • LANGUAGE =

EXCEPTIONS

FORM = 1

FORMAT = 2

UNENDED = 3

UNOPENED = 4

UNUSED = 5

SPOOL_ERROR = 6

CODEPAGE = 7

OTHERS = 8

.

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. " START_FORM

&----


*& Form CLOSE_FORM

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM CLOSE_FORM .

CALL FUNCTION 'CLOSE_FORM'

  • IMPORTING

  • RESULT =

  • RDI_RESULT =

  • TABLES

  • OTFDATA =

  • EXCEPTIONS

  • UNOPENED = 1

  • BAD_PAGEFORMAT_FOR_PRINT = 2

  • SEND_ERROR = 3

  • SPOOL_ERROR = 4

  • CODEPAGE = 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. " CLOSE_FORM

&----


*& Form COUNT

&----


  • text

----


  • -->TA_INPUT text

  • -->TA_OUTPUT text

----


FORM COUNT TABLES TA_INPUT STRUCTURE ITCSY

TA_OUTPUT STRUCTURE ITCSY. "Structure

DATA : COUNT TYPE I.

READ TABLE TA_INPUT WITH KEY 'COUNT'.

COUNT = TA_INPUT-VALUE.

COUNT = COUNT + 1.

LOOP AT TA_OUTPUT.

CASE TA_OUTPUT-NAME.

WHEN 'COUNT'.

MOVE COUNT TO TA_OUTPUT-VALUE .

MODIFY TA_OUTPUT.

ENDCASE.

ENDLOOP.

ENDFORM. "COUNT

&----


*& Form END_FORM

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM END_FORM .

CALL FUNCTION 'END_FORM'

  • IMPORTING

  • RESULT =

  • EXCEPTIONS

  • UNOPENED = 1

  • BAD_PAGEFORMAT_FOR_PRINT = 2

  • SPOOL_ERROR = 3

  • CODEPAGE = 4

  • OTHERS = 5

.

IF SY-SUBRC <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

ENDFORM. " END_FORM

&----


*& Form SPELL_AMOUNT

&----


  • text

----


  • -->TA_INPUT text

  • -->TA_OUTPUT text

----


FORM SPELL_AMOUNT TABLES TA_INPUT STRUCTURE ITCSY

TA_OUTPUT STRUCTURE ITCSY. "Structure

DATA: TP_WORD LIKE SPELL-WORD,

TP_SPELL LIKE SPELL.

  • READ TABLE TA_INPUT WITH KEY 'GIT_BSAD-WRBTR'.

READ TABLE TA_INPUT WITH KEY 'TP_TOTAL'.

CALL FUNCTION 'SPELL_AMOUNT'

EXPORTING

AMOUNT = TA_INPUT-VALUE

CURRENCY = 'MYR'

  • FILLER = ' '

LANGUAGE = SY-LANGU

IMPORTING

IN_WORDS = TP_SPELL

EXCEPTIONS

NOT_FOUND = 1

TOO_LARGE = 2

OTHERS = 3

.

IF SY-SUBRC <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

LOOP AT TA_OUTPUT.

CASE TA_OUTPUT-NAME.

WHEN 'TP_WORD'.

MOVE TP_SPELL-WORD TO TA_OUTPUT-VALUE .

MODIFY TA_OUTPUT.

WHEN 'DECWORD'.

MOVE TP_SPELL-DECWORD TO TA_OUTPUT-VALUE .

MODIFY TA_OUTPUT.

ENDCASE.

ENDLOOP.

ENDFORM. "POSNR

&----


*& Form LEFT_WINDOW

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM LEFT_WINDOW .

  • READ TABLE GIT_BSAD WITH KEY KUNNR = GIT_FINAL-KUNNR.

  • SELECT SINGLE ADRNR FROM KNA1 INTO TP_ADRNR WHERE KUNNR = GIT_FINAL-KUNNR.

  • SELECT SINGLE * FROM ADRC INTO ADRC WHERE ADDRNUMBER = TP_ADRNR.

CALL FUNCTION 'WRITE_FORM'

EXPORTING

ELEMENT = 'AMOUNT'

  • FUNCTION = 'SET'

  • TYPE = 'BODY'

WINDOW = 'LEFT'

  • IMPORTING

  • PENDING_LINES =

EXCEPTIONS

ELEMENT = 1

FUNCTION = 2

TYPE = 3

UNOPENED = 4

UNSTARTED = 5

WINDOW = 6

BAD_PAGEFORMAT_FOR_PRINT = 7

SPOOL_ERROR = 8

CODEPAGE = 9

OTHERS = 10

.

IF SY-SUBRC <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

  • CALL FUNCTION 'WRITE_FORM'

  • EXPORTING

  • ELEMENT = 'ADDRESS'

    • FUNCTION = 'SET'

    • TYPE = 'BODY'

  • WINDOW = 'ADDRESS'

    • IMPORTING

    • PENDING_LINES =

  • EXCEPTIONS

  • ELEMENT = 1

  • FUNCTION = 2

  • TYPE = 3

  • UNOPENED = 4

  • UNSTARTED = 5

  • WINDOW = 6

  • BAD_PAGEFORMAT_FOR_PRINT = 7

  • SPOOL_ERROR = 8

  • CODEPAGE = 9

  • OTHERS = 10

  • .

  • 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. " LEFT_WINDOW

&----


*& Form GET_DATA

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM GET_DATA .

SELECT KUNNR

AUGBL

BUKRS

ZUONR

BELNR

BUDAT

XBLNR

BLART

WRBTR

VBELN

SGTXT

FROM BSAD

INTO CORRESPONDING FIELDS OF TABLE GIT_BSAD

WHERE BUKRS EQ PA_BUKRS

  • AND KUNNR IN SO_KUNNR

AND AUGBL IN SO_AUGBL

  • AND BUDAT SO_BUDAT

  • AND XBLNR IN SO_XBLNR

AND ( BLART = 'RV' OR BLART = 'DR' OR BLART = 'DZ' OR BLART = 'DG' ).

SORT GIT_BSAD BY AUGBL XBLNR BUDAT.

LOOP AT GIT_BSAD.

IF GIT_BSAD-BLART = 'DG'.

GIT_BSAD-WRBTR = GIT_BSAD-WRBTR * -1.

MODIFY GIT_BSAD TRANSPORTING WRBTR.

ENDIF.

ENDLOOP.

GIT_FINAL[] = GIT_BSAD[].

ENDFORM. " GET_DATA

&----


*& Form WRITE_FORMS

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM WRITE_FORMS .

LOOP AT GIT_FINAL.

AT END OF AUGBL.

PERFORM SCRIPTS.

ENDAT.

ENDLOOP.

ENDFORM. " WRITE_FORMS

&----


*& Form COUNTRY

&----


  • text

----


  • -->TA_INPUT text

  • -->TA_OUTPUT text

----


FORM COUNTRY TABLES TA_INPUT STRUCTURE ITCSY

TA_OUTPUT STRUCTURE ITCSY. "Structure

DATA : TP_REGIO1 LIKE ADRC-REGION,

TP_LAND LIKE ADRC-COUNTRY,

TP_REGION LIKE T005U-BEZEI,

TP_COUNTRY LIKE T005T-LANDX.

READ TABLE TA_INPUT WITH KEY 'ADRC-COUNTRY'.

TP_LAND = TA_INPUT-VALUE.

READ TABLE TA_INPUT WITH KEY 'ADRC-REGION'.

TP_REGIO1 = TA_INPUT-VALUE.

SELECT SINGLE BEZEI FROM T005U INTO TP_REGION WHERE LAND1 = TP_LAND

AND BLAND = TP_REGIO1

AND SPRAS = 'EN'.

SELECT SINGLE LANDX FROM T005T INTO TP_COUNTRY WHERE LAND1 = TP_LAND

AND SPRAS = 'EN'.

LOOP AT TA_OUTPUT.

CASE TA_OUTPUT-NAME.

WHEN 'TP_COUNTRY'.

MOVE TP_COUNTRY TO TA_OUTPUT-VALUE .

MODIFY TA_OUTPUT.

WHEN 'TP_REGION'.

MOVE TP_REGION TO TA_OUTPUT-VALUE .

MODIFY TA_OUTPUT.

ENDCASE.

ENDLOOP.

ENDFORM. "COUNT

&----


*& Form sales_person

&----


  • text

----


  • -->TA_INPUT text

  • -->TA_OUTPUT text

----


FORM SALES_PERSON TABLES TA_INPUT STRUCTURE ITCSY

TA_OUTPUT STRUCTURE ITCSY. "Structure

DATA : TP_KUNNR LIKE KNA1-KUNNR,

TP_SALES LIKE KNVV-VKGRP,

TP_TEXT LIKE TVGRT-BEZEI.

READ TABLE TA_INPUT WITH KEY 'GIT_BSAD-KUNNR'.

TP_KUNNR = TA_INPUT-VALUE.

CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'

EXPORTING

INPUT = TP_KUNNR

IMPORTING

OUTPUT = TP_KUNNR.

SELECT SINGLE VKGRP INTO TP_SALES FROM KNVV WHERE KUNNR = TP_KUNNR.

SELECT SINGLE BEZEI INTO TP_TEXT FROM TVGRT WHERE VKGRP = TP_SALES.

LOOP AT TA_OUTPUT.

CASE TA_OUTPUT-NAME.

WHEN 'TP_SALES'.

MOVE TP_SALES TO TA_OUTPUT-VALUE .

MODIFY TA_OUTPUT.

WHEN 'TP_TEXT'.

MOVE TP_TEXT TO TA_OUTPUT-VALUE .

MODIFY TA_OUTPUT.

ENDCASE.

ENDLOOP.

ENDFORM. "SALES PERSON

&----


*& Form GET_DATE

&----


  • text

----


  • -->TA_INPUT text

  • -->TA_OUTPUT text

----


FORM GET_DATE TABLES TA_INPUT STRUCTURE ITCSY

TA_OUTPUT STRUCTURE ITCSY. "Structure

DATA : TP_BUDAT1 LIKE BSAD-BUDAT,

TP_AUGBL LIKE BSAD-AUGBL,

TP_BUDAT LIKE SY-DATUM.

READ TABLE TA_INPUT WITH KEY 'GIT_BSAD-AUGBL'.

TP_AUGBL = TA_INPUT-VALUE.

SELECT SINGLE BUDAT FROM BSAD INTO TP_BUDAT1 WHERE AUGBL = TP_AUGBL AND BLART EQ 'DZ'.

WRITE TP_BUDAT1 TO TP_BUDAT DD/MM/YY.

LOOP AT TA_OUTPUT.

CASE TA_OUTPUT-NAME.

WHEN 'TP_BUDAT'.

MOVE TP_BUDAT TO TA_OUTPUT-VALUE .

MODIFY TA_OUTPUT.

ENDCASE.

ENDLOOP.

ENDFORM. "GET_DATE.