Professional Documents
Culture Documents
Ybus FM06P PDF
Ybus FM06P PDF
TYPE-POOLS szadr.
TABLES : varposr,
rwerter,
mtxh.
CONSTANTS lc_bsart_co TYPE bsart VALUE 'CO'. "+ RBARMAN/IWDK903232
DATA: s, v TYPE i.
DATA: sampr LIKE pekpov-netpr, varpr LIKE pekpov-netpr.
*- Tabellen -----------------------------------------------------------*
TABLES: cpkme,
ekvkp,
ekko,
pekko,
rm06p,
ekpo,
pekpo,
pekpov,
pekpos,
eket,
ekek,
ekes,
ekeh,
ekkn,
ekpa,
ekbe,
eine, *eine,
lfa1,
likp,
*lfa1,
kna1,
komk,
komp,
komvd,
ekomd,
econf_out,
thead, *thead,
sadr,
mdpa,
mdpm,
mkpf,
tinct,
ttxit,
tmsi2,
tq05,
tq05t,
t001,
t001w,
t006, *t006,
t006a, *t006a,
t024,
t024e,
t027a,
t027b,
t052,
t161n,
t163d,
t166a,
t165p,
t166c,
t166k,
t166p,
t166t,
t166u,
t165m,
t165a,
tmamt,
*mara, "HTN 4.0C
mara,
marc,
mt06e,
makt,
vbak,
vbkd,
*vbkd,
vbap.
TABLES: drad,
drat.
TABLES: addr1_sel,
addr1_val.
TABLES: v_htnm, rampl,tmppf. "HTN-Abwicklung
*- HTN-Abwicklung
DATA: BEGIN OF htnmat OCCURS 0.
INCLUDE STRUCTURE v_htnm.
DATA: revlv LIKE rampl-revlv,
END OF htnmat.
*- Hilfsfelder --------------------------------------------------------*
DATA: hadrnr(8), "Key TSADR
elementn(30), "Name des Elements
save_el(30), "Rettfeld f�r Element
retco LIKE sy-subrc, "Returncode Druck
insert, "Kz. neue Position
h-ind LIKE sy-tabix, "Hilfsfeld Index
h-ind1 LIKE sy-tabix, "Hilfsfeld Index
f1 TYPE f, "Rechenfeld
h-menge LIKE ekpo-menge, "Hilfsfeld Mengenumrechnung
h-meng1 LIKE ekpo-menge, "Hilfsfeld Mengenumrechnung
h-meng2 LIKE ekpo-menge, "Hilfsfeld Mengenumrechnung
ab-menge LIKE ekes-menge, "Hilfsfeld best?tigte Menge
kzbzg LIKE konp-kzbzg, "Staffeln vorhanden?
hdatum LIKE eket-eindt, "Hilfsfeld Datum
hmahnz LIKE ekpo-mahnz, "Hilfsfeld Mahnung
addressnum LIKE ekpo-adrn2, "Hilfsfeld Adressnummer
tablines LIKE sy-tabix, "Z?hler Tabelleneintr?ge
entries LIKE sy-tfill, "Z?hler Tabelleneintr?ge
hstap, "statistische Position
hsamm, "Positionen mit Sammelartikel
hloep, "Gel?schte Positionen im Spiel
hkpos, "Kondition zu l?schen
kopfkond, "Kopfkonditionen vorhanden
no_zero_line, "keine Nullzeilen
xdrflg LIKE t166p-drflg, "Hilfsfeld Textdruck
xprotect, "Kz. protect erfolgt
archiv_object LIKE toa_dara-ar_object, "f�r opt. Archivierung
textflag, "Kz. druckrel. Positionstexte
flag, "allgemeines Kennzeichen
spoolid(10), "Spoolidnummer
xprogram LIKE sy-repid, "Programm
lvs_recipient LIKE swotobjid, "Internet
lvs_sender LIKE swotobjid, "Internet
timeflag, "Kz. Uhrzeit bei mind. 1 Eint.
h_vbeln LIKE vbak-vbeln,
h_vbelp LIKE vbap-posnr.
*- Drucksteuerung -----------------------------------------------------*
DATA: aendernsrv.
DATA: xdruvo. "Druckvorgang
DATA: neu VALUE '1', "Neudruck
aend VALUE '2', "?nderungsdruck
mahn VALUE '3', "Mahnung
absa VALUE '4', "Absage
lpet VALUE '5', "Lieferplaneinteilung
lpma VALUE '6', "Mahnung Lieferplaneinteilung
aufb VALUE '7', "Auftragsbest?tigung
lpae VALUE '8', "?nderung Lieferplaneinteilung
lphe VALUE '9', "Historisierte Einteilungen
preisdruck, "Kz. Gesamtpreis drucken
kontrakt_preis, "Kz. Kontraktpreise drucken
we VALUE 'E'. "Wareneingangswert
CONSTANTS:
* BSTYP
bstyp-info VALUE 'I',
bstyp-ordr VALUE 'W',
bstyp-banf VALUE 'B',
bstyp-best VALUE 'F',
bstyp-anfr VALUE 'A',
bstyp-kont VALUE 'K',
bstyp-lfpl VALUE 'L',
bstyp-lerf VALUE 'Q',
* BSAKZ
bsakz-norm VALUE ' ',
bsakz-tran VALUE 'T',
bsakz-rahm VALUE 'R',
* BSAKZ-BEIS VALUE 'B', "not used
* BSAKZ-KONS VALUE 'K', "not used
* BSAKZ-LOHN VALUE 'L', "not used
* BSAKZ-STRE VALUE 'S', "not used
* BSAKZ-MENG VALUE 'M', "not used
* BSAKZ-WERT VALUE 'W', "not used
* PSTYP
pstyp-lagm VALUE '0',
pstyp-blnk VALUE '1',
pstyp-kons VALUE '2',
pstyp-lohn VALUE '3',
pstyp-munb VALUE '4',
pstyp-stre VALUE '5',
pstyp-text VALUE '6',
pstyp-umlg VALUE '7',
pstyp-wagr VALUE '8',
pstyp-dien VALUE '9',
* Kzvbr
kzvbr-anla VALUE 'A',
kzvbr-unbe VALUE 'U',
kzvbr-verb VALUE 'V',
kzvbr-einz VALUE 'E',
kzvbr-proj VALUE 'P',
* ESOKZ
esokz-pipe VALUE 'P',
esokz-lohn VALUE '3',
esokz-konsi VALUE '2', "konsi
esokz-charg VALUE '1', "sc-jp
esokz-norm VALUE '0'.
CONSTANTS:
* Handling von Unterpositionsdaten
sihan-nix VALUE ' ', "keine eigenen Daten
sihan-anz VALUE '1', "Daten aus Hauptposition kopiert, nicht ?nd
sihan-kop VALUE '2', "Daten aus Hauptposition kopiert, aber ?nde
sihan-eig VALUE '3'. "eigene Daten (nicht aus Hauptposition kopi
* Unterpositionstypen
CONSTANTS:
uptyp-hpo VALUE ' ', "Hauptposition
uptyp-var VALUE '1', "Variante
uptyp-nri VALUE '2', "Naturalrabatt Inklusive (=Dreingabe)
uptyp-ler VALUE '3', "Leergut
uptyp-nre VALUE '4', "Naturalrabatt Exklusive (=Draufgabe)
uptyp-lot VALUE '5', "Lot Position
uptyp-dis VALUE '6', "Display Position
uptyp-vks VALUE '7', "VK-Set Position
uptyp-mpn VALUE '8', "Austauschposition (A&D)
uptyp-sls VALUE '9', "Vorkommisionierungsposition (retail)
uptyp-div VALUE 'X'. "HP hat UP's mit verschiedenen Typen
* Artikeltypen
CONSTANTS:
attyp-sam(2) VALUE '01', "Sammelartikel
attyp-var(2) VALUE '02', "Variante
attyp-we1(2) VALUE '20', "Wertartikel
attyp-we2(2) VALUE '21', "Wertartikel
attyp-we3(2) VALUE '22', "Wertartikel
attyp-vks(2) VALUE '10', "VK-Set
attyp-lot(2) VALUE '11', "Lot-Artikel
attyp-dis(2) VALUE '12'. "Display
* Konfigurationsherkunft
CONSTANTS:
kzkfg-fre VALUE ' ', "Konfiguration sonst woher
kzkfg-kan VALUE '1', "noch nicht konfiguriert
kzkfg-eig VALUE '2'. "Eigene Konfiguration
CONSTANTS:
c_ja TYPE c VALUE 'X',
c_nein TYPE c VALUE ' '.
* Vorgangsart, welche Anwendung den Fkt-Baustein aufruft
CONSTANTS:
cva_ab(1) VALUE 'B', "Automatische bestellung (aus banfen)
cva_we(1) VALUE 'C', "Wareneingang
cva_bu(1) VALUE 'D', "�bernahme bestellungen aus fremdsystem
cva_au(1) VALUE 'E', "Aufteiler
cva_kb(1) VALUE 'F', "Kanban
cva_fa(1) VALUE 'G', "Filialauftrag
cva_dr(1) VALUE 'H', "DRP
cva_en(1) VALUE '9', "Enjoy
cva_ap(1) VALUE '1', "APO
cva_ed(1) VALUE 'T'. "EDI-Eingang Auftragsbest?tigung Update Preis
* Sonderbestandskennzeichen
CONSTANTS:
sobkz-kdein VALUE 'E', "Kundeneinzel
sobkz-prein VALUE 'Q', "Projekteinzel
sobkz-lohnb VALUE 'O'. "Lohnbearbeiterbeistell
DATA return.
TYPE-POOLS msfo.
DATA: print_schedule.
*&---------------------------------------------------------------------*
*& Form GET_CUSTOMER_ADDRESS
*&---------------------------------------------------------------------*
FORM get_customer_address USING p_kunnr LIKE ekpo-kunnr
CHANGING p_adrnr.
* parameter P_ADRNR without type since there are several address
* fields with different domains
*&---------------------------------------------------------------------*
*& Form GET_VENDOR_ADDRESS
*&---------------------------------------------------------------------*
FORM get_vendor_address USING p_emlif LIKE lfa1-lifnr
CHANGING p_adrnr.
* parameter P_ADRNR without type since there are several address
* fields with different domains
IF l_xekko-lifnr NE space.
CALL FUNCTION 'MM_ADDRESS_GET'
EXPORTING
i_ekko = l_xekko
IMPORTING
e_sadr = sadr
EXCEPTIONS
OTHERS = 1.
MOVE-CORRESPONDING sadr TO l_lfa1.
IF sy-subrc = 0.
MOVE l_lfa1-adrnr TO l_addr_key.
ENDIF.
ENDIF.
ENDFORM. " get_addr_key
*&---------------------------------------------------------------------*
*& Form protocol_update_I
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM protocol_update_i.
CHECK xscreen = space.
CALL FUNCTION 'NAST_PROTOCOL_UPDATE'
EXPORTING
msg_arbgb = syst-msgid
msg_nr = syst-msgno
msg_ty = syst-msgty
msg_v1 = syst-msgv1
msg_v2 = syst-msgv2
msg_v3 = syst-msgv3
msg_v4 = syst-msgv4
EXCEPTIONS
OTHERS = 1.
ENDFORM. " protocol_update_I
*&---------------------------------------------------------------------*
*& Form add_smfrm_prot
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM add_smfrm_prot.
DATA: lt_errortab TYPE tsferror.
DATA: lf_msgnr TYPE sy-msgno.
DATA: l_s_log TYPE bal_s_log,
p_loghandle TYPE balloghndl,
l_s_msg TYPE bal_s_msg.
FIELD-SYMBOLS: <fs_errortab> TYPE LINE OF tsferror.
* get smart form protocoll
CALL FUNCTION 'SSF_READ_ERRORS'
IMPORTING
errortab = lt_errortab.
SORT lt_errortab.
* delete adjacent duplicates from lt_errortab comparing errnumber.
* add smartform protocoll to nast protocoll
LOOP AT lt_errortab ASSIGNING <fs_errortab>.
CLEAR lf_msgnr.
lf_msgnr = <fs_errortab>-errnumber.
CALL FUNCTION 'NAST_PROTOCOL_UPDATE'
EXPORTING
msg_arbgb = <fs_errortab>-msgid
msg_nr = lf_msgnr
msg_ty = <fs_errortab>-msgty
msg_v1 = <fs_errortab>-msgv1
msg_v2 = <fs_errortab>-msgv2
msg_v3 = <fs_errortab>-msgv3
msg_v4 = <fs_errortab>-msgv4
EXCEPTIONS
OTHERS = 1.
ENDLOOP.
*&--------------------------------------------------------------------*
*& Form ENTRY_NEU
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
* -->ENT_RETCO text
* -->ENT_SCREEN text
*---------------------------------------------------------------------*
xscreen = ent_screen.
CLEAR ent_retco.
IF nast-aende EQ space.
l_druvo = '1'.
ELSE.
l_druvo = '2'.
ENDIF.
ENDFORM. "entry_neu
*&--------------------------------------------------------------------*
*& Form ENTRY_MAHN
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
* -->ENT_RETCO text
* -->ENT_SCREEN text
*---------------------------------------------------------------------*
FORM entry_mahn USING ent_retco ent_screen.
xscreen = ent_screen.
l_druvo = '3'.
ENDFORM. "entry_mahn
*&--------------------------------------------------------------------*
*& Form ENTRY_AUFB
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
* -->ENT_RETCO text
* -->ENT_SCREEN text
*---------------------------------------------------------------------*
FORM entry_aufb USING ent_retco ent_screen.
xscreen = ent_screen.
l_druvo = '7'.
ENDFORM. "entry_aufb
*&--------------------------------------------------------------------*
*& Form ENTRY_ABSA
*&--------------------------------------------------------------------*
* RFQ: Quotation Rejection
* Angebotsabsage
*----------------------------------------------------------------------*
FORM entry_absa USING ent_retco ent_screen.
*********************************************
DATA: l_druvo LIKE t166k-druvo.
DATA: ls_xfz TYPE char1.
xscreen = ent_screen.
l_druvo = '4'.
ENDFORM. "entry_absa
*&--------------------------------------------------------------------*
*& Form ENTRY_LPET
*&--------------------------------------------------------------------*
* Delivery Schedule: Traditional DLS type, without forecast or JIT
* Lieferplaneinteilung
*----------------------------------------------------------------------*
FORM entry_lpet USING ent_retco ent_screen.
IF nast-aende EQ space.
l_druvo = '5'.
ELSE.
l_druvo = '8'.
ENDIF.
xscreen = ent_screen.
PERFORM processing_po
USING nast
ls_xfz
CHANGING ent_retco
ent_screen
l_druvo.
ENDFORM. "entry_lpet
*&--------------------------------------------------------------------*
*& Form ENTRY_LPMA
*&--------------------------------------------------------------------*
* Dlivery Schedule: Urging/Reminder
* Mahnung
FORM entry_lpma USING ent_retco ent_screen.
CLEAR ent_retco.
l_druvo = '6'.
xscreen = ent_screen.
PERFORM processing_po
USING nast
ls_xfz
CHANGING ent_retco
ent_screen
l_druvo.
ENDFORM. "entry_lpma
*&--------------------------------------------------------------------*
*& Form ENTRY_LPHE_CD
*&--------------------------------------------------------------------*
* Delivery Schedule: Forecast delivery without accumnlation value
FORM entry_lphe_cd USING ent_retco ent_screen.
CLEAR ent_retco.
l_druvo = '9'.
xscreen = ent_screen.
*>>> Start of Insertion >>> OSS 754573 (Liu Ke)
IF xscreen EQ 'X' AND ( nast-tdarmod EQ '2' OR nast-tdarmod EQ '3').
nast-tdarmod = '1'.
ENDIF.
*<<< End of Insertion <<<
PERFORM processing_po
USING nast
ls_xfz
CHANGING ent_retco
ent_screen
l_druvo.
ENDFORM. "entry_lphe_cd
*&--------------------------------------------------------------------*
*& Form ENTRY_LPJE_CD
*&--------------------------------------------------------------------*
* Delivery Schedule: JIT delivery without accumnlation value
FORM entry_lpje_cd USING ent_retco ent_screen.
CLEAR ent_retco.
l_druvo = 'A'.
PERFORM processing_po
USING nast
ls_xfz
CHANGING ent_retco
ent_screen
l_druvo.
ENDFORM. "entry_lpje_cd
*&--------------------------------------------------------------------*
*& Form PROCESSING_PO
*&--------------------------------------------------------------------*
* Purchase Order Processing Subroutine
FORM processing_po
USING iv_nast TYPE nast
iv_xfz TYPE char1
CHANGING ent_retco
ent_screen
iv_druvo TYPE t166k-druvo.
DATA: ls_print_data_to_read TYPE lbbil_print_data_to_read.
DATA: ls_bil_invoice TYPE lbbil_invoice.
DATA: lf_fm_name TYPE rs38l_fnam.
DATA: ls_control_param TYPE ssfctrlop.
DATA: ls_composer_param TYPE ssfcompop.
DATA: ls_recipient TYPE swotobjid.
DATA: ls_sender TYPE swotobjid.
DATA: lf_formname TYPE tdsfname.
DATA: ls_addr_key LIKE addr_key.
DATA: ls_job_info TYPE ssfcrescl.
DATA: l_spoolid TYPE rspoid.
DATA: lv_receiver TYPE so_recname.
DATA: l_from_memory,
l_doc TYPE meein_purchase_doc_print,
lt_ekpo TYPE TABLE OF ekpo,
ls_ekpo TYPE ekpo,
l_nast LIKE nast,
lv_lifnr TYPE lfa1-lifnr,
i_email TYPE TABLE OF bapiadsmtp,
i_return TYPE TABLE OF bapiret2,
wa_return TYPE bapiret2,
wa_email TYPE bapiadsmtp.
***********************************************************************************
***********************
* Internal Table declarations
DATA: i_otf TYPE itcoo OCCURS 0 WITH HEADER LINE,
i_tline TYPE TABLE OF tline WITH HEADER LINE,
i_receivers TYPE TABLE OF somlreci1 WITH HEADER LINE,
i_record LIKE solisti1 OCCURS 0 WITH HEADER LINE,
* Objects to send mail.
i_objpack LIKE sopcklsti1 OCCURS 0 WITH HEADER LINE,
i_objtxt LIKE solisti1 OCCURS 0 WITH HEADER LINE,
i_objbin LIKE solisti1 OCCURS 0 WITH HEADER LINE,
i_reclist LIKE somlreci1 OCCURS 0 WITH HEADER LINE,
* Work Area declarations
wa_objhead TYPE soli_tab,
w_return TYPE ssfcrescl,
wa_doc_chng TYPE sodocchgi1,
w_data TYPE sodocchgi1,
wa_buffer TYPE string, "To convert from 132 to 255
* Variables declarations
v_form_name TYPE rs38l_fnam,
v_len_in LIKE sood-objlen,
v_len_out LIKE sood-objlen,
v_len_outn TYPE i,
v_lines_txt TYPE i,
v_lines_bin TYPE i.
***********************************************************************************
***********************
CALL FUNCTION 'ME_READ_PO_FOR_PRINTING'
EXPORTING
ix_nast = iv_nast
ix_screen = ent_screen
IMPORTING
ex_retco = ent_retco
ex_nast = l_nast
doc = l_doc
CHANGING
cx_druvo = iv_druvo
cx_from_memory = l_from_memory.
CHECK ent_retco EQ 0.
l_nast-aende = iv_nast-aende.
***********************
DATA lv_nast LIKE nast.
IF iv_druvo EQ aend OR iv_druvo EQ lpae.
SELECT datvr uhrvr INTO (lv_nast-datvr, lv_nast-uhrvr) FROM nast
WHERE kappl EQ iv_nast-kappl
AND kschl EQ iv_nast-kschl
AND objky EQ iv_nast-objky
AND vstat EQ '1'
ORDER BY datvr DESCENDING uhrvr DESCENDING.
EXIT.
ENDSELECT.
CLEAR i_reclist.
CLEAR lv_receiver.
* SELECT SINGLE smtp_addr FROM adr6 INTO lv_receiver WHERE
* addrnumber = iv_nast-adrnr AND
* consnumber = '002'.
* IF sy-subrc = 0.
* ELSE.
* SELECT SINGLE smtp_addr FROM adr6 INTO lv_receiver WHERE
* addrnumber = iv_nast-adrnr.
* ENDIF.
***Begin of comment tiket # 125732
* i_reclist-receiver = lv_receiver.
* CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
* EXPORTING
* input = l_doc-xekko-lifnr
* IMPORTING
* output = lv_lifnr.
* CALL FUNCTION 'BAPI_BUPA_ADDRESS_GETDETAIL'
* EXPORTING
* businesspartner = lv_lifnr
* TABLES
* bapiadsmtp = i_email
* return = i_return.
* READ TABLE i_return INTO wa_return WITH KEY type = 'E'.
* IF sy-subrc = 0.
* SELECT SINGLE smtp_addr FROM adr6 INTO lv_receiver WHERE
* addrnumber = iv_nast-adrnr.
* i_reclist-receiver = lv_receiver.
* ELSE.
* READ TABLE i_email INTO wa_email INDEX 1.
* i_reclist-receiver = wa_email-e_mail.
** READ TABLE i_email INTO wa_email WITH KEY consnumber = '002'.
** IF sy-subrc = 0.
** i_reclist-receiver = wa_email-e_mail.
** ELSE.
** SELECT SINGLE smtp_addr FROM adr6 INTO lv_receiver WHERE
** addrnumber = iv_nast-adrnr.
** i_reclist-receiver = lv_receiver.
** ENDIF.
* ENDIF.
****END of commmet 127732
IF sy-subrc <> 0.
ent_retco = sy-subrc.
PERFORM protocol_update_i.
ELSE.
i_reclist-rec_type = 'U'.
APPEND i_reclist.
* CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
* EXPORTING
* document_data = wa_doc_chng
* put_in_outbox = 'X'
* commit_work = ' '
* TABLES
* packing_list = i_objpack
* object_header = wa_objhead
* contents_bin = i_objbin
* contents_txt = i_objtxt
* receivers = i_reclist
* EXCEPTIONS
* too_many_receivers = 1
* document_not_sent = 2
* document_type_not_exist = 3
* operation_no_authorization = 4
* parameter_error = 5
* x_error = 6
* enqueue_error = 7
* OTHERS = 8.
ENDIF.
*<< End
* required for Discrete Manufacturing scenario 230
**<<<< Start of insertion >>>>*
IF l_nast-kappl EQ 'EL' AND ent_screen IS INITIAL
AND l_from_memory IS INITIAL AND l_nast-sndex IS INITIAL.
IF sy-ucomm NE '9ANZ' AND sy-ucomm NE '9DPR'.
PERFORM update_release(saplmedruck)
TABLES l_doc-xekpo l_doc-xekek l_doc-xekeh
USING iv_druvo l_nast-kschl.
ENDIF.
ENDIF.
*<<<< End of insertion >>>>*
READ TABLE ls_job_info-spoolids INTO l_spoolid INDEX 1.
IF sy-subrc IS INITIAL.
EXPORT spoolid = l_spoolid TO MEMORY ID 'KYK_SPOOLID'.
ENDIF.
ENDIF.
ENDFORM. "PROCESSING_PO
*&---------------------------------------------------------------------*
*& Form set_print_param
*&---------------------------------------------------------------------*
FORM set_print_param USING is_addr_key LIKE addr_key
CHANGING cs_control_param TYPE ssfctrlop
cs_composer_param TYPE ssfcompop
cs_recipient TYPE swotobjid
cs_sender TYPE swotobjid
cf_retcode TYPE sy-subrc.
lf_repid = sy-repid.
IF cf_retcode = 0.
MOVE-CORRESPONDING ls_itcpo TO cs_composer_param.
* cs_composer_param-tdnoprint = 'X'. "Note 591576
cs_control_param-device = lf_device.
cs_control_param-no_dialog = 'X'.
cs_control_param-preview = xscreen.
cs_control_param-getotf = ls_itcpo-tdgetotf.
cs_control_param-langu = nast-spras.
ENDIF.
ENDFORM. "set_print_param