on 10-04-2007 3:09 PM
Hi ABAPers,
I have a problem when i want to print the invoice, every thing was fine but the address was not printing properly when it was in English. For all other languages it was printing properly.
I want to debugg the script for that. i activated the debugger and gone to VF02 , but that script was not triggering.
So can any one help me in this issue.
Thanks & Regards,
Ramana Prasad.
Hi!
There could be many possible errors:
- in your SAPScript there might be an incorrect, mistyped command, like
/: ADRESS
/: EDADRESS (instead of ENDADRESS)
/: IF ...
/: ENIF
/: IF ... "if the previos IF is not closed properly, could make weird things in your SAPscript
/: ENDIF
Or there could be a problem in your printer program, for example the script is excluded due to some condition, before it...
If you post the source here, there could be an exact solution... Perhaps...
Regards
Tamá
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi Tamas,
Thanks for your reply.
I can print the full address in other languages, but coming to english, it was printing only half of the address. And also i am activating debugger for that script but it was not triggering when i run this T.Code, VF02.
so please help me in this issue, its very urgent.
I am pasting the Driver program code. So can u send me the solution.
REPORT RVADIN01 LINE-COUNT 100 MESSAGE-ID VN.
tables: stxh, vbdpl, lips, zstdi, eikp, cabn, dgtmd, mara, dgtm2.
tables: thm032.
tables: zfre_cond.
tables: adr2, adr3, t005k, tvarvc, makt, adr6.
TABLES: BKPF, " Accounting document header
BSEG, " Accounting document segment
KOMK, " Communicationarea for conditions
KOMP, " Communicationarea for conditions
KOMVD, " Communicationarea for conditions
VBCO3, " Communicationarea for view
VBDKR, " Headerview
VBDPR, " Itemview
VBDRE, " ESRview
CONF_OUT, " Configuration data
SADR, " Addresses
TVKO, " Sales organisation
THEAD, " SAPscript: Text Header
T001G, " Company adress
ZDEC4, " DC USED FOR 4 DECIMAL PLACES
VBPA, " DC Used to find carrier
LFA1, " DC Used to find carrier
LIKP, " DC Used to find ship date
TVROT, " DC Used to find route
TVST, " Organizational Unit: Shipping Points
T247, " Month name and short text
VBFA, " Sales Document Flow
VBRP, " Billing: Item Data
VBRK, " Billing: Header Data
MARC,
EIPO. " Export/Import Item Data
INCLUDE RVADTABL.
field-symbols: .
TYPES: BEGIN OF TY_INVADR,
TITLE TYPE CHAR255,
NAME1 TYPE CHAR255,
NAME2 TYPE CHAR255,
NAME4 type char255,
STREET TYPE CHAR255,
HOUSE_NUM1 TYPE CHAR255,
POST_CODE1 TYPE CHAR255,
CITY1 TYPE CHAR255,
COUNTRY TYPE CHAR255,
LANDX TYPE CHAR255,
REGION TYPE CHAR255,
PO_BOX TYPE CHAR255,
TEL_NUMBER TYPE CHAR255,
FAX_NUMBER TYPE CHAR255,
STCEG TYPE CHAR255,
URI_ADDR TYPE CHAR255,
END OF TY_INVADR.
data: gs_invadr type ty_invadr.
DATA: GTT TYPE IBSYMBOL occurs 0 with header line.
data: factorin(1) type c.
data: p_freight(1) type c.
data: NO_EUR(1) type c. "norwegian invoice with EUR
data: zwaers like knvv-waers.
data: zkatr2 like kna1-katr2.
data: zkbetr like komvd-kbetr.
data: f_netwr like vfkn-netwr.
data: s_netwr like vfkn-netwr.
data: r_netwr like vfkn-netwr.
data: c_arktx like knmt-postx.
data: t_netwr like vfkn-netwr.
data: arktx2 like vbap-arktx.
DATA: ZSTK TYPE ZLKEY occurs 0 with header line.
data: tax_found type i.
data: fre_found type i.
data: fre_header type i.
data: fre_item type i.
data: fre_wert like komvd-kwert.
data: old_wert like komvd-kwert.
data: qtai like vbdpr-fkimg.
data: utai like mara-meins.
data: zremit like stxh-tdname.
data: adre like sadr.
data: adrein like ADDR1_SEL.
data: xverop(6) type c. "veroprosentti max 100 & max 2 desimaalia = 6 merkkiä
ranges: s_rebate for vbrk-fkart.
data: x_rebate.
data:
sp_zbaNK_LCCL like nast-spras,
sp_ZBANK_EUR like nast-spras,
sp_Z01EUR_BANK like nast-spras,
sp_Z62EUR_BANK like nast-spras,
sp_Z76EUR_BANK like nast-spras,
sp_Z82EUR_BANK like nast-spras,
sp_Z102EUR_BANK like nast-spras,
sp_Z208EUR_BANK like nast-spras,
sp_Z_ADRS_FOOTER_HDR like nast-spras,
sp_ZKCOYNOTICE like nast-spras,
sp_ZOVERDUE_PAYMENT like nast-spras,
sp_ZKCOYPENALTY like nast-spras,
sp_Z01USD_BANK like nast-spras,
sp_Z01EUR_IBAN like nast-spras.
data:
hZE64 like nast-spras,
hZY71 like nast-spras,
hZZ03 like nast-spras,
hZY16 like nast-spras,
hZZ80 like nast-spras,
hZZ85 like nast-spras,
hZZ90 like nast-spras,
hZZ95 like nast-spras,
hZZ99 like nast-spras,
hzz70 like nast-spras,
h0010 like nast-spras,
h0001 like nast-spras,
hzy63 like nast-spras.
data:
i0001 like nast-spras,
i0002 like nast-spras.
**
data: partner_z2(1) type c.
data: z2_ANRED LIKE VBADR-ANRED,
z2_NAME1 LIKE VBADR-NAME1,
z2_NAME2 LIKE VBADR-NAME2,
z2_NAME3 LIKE VBADR-NAME3,
z2_NAME4 LIKE VBADR-NAME4,
z2_STRAS LIKE VBADR-STRAS,
z2_LAND1 LIKE VBADR-LAND1,
z2_PSTLZ LIKE VBADR-PSTLZ,
z2_PSTL2 LIKE VBADR-PSTL2,
z2_LAND11 LIKE t005-landk,
z2_LANDd LIKE t005t-landx,
z2_PFORT LIKE VBADR-PFORT,
z2_ORT01 LIKE VBADR-ORT01,
z2_ORT02 LIKE VBADR-ORT02,
z2_PFACH LIKE VBADR-PFACH.
data: partner_z3(1) type c.
data: z3_ANRED LIKE VBADR-ANRED,
z3_NAME1 LIKE VBADR-NAME1,
z3_NAME2 LIKE VBADR-NAME2,
z3_NAME3 LIKE VBADR-NAME3,
z3_NAME4 LIKE VBADR-NAME4,
z3_STRAS LIKE VBADR-STRAS,
z3_LAND1 LIKE VBADR-LAND1,
z3_PSTLZ LIKE VBADR-PSTLZ,
z3_PSTL2 LIKE VBADR-PSTL2,
z3_LAND11 LIKE t005-landk,
z3_LANDd LIKE t005t-landx,
z3_PFORT LIKE VBADR-PFORT,
z3_ORT01 LIKE VBADR-ORT01,
z3_ORT02 LIKE VBADR-ORT02,
z3_PFACH LIKE VBADR-PFACH.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
data: bland like vbpa-land1.
data: zadc type SZADR_ADDR1_COMPLETE.
data: zadc2 type SZADR_ADDR1_COMPLETE.
DATA: ADDR1_WA TYPE SZADR_ADDR1_LINE.
DATA: ADDR1 TYPE ADDR1_VAL occurs 0 with header line.
DATA: ADtel TYPE SZADR_ADTEL_LINE.
DATA: ADfax TYPE SZADR_ADfax_LINE.
data: combi(1) type c.
data: zablad like vbpa-ablad.
data: street2 like addr1-str_suppl1.
data: street3 like addr1-str_suppl2.
data: street4 like addr1-str_suppl3.
data: name_co like addr1-name_co.
data: street2_we like addr1-str_suppl1.
data: street3_we like addr1-str_suppl2.
data: street4_we like addr1-str_suppl3.
data: name_co_we like addr1-name_co.
data: multihs(1) type c. "multiple HS codes
data: zpery(8) type c.
data: gv_noibcs type p.
data: xzz95(1) type c.
data: domestic(1) type c.
data: domes_fi(1) type c.
data: norway(1) type c.
data: NO_WEIGHT(1) type c.
data: f_podate like sy-datum. "first po date
data: orderer like vbak-bname. "name of orderer
data: iernam like adrp-name_text. "name of the user
data: iertel(80) type c.
data: ierfax(80) type c.
data: iermail like adr6-smtp_addr.
data: zbnk_ref(20) type c.
data: dst_ctry(20) type c. "country of destination
data: rahtik like vbap-posex.
data: dkmein like mara-meins.
data: dbrgew like vbdpr-brgew.
data: dntgew like vbdpr-ntgew.
DATA: BEGIN OF IT_INLINES OCCURS 0. " Text header
INCLUDE STRUCTURE TLINE.
DATA: END OF IT_INLINES.
data:
GV_LANDX_RE LIKE T005T-LANDX, " Bill-to country name
GV_LANDK_RE LIKE T005-LANDK. " Ship-to vehicle code
data: street2_re like addr1-str_suppl1.
*.. Table used to retrieve text id' s
DATA: BEGIN OF IT_TEXTLINES OCCURS 0. " Text lines
INCLUDE STRUCTURE TLINE.
DATA: END OF IT_TEXTLINES.
data: facttxt like stxh-tdname.
data: ads type ADDR1_SEL.
data: z_sdate like sy-datum.
data: z_final like adrc-city1.
DATA: TLIN TYPE TLINE occurs 0 with header line.
data: cp2(1) type c. "2 customers printout, sold to & bill to
data: cp3(1) type c. "2 customers printout, sold to & bill to
data: all_ztad(1) type c.
data: excl_dlvno(1) type c.
data: excl_cpono(1) type c.
data: incl_rahti(1) type c.
data: mult_ord(1) type c. "multiple sales orders = combined invoice
data: ferdat like vbak-erdat. "first sales order date
data: sorders type i. "sales order count
DATA: BEGIN OF VBTAB occurs 0,
VBELN TYPE VBAK-VBELN,
END OF VBTAB.
data: carr1(1) type c.
data: no_koei1 like komvd-koei1.
data: no_kwert like komvd-kwert.
DATA: RETCODE LIKE SY-SUBRC, "Returncode
TITLE(25),
Start of changes by Sanghita as on 05.09.2007
TITLE_1 TYPE CHAR25,
TITLE_1 LIKE RV45C-BEZEIB,
TITLE_2 TYPE CHAR25,
TITLE_2 LIKE RV45C-BEZEIB,
End of changes by Sanghita as on 05.09.2007
TITLE_3(25) type c.
DATA: ZVAT. " Flag
DATA: REPEAT(1) TYPE C.
DATA: XSCREEN(1) TYPE C. "Output on printer or screen
DATA: BEGIN OF TVBDPR OCCURS 100. "Internal table for items
INCLUDE STRUCTURE VBDPR.
DATA: END OF TVBDPR.
DATA: BEGIN OF TKOMV OCCURS 50.
INCLUDE STRUCTURE KOMV.
DATA: END OF TKOMV.
DATA: BEGIN OF TKOMVD OCCURS 50.
INCLUDE STRUCTURE KOMVD.
DATA: END OF TKOMVD.
DATA: BEGIN OF HKOMVD OCCURS 50.
INCLUDE STRUCTURE KOMVD.
DATA: END OF HKOMVD.
DATA: BEGIN OF TKOMCON OCCURS 50.
INCLUDE STRUCTURE CONF_OUT.
DATA: END OF TKOMCON.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
DATA: PR_KAPPL(01) TYPE C VALUE 'V'. "Application for pricing
DATA: PRINT_MWSKZ. "Mehrwertsteuer-Kz drucken
data: waerk1 like KOMK-WAERK.
data: waerk2 like KOMK-WAERK.
data: kwert1 like komvd-kwert.
data: kwert2 like komvd-kwert.
data: supos1 like komk-supos.
data: supos2 like komk-supos.
data: MM_SALE LIKE TLINE OCCURS 0 with header line.
data: tdi like thead-tdid.
data: tdo like thead-tdobject.
data: tds like thead-tdspras.
data: tdn like thead-tdname.
data: ztraid like likp-traid.
data: conseal(40) type c.
data: conseal2(40) type c.
data: conseal3(40) type c.
data: conseal4(40) type c.
data: conseal5(40) type c.
data: conseal6(40) type c.
data: conseal7(40) type c.
data: conseal8(40) type c.
data: skipmtx type i.
data: xz5(30) type c.
data: xz5t(20) type c.
data: xz5f(20) type c.
data: memo(1) type c. "credit or debit memo!
DATA: LT_INVADR_IN TYPE ITCSY OCCURS 0,
LWA_INVADR_IN TYPE ITCSY,
LT_INVADR_OUT TYPE ITCSY OCCURS 0,
LWA_INVADR_OUT TYPE ITCSY.
data: hpres(45) type c.
data: hpres2(45) type c.
data: idgd(1) type c.
data: idgd2(1) type c.
data: taxtypes type i.
data: destctry like t005t-landx.
data: origlist1 like t005t-landx.
data: origlist2(130) type c.
DATA: BEGIN OF COTAB occurs 0,
LAND1 TYPE T005T-LAND1,
LANDX TYPE T005T-LANDX,
LANDX50 TYPE T005T-LANDX50,
END OF COTAB.
- - - - Variables declared by Volkaert Tim- - - - - - - - - - - - - -
TABLES:
ZED_2, " ED customizing: Document titles
T005, "
T005T. "
tables: usr03, usr21, adrp.
*----
*
Naming conventions for variables *
*----
*
Types...........: ty_........
Global variables: gv_........
Local variables: lv_........
Internal tables.: it_........
Data structures.: ds_........
Constants.......: con_........
Field symbols...: <........>
*----
*
*........ Types
TYPES: BEGIN OF TY_PRICE,
STUNR LIKE KOMVD-STUNR, " Unit price rate
ZAEHK LIKE KOMVD-ZAEHK, " Unit price rate
KBETR LIKE KOMVD-KBETR, " Unit price rate
KOEIN LIKE KOMVD-KOEIN, " Unit price rate unit
KPEIN LIKE KOMVD-KPEIN, " Unit price condition pricing unit
KMEIN LIKE KOMV-KMEIN, " Unit price condition unit
KWERT LIKE KOMVD-KWERT, " Unit price condition value
TKWERT LIKE KOMVD-KWERT, " Total condition value
kawrt like komvd-kawrt, " unit weight
tkawrt like komvd-kawrt, " Total weight
END OF TY_PRICE,
BEGIN OF ty_dgtmd,
recn TYPE eserecn, "DG data
actn TYPE eseactn,
pdgnud TYPE adge_pdgnd,
pres1 TYPE adge_pres,
pres2 TYPE adge_pres,
pre1t TYPE esephrtext,
pre2t TYPE esephrtext,
pdgnt TYPE esephrtext,
tkui TYPE thme_tkui,
dgnu TYPE thme_dgnu,
pgro TYPE thme_pgro,
dgsc TYPE adge_dgsc,
dgcl TYPE adge_dgcl,
hnu TYPE thme_hnu,
hpn2 TYPE thme_hpn1,
hpn3 TYPE thme_hpn1,
END OF ty_dgtmd.
*........ Field symbols
FIELD-SYMBOLS: .
*........ Global variables
DATA: GV_NOPAL TYPE P, " Number of pallets
GV_TNOPAL TYPE P, " Total number of pallets - ERDK905353
GV_NOPCK TYPE P, " Number of packaging
GV_TNOPCK TYPE P, " Total number of packaging - ERDK905353
GV_DUEDT_1 TYPE D, " Due date 1
GV_DUEDT_2 TYPE D, " Due date 2
GV_DUEDT_3 TYPE D, " Due date 3
gv_amont_1 like bseg-wrbtr, " Due date amount 1
gv_amont_2 like bseg-wrbtr, " Due date amount 2
gv_amont_3 like bseg-wrbtr, " Due date amount 3
GV_GETDESC VALUE 'X', " Description of goods indicator
GV_PACKINDEX LIKE SY-TABIX VALUE '1', " Index
GV_MAKTXINDEX LIKE SY-TABIX VALUE '5', " Index
GV_PACKAGING VALUE 'X', " Packaging text indicator
GV_MATDESC VALUE 'X', " Material description indicator
GV_WERKS LIKE VBRP-WERKS , " Plant
GV_AMONT_1(16) , " Due date amount 1
GV_AMONT_2(16) , " Due date amount 2
GV_AMONT_3(16) , " Due date amount 3
GV_MONTH LIKE T247-LTX, " Month text
GV_YEAR(4), " Year
ZCOM1 LIKE VBDPR-STAWN,
ZCOM2 LIKE VBDPR-STAWN,
GV_HERTI LIKE VBDPR-HERTI, " Country of origin description
GV_LANDX_SP LIKE T005T-LANDX, " Sold-to country name
GV_LANDX_SH LIKE T005T-LANDX, " Ship-to country name
GV_LANDX_SP like makt-maktx," Sold-to country name
GV_LANDX_SH like makt-maktx, " Ship-to country name
GV_LANDK_SP LIKE T005-LANDK, " Sold-to vehicle code
GV_LANDK_SH LIKE T005-LANDK, " Ship-to vehicle code
GV_PAYM.
*........ Internal tables
DATA: IT_TEXT LIKE TLINE OCCURS 0 WITH HEADER LINE, "Used to store text
IT_DOGO LIKE TLINE OCCURS 0 WITH HEADER LINE, "Descrip. of goods
IT_PAYM LIKE TLINE OCCURS 0 WITH HEADER LINE, "Payment text
IT_CERT LIKE TLINE OCCURS 0 WITH HEADER LINE, "Certific. clause
IT_CAR1 LIKE TLINE OCCURS 0 WITH HEADER LINE, "Carriage 1 by
IT_CAR2 LIKE TLINE OCCURS 0 WITH HEADER LINE, "Carriage 1 by
IT_PLDI LIKE TLINE OCCURS 0 WITH HEADER LINE, "Place of discharge
IT_FIDE LIKE TLINE OCCURS 0 WITH HEADER LINE, "Final destination
IT_FROM LIKE TLINE OCCURS 0 WITH HEADER LINE, "From text
IT_VIA LIKE TLINE OCCURS 0 WITH HEADER LINE, "Via text
IT_CARR LIKE TLINE OCCURS 0 WITH HEADER LINE, "Carrier
IT_WANO LIKE TLINE OCCURS 0 WITH HEADER LINE, "Wagon number
IT_SHMA LIKE TLINE OCCURS 0 WITH HEADER LINE, "Shipping marks
IT_SHDA LIKE TLINE OCCURS 0 WITH HEADER LINE. "Shipping date
DATA: TT_TEXT LIKE TLINE OCCURS 0 WITH HEADER LINE.
*.. Different sales units in invoice
DATA: BEGIN OF IT_MEINS OCCURS 0,
MEINS LIKE VBDPR-VRKME,
END OF IT_MEINS.
*.. Different material descriptions in invoice
DATA: BEGIN OF IT_ARKTX OCCURS 0,
ARKTX LIKE VBDPR-ARKTX, " Short text for sales order item
END OF IT_ARKTX.
*.. Used to combine item lines as described in specification:
DATA: BEGIN OF IT_COMBINE OCCURS 0,
MATNR LIKE VBDPR-MATNR, " Material code
VRKME LIKE VBDPR-VRKME, " Invoiced quantity unit
GEWEI LIKE VBDPR-GEWEI, " Net weight quantity
POSNR LIKE VBDPR-POSNR, " Reference position in tvbdpr
kbetr like komv-kbetr, " Unit price rate
koein like komvd-koein, " Unit price rate unit
kpein like komvd-kpein, " Unit price condition pricing unit
kmein like komv-kmein, " Unit price condition unit
kwert like komvd-kwert, " Unit price condition value
IT_KOMVD TYPE TY_PRICE OCCURS 0,
END OF IT_COMBINE.
*........ Data structures
DATA: DS_KOMVD LIKE LINE OF IT_COMBINE-IT_KOMVD.
DATA: BEGIN OF DS_ADD_VAL, "Additional values for Forwarding instruct.
WAERK LIKE VBRK-WAERK, "Local currency
NETWR1 LIKE VBRP-NETWR, "Export value commodity code 1
NETWR2 LIKE VBRP-NETWR, "Export value commodity code 2
NETWR3 LIKE VBRP-NETWR, "Expense value commodity code 1
NETWR4 LIKE VBRP-NETWR, "Expense value commodity code 2
COMM1 LIKE VBDPRE-STAWN, "Commodity code 1
COMM2 LIKE VBDPRE-STAWN, "Commodity code 2
END OF DS_ADD_VAL.
..Start IHO20040311 ..
DATA: BEGIN OF PS_ADD_VAL, "Additional values for Forwarding instruct.
NETWR1(8) type p decimals 2,
NETWR2(8) type p decimals 2,
NETWR3(8) type p decimals 2,
NETWR4(8) type p decimals 2,
END OF PS_ADD_VAL.
..End IHO20040311 ..
*........ Constants
CONSTANTS: CON_ZWAYBCMRPORI(12) VALUE 'ZWAYBCMRPORI', "Layout set
CON_ZCERTANALGEN(12) VALUE 'ZCERTANALGEN', "Layout set
CON_ZFORWINSTR(24) VALUE 'ZFORWINSTR', "Layout set
CON_ZINVOICEGEN(11) VALUE 'ZINVOICEGEN', "Layout set
CON_ZDISPATCHGEN(12) VALUE 'ZDISPATCHGEN', "Layout set
CON_ZSHIPADVGEN(11) VALUE 'ZSHIPADVGEN' , " Layout set
CON_ZCOMINVGEN(10) VALUE 'ZCOMINVGEN' , " Layout set
CON_ZREBINVGEN(10) VALUE 'ZREBINVGEN' , " PN20020124
CON_ZINVOICEEXP(11) value 'ZINVOICEEXP',
CON_ZINVOICENA(10) value 'ZINVOICENA',
CON_ZCERTANALKCO(12) value 'ZCERTANALKCO',
CON_BASIC_PRICE VALUE 'H'. " Price condition category type
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
*........ Global variables (YHE)
DATA: Z_REF_DOC_TYPE(3),
Z_REF_DOC_CODE LIKE VBDKR-VBTYP,
Z_DELIV_NO LIKE VBDKR-VBELN_VL,
Z_DELIV_ITEM_NO LIKE VBFA-POSNN,
Z_SHIP_POINT LIKE LIKP-VSTEL.
data: vat_found type i.
data: tlvol like vbrp-volum.
data: tlvoc(13) type c.
data: tntgew(13) type c.
data: tbrgew(13) type c.
data: fntgew like vbdkr-ntgew.
data: fbrgew like vbdkr-brgew.
data: xtotal like konp-kbetr.
data: fname like usr03-name1.
data: lname like usr03-name2.
data: lb_ntgew(13) type c.
data: lb_brgew(13) type c.
data: tdkmein like mara-meins.
data: llntgew like vbdkr-ntgew.
data: llbrgew like vbdkr-brgew.
data: il_ntgew like vbdkr-ntgew.
data: il_brgew like vbdkr-brgew.
data: ib_ntgew(13) type c.
data: ib_brgew(13) type c.
tables: ztaxc, ztaxt, ztaxe, ztaxx.
tables: t001.
data: no_tax_text(1) type c.
data: gtl type i.
data: stl type i.
data: txl type i.
DATA: BEGIN OF TXTAB occurs 0,
POSNR TYPE VBRP-POSNR,
mwskz type ztaxx-mwskz,
tdname type ztaxx-tdname,
tdid type stxh-tdid,
END OF TXTAB.
data: hxtab like txtab.
data: ittab like txtab.
DATA: LV_TDNAME LIKE NAST-TDNAME.
DATA: BEGIN OF XTXTAB occurs 0,
POSNR TYPE VBRP-POSNR,
mwskz type ztaxx-mwskz,
tdname type ztaxx-tdname,
tdid type stxh-tdid,
END OF XTXTAB.
DATA: lc_lwdg TYPE thme_lwdg VALUE 'ADR'. "dangerous goods regulation
data: gw_dgtmd type TY_DGTMD.
data: zpres(100) type c.
data: gw_dgtmd2 type TY_DGTMD.
data: zpres2(100) type c.
data: gv_ppline TYPE i VALUE 1. "ERDK905512
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FORM ENTRY USING RETURN_CODE US_SCREEN.
clear hxtab.
CLEAR RETCODE.
XSCREEN = US_SCREEN.
PERFORM PROCESSING USING US_SCREEN.
CASE RETCODE.
WHEN 0.
RETURN_CODE = 0.
WHEN 3.
RETURN_CODE = 3.
WHEN OTHERS.
RETURN_CODE = 1.
ENDCASE.
ENDFORM. "ENTRY
*----
*
FORM PROCESSING *
*----
*
........ *
*----
*
--> PROC_SCREEN *
*----
*
FORM PROCESSING USING PROC_SCREEN.
PERFORM INITIALIZE.
PERFORM GET_DATA.
perform get_lanc.
perform fill_tlvol.
*.. Invoice items should be combined on invoice document and cerficitate
*.. of analysis when:
*.. 1) The code is the same
*.. 2) The quantity unit of measure is the same
*.. 3) The net weight unit of measure is the same and
*.. 4) The unit price and other pricing conditions are the same
IF TNAPR-FONAM EQ CON_ZINVOICEGEN OR
tnapr-fonam eq CON_ZINVOICEEXP or
tnapr-fonam eq CON_ZINVOICENA or
TNAPR-FONAM EQ CON_ZCERTANALGEN.
PERFORM COMBINE_ITEM_LINES.
ENDIF.
IF VBDKR-UVALL NE SPACE OR VBDKR-UVALS NE SPACE OR
VBDKR-UVPRS NE SPACE.
IF PROC_SCREEN = SPACE.
RETCODE = 3.
IF VBDKR-UVALL NE SPACE OR VBDKR-UVALS NE SPACE.
SYST-MSGNO = '201'.
SYST-MSGID = 'VN'.
SYST-MSGTY = 'I'.
PERFORM PROTOCOL_UPDATE.
ENDIF.
IF VBDKR-UVPRS NE SPACE.
SYST-MSGNO = '200'.
SYST-MSGID = 'VN'.
SYST-MSGTY = 'I'.
PERFORM PROTOCOL_UPDATE.
ENDIF.
ELSE.
IF VBDKR-UVALL NE SPACE OR VBDKR-UVALS NE SPACE.
MESSAGE I201.
ENDIF.
IF VBDKR-UVPRS NE SPACE.
MESSAGE I200.
ENDIF.
ENDIF.
ENDIF.
CHECK RETCODE = 0.
PERFORM FORM_OPEN USING PROC_SCREEN VBDKR-LAND1.
CHECK RETCODE = 0.
PERFORM TITLE_PRINT.
PERFORM WRITE_FORM USING 'DESC' 'DESC_HEADER'.
*.. Description of goods
if nast-kschl ne 'ZINE'.
PERFORM WRITE_FORM_LINES TABLES IT_DOGO USING 'DESC'.
endif.
*.. Carriage 1 by
if nast-spras ne 'U'.
PERFORM WRITE_FORM_LINES TABLES IT_CAR1 USING 'CARRIEGE'.
endif.
*.. Carriage 2 by
if all_ztad = ''.
if nast-spras ne 'U'.
PERFORM WRITE_FORM_LINES TABLES IT_CAR2 USING 'CARRG2'.
endif.
endif.
*.. Place of discharge
if all_ztad = ''.
PERFORM WRITE_FORM_LINES TABLES IT_PLDI USING 'CARRG3'.
endif.
*.. Final destination
PERFORM WRITE_FORM_LINES TABLES IT_FIDE USING 'FIN_DEST'.
*.. From
PERFORM WRITE_FORM_LINES TABLES IT_FROM USING 'FROM'.
*.. Via
if nast-spras ne 'U'.
PERFORM WRITE_FORM_LINES TABLES IT_VIA USING 'VIA'.
endif.
IF TNAPR-FONAM EQ CON_ZFORWINSTR.
*.... Shipping date
PERFORM WRITE_FORM_LINES TABLES IT_SHDA USING 'SHIP_DAT'.
ELSEIF TNAPR-FONAM EQ CON_ZWAYBCMRPORI.
*.... Shipping date
PERFORM WRITE_FORM_LINES TABLES IT_SHDA USING 'TEXT_6'.
*.... Carrier - Removed by IHo 2005.07.11
PERFORM WRITE_FORM_LINES TABLES IT_CARR USING 'AGENT'.
*.... Carrier
PERFORM WRITE_FORM_LINES TABLES IT_CARR USING 'TEXT_5'.
*.... Wagon number
PERFORM WRITE_FORM_LINES TABLES IT_WANO USING 'TEXT_7'.
ELSE.
*.... Shipping date
PERFORM WRITE_FORM_LINES TABLES IT_SHDA USING 'DEST'.
ENDIF.
*.. Shipping marks
if memo = ''.
if nast-spras ne 'U'.
PERFORM WRITE_FORM_LINES TABLES IT_SHMA USING 'MARKING'.
endif.
endif.
PERFORM ITEM_PRINT.
CHECK RETCODE = 0.
PERFORM END_PRINT.
CHECK RETCODE = 0.
PERFORM FORM_CLOSE.
CHECK RETCODE = 0.
ENDFORM. "PROCESSING
***********************************************************************
S U B R O U T I N E S *
***********************************************************************
*----
*
FORM CHECK_REPEAT *
*----
*
A text is printed, if it is a repeat print for the document. *
*----
*
FORM CHECK_REPEAT.
*erform initialize. " Subho
CLEAR REPEAT.
SELECT * INTO *NAST FROM NAST WHERE KAPPL = NAST-KAPPL
AND OBJKY = NAST-OBJKY
AND KSCHL = NAST-KSCHL
AND SPRAS = NAST-SPRAS
AND PARNR = NAST-PARNR
AND PARVW = NAST-PARVW
AND NACHA BETWEEN '1' AND '4'.
CHECK *NAST-VSTAT = '1'.
REPEAT = 'X'.
EXIT.
ENDSELECT.
ENDFORM. "CHECK_REPEAT
*----
*
FORM END_PRINT *
*----
*
*
*----
*
FORM END_PRINT.
data: zauart like vbak-auart.
data: zwaerk like komk-waerk.
data: zfkwrt like komk-fkwrt.
if 1 = 0. "vbdkr-vkorg = 'K208'.
CALL FUNCTION 'WRITE_FORM'
EXPORTING
ELEMENT = 'SUPPLEMENT_TEXT'
EXCEPTIONS
ELEMENT = 1
WINDOW = 2.
IF SY-SUBRC NE 0.
PERFORM PROTOCOL_UPDATE.
ENDIF.
else.
break icllahti.
IF TNAPR-FONAM EQ CON_ZINVOICEGEN OR " Only for invoice
TNAPR-FONAM EQ CON_ZCOMINVGEN OR
tnapr-fonam eq CON_ZINVOICENA or
tnapr-fonam eq CON_ZINVOICEEXP or
TNAPR-FONAM EQ CON_ZREBINVGEN. " PN20020124
CALL FUNCTION 'CONTROL_FORM' " Keep together
EXPORTING
COMMAND = 'PROTECT'.
clear zauart.
select single auart into zauart from vbak where
vbeln = vbdkr-vbeln_vauf.
if zauart = 'ZKB'.
clear komk-supos.
loop at tkomv where kschl = 'ZPA1'. "is this right condition?
komk-supos = komk-supos + tkomv-kbetr. "is this right field?
endloop.
loop at tkomv where kschl = 'ZTX3'. "is this right condition?
komk-supos = komk-supos + tkomv-kbetr. "is this right field?
endloop.
loop at tkomv where kschl = 'ZTX1'. "is this right condition?
komk-supos = komk-supos - tkomv-kbetr. "is this right field?
endloop.
komk-fkwrt = komk-supos.
endif.
if vbdkr-fkart = 'WIA' and nast-kschl(3) = 'ZRD'.
komk-fkwrt = vbdkr-netwr.
endif.
if vbdkr-fkart = 'ZF8' and komk-fkwrt = 0. "special proforma case
loop at tkomv where kschl = 'ZPR0'.
komk-fkwrt = komk-fkwrt + tkomv-kwert.
endloop.
endif.
if nast-kschl = 'ZNI_'.
komk-supos = komk-supos + r_netwr.
endif.
PERFORM HEADER_PRICE_PRINT. " Print tax amount
clear zkatr2.
select single katr2 into zkatr2 from kna1 where
kunnr = vbdkr-kunag.
if vbdkr-bukrs = 'NO11' and vbdkr-vkorg = 'NO11' and zkatr2 = '2A'.
zwaerk = komk-waerk.
zfkwrt = komk-fkwrt.
*get currency rate
CALL FUNCTION 'CONVERT_TO_LOCAL_CURRENCY'
EXPORTING
DATE = vbdkr-fkdat
FOREIGN_AMOUNT = komk-fkwrt
FOREIGN_CURRENCY = komk-waerk
LOCAL_CURRENCY = 'EUR'
IMPORTING
LOCAL_AMOUNT = komk-fkwrt
EXCEPTIONS
NO_RATE_FOUND = 1
OVERFLOW = 2
NO_FACTORS_FOUND = 3
NO_SPREAD_FOUND = 4
DERIVED_2_TIMES = 5
OTHERS = 6.
if sy-subrc = 0.
komk-waerk = 'EUR'.
CALL FUNCTION 'WRITE_FORM' " Print Total amount
EXPORTING
ELEMENT = 'END_VALUES_NOK'.
endif.
komk-waerk = zwaerk.
komk-fkwrt = zfkwrt.
elseif vbdkr-bukrs = 'NL10' and vbdkr-vkorg = 'NL10' and zkatr2 = '2B'.
zwaerk = komk-waerk.
zfkwrt = komk-fkwrt.
*get currency rate
CALL FUNCTION 'CONVERT_TO_LOCAL_CURRENCY'
EXPORTING
DATE = vbdkr-fkdat
FOREIGN_AMOUNT = komk-fkwrt
FOREIGN_CURRENCY = komk-waerk
LOCAL_CURRENCY = 'GBP'
IMPORTING
LOCAL_AMOUNT = komk-fkwrt
EXCEPTIONS
NO_RATE_FOUND = 1
OVERFLOW = 2
NO_FACTORS_FOUND = 3
NO_SPREAD_FOUND = 4
DERIVED_2_TIMES = 5
OTHERS = 6.
if sy-subrc = 0.
komk-waerk = 'GBP'.
CALL FUNCTION 'WRITE_FORM' " Print Total amount
EXPORTING
ELEMENT = 'END_VALUES_NOK'.
endif.
komk-waerk = zwaerk.
komk-fkwrt = zfkwrt.
***********
else.
if nast-kschl = 'ZNI_'.
zfkwrt = komk-fkwrt.
komk-fkwrt = s_netwr + t_netwr.
CALL FUNCTION 'WRITE_FORM' " Print Total amount
EXPORTING
ELEMENT = 'END_VALUES'.
komk-fkwrt = zfkwrt.
else.
CALL FUNCTION 'WRITE_FORM' " Print Total amount
EXPORTING
ELEMENT = 'END_VALUES'.
endif.
endif.
CALL FUNCTION 'CONTROL_FORM' " End keep together
EXPORTING
COMMAND = 'ENDPROTECT'.
if nast-kschl = 'ZNI_'.
CALL FUNCTION 'WRITE_FORM' " Print Total amount
EXPORTING
ELEMENT = 'END_VALUES2'.
else.
CALL FUNCTION 'WRITE_FORM' " Print Total amount
EXPORTING
ELEMENT = 'END_VALUES2'.
endif.
PERFORM WRITE_FORM_LINES TABLES IT_PAYM USING 'MAIN'.
if domestic = ''.
select single * from stxh where tdname = vbdkr-tdname and tdobject = 'VBBK' and
tdid = 'ZY02' and tdspras = nast-spras.
if sy-subrc ne 0.
domestic = 'S'.
endif.
endif.
PERFORM WRITE_FORM USING 'MAIN' 'SUPPLEMENT_TEXT'.
if domestic = 'S'. "restore value
clear domestic.
endif.
PERFORM WRITE_FORM_LINES TABLES IT_CERT USING 'MAIN'.
PERFORM WRITE_FORM USING 'MAIN' 'VAT_NUMBER'.
ELSE.
CALL FUNCTION 'WRITE_FORM'
EXPORTING
ELEMENT = 'SUPPLEMENT_TEXT'
EXCEPTIONS
ELEMENT = 1
WINDOW = 2.
IF SY-SUBRC NE 0.
PERFORM PROTOCOL_UPDATE.
ENDIF.
*NA special
endif.
if nast-kschl = 'ZNIN'.
if vbdkr-fkart = 'ZF5' or vbdkr-fkart = 'ZF8'.
CALL FUNCTION 'WRITE_FORM'
EXPORTING
ELEMENT = 'PROFORMA_SIGNATURE'
EXCEPTIONS
ELEMENT = 1
WINDOW = 2.
endif.
endif.
ENDIF.
ENDFORM. "END_PRINT
*----
*
FORM FORM_CLOSE *
*----
*
End of printing the form *
*----
*
FORM FORM_CLOSE.
*perform initialize. " Subho
CALL FUNCTION 'CLOSE_FORM'
EXCEPTIONS
OTHERS = 1.
IF SY-SUBRC NE 0.
RETCODE = SY-SUBRC.
PERFORM PROTOCOL_UPDATE.
ENDIF.
SET COUNTRY SPACE.
ENDFORM. "FORM_CLOSE
*----
*
FORM FORM_OPEN *
*----
*
Start of printing the form *
*----
*
--> US_SCREEN Output on screen *
' ' = Printer *
'X' = Screen *
--> US_COUNTRY County for telecommunication and SET COUNTRY *
*----
*
FORM FORM_OPEN USING US_SCREEN US_COUNTRY.
*perform initialize. " Subho
INCLUDE RVADOPFO.
ENDFORM. "FORM_OPEN
*----
*
FORM TITLE_PRINT *
*----
*
Printing of the form title depending of the field VBTYP *
*----
*
FORM TITLE_PRINT.
DATA: IT_TEXTPOOL LIKE TEXTPOOL OCCURS 0 WITH HEADER LINE.
*.. Check to see wheter or not a variable title is specified
IMPORT TITLE_1 TITLE_2 FROM MEMORY ID 'Variable layout set title'.
IF SY-SUBRC NE 0.
*.. Read the program text in the specified language
SET LANGUAGE NAST-SPRAS.
CASE TNAPR-FONAM.
WHEN CON_ZINVOICEEXP.
SELECT SINGLE TITLE_1 TITLE_2
INTO (TITLE_1, TITLE_2)
FROM ZED_2
WHERE VBTYP EQ VBDKR-VBTYP
AND VBART EQ VBDKR-FKART
AND KSCHL EQ NAST-KSCHL
AND LANGU EQ NAST-SPRAS.
WHEN CON_ZINVOICENA.
SELECT SINGLE TITLE_1 TITLE_2
INTO (TITLE_1, TITLE_2)
FROM ZED_2
WHERE VBTYP EQ VBDKR-VBTYP
AND VBART EQ VBDKR-FKART
AND KSCHL EQ NAST-KSCHL
AND LANGU EQ NAST-SPRAS.
ENDCASE.
SET LANGUAGE SPACE.
ELSE.
FREE MEMORY ID 'Variable layout set title'.
ENDIF.
Begin change of Amol - 13-July-2007 - AM#3514
clear title_2.
End change of Amol - 13-July-2007 - AM#3514
ENDFORM. "TITLE_PRINT
*----
*
FORM GET_DATA *
*----
*
General provision of data for the form *
*----
*
FORM GET_DATA.
data: sbjahr like bkpf-gjahr.
data: zauart like vbak-auart.
data: line_count type i.
data: stl type i.
DATA: BEGIN OF STWTAB occurs 0,
stawn TYPE marc-stawn,
END OF STWTAB.
CALL FUNCTION 'RV_PRICE_PRINT_REFRESH'
TABLES
TKOMV = TKOMV.
CLEAR KOMK.
CLEAR KOMP.
clear zablad.
clear street2.
clear street3.
clear street4.
clear fname.
clear lname.
clear no_weight.
clear xz5.
clear xz5t.
clear xz5f.
clear destctry.
clear origlist1.
clear origlist2.
clear tdkmein.
excl_cpono = 'X'.
carr1 = 'X'.
IF NAST-OBJKY+10(6) NE SPACE.
VBCO3-VBELN = NAST-OBJKY+16(10).
ELSE.
VBCO3-VBELN = NAST-OBJKY.
ENDIF.
VBCO3-MANDT = SY-MANDT.
VBCO3-SPRAS = NAST-SPRAS.
VBCO3-KUNDE = NAST-PARNR.
VBCO3-PARVW = NAST-PARVW.
select single * from vbpa where vbeln = vbco3-vbeln and
parvw = 'ZC'.
if not vbpa-pernr is initial.
select single ename into iernam from pa0001 where pernr = vbpa-pernr.
endif.
*
clear excl_dlvno.
CALL FUNCTION 'RV_BILLING_PRINT_VIEW'
EXPORTING
COMWA = VBCO3
IMPORTING
KOPF = VBDKR
TABLES
POS = TVBDPR.
if sy-subrc = 0.
SELECT SINGLE ablad
INTO zablad
FROM VBPA
WHERE VBELN EQ vbdkr-VBELN
AND POSNR EQ '000000'
AND PARVW EQ 'WE'.
clear zauart.
select single auart into zauart from vbak
where vbeln = vbdkr-vbeln_vauf.
if zauart = 'ZKE'.
excl_dlvno = 'X'.
endif.
if iernam is initial.
select single a~name_text into iernam from
adrp as a inner join usr21 as u
on upersnumber = apersnumber
where u~bname = vbdkr-ernam.
endif.
refresh vbtab.
all_ztad = 'X'.
loop at tvbdpr.
clear vbtab.
vbtab-vbeln = tvbdpr-vgbel.
append vbtab.
*first line item
if ferdat is initial.
select single erdat into ferdat from vbak where vbeln = tvbdpr-vbeln_vauf.
endif.
*first po date
if f_podate is initial.
select single bstdk into f_podate from vbak where vbeln = tvbdpr-vbeln_vauf.
endif.
if tvbdpr-pstyv ne 'ZTAD'.
clear all_ztad.
endif.
*first bname
if orderer is initial.
select single bname into orderer from vbak where vbeln = tvbdpr-vbeln_vauf.
endif.
if tvbdpr-bstnk is initial.
select single bstnk into tvbdpr-bstnk from vbak where vbeln = tvbdpr-vbeln_vauf.
modify tvbdpr.
endif.
if tvbdpr-bstdk is initial or tvbdpr-bstdk = '00000000'.
select single audat into tvbdpr-bstdk from vbak where vbeln = tvbdpr-vbeln_vauf.
modify tvbdpr.
endif.
endloop.
if all_ztad = 'X' or vbdkr-vsart = 'ZG2' or vbdkr-vsart = 'ZIG'
or vbdkr-vsart = 'ZL2' or vbdkr-vsart = 'ZRE'.
clear carr1.
endif.
*remove duplicates
sort vbtab by vbeln ascending.
delete adjacent duplicates from vbtab comparing vbeln.
describe table vbtab lines sorders.
if sorders > 1.
mult_ord = 'X'.
endif.
if vbdkr-kunre ne vbdkr-kunag.
cp2 = 'X'.
endif.
if cp2 = 'X' and vbdkr-kunag ne vbdkr-kunre.
cp3 = 'X'.
endif.
if nast-kschl = 'ZNIN'. "exclude sold-to-party
cp3 = 'X'. "print invoiceing party
cp2 = 'X'.
endif.
perform get_sdate.
perform get_final.
if not vbdkr-adrnr_we is initial.
CALL FUNCTION 'ADDR_GET_COMPLETE'
EXPORTING
ADDRNUMBER = vbdkr-adrnr_we
IMPORTING
ADDR1_COMPLETE = zadc2
EXCEPTIONS
PARAMETER_ERROR = 1
ADDRESS_NOT_EXIST = 2
INTERNAL_ERROR = 3
OTHERS = 4.
IF SY-SUBRC = 0.
clear street2_we. "EADK900606
clear street3_we. "EADK900606
clear street4_we. "EADK900606
clear name_co_we. "EADK900606
LOOP AT zadc2-ADDR1_TAB INTO ADDR1_WA.
MOVE ADDR1_WA-NATION TO ADDR1-NATION.
MOVE-CORRESPONDING ADDR1_WA-DATA TO ADDR1.
if street2_we is initial.
street2_we = addr1-str_suppl1.
endif.
if street3_we is initial.
street3_we = addr1-str_suppl2.
endif.
if street4_we is initial.
street4_we = addr1-str_suppl3.
endif.
if name_co_we is initial.
name_co_we = addr1-name_co.
endif.
APPEND ADDR1.
ENDLOOP.
ENDIF.
endif.
check not vbdkr-adrnr is initial.
CALL FUNCTION 'ADDR_GET_COMPLETE'
EXPORTING
ADDRNUMBER = vbdkr-adrnr
IMPORTING
ADDR1_COMPLETE = zadc
EXCEPTIONS
PARAMETER_ERROR = 1
ADDRESS_NOT_EXIST = 2
INTERNAL_ERROR = 3
OTHERS = 4.
IF SY-SUBRC = 0.
LOOP AT zadc-ADDR1_TAB INTO ADDR1_WA.
MOVE ADDR1_WA-NATION TO ADDR1-NATION.
MOVE-CORRESPONDING ADDR1_WA-DATA TO ADDR1.
if street2 is initial.
street2 = addr1-str_suppl1.
endif.
if street3 is initial.
street3 = addr1-str_suppl2.
endif.
if street4 is initial.
street4 = addr1-str_suppl3.
endif.
if name_co is initial.
name_co = addr1-name_co.
endif.
APPEND ADDR1.
ENDLOOP.
ENDIF.
if not vbdkr-pfach is initial and vbdkr-pfort is initial.
if not vbdkr-ort01 is initial.
vbdkr-pfort = vbdkr-ort01.
endif.
endif.
endif.
************************************************************************
************************************************************************
12/2/99 - yhe
*
Check whether the billing doc is based on a delivery
or based on a sales order.
In both cases find the delivery number, delivery item and shipping
point that corresponds to the first item in the billing document.
*
This delivery number and delivery item will be used to find text
fields to be printed on billing doc related documents
*
In case the billing doc is based on a sales order,
use the document reference number of the first item in the billing
doc to find the corresponding delivery nbr and item via the
document flow.
************************************************************************
READ TABLE TVBDPR INDEX 1.
Read the reference doc code from the billing item view
SELECT VGTYP VSTEL
INTO (Z_REF_DOC_CODE, Z_SHIP_POINT)
FROM VBRP
WHERE VBELN = VBDKR-VBELN
AND POSNR = TVBDPR-POSNR.
EXIT.
ENDSELECT.
When the reference doc code is 'J' (delivery) or 'T'(return delivery)
take the delivery number from the billing item view.
IF Z_REF_DOC_CODE EQ 'J' OR Z_REF_DOC_CODE EQ 'T'. " delivery
MOVE 'DEL' TO Z_REF_DOC_TYPE.
MOVE TVBDPR-VBELN_VL TO Z_DELIV_NO.
MOVE TVBDPR-POSNR_VL TO Z_DELIV_ITEM_NO.
SELECT SINGLE * FROM LIKP
WHERE VBELN = Z_DELIV_NO.
MOVE LIKP-VSTEL TO Z_SHIP_POINT.
ELSEIF Z_REF_DOC_CODE EQ 'L' OR Z_REF_DOC_CODE EQ 'K'.
MOVE 'DEL' TO Z_REF_DOC_TYPE.
ELSE. " sales order
MOVE 'ORD' TO Z_REF_DOC_TYPE.
In case of a credit memo ('O') or a credit memo cancellation ('S')
and a delivery is done, then this will be a Return delivery 'T'.
A distiction is made because when a credit note for a return is
based on a sales order and no distinction is made, there is a
possibility that the system does not find the correct delivery. The
doc flow (vbfa) will contain a link between the sales order (on which
the invoice is based and on which the return is based) and both the
delivery and the return delivery.
IF VBDKR-VBTYP EQ 'O' OR VBDKR-VBTYP EQ 'S'.
SELECT VBELN POSNN
INTO (Z_DELIV_NO, Z_DELIV_ITEM_NO)
FROM VBFA
WHERE VBELV EQ TVBDPR-VGBEL
AND POSNV EQ TVBDPR-VGPOS
AND VBTYP_N EQ 'T'.
EXIT.
ENDSELECT.
ELSE.
SELECT VBELN POSNN
INTO (Z_DELIV_NO, Z_DELIV_ITEM_NO)
FROM VBFA
WHERE VBELV EQ TVBDPR-VGBEL
AND POSNV EQ TVBDPR-VGPOS
AND VBTYP_N EQ 'J'.
EXIT.
ENDSELECT.
ENDIF.
SELECT SINGLE * FROM LIKP
WHERE VBELN = Z_DELIV_NO.
MOVE LIKP-VSTEL TO Z_SHIP_POINT.
ENDIF.
In certain cases, the foreign trade data is not filled in the
structure vbdkr (see reference billing doc module in billing view).
This will be done hereafter.
PERFORM FOREIGN_TRADE_DATA.
lv_tdname = vbdkr-vbeln_vl.
PERFORM READ_TEXT_INLINE USING 'ZZ73' 'E' LV_TDNAME 'VBBK'.
gv_ppline = 1. "ERDK905512
LOOP AT tvbdpr. "ERDK905512
PERFORM GET_NUMBER_OF_PALLETS_PACK USING SPACE. "ERDK905512
gv_ppline = gv_ppline + 1. "ERDK905512
ENDLOOP. "ERDK905512
read table tvbdpr index 1.
lv_tdname = tvbdpr-tdname.
PERFORM READ_TEXT_INLINE USING 'ZE05' 'E' LV_TDNAME 'VBBP'."zy90
if sy-subrc = 0.
perform IBCS_FROM_TEXT changing gv_noibcs.
else.
gv_noibcs = 0.
endif.
PERFORM SENDER.
PERFORM CHECK_REPEAT.
PERFORM GET_HEADER_PRICES.
PERFORM GET_ADDITIONAL_VALUES. " TV 28/01/1999
PERFORM GET_NUMBER_OF_PALLETS_PACK USING SPACE. " TV 23/02/1999
PERFORM DESTINATION_COUNTRY USING Z_SHIP_POINT. " TV 03/03/1999
IF TNAPR-FONAM EQ CON_ZWAYBCMRPORI or vbdkr-vkorg = 'K301'.
if vbdkr-vkorg = 'K301'.
******PERFOrM GET_DESCRIPTION_OF_GOODS_K301.
PERFOrM GET_DESCRIPTION_OF_GOODS_NEW.
else.
PERFOrM GET_DESCRIPTION_OF_GOODS_WAYB.
endif.
ELSE.
PERFORM GET_DESCRIPTION_OF_GOODS. " TV 25/03/1999
ENDIF.
IF TNAPR-FONAM EQ CON_ZINVOICEGEN or
TNAPR-FONAM EQ CON_ZINVOICENA or
tnapr-fonam eq CON_ZINVOICEEXP.
PERFORM GET_PAYMENT_TEXT. " TV 25/03/1999
PERFORM GET_CERTIFICATION_CLAUSE. " TV 26/03/1999
PERFORM GET_DUE_DATE. " TV 14/04/1999
ENDIF.
PERFORM GET_COUNTRY4 USING VBDKR-LAND1" TV 25/11/1999
'ZY09'
CHANGING GV_LANDX_SP
GV_LANDK_SP.
PERFORM GET_COUNTRY4 USING VBDKR-LAND1_WE
'ZY10'
CHANGING GV_LANDX_SH
GV_LANDK_SH.
PERFORM GET_LC_COUNTRIES. " TV 25/11/1999
PERFORM GET_BILLING_DATE. " TV 02/05/1999
if carr1 ='X'.
PERFORM GET_CARRIAGE_1. " TV 10/05/1999
endif.
if all_ztad ne 'X'.
PERFORM GET_CARRIAGE_2. " TV 10/05/1999
endif.
PERFORM GET_PLACE_OF_DISCHARGE. " TV 10/05/1999
PERFORM GET_FINAL_DESTINATION. " TV 10/05/1999
PERFORM GET_FROM. " TV 10/05/1999
PERFORM GET_VIA. " TV 10/05/1999
PERFORM GET_SHIPPING_MARKS. " TV 10/05/1999
PERFORM GET_SHIPPING_DATE. " TV 10/05/1999
IF TNAPR-FONAM EQ CON_ZWAYBCMRPORI.
PERFORM GET_CARRIER.
PERFORM GET_WAGON_NO.
ENDIF.
IF TNAPR-FONAM EQ CON_ZCOMINVGEN.
PERFORM GET_PERIOD.
ENDIF.
PERFORM GET_COUNTRY_OF_ORIGIN.
***xtotal
clear xtotal.
loop at tkomv where kschl = 'PR00'.
xtotal = xtotal + tkomv-kwert.
endloop.
select single * from usr03 where bname = sy-uname.
if sy-subrc = 0.
fname = usr03-name1.
lname = usr03-name2.
else.
select single
aname_first aname_last
into
(fname,lname)
from
adrp as a inner join usr21 as u
on upersnumber = apersnumber
where
u~bname = sy-uname.
endif.
***
perform check_tax_text_relevancy.
refresh stwtab.
loop at tvbdpr where stawn ne ''.
clear stwtab.
stwtab-stawn = tvbdpr-stawn.
append stwtab.
endloop.
sort stwtab ascending.
delete adjacent duplicates from stwtab.
describe table stwtab lines stl.
if stl > 1.
multihs = 'X'.
else.
clear multihs.
endif.
read table tvbdpr index 1.
select single * from stxh where tdid = 'ZZ95' and
tdobject = 'VBBK' and tdname = vbdkr-tdname.
if sy-subrc = 0.
xzz95 = 'X'.
endif.
clear ztraid.
select single traid into ztraid from likp where traid ne '' and
vbeln = vbdkr-vbeln_vl.
clear: conseal,conseal2,conseal3,conseal4,conseal5,conseal6,conseal7,
conseal8.
if all_ztad = ''.
tds = nast-spras.
tdi = 'ZE02'.
tdo = 'VBBP'.
concatenate vbdkr-vbeln '%' into tdn.
select single * from stxh where tdname like tdn and tdspras = tds
and tdid = tdi and tdobject = tdo.
if sy-subrc ne 0.
select single * from stxh where tdname like tdn and tdspras = 'D'
and tdid = tdi and tdobject = tdo.
endif.
if sy-subrc ne 0.
select single * from stxh where tdname like tdn and tdspras = 'E'
and tdid = tdi and tdobject = tdo.
endif.
if sy-subrc = 0.
refresh tlin.
CALL FUNCTION 'READ_TEXT'
EXPORTING
CLIENT = SY-MANDT
ID = stxh-tdid
LANGUAGE = stxh-tdspras
NAME = stxh-tdname
OBJECT = stxh-tdobject
ARCHIVE_HANDLE = 0
LOCAL_CAT = ' '
IMPORTING
HEADER =
TABLES
LINES = tlin
EXCEPTIONS
ID = 1
LANGUAGE = 2
NAME = 3
NOT_FOUND = 4
OBJECT = 5
REFERENCE_CHECK = 6
WRONG_ACCESS_TO_ARCHIVE = 7
OTHERS = 8
.
IF SY-SUBRC = 0.
loop at tlin where tdline ne ''.
if conseal = ''.
conseal = tlin-tdline.
elseif conseal2 = ''.
conseal2 = tlin-tdline.
elseif conseal3 = ''.
conseal3 = tlin-tdline.
elseif conseal4 = ''.
conseal4 = tlin-tdline.
elseif conseal5 = ''.
conseal5 = tlin-tdline.
elseif conseal6 = ''.
conseal6 = tlin-tdline.
elseif conseal7 = ''.
conseal7 = tlin-tdline.
elseif conseal8 = ''.
conseal8 = tlin-tdline.
endif.
endloop.
ENDIF.
endif.
endif.
clear line_count.
describe table tvbdpr lines line_count.
if line_count = 1.
no_weight = 'X'.
endif.
if nast-kschl = 'ZCIN' and vbdkr-vkorg = 'FI18'.
if nast-spras = 'E' or nast-spras = 'U'.
no_weight = 'X'.
endif.
endif.
*contact person
clear vbpa.
select single * from vbpa where vbeln = vbdkr-vbeln and
parvw = 'Z5'.
if not vbpa-adrnr is initial.
CALL FUNCTION 'ADDR_GET_COMPLETE'
EXPORTING
ADDRNUMBER = vbpa-adrnr
IMPORTING
ADDR1_COMPLETE = zadc2
EXCEPTIONS
PARAMETER_ERROR = 1
ADDRESS_NOT_EXIST = 2
INTERNAL_ERROR = 3
OTHERS = 4.
IF SY-SUBRC = 0.
LOOP AT zadc2-ADDR1_TAB INTO ADDR1_WA.
if xz5 is initial.
MOVE ADDR1_WA-data-name1 to xz5.
endif.
ENDLOOP.
LOOP AT zadc2-ADtel_TAB INTO ADtel.
if xz5t is initial.
MOVE ADtel-ADTEL-TELNR_LONG to xz5t.
endif.
ENDLOOP.
LOOP AT zadc2-ADtel_TAB INTO ADtel.
if xz5t is initial.
MOVE ADtel-ADTEL-TELNR_LONG to xz5t.
endif.
ENDLOOP.
LOOP AT zadc2-ADfax_TAB INTO ADfax.
if xz5f is initial.
MOVE ADfax-ADFAX-FAXNR_LONG to xz5f.
endif.
ENDLOOP.
ENDIF.
else.
select single ename into xz5 from pa0001 where
pernr = vbpa-pernr.
*mistä puhelin & fax?
endif.
*read z2 partner
if vbdkr-vkorg = 'K208'.
clear partner_z2.
select single * from vbpa where vbeln = vbdkr-vbeln and
parvw = 'Z2'.
if sy-subrc = 0.
partner_z2 = 'X'.
clear zadc.
check not vbpa-adrnr is initial.
CALL FUNCTION 'ADDR_GET_COMPLETE'
EXPORTING
ADDRNUMBER = vbpa-adrnr
IMPORTING
ADDR1_COMPLETE = zadc
EXCEPTIONS
PARAMETER_ERROR = 1
ADDRESS_NOT_EXIST = 2
INTERNAL_ERROR = 3
OTHERS = 4.
IF SY-SUBRC = 0.
LOOP AT zadc-ADDR1_TAB INTO ADDR1_WA.
MOVE ADDR1_WA-NATION TO ADDR1-NATION.
MOVE-CORRESPONDING ADDR1_WA-DATA TO ADDR1.
z2_name1 = addr1-name1.
z2_name2 = addr1-name2.
z2_name3 = addr1-name3.
z2_name4 = addr1-name4.
z2_ort01 = addr1-city1.
z2_pstlz = addr1-poST_CODE1.
z2_stras = addr1-street.
select single landk into z2_land11 from t005 where
land1 = addr1-country.
select single landx into z2_landd from t005t where
land1 = addr1-country and spras = nast-spras.
ENDLOOP.
ENDIF.
endif.
endif.
*read z3 partner
if cp3 = 'X'.
clear partner_z3.
select single * from vbpa where vbeln = vbdkr-vbeln and
parvw = 'AG'.
if sy-subrc = 0.
partner_z3 = 'X'.
clear zadc.
check not vbpa-adrnr is initial.
CALL FUNCTION 'ADDR_GET_COMPLETE'
EXPORTING
ADDRNUMBER = vbpa-adrnr
IMPORTING
ADDR1_COMPLETE = zadc
EXCEPTIONS
PARAMETER_ERROR = 1
ADDRESS_NOT_EXIST = 2
INTERNAL_ERROR = 3
OTHERS = 4.
IF SY-SUBRC = 0.
LOOP AT zadc-ADDR1_TAB INTO ADDR1_WA.
MOVE ADDR1_WA-NATION TO ADDR1-NATION.
MOVE-CORRESPONDING ADDR1_WA-DATA TO ADDR1.
z3_name1 = addr1-name1.
z3_name2 = addr1-name2.
z3_name3 = addr1-name3.
z3_name4 = addr1-name4.
z3_ort01 = addr1-city1.
z3_pstlz = addr1-poST_CODE1.
z3_stras = addr1-street.
select single landk into z3_land11 from t005 where
land1 = addr1-country.
select single landx into z3_landd from t005t where
land1 = addr1-country and spras = nast-spras.
ENDLOOP.
ENDIF.
endif.
endif.
fill address key --> necessary for emails
ADDR_KEY-ADDRNUMBER = VBDKr-ADRNR.
ADDR_KEY-PERSNUMBER = VBDKr-ADRNP.
ADDR_KEY-ADDR_TYPE = VBDKr-ADDRESS_TYPE.
clear adrein.
clear adre.
select single * from vbpa where vbeln = vbdkr-vbeln and
parvw = 'RE'.
if sy-subrc = 0.
adrein-addrnumber = vbpa-adrnr.
CALL FUNCTION 'ADDR_GET'
EXPORTING
ADDRESS_SELECTION = adrein
ADDRESS_GROUP =
READ_SADR_ONLY = ' '
READ_TEXTS = ' '
IMPORTING
ADDRESS_VALUE =
ADDRESS_ADDITIONAL_INFO =
RETURNCODE =
ADDRESS_TEXT =
SADR = adre
TABLES
ADDRESS_GROUPS =
ERROR_TABLE =
VERSIONS =
EXCEPTIONS
PARAMETER_ERROR = 1
ADDRESS_NOT_EXIST = 2
VERSION_NOT_EXIST = 3
INTERNAL_ERROR = 4
OTHERS = 5
.
IF SY-SUBRC = 0.
PERFORM GET_COUNTRY2 USING adre-LAND1" TV 25/11/1999
CHANGING GV_LANDX_RE
GV_LANDK_RE.
endif.
endif.
if vbdkr-fkart = 'ZG2' or vbdkr-fkart = 'ZIG' or vbdkr-fkart = 'ZL2' or
vbdkr-fkart = 'ZRE'.
memo = 'X'.
endif.
if eikp is initial.
clear eikp.
SELECT SINGLE *
FROM eikp WHERE exnum = vbdkr-exnum.
if eikp is initial.
select single * from eikp where refnr = vbdkr-vbeln.
if eikp is initial.
eikp-aland = vbdkr-landtx.
endif.
endif.
endif.
clear bland.
select single land1 into bland from vbpa where vbeln = vbdkr-vbeln and
posnr = '000000' and parvw = 'BP'.
if bland is initial.
select single land1 into bland from vbpa where vbeln = vbdkr-vbeln and
parvw = 'BP'.
endif.
if bland is initial.
select single land1 into bland from vbpa where vbeln = vbdkr-vbeln and
posnr = '000000' and parvw = 'AG'.
endif.
if bland is initial.
select single land1 into bland from vbpa where vbeln = vbdkr-vbeln and
parvw = 'AG'.
endif.
if bland is initial.
bland = vbdkr-land1.
endif.
if eikp-aland ne '' and eikp-aland = vbdkr-land1.
domestic = 'X'.
if bland = 'FI' and vbdkr-bukrs = 'FI18'.
domes_fi = 'X'.
endif.
if bland = 'NO' and vbdkr-bukrs = 'NO11'.
norway = 'X'.
endif.
endif.
LWA_INVADR_IN-NAME = 'VBDKL-VKORG'.
LWA_INVADR_IN-VALUE = vbdkr-BUKRS.
APPEND LWA_INVADR_IN TO LT_INVADR_IN.
LWA_INVADR_IN-NAME = 'NAST-SPRAS'.
LWA_INVADR_IN-VALUE = NAST-SPRAS.
APPEND LWA_INVADR_IN TO LT_INVADR_IN.
LWA_INVADR_OUT-NAME = 'TITLE'.
LWA_INVADR_OUT-VALUE = SPACE.
APPEND LWA_INVADR_OUT TO LT_INVADR_OUT.
LWA_INVADR_OUT-NAME = 'NAME1'.
LWA_INVADR_OUT-VALUE = SPACE.
APPEND LWA_INVADR_OUT TO LT_INVADR_OUT.
LWA_INVADR_OUT-NAME = 'NAME2'.
LWA_INVADR_OUT-VALUE = SPACE.
APPEND LWA_INVADR_OUT TO LT_INVADR_OUT.
LWA_INVADR_OUT-NAME = 'NAME4'.
LWA_INVADR_OUT-VALUE = SPACE.
APPEND LWA_INVADR_OUT TO LT_INVADR_OUT.
LWA_INVADR_OUT-NAME = 'STREET'.
LWA_INVADR_OUT-VALUE = SPACE.
APPEND LWA_INVADR_OUT TO LT_INVADR_OUT.
LWA_INVADR_OUT-NAME = 'HOUSE_NUM1'.
LWA_INVADR_OUT-VALUE = SPACE.
APPEND LWA_INVADR_OUT TO LT_INVADR_OUT.
LWA_INVADR_OUT-NAME = 'POST_CODE1'.
LWA_INVADR_OUT-VALUE = SPACE.
APPEND LWA_INVADR_OUT TO LT_INVADR_OUT.
LWA_INVADR_OUT-NAME = 'CITY1'.
LWA_INVADR_OUT-VALUE = SPACE.
APPEND LWA_INVADR_OUT TO LT_INVADR_OUT.
LWA_INVADR_OUT-NAME = 'COUNTRY'.
LWA_INVADR_OUT-VALUE = SPACE.
APPEND LWA_INVADR_OUT TO LT_INVADR_OUT.
LWA_INVADR_OUT-NAME = 'LANDX'.
LWA_INVADR_OUT-VALUE = SPACE.
APPEND LWA_INVADR_OUT TO LT_INVADR_OUT.
LWA_INVADR_OUT-NAME = 'REGION'.
LWA_INVADR_OUT-VALUE = SPACE.
APPEND LWA_INVADR_OUT TO LT_INVADR_OUT.
LWA_INVADR_OUT-NAME = 'PO_BOX'.
LWA_INVADR_OUT-VALUE = SPACE.
APPEND LWA_INVADR_OUT TO LT_INVADR_OUT.
LWA_INVADR_OUT-NAME = 'TEL_NUMBER'.
LWA_INVADR_OUT-VALUE = SPACE.
APPEND LWA_INVADR_OUT TO LT_INVADR_OUT.
LWA_INVADR_OUT-NAME = 'FAX_NUMBER'.
LWA_INVADR_OUT-VALUE = SPACE.
APPEND LWA_INVADR_OUT TO LT_INVADR_OUT.
LWA_INVADR_OUT-NAME = 'STCEG'.
LWA_INVADR_OUT-VALUE = SPACE.
APPEND LWA_INVADR_OUT TO LT_INVADR_OUT.
LWA_INVADR_OUT-NAME = 'URI_ADDR'.
LWA_INVADR_OUT-VALUE = SPACE.
APPEND LWA_INVADR_OUT TO LT_INVADR_OUT.
PERFORM GET_FOOTER_BY_SALES_ORG IN PROGRAM Z_KEMIRA_FOOTER
TABLES LT_INVADR_IN
LT_INVADR_OUT.
CLEAR LWA_INVADR_OUT.
READ TABLE LT_INVADR_OUT
WITH KEY NAME = 'TITLE'
INTO LWA_INVADR_OUT.
GS_INVADR-TITLE = LWA_INVADR_OUT-VALUE.
CLEAR LWA_INVADR_OUT.
READ TABLE LT_INVADR_OUT
WITH KEY NAME = 'NAME1'
INTO LWA_INVADR_OUT.
GS_INVADR-NAME1 = LWA_INVADR_OUT-VALUE.
CLEAR LWA_INVADR_OUT.
READ TABLE LT_INVADR_OUT
WITH KEY NAME = 'NAME2'
INTO LWA_INVADR_OUT.
GS_INVADR-NAME2 = LWA_INVADR_OUT-VALUE.
CLEAR LWA_INVADR_OUT.
READ TABLE LT_INVADR_OUT
WITH KEY NAME = 'NAME4'
INTO LWA_INVADR_OUT.
GS_INVADR-NAME4 = LWA_INVADR_OUT-VALUE.
CLEAR LWA_INVADR_OUT.
READ TABLE LT_INVADR_OUT
WITH KEY NAME = 'STREET'
INTO LWA_INVADR_OUT.
GS_INVADR-STREET = LWA_INVADR_OUT-VALUE.
CLEAR LWA_INVADR_OUT.
READ TABLE LT_INVADR_OUT
WITH KEY NAME = 'HOUSE_NUM1'
INTO LWA_INVADR_OUT.
GS_INVADR-HOUSE_NUM1 = LWA_INVADR_OUT-VALUE.
CLEAR LWA_INVADR_OUT.
READ TABLE LT_INVADR_OUT
WITH KEY NAME = 'POST_CODE1'
INTO LWA_INVADR_OUT.
GS_INVADR-POST_CODE1 = LWA_INVADR_OUT-VALUE.
CLEAR LWA_INVADR_OUT.
READ TABLE LT_INVADR_OUT
WITH KEY NAME = 'CITY1'
INTO LWA_INVADR_OUT.
GS_INVADR-CITY1 = LWA_INVADR_OUT-VALUE.
CLEAR LWA_INVADR_OUT.
READ TABLE LT_INVADR_OUT
WITH KEY NAME = 'COUNTRY'
INTO LWA_INVADR_OUT.
GS_INVADR-COUNTRY = LWA_INVADR_OUT-VALUE.
CLEAR LWA_INVADR_OUT.
READ TABLE LT_INVADR_OUT
WITH KEY NAME = 'LANDX'
INTO LWA_INVADR_OUT.
GS_INVADR-LANDX = LWA_INVADR_OUT-VALUE.
CLEAR LWA_INVADR_OUT.
READ TABLE LT_INVADR_OUT
WITH KEY NAME = 'REGION'
INTO LWA_INVADR_OUT.
GS_INVADR-REGION = LWA_INVADR_OUT-VALUE.
CLEAR LWA_INVADR_OUT.
READ TABLE LT_INVADR_OUT
WITH KEY NAME = 'PO_BOX'
INTO LWA_INVADR_OUT.
GS_INVADR-PO_BOX = LWA_INVADR_OUT-VALUE.
CLEAR LWA_INVADR_OUT.
READ TABLE LT_INVADR_OUT
WITH KEY NAME = 'TEL_NUMBER'
INTO LWA_INVADR_OUT.
GS_INVADR-TEL_NUMBER = LWA_INVADR_OUT-VALUE.
CLEAR LWA_INVADR_OUT.
READ TABLE LT_INVADR_OUT
WITH KEY NAME = 'FAX_NUMBER'
INTO LWA_INVADR_OUT.
GS_INVADR-FAX_NUMBER = LWA_INVADR_OUT-VALUE.
CLEAR LWA_INVADR_OUT.
READ TABLE LT_INVADR_OUT
WITH KEY NAME = 'STCEG'
INTO LWA_INVADR_OUT.
GS_INVADR-STCEG = LWA_INVADR_OUT-VALUE.
CLEAR LWA_INVADR_OUT.
if gs_invadr-name4 is initial.
gs_invadr-name4 = GS_INVADR-STCEG.
endif.
*Tiel special, temporary solution!!
clear tdn.
concatenate 'BID_' vbdkr-bukrs into tdn.
select single * from tvarvc where name = tdn.
if sy-subrc = 0 and tvarvc-low ne ''.
gs_invadr-name4 = tvarvc-low.
endif.
*
READ TABLE LT_INVADR_OUT
WITH KEY NAME = 'URI_ADDR'
INTO LWA_INVADR_OUT.
GS_INVADR-URI_ADDR = LWA_INVADR_OUT-VALUE.
CLEAR LWA_INVADR_OUT.
clear tdn.
clear stxh.
clear vat_found.
loop at tvbdpr.
if vat_found is initial.
concatenate 'ZVAT' tvbdpr-werks into tdn.
tdi = 'ST'.
tdo = 'TEXT'.
select single * from stxh where tdname = tdn and tdid = tdi and
tdobject = tdo.
if sy-subrc = 0.
refresh tlin.
CALL FUNCTION 'READ_TEXT'
EXPORTING
CLIENT = SY-MANDT
ID = stxh-tdid
LANGUAGE = stxh-tdspras
NAME = stxh-tdname
OBJECT = stxh-tdobject
ARCHIVE_HANDLE = 0
LOCAL_CAT = ' '
IMPORTING
HEADER =
TABLES
LINES = tlin
EXCEPTIONS
ID = 1
LANGUAGE = 2
NAME = 3
NOT_FOUND = 4
OBJECT = 5
REFERENCE_CHECK = 6
WRONG_ACCESS_TO_ARCHIVE = 7
OTHERS = 8
.
IF SY-SUBRC = 0.
loop at tlin where tdline ne ''.
if vat_found is initial.
gs_invadr-stceg = tlin-tdline.
shift gs_invadr-stceg left deleting leading ' '.
vat_found = 1.
endif.
endloop.
ENDIF.
endif.
endif.
endloop.
break icllahti.
perform fill_zbnk_ref.
perform country_of_dest.
perform get_contact_info.
perform read_zname_2.
if vbdkr-bstkd is initial.
select single bstnk into vbdkr-bstkd from vbak
where vbeln = vbdkr-vbeln_vauf.
endif.
vbdkr-bstkd = vbdkr-bstkd(14).
clear x_rebate.
if vbdkr-fkart in s_rebate.
x_rebate = 'X'.
endif.
if bkpf is initial.
select single * from bkpf where xblnr = vbdkr-vbeln and
bukrs = vbdkr-bukrs.
else.
if bkpf-gjahr is initial.
bkpf-gjahr = vbdkr-erdat+0(4).
endif.
endif.
clear sbjahr.
sbjahr = vbdkr-fkdat+0(4).
if not bkpf is initial.
select single * from bseg where belnr = bkpf-belnr and
bukrs = vbdkr-bukrs and gjahr = sbjahr and
cession_kz = 'ZP'.
if sy-subrc = 0.
break icllahti.
factorin = 'X'.
concatenate 'Z_FACTORING_SEB_' vbdkr-bukrs into facttxt.
condense facttxt no-gaps.
endif.
endif.
EADK900095 starts
DATA LV_LAND_L TYPE LAND_GP.
SELECT SINGLE STCEG_L FROM VBAK INTO
LV_LAND_L WHERE VBELN = vbdkr-vbeln_vauf.
IF LV_LAND_L IS INITIAL.
EADK900095 ends
select single stceg into vbdkr-stceg from kna1 where
kunnr = vbdkr-kunag.
EADK900095 Starts
ELSE.
SELECT SINGLE STCEG FROM KNAS INTO
vbdkr-stceg WHERE KUNNR = vbdkr-kunag
AND LAND1 = LV_LAND_L.
IF SY-SUBRC NE 0.
select single stceg into vbdkr-stceg from kna1 where
kunnr = vbdkr-kunag.
ENDIF.
ENDIF.
EADK900095 Ends
clear zkatr2.
clear zwaers.
select single katr2 into zkatr2 from kna1 where
kunnr = vbdkr-kunag.
if vbdkr-bukrs = 'NO11' and vbdkr-vkorg = 'NO11'.
clear zwaers.
select single waers into zwaers from knvv where kunnr = vbdkr-kunag
and vkorg = vbdkr-vkorg and vtweg = vbdkr-vtweg and spart = vbdkr-spart.
if zwaers is initial.
select single waers into zwaers from knvv where kunnr = vbdkr-kunag
and vkorg = vbdkr-vkorg and vtweg = vbdkr-vtweg.
if zwaers is initial.
select single waers into zwaers from knvv where kunnr = vbdkr-kunag
and vkorg = vbdkr-vkorg.
endif.
endif.
endif.
if zwaers = 'EUR'.
no_eur = 'E'.
endif.
if zwaers = 'NOK'.
no_eur = 'N'.
endif.
if vbdkr-vkorg ne 'FI18'.
clear vbdkr-name3.
clear vbdkr-name3_we.
endif.
if vbdkr-vkorg = 'FI18'.
vbdkr-waers = vbdkr-waerk.
endif.
if nast-kschl = 'ZCIN'.
clear excl_cpono.
if vbdkr-vkorg = 'FI18'.
incl_rahti = 'X'.
endif.
endif.
refresh cotab.
clear destctry.
select single landx into destctry from t005t where
land1 = vbdkr-land1_we and spras = nast-spras.
clear origlist1.
clear origlist2.
clear cotab.
loop at tvbdpr.
clear cotab.
cotab-land1 = tvbdpr-herkl.
if cotab-land1 is initial.
select single herkl into cotab-land1 from marc where
matnr = tvbdpr-matnr and werks = tvbdpr-werks.
endif.
select single landx landx50 into corresponding fields of cotab
from t005t where land1 = cotab-land1 and spras = nast-spras.
append cotab.
clear cotab.
endloop.
sort cotab.
delete adjacent duplicates from cotab.
loop at cotab.
if sy-tabix = 1.
origlist1 = cotab-landx.
else.
concatenate origlist2 ',' cotab-landx into origlist2.
endif.
endloop.
shift origlist2 left deleting leading ','.
ENDFORM. "GET_DATA
*----
*
FORM GET_ITEM_PRICES *
*----
*
In this routine the price data for the item is fetched from *
the database. *
*----
*
FORM GET_ITEM_PRICES.
CLEAR: KOMP,
TKOMV.
IF KOMK-KNUMV NE VBDKR-KNUMV.
CLEAR KOMK.
KOMK-MANDT = SY-MANDT.
KOMK-KALSM = VBDKR-KALSM.
KOMK-FKART = VBDKR-FKART.
KOMK-KAPPL = PR_KAPPL.
IF VBDKR-KAPPL NE SPACE.
KOMK-KAPPL = VBDKR-KAPPL.
ENDIF.
KOMK-WAERK = VBDKR-WAERK.
KOMK-KNUMV = VBDKR-KNUMV.
KOMK-VBTYP = VBDKR-VBTYP.
ENDIF.
KOMP-KPOSN = VBDPR-POSNR.
CALL FUNCTION 'RV_PRICE_PRINT_ITEM'
EXPORTING
COMM_HEAD_I = KOMK
COMM_ITEM_I = KOMP
LANGUAGE = NAST-SPRAS
IMPORTING
COMM_HEAD_E = KOMK
COMM_ITEM_E = KOMP
TABLES
TKOMV = TKOMV
TKOMVD = TKOMVD.
ENDFORM. "GET_ITEM_PRICES
*----
*
FORM GET_HEADER_PRICES *
*----
*
In this routine the price data for the header is fetched from *
the database. *
*----
*
FORM GET_HEADER_PRICES.
IF KOMK-KNUMV NE VBDKR-KNUMV.
CLEAR KOMK.
KOMK-MANDT = SY-MANDT.
KOMK-KALSM = VBDKR-KALSM.
KOMK-FKART = VBDKR-FKART.
KOMK-KAPPL = PR_KAPPL.
IF VBDKR-KAPPL NE SPACE.
KOMK-KAPPL = VBDKR-KAPPL.
ENDIF.
KOMK-WAERK = VBDKR-WAERK.
KOMK-KNUMV = VBDKR-KNUMV.
KOMK-VBTYP = VBDKR-VBTYP.
KOMK-KNUMA = VBDKR-KNUMA.
ENDIF.
CALL FUNCTION 'RV_PRICE_PRINT_HEAD'
EXPORTING
COMM_HEAD_I = KOMK
LANGUAGE = NAST-SPRAS
IMPORTING
COMM_HEAD_E = KOMK
COMM_MWSKZ = PRINT_MWSKZ
TABLES
TKOMV = TKOMV
TKOMVD = HKOMVD.
clear tdkmein.
loop at tkomv where kschl = 'ZPR0' and kmein = 'LB'.
if tdkmein is initial.
tdkmein = tkomv-kmein.
endif.
endloop.
ENDFORM. "GET_HEADER_PRICES
*----
*
FORM HEADER_PRICE_PRINT *
*----
*
Printout of the header prices *
*----
*
FORM HEADER_PRICE_PRINT.
data: zwaerk like komk-waerk.
data: zsupos like komk-supos.
data: zzkbetr like komvd-kbetr.
*data: zkbetr like komvd-kbetr.
data: zkawrt like KOMVD-KAWRT.
data: zkwert like KOMVD-KWERT.
data: zkurrf like vbdkr-kurrf.
data: zkurrf2 like vbdkr-kurrf.
data: zrate type f.
data: zfact type f.
*perform initialize. " Subho
clear zkatr2.
select single katr2 into zkatr2 from kna1 where
kunnr = vbdkr-kunag.
if vbdkr-bukrs = 'NO11' and vbdkr-vkorg = 'NO11' and zkatr2 = '2A'.
break icllahti.
PERFORM WRITE_FORM USING 'MAIN' 'ITEM_SUM_NOK'.
zwaerk = komk-waerk.
zsupos = komk-supos.
waerk2 = komk-waerk.
supos2 = komk-supos.
*get currency rate
CALL FUNCTION 'CONVERT_TO_LOCAL_CURRENCY'
EXPORTING
CLIENT = SY-MANDT
DATE = vbdkr-fkdat
FOREIGN_AMOUNT = komk-supos
FOREIGN_CURRENCY = komk-waerk
LOCAL_CURRENCY = 'NOK'
RATE = 0
TYPE_OF_RATE = 'M'
READ_TCURR = 'X'
IMPORTING
EXCHANGE_RATE = zrate
FOREIGN_FACTOR = zfact
LOCAL_AMOUNT = komk-supos
LOCAL_FACTOR =
EXCHANGE_RATEX =
FIXED_RATE =
DERIVED_RATE_TYPE =
EXCEPTIONS
NO_RATE_FOUND = 1
OVERFLOW = 2
NO_FACTORS_FOUND = 3
NO_SPREAD_FOUND = 4
DERIVED_2_TIMES = 5
OTHERS = 6
.
if sy-subrc = 0.
komk-waerk = 'NOK'.
waerk1 = 'NOK'.
supos1 = komk-supos.
PERFORM WRITE_FORM USING 'MAIN' 'ITEM_SUM_NOK'.
PERFORM WRITE_FORM USING 'MAIN' 'ITEM_SUM_NOR'.
komk-waerk = zwaerk.
endif.
komk-supos = zsupos.
LOOP AT HKOMVD.
KOMVD = HKOMVD.
IF PRINT_MWSKZ = SPACE.
CLEAR KOMVD-MWSKZ.
ENDIF.
IF KOMVD-KOAID = 'D'.
waerk2 = komk-waerk.
kwert2 = komvd-kwert.
zkawrt = KOMVD-KAWRT.
zkwert = KOMVD-KWERT.
zwaerk = komk-waerk.
CALL FUNCTION 'CONVERT_TO_LOCAL_CURRENCY'
EXPORTING
CLIENT = SY-MANDT
DATE = vbdkr-fkdat
FOREIGN_AMOUNT = komvd-kawrt
FOREIGN_CURRENCY = komk-waerk
LOCAL_CURRENCY = 'NOK'
RATE = 0
TYPE_OF_RATE = 'M'
READ_TCURR = 'X'
IMPORTING
EXCHANGE_RATE = zrate
FOREIGN_FACTOR = zfact
LOCAL_AMOUNT = komvd-kawrt
LOCAL_FACTOR =
EXCHANGE_RATEX =
FIXED_RATE =
DERIVED_RATE_TYPE =
EXCEPTIONS
NO_RATE_FOUND = 1
OVERFLOW = 2
NO_FACTORS_FOUND = 3
NO_SPREAD_FOUND = 4
DERIVED_2_TIMES = 5
OTHERS = 6
.
CALL FUNCTION 'CONVERT_TO_LOCAL_CURRENCY'
EXPORTING
CLIENT = SY-MANDT
DATE = vbdkr-fkdat
FOREIGN_AMOUNT = komvd-kwert
FOREIGN_CURRENCY = komk-waerk
LOCAL_CURRENCY = 'NOK'
RATE = 0
TYPE_OF_RATE = 'M'
READ_TCURR = 'X'
IMPORTING
EXCHANGE_RATE = zrate
FOREIGN_FACTOR = zfact
LOCAL_AMOUNT = komvd-kwert
LOCAL_FACTOR =
EXCHANGE_RATEX =
FIXED_RATE =
DERIVED_RATE_TYPE =
EXCEPTIONS
NO_RATE_FOUND = 1
OVERFLOW = 2
NO_FACTORS_FOUND = 3
NO_SPREAD_FOUND = 4
DERIVED_2_TIMES = 5
OTHERS = 6
.
if sy-subrc = 0.
kwert1 = komvd-kwert.
waerk1 = 'NOK'.
PERFORM WRITE_FORM USING 'MAIN' 'TAX_LINE_NOR'.
endif.
KOMVD-KAWRT = zkawrt.
KOMVD-KWERT = zkwert.
komk-waerk = zwaerk.
ENDIF.
ENDLOOP.
else.
"srinivas
if vbdkr-bukrs = 'NL10' and vbdkr-vkorg = 'NL10' and zkatr2 = '2B'.
zwaerk = komk-waerk.
zsupos = komk-supos.
waerk2 = komk-waerk.
supos1 = komk-supos.
*get currency rate
CALL FUNCTION 'CONVERT_TO_LOCAL_CURRENCY'
EXPORTING
CLIENT = SY-MANDT
DATE = vbdkr-fkdat
FOREIGN_AMOUNT = komk-supos
FOREIGN_CURRENCY = komk-waerk
LOCAL_CURRENCY = 'GBP'
RATE = 0
TYPE_OF_RATE = 'M'
READ_TCURR = 'X'
IMPORTING
EXCHANGE_RATE = zrate
FOREIGN_FACTOR = zfact
LOCAL_AMOUNT = komk-supos
LOCAL_FACTOR =
EXCHANGE_RATEX =
FIXED_RATE =
DERIVED_RATE_TYPE =
EXCEPTIONS
NO_RATE_FOUND = 1
OVERFLOW = 2
NO_FACTORS_FOUND = 3
NO_SPREAD_FOUND = 4
DERIVED_2_TIMES = 5
OTHERS = 6
.
if sy-subrc = 0.
komk-waerk = 'EUR'.
waerk1 = 'EUR'.
waerk2 = 'GBP'.
supos2 = komk-supos.
PERFORM WRITE_FORM USING 'MAIN' 'ITEM_SUM_NOR'.
komk-waerk = zwaerk.
endif.
komk-supos = zsupos.
LOOP AT HKOMVD.
KOMVD = HKOMVD.
IF PRINT_MWSKZ = SPACE.
CLEAR KOMVD-MWSKZ.
ENDIF.
IF KOMVD-KOAID = 'D'.
waerk2 = komk-waerk.
kwert1 = komvd-kwert.
zkawrt = KOMVD-KAWRT.
zkwert = KOMVD-KWERT.
zwaerk = komk-waerk.
CALL FUNCTION 'CONVERT_TO_LOCAL_CURRENCY'
EXPORTING
CLIENT = SY-MANDT
DATE = vbdkr-fkdat
FOREIGN_AMOUNT = komvd-kawrt
FOREIGN_CURRENCY = komk-waerk
LOCAL_CURRENCY = 'GBP'
RATE = 0
TYPE_OF_RATE = 'M'
READ_TCURR = 'X'
IMPORTING
EXCHANGE_RATE = zrate
FOREIGN_FACTOR = zfact
LOCAL_AMOUNT = komvd-kawrt
LOCAL_FACTOR =
EXCHANGE_RATEX =
FIXED_RATE =
DERIVED_RATE_TYPE =
EXCEPTIONS
NO_RATE_FOUND = 1
OVERFLOW = 2
NO_FACTORS_FOUND = 3
NO_SPREAD_FOUND = 4
DERIVED_2_TIMES = 5
OTHERS = 6
.
CALL FUNCTION 'CONVERT_TO_LOCAL_CURRENCY'
EXPORTING
CLIENT = SY-MANDT
DATE = vbdkr-fkdat
FOREIGN_AMOUNT = komvd-kwert
FOREIGN_CURRENCY = komk-waerk
LOCAL_CURRENCY = 'GBP'
RATE = 0
TYPE_OF_RATE = 'M'
READ_TCURR = 'X'
IMPORTING
EXCHANGE_RATE = zrate
FOREIGN_FACTOR = zfact
LOCAL_AMOUNT = komvd-kwert
LOCAL_FACTOR =
EXCHANGE_RATEX =
FIXED_RATE =
DERIVED_RATE_TYPE =
EXCEPTIONS
NO_RATE_FOUND = 1
OVERFLOW = 2
NO_FACTORS_FOUND = 3
NO_SPREAD_FOUND = 4
DERIVED_2_TIMES = 5
OTHERS = 6
.
if sy-subrc = 0.
kwert2 = komvd-kwert.
waerk1 = 'EUR'.
waerk2 = 'GBP'.
PERFORM WRITE_FORM USING 'MAIN' 'TAX_LINE_NOR'.
endif.
KOMVD-KAWRT = zkawrt.
KOMVD-KWERT = zkwert.
komk-waerk = zwaerk.
ENDIF.
ENDLOOP.
else.
"srinivas
PERFORM WRITE_FORM USING 'MAIN' 'ITEM_SUM'.
clear tax_found.
clear fre_item.
clear fre_wert.
clear fre_header.
*check freight exist in header.
loop at hkomvd.
select single * from zfre_cond where kschl = hkomvd-kschl.
if sy-subrc = 0.
fre_header = fre_header + 1.
fre_wert = fre_wert + hkomvd-kwert.
endif.
endloop.
if fre_header = 0. "try items
loop at tkomv.
select single * from zfre_cond where kschl = tkomv-kschl.
if sy-subrc = 0.
fre_item = fre_item + 1.
fre_wert = fre_wert + tkomv-kwert.
endif.
endloop.
endif.
**
clear fre_found.
LOOP AT HKOMVD.
KOMVD = HKOMVD.
IF PRINT_MWSKZ = SPACE.
CLEAR KOMVD-MWSKZ.
ENDIF.
if nast-kschl = 'ZNIN'." and vbdkr-inco1 = 'PPA'. "and komvd-koaid = 'A'
break icllahti.
if fre_wert > 0 and fre_item > 0.
old_wert = komvd-kwert.
komvd-kwert = fre_wert.
PERFORM WRITE_FORM USING 'MAIN' 'FREIGHT_LINE'.
komvd-kwert = old_wert.
old_wert = vbdkr-netwr.
vbdkr-netwr = vbdkr-netwr + fre_wert.
PERFORM WRITE_FORM USING 'MAIN' 'FREIGHT_TOTAL'.
vbdkr-netwr = old_wert.
komk-fkwrt = komk-fkwrt + fre_wert.
clear fre_item.
endif.
if fre_wert > 0 and fre_header > 0.
old_wert = komvd-kwert.
komvd-kwert = fre_wert.
PERFORM WRITE_FORM USING 'MAIN' 'FREIGHT_LINE'.
komvd-kwert = old_wert.
PERFORM WRITE_FORM USING 'MAIN' 'FREIGHT_TOTAL'.
clear fre_header.
endif.
endif.
IF KOMVD-KOAID = 'D'.
if nast-kschl ne 'ZNI_' or komvd-kschl ne 'ZPST'. "exclude NA tax ZPST, according to Heini's example 8.6.2007
tax_found = tax_found + 1.
zzkbetr = komvd-kbetr.
zzkbetr = zzkbetr / 10.
write zzkbetr to xverop decimals 2 exponent 0.
shift xverop right deleting trailing '0 '.
shift xverop right deleting trailing ','.
if nast-kschl = 'ZNIN'.
komvd-kawrt = s_netwr.
komvd-kwert = zzkbetr * s_netwr / 100.
perform tax_text using vbdkr-vkorg komvd-kschl changing komvd-vtext.
PERFORM WRITE_FORM USING 'MAIN' 'TAX_LINE'.
t_netwr = t_netwr + komvd-kwert.
else.
if vbdkr-vkorg = 'FI18'.
PERFORM WRITE_FORM USING 'MAIN' 'TAX_LINE_FI18'.
else.
PERFORM WRITE_FORM USING 'MAIN' 'TAX_LINE'.
endif.
endif.
endif.
ENDIF.
ENDLOOP.
if tax_found = 0 and nast-kschl = 'ZNIN'.
PERFORM WRITE_FORM USING 'MAIN' 'TAX_LINE_ZNIN_0'.
endif.
endif.
endif.
ENDFORM. "HEADER_PRICE_PRINT
*----
*
FORM HEADER_TEXT_PRINT *
*----
*
Printout of the headertexts *
*----
*
FORM HEADER_TEXT_PRINT.
*perform initialize. " Subho
PERFORM WRITE_FORM USING 'MAIN' 'HEADER_TEXT'.
ENDFORM. "HEADER_TEXT_PRINT
*----
*
FORM ITEM_PRICE_PRINT *
*----
*
Printout of the item prices *
*----
*
FORM ITEM_PRICE_PRINT.
*........ Local variables
data: lv_ntgew(13),
lv_brgew like lv_ntgew,
*perform initialize. " Subho
DATA: LV_TDNAME LIKE THEAD-TDNAME.
data: ml type i.
data: mx like tvarv-low.
data: mz type i.
DATA: Z_IT_DELIV_NO LIKE VBDKR-VBELN_VL,
Z_IT_DELIV_ITEM_NO LIKE VBFA-POSNN.
data: zlfdat like vbdkr-lfdat.
data: zzumref type f.
data: profspec(1) type c.
clear profspec.
clear no_koei1.
clear no_kwert.
if vbdkr-bukrs = 'NO11' and vbdkr-vkorg = 'NO11'.
LOOP AT TKOMVD where kschl = 'ZF00'.
no_koei1 = tkomvd-koei1.
no_kwert = tkomvd-kwert.
endloop.
endif.
if nast-kschl = 'ZNIN'.
clear il_ntgew.
clear il_brgew.
CALL FUNCTION 'UNIT_CONVERSION_SIMPLE'
EXPORTING
INPUT = vbdpr-ntgew
NO_TYPE_CHECK = 'X'
ROUND_SIGN = ' '
UNIT_IN = vbdpr-gewei
UNIT_OUT = 'LB'
IMPORTING
ADD_CONST =
DECIMALS =
DENOMINATOR =
NUMERATOR =
OUTPUT = il_ntgew
EXCEPTIONS
CONVERSION_NOT_FOUND = 1
DIVISION_BY_ZERO = 2
INPUT_INVALID = 3
OUTPUT_INVALID = 4
OVERFLOW = 5
TYPE_INVALID = 6
UNITS_MISSING = 7
UNIT_IN_NOT_FOUND = 8
UNIT_OUT_NOT_FOUND = 9
OTHERS = 10
.
IF SY-SUBRC = 0.
il_ntgew = floor( il_ntgew ).
write: il_ntgew to ib_ntgew decimals 0 exponent 0." no-grouping.
shift ib_ntgew left deleting leading ' 0'.
ENDIF.
CALL FUNCTION 'UNIT_CONVERSION_SIMPLE'
EXPORTING
INPUT = vbdpr-brgew
NO_TYPE_CHECK = 'X'
ROUND_SIGN = ' '
UNIT_IN = vbdpr-gewei
UNIT_OUT = 'LB'
IMPORTING
ADD_CONST =
DECIMALS =
DENOMINATOR =
NUMERATOR =
OUTPUT = il_brgew
EXCEPTIONS
CONVERSION_NOT_FOUND = 1
DIVISION_BY_ZERO = 2
INPUT_INVALID = 3
OUTPUT_INVALID = 4
OVERFLOW = 5
TYPE_INVALID = 6
UNITS_MISSING = 7
UNIT_IN_NOT_FOUND = 8
UNIT_OUT_NOT_FOUND = 9
OTHERS = 10
.
IF SY-SUBRC = 0.
il_brgew = floor( il_brgew ).
write: il_brgew to ib_brgew decimals 0 exponent 0." no-grouping.
shift ib_brgew left deleting leading ' 0'.
ENDIF.
if vbdpr-gewei ne 'TO'.
vbdpr-ntgew = floor( vbdpr-ntgew ).
vbdpr-brgew = floor( vbdpr-brgew ).
endif.
endif.
LOOP AT TKOMVD. " Loop on item pricing
clear qtai.
clear utai.
zlfdat = vbdkr-lfdat.
clear vbdkr-lfdat.
select single wadat_ist into vbdkr-lfdat from likp where
vbeln = VBDpR-VBELN_VL.
KOMVD = TKOMVD.
if vbdkr-fkart = 'ZF8'. "proforma
if komvd is initial.
loop at tkomv where kschl = 'ZPR0' and kposn = vbdpr-posnr.
move-corresponding tkomv to komvd.
komvd-koein = tkomv-waers.
profspec = 'X'.
endloop.
endif.
endif.
*icllahti 11.1.2006
if komvd-kmein = 'TOW' or komvd-kmein = 'KGW'.
utai = komvd-kmein.
qtai = vbdpr-fkimg * vbdpr-umvkz / 1000.
endif.
if komvd-kpein = 1.
clear zpery.
else.
write komvd-kpein to zpery exponent 0.
shift zpery right deleting trailing '0'.
if zpery+7(1) = '.' or zpery+7(1) = ','.
shift zpery right deleting trailing '.,'.
endif.
endif.
zkbetr = komvd-kbetr.
if komvd-kbetr = komvd-kwert and komvd-kawrt ne 0.
if vbdpr-vrkme = komvd-kmein. "same units
if komvd-kpein = 1.
zkbetr = komvd-kbetr / komvd-kawrt * 10.
else.
zkbetr = komvd-kbetr / komvd-kawrt * komvd-kpein * 10.
endif.
else.
clear zzumref.
CALL FUNCTION 'MC_UNIT_CONVERSION'
EXPORTING
MATNR = vbdpr-matnr
NACH_MEINS = komvd-kmein
VON_MEINS = vbdpr-vrkme
IMPORTING
UMREF = zzumref
EXCEPTIONS
CONVERSION_NOT_FOUND = 1
MATERIAL_NOT_FOUND = 2
NACH_MEINS_MISSING = 3
OVERFLOW = 4
VON_MEINS_MISSING = 5
OTHERS = 6.
IF SY-SUBRC = 0 and zzumref ne 0.
if komvd-kpein = 1.
zkbetr = komvd-kbetr / komvd-kawrt / zzumref * 10.
else.
zkbetr = komvd-kbetr / komvd-kawrt * komvd-kpein / zzumref * 10.
endif.
ENDIF.
endif.
endif.
IF TNAPR-FONAM EQ CON_ZINVOICEGEN or
tnapr-fonam eq CON_ZINVOICENA or
tnapr-fonam eq CON_ZINVOICEEXP.
READ TABLE IT_COMBINE WITH KEY POSNR = VBDPR-POSNR.
IF SY-SUBRC EQ 0.
READ TABLE IT_COMBINE-IT_KOMVD INTO DS_KOMVD
WITH KEY STUNR = TKOMVD-STUNR
ZAEHK = TKOMVD-ZAEHK.
if profspec is initial.
KOMVD-KWERT = DS_KOMVD-TKWERT.
endif.
ENDIF.
ENDIF.
if vbdkr-fkart = 'WIA' and nast-kschl(3) = 'ZRD'.
komvd-kwert = tvbdpr-netwr.
endif.
IF PRINT_MWSKZ EQ SPACE.
CLEAR KOMVD-MWSKZ.
**********************************************************************
move komvd-kbetr to zdec4-zdec4. " DC FOUR DECIMAL FIX
**********************************************************************
ENDIF.
IF SY-TABIX = 1.
IF KOMVD-KOAID EQ 'C' AND " Bonus
( TNAPR-FONAM EQ CON_ZINVOICEGEN or
TNAPR-FONAM EQ CON_ZINVOICENA or
tnapr-fonam eq CON_ZINVOICEEXP ).
PERFORM WRITE_FORM USING 'MAIN' 'ITEM_LINE_PRICE_TEXT'.
ELSE.
ml = strlen( VBDPR-MATNR ).
select single low into mx from tvarv
where name = 'MAT_LEN' and type = 'P'.
if sy-subrc = 0.
mz = mx.
if ml > mz.
if vbdkr-fkart in s_rebate.
PERFORM WRITE_FORM USING
'MAIN' 'ITEM_LINE_PRICE_QUANTITY_L_REB'.
else.
PERFORM WRITE_FORM USING
'MAIN' 'ITEM_LINE_PRICE_QUANTITY_LONG'.
endif.
else.
if vbdkr-fkart in s_rebate.
PERFORM WRITE_FORM USING 'MAIN' 'ITEM_LINE_PRICE_QUANTITY_REB'.
else.
PERFORM WRITE_FORM USING 'MAIN' 'ITEM_LINE_PRICE_QUANTITY'.
endif.
endif.
else.
if vbdkr-fkart in s_rebate.
PERFORM WRITE_FORM USING 'MAIN' 'ITEM_LINE_PRICE_QUANTITY_REB'.
else.
PERFORM WRITE_FORM USING 'MAIN' 'ITEM_LINE_PRICE_QUANTITY'.
endif.
endif.
ENDIF. " yhe 12/2
IF TNAPR-FONAM EQ CON_ZFORWINSTR "Only for certain layout set
OR TNAPR-FONAM EQ CON_ZSHIPADVGEN.
PERFORM CONTAINER_NO.
ENDIF.
ELSE.
IF TNAPR-FONAM EQ CON_ZINVOICEGEN or
tnapr-fonam eq CON_ZINVOICENA or
tnapr-fonam eq CON_ZINVOICEEXP.
if tkomvd-kschl ne ''. "to exclude "nettoverdi for posis" (norwegian probl)
PERFORM WRITE_FORM USING 'MAIN' 'ITEM_LINE_PRICE_TEXT'.
endif.
ENDIF.
ENDIF.
vbdkr-lfdat = zlfdat.
ENDLOOP.
ENDFORM. "ITEM_PRICE_PRINT
*----
*
FORM ITEM_PRINT *
*----
*
Printout of the items *
*----
*
FORM ITEM_PRINT.
data: zkdmat like vbap-kdmat.
data: dumref type f.
data: ztrade like vbap-arktx.
DATA: ZLPS TYPE ZLIPS occurs 0 with header line.
data: first_batch(1) type c.
data: prec_doc like vbfa-vbtyp_v.
data: zXCHPF like MARA-XCHPF.
*perform initialize. " Subho
PERFORM WRITE_FORM USING 'MAIN' 'ITEM_HEADER'. " First header
CALL FUNCTION 'WRITE_FORM' "Activate header
EXPORTING ELEMENT = 'ITEM_HEADER'
TYPE = 'TOP'
EXCEPTIONS OTHERS = 1.
IF SY-SUBRC NE 0.
PERFORM PROTOCOL_UPDATE.
ENDIF.
clear s_netwr.
clear r_netwr.
LOOP AT TVBDPR.
clear ittab.
clear qtai.
clear utai.
clear p_freight.
clear f_netwr.
clear c_arktx.
clear arktx2.
VBDPR = TVBDPR.
*ZNIN freight
if nast-kschl = 'ZNI_' and vbdkr-inco1 = 'PPA'.
p_freight = 'X'.
CALL FUNCTION 'ZSD_GET_FREIGHT_COST'
EXPORTING
VBELN = vbdpr-vbeln_vl
POSNR = vbdpr-posnr_vl
WAERS = vbdkr-waers
IMPORTING
NETWR = f_netwr
WAERK =
INCO1 =
.
s_netwr = s_netwr + f_netwr.
r_netwr = r_netwr + f_netwr.
endif.
*item tax text
clear ittab.
if taxtypes > 1.
loop at txtab where posnr = tvbdpr-posnr.
ittab-tdname = txtab-tdname.
ittab-tdid = 'ST'.
endloop.
endif.
clear zXCHPF.
select single XCHPF into zXCHPF
from mara where matnr = vbdpr-matnr.
perform assign_text using vbdpr-tdname.
*get container / seal
clear: conseal,conseal2,conseal3,conseal4,conseal5,conseal6,conseal7,
conseal8.
tds = nast-spras.
tdi = 'ZE02'.
tdo = 'VBBP'.
tdn = vbdpr-tdname.
select single * from stxh where tdname like tdn and tdspras = tds
and tdid = tdi and tdobject = tdo.
if sy-subrc ne 0.
select single * from stxh where tdname like tdn
and tdid = tdi and tdobject = tdo.
endif.
if sy-subrc = 0.
refresh tlin.
CALL FUNCTION 'READ_TEXT'
EXPORTING
CLIENT = SY-MANDT
ID = stxh-tdid
LANGUAGE = stxh-tdspras
NAME = stxh-tdname
OBJECT = stxh-tdobject
ARCHIVE_HANDLE = 0
LOCAL_CAT = ' '
IMPORTING
HEADER =
TABLES
LINES = tlin
EXCEPTIONS
ID = 1
LANGUAGE = 2
NAME = 3
NOT_FOUND = 4
OBJECT = 5
REFERENCE_CHECK = 6
WRONG_ACCESS_TO_ARCHIVE = 7
OTHERS = 8
.
IF SY-SUBRC = 0.
loop at tlin where tdline ne ''.
if conseal = ''.
conseal = tlin-tdline.
elseif conseal2 = ''.
conseal2 = tlin-tdline.
elseif conseal3 = ''.
conseal3 = tlin-tdline.
elseif conseal4 = ''.
conseal4 = tlin-tdline.
elseif conseal5 = ''.
conseal5 = tlin-tdline.
elseif conseal6 = ''.
conseal6 = tlin-tdline.
elseif conseal7 = ''.
conseal7 = tlin-tdline.
elseif conseal8 = ''.
conseal8 = tlin-tdline.
endif.
endloop.
ENDIF.
endif.
*get DGD data
SELECT SINGLE recn actn tkui dgnu pgro dgsc dgcl
hnu hpn2 hpn3
FROM dgtmd
INTO CORRESPONDING FIELDS OF gw_dgtmd
WHERE matnr = vbdpr-matnr AND
lwdg = lc_lwdg AND
delflg NE 'X'. "EADK902589
break icllahti.
clear idgd.
clear idgd2.
SELECT SINGLE pdgnud pres1 pres2
FROM dgtm2
INTO CORRESPONDING FIELDS OF gw_dgtmd
WHERE recn = gw_dgtmd-recn AND
actn = gw_dgtmd-actn.
PERFORM get_phrase_text USING gw_dgtmd-pdgnud nast-spras
CHANGING gw_dgtmd-pdgnt.
PERFORM get_phrase_text USING gw_dgtmd-pres1 nast-spras
CHANGING gw_dgtmd-pre1t.
PERFORM get_phrase_text USING gw_dgtmd-pres2 nast-spras
CHANGING gw_dgtmd-pre2t.
clear hpres.
clear zpres.
if GW_DGTMD-PDGNT ne ''.
idgd = 'X'.
if GW_DGTMD-PRE1T ne '' and GW_DGTMD-PRE2T ne ''.
concatenate '#(' GW_DGTMD-PRE1T ',#' GW_DGTMD-PRE2T '),' into hpres.
else.
if GW_DGTMD-PRE1T ne ''.
concatenate '#(' GW_DGTMD-PRE1T '),' into hpres.
endif.
endif.
do 2 times.
replace '#' with ' ' into hpres.
enddo.
shift hpres left deleting leading ' '.
if GW_DGTMD-HPN2 ne '' and GW_DGTMD-HPN3 ne ''.
concatenate '#(' GW_DGTMD-HPN2 ',#' GW_DGTMD-HPN3 '),' into zpres.
else.
if GW_DGTMD-HPN2 ne ''.
concatenate '#(' GW_DGTMD-HPN2 '),' into zpres.
endif.
endif.
do 2 times.
replace '#' with ' ' into zpres.
enddo.
shift zpres left deleting leading ' '.
endif.
if nast-spras ne 'E' and nast-spras ne 'F' and nast-spras ne 'D'.
gw_dgtmd2 = gw_dgtmd.
PERFORM get_phrase_text USING gw_dgtmd2-pdgnud 'E'
CHANGING gw_dgtmd2-pdgnt.
PERFORM get_phrase_text USING gw_dgtmd2-pres1 'E'
CHANGING gw_dgtmd2-pre1t.
PERFORM get_phrase_text USING gw_dgtmd2-pres2 'E'
CHANGING gw_dgtmd2-pre2t.
clear hpres2.
clear zpres2.
if GW_DGTMD2-PDGNT ne ''.
idgd2 = 'X'.
if GW_DGTMD2-PRE1T ne '' and GW_DGTMD2-PRE2T ne ''.
concatenate '#(' GW_DGTMD2-PRE1T ',#' GW_DGTMD2-PRE2T '),' into hpres2.
else.
if GW_DGTMD2-PRE1T ne ''.
concatenate '#(' GW_DGTMD2-PRE1T '),' into hpres2.
endif.
endif.
do 2 times.
replace '#' with ' ' into hpres2.
enddo.
shift hpres2 left deleting leading ' '.
if GW_DGTMD2-HPN2 ne '' and GW_DGTMD2-HPN3 ne ''.
concatenate '#(' GW_DGTMD2-HPN2 ',#' GW_DGTMD2-HPN3 '),' into zpres2.
else.
if GW_DGTMD2-HPN2 ne ''.
concatenate '#(' GW_DGTMD2-HPN2 '),' into zpres2.
endif.
endif.
do 2 times.
replace '#' with ' ' into zpres2.
enddo.
shift zpres2 left deleting leading ' '.
endif.
endif.
if vbdkr-vkorg = 'FI18' "dgd data not for FC nor NO11
or vbdkr-vkorg = 'NO11'.
clear idgd.
clear idgd2.
endif.
if 1 = 0.
clear dgtmd.
clear dgtm2.
clear thm032.
clear idgd.
clear hpres.
select single * from mara where matnr = vbdpr-matnr and profl ne ''.
if sy-subrc = 0.
select single * from dgtmd where matnr = vbdpr-matnr and lwdg = 'ADR'.
if sy-subrc = 0.
idgd = 'X'.
select single * from dgtm2 where recn = dgtmd-recn and actn = dgtmd-actn.
if sy-subrc = 0.
if dgtm2-pres1 ne '' and dgtm2-pres2 ne ''.
concatenate '(' dgtm2-pres1 ',' dgtm2-pres2 ')' into hpres.
endif.
if dgtm2-pres1 ne '' and dgtm2-pres2 = ''.
concatenate '(' dgtm2-pres1 ')' into hpres.
endif.
if dgtm2-pres1 = '' and dgtm2-pres2 ne ''.
concatenate '(' dgtm2-pres2 ')' into hpres.
endif.
shift hpres left deleting leading ' '.
endif.
select single * from thm032 where lwdg = 'ADR' and hnu = dgtmd-hnu and
dgspras = nast-spras.
endif.
endif.
endif.
*get trade name
clear ztrade.
if 1 = 1. "new function
CALL FUNCTION 'ZSD_GET_SALESORDER_TRADENAME'
EXPORTING
VBELN = vbdpr-vbeln_vauf
POSNR = vbdpr-posnr_vauf
IMPORTING
MAKTX = ztrade.
else.
refresh gtt.
clear gtt.
clear ztrade.
CALL FUNCTION 'ZSD_GET_SALESORDER_CONFIG'
EXPORTING
VBELN = vbdpr-vbeln_vauf
POSNR = vbdpr-posnr_vauf
PINSTANCE =
TABLES
GT_IBSYMBOL = gtt
.
select single * from cabn where atnam = 'ZKEM_LG_TRADE_NAME'.
if sy-subrc = 0.
loop at gtt where atinn = cabn-atinn.
ztrade = gtt-atwrt.
endloop.
endif.
endif.
*trade name & mat.descr
if nast-kschl = 'ZNIN'.
clear c_arktx.
clear arktx2.
select single kdmat into c_arktx from knmt where "oli postx
matnr = vbdpr-matnr and vkorg = vbdkr-vkorg and
vtweg = vbdkr-vtweg and kunnr = vbdkr-kunag.
if not c_arktx is initial and not ztrade is initial.
arktx2 = ztrade.
vbdpr-arktx = c_arktx.
endif.
if not c_arktx is initial and ztrade is initial.
clear arktx2.
vbdpr-arktx = c_arktx.
endif.
if c_arktx is initial and not ztrade is initial.
vbdpr-arktx = ztrade.
endif.
if c_arktx is initial and ztrade is initial.
*leave vbdpr-arktx
endif.
else.
clear arktx2.
if not ztrade is initial.
vbdpr-arktx = ztrade.
endif.
endif.
*get rahtikirja
clear rahtik.
if incl_rahti = 'X'.
select single posex into rahtik from vbap
where vbeln = vbdpr-vbeln_vauf and
posnr = vbdpr-posnr_vauf.
if rahtik is initial or rahtik = ''. "skip if empty
clear incl_rahti.
endif.
endif.
*get kdmat
if ztrade is initial.
clear zkdmat.
select single kdmat into zkdmat from vbap
where vbeln = vbdpr-vbeln_vauf and
posnr = vbdpr-posnr_vauf.
if zkdmat ne '' and zkdmat ne vbdpr-arktx.
vbdpr-arktx = zkdmat.
endif.
endif.
*lang version of arktx
select single * from makt where matnr = vbdpr-matnr and maktx = vbdpr-arktx. "no changes in sales order arktx
if sy-subrc = 0.
select single maktx into vbdpr-arktx from makt where matnr = vbdpr-matnr
and spras = nast-spras.
endif.
*get loading date from vbep.
clear vbdpr-g2dat.
select single lddat into vbdpr-g2dat from vbep
where vbeln = vbdpr-vbeln_vauf and
posnr = vbdpr-posnr_vauf.
shift vbdpr-matnr left deleting leading '0'.
clear dkmein.
IF TVBDPR-CHARG IS INITIAL. " DC Note 33667
IF TVBDPR-UECHA EQ VBDPR-POSNR OR " DC Note 33667
TVBDPR-UECHA IS INITIAL. " DC Note 33667
PERFORM GET_ITEM_PRICES. " Retrieve item pricing
clear dkmein.
if vbdpr-gewei ne 'LB'.
loop at tkomvd where kposn = vbdpr-posnr
and kmein = 'LB'.
if tkomvd-kmein ne vbdpr-gewei.
dkmein = tkomvd-kmein.
endif.
endloop.
endif.
CALL FUNCTION 'CONTROL_FORM'
EXPORTING
COMMAND = 'PROTECT'.
PERFORM ITEM_PRICE_PRINT.
CALL FUNCTION 'CONTROL_FORM'
EXPORTING
COMMAND = 'ENDPROTECT'.
ELSE.
IF NOT TVBDPR-FKIMG IS INITIAL.
PERFORM GET_ITEM_PRICES.
clear dkmein.
if vbdpr-gewei ne 'LB'.
loop at tkomvd where kposn = vbdpr-posnr
and kmein = 'LB'.
if tkomvd-kmein ne vbdpr-gewei.
dkmein = tkomvd-kmein.
endif.
endloop.
endif.
PERFORM ITEM_PRICE_PRINT.
ENDIF.
ENDIF.
*double units?
clear dumref.
clear dkmein.
clear dbrgew.
if vbdpr-gewei ne 'LB'.
loop at tkomvd where kposn = vbdpr-posnr
and kmein = 'LB'.
if tkomvd-kmein ne vbdpr-gewei.
dkmein = tkomvd-kmein.
endif.
endloop.
endif.
IF NOT TVBDPR-FKIMG IS INITIAL.
clear prec_doc.
first_batch = 'X'.
select * from vbfa
where vbeln = vbdkr-vbeln and posnn = vbdpr-posnr
order by stufe descending.
if vbfa-vbtyp_v = 'J' or vbfa-vbtyp_v = 'H'.
prec_doc = vbfa-vbtyp_v. "we take the latest.
endif.
endselect.
select * from vbfa
where vbeln = vbdkr-vbeln and posnn = vbdpr-posnr
and vbtyp_v = prec_doc.
select * from lips where vbeln = vbfa-vbelv and
uecha = vbfa-posnv.
clear vbdpl.
move-corresponding lips to vbdpl.
refresh zlps.
clear zlps.
zlps-vbeln = lips-vbeln.
zlps-posnr = lips-posnr.
append zlps.
if not dkmein is initial.
CALL FUNCTION 'Z_GROSS_WEIGHT2'
EXPORTING
VBELN = lips-vbeln
posnr = lips-posnr
GEWEI = dkmein
IMPORTING
BRGEW = dbrgew
TABLES
XLIPS = zlps.
refresh zlps.
clear zlps.
dbrgew = floor( dbrgew ).
endif.
CALL FUNCTION 'Z_GROSS_WEIGHT2'
EXPORTING
VBELN = lips-vbeln
posnr = lips-posnr
GEWEI = vbdkr-gewei
IMPORTING
BRGEW = vbdpl-brgew
TABLES
XLIPS = zlps.
if nast-kschl = 'ZNIN'.
vbdpl-brgew = floor( vbdpl-brgew ).
endif.
EADK902013 ->
if not dkmein is initial.
CALL FUNCTION 'UNIT_CONVERSION_SIMPLE'
EXPORTING
INPUT = vbdpl-ntgew
UNIT_IN = vbdpl-gewei
UNIT_OUT = dkmein
IMPORTING
OUTPUT = dntgew
EXCEPTIONS
CONVERSION_NOT_FOUND = 1
DIVISION_BY_ZERO = 2
INPUT_INVALID = 3
OUTPUT_INVALID = 4
OVERFLOW = 5
TYPE_INVALID = 6
UNITS_MISSING = 7
UNIT_IN_NOT_FOUND = 8
UNIT_OUT_NOT_FOUND = 9
OTHERS = 10.
endif.
-> EADK902013
if zXCHPF ne ''. "batch managed
if first_batch = 'X'.
CALL FUNCTION 'WRITE_FORM'
EXPORTING
ELEMENT = 'BATCH_START2'.
clear first_batch.
endif.
if dkmein is initial or nast-kschl ne 'ZNIN'.
CALL FUNCTION 'WRITE_FORM'
EXPORTING
ELEMENT = 'BATCH_DATA2'.
else.
CALL FUNCTION 'WRITE_FORM'
EXPORTING
ELEMENT = 'BATCH_DATA3'.
endif.
endif.
endselect.
if sy-subrc ne 0.
select * from lips where vbeln = vbfa-vbelv and
posnr = vbfa-posnv.
clear vbdpl.
move-corresponding lips to vbdpl.
refresh zlps.
clear zlps.
zlps-vbeln = lips-vbeln.
zlps-posnr = lips-posnr.
append zlps.
if not dkmein is initial.
CALL FUNCTION 'Z_GROSS_WEIGHT2'
EXPORTING
VBELN = lips-vbeln
posnr = lips-posnr
GEWEI = dkmein
IMPORTING
BRGEW = dbrgew
TABLES
XLIPS = zlps.
refresh zlps.
clear zlps.
dbrgew = floor( dbrgew ).
endif.
CALL FUNCTION 'Z_GROSS_WEIGHT2'
EXPORTING
VBELN = vbfa-vbelv
POSNR = vbfa-posnv
GEWEI = vbdkr-gewei
IMPORTING
BRGEW = vbdpl-brgew
TABLES
XLIPS = zlps.
if zXCHPF ne ''.
if nast-kschl = 'ZNIN'.
vbdpl-brgew = floor( vbdpl-brgew ).
endif.
if first_batch = 'X'.
CALL FUNCTION 'WRITE_FORM'
EXPORTING
ELEMENT = 'BATCH_START2'.
clear first_batch.
endif.
if dkmein is initial or nast-kschl ne 'ZNIN'.
CALL FUNCTION 'WRITE_FORM'
EXPORTING
ELEMENT = 'BATCH_DATA2'.
else.
CALL FUNCTION 'WRITE_FORM'
EXPORTING
ELEMENT = 'BATCH_DATA3'.
endif.
endif.
endselect.
endif.
endselect.
endif.
*ZNIN freight
if nast-kschl = 'ZNI_'.
s_netwr = s_netwr + komvd-kwert.
endif.
ENDLOOP.
ENDFORM. "ITEM_PRINT
*----
*
FORM PROTOCOL_UPDATE *
*----
*
The messages are collected for the processing protocol. *
*----
*
FORM PROTOCOL_UPDATE.
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
*----
*
FORM SENDER *
*----
*
This routine determines the address of the sender (Table VKO) *
*----
*
FORM SENDER.
SELECT SINGLE * FROM TVKO WHERE VKORG = VBDKR-VKORG.
IF SY-SUBRC NE 0.
SYST-MSGID = 'VN'.
SYST-MSGNO = '203'.
SYST-MSGTY = 'E'.
SYST-MSGV1 = 'TVKO'.
SYST-MSGV2 = SYST-SUBRC.
PERFORM PROTOCOL_UPDATE.
EXIT.
ENDIF.
clear sadr.
SELECT SINGLE * FROM SADR WHERE ADRNR = TVKO-ADRNR
AND NATIO = SPACE.
if sy-subrc ne 0.
clear ads.
ads-addrnumber = tvko-adrnr.
CALL FUNCTION 'ADDR_GET'
EXPORTING
ADDRESS_SELECTION = ads
IMPORTING
SADR = sadr
EXCEPTIONS
PARAMETER_ERROR = 1
ADDRESS_NOT_EXIST = 2
VERSION_NOT_EXIST = 3
INTERNAL_ERROR = 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.
endif.
IF SY-SUBRC NE 0.
SYST-MSGID = 'VN'.
SYST-MSGNO = '203'.
SYST-MSGTY = 'E'.
SYST-MSGV1 = 'SADR'.
SYST-MSGV2 = SYST-SUBRC.
PERFORM PROTOCOL_UPDATE.
else.
VBDKR-SLAND = SADR-LAND1.
ENDIF.
Interne Verrechnung: Adresse des Buchungskreises lesen
IF VBDKR-VBTYP CA '56'.
CLEAR T001G.
SELECT SINGLE * FROM T001G WHERE BUKRS = VBDKR-BUKRS
AND PROGRAMM EQ SY-REPID
AND TXTID EQ 'SD'.
ENDIF.
ENDFORM. "SENDER
*&----
*
*& Form START_FORM
*&----
*
text *
*----
*
FORM START_FORM.
DATA : STARTSEITE TYPE C VALUE 'X'. "FIRSTBSR'. icllahti
DATA : SPRACHE LIKE SY-LANGU.
IF VBDRE-VERFA = '04' OR VBDRE-VERFA = '08'.
CALL FUNCTION 'START_FORM'
EXPORTING
ARCHIVE_INDEX = ' '
FORM = ' '
LANGUAGE = ' '
STARTPAGE = STARTSEITE
PROGRAM = ' '
IMPORTING
LANGUAGE = SPRACHE
EXCEPTIONS
FORM = 1
FORMAT = 2
UNENDED = 3
UNOPENED = 4
UNUSED = 5
OTHERS = 6.
IF SY-SUBRC NE 0.
RETCODE = SY-SUBRC.
PERFORM PROTOCOL_UPDATE.
ENDIF.
ENDIF.
ENDFORM. " START_OPEN
*&----
*
*& Form LICENsE_PRINT
*&----
*
text: If exists, print export license and export permit
*----
*
FORM LICENSE_PRINT.
DATA: LV_TDNAME_1 LIKE VBDKR-TDNAME, " Text name for billing doc.
LV_TDNAME_2 LIKE LV_TDNAME_1, " Text name for delivery
LV_TDID_1 LIKE THEAD-TDID, " Text id for billing doc
LV_TDID_2 LIKE THEAD-TDID. " Text id for delivery
*.. Export license
PERFORM FILL_VARIABLES USING 'ZY77' 'ZY30'
CHANGING LV_TDNAME_1 LV_TDNAME_2
LV_TDID_1 LV_TDID_2.
PERFORM READ_TEXT USING LV_TDID_1 LV_TDID_2
NAST-SPRAS
LV_TDNAME_1 LV_TDNAME_2
'VBBK'.
IF SY-SUBRC EQ 0.
PERFORM WRITE_FORM USING 'LICENCE' 'HEADER'.
PERFORM WRITE_FORM_LINES TABLES IT_TEXT USING 'LICENCE'.
ENDIF.
*.. Export permit
PERFORM FILL_VARIABLES USING 'ZY78' 'ZY31'
CHANGING LV_TDNAME_1 LV_TDNAME_2
LV_TDID_1 LV_TDID_2.
PERFORM READ_TEXT USING LV_TDID_1 LV_TDID_2
NAST-SPRAS
LV_TDNAME_1 LV_TDNAME_2
'VBBK'.
IF SY-SUBRC EQ 0.
PERFORM WRITE_FORM USING 'PERMIT' 'HEADER'. " Header text for perm
PERFORM WRITE_FORM_LINES TABLES IT_TEXT USING 'PERMIT'.
ENDIF.
ENDFORM. " LICENCE_PRINT
*&----
*
*& Form GET_ADDITIONAL_VALUES
*&----
*
text: For the Forwarding Instructions layout set, additional
values are needed. These values are the Free on Board
value, and the expenses value (Insurance + freight). To
retrieve these values, a function is created which will
return these values in a data structure. This data
structure is then passed to the layout set using a
write form.
*----
*
FORM GET_ADDITIONAL_VALUES.
tables: ekko.
data: zebeln like ekbe-ebeln.
DATA: TKOMV TYPE KOMV occurs 0 with header line.
DATA: CIH TYPE KOMK .
data: ival like komv-kwert.
IF TNAPR-FONAM EQ CON_ZFORWINSTR. " Only process when layout set is
" Forwarding instruction
if VBDKR-FKART EQ 'ZF8'.
perform cons_special.
endif.
if vbdkr-fkart = 'WIA'.
perform wia_special.
endif.
if nast-kschl = 'ZFI2'.
CALL FUNCTION 'Z_FOB_EXPENSES_NEW'
EXPORTING
I_DS_VBDKR = VBDKR
IMPORTING
E_COMM1 = DS_ADD_VAL-COMM1
E_COMM2 = DS_ADD_VAL-COMM2
E_NETWR1 = DS_ADD_VAL-NETWR1
E_NETWR2 = DS_ADD_VAL-NETWR2
E_NETWR3 = DS_ADD_VAL-NETWR3
E_NETWR4 = DS_ADD_VAL-NETWR4
E_WAERK = DS_ADD_VAL-WAERK
TABLES
IT_VBDPR = TVBDPR
EXCEPTIONS
OTHERS = 1.
else.
CALL FUNCTION 'Z_FOB_EXPENSES'
EXPORTING
I_DS_VBDKR = VBDKR
IMPORTING
E_COMM1 = DS_ADD_VAL-COMM1
E_COMM2 = DS_ADD_VAL-COMM2
E_NETWR1 = DS_ADD_VAL-NETWR1
E_NETWR2 = DS_ADD_VAL-NETWR2
E_NETWR3 = DS_ADD_VAL-NETWR3
E_NETWR4 = DS_ADD_VAL-NETWR4
E_WAERK = DS_ADD_VAL-WAERK
TABLES
IT_VBDPR = TVBDPR
EXCEPTIONS
OTHERS = 1.
endif.
*ICLLAHTI
if vbdkr-fkart = 'WIA'.
ds_add_val-netwr1 = vbdkr-netwr - DS_ADD_VAL-NETWR3.
else.
DS_ADD_VAL-NETWR1 = DS_ADD_VAL-NETWR1 - DS_ADD_VAL-NETWR3.
endif.
*ICLLAHTI
IF VBDKR-FKART EQ 'ZF5'. " The values should be switched for
or VBDKR-FKART EQ 'ZF8'. " these billing types: expenses = netwr
" fob = 0.
DS_ADD_VAL-NETWR1 = DS_ADD_VAL-NETWR3. CLEAR DS_ADD_VAL-NETWR3.
DS_ADD_VAL-NETWR2 = DS_ADD_VAL-NETWR4. CLEAR DS_ADD_VAL-NETWR4.
ENDIF.
*wia & ub purchase order
if vbdkr-fkart = 'WIA'.
clear zebeln.
select single
e~ebeln
into
zebeln
from
ekbe as e inner join vbfa as v
on v~vbelv = e~belnr
where
v~vbeln = vbdkr-vbeln and
v~vbtyp_n = 'M' and
e~vgabe = '8'.
if sy-subrc = 0 and not zebeln is initial.
select single * from ekko where ebeln = zebeln and bsart = 'UB'.
if sy-subrc = 0.
clear cih.
cih-knumv = ekko-knumv.
CALL FUNCTION 'RV_KONV_SELECT'
EXPORTING
COMM_HEAD_I = cih
GENERAL_READ = ' '
READ_CONDITION_RECORD = ' '
IMPORTING
COMM_HEAD_E =
TABLES
TKOMV = tkomv
.
if sy-subrc = 0.
clear vbdkr-netwr.
loop at tkomv where kschl = 'ZP01'.
vbdkr-netwr = vbdkr-netwr + tkomv-kwert.
endloop.
clear ds_add_val-netwr3.
loop at tkomv where kschl = 'Z103' and kposn = '000000'.
ds_add_val-netwr3 = ds_add_val-netwr3 + tkomv-kwert.
endloop.
loop at tkomv where kschl = 'Z104' and kposn = '000000'.
ds_add_val-netwr3 = ds_add_val-netwr3 + tkomv-kwert.
endloop.
loop at tkomv where kschl = 'Z105' and kposn = '000000'.
ds_add_val-netwr3 = ds_add_val-netwr3 + tkomv-kwert.
endloop.
loop at tkomv where kschl = 'Z106' and kposn = '000000'.
ds_add_val-netwr3 = ds_add_val-netwr3 + tkomv-kwert.
endloop.
loop at tkomv where kschl = 'Z302' and kposn = '000000'.
ds_add_val-netwr3 = ds_add_val-netwr3 + tkomv-kwert.
endloop.
ds_add_val-netwr1 = vbdkr-netwr - ds_add_val-netwr3.
endif.
endif.
endif.
endif.
ENDIF.
..Start IHO20040311 ..
move ds_add_val-netwr1 to ps_add_val-netwr1.
move ds_add_val-netwr2 to ps_add_val-netwr2.
move ds_add_val-netwr3 to ps_add_val-netwr3.
move ds_add_val-netwr4 to ps_add_val-netwr4.
..End IHO20040311 ..
ENDFORM. " GET_ADDITIONAL_VALUES
*&----
*
*& Form GET_NUMBER_OF_PALLETS_PACK *
*&----
*
text: Determine the number of pallets - packaging on the invoice
*----
*
--> ip_split text: Indicator to split packaging/pallets per *
delivery item *
*----
*
FORM GET_NUMBER_OF_PALLETS_PACK USING IP_SPLIT TYPE C.
if nast-kschl = 'ZINE'.
if not vbdkr-vbeln_vl is initial.
refresh tlin.
concatenate vbdkr-vbeln_vl '%' into tdn.
tds = nast-spras.
tdi = 'ZE03'.
tdo = 'VBBP'.
select single * from stxh where tdname like tdn
and tdspras = tds and tdid = tdi and tdobject = tdo.
if sy-subrc ne 0.
select single * from stxh where tdname like tdn
and tdid = tdi and tdobject = tdo.
endif.
if sy-subrc = 0.
refresh tlin.
CALL FUNCTION 'READ_TEXT'
EXPORTING
CLIENT = SY-MANDT
ID = stxh-tdid
LANGUAGE = stxh-tdspras
NAME = stxh-tdname
OBJECT = stxh-tdobject
ARCHIVE_HANDLE = 0
LOCAL_CAT = ' '
IMPORTING
HEADER =
TABLES
LINES = tlin
EXCEPTIONS
ID = 1
LANGUAGE = 2
NAME = 3
NOT_FOUND = 4
OBJECT = 5
REFERENCE_CHECK = 6
WRONG_ACCESS_TO_ARCHIVE = 7
OTHERS = 8
.
IF SY-SUBRC = 0.
clear gv_nopal.
loop at tlin where tdline ne ''.
if gv_nopal is initial.
gv_nopal = tlin-tdline.
gv_tnopal = gv_tnopal + gv_nopal. "ERDK905353
endif.
endloop.
ENDIF.
endif.
refresh tlin.
tdi = 'ZE04'.
select single * from stxh where tdname like tdn
and tdspras = tds and tdid = tdi and tdobject = tdo.
if sy-subrc ne 0.
select single * from stxh where tdname like tdn
and tdid = tdi and tdobject = tdo.
endif.
if sy-subrc = 0.
refresh tlin.
CALL FUNCTION 'READ_TEXT'
EXPORTING
CLIENT = SY-MANDT
ID = stxh-tdid
LANGUAGE = stxh-tdspras
NAME = stxh-tdname
OBJECT = stxh-tdobject
ARCHIVE_HANDLE = 0
LOCAL_CAT = ' '
IMPORTING
HEADER =
TABLES
LINES = tlin
EXCEPTIONS
ID = 1
LANGUAGE = 2
NAME = 3
NOT_FOUND = 4
OBJECT = 5
REFERENCE_CHECK = 6
WRONG_ACCESS_TO_ARCHIVE = 7
OTHERS = 8
.
IF SY-SUBRC = 0.
clear gv_nopck.
loop at tlin where tdline ne ''.
if gv_nopck is initial.
gv_nopck = tlin-tdline.
gv_tnopck = gv_tnopck + gv_nopck. "ERDK905335
endif.
endloop.
ENDIF.
endif.
endif.
else.
if 1 = 9.
CALL FUNCTION 'Z_PALLET_PACKAGING'
EXPORTING
I_DS_VBDKR = VBDKR
I_POS = IP_SPLIT " Split per delivery item ?
IMPORTING
E_NOPAL = GV_NOPAL
E_NOPACK = GV_NOPCK
TABLES
IT_VBDPR = TVBDPR
EXCEPTIONS
OTHERS = 1.
import it_palpack from memory id 'Tim'. " Not necessary here because
" no split per item is
" required here
endif.
perform get_data_from_txt.
DATA: LV_TDNAME LIKE NAST-TDNAME. "ERDK905512
read table tvbdpr index gv_ppline. "ERDK905512
lv_tdname = tvbdpr-tdname. "ERDK905512
PERFORM READ_TEXT_INLINE USING 'ZE03' 'E' LV_TDNAME 'VBBP'."ERDK905512
if sy-subrc = 0. "ERDK905512
perform PALLETS_FROM_TEXT changing gv_nopal. "ERDK905512
gv_tnopal = gv_tnopal + gv_nopal. "ERDK905512
endif. "ERDK905512
PERFORM READ_TEXT_INLINE USING 'ZE04' 'E' LV_TDNAME 'VBBP'."ERDK905512
if sy-subrc = 0. "ERDK905512
perform PALLETS_FROM_TEXT changing gv_nopck. "ERDK905512
gv_tnopck = gv_tnopck + gv_nopck. "ERDK905512
endif.
endif.
ENDFORM. " GET_NUMBER_OF_PALLETS_PACK
*&----
*
*& Form INITIALIZE
*&----
*
text: Initialize used variables
*----
*
FORM INITIALIZE.
*...PN20021004
*...next line commented out
NAST-SPRAS = 'E'.
*...
GV_GETDESC = 'X'.
GV_PACKINDEX = '1'.
GV_MAKTXINDEX = '5'.
GV_PACKAGING = 'X'.
GV_MATDESC = 'X'.
clear taxtypes.
clear multihs.
clear xzz95.
clear cp2.
clear cp3.
clear carr1.
clear all_ztad.
clear excl_dlvno.
clear mult_ord.
clear ferdat.
clear memo.
clear domestic.
clear domes_fi.
clear norway.
clear f_podate.
clear orderer.
clear iernam.
clear gs_invadr.
clear zbnk_ref.
clear no_eur.
clear incl_rahti.
clear gv_tnopal.
clear gv_tnopck.
clear gv_nopal.
clear gv_nopck.
CLEAR: TITLE_1, TITLE_2,
GV_NOPAL,
GV_NOPCK,
GV_DUEDT_1,
GV_DUEDT_2,
GV_DUEDT_3,
GV_WERKS,
GV_AMONT_1,
GV_AMONT_2,
GV_AMONT_3,
ZCOM1,
ZCOM2,
GV_LANDX_SP,
GV_LANDX_SH,
GV_LANDK_SP,
GV_LANDK_SH,
GV_PAYM.
*.. Refresh internal tables
REFRESH: IT_DOGO,
IT_PAYM,
IT_CERT,
IT_CAR1,
IT_CAR2,
IT_PLDI,
IT_FIDE,
IT_FROM,
IT_VIA,
IT_CARR,
IT_WANO,
IT_SHMA,
IT_SHDA,
IT_MEINS,
IT_ARKTX,
IT_COMBINE.
refresh s_rebate.
clear s_rebate.
s_rebate-low = 'ZB1'.
s_rebate-sign = 'I'.
s_rebate-option = 'EQ'.
append s_rebate.
s_rebate-low = 'ZB2'.
s_rebate-sign = 'I'.
s_rebate-option = 'EQ'.
append s_rebate.
s_rebate-low = 'ZB3'.
s_rebate-sign = 'I'.
s_rebate-option = 'EQ'.
append s_rebate.
s_rebate-low = 'ZB4'.
s_rebate-sign = 'I'.
s_rebate-option = 'EQ'.
append s_rebate.
s_rebate-low = 'ZCR'.
s_rebate-sign = 'I'.
s_rebate-option = 'EQ'.
append s_rebate.
s_rebate-low = 'ZDR'.
s_rebate-sign = 'I'.
s_rebate-option = 'EQ'.
append s_rebate.
clear factorin.
clear: t_netwr.
ENDFORM. " INITIALIZE
*&----
*
*& Form READ_TEXT
*&----
*
text: Call function module to read certain text types
*----
*
--> ip_id text: Text id *
--> ip_spras text: Language key *
--> ip_tdname text: Text name *
--> ip_object text: Texts: application object *
*----
*
FORM READ_TEXT USING IP_ID_1 LIKE THEAD-TDID
IP_ID_2 LIKE THEAD-TDID
IP_SPRAS LIKE NAST-SPRAS
IP_TDNAME_1 LIKE THEAD-TDNAME
IP_TDNAME_2 LIKE THEAD-TDNAME
IP_OBJECT LIKE THEAD-TDOBJECT.
REFRESH IT_TEXT. CLEAR IT_TEXT.
*.. Determine the text for the billing doc. If the billing doc. is
*.. referenced to a sales order, we will look in the delivery if the
*.. text field was not found in the billing document. We have to do this
*.. because there are problems with the text copying. If the billing
*.. document is referenced to a delivery ip_tdname_2 will be empty. In
*.. other words we will not look in the delivery because then, normally
*.. the text will be copied from the delivery.
if 1 = 1.
CALL FUNCTION 'Z_READ_BILLING_TEXT'
EXPORTING
IP_ID_1 = IP_ID_1
IP_ID_2 = IP_ID_2
IP_SPRAS = IP_SPRAS
IP_TDNAME_1 = IP_TDNAME_1
IP_TDNAME_2 = IP_TDNAME_2
IP_OBJECT = IP_OBJECT
TABLES
IT_TEXT = IT_TEXT
EXCEPTIONS
ID = 1
LANGUAGE = 2
NAME = 3
NOT_FOUND = 4
OBJECT = 5
OTHERS = 6.
if IT_TEXT[] is initial.
CALL FUNCTION 'Z_READ_BILLING_TEXT'
EXPORTING
IP_ID_1 = IP_ID_1
IP_ID_2 = IP_ID_2
IP_SPRAS = 'D'
IP_TDNAME_1 = IP_TDNAME_1
IP_TDNAME_2 = IP_TDNAME_2
IP_OBJECT = IP_OBJECT
TABLES
IT_TEXT = IT_TEXT
EXCEPTIONS
ID = 1
LANGUAGE = 2
NAME = 3
NOT_FOUND = 4
OBJECT = 5
OTHERS = 6.
endif.
if IT_TEXT[] is initial.
CALL FUNCTION 'Z_READ_BILLING_TEXT'
EXPORTING
IP_ID_1 = IP_ID_1
IP_ID_2 = IP_ID_2
IP_SPRAS = 'E'
IP_TDNAME_1 = IP_TDNAME_1
IP_TDNAME_2 = IP_TDNAME_2
IP_OBJECT = IP_OBJECT
TABLES
IT_TEXT = IT_TEXT
EXCEPTIONS
ID = 1
LANGUAGE = 2
NAME = 3
NOT_FOUND = 4
OBJECT = 5
OTHERS = 6.
endif.
endif.
ENDFORM. " READ_TEXT
*&----
*
*& Form DESTINATION_COUNTRY
*&----
*
text: If the billing document is for a return, the destination *
country is the country of the shipping point. This is the*
case for billing types 'ZRT' and 'ZKR'. *
*----
*
--> ip_vstel text: Shipping point
*----
*
FORM DESTINATION_COUNTRY USING IP_VSTEL.
IF VBDKR-FKART EQ 'ZRT' OR
VBDKR-FKART EQ 'ZKR'.
SELECT SINGLE ALAND
INTO (VBDKR-LLAND)
FROM TVST
WHERE VSTEL EQ IP_VSTEL.
IF SY-SUBRC NE 0.
CLEAR VBDKR-LLAND.
ENDIF.
ENDIF.
ENDFORM. " DESTINATION_COUNTRY
*&----
*
*& Form ITEM_PRINT_WAYBCMRPORI
*&----
*
text: Print item data for International waybill
*----
*
FORM ITEM_PRINT_WAYBCMRPORI.
*perform initialize. " Subho
CALL FUNCTION 'WRITE_FORM' "First header
EXPORTING ELEMENT = 'ITEM_HEADER'
EXCEPTIONS OTHERS = 1.
IF SY-SUBRC NE 0.
PERFORM PROTOCOL_UPDATE.
ENDIF.
ENDFORM. " ITEM_PRINT_WAYBCMRPORI
*&----
*
*& Form GET_DESCRIPTION_OF_GOODS
*&----
*
text: Retrieve the description of goods text. This is a free
text field and can be found in the sales text of the
invoice item. The assumption is made that this text is
the same for every line item. That is why the first text
of the first item line is read.
*----
*
FORM GET_DESCRIPTION_OF_GOODS.
DATA: LV_TDNAME_1 LIKE THEAD-TDNAME,
LV_TDNAME_2 LIKE THEAD-TDNAME,
LV_TDID_1 LIKE THEAD-TDID,
LV_TDID_2 LIKE THEAD-TDID.
if 1 = 0.
if vbdkr-vkorg = 'KCOY' and nast-kschl = 'ZCEA'. "skip sales text
else.
READ TABLE TVBDPR INDEX 1.
LV_TDNAME_1 = TVBDPR-TDNAME.
LV_TDID_1 = '0001'.
IF Z_REF_DOC_TYPE = 'ORD'.
CONCATENATE TVBDPR-VBELN_VL TVBDPR-POSNR_VL INTO LV_TDNAME_2.
ENDIF.
PERFORM READ_TEXT USING LV_TDID_1 LV_TDID_2
NAST-SPRAS
LV_TDNAME_1 LV_TDNAME_2
'VBBP'.
LOOP AT IT_TEXT.
IF IT_TEXT-TDFORMAT = '*'.
This line is commented by subhasish
check ds_main-dogotext is initial.
*......... Description of goods
APPEND IT_TEXT TO IT_DOGO.
ENDIF.
ENDLOOP.
*........ Text can contain a maximum of 5 lines
if vbdkr-vkorg = 'K301'.
loop at it_dogo where tdline = ''.
delete it_dogo.
endloop.
endif.
DELETE IT_DOGO FROM 7.
endif.
endif.
ENDFORM. " GET_DESCRIPTION_OF_GOODS
*&----
*
*& Form WRITE_FORM_LINES
*&----
*
text: Write an internal table containing free text to a certain
window/element.
*----
*
FORM WRITE_FORM_LINES TABLES IT_TEXT STRUCTURE TLINE
USING IP_WINDOW TYPE C.
CALL FUNCTION 'WRITE_FORM_LINES'
EXPORTING
FUNCTION = 'APPEND'
HEADER = THEAD
WINDOW = IP_WINDOW
TABLES
LINES = IT_TEXT
EXCEPTIONS
FUNCTION = 1
TYPE = 2
UNOPENED = 3
UNSTARTED = 4
WINDOW = 5
OTHERS = 6.
IF SY-SUBRC NE 0.
PERFORM PROTOCOL_UPDATE.
ENDIF.
ENDFORM. " WRITE_FORM_LINES
*&----
*
*& Form WRITE_FORM
*&----
*
text
*----
*
FORM WRITE_FORM USING IP_WINDOW TYPE C
IP_ELEMENT TYPE C.
CALL FUNCTION 'WRITE_FORM'
EXPORTING
WINDOW = IP_WINDOW
ELEMENT = IP_ELEMENT
EXCEPTIONS
ELEMENT = 1
WINDOW = 2.
IF SY-SUBRC NE 0.
PERFORM PROTOCOL_UPDATE.
ENDIF.
ENDFORM. " WRITE_FORM
*&----
*
*& Form GET_PAYMENT_TEXT
*&----
*
text: Retrieve the payment text using function module read_text
*----
*
FORM GET_PAYMENT_TEXT.
DATA: LV_TDNAME_1 LIKE THEAD-TDNAME,
LV_TDNAME_2 LIKE THEAD-TDNAME,
LV_TDID_1 LIKE THEAD-TDID,
LV_TDID_2 LIKE THEAD-TDID.
PERFORM FILL_VARIABLES USING 'ZE62' LV_TDID_2
CHANGING LV_TDNAME_1 LV_TDNAME_2
LV_TDID_1 LV_TDID_2.
PERFORM READ_TEXT USING LV_TDID_1 LV_TDID_2
NAST-SPRAS
LV_TDNAME_1 LV_TDNAME_2
'VBBK'.
IF SY-SUBRC EQ 0.
GV_PAYM = 'X'.
APPEND LINES OF IT_TEXT TO IT_PAYM.
ENDIF.
ENDFORM. " GET_PAYMENT_TEXT
*&----
*
*& Form GET_CERTIFICATION_CLAUSE
*&----
*
text: If the billing document has a delivery as reference doc.
the free text field can be found in id ZY64 (object VBBK).
If it has an order as reference doc. the free text field
can be found in id ZY40 (object VBBK).
*----
*
FORM GET_CERTIFICATION_CLAUSE.
DATA: LV_TDNAME_1 LIKE THEAD-TDNAME,
LV_TDNAME_2 LIKE THEAD-TDNAME,
LV_TDID_1 LIKE THEAD-TDID,
LV_TDID_2 LIKE THEAD-TDID.
PERFORM FILL_VARIABLES USING 'ZY64' 'ZY40'
CHANGING LV_TDNAME_1 LV_TDNAME_2
LV_TDID_1 LV_TDID_2.
PERFORM READ_TEXT USING LV_TDID_1 LV_TDID_2
NAST-SPRAS
LV_TDNAME_1 LV_TDNAME_2
'VBBK'.
IF SY-SUBRC EQ 0.
APPEND LINES OF IT_TEXT TO IT_CERT.
CLEAR IT_CERT. IT_CERT-TDFORMAT = '*'.
APPEND IT_CERT. " Blank line
*.. If the paragraph format for the first line is continuous text,
.. put ''
READ TABLE IT_CERT INDEX 1.
IF IT_CERT-TDFORMAT IS INITIAL.
IT_CERT-TDFORMAT = '*'.
MODIFY IT_CERT INDEX 1.
ENDIF.
ENDIF.
ENDFORM. " GET_CERTIFICATION_CLAUSE
*&----
*
*& Form GET_DUE_DATE
*&----
*
text: Calculate the payment due date for the invoice. The data
necessary to do this can be found in the BSEG table
(accounting document items). The accounting document for
a billing document can be found using an index on table
BKPF (index --> AWTYP + AWKEY). An accounting document
can have 3 due dates.
*----
*
FORM GET_DUE_DATE.
DATA: LV_INDEX(1) TYPE N VALUE '1',
LV_FIELD(10),
LV_DATUM LIKE SY-DATUM.
SELECT BELNR WAERS " Select the accounting document for the invoice
FROM BKPF
INTO (BKPF-BELNR, BKPF-WAERS)
WHERE AWTYP EQ 'VBRK'
AND AWKEY EQ VBDKR-VBELN.
EXIT.
ENDSELECT.
IF SY-SUBRC EQ 0. " Select the accounting document data
SELECT ZBD1T ZBD2T ZBD3T REBZG SHKZG WRBTR PSWSL
INTO (BSEG-ZBD1T, BSEG-ZBD2T, BSEG-ZBD3T, BSEG-REBZG, BSEG-SHKZG,
BSEG-WRBTR, BSEG-PSWSL)
FROM BSEG
WHERE BUKRS EQ VBDKR-BUKRS
AND BELNR EQ BKPF-BELNR
AND GJAHR EQ VBDKR-FKDAT+0(4)
AND KOART EQ 'D'.
MOVE VBDKR-ZFBDT TO LV_DATUM. " Base line date
*.. The field ZFBDT contains the base line date for calculating the due
*.. date. This date is calculated by adding the payment terms day to
*.. this base line (only if the accounting line is debit)
IF BSEG-SHKZG = 'S'.
IF BSEG-ZBD3T NE 0.
ADD BSEG-ZBD3T TO LV_DATUM.
ELSEIF BSEG-ZBD2T NE 0.
ADD BSEG-ZBD2T TO LV_DATUM.
ELSEIF BSEG-ZBD1T NE 0.
ADD BSEG-ZBD1T TO LV_DATUM.
ENDIF.
ENDIF.
*.. Move calculated duedate - amount to internal table
CONCATENATE 'GV_DUEDT_' LV_INDEX INTO LV_FIELD.
ASSIGN (LV_FIELD) TO .
IF BSEG-WRBTR NE 0. " If a value is known
<f> = bseg-wrbtr.
WRITE BSEG-WRBTR TO CURRENCY BKPF-WAERS.
ENDIF.
ADD 1 TO LV_INDEX.
ENDSELECT.
ENDIF.
ENDFORM. " GET_DUE_DATE
*&----
*
*& Form GET_BILLING_DATE
*&----
*
text: If the text field (object VBBK id ZY65) is filled in, use
this for the billing date. The date should always be
filled in on the first line with the format YYYYMMDD.
*----
*
FORM GET_BILLING_DATE.
data: xconv(1) type c.
data: xslen type i.
PERFORM READ_TEXT USING 'ZY65' ' '
NAST-SPRAS
VBDKR-TDNAME ' '
'VBBK'.
IF NOT IT_TEXT[] IS INITIAL.
READ TABLE IT_TEXT INDEX 1.
shift it_text-tdline left deleting leading ' '.
xslen = strlen( it_text-tdline ).
clear xconv.
if it_text-tdline cp '+..+++' and xconv is initial and
xslen = 10.
concatenate it_text-tdline6(4) it_text-tdline3(2)
it_text-tdline+0(2) into vbdkr-fkdat.
xconv = 'X'.
endif.
if it_text-tdline cp '+..+' and xconv is initial and
xslen = 8.
concatenate '20' it_text-tdline6(2) it_text-tdline3(2)
it_text-tdline+0(2) into vbdkr-fkdat.
xconv = 'X'.
endif.
if it_text-tdline cp '+//+++' and xconv is initial and
xslen = 10.
concatenate it_text-tdline6(4) it_text-tdline0(2)
it_text-tdline+3(2) into vbdkr-fkdat.
xconv = 'X'.
endif.
if it_text-tdline cp '+//+' and xconv is initial and
xslen = 8.
concatenate '20' it_text-tdline6(2) it_text-tdline0(2)
it_text-tdline+3(2) into vbdkr-fkdat.
xconv = 'X'.
endif.
if xconv is initial.
VBDKR-FKDAT = IT_TEXT-TDLINE+0(8).
endif.
ENDIF.
ENDFORM. " GET_BILLING_DATE
*&----
*
*& Form FOREIGN_TRADE_DATA
*&----
*
text: In this form we will check the existence of the foreign
trade data. If it exists, we will fill the ZCOM1 and ZCOM2
variables with the first 2 different commodity codes found
(space is also a comm. code). If the foreign trade data
does not exist, we will retrieve it first and fill the
above mentioned variables in a simular way and we also
fill the country of origin on header level.
*----
*
FORM FOREIGN_TRADE_DATA.
*.. Local variables
DATA: LV_COMM2.
loop at tvbdpr.
if tvbdpr-stawn is initial and not tvbdpr-exnum is initial.
select single stawn into tvbdpr-stawn from eipo where
exnum = tvbdpr-exnum.
modify tvbdpr.
endif.
if tvbdpr-stawn is initial.
select single stawn into tvbdpr-stawn from marc
where matnr = tvbdpr-matnr and werks = tvbdpr-werks.
modify tvbdpr.
endif.
endloop.
IF VBDKR-EXNUM IS INITIAL. " Foreign trade data does not exist
if 1 = 1.
LOOP AT TVBDPR. " For every billing item
SELECT SINGLE WERKS " Select the plant (not available in
INTO VBRP-WERKS " structure VBDPR)
FROM VBRP
WHERE VBELN = VBDKR-VBELN
AND POSNR = TVBDPR-POSNR.
IF SY-SUBRC EQ 0. " If found
SELECT SINGLE HERKL " Select comm. code + cntry of orig.
INTO (tVBDPR-HERKL)
FROM MARC
WHERE MATNR = TVBDPR-MATNR
AND WERKS = VBRP-WERKS.
IF SY-SUBRC EQ 0. " If found
MODIFY TVBDPR. " Modify TVBDPR table
IF SY-TABIX EQ 1.
VBDKR-HERKL = TVBDPR-HERKL." Country of origin on header
ZCOM1 = TVBDPR-STAWN. " Fill first comm. code (even
" space)
ENDIF.
IF LV_COMM2 IS INITIAL AND ZCOM1 NE TVBDPR-STAWN.
ZCOM2 = TVBDPR-STAWN. " Fill second comm. code
LV_COMM2 = 'X'.
ENDIF.
ENDIF.
ENDIF.
ENDLOOP.
else.
LOOP AT TVBDPR. " For every billing item
SELECT SINGLE WERKS " Select the plant (not available in
INTO VBRP-WERKS " structure VBDPR)
FROM VBRP
WHERE VBELN = VBDKR-VBELN
AND POSNR = TVBDPR-POSNR.
IF SY-SUBRC EQ 0. " If found
SELECT SINGLE STAWN HERKL " Select comm. code + cntry of orig.
INTO (TVBDPR-STAWN, TVBDPR-HERKL)
FROM MARC
WHERE MATNR = TVBDPR-MATNR
AND WERKS = VBRP-WERKS.
IF SY-SUBRC EQ 0. " If found
MODIFY TVBDPR. " Modify TVBDPR table
IF SY-TABIX EQ 1.
VBDKR-HERKL = TVBDPR-HERKL." Country of origin on header
ZCOM1 = TVBDPR-STAWN. " Fill first comm. code (even
" space)
ENDIF.
IF LV_COMM2 IS INITIAL AND ZCOM1 NE TVBDPR-STAWN.
ZCOM2 = TVBDPR-STAWN. " Fill second comm. code
LV_COMM2 = 'X'.
ENDIF.
ENDIF.
ENDIF.
ENDLOOP.
endif.
ELSE. " Foreign trade data exists
LOOP AT TVBDPR.
IF SY-TABIX EQ 1.
ZCOM1 = TVBDPR-STAWN. " Fill first comm. code
ENDIF.
IF LV_COMM2 IS INITIAL AND ZCOM1 NE TVBDPR-STAWN.
ZCOM2 = TVBDPR-STAWN. " Fill second comm. code
EXIT.
ENDIF.
ENDLOOP.
ENDIF.
ENDFORM. " FOREIGN_TRADE_DATA
*&----
*
*& Form GET_CARRIAGE_1
*&----
*
text: If the billing document has a delivery as reference doc.
the free text field can be found in id ZY44 (object VBBK).
If it has an order as reference doc. the free text field
can be found in id ZE23 (object VBBK).
*----
*
FORM GET_CARRIAGE_1.
DATA: LV_TDNAME_1 LIKE THEAD-TDNAME,
LV_TDNAME_2 LIKE THEAD-TDNAME,
LV_TDID_1 LIKE THEAD-TDID,
LV_TDID_2 LIKE THEAD-TDID.
data: clli type i.
refresh it_car1.
PERFORM FILL_VARIABLES USING 'ZE23' 'ZY44'
CHANGING LV_TDNAME_1 LV_TDNAME_2
LV_TDID_1 LV_TDID_2.
PERFORM READ_TEXT USING LV_TDID_1 LV_TDID_2
NAST-SPRAS
LV_TDNAME_1 LV_TDNAME_2
'VBBK'.
IF SY-SUBRC EQ 0.
APPEND LINES OF IT_TEXT TO IT_CAR1.
ENDIF.
describe table it_car1 lines clli.
if clli = 0.
clear eikp.
select single * from eikp where exnum = vbdkr-exnum.
clear it_car1.
it_car1-tdline = eikp-kzabe.
append it_car1.
endif.
ENDFORM. " GET_CARRIAGE_1
*&----
*
*& Form GET_CARRIAGE_2
*&----
*
text: If the billing document has a delivery as reference doc.
the free text field can be found in id ZY45 (object VBBK).
If it has an order as reference doc. the free text field
can be found in id ZE24 (object VBBK).
*----
*
FORM GET_CARRIAGE_2.
DATA: LV_TDNAME_1 LIKE THEAD-TDNAME,
LV_TDNAME_2 LIKE THEAD-TDNAME,
LV_TDID_1 LIKE THEAD-TDID,
LV_TDID_2 LIKE THEAD-TDID.
PERFORM FILL_VARIABLES USING 'ZE24' 'ZY45'
CHANGING LV_TDNAME_1 LV_TDNAME_2
LV_TDID_1 LV_TDID_2.
PERFORM READ_TEXT USING LV_TDID_1 LV_TDID_2
NAST-SPRAS
LV_TDNAME_1 LV_TDNAME_2
'VBBK'.
IF SY-SUBRC EQ 0.
APPEND LINES OF IT_TEXT TO IT_CAR2.
ENDIF.
ENDFORM. " GET_CARRIAGE_2
*&----
*
*& Form GET_PLACE_OF_DISCHARGE
*&----
*
text: If the billing document has a delivery as reference doc.
the free text field can be found in id ZY48 (object VBBK).
If it has an order as reference doc. the free text field
can be found in id ZE27 (object VBBK).
*----
*
FORM GET_PLACE_OF_DISCHARGE.
DATA: LV_TDNAME_1 LIKE THEAD-TDNAME,
LV_TDNAME_2 LIKE THEAD-TDNAME,
LV_TDID_1 LIKE THEAD-TDID,
LV_TDID_2 LIKE THEAD-TDID.
refresh it_text.
select single * from stxh where tdobject = 'VBBK' and
tdid = 'ZE27' and tdspras = nast-spras and tdname = vbdkr-tdname.
if sy-subrc = 0.
PERFORM FILL_VARIABLES USING 'ZE27' ''
CHANGING LV_TDNAME_1 lv_tdname_2
LV_TDID_1 lv_tdid_2.
PERFORM READ_TEXT USING LV_TDID_1 LV_TDID_2
NAST-SPRAS
LV_TDNAME_1 LV_TDNAME_2
'VBBK'.
else.
clear it_text.
select single ablad into it_text-tdline
from likp where vbeln = z_deliv_no.
it_text-tdformat = '/'.
append it_text.
endif.
APPEND LINES OF IT_TEXT TO IT_PLDI.
ENDFORM. " GET_PLACE_OF_DISCHARGE
*&----
*
*& Form GET_FINAL_DESTINATION
*&----
*
text: If the billing document has a delivery as reference doc.
the free text field can be found in id ZY48 (object VBBK).
If it has an order as reference doc. the free text field
can be found in id ZE27 (object VBBK).
*----
*
FORM GET_FINAL_DESTINATION.
DATA: LV_TDNAME_1 LIKE THEAD-TDNAME,
LV_TDNAME_2 LIKE THEAD-TDNAME,
LV_TDID_1 LIKE THEAD-TDID,
LV_TDID_2 LIKE THEAD-TDID.
data: itl type i.
refresh it_fide.
PERFORM FILL_VARIABLES USING 'ZE34' ''
CHANGING LV_TDNAME_1 LV_TDNAME_2
LV_TDID_1 LV_TDID_2.
PERFORM READ_TEXT USING LV_TDID_1 LV_TDID_2
NAST-SPRAS
LV_TDNAME_1 LV_TDNAME_2
'VBBK'.
describe table it_text lines itl.
IF itl > 0.
APPEND LINES OF IT_TEXT TO IT_FIDE.
else.
clear it_fide.
it_fide-tdformat = '/'.
if nast-kschl = 'ZNIN' and vbdkr-regio_we ne ''.
concatenate vbdkr-ORT01_WE ',' vbdkr-regio_we into it_fide-tdline.
else.
it_fide-tdline = vbdkr-ORT01_WE.
endif.
append it_fide.
ENDIF.
describe table it_fide lines itl.
if itl = 0.
clear it_fide.
it_fide-tdline = z_final.
append it_fide.
endif.
ENDFORM. " GET_FINAL_DESTINATION
*&----
*
*& Form FILL_VARIABLES
*&----
*
text: Fill variables to retrieve the texts
*----
*
--> ip_id1 text: Value for text id of the billing doc. *
--> ip_id2 text: Value for text id of the delivery *
<-- ep_tdname_1 text: Text name for billing document *
<-- ep_tdname_2 text: Text name for delivery document *
<-- ep_tdid_1 text: Text id for billing document *
<-- ep_tdid_2 text: Text id for delivery document *
*----
*
FORM FILL_VARIABLES USING VALUE(IP_ID1)
VALUE(IP_ID2)
CHANGING EP_TDNAME_1
EP_TDNAME_2
EP_TDID_1
EP_TDID_2.
EP_TDNAME_1 = VBDKR-TDNAME.
EP_TDID_1 = IP_ID1.
IF Z_REF_DOC_TYPE = 'ORD'.
EP_TDNAME_2 = Z_DELIV_NO.
EP_TDID_2 = IP_ID2.
ENDIF.
ENDFORM. " FILL_VARIABLES
*&----
*
*& Form GET_FROM
*&----
*
text: If the billing document has a delivery as reference doc.
the free text field can be found in id ZY46 (object VBBK).
If it has an order as reference doc. the free text field
can be found in id ZE25 (object VBBK).
*----
*
FORM GET_FROM.
DATA: LV_TDNAME_1 LIKE THEAD-TDNAME,
LV_TDNAME_2 LIKE THEAD-TDNAME,
LV_TDID_1 LIKE THEAD-TDID,
LV_TDID_2 LIKE THEAD-TDID.
data: zwerks like lips-werks,
zname1 like t001w-name1.
data: zort01 like t001w-ort01.
data: zreg01 like t001w-regio.
PERFORM FILL_VARIABLES USING 'ZE25' 'ZE25'
CHANGING LV_TDNAME_1 LV_TDNAME_2
LV_TDID_1 LV_TDID_2.
PERFORM READ_TEXT USING LV_TDID_1 LV_TDID_2
NAST-SPRAS
LV_TDNAME_1 LV_TDNAME_2
'VBBK'.
IF SY-SUBRC EQ 0.
APPEND LINES OF IT_TEXT TO IT_FROM.
else.
clear zort01.
clear zreg01.
select single werks into zwerks from lips
where vbeln = Z_DELIV_NO.
if sy-subrc = 0.
select single ort01 regio into (zort01,zreg01) from t001w
where werks = zwerks.
if sy-subrc = 0.
move '/ ' to it_from-tdformat.
if nast-kschl = 'ZNIN' and zreg01 ne ''.
concatenate zort01 ',' zreg01 into it_from-tdline.
else.
move zort01 to it_from-tdline.
endif.
append it_from.
endif.
endif.
ENDIF.
ENDFORM. " GET_FROM
*&----
*
*& Form GET_VIA
*&----
*
text: If the billing document has a delivery as reference doc.
the free text field can be found in id ZY47 (object VBBK).
If it has an order as reference doc. the free text field
can be found in id ZE26 (object VBBK).
*----
*
FORM GET_VIA.
DATA: LV_TDNAME_1 LIKE THEAD-TDNAME,
LV_TDNAME_2 LIKE THEAD-TDNAME,
LV_TDID_1 LIKE THEAD-TDID,
LV_TDID_2 LIKE THEAD-TDID.
PERFORM FILL_VARIABLES USING 'ZE26' 'ZE26'
CHANGING LV_TDNAME_1 LV_TDNAME_2
LV_TDID_1 LV_TDID_2.
PERFORM READ_TEXT USING LV_TDID_1 LV_TDID_2
NAST-SPRAS
LV_TDNAME_1 LV_TDNAME_2
'VBBK'.
IF SY-SUBRC EQ 0.
APPEND LINES OF IT_TEXT TO IT_VIA.
ENDIF.
ENDFORM. " GET_VIA
*&----
*
*& Form GET_SHIPPING_MARKS
*&----
*
text: If the billing document has a delivery as reference doc.
the free text field can be found in id ZY13 (object VBBK).
If it has an order as reference doc. the free text field
can be found in id ZY12 (object VBBK).
*----
*
FORM GET_SHIPPING_MARKS.
DATA: LV_TDNAME_1 LIKE THEAD-TDNAME,
LV_TDNAME_2 LIKE THEAD-TDNAME,
LV_TDID_1 LIKE THEAD-TDID,
LV_TDID_2 LIKE THEAD-TDID.
PERFORM FILL_VARIABLES USING 'ZY11' 'ZY11'
CHANGING LV_TDNAME_1 LV_TDNAME_2
LV_TDID_1 LV_TDID_2.
PERFORM READ_TEXT USING LV_TDID_1 LV_TDID_2
NAST-SPRAS
LV_TDNAME_1 LV_TDNAME_2
'VBBK'.
IF SY-SUBRC EQ 0.
APPEND LINES OF IT_TEXT TO IT_SHMA.
ENDIF.
ENDFORM. " GET_SHIPPING_MARKS
*&----
*
*& Form GET_SHIPPING_DATE
*&----
*
text: If the billing document has a delivery as reference doc.
the free text field can be found in id ZY70 (object VBBK).
If it has an order as reference doc. the free text field
can be found in id ZY32 (object VBBK).
*----
*
FORM GET_SHIPPING_DATE.
DATA: LV_TDNAME_1 LIKE THEAD-TDNAME,
LV_TDNAME_2 LIKE THEAD-TDNAME,
LV_TDID_1 LIKE THEAD-TDID,
LV_TDID_2 LIKE THEAD-TDID.
PERFORM FILL_VARIABLES USING 'ZY70' 'ZY32'
CHANGING LV_TDNAME_1 LV_TDNAME_2
LV_TDID_1 LV_TDID_2.
PERFORM READ_TEXT USING LV_TDID_1 LV_TDID_2
NAST-SPRAS
LV_TDNAME_1 LV_TDNAME_2
'VBBK'.
IF SY-SUBRC EQ 0.
APPEND LINES OF IT_TEXT TO IT_SHDA.
ENDIF.
ENDFORM. " GET_SHIPPING_DATE
*&----
*
*& Form CONTAINER_NO
*&----
*
text: On the forwarding instructions and the shipping advice,
a container no/seal no is printed on item level.
*----
*
FORM CONTAINER_NO.
DATA: LV_TDNAME_1 LIKE THEAD-TDNAME,
LV_TDNAME_2 LIKE THEAD-TDNAME,
LV_TDID_1 LIKE THEAD-TDID,
LV_TDID_2 LIKE THEAD-TDID.
data: tlen type i.
PERFORM WRITE_FORM USING 'MAIN' 'REST_ITEM'.
LV_TDNAME_1 = VBDPR-TDNAME.
LV_TDID_1 = 'ZY02'.
IF Z_REF_DOC_TYPE = 'ORD'.
*...concatenate z_deliv_no z_deliv_item_no into lv_tdname_1.
*...Modify lv_tdname_1 --> lv_tdname_2 PN 12.1.2000
CONCATENATE Z_DELIV_NO Z_DELIV_ITEM_NO INTO LV_TDNAME_2.
LV_TDID_2 = 'ZE02'.
ENDIF.
PERFORM READ_TEXT USING LV_TDID_1 LV_TDID_2
NAST-SPRAS
LV_TDNAME_1 LV_TDNAME_2
'VBBP'.
IF SY-SUBRC EQ 0.
if 1 = 0. "old version
LOOP AT IT_TEXT.
IT_TEXT-TDFORMAT = '='. " Change format to extended line
IT_TEXT-TDLINE = IT_TEXT-TDLINE+0(24).
MODIFY IT_TEXT.
ENDLOOP.
PERFORM WRITE_FORM_LINES TABLES IT_TEXT USING 'MAIN'.
else. "new version by icllahti
refresh tt_text.
loop at it_text.
tlen = strlen( it_text-tdline ).
while tlen > 0.
clear tt_text.
tt_text-tdformat = 'ZL'.
tt_text-tdline = it_text-tdline+0(24).
concatenate ',,' it_text-tdline+0(30) into tt_text-tdline.
append tt_text.
it_text-tdline = it_text-tdline+30(102).
tlen = strlen( it_text-tdline ).
endwhile.
endloop.
PERFORM WRITE_FORM_LINES TABLES tT_TEXT USING 'MAIN'.
endif.
ENDIF.
PERFORM WRITE_FORM USING 'MAIN' 'REST_ITEM'.
ENDFORM. " CONTAINER_NO
*&----
*
*& Form GET_CARRIER
*&----
*
text: If the billing document has a delivery as reference doc.
the free text field can be found in id ZY43 (object VBBK).
If it has an order as reference doc. the free text field
can be found in id ZY28 (object VBBK).
*----
*
FORM GET_CARRIER.
DATA: LV_TDNAME_1 LIKE THEAD-TDNAME,
LV_TDNAME_2 LIKE THEAD-TDNAME,
LV_TDID_1 LIKE THEAD-TDID,
LV_TDID_2 LIKE THEAD-TDID.
PERFORM FILL_VARIABLES USING 'ZY43' 'ZE28'
CHANGING LV_TDNAME_1 LV_TDNAME_2
LV_TDID_1 LV_TDID_2.
PERFORM READ_TEXT USING LV_TDID_1 LV_TDID_2
NAST-SPRAS
LV_TDNAME_1 LV_TDNAME_2
'VBBK'.
IF SY-SUBRC EQ 0.
APPEND LINES OF IT_TEXT TO IT_CARR.
ENDIF.
ENDFORM. " GET_CARRIER
*&----
*
*& Form GET_WAGON_NO
*&----
*
text: If the billing document has a delivery as reference doc.
the free text field can be found in id ZY42 (object VBBK).
If it has an order as reference doc. the free text field
can be found in id ZY33 (object VBBK).
*----
*
FORM GET_WAGON_NO.
DATA: LV_TDNAME_1 LIKE THEAD-TDNAME,
LV_TDNAME_2 LIKE THEAD-TDNAME,
LV_TDID_1 LIKE THEAD-TDID,
LV_TDID_2 LIKE THEAD-TDID.
PERFORM FILL_VARIABLES USING 'ZY42' 'ZY33'
CHANGING LV_TDNAME_1 LV_TDNAME_2
LV_TDID_1 LV_TDID_2.
PERFORM READ_TEXT USING LV_TDID_1 LV_TDID_2
NAST-SPRAS
LV_TDNAME_1 LV_TDNAME_2
'VBBK'.
IF SY-SUBRC EQ 0.
APPEND LINES OF IT_TEXT TO IT_WANO.
ENDIF.
ENDFORM. " GET_WAGON_NO
*&----
*
*& Form GET_DESCRIPTION_OF_GOODS_WAYB
*&----
*
text: The description of goods for the international waybill
CMR contains 3 lines of packaging text, 1 line description
of goods and 3 lines of material description.
*----
*
FORM GET_DESCRIPTION_OF_GOODS_WAYB.
DATA: LV_TDNAME_1 LIKE THEAD-TDNAME,
LV_TDNAME_2 LIKE THEAD-TDNAME,
LV_TDID_1 LIKE THEAD-TDID,
LV_TDID_2 LIKE THEAD-TDID,
LV_RETCODE LIKE SY-SUBRC.
*........ Create 7 empty lines in table it_dogo. This way we can put
*........ the retrieved data on fixed places:
*........ line 1 - 3: Packaging text
*........ line 4 : Description of goods
*........ line 5 - 7: Material description
data: zgetx like sy-tabix.
refresh mm_sale.
clear mm_sale.
if vbdkr-vkorg = 'K301'.
DO 14 TIMES.
INSERT INITIAL LINE INTO IT_DOGO INDEX SY-INDEX.
ENDDO.
else.
DO 7 TIMES.
INSERT INITIAL LINE INTO IT_DOGO INDEX SY-INDEX.
ENDDO.
endif.
*........ For the international waybill CMR it is necessary to split up
*........ the packaging text per sales unit of the material.
*........ If there is a different sales unit, an additional packaging
*........ text line is printed. The maximum here is 3 lines. Also for
*........ every sales unit change, the material description is retrieved
*........ and printed.
if vbdkr-vkorg = 'K301'. "no packaging info for k301
clear GV_PACKAGING.
endif.
LOOP AT TVBDPR.
if mm_sale is initial.
tdo = 'MVKE'.
tdi = '0001'.
concatenate tvbdpr-matnr vbdkr-vkorg vbdkr-vtweg into tdn.
tds = vbdkr-spras.
select single * from stxh where tdname = tdn and tdid = tdi
and tdobject = tdo and tdspras = tds.
if sy-subrc ne 0.
select single * from stxh where tdname = tdn and tdid = tdi
and tdobject = tdo and tdspras = 'D'.
endif.
if sy-subrc ne 0.
select single * from stxh where tdname = tdn and tdid = tdi
and tdobject = tdo and tdspras = 'E'.
endif.
CALL FUNCTION 'READ_TEXT'
EXPORTING
CLIENT = SY-MANDT
ID = tdi
LANGUAGE = stxh-tdspras
NAME = tdn
OBJECT = tdo
ARCHIVE_HANDLE = 0
LOCAL_CAT = ' '
IMPORTING
HEADER =
TABLES
LINES = mm_sale
EXCEPTIONS
ID = 1
LANGUAGE = 2
NAME = 3
NOT_FOUND = 4
OBJECT = 5
REFERENCE_CHECK = 6
WRONG_ACCESS_TO_ARCHIVE = 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.
endif.
PERFORM CHECK_SALES_UNIT CHANGING LV_RETCODE.
IF LV_RETCODE NE 0. " New sales unit
*.. Retrieve sales text
LV_TDNAME_1 = TVBDPR-TDNAME.
LV_TDID_1 = '0001'.
IF Z_REF_DOC_TYPE = 'ORD'.
CONCATENATE TVBDPR-VBELN_VL TVBDPR-POSNR_VL INTO LV_TDNAME_2.
ENDIF.
PERFORM READ_TEXT USING LV_TDID_1 LV_TDID_2
NAST-SPRAS
LV_TDNAME_1 LV_TDNAME_2
'VBBP'.
clear zgetx.
LOOP AT IT_TEXT.
IF IT_TEXT-TDFORMAT = '*' AND GV_GETDESC = 'X'.
*........ Description of goods text
if sy-tabix = 1.
read table mm_Sale index 1.
if sy-subrc = 0 and mm_sale-tdline ne it_text-tdline.
zgetx = 3.
endif.
endif.
if zgetx > 0.
zgetx = zgetx + 1.
clear gv_matdesc. "skip individual mat.desc
MODIFY IT_DOGO FROM IT_TEXT INDEX zgetx.
else.
MODIFY IT_DOGO FROM IT_TEXT INDEX 4.
CLEAR GV_GETDESC. "Only 1 line for description of 1st item
endif.
ELSEIF IT_TEXT-TDFORMAT = '/' AND GV_PACKAGING = 'X'.
*........ Packaging text
MODIFY IT_DOGO FROM IT_TEXT INDEX GV_PACKINDEX.
ADD 1 TO GV_PACKINDEX.
IF GV_PACKINDEX = 4. " Only 3 packaging texts allowed
CLEAR GV_PACKAGING.
ENDIF.
EXIT. " Only 1 line per sales unit
ENDIF.
ENDLOOP.
CLEAR LV_RETCODE.
ENDIF.
*........ Material description text
IF GV_MATDESC = 'X'.
READ TABLE IT_ARKTX WITH KEY TVBDPR-ARKTX BINARY SEARCH.
IF SY-SUBRC NE 0. " Material description not yet processed
INSERT TVBDPR-ARKTX INTO IT_ARKTX INDEX SY-TABIX.
IT_DOGO-TDFORMAT = '*'.
IT_DOGO-TDLINE = TVBDPR-ARKTX.
MODIFY IT_DOGO INDEX GV_MAKTXINDEX.
ADD 1 TO GV_MAKTXINDEX.
if vbdkr-vkorg ne 'K301'.
IF GV_MAKTXINDEX = 8. " Only 3 material descriptions allowed
CLEAR GV_MATDESC.
ENDIF.
endif.
ENDIF.
ENDIF.
ENDLOOP.
if vbdkr-vkorg = 'K301'.
loop at it_dogo where tdline = ''.
delete it_dogo.
endloop.
delete it_dogo from 7.
endif.
ENDFORM. " GET_DESCRIPTION_OF_GOODS_WAYB
*&----
*
*& Form CHECK_SALES_UNIT
*&----
*
text: Check to see the sales unit has already been processed.
*----
*
<-- ep_retcode text: Returncode 0 => No packaging text needed
Returncode 4 => Packaging text needed
*----
*
FORM CHECK_SALES_UNIT CHANGING EP_RETCODE LIKE SY-SUBRC.
DATA: LV_TABIX LIKE SY-TABIX.
READ TABLE IT_MEINS WITH KEY MEINS = TVBDPR-VRKME
BINARY SEARCH.
IF SY-SUBRC NE 0. " Sales unit does not exists
LV_TABIX = SY-TABIX.
IT_MEINS-MEINS = TVBDPR-VRKME.
INSERT IT_MEINS INDEX LV_TABIX. " Append to internal table
EP_RETCODE = 4.
ELSE.
EP_RETCODE = 0.
ENDIF.
ENDFORM. " CHECK_SALES_UNIT
*&----
*
*& Form GET_PERIOD
*&----
*
text: On the commission invoice the text of the month is needed
*----
*
FORM GET_PERIOD.
DATA: LV_DATE LIKE SY-DATUM.
LV_DATE = VBDKR-FKDAT.
*.. Period is previous month of billing date
CALL FUNCTION 'RP_CALC_DATE_IN_INTERVAL'
EXPORTING
DATE = LV_DATE
DAYS = '00'
MONTHS = '01'
SIGNUM = '-'
YEARS = '00'
IMPORTING
CALC_DATE = LV_DATE
EXCEPTIONS
OTHERS = 1.
GV_YEAR = LV_DATE+0(4).
*.. Select text for month
SELECT SINGLE LTX
INTO (GV_MONTH)
FROM T247
WHERE SPRAS = NAST-SPRAS
AND MNR = LV_DATE+4(2).
ENDFORM. " GET_PERIOD
*&----
*
*& Form COMBINE_ITEM_LINES
*&----
*
text: This routine will combine the item lines that can be
combined as specified in the specification
*----
*
*----
*
FORM COMBINE_ITEM_LINES.
*.. Local variables
DATA: LV_TABIX LIKE SY-TABIX,
LV_SUBRC_1 LIKE SY-SUBRC,
LV_SUBRC_2 LIKE SY-SUBRC,
LV_FKIMG LIKE TVBDPR-FKIMG,
LV_NTGEW LIKE TVBDPR-NTGEW,
LV_BRGEW LIKE TVBDPR-BRGEW.
Clear combi.
LOOP AT TVBDPR INTO VBDPR.
*.... It_combine contains the different combined item lines based on
*.... material number, sales unit and net weight unit of measure
READ TABLE IT_COMBINE WITH KEY MATNR = VBDPR-MATNR
VRKME = VBDPR-VRKME
GEWEI = VBDPR-GEWEI BINARY SEARCH.
LV_SUBRC_2 = SY-SUBRC.
if sy-subrc = 0.
combi = 'X'.
endif.
if vbdkr-vkorg ne 'K301'.
LV_SUBRC_2 = 8. "don't combine
endif.
LV_TABIX = SY-TABIX.
PERFORM GET_ITEM_PRICES.
IF LV_SUBRC_2 EQ 0. " If same entry was found in it_combine
LOOP AT TKOMVD. " Loop on pricing conditions of item
*........ Find corresponding pricing condition in combined item
READ TABLE IT_COMBINE-IT_KOMVD INTO DS_KOMVD
WITH KEY STUNR = TKOMVD-STUNR
ZAEHK = TKOMVD-ZAEHK.
IF SY-SUBRC NE 0. " Condition was not found
LV_SUBRC_1 = 4.
EXIT.
ELSE. " Condition was found
*.......... Check condition values are the same
IF DS_KOMVD-KBETR NE TKOMVD-KBETR OR
DS_KOMVD-KOEIN NE TKOMVD-KOEIN OR
DS_KOMVD-KPEIN NE TKOMVD-KPEIN OR
DS_KOMVD-KMEIN NE TKOMVD-KMEIN.
LV_SUBRC_1 = 4.
EXIT.
ENDIF.
ENDIF.
ENDLOOP.
IF LV_SUBRC_1 EQ 0. " All Condition types were found and same
*.......... Sum values and delete entry in tvbdpr
LV_FKIMG = VBDPR-FKIMG.
LV_NTGEW = VBDPR-NTGEW.
LV_BRGEW = VBDPR-BRGEW.
DELETE TVBDPR.
READ TABLE TVBDPR WITH KEY IT_COMBINE-POSNR BINARY SEARCH.
*........ Item values
ADD: LV_FKIMG TO TVBDPR-FKIMG,
LV_NTGEW TO TVBDPR-NTGEW,
LV_BRGEW TO TVBDPR-BRGEW.
MODIFY TVBDPR INDEX SY-TABIX.
*........ Pricing values
LOOP AT TKOMVD.
READ TABLE IT_COMBINE-IT_KOMVD INTO DS_KOMVD
WITH KEY STUNR = TKOMVD-STUNR
ZAEHK = TKOMVD-ZAEHK.
ADD TKOMVD-KWERT TO DS_KOMVD-TKWERT.
ADD TKOMVD-KAWRT TO DS_KOMVD-TKAWRT.
MODIFY IT_COMBINE-IT_KOMVD FROM DS_KOMVD INDEX SY-TABIX.
ENDLOOP.
MODIFY IT_COMBINE INDEX LV_TABIX.
ENDIF.
ENDIF.
IF LV_SUBRC_1 NE 0 OR " Pricing conditions are different or
LV_SUBRC_2 NE 0. " no line was found in it_combine
*...... Create new entry in it_combine
REFRESH IT_COMBINE-IT_KOMVD.
IT_COMBINE-MATNR = VBDPR-MATNR.
IT_COMBINE-VRKME = VBDPR-VRKME.
IT_COMBINE-GEWEI = VBDPR-GEWEI.
IT_COMBINE-POSNR = VBDPR-POSNR.
LOOP AT TKOMVD.
DS_KOMVD-STUNR = TKOMVD-STUNR.
DS_KOMVD-ZAEHK = TKOMVD-ZAEHK.
DS_KOMVD-KBETR = TKOMVD-KBETR.
DS_KOMVD-KBETR = TKOMVD-KBETR.
DS_KOMVD-KBETR = TKOMVD-KBETR.
DS_KOMVD-KPEIN = TKOMVD-KPEIN.
DS_KOMVD-KOEIN = TKOMVD-KOEIN.
DS_KOMVD-KMEIN = TKOMVD-KMEIN.
DS_KOMVD-KWERT = TKOMVD-KWERT.
DS_KOMVD-TKWERT = TKOMVD-KWERT.
ds_komvd-kawrt = tkomvd-kawrt.
DS_KOMVD-TKawRT = TKOMVD-Kawrt.
APPEND DS_KOMVD TO IT_COMBINE-IT_KOMVD.
ENDLOOP.
INSERT IT_COMBINE INDEX LV_TABIX.
ENDIF.
CLEAR: LV_SUBRC_1,
LV_SUBRC_2.
ENDLOOP.
ENDFORM. " COMBINE_ITEM_LINES
*&----
*
*& Form GET_LC_COUNTRIES
*&----
*
text: If the countries are mispelled in the LC it should come
identically on the documents. Therefor a long text is
introduced for the Sold-to and Ship-to country
The free text field can be found in id ZE09 (object VBBK).
for the sold-to and ZE10 (object VBBK) for the ship-to.
*----
*
FORM GET_LC_COUNTRIES.
DATA: LV_TDNAME_1 LIKE THEAD-TDNAME,
LV_TDNAME_2 LIKE THEAD-TDNAME,
LV_TDID_1 LIKE THEAD-TDID,
LV_TDID_2 LIKE THEAD-TDID.
*.. Sold-to country
PERFORM FILL_VARIABLES USING 'ZE09' SPACE
CHANGING LV_TDNAME_1 LV_TDNAME_2
LV_TDID_1 LV_TDID_2.
PERFORM READ_TEXT USING LV_TDID_1 LV_TDID_2
NAST-SPRAS
LV_TDNAME_1 LV_TDNAME_2
'VBBK'.
IF SY-SUBRC EQ 0.
READ TABLE IT_TEXT INDEX 1.
GV_LANDX_SP = IT_TEXT-TDLINE.
ENDIF.
*.. Ship-to country
PERFORM FILL_VARIABLES USING 'ZE10' SPACE
CHANGING LV_TDNAME_1 LV_TDNAME_2
LV_TDID_1 LV_TDID_2.
PERFORM READ_TEXT USING LV_TDID_1 LV_TDID_2
NAST-SPRAS
LV_TDNAME_1 LV_TDNAME_2
'VBBK'.
IF SY-SUBRC EQ 0.
READ TABLE IT_TEXT INDEX 1.
GV_LANDX_SH = IT_TEXT-TDLINE.
ENDIF.
ENDFORM. " GET_LC_COUNTRIES
*&----
*
*& Form GET_COUNTRY
*&----
*
text: Get the country description and vehicle code
*----
*
--> ip_land1 text: Country code
--> ip_vecon text: Indicator: Vehicle code necessary?
<-- ep_landx text: Country description
<-- ep_landk text: Country vehicle code
*----
*
FORM GET_COUNTRY USING IP_LAND1 LIKE T005-LAND1
CHANGING EP_LANDX LIKE T005T-LANDX
CHANGING EP_LANDX LIKE makt-maktx
EP_LANDK LIKE T005-LANDK.
IF IP_LAND1 NE T005T-LAND1.
SELECT SINGLE LAND1 LANDX
INTO (T005T-LAND1, T005T-LANDX)
FROM T005T
WHERE SPRAS EQ NAST-SPRAS
AND LAND1 = IP_LAND1.
if sy-subrc ne 0.
select single * from t005t where spras = 'E'
and land1 = l_land1.
endif.
TRANSLATE T005T-LANDX TO UPPER CASE.
SELECT SINGLE LANDK
INTO (T005-LANDK)
FROM T005
WHERE LAND1 EQ IP_LAND1.
ENDIF.
EP_LANDX = T005T-LANDX.
EP_LANDK = T005-LANDK.
ENDFORM. " GET_COUNTRY
*&----
*
*& Form GET_COUNTRY_OF_ORIGIN
*&----
*
text: Determine the country of origin
If the shipping point is PORI, RDAM, SWED, GERM or HUNG *
if the country of origin ne country of sold-to *
if the country of the sold-to is an EU country *
print 'EC' as country of origin *
else *
print the country of origin *
endif *
endif *
else *
print the country of origin *
endif *
*----
*
FORM GET_COUNTRY_OF_ORIGIN.
DATA: LV_TDNAME_1 LIKE VBDKR-TDNAME, " Text name for billing doc.
LV_TDNAME_2 LIKE LV_TDNAME_1, " Text name for delivery
LV_TDID_1 LIKE THEAD-TDID, " Text id for billing doc
LV_TDID_2 LIKE THEAD-TDID. " Text id for delivery
The assumption is made that every material on the invoice has got the
same country of origin so the one from the first invoice line is the
same for every material.
If a text field id ZY19 is filled in in the billing document we use
this as the country of origin
PERFORM FILL_VARIABLES USING 'ZY19' SPACE
CHANGING LV_TDNAME_1 LV_TDNAME_2
LV_TDID_1 LV_TDID_2.
PERFORM READ_TEXT USING LV_TDID_1 LV_TDID_2
NAST-SPRAS
LV_TDNAME_1 LV_TDNAME_2
'VBBK'.
IF SY-SUBRC EQ 0.
READ TABLE IT_TEXT INDEX 1.
GV_HERTI = IT_TEXT-TDLINE.
EXIT.
ENDIF.
CLEAR GV_HERTI.
clear eikp.
SELECT SINGLE *
FROM eikp WHERE exnum = vbdkr-exnum.
IF SY-SUBRC IS INITIAL.
CLEAR T005T. "Country names
SELECT SINGLE LANDX
INTO GV_HERTI
FROM T005T
WHERE SPRAS = NAST-SPRAS
AND LAND1 = EIKP-ALAND.
ENDIF.
ENDFORM. " GET_COUNTRY_OF_ORIGIN
*&----
*
*& Form FILL_TLVOL
*&----
*
text
*----
*
--> p1 text
<-- p2 text
*----
*
FORM FILL_TLVOL.
DATA: ZLPS TYPE ZLIPS occurs 0 with header line.
data: xxtx like tline-tdline.
data: xexis(1) type c.
clear tlvol.
clear tlvoc.
clear tntgew.
clear tbrgew.
clear lb_ntgew.
clear lb_brgew.
CALL FUNCTION 'UNIT_CONVERSION_SIMPLE'
EXPORTING
INPUT = vbdkr-volum
NO_TYPE_CHECK = 'X'
ROUND_SIGN = ' '
UNIT_IN = vbdkr-voleh
UNIT_OUT = 'M3'
IMPORTING
ADD_CONST =
DECIMALS =
DENOMINATOR =
NUMERATOR =
OUTPUT = tlvol
EXCEPTIONS
CONVERSION_NOT_FOUND = 1
DIVISION_BY_ZERO = 2
INPUT_INVALID = 3
OUTPUT_INVALID = 4
OVERFLOW = 5
TYPE_INVALID = 6
UNITS_MISSING = 7
UNIT_IN_NOT_FOUND = 8
UNIT_OUT_NOT_FOUND = 9
OTHERS = 10
.
IF SY-SUBRC = 0.
write: tlvol to tlvoc decimals 1 exponent 0.
shift tlvoc left deleting leading ' '.
if nast-kschl = 'ZNIN'.
clear sy-subrc.
while sy-subrc = 0.
replace ',' with '#' into tlvoc.
endwhile.
clear sy-subrc.
while sy-subrc = 0.
replace '.' with ',' into tlvoc.
endwhile.
clear sy-subrc.
while sy-subrc = 0.
replace '#' with '.' into tlvoc.
endwhile.
endif.
ENDIF.
break icllahti.
perform read_first_text_line
using
'VBBK'
'ZY80'
vbdkr-tdname
vbdkr-spras
changing
xxtx
xexis.
if xexis = 'Y'.
tlvoc = xxtx.
shift tlvoc left deleting leading ' '.
endif.
if vbdkr-vkorg = 'K208'.
refresh zlps.
loop at tvbdpr.
clear zlps.
zlps-vbeln = tvbdpr-vbeln_vl.
zlps-posnr = tvbdpr-posnr_vl.
append zlps.
endloop.
CALL FUNCTION 'Z_GROSS_WEIGHT'
EXPORTING
VBELN = vbdkr-vbeln
GEWEI = vbdkr-gewei
IMPORTING
BRGEW = vbdkr-brgew
TABLES
XLIPS = zlps.
endif.
if vbdkr-gewei = 'TO'.
write: vbdkr-ntgew to tntgew decimals 3 exponent 0." no-grouping.
shift tntgew left deleting leading ' 0'.
write: vbdkr-brgew to tbrgew decimals 3 exponent 0." no-grouping.
shift tbrgew left deleting leading ' 0'.
else.
if nast-kschl = 'ZNIN'.
fntgew = floor( vbdkr-ntgew ).
fbrgew = floor( vbdkr-brgew ).
write: fntgew to tntgew decimals 0 exponent 0." no-grouping.
shift tntgew left deleting leading ' 0'.
write: fbrgew to tbrgew decimals 0 exponent 0." no-grouping.
shift tbrgew left deleting leading ' 0'.
if nast-kschl = 'ZNIN'.
clear sy-subrc.
while sy-subrc = 0.
replace '.' with ',' into tntgew.
endwhile.
clear sy-subrc.
while sy-subrc = 0.
replace '.' with ',' into tbrgew.
endwhile.
endif.
else.
write: vbdkr-ntgew to tntgew decimals 0 exponent 0." no-grouping.
shift tntgew left deleting leading ' 0'.
write: vbdkr-brgew to tbrgew decimals 0 exponent 0." no-grouping.
shift tbrgew left deleting leading ' 0'.
endif.
endif.
if 1 = 1. "calculate anyway, print if necessary, tdkmein ne ''.
CALL FUNCTION 'UNIT_CONVERSION_SIMPLE'
EXPORTING
INPUT = vbdkr-ntgew
NO_TYPE_CHECK = 'X'
ROUND_SIGN = ' '
UNIT_IN = vbdkr-gewei
UNIT_OUT = 'LB'
IMPORTING
ADD_CONST =
DECIMALS =
DENOMINATOR =
NUMERATOR =
OUTPUT = llntgew
EXCEPTIONS
CONVERSION_NOT_FOUND = 1
DIVISION_BY_ZERO = 2
INPUT_INVALID = 3
OUTPUT_INVALID = 4
OVERFLOW = 5
TYPE_INVALID = 6
UNITS_MISSING = 7
UNIT_IN_NOT_FOUND = 8
UNIT_OUT_NOT_FOUND = 9
OTHERS = 10
.
IF SY-SUBRC = 0.
write: llntgew to lb_ntgew decimals 0 exponent 0." no-grouping.
shift lb_ntgew left deleting leading ' 0'.
ENDIF.
CALL FUNCTION 'UNIT_CONVERSION_SIMPLE'
EXPORTING
INPUT = vbdkr-brgew
NO_TYPE_CHECK = 'X'
ROUND_SIGN = ' '
UNIT_IN = vbdkr-gewei
UNIT_OUT = 'LB'
IMPORTING
ADD_CONST =
DECIMALS =
DENOMINATOR =
NUMERATOR =
OUTPUT = llbrgew
EXCEPTIONS
CONVERSION_NOT_FOUND = 1
DIVISION_BY_ZERO = 2
INPUT_INVALID = 3
OUTPUT_INVALID = 4
OVERFLOW = 5
TYPE_INVALID = 6
UNITS_MISSING = 7
UNIT_IN_NOT_FOUND = 8
UNIT_OUT_NOT_FOUND = 9
OTHERS = 10
.
IF SY-SUBRC = 0.
write: llbrgew to lb_brgew decimals 0 exponent 0." no-grouping.
shift lb_brgew left deleting leading ' 0'.
ENDIF.
endif.
ENDFORM. " FILL_TLVOL
*&----
*
*& Form CONS_SPECIAL
*&----
*
text
*----
*
--> p1 text
<-- p2 text
*----
*
FORM CONS_SPECIAL.
if vbdkr-fkart = 'ZF8'. "consignment fill-up
select single kawrt into vbdkr-netwr
from konv where knumv = vbdkr-knumv and kposn = '000000'
and kschl = 'ZTR6'.
endif.
ENDFORM. " CONS_SPECIAL
*&----
*
*& Form WIA_SPECIAL
*&----
*
text
*----
*
--> p1 text
<-- p2 text
*----
*
FORM WIA_SPECIAL.
data: zkawrt like konv-kawrt.
clear zkawrt.
if vbdkr-fkart = 'WIA'. "consignment fill-up
select kawrt into zkawrt
from konv where knumv = vbdkr-knumv
and kschl = 'ZTX2'.
vbdkr-netwr = vbdkr-netwr + zkawrt.
endselect.
endif.
ENDFORM. " WIA_SPECIAL
*&----
*
*& Form check_tax_text_relevancy
*&----
*
text
*----
*
--> p1 text
<-- p2 text
*----
*
FORM check_tax_text_relevancy.
clear no_tax_text.
if no_tax_text is initial. "we have text!
loop at tvbdpr.
clear ztaxt.
loop at tkomv where kposn = tvbdpr-posnr.
if tkomv-kschl = 'MWST'.
txtab-mwskz = tkomv-mwsk1.
txtab-posnr = tvbdpr-posnr.
endif.
endloop.
if txtab is initial.
loop at tkomv where kposn = tvbdpr-posnr.
if tkomv-mwsk1 ne '' and txtab is initial.
txtab-mwskz = tkomv-mwsk1.
txtab-posnr = tvbdpr-posnr.
endif.
endloop.
endif.
clear txtab-tdname.
clear txtab-tdid.
select single * from ztaxx where mwskz = txtab-mwskz and
vkorg = vbdkr-vkorg.
if sy-subrc = 0.
txtab-tdname = ztaxx-tdname.
txtab-tdid = 'ST'.
append txtab.
endif.
endloop.
sort txtab.
refresh xtxtab.
xtxtab[] = txtab[].
delete adjacent duplicates from xtxtab comparing mwskz.
describe table xtxtab lines taxtypes.
if taxtypes > 1.
clear hxtab.
else.
read table txtab index 1.
clear gtl.
describe table txtab lines txl.
loop at txtab where g_s_type = '2'.
stl = stl + 1.
endloop.
select single * from ztaxx where
custp = txtab-custp and
g_s_type = '1' and
s_country = txtab-s_country and
t_depart = txtab-t_depart and
c_sales = txtab-c_sales and
d_country = txtab-d_country and
xegdr = txtab-xegdr.
if sy-subrc = 0.
hxtab-tdname = txtab-tdname.
hxtab-tdid = txtab-tdid.
endif.
if stl = txl. "all service lines.
select single * from ztaxc where
custp = txtab-custp and
g_s_type = '2' and
s_country = txtab-s_country and
t_depart = txtab-t_depart and
c_sales = txtab-c_sales and
d_country = txtab-d_country and
xegdr = txtab-xegdr.
if sy-subrc = 0.
hxtab-tdname = ztaxc-tdname.
hxtab-tdid = ztaxc-tdid.
endif.
endif.
endif.
loop at txtab.
if txtab-tdname = hxtab-tdname.
delete txtab.
endif.
endloop.
endif.
ENDFORM. " check_tax_text_relevancy
*&----
*
*& Form READ_TEXT_INLINE
*&----
*
text
*----
*
-->P_1803 text
-->P_1804 text
-->P_LV_TDNAME text
-->P_1806 text
*----
*
FORM READ_TEXT_INLINE USING ID LIKE THEAD-TDID
SPRAS LIKE THEAD-TDSPRAS
TDNAME LIKE THEAD-TDNAME
OBJECT LIKE THEAD-TDOBJECT.
CLEAR: IT_INLINES, IT_TEXTLINES.
REFRESH: IT_INLINES, IT_TEXTLINES.
CALL FUNCTION 'READ_TEXT_INLINE'
EXPORTING
ID = ID
INLINE_COUNT = '1'
LANGUAGE = SPRAS
NAME = TDNAME
OBJECT = OBJECT
TABLES
INLINES = IT_INLINES
LINES = IT_TEXTLINES
EXCEPTIONS
ID = 1
LANGUAGE = 2
NAME = 3
NOT_FOUND = 4
OBJECT = 5
REFERENCE_CHECK = 6
OTHERS = 7.
if IT_INLINES[] is initial and IT_TEXTLINES[] is initial.
CALL FUNCTION 'READ_TEXT_INLINE'
EXPORTING
ID = ID
INLINE_COUNT = '1'
LANGUAGE = 'D'
NAME = TDNAME
OBJECT = OBJECT
TABLES
INLINES = IT_INLINES
LINES = IT_TEXTLINES
EXCEPTIONS
ID = 1
LANGUAGE = 2
NAME = 3
NOT_FOUND = 4
OBJECT = 5
REFERENCE_CHECK = 6
OTHERS = 7.
endif.
if IT_INLINES[] is initial and IT_TEXTLINES[] is initial.
CALL FUNCTION 'READ_TEXT_INLINE'
EXPORTING
ID = ID
INLINE_COUNT = '1'
LANGUAGE = 'E'
NAME = TDNAME
OBJECT = OBJECT
TABLES
INLINES = IT_INLINES
LINES = IT_TEXTLINES
EXCEPTIONS
ID = 1
LANGUAGE = 2
NAME = 3
NOT_FOUND = 4
OBJECT = 5
REFERENCE_CHECK = 6
OTHERS = 7.
endif.
ENDFORM. " READ_TEXT_INLINE
*&----
*
*& Form IBCS_FROM_TEXT
*&----
*
text
*----
*
<--P_GV_NOIBCS text
*----
*
FORM IBCS_FROM_TEXT CHANGING gv_noibcs TYPE P.
DATA: LV_PALL TYPE P DECIMALS 1.
READ TABLE IT_INLINES INDEX 1.
check IT_INLINES-TDLINE(4) co ' 0123456789'.
MOVE IT_INLINES-TDLINE(4) TO LV_PALL.
gv_noibcs = lv_pall.
ENDFORM. " PALLET_FROM_TEXT
*&----
*
*& Form get_sdate
*&----
*
text
*----
*
--> p1 text
<-- p2 text
*----
*
FORM get_sdate.
DATA: SLIN TYPE TLINE occurs 0 with header line.
data: vvvv(4) type n.
data: kk(2) type n.
data: pp(2) type n.
clear: vvvv,kk,pp.
clear z_sdate.
Commented out in transport request EADK900886
select single * from stxh where tdname = vbdkr-tdname and
tdobject = 'VBBK' and tdid = 'ZY70'.
if sy-subrc = 0.
refresh slin.
CALL FUNCTION 'READ_TEXT'
EXPORTING
CLIENT = SY-MANDT
ID = stxh-tdid
LANGUAGE = stxh-tdspras
NAME = stxh-tdname
OBJECT = stxh-tdobject
ARCHIVE_HANDLE = 0
LOCAL_CAT = ' '
IMPORTING
HEADER =
TABLES
LINES = slin
EXCEPTIONS
ID = 1
LANGUAGE = 2
NAME = 3
NOT_FOUND = 4
OBJECT = 5
REFERENCE_CHECK = 6
WRONG_ACCESS_TO_ARCHIVE = 7
OTHERS = 8
.
IF SY-SUBRC = 0.
loop at slin where tdline ne ''.
if z_sdate is initial.
if slin-tdline ca '.'.
split slin-tdline at '.' into pp kk vvvv.
concatenate vvvv kk pp into z_sdate.
else.
z_sdate = slin-tdline.
endif.
endif.
endloop.
ENDIF.
endif.
End of commented out EADK900886
if z_sdate is initial.
select single * from stxh where tdname = vbdkr-vbeln_vl and EADK900886
tdobject = 'VBBK' and tdid = 'ZY32'. EADK900886
select single * from stxh where tdname = vbdkr-vbeln and"EADK900886
tdobject = 'VBBK' and tdid = 'ZY32'. "EADK900886
if sy-subrc = 0.
refresh slin.
CALL FUNCTION 'READ_TEXT'
EXPORTING
CLIENT = SY-MANDT
ID = stxh-tdid
LANGUAGE = stxh-tdspras
NAME = stxh-tdname
OBJECT = stxh-tdobject
ARCHIVE_HANDLE = 0
LOCAL_CAT = ' '
IMPORTING
HEADER =
TABLES
LINES = slin
EXCEPTIONS
ID = 1
LANGUAGE = 2
NAME = 3
NOT_FOUND = 4
OBJECT = 5
REFERENCE_CHECK = 6
WRONG_ACCESS_TO_ARCHIVE = 7
OTHERS = 8
.
IF SY-SUBRC = 0.
loop at slin where tdline ne ''.
if z_sdate is initial.
if slin-tdline ca '.'.
split slin-tdline at '.' into pp kk vvvv.
concatenate vvvv kk pp into z_sdate.
else.
z_sdate = slin-tdline.
endif.
endif.
endloop.
ENDIF.
endif.
endif.
Commented out in transport request EADK900886
if z_sdate is initial.
select single * from stxh where tdname = vbdkr-vbeln_vauf and
tdobject = 'VBBK' and tdid = 'ZZ98'.
if sy-subrc = 0.
refresh slin.
CALL FUNCTION 'READ_TEXT'
EXPORTING
CLIENT = SY-MANDT
ID = stxh-tdid
LANGUAGE = stxh-tdspras
NAME = stxh-tdname
OBJECT = stxh-tdobject
ARCHIVE_HANDLE = 0
LOCAL_CAT = ' '
IMPORTING
HEADER =
TABLES
LINES = slin
EXCEPTIONS
ID = 1
LANGUAGE = 2
NAME = 3
NOT_FOUND = 4
OBJECT = 5
REFERENCE_CHECK = 6
WRONG_ACCESS_TO_ARCHIVE = 7
OTHERS = 8
.
IF SY-SUBRC = 0.
loop at slin where tdline ne ''.
if z_sdate is initial.
if slin-tdline ca '.'.
split slin-tdline at '.' into pp kk vvvv.
concatenate vvvv kk pp into z_sdate.
else.
z_sdate = slin-tdline.
endif.
endif.
endloop.
ENDIF.
endif.
endif.
Commented out in transport request EADK900886
if z_sdate is initial. "EADK900886
select single * from likp where vbeln = vbdkr-vbeln_vl. "EADK900886
IF SY-SUBRC = 0. "EADK900886
z_sdate = likp-lfdat. "EADK900886
ENDIF. "EADK900886
endif. "EADK900886
if z_sdate is initial.
z_sdate = vbdkr-fkdat.
endif.
ENDFORM. " get_sdate
*&----
*
*& Form get_final
*&----
*
text
*----
*
--> p1 text
<-- p2 text
*----
*
FORM get_final.
DATA: fLIN TYPE TLINE occurs 0 with header line.
clear z_final.
if vbdkr-vkorg = 'KCOY'.
select single * from stxh where tdname = vbdkr-tdname and
tdobject = 'VBBK' and tdid = 'ZY49'.
if sy-subrc = 0.
refresh flin.
CALL FUNCTION 'READ_TEXT'
EXPORTING
CLIENT = SY-MANDT
ID = stxh-tdid
LANGUAGE = stxh-tdspras
NAME = stxh-tdname
OBJECT = stxh-tdobject
ARCHIVE_HANDLE = 0
LOCAL_CAT = ' '
IMPORTING
HEADER =
TABLES
LINES = flin
EXCEPTIONS
ID = 1
LANGUAGE = 2
NAME = 3
NOT_FOUND = 4
OBJECT = 5
REFERENCE_CHECK = 6
WRONG_ACCESS_TO_ARCHIVE = 7
OTHERS = 8
.
IF SY-SUBRC = 0.
loop at flin where tdline ne ''.
if z_final is initial.
z_final = flin-tdline.
endif.
endloop.
ENDIF.
endif.
if z_final is initial.
select single * from stxh where tdname = vbdkr-vbeln_vl and
tdobject = 'VBBK' and tdid = 'ZE34'.
if sy-subrc = 0.
refresh flin.
CALL FUNCTION 'READ_TEXT'
EXPORTING
CLIENT = SY-MANDT
ID = stxh-tdid
LANGUAGE = stxh-tdspras
NAME = stxh-tdname
OBJECT = stxh-tdobject
ARCHIVE_HANDLE = 0
LOCAL_CAT = ' '
IMPORTING
HEADER =
TABLES
LINES = flin
EXCEPTIONS
ID = 1
LANGUAGE = 2
NAME = 3
NOT_FOUND = 4
OBJECT = 5
REFERENCE_CHECK = 6
WRONG_ACCESS_TO_ARCHIVE = 7
OTHERS = 8
.
IF SY-SUBRC = 0.
loop at flin where tdline ne ''.
if z_final is initial.
z_final = flin-tdline.
endif.
endloop.
ENDIF.
endif.
endif.
if z_final is initial.
z_final = vbdkr-ort01_we.
endif.
endif.
ENDFORM. " get_final
*----
*
FORM GET_DESCRIPTION_OF_GOODS_K301 *
*----
*
........ *
*----
*
FORM GET_DESCRIPTION_OF_GOODS_K301.
DATA: LV_TDNAME_1 LIKE THEAD-TDNAME,
LV_TDNAME_2 LIKE THEAD-TDNAME,
LV_TDID_1 LIKE THEAD-TDID,
LV_TDID_2 LIKE THEAD-TDID,
LV_RETCODE LIKE SY-SUBRC.
*........ Create 7 empty lines in table it_dogo. This way we can put
*........ the retrieved data on fixed places:
*........ line 1 - 3: Packaging text
*........ line 4 : Description of goods
*........ line 5 - 7: Material description
data: zgetx like sy-tabix.
refresh mm_sale.
clear mm_sale.
DO 14 TIMES.
INSERT INITIAL LINE INTO IT_DOGO INDEX SY-INDEX.
ENDDO.
*........ For the international waybill CMR it is necessary to split up
*........ the packaging text per sales unit of the material.
*........ If there is a different sales unit, an additional packaging
*........ text line is printed. The maximum here is 3 lines. Also for
*........ every sales unit change, the material description is retrieved
*........ and printed.
clear GV_PACKAGING.
LOOP AT TVBDPR.
if mm_sale is initial.
tdo = 'MVKE'.
tdi = '0001'.
concatenate tvbdpr-matnr vbdkr-vkorg vbdkr-vtweg into tdn.
tds = vbdkr-spras.
select single * from stxh where tdname = tdn and tdid = tdi and
tdobject = tdo and tdspras = tds.
if sy-subrc ne 0.
select single * from stxh where tdname = tdn and tdid = tdi and
tdobject = tdo and tdspras = 'D'.
endif.
if sy-subrc ne 0.
select single * from stxh where tdname = tdn and tdid = tdi and
tdobject = tdo and tdspras = 'E'.
endif.
if sy-subrc ne 0.
select single * from stxh where tdname = tdn and tdid = tdi and
tdobject = tdo.
endif.
CALL FUNCTION 'READ_TEXT'
EXPORTING
CLIENT = SY-MANDT
ID = tdi
LANGUAGE = stxh-tdspras
NAME = tdn
OBJECT = tdo
ARCHIVE_HANDLE = 0
LOCAL_CAT = ' '
IMPORTING
HEADER =
TABLES
LINES = mm_sale
EXCEPTIONS
ID = 1
LANGUAGE = 2
NAME = 3
NOT_FOUND = 4
OBJECT = 5
REFERENCE_CHECK = 6
WRONG_ACCESS_TO_ARCHIVE = 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.
endif.
*.. Retrieve sales text
LV_TDNAME_1 = TVBDPR-TDNAME.
LV_TDID_1 = '0001'.
IF Z_REF_DOC_TYPE = 'ORD'.
CONCATENATE TVBDPR-VBELN_VL TVBDPR-POSNR_VL INTO LV_TDNAME_2.
ENDIF.
PERFORM READ_TEXT USING LV_TDID_1 LV_TDID_2
NAST-SPRAS
LV_TDNAME_1 LV_TDNAME_2
'VBBP'.
clear zgetx.
LOOP AT IT_TEXT.
IF IT_TEXT-TDFORMAT = '*' AND GV_GETDESC = 'X'.
*........ Description of goods text
if sy-tabix = 1.
if mm_sale[] ne it_text[].
zgetx = 3.
endif.
endif.
if zgetx > 0.
zgetx = zgetx + 1.
clear gv_matdesc. "skip individual mat.desc
MODIFY IT_DOGO FROM IT_TEXT INDEX zgetx.
else.
MODIFY IT_DOGO FROM IT_TEXT INDEX 4.
CLEAR GV_GETDESC. "Only 1 line for description of 1st item
endif.
ELSEIF IT_TEXT-TDFORMAT = '/' AND GV_PACKAGING = 'X'.
*........ Packaging text
MODIFY IT_DOGO FROM IT_TEXT INDEX GV_PACKINDEX.
ADD 1 TO GV_PACKINDEX.
IF GV_PACKINDEX = 4. " Only 3 packaging texts allowed
CLEAR GV_PACKAGING.
ENDIF.
EXIT. " Only 1 line per sales unit
ENDIF.
ENDLOOP.
CLEAR LV_RETCODE.
*........ Material description text
IF GV_MATDESC = 'X'.
READ TABLE IT_ARKTX WITH KEY TVBDPR-ARKTX BINARY SEARCH.
IF SY-SUBRC NE 0. " Material description not yet processed
INSERT TVBDPR-ARKTX INTO IT_ARKTX INDEX SY-TABIX.
IT_DOGO-TDFORMAT = '*'.
IT_DOGO-TDLINE = TVBDPR-ARKTX.
MODIFY IT_DOGO INDEX GV_MAKTXINDEX.
ADD 1 TO GV_MAKTXINDEX.
if vbdkr-vkorg ne 'K301'.
IF GV_MAKTXINDEX = 8. " Only 3 material descriptions allowed
CLEAR GV_MATDESC.
ENDIF.
endif.
ENDIF.
ENDIF.
ENDLOOP.
if vbdkr-vkorg = 'K301'.
loop at it_dogo where tdline = ''.
delete it_dogo.
endloop.
delete it_dogo from 7.
endif.
ENDFORM. " GET_DESCRIPTION_OF_GOODS_WAYB
*&----
*
*& Form GET_DESCRIPTION_OF_GOODS_NEW
*&----
*
text: Retrieve the description of goods text. This is a free
text field and can be found in the sales text of the
invoice item. The assumption is made that this text is
the same for every line item. That is why the first text
of the first item line is read.
*----
*
FORM GET_DESCRIPTION_OF_GOODS_NEW.
DATA: LV_TDNAME_1 LIKE THEAD-TDNAME,
LV_TDNAME_2 LIKE THEAD-TDNAME,
LV_TDID_1 LIKE THEAD-TDID,
LV_TDID_2 LIKE THEAD-TDID.
data: itx type sy-tabix.
if vbdkr-vkorg = 'K301'.
DO 14 TIMES.
INSERT INITIAL LINE INTO IT_DOGO INDEX SY-INDEX.
ENDDO.
endif.
READ TABLE TVBDPR INDEX 1.
LV_TDNAME_1 = TVBDPR-TDNAME.
LV_TDID_1 = '0001'.
IF Z_REF_DOC_TYPE = 'ORD'.
CONCATENATE TVBDPR-VBELN_VL TVBDPR-POSNR_VL INTO LV_TDNAME_2.
ENDIF.
PERFORM READ_TEXT USING LV_TDID_1 LV_TDID_2
NAST-SPRAS
LV_TDNAME_1 LV_TDNAME_2
'VBBP'.
refresh tlin.
clear tlin.
if vbdkr-vkorg = 'K301'.
****if nast-kschl = 'ZFI2'. "Removed 2005.12.16 IHo
CONCATENATE TVBDPR-matnr vbdkr-vkorg vbdkr-vtweg
into tdn.
tds = nast-spras.
tdi = '0001'.
tdo = 'MVKE'.
select single * from stxh where tdname = tdn and tdid = tdi and
tdobject = tdo and tdspras = tds.
if sy-subrc ne 0.
select single * from stxh where tdname = tdn and tdid = tdi and
tdobject = tdo and tdspras = 'D'.
endif.
if sy-subrc ne 0.
select single * from stxh where tdname = tdn and tdid = tdi and
tdobject = tdo and tdspras = 'E'.
endif.
CALL FUNCTION 'READ_TEXT'
EXPORTING
CLIENT = SY-MANDT
ID = tdi
LANGUAGE = stxh-tdspras
NAME = tdn
OBJECT = tdo
ARCHIVE_HANDLE = 0
LOCAL_CAT = ' '
IMPORTING
HEADER =
TABLES
LINES = tlin
EXCEPTIONS
ID = 1
LANGUAGE = 2
NAME = 3
NOT_FOUND = 4
OBJECT = 5
REFERENCE_CHECK = 6
WRONG_ACCESS_TO_ARCHIVE = 7
OTHERS = 8
.
****endif. "Removed 2005.12.16 IHo
endif.
if not tlin[] is initial.
if tlin[] ne it_text[].
skipmtx = 1.
endif.
endif.
clear itx.
LOOP AT IT_TEXT.
IF IT_TEXT-TDFORMAT = '*'.
if vbdkr-vkorg = 'K301'.
itx = itx + 1.
This line is commented by subhasish
check ds_main-dogotext is initial.
*......... Description of goods
it_dogo = it_text.
insert IT_DOGO index itx.
else.
append it_text to it_dogo.
endif.
ENDIF.
ENDLOOP.
if vbdkr-vkorg = 'K301'.
IF GV_MATDESC = 'X' and skipmtx = 0.
LOOP AT TVBDPR.
READ TABLE IT_ARKTX WITH KEY TVBDPR-ARKTX BINARY SEARCH.
IF SY-SUBRC NE 0. " Material description not yet processed
INSERT TVBDPR-ARKTX INTO IT_ARKTX INDEX SY-TABIX.
IT_DOGO-TDFORMAT = '*'.
IT_DOGO-TDLINE = TVBDPR-ARKTX.
MODIFY IT_DOGO INDEX GV_MAKTXINDEX.
ADD 1 TO GV_MAKTXINDEX.
ENDIF.
endloop.
ENDIF.
loop at it_dogo where tdline = ''.
delete it_dogo.
endloop.
endif.
*........ Text can contain a maximum of 5 lines
DELETE IT_DOGO FROM 7.
ENDFORM. " GET_DESCRIPTION_OF_GOODS
*----
*
FORM get_data_from_txt *
*----
*
........ *
*----
*
FORM get_data_from_txt.
DATA: LV_TDNAME LIKE NAST-TDNAME.
data: gv_volum type p. " Volume
lv_tdname = vbdkr-vbeln_vl.
*zz73
PERFORM READ_TEXT_INLINE USING 'ZZ73' 'E' LV_TDNAME 'VBBK'.
read table tvbdpr index 1.
lv_tdname = tvbdpr-tdname.
PERFORM READ_TEXT_INLINE USING 'ZE05' 'E' LV_TDNAME 'VBBP'.
if sy-subrc = 0.
perform IBCS_FROM_TEXT changing gv_noibcs.
else.
gv_noibcs = 0.
endif.
*zz71
PERFORM READ_TEXT_INLINE USING 'ZZ71' 'E' LV_TDNAME 'VBBK'.
PERFORM READ_TEXT_INLINE USING 'ZE03' 'E' LV_TDNAME 'VBBP'.
if sy-subrc = 0.
perform IBCS_FROM_TEXT changing gv_nopal.
gv_tnopal = gv_tnopal + gv_nopal. "ERDK905353
endif.
*zz72
PERFORM READ_TEXT_INLINE USING 'ZZ72' 'E' LV_TDNAME 'VBBK'.
PERFORM READ_TEXT_INLINE USING 'ZE04' 'E' LV_TDNAME 'VBBP'.
if sy-subrc = 0.
perform IBCS_FROM_TEXT changing gv_nopck.
gv_tnopck = gv_tnopck + gv_nopck. "ERDK905353
endif.
*zz71
PERFORM READ_TEXT_INLINE USING 'ZZ74' 'E' LV_TDNAME 'VBBK'.
PERFORM READ_TEXT_INLINE USING 'ZY80' 'E' LV_TDNAME 'VBBP'.
if sy-subrc = 0.
perform IBCS_FROM_TEXT changing gv_volum.
vbdkr-volum = gv_volum.
VBDKR-VOLEH = 'M3'.
gv_volum = gv_volum * 1000. "with 3 decimals!
write gv_volum to tlvoc decimals 1 exponent 0.
endif.
ENDFORM. " get_data_from_txt
*&----
*
*& Form get_lanc
*&----
*
text
*----
*
--> p1 text
<-- p2 text
*----
*
FORM get_lanc.
perform init_lanc.
ENDFORM. " get_lanc
*&----
*
*& Form init_lanc
*&----
*
text
*----
*
--> p1 text
<-- p2 text
*----
*
FORM init_lanc.
data: fknm(40) type c.
refresh zstk.
select * from zstdi where kappl = 'V3' and tdobject = 'TEXT' and
tdid = 'ST'.
perform init_add using zstdi-tdname.
endselect.
CALL FUNCTION 'Z_FIND_LKEY'
TABLES
ZLK = zstk.
loop at zstk.
concatenate 'SP_' zstk-tdname into fknm.
assign (fknm) to = zstk-tdspras.
endif.
endloop.
perform init_head.
perform init_item.
ENDFORM. " init_lanc
*&----
*
*& Form init_add
*&----
*
text
*----
*
-->P_NAST_SPRAS text
<--P_SP_ZBANK_LCCL text
*----
*
FORM init_add USING stdname like stxh-tdname.
data: fknam(40) type c.
clear zstk.
zstk-tdobject = 'TEXT'.
zstk-tdspras = nast-spras.
zstk-tdid = 'ST'.
zstk-tdname = stdname.
append zstk.
concatenate 'SP_' stdname into fknam.
assign (fknam) to = nast-spras.
ENDFORM. " init_add
*&----
*
*& Form init_head
*&----
*
text
*----
*
-->P_7609 text
*----
*
FORM init_head.
data: fknam(40) type c.
refresh zstk.
select * from zstdi where kappl = 'V3' and tdobject = 'VBBK'.
concatenate 'H' zstdi-tdid into fknam.
assign (fknam) to = zstk-tdspras.
endif.
endloop.
ENDFORM. " init_head
*&----
*
*& Form init_item
*&----
*
text
*----
*
-->P_7625 text
*----
*
FORM init_item.
data: fknam(40) type c.
select * from zstdi where kappl = 'V3' and tdobject = 'VBBP'.
concatenate 'I' zstdi-tdid into fknam.
assign (fknam) to = nast-spras.
endif.
endselect.
ENDFORM. " init_item
*&----
*
*& Form assign_text
*&----
*
text
*----
*
-->P_VBDPR_TDNAME text
*----
*
FORM assign_text USING P_VBDPR_TDNAME.
data: ll1 like nast-spras.
data: inam(40) type c.
ll1 = nast-spras.
select * from zstdi where kappl = 'V3' and
tdobject = 'VBBP'.
if 1 = 1.
CALL FUNCTION 'Z_FIND_LKEY'
EXPORTING
TDNAME = P_VBDPR_TDNAME
TDID = zstdi-tdid
TDOBJECT = zstdi-tdobject
TDSPRAS = nast-spras
SL_OPT1 = 'D'
SL_OPT2 = 'E'
IMPORTING
RET =
LCODE = ll1
TABLES
ZLK =
.
endif.
concatenate 'I' zstdi-tdid into inam.
assign (inam) to = ll1.
endif.
endselect.
ENDFORM. " assign_text
*&----
*
*& Form GET_COUNTRY2
*&----
*
text
*----
*
-->P_ADRE_LAND1 text
<--P_GV_LANDX_RE text
<--P_GV_LANDK_RE text
*----
*
FORM GET_COUNTRY2 USING IP_LAND1 LIKE T005-LAND1
CHANGING EP_LANDX LIKE T005T-LANDX
EP_LANDK LIKE T005-LANDK.
IF IP_LAND1 NE T005T-LAND1.
SELECT SINGLE LAND1 LANDX
INTO (T005T-LAND1, T005T-LANDX)
FROM T005T
WHERE SPRAS EQ NAST-SPRAS
AND LAND1 = IP_LAND1.
if sy-subrc ne 0.
select single * from t005t where spras = 'E'
and land1 = l_land1.
endif.
TRANSLATE T005T-LANDX TO UPPER CASE.
SELECT SINGLE LANDK
INTO (T005-LANDK)
FROM T005
WHERE LAND1 EQ IP_LAND1.
ENDIF.
if nast-spras = 'U' and t005t-landx = 'SUOMI'.
clear ep_landx.
else.
EP_LANDX = T005T-LANDX.
endif.
EP_LANDK = T005-LANDK.
ENDFORM. " GET_COUNTRY2
*&----
*
*& Form fill_zbnk_ref
*&----
*
text
*----
*
--> p1 text
<-- p2 text
*----
*
FORM fill_zbnk_ref .
DATA : L_ZBANK(20),
L_VBELN LIKE VBRK-VBELN,
L_MOD TYPE N,
L_RES TYPE I,
L_SUM TYPE I,
L_DIGIT TYPE N,
L_MULTI TYPE I.
clear zbnk_ref.
if norway = 'X'.
zbnk_ref = vbdkr-kidno.
if 1 = 0. "old Modulus10
MOVE vbdkr-vbeln TO L_VBELN.
SY-FOLEN = STRLEN( L_VBELN ).
SUBTRACT 1 FROM SY-FOLEN.
DO.
L_MOD = SY-INDEX MOD 2.
CASE L_MOD.
WHEN 0.
L_MULTI = 1.
WHEN 1.
L_MULTI = 2.
ENDCASE.
L_DIGIT = L_VBELN+SY-FOLEN(1).
L_RES = L_DIGIT * L_MULTI.
if l_res < 10.
l_sum = l_sum + l_res.
endif.
if l_res = 10.
l_sum = l_sum + 1.
endif.
if l_res > 10. "maksimi on 18
l_sum = l_sum + 1.
l_res = l_res - 10.
l_sum = l_sum + l_res.
endif.
SUBTRACT 1 FROM SY-FOLEN.
IF SY-FOLEN < 0.
EXIT.
ENDIF.
ENDDO.
L_MOD = L_SUM MOD 10.
IF L_MOD NE 0.
L_MOD = 10 - L_MOD.
ENDIF.
CONCATENATE L_VBELN L_MOD INTO zbnk_ref.
CONDENSE zbnk_ref NO-GAPS.
endif.
endif.
if domes_fi = 'X'. "domestic in finland
MOVE vbdkr-vbeln TO L_VBELN.
SY-FOLEN = STRLEN( L_VBELN ).
SUBTRACT 1 FROM SY-FOLEN.
DO.
L_MOD = SY-INDEX MOD 3.
CASE L_MOD.
WHEN 0.
L_MULTI = 1.
WHEN 1.
L_MULTI = 7.
WHEN 2.
L_MULTI = 3.
ENDCASE.
L_DIGIT = L_VBELN+SY-FOLEN(1).
L_RES = L_DIGIT * L_MULTI.
ADD L_RES TO L_SUM.
SUBTRACT 1 FROM SY-FOLEN.
IF SY-FOLEN < 0.
EXIT.
ENDIF.
ENDDO.
L_MOD = L_SUM MOD 10.
IF L_MOD NE 0.
L_MOD = 10 - L_MOD.
ENDIF.
CONCATENATE L_VBELN L_MOD INTO zbnk_ref.
CONDENSE zbnk_ref NO-GAPS.
endif.
if zbnk_ref is initial.
zbnk_ref = vbdkr-vbeln.
endif.
ENDFORM. " fill_zbnk_ref
*&----
*
*& Form GET_COUNTRY4
*&----
*
text
*----
*
-->IP_LAND1 text
-->ZTXID text
-->EP_LANDX text
-->EP_LANDK text
*----
*
FORM GET_COUNTRY4 USING IP_LAND1 LIKE T005-LAND1
ztxid like stxh-tdid
CHANGING EP_LANDX LIKE makt-maktx
EP_LANDK LIKE T005-LANDK.
IF IP_LAND1 NE T005T-LAND1.
SELECT SINGLE LAND1 LANDX
INTO (T005T-LAND1, T005T-LANDX)
FROM T005T
WHERE SPRAS EQ NAST-SPRAS
AND LAND1 = IP_LAND1.
if sy-subrc ne 0.
select single * from t005t where spras = 'E'
and land1 = l_land1.
endif.
TRANSLATE T005T-LANDX TO UPPER CASE.
SELECT SINGLE LANDK
INTO (T005-LANDK)
FROM T005
WHERE LAND1 EQ IP_LAND1.
ENDIF.
EP_LANDX = T005T-LANDX.
EP_LANDK = T005-LANDK.
if ztxid ne ''.
PERFORM READ_TEXT_INLINE USING 'ZY09' 'E' vbdkr-TDNAME 'VBBK'.
if not it_textlines is initial.
loop at it_textlines where tdline ne ''.
ep_landx = it_textlines-tdline.
exit.
endloop.
endif.
endif.
ENDFORM. " GET_COUNTRY
*&----
*
*& Form country_of_dest
*&----
*
text
*----
*
--> p1 text
<-- p2 text
*----
*
FORM country_of_dest .
clear dst_ctry.
SELECT SINGLE LANDX
INTO dst_ctry
FROM T005T
WHERE SPRAS = nast-SPRAS
AND LAND1 = VBDKR-LAND1_WE.
PERFORM READ_TEXT_INLINE USING 'ZY10' 'E' vbdkr-TDNAME 'VBBK'.
if not it_textlines is initial.
loop at it_textlines where tdline ne ''.
dst_ctry = it_textlines-tdline.
exit.
endloop.
endif.
ENDFORM. " country_of_dest
*&----
*
*& Form READ_FIRST_TEXT_LINE
*&----
*
text
*----
*
-->ZTDO text
-->ZTDI text
-->ZTDN text
-->ZTDS text
-->ZTXT text
-->ZEXISTS(1) text
*----
*
FORM READ_FIRST_TEXT_LINE using
ztdo like stxh-tdobject
ztdi like stxh-tdid
ztdn like stxh-tdname
ztds like stxh-tdspras
changing ztxt like tline-tdline
zexists type char1.
DATA: BEGIN OF TLINES occurs 0,
TDFORMAT TYPE TLINE-TDFORMAT,
TDLINE TYPE TLINE-TDLINE,
END OF TLINES.
data: ztext(20),
zspras(2),
zspra like nast-spras,
exists(1).
data: zzna(16) type c.
EXISTS = 'N'.
zzna = ztdn+0(10).
zzna+10(1) = '%'.
clear sy-subrc. "icllahti
select * from stxh where tdname like zzna and
tdobject = ztdo and tdid = ztdi and
tdspras = ztds order by tdname ascending.
endselect.
if sy-subrc ne 0. "icllahti
clear ztdo. "icllahti
endif. "icllahti
if not ztdo is initial.
exists = 'Y'.
ztdn = stxh-tdname.
refresh tlines.
CALL FUNCTION 'READ_TEXT'
EXPORTING
ID = ztdi
LANGUAGE = ztds
NAME = ztdn
OBJECT = ztdo
TABLES
LINES = tlines
EXCEPTIONS
ID = 1
LANGUAGE = 2
NAME = 3
NOT_FOUND = 4
OBJECT = 5
REFERENCE_CHECK = 6
WRONG_ACCESS_TO_ARCHIVE = 7
OTHERS = 8.
if sy-subrc = 0.
read table tlines index 1.
if sy-subrc = 0.
ztxt = tlines-tdline.
endif.
endif.
endif.
zexists = exists.
ENDFORM. "READ_FIRST_TEXT_LINE
*&----
*
*& Form get_contact_info
*&----
*
text
*----
*
--> p1 text
<-- p2 text
*----
*
FORM get_contact_info .
data: zadc type SZADR_ADDR1_COMPLETE.
DATA: ADDR1_WA TYPE SZADR_ADDR1_LINE.
DATA: ADDR1 TYPE ADDR1_VAL occurs 0 with header line.
DATA: ADTEL_WA TYPE SZADR_ADTEL_LINE.
DATA: ADtel TYPE ADtel occurs 0 with header line.
clear iertel.
clear iermail.
select single * from usr21 where bname = vbdkr-ernam.
if sy-subrc = 0.
if 1 = 1.
select single tel_number into iertel from adcp where
addrnumber = usr21-addrnumber and
persnumber = usr21-persnumber.
select single smtp_addr into iermail from adr6 where
addrnumber = usr21-addrnumber and
persnumber = usr21-persnumber.
else.
CALL FUNCTION 'ADDR_GET_COMPLETE'
EXPORTING
ADDRNUMBER = usr21-addrnumber
ADDRHANDLE =
ARCHIVE_HANDLE =
IV_CURRENT_COMM_DATA = 'X'
IMPORTING
ADDR1_COMPLETE = zadc
EXCEPTIONS
PARAMETER_ERROR = 1
ADDRESS_NOT_EXIST = 2
INTERNAL_ERROR = 3
WRONG_ACCESS_TO_ARCHIVE = 4
OTHERS = 5
.
IF SY-SUBRC = 0.
LOOP AT zadc-ADDR1_TAB INTO ADDR1_WA.
MOVE ADDR1_WA-NATION TO ADDR1-NATION.
MOVE-CORRESPONDING ADDR1_WA-DATA TO ADDR1.
if street2 is initial.
street2 = addr1-str_suppl1.
endif.
ENDLOOP.
LOOP AT zadc-ADTEL_TAB INTO ADTEL_WA.
if iertel is initial.
iertel = adtel_wa-adtel-telnr_long.
endif.
endloop.
ENDIF.
endif.
endif.
ENDFORM. " get_contact_info
*&----
*
*& Form READ_ZNAME_2
*&----
*
text
*----
*
FORM READ_ZNAME_2.
DATA : L_BNAME LIKE USR03-BNAME.
data: zn like adrp-name_text.
data: znt like adcp-tel_number.
data: znf like adcp-fax_number.
data: zet like adcp-tel_extens.
data: zef like adcp-fax_extens.
data: tf(28) type c.
data: ff(28) type c.
data: zsp like nast-spras.
clear zsp.
zsp = 'EN'.
clear adr2.
clear adr3.
clear adr6.
select single * from usr21 where bname = vbdkr-ernam.
if sy-subrc = 0.
*
Get telephone number in ADR2 ***
*
select single * from adr2 where persnumber = usr21-persnumber.
if sy-subrc = 0.
if not adr2-telnr_long is initial.
znt = adr2-telnr_long.
else.
select single * from t005k where land1 = adr2-country.
if sy-subrc = 0.
concatenate '+' t005k-telefto adr2-tel_number
adr2-tel_extens into znt.
endif.
endif.
MOVE znt to iertel.
endif.
*
Get fax number in ADR3 ***
*
select single * from adr3 where persnumber = usr21-persnumber.
if sy-subrc = 0.
if not adr3-faxnr_long is initial.
znf = adr3-faxnr_long.
else.
select single * from t005k where land1 = adr3-country.
if sy-subrc = 0.
concatenate '+' t005k-telefto adr3-fax_number
adr3-fax_extens into znf.
endif.
endif.
MOVE znf to ierfax.
endif.
Get email number in ADR6 ***
*
select single * from adr6 where persnumber = usr21-persnumber.
if sy-subrc = 0.
if not adr6-smtp_addr is initial.
iermail = adr6-smtp_addr.
endif.
endif.
endif.
CLEAR: USR03.
ENDFORM. "READ_ZNAME_2
*&----
*
*& Form get_phrase_text
*&----
*
text
*----
*
-->P_KEY text
-->P_LANG text
-->P_TEXT text
*----
*
FORM get_phrase_text USING p_key TYPE adge_pdgnd
p_lang TYPE sy-langu
CHANGING p_text TYPE esephrtext.
DATA: l_key TYPE atwrt,
l_langtmp TYPE sy-langu.
l_key = p_key.
*switch languages
l_langtmp = sy-langu.
sy-langu = p_lang.
CALL FUNCTION 'CBRC_TSCA12B_PHRASETEXT_READ'
EXPORTING
i_phrasekey = l_key
IMPORTING
e_text = p_text.
*switch languages back
sy-langu = l_langtmp.
ENDFORM. "get_phrase_text
Marko Kovanen 22.02.2007
*&----
*
*& Form PALLETS_FROM_TEXT
*&----
*
text
*----
*
<--P_GV_NOIBCS text
*----
*
FORM PALLETS_FROM_TEXT CHANGING gv_noibcs TYPE P. "ERDK905512
DATA: LV_PALL TYPE P DECIMALS 1. "ERDK905512
READ TABLE IT_INLINES INDEX gv_ppline. "ERDK905512
check IT_INLINES-TDLINE(4) co ' 0123456789'. "ERDK905512
MOVE IT_INLINES-TDLINE(4) TO LV_PALL. "ERDK905512
gv_noibcs = lv_pall. "ERDK905512
ENDFORM. " PALLET_FROM_TEXT "ERDK905512
*&----
*
*& Form READ_TEXT_INLINE_PP
*&----
*
text
*----
*
-->P_1803 text
-->P_1804 text
-->P_LV_TDNAME text
-->P_1806 text
*----
*
FORM READ_TEXT_INLINE_PP USING ID LIKE THEAD-TDID "ERDK905512
SPRAS LIKE THEAD-TDSPRAS "ERDK905512
TDNAME LIKE THEAD-TDNAME "ERDK905512
OBJECT LIKE THEAD-TDOBJECT. "ERDK905512
CLEAR: IT_INLINES, IT_TEXTLINES. "ERDK905512
REFRESH: IT_INLINES, IT_TEXTLINES. "ERDK905512
CALL FUNCTION 'READ_TEXT_INLINE' "ERDK905512
EXPORTING "ERDK905512
ID = ID "ERDK905512
INLINE_COUNT = gv_ppline "ERDK905512
LANGUAGE = SPRAS "ERDK905512
NAME = TDNAME "ERDK905512
OBJECT = OBJECT "ERDK905512
TABLES "ERDK905512
INLINES = IT_INLINES "ERDK905512
LINES = IT_TEXTLINES "ERDK905512
EXCEPTIONS "ERDK905512
ID = 1 "ERDK905512
LANGUAGE = 2 "ERDK905512
NAME = 3 "ERDK905512
NOT_FOUND = 4 "ERDK905512
OBJECT = 5 "ERDK905512
REFERENCE_CHECK = 6 "ERDK905512
OTHERS = 7. "ERDK905512
if IT_INLINES[] is initial and IT_TEXTLINES[] is initial. "ERDK905512
CALL FUNCTION 'READ_TEXT_INLINE' "ERDK905512
EXPORTING "ERDK905512
ID = ID "ERDK905512
INLINE_COUNT = gv_ppline "ERDK905512
LANGUAGE = 'D' "ERDK905512
NAME = TDNAME "ERDK905512
OBJECT = OBJECT "ERDK905512
TABLES "ERDK905512
INLINES = IT_INLINES "ERDK905512
LINES = IT_TEXTLINES "ERDK905512
EXCEPTIONS "ERDK905512
ID = 1 "ERDK905512
LANGUAGE = 2 "ERDK905512
NAME = 3 "ERDK905512
NOT_FOUND = 4 "ERDK905512
OBJECT = 5 "ERDK905512
REFERENCE_CHECK = 6 "ERDK905512
OTHERS = 7. "ERDK905512
endif. "ERDK905512
if IT_INLINES[] is initial and IT_TEXTLINES[] is initial. "ERDK905512
CALL FUNCTION 'READ_TEXT_INLINE' "ERDK905512
EXPORTING "ERDK905512
ID = ID "ERDK905512
INLINE_COUNT = gv_ppline "ERDK905512
LANGUAGE = 'E' "ERDK905512
NAME = TDNAME "ERDK905512
OBJECT = OBJECT "ERDK905512
TABLES "ERDK905512
INLINES = IT_INLINES "ERDK905512
LINES = IT_TEXTLINES "ERDK905512
EXCEPTIONS "ERDK905512
ID = 1 "ERDK905512
LANGUAGE = 2 "ERDK905512
NAME = 3 "ERDK905512
NOT_FOUND = 4 "ERDK905512
OBJECT = 5 "ERDK905512
REFERENCE_CHECK = 6 "ERDK905512
OTHERS = 7. "ERDK905512
endif. "ERDK905512
ENDFORM. " READ_TEXT_INLINE_PP "ERDK905512
*&----
*
*& Form tax_text
*&----
*
text
*----
*
-->P_VBDKR_VKORG text
-->P_KOMVD_KSCHL text
<--P_KOMVD_VTEXT text
*----
*
FORM tax_text USING P_VBDKR_VKORG
P_KOMVD_KSCHL
CHANGING P_KOMVD_VTEXT.
if p_vbdkr_vkorg = 'CA12'.
case p_komvd_kschl.
when 'ZGST'.
p_komvd_vtext = 'Output GST tax'.
when 'ZPST'.
p_komvd_vtext = 'Output PST tax'.
when 'ZQST'.
p_komvd_vtext = 'Output QST tax'.
when 'ZSST'.
p_komvd_vtext = 'Output SST tax'.
when 'ZHST'.
p_komvd_vtext = 'Output HST tax'.
endcase.
endif.
ENDFORM. " tax_text
User | Count |
---|---|
76 | |
9 | |
8 | |
7 | |
6 | |
5 | |
5 | |
5 | |
5 | |
5 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.