cancel
Showing results for 
Search instead for 
Did you mean: 

Regarding Language problem in script

Former Member
0 Kudos

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.

Accepted Solutions (0)

Answers (1)

Answers (1)

Former Member
0 Kudos

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á

Former Member
0 Kudos

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