2005 Sep 04 9:13 PM
hi folks,
Now I have added the group field to 'accitab' and as mentioned I have another itable (same as 'accitab') called 'final_accitab where I have the recrods for all the customers and their corresponding group types too.
something like this..
customernumber ........ sortgroup
1000001 1
1000001 1
1000001 1
1000012 1
1000012 1
1000112 1
.
.
.
.
10000002 2
10000002 2
10000002 2
.
.
.
.
10000003 3 and so on
Now I have to print the customers based on the sorting therefore I should be passing the records of all the customers that come under a common sort type into one spool request,( I think that way!!) and how to do that ?
ii)how to print separate statements for each customer
for the same sort within the same spool request.
Thanks in advance
Vinu
Hi Vinu
I run this code and it works fine:
DATA: BEGIN OF FINAL_ACCITAB OCCURS 10,
ZADVERTISER TYPE KUNNR,
ZAGENCY TYPE KUNNR,
ZSORTGROUP(1) TYPE N,
END OF FINAL_ACCITAB.
DATA: SSFCTRLOP TYPE SSFCTRLOP,
SSFCTRLOP_OPEN TYPE SSFCTRLOP,
SSFCRESOP TYPE SSFCRESOP,
E_SSFCOMPOP TYPE SSFCOMPOP,
SORT LIKE FINAL_ACCITAB-ZSORTGROUP,
ZZADVERTISER LIKE FINAL_ACCITAB-ZADVERTISER,
ZZBUSINESSPARTNER LIKE FINAL_ACCITAB-ZAGENCY,
FL_OPEN,
T_CUSTOMER LIKE STANDARD TABLE OF FINAL_ACCITAB WITH HEADER LINE,
FL_CUSTOMER_PRINT.
DATA FM_NAME TYPE RS38L_FNAM.
FINAL_ACCITAB-ZADVERTISER = '100000065'.
FINAL_ACCITAB-ZAGENCY = '100000065'.
FINAL_ACCITAB-ZSORTGROUP = '1'.
APPEND FINAL_ACCITAB.
FINAL_ACCITAB-ZADVERTISER = '100000065'.
FINAL_ACCITAB-ZAGENCY = '100000065'.
FINAL_ACCITAB-ZSORTGROUP = '1'.
APPEND FINAL_ACCITAB.
FINAL_ACCITAB-ZADVERTISER = '100000065'.
FINAL_ACCITAB-ZAGENCY = '100000065'.
FINAL_ACCITAB-ZSORTGROUP = '1'.
APPEND FINAL_ACCITAB.
FINAL_ACCITAB-ZADVERTISER = '100000066'.
FINAL_ACCITAB-ZAGENCY = '100000066'.
FINAL_ACCITAB-ZSORTGROUP = '1'.
APPEND FINAL_ACCITAB.
FINAL_ACCITAB-ZADVERTISER = '100000066'.
FINAL_ACCITAB-ZAGENCY = '100000066'.
FINAL_ACCITAB-ZSORTGROUP = '1'.
APPEND FINAL_ACCITAB.
FINAL_ACCITAB-ZADVERTISER = '100000067'.
FINAL_ACCITAB-ZAGENCY = '100000067'.
FINAL_ACCITAB-ZSORTGROUP = '1'.
APPEND FINAL_ACCITAB.
FINAL_ACCITAB-ZADVERTISER = '100000068'.
FINAL_ACCITAB-ZAGENCY = '100000068'.
FINAL_ACCITAB-ZSORTGROUP = '2'.
APPEND FINAL_ACCITAB.
FINAL_ACCITAB-ZADVERTISER = '100000068'.
FINAL_ACCITAB-ZAGENCY = '100000068'.
FINAL_ACCITAB-ZSORTGROUP = '2'.
APPEND FINAL_ACCITAB.
FINAL_ACCITAB-ZADVERTISER = '100000069'.
FINAL_ACCITAB-ZAGENCY = '100000069'.
FINAL_ACCITAB-ZSORTGROUP = '2'.
APPEND FINAL_ACCITAB.
FINAL_ACCITAB-ZADVERTISER = '100000070'.
FINAL_ACCITAB-ZAGENCY = '100000070'.
FINAL_ACCITAB-ZSORTGROUP = '2'.
APPEND FINAL_ACCITAB.
FINAL_ACCITAB-ZADVERTISER = '100000070'.
FINAL_ACCITAB-ZAGENCY = '100000070'.
FINAL_ACCITAB-ZSORTGROUP = '2'.
APPEND FINAL_ACCITAB.
FINAL_ACCITAB-ZADVERTISER = '100000071'.
FINAL_ACCITAB-ZAGENCY = '100000071'.
FINAL_ACCITAB-ZSORTGROUP = '3'.
APPEND FINAL_ACCITAB.
FINAL_ACCITAB-ZADVERTISER = '100000072'.
FINAL_ACCITAB-ZAGENCY = '100000072'.
FINAL_ACCITAB-ZSORTGROUP = '3'.
APPEND FINAL_ACCITAB.
FINAL_ACCITAB-ZADVERTISER = '100000073'.
FINAL_ACCITAB-ZAGENCY = '100000073'.
FINAL_ACCITAB-ZSORTGROUP = '4'.
APPEND FINAL_ACCITAB.
SORT FINAL_ACCITAB BY ZSORTGROUP ZADVERTISER ZAGENCY.
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
FORMNAME = 'ZSF_TEST'
IMPORTING
FM_NAME = FM_NAME
EXCEPTIONS
NO_FORM = 1
NO_FUNCTION_MODULE = 2
OTHERS = 3.
LOOP AT FINAL_ACCITAB.
IF FINAL_ACCITAB-ZSORTGROUP <> SORT.
PERFORM CALL_SMARTFORM.
SORT = FINAL_ACCITAB-ZSORTGROUP.
IF NOT E_SSFCOMPOP IS INITIAL.
After first time dialog doesn't open
SSFCTRLOP_OPEN-NO_DIALOG = 'X'.
ENDIF.
IF FL_OPEN = 'X'.
CALL FUNCTION 'SSF_CLOSE'.
ENDIF.
CALL FUNCTION 'SSF_OPEN'
EXPORTING
USER_SETTINGS = SPACE
OUTPUT_OPTIONS = E_SSFCOMPOP
CONTROL_PARAMETERS = SSFCTRLOP_OPEN
IMPORTING
JOB_OUTPUT_OPTIONS = SSFCRESOP
EXCEPTIONS
FORMATTING_ERROR = 1
INTERNAL_ERROR = 2
SEND_ERROR = 3
USER_CANCELED = 4
OTHERS = 5.
IF SY-SUBRC = 0.
FL_OPEN = 'X'.
MOVE-CORRESPONDING SSFCRESOP TO E_SSFCOMPOP.
ENDIF.
ENDIF.
Block open and close of smartform in FM
SSFCTRLOP-NO_OPEN = 'X'.
SSFCTRLOP-NO_CLOSE = 'X'.
IF ZZADVERTISER NE FINAL_ACCITAB-ZADVERTISER AND ZZADVERTISER NE ' '.
PERFORM CALL_SMARTFORM.
ENDIF.
INSERT FINAL_ACCITAB INTO TABLE T_CUSTOMER.
append final_accitab.
ZZADVERTISER = FINAL_ACCITAB-ZADVERTISER.
ZZBUSINESSPARTNER = FINAL_ACCITAB-ZAGENCY.
ENDLOOP.
PERFORM CALL_SMARTFORM.
IF FL_OPEN = 'X'.
CALL FUNCTION 'SSF_CLOSE'.
ENDIF.
&----
*& Form CALL_SMARTFORM
&----
text
----
--> p1 text
<-- p2 text
----
FORM CALL_SMARTFORM .
IF NOT T_CUSTOMER[] IS INITIAL.
READ TABLE T_CUSTOMER INDEX 1.
now call the generated function module
CALL FUNCTION FM_NAME
EXPORTING
CONTROL_PARAMETERS = SSFCTRLOP
KUNNR = T_CUSTOMER-ZADVERTISER
EXCEPTIONS
FORMATTING_ERROR = 1
INTERNAL_ERROR = 2
SEND_ERROR = 3
USER_CANCELED = 4
OTHERS = 5.
REFRESH T_CUSTOMER.
ENDIF.
ENDFORM. " CALL_SMARTFORM
2) Get data of last customer at the of loop.
When dialog is open, CHOOSE OPTION TO CREATE A NEW SPOOL
Max
Message was edited by: max bianchi
Message was edited by: max bianchi
2005 Sep 13 8:35 PM
Printer names are case sensitive. Have you checked that?
Srinivas
Message was edited by: Srinivas Adavi
Also, I see that you marked this as answered, but I don't see any points given to Max, who has helped you a lot on this issue. Please reward him for his efforts.
2005 Sep 13 8:46 PM
2005 Sep 13 9:43 PM
Hi Vinu
I agree with Srinivas: check the name of device, are you sure it's Xerox1?
You can try to transfer the name of that printer by dialog (FM SSF_OPEN) and then check the name in debug.
Max
2005 Sep 13 10:00 PM
Hi Vinu,
I saw that you rewarded Max for his effort. I apologize for missing it.
Regards,
Srinivas
| User | Count |
|---|---|
| 3 | |
| 2 | |
| 2 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |