on 05-11-2008 9:46 AM
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.
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.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
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.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
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.
User | Count |
---|---|
90 | |
10 | |
10 | |
10 | |
7 | |
7 | |
6 | |
5 | |
4 | |
3 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.