Текущее время: Вс, авг 03 2025, 22:57

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ 1 сообщение ] 
Автор Сообщение
 Заголовок сообщения: Help!
СообщениеДобавлено: Чт, окт 25 2007, 08:09 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Вт, окт 10 2006, 12:23
Сообщения: 679
Откуда: Санкт-Петербург
Пол: Мужской
Здравствуйте! помогите пжалст со следующей задачей...
Через транзакцию "co04n" (печать производственных заказов) необходимо после того как выводится список заказов...если выделяю
две или больше строк то необходимые данные суммируются и выводятся в один формуляр (наряд суммарный).
-------------------------------
Алгоритм в ТЗ следующий:
1. Для выбора поля Р16 (AFPO-KDAUF), необходимо перейти в таблицу AFPO по Р1 (AFKO-AUFNR).
2. Для выбора поля Р17 (AFPO-KDPOS), необходимо перейти в таблицу AFPO по Р1 (AFKO-AUFNR).
3. Для выбора поля Р18 (AFVV-VGW02), Р19 (AFVV-VGE02), необходимо перейти в таблицу AFVV по Р14 (AFVV-AUFPL) и Р15 (AFVV-APLZL).
-------------------------------
Надо суммировать по одинаковым AFVR-ARBPL, AFPO-KDAUF. Поле сумма AFVV-VGW02.

tables: AFKO, CRHD, AFVC, MARA, AFVV, AFPO, T024A, MAKT.

data: F1 like AFKO-AUFNR,
F2 like CRHD-ARBPL,
P3 like CRHD-OBJID,
P4 like AFVC-ARBID,
F3 like AFVC-RUECK,
F4 like MARA-BISMT,
F5 like AFVC-VORNR,
F6 like AFVC-LTXA1,
F7(13) type c,
F8 like AFVV-MEINH,
F9 like AFVV-FSAVD,
F10 like AFVV-SSEDD,
F11 like T024A-TXT,
F16 like AFPO-KDAUF,
F17 like AFPO-KDPOS,
F18 like AFVV-VGW02,
F19 like AFVV-VGE02,

ZAUFPL like AFVC-AUFPL,
ZAPLZL like AFVC-APLZL,
ZVGW02 like AFVV-VGW02,
ZVGE02 like AFVV-VGE02,
ZKDAUF like AFPO-KDAUF,
ZKDPOS like AFPO-KDPOS,

ZMAKTX like MAKT-MAKTX,

F1a like AFKO-AUFNR,
F2a like CRHD-ARBPL,
P3a like CRHD-OBJID,
P4a like AFVC-ARBID,
F3a like AFVC-RUECK,
F4a like MARA-BISMT,
F5a like AFVC-VORNR,
F6a like AFVC-LTXA1,
F7a(13) type c,
F8a like AFVV-MEINH,
F9a like AFVV-FSAVD,
F10a like AFVV-SSEDD,
F11a like T024A-TXT,
F16a like AFPO-KDAUF,
F17a like AFPO-KDPOS,
F18a like AFVV-VGW02,
F19a like AFVV-VGE02,
ZMAKTXa like MAKT-MAKTX.


types: begin of My1,
F1 like AFKO-AUFNR,
F2 like CRHD-ARBPL,
P3 like CRHD-OBJID,
P4 like AFVC-ARBID,
F3 like AFVC-RUECK,
F4 like MARA-BISMT,
F5 like AFVC-VORNR,
F6 like AFVC-LTXA1,
F7b(13) type p decimals 1,
F7(13) type c,
F8 like AFVV-MEINH,
F9 like AFVV-FSAVD,
F10 like AFVV-SSEDD,
F11 like T024A-TXT,
F16 like AFPO-KDAUF,
F17 like AFPO-KDPOS,
F18 like AFVV-VGW02,
F19 like AFVV-VGE02,
P14 like AFKO-PLNBEZ,
P15 like AFKO-PLGRP,
P16 like AFPO-KDAUF,
P17 like AFPO-KDPOS,
P18 like AFVV-VGW02,
P19 like AFVV-VGE02,
ZMAKTX like MAKT-MAKTX,
P20 like AFKO-AUFPL,
P181 like AFVC-AUFPL,
P191 like AFVC-APLZL,
end of My1,
begin of My2,
F5 like AFVC-VORNR,
end of My2.

data: it type table of My1 with header line,
wa_it type My1,
itF5 type table of My2 with header line,
cnt type i,
P14 like AFKO-PLNBEZ,
P15 like AFKO-PLGRP,
P20 like AFKO-AUFPL
.

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

*REPORT PSFCSPLT MESSAGE-ID CO.
*---------------------------------------------------------------------*
* *
* PPS-Print: Operation-split *
* *
*---------------------------------------------------------------------*

* DATA-Statements general
INCLUDE PPCOINCL.
* DATA-Statements specific for production orders
INCLUDE CODRGT10.

* entry to print
PERFORM PRINT_SUB.

*---------------------------------------------------------------------*
* FORM PRINT_SUB *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
FORM PRINT_SUB.
DATA USE_DEFAULT.

* Document-tables
INCLUDE LCODRINC.

LOOP AT ITAB_TDR WHERE OBJECT = OBJ-POS
OR OBJECT = OBJ-SOP
AND AUFNR = PRINT_CO-AUFNR.
EXIT.
ENDLOOP.

CHECK SY-SUBRC IS INITIAL.

* fill workarea of header (probably more than 1 order is to be printed)

READ TABLE ITAB_TDR WITH KEY OBJECT = OBJ-ALT
AUFNR = PRINT_CO-AUFNR.
CHECK SY-SUBRC IS INITIAL.
* Save Indextable of header
ITAB_ORD = ITAB_TDR.

READ TABLE CAUFVD_TAB WITH KEY AUFNR = ITAB_ORD-AUFNR.
CHECK SY-SUBRC IS INITIAL.

PERFORM PPPR_STD_INIT_ORDER USING CAUFVD_TAB.

PERFORM PPPR_COLLECT_DESTINATIONS USING PRINT_CO.

*&---------------------------------------------------------------------
*
loop at ITAB_TDR where AUFNR = PRINT_CO-AUFNR.
itF5-F5 = ITAB_TDR-VORNR.
append itF5.
endloop.
describe table itF5 lines cnt.

select single PLNBEZ PLGRP AUFPL
into (P14, P15, P20)
from AFKO
where AUFNR = caufvd-aufnr.

P14 = caufvd-matnr.

data: where_cl type string.

select RUECK VORNR LTXA1 ARBID AUFPL APLZL
into (wa_it-F3, wa_it-F5, wa_it-F6, wa_it-P4, wa_it-P181, wa_it-P191)
from AFVC
FOR ALL ENTRIES IN itF5
where AUFPL = P20
and VORNR = itF5-F5
.

wa_it-F1 = caufvd-aufnr.
wa_it-P14 = P14.
wa_it-P15 = P15.
wa_it-P20 = P20.

select single BISMT
into wa_it-F4
from MARA
where MATNR = wa_it-P14.

select single MAKTX
from MAKT
into wa_it-ZMAKTX
where MATNR = wa_it-P14.

select single TXT
into wa_it-F11
from T024A
where FEVOR = wa_it-P15.

select single ARBPL
into wa_it-F2
from CRHD
where OBJID = wa_it-P4.

wa_it-F2 = wa_it-F2(3).

select single MGVRG MEINH FSAVD SSEDD VGW02 VGE02
into (wa_it-F7b, wa_it-F8, wa_it-F9, wa_it-F10, wa_it-F18, wa_it-F19)
from AFVV
where AUFPL = wa_it-P181 and
APLZL = wa_it-P191.

data p_temp(13) type p decimals 1.
p_temp = wa_it-F7b - ceil( wa_it-F7b ).
if ( p_temp = 0 ).
wa_it-F7 = ceil( wa_it-F7b ).
else.
wa_it-F7 = wa_it-F7b.
endif.
*новый код
select single KDAUF KDPOS "доб KDPOS
from AFPO
into (wa_it-F16, ZKDPOS) "доб ZKDPOS
where AUFNR = wa_it-F1.

append wa_it to it.
clear wa_it.
endselect.

clear F5.

DO PRINT_CO-COPYS TIMES.
IF SY-INDEX GT 1.
MOVE TEXT-DUP TO PRINT_CO-DRTXT.
ENDIF.
* get destination
USE_DEFAULT = 'X'. " default destination in 1st run
LOOP AT DESTINATION_TAB.
PR_OPTIONS-TDDEST = DESTINATION_TAB-DEST.
* call OPEN_FORM to open formular
PERFORM PPPR_OPEN_FORM USING 'MAIN'.
* Print split tickets
PERFORM SPLIT_TICKET USING PRINT_CO-USE_WCP
DESTINATION_TAB-DEST
USE_DEFAULT.
* call CLOSE_FORM to finish formular
PERFORM PPPR_CLOSE_FORM.
CLEAR USE_DEFAULT. " default destination only in 1st run
ENDLOOP.
ENDDO.
ENDFORM.
*---------------------------------------------------------------------*
* FORM SPLIT_TICKET
*
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
FORM SPLIT_TICKET USING USE_WCP LIKE T496P-USE_WCP
DESTINATION LIKE T496P-DRDEST
USE_DEFAULT.
DATA: COUNTER_ABS(4) TYPE N.
DATA: NUMBER_OF_TICKETS(4) TYPE N.
DATA: BEGIN OF B OCCURS 0.
INCLUDE STRUCTURE KBEDP.
DATA: END OF B.
DATA: BEGIN OF A.
INCLUDE STRUCTURE AFVGD.
DATA: END OF A.
DATA FLG_ACT_READ.

CLEAR COUNTER_ABS.
LOOP AT ITAB_TDR WHERE OBJECT = OBJ-POS
OR OBJECT = OBJ-SOP
AND AUFNR = ITAB_ORD-AUFNR.
* Save ITAB of operation
ITAB_VRG = ITAB_TDR.
* Get sequence (only if changed)
IF ITAB_VRG-APLFL NE AFFLD-PLNFL OR ITAB_VRG-AUFNR NE AFFLD-AUFNR.
READ TABLE AFFLD_TAB INDEX ITAB_TDR-INDEX_PLFL.
AFFLD = AFFLD_TAB.
PERFORM PPPR_GET_TABLES USING DRPART-SEQ.
ENDIF.
* initialize operation
PERFORM PPPR_STD_INIT_OPERATION
USING X_FIELD SPACE CONST-FLG_YES SPACE.
CHECK NOT X_FIELD IS INITIAL.
* output only for work center printer
CHECK USE_WCP IS INITIAL "no use of wcp
OR DESTINATION = AFVGD-PDEST "wcp requested
OR ( AFVGD-PDEST IS INITIAL "if wcp not given ...
AND NOT USE_DEFAULT IS INITIAL ). "... use default printer

CLEAR FLG_ACT_READ.
READ TABLE KBEDP_TAB
WITH KEY BEDID = AFVGD-BEDID
BEDZL = AFVGD-BEDZL
BINARY SEARCH TRANSPORTING NO FIELDS.
IF SY-SUBRC = 0.
LOOP AT KBEDP_TAB FROM SY-TABIX.
IF KBEDP_TAB-BEDID <> AFVGD-BEDID
OR KBEDP_TAB-BEDZL <> AFVGD-BEDZL.
EXIT.
ENDIF.
KBEDP = KBEDP_TAB.
MOVE-CORRESPONDING KBEDP TO A.
* calculation of the activities using the operation-formalism
perform get_activity(saplcodr)
using a
rcr01
ttl_activ
afvgd-mgvrg
caufvd.
ADD 1 TO COUNTER_ABS.
* check wether number of tickets on page greater than possible
IF NOT PRINT_CO-AZABS IS INITIAL.
IF COUNTER_ABS > PRINT_CO-AZABS.
* CALL FUNCTION 'CONTROL_FORM'
* EXPORTING
* COMMAND = 'NEW-PAGE'.
CLEAR COUNTER_ABS.
ADD 1 TO COUNTER_ABS.
ENDIF.
ENDIF.
ENDLOOP.
* no kbeds found
ELSE.
* calculation of the activities using the operation-formalism
perform get_activity(saplcodr)
using afvgd
rcr01
ttl_activ
afvgd-mgvrg
caufvd.
IF AFVGD-SPANZ = 0.
AFVGD-SPANZ = 1.
ENDIF.
DO AFVGD-SPANZ TIMES.
KBEDP-SPLIT = SY-INDEX.
ADD 1 TO COUNTER_ABS.
* check wether number of tickets on page greater than possible
IF NOT PRINT_CO-AZABS IS INITIAL.
IF COUNTER_ABS > PRINT_CO-AZABS.
* CALL FUNCTION 'CONTROL_FORM'
* EXPORTING
* COMMAND = 'NEW-PAGE'.
CLEAR COUNTER_ABS.
ADD 1 TO COUNTER_ABS.
ENDIF.
ENDIF.
ENDDO.
ENDIF.
ENDLOOP.


data: i type i value '0',
cnt type i value '0'.
DESCRIBE TABLE it LINES cnt.

loop at it.
i = i + 1.
cnt = cnt - 1.
if ( i = 1 ).
F1 = IT-F1. F2 = IT-F2. F3 = IT-F3. F4 = IT-F4.
F5 = IT-F5. F6 = IT-F6. F7 = IT-F7. F8 = IT-F8.
F9 = IT-F9. F10 = IT-F10. F11 = IT-F11. F16 = IT-F16.
F18 = IT-F18. F19 = IT-F19.
ZMAKTX = IT-ZMAKTX.

*IT-ZMAKTX.
else.
F1A = IT-F1. F2A = IT-F2. F3A = IT-F3. F4A = IT-F4.
F5A = IT-F5. F6A = IT-F6. F7A = IT-F7. F8A = IT-F8.
F9A = IT-F9. F10A = IT-F10. F11A = IT-F11. F16A = IT-F16.
F18A = IT-F18. F19A = IT-F19.
ZMAKTXa = IT-ZMAKTX.



*IT-ZMAKTX.

i = 0.
endif.

if ( ( i <> 1 ) or ( i = 1 and cnt = 0 ) ).
* CALL FUNCTION 'END_FORM'.
CALL FUNCTION 'START_FORM'
EXPORTING
FORM = ' '
.

if ( i = 1 ).
call function 'WRITE_FORM'
exporting element = 'FORM2'
window = 'WINDOW96'.
endif.

call function 'WRITE_FORM'
exporting element = '&END&'
window = 'MAIN'.

CALL FUNCTION 'END_FORM'.

F1A = ''. F2A = ''. F3A = ''. F4A = ''. F5A = ''.
F6A = ''. F7A = ''. F8A = ''. F9A = ''. F10A = ''.
F11A = ''.
ZMAKTXa = ''.
endif.

endloop.


ENDFORM.

*----------------------------------------------------------------------
*
* INCLUDE CODRIF02
*
*----------------------------------------------------------------------
*
*---------------------------------------------------------------------*
* FORM OPEN_AND_START_FORM *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
FORM PPPR_OPEN_FORM USING STARTPAGE.
CALL FUNCTION 'OPEN_FORM'
EXPORTING
DEVICE = 'PRINTER'
DIALOG = SPACE
FORM = PRINT_CO-FORML
LANGUAGE = PRINT_CO-SPRAS
OPTIONS = PR_OPTIONS
EXCEPTIONS
CANCELED = 01
DEVICE = 02
FORM = 03
OPTIONS = 04
UNCLOSED = 05.
* CALL FUNCTION 'START_FORM'
* EXPORTING
* STARTPAGE = STARTPAGE
* .
CLEAR FLG_MAIN_STARTED.
ENDFORM.
*---------------------------------------------------------------------*
* FORM CLOSE_AND_END_FORM_FORM *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
FORM PPPR_CLOSE_FORM.
IF NOT FLG_MAIN_STARTED IS INITIAL.
* CALL FUNCTION 'WRITE_FORM'
* EXPORTING
* ELEMENT = 'MAIN_FINISH'
* WINDOW = 'MAIN'.
ENDIF.
* CALL FUNCTION 'END_FORM'.
CALL FUNCTION 'CLOSE_FORM'
IMPORTING
RESULT = PR_RESULT
EXCEPTIONS
OTHERS = 01.
ENDFORM.
*---------------------------------------------------------------------*
* FORM CLOSE_AND_END_FORM_FORM *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
FORM PPPR_MAIN_START.
IF FLG_MAIN_STARTED IS INITIAL.
* CALL FUNCTION 'WRITE_FORM'
* EXPORTING
* ELEMENT = 'MAIN_START'
* WINDOW = 'MAIN'.
FLG_MAIN_STARTED = CONST-FLG_YES.
ENDIF.
ENDFORM.

* INCLUDE for ATAB-Table-Read
INCLUDE CODRGETT. "PPPR-Form-Routinen: pppr_get_tables
INCLUDE CODRIF01. "PPPR-Form-Routinen: Druck-Parts lesen
*INCLUDE CODRIF02. "PPPR-Form-Routinen: Open/Close Form
INCLUDE CODRIF04. "PPPR-Form-Routinen: read_mat
INCLUDE CODRIF17. "PSFC-Form-Routinen: std_init_operation
INCLUDE CODRIF20. "PSFC-Form-Routinen: ppr_collect_destinations


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ 1 сообщение ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB