Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- &---------------------------------------------------------------------
- *& Report ZLIV_dnote
- & Created by : Larionova-Cojocaru Inga
- *& Creation date : 27.09.2019
- *& Requested by : Dorin Blindu
- *& Description : Ex. Training Task.
- &---------------------------------------------------------------------
- REPORT zliv_dnote.
- &---------------------------------------------------------------------
- *& DATABASE TABLES
- &---------------------------------------------------------------------
- TABLES: tnapr, nast.
- ---------------------------------------------------------------------
- * FORM ENTRY
- ---------------------------------------------------------------------
- FORM entry USING return_code us_screen.
- DATA: lv_retcode TYPE sy-subrc.
- PERFORM processing CHANGING lv_retcode."USING us_screen
- IF lv_retcode NE 0.
- return_code = 1.
- ELSE.
- return_code = 0.
- ENDIF.
- ENDFORM. "ENTRY
- &---------------------------------------------------------------------
- *& Form PROCESSING
- &---------------------------------------------------------------------
- FORM processing "USING us_screen TYPE c
- CHANGING cv_retcode TYPE sy-subrc.
- DATA: lv_formname TYPE tdsfname,
- lv_fm_name TYPE rs38l_fnam.
- DATA: ls_likp TYPE zliv_likp_s ,
- lt_vbpa TYPE zliv_vbpa_t,
- lt_lips TYPE zliv_lips_t,
- ls_t001l TYPE zliv_t001l_s,
- lt_vekp TYPE zliv_vekp_t,
- lv_tot_mt TYPE lgmng,
- lv_lordo TYPE brgew,
- lv_netto TYPE tarag_vekp,
- lv_vol TYPE btvol_vekp,
- lv_bezei TYPE bezei30,
- lv_maktx TYPE maktx,
- lv_nr_colli TYPE wgds_integer,
- lt_sped1 TYPE zliv_sped_t,
- lt_sped2 TYPE zliv_sped_t,
- lv_bezei_t TYPE bezei40.
- lv_formname = tnapr-sform.
- PERFORM select_data CHANGING ls_likp
- lt_vbpa
- lt_lips
- ls_t001l
- cv_retcode
- lt_vekp
- lv_tot_mt
- lv_lordo
- lv_netto
- lv_vol
- lv_bezei
- lv_maktx
- lv_nr_colli
- lt_sped1
- lt_sped2
- lv_bezei_t.
- CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
- EXPORTING
- formname = lv_formname
- IMPORTING
- fm_name = lv_fm_name.
- * EXCEPTIONS
- * no_form = 1
- * no_function_module = 2
- * OTHERS = 3.
- CALL FUNCTION lv_fm_name
- EXPORTING
- is_likp = ls_likp
- it_vbpa = lt_vbpa
- it_lips = lt_lips
- is_t001l = ls_t001l
- it_vekp = lt_vekp
- iv_tot_mt = lv_tot_mt
- iv_lordo = lv_lordo
- iv_netto = lv_netto
- iv_vol = lv_vol
- iv_bezei = lv_bezei
- iv_maktx = lv_maktx
- iv_nr_colli = lv_nr_colli
- it_sped1 = lt_sped1
- it_sped2 = lt_sped2
- iv_bezei_t = lv_bezei_t
- EXCEPTIONS
- formatting_error = 1
- internal_error = 2
- send_error = 3
- user_canceled = 4
- OTHERS = 5.
- IF sy-subrc <> 0.
- cv_retcode = sy-subrc.
- PERFORM protocol_update.
- ENDIF.
- ENDFORM. " PROCESSING
- **&---------------------------------------------------------------------
- *
- **& Form SELECT_DATA
- **&---------------------------------------------------------------------
- FORM select_data CHANGING cs_likp TYPE zliv_likp_s
- ct_vbpa TYPE zliv_vbpa_t
- ct_lips TYPE zliv_lips_t
- cs_t001l TYPE zliv_t001l_s
- cv_retcode TYPE sy-subrc
- ct_vekp TYPE zliv_vekp_t
- cv_tot_mt TYPE lgmng
- cv_lordo TYPE brgew
- cv_netto TYPE tarag_vekp
- cv_vol TYPE btvol_vekp
- cv_bezei TYPE bezei30
- cv_maktx TYPE maktx
- cv_nr_colli TYPE wgds_integer
- ct_sped1 TYPE zliv_sped_t
- ct_sped2 TYPE zliv_sped_t
- cv_bezei_t TYPE bezei40.
- DATA: lt_venum_temp TYPE zliv_venum_t,
- lt_venum TYPE zliv_venum_t,
- ls_venum TYPE zliv_venum,
- lt_vekp_temp TYPE zliv_vekp_t,
- ls_vekp_temp TYPE zliv_vekp,
- ls_lips TYPE zliv_lips_s,
- ls_vekp TYPE zliv_vekp,
- lv_matnr TYPE bapi1003_key-object,
- ls_venum_temp TYPE zliv_venum,
- lt_tvarvc TYPE zliv_tvarvc_t,
- ls_tvarvc TYPE zliv_tvarvc,
- lv_augru TYPE vbak-augru,
- lt_val_num TYPE STANDARD TABLE OF bapi1003_alloc_values_num,
- lt_val_char TYPE STANDARD TABLE OF bapi1003_alloc_values_char,
- lt_val_curr TYPE STANDARD TABLE OF bapi1003_alloc_values_curr,
- lt_bapiret TYPE STANDARD TABLE OF bapiret2,
- lt_t001l TYPE zliv_t001l_t,
- lv_index TYPE sy-tabix VALUE 0,
- ls_val_num TYPE bapi1003_alloc_values_num,
- ls_val_char TYPE bapi1003_alloc_values_char,
- lv_lines TYPE i,
- lv_atflv TYPE c LENGTH 6,
- lt_line TYPE ZLIV_COMPOZ_T,
- ls_line TYPE ZLIV_COMPOZ,
- lv_string TYPE string,
- lv_string1 TYPE char4,
- lv_string2 TYPE char4,
- lv_string3 TYPE char4,
- lV_FLOAT TYPE zliv_dec,
- lt_likp TYPE zliv_likp_t.
- SELECT name low
- FROM tvarvc
- INTO CORRESPONDING FIELDS OF TABLE lt_tvarvc
- WHERE tvarvc~name = 'Z02_ID' OR
- tvarvc~name = 'Z02_LGORT' OR
- tvarvc~name = 'Z02_OBJ' OR
- tvarvc~name = 'Z02_ORDINE' OR
- tvarvc~name = 'Z02_SPED1' OR
- tvarvc~name = 'Z02_SPED2'.
- SELECT likp~vbeln kna1~name1
- likp~wadat_ist kna1~stras
- likp~kunag kna1~land1
- likp~vkorg kna1~pstlz
- likp~inco1 kna1~ort01
- tvkot~vtext kna1~regio
- UP TO 1 ROWS
- INTO CORRESPONDING FIELDS OF TABLE lt_likp
- FROM likp
- INNER JOIN nast ON nast~objky = likp~vbeln
- left JOIN kna1 ON kna1~kunnr = likp~kunag "AND
- * kna1~spras = sy-langu
- LEFT JOIN tvkot ON tvkot~vkorg = likp~vkorg AND
- tvkot~spras = sy-langu
- WHERE likp~vbeln = nast-objky AND
- nast~vstat = 0
- AND
- likp~wadat_ist <> 0.
- IF sy-subrc <> 0.
- cv_retcode = sy-subrc.
- PERFORM protocol_update.
- ELSE.
- READ TABLE lt_likp INTO cs_likp INDEX 1.
- SELECT SINGLE bezei
- INTO cv_bezei
- FROM tinct
- WHERE tinct~spras = 'I' AND
- tinct~inco1 = cs_likp-inco1.
- SELECT vepo~venum
- INTO CORRESPONDING FIELDS OF TABLE lt_venum
- FROM vepo
- WHERE vepo~vbeln = cs_likp-vbeln.
- IF sy-subrc <> 0.
- cv_retcode = sy-subrc.
- PERFORM protocol_update.
- ELSE.
- SELECT vepo~venum vepo~unvel
- INTO CORRESPONDING FIELDS OF TABLE lt_venum_temp
- FROM vepo
- FOR ALL ENTRIES IN lt_venum
- WHERE vepo~unvel = lt_venum-venum.
- IF sy-subrc = 0.
- LOOP AT lt_venum INTO ls_venum.
- READ TABLE lt_venum_temp INTO ls_venum_temp WITH KEY
- unvel = ls_venum-venum.
- MODIFY lt_venum FROM ls_venum_temp TRANSPORTING venum.
- ENDLOOP.
- ENDIF.
- SELECT vekp~venum vekp~laeng vekp~breit
- vekp~gewei vekp~btvol vekp~hoehe
- vekp~meabm vekp~brgew vekp~tarag
- vekp~vhilm vekp~voleh
- INTO CORRESPONDING FIELDS OF TABLE lt_vekp_temp
- FROM vekp
- FOR ALL ENTRIES IN lt_venum
- WHERE vekp~venum = lt_venum-venum.
- READ TABLE lt_vekp_temp INTO ls_vekp_temp INDEX 1.
- SELECT SINGLE maktx
- INTO cv_maktx
- FROM makt
- WHERE makt~matnr = ls_vekp_temp-vhilm AND
- makt~spras = sy-langu.
- cv_lordo = 0.
- cv_netto = 0.
- cv_vol = 0.
- LOOP AT lt_vekp_temp INTO ls_vekp.
- cv_lordo = cv_lordo + ls_vekp-brgew.
- cv_netto = cv_netto + ls_vekp-tarag.
- cv_vol = cv_vol + ls_vekp-btvol.
- ENDLOOP.
- SORT lt_vekp_temp BY laeng breit hoehe.
- READ TABLE lt_vekp_temp INTO ls_vekp_temp INDEX 1.
- LOOP AT lt_vekp_temp INTO ls_vekp.
- IF ls_vekp-laeng = ls_vekp_temp-laeng AND
- ls_vekp-breit = ls_vekp_temp-breit AND
- ls_vekp-hoehe = ls_vekp_temp-hoehe.
- ls_vekp_temp-nr_colli = ls_vekp_temp-nr_colli + 1.
- ELSE.
- ls_vekp-nr_colli = ls_vekp_temp-nr_colli.
- APPEND ls_vekp TO ct_vekp.
- ls_vekp-nr_colli = 0.
- ls_vekp_temp = ls_vekp.
- ls_vekp_temp-nr_colli = 0.
- ENDIF.
- ENDLOOP.
- IF ls_vekp-laeng = ls_vekp_temp-laeng AND
- ls_vekp-breit = ls_vekp_temp-breit AND
- ls_vekp-hoehe = ls_vekp_temp-hoehe.
- ls_vekp-nr_colli = ls_vekp_temp-nr_colli.
- APPEND ls_vekp TO ct_vekp.
- ENDIF.
- cv_nr_colli = 0.
- LOOP AT ct_vekp INTO ls_vekp.
- cv_nr_colli = cv_nr_colli + ls_vekp-nr_colli.
- lV_FLOAT = lS_VEKP-LAENG.
- lv_STRING1 = lV_FLOAT.
- CLEAR: lV_FLOAT.
- lV_FLOAT = lS_VEKP-BREIT.
- lv_STRING2 = lV_FLOAT.
- CLEAR: lV_FLOAT.
- lV_FLOAT = lS_VEKP-HOEHE.
- lv_STRING3 = lV_FLOAT.
- CONCATENATE lv_STRING1 lv_STRING2 lv_STRING3 INTO lV_STRING
- SEPARATED BY 'X'.
- ls_vekp-string = lV_STRING.
- MODIFY ct_vekp FROM ls_vekp TRANSPORTING string.
- CLEAR: lv_STRING1, lv_STRING2.
- ENDLOOP.
- ENDIF.
- SORT lt_tvarvc BY name.
- READ TABLE lt_tvarvc INTO ls_tvarvc WITH KEY
- name = 'Z02_SPED1' BINARY SEARCH.
- SELECT vbpa~vbeln kna1~name2
- vbpa~parvw kna1~stras
- vbpa~lifnr kna1~pstlz
- kna1~stcd1 kna1~ort01
- kna1~name1
- UP TO 1 ROWS
- INTO CORRESPONDING FIELDS OF TABLE ct_sped1
- FROM vbpa
- JOIN kna1 ON kna1~kunnr = vbpa~kunnr
- WHERE vbpa~vbeln = cs_likp-vbeln AND
- vbpa~parvw = ls_tvarvc-low.
- IF sy-subrc <> 0.
- cv_retcode = sy-subrc.
- PERFORM protocol_update.
- ENDIF.
- SORT lt_tvarvc BY name.
- READ TABLE lt_tvarvc INTO ls_tvarvc WITH KEY
- name = 'Z02_SPED2' BINARY SEARCH.
- SELECT vbpa~vbeln lfa1~name2
- vbpa~parvw lfa1~stras
- vbpa~lifnr lfa1~pstlz
- lfa1~stcd1 lfa1~ort01
- lfa1~name1
- UP TO 1 ROWS
- INTO CORRESPONDING FIELDS OF TABLE ct_sped2
- FROM vbpa JOIN lfa1 ON lfa1~lifnr = vbpa~lifnr
- WHERE vbpa~vbeln = cs_likp-vbeln AND
- vbpa~parvw = ls_tvarvc-low.
- IF sy-subrc <> 0.
- cv_retcode = sy-subrc.
- PERFORM protocol_update.
- ENDIF.
- SORT lt_tvarvc BY name.
- READ TABLE lt_tvarvc INTO ls_tvarvc WITH KEY
- name = 'Z02_SPED1' BINARY SEARCH.
- SELECT vbpa~vbeln kna1~land1
- vbpa~parvw kna1~pstlz
- vbpa~kunnr kna1~ort01
- kna1~name1 kna1~regio
- kna1~stras
- UP TO 1 ROWS
- INTO CORRESPONDING FIELDS OF TABLE ct_vbpa
- FROM vbpa JOIN kna1 ON kna1~kunnr = vbpa~kunnr
- WHERE vbpa~vbeln = cs_likp-vbeln AND
- vbpa~parvw = ls_tvarvc-low.
- IF sy-subrc <> 0.
- cv_retcode = sy-subrc.
- PERFORM protocol_update.
- ENDIF.
- SELECT SUM( lgmng )
- INTO cv_tot_mt
- FROM lips
- WHERE lips~vbeln = nast-objky AND
- lips~lfimg <> 0 .
- SORT lt_tvarvc BY name.
- READ TABLE lt_tvarvc INTO ls_tvarvc WITH KEY
- name = 'Z02_LGORT' BINARY SEARCH.
- SELECT lips~vbeln lips~matnr lips~meins
- lips~lgort lips~lgmng lips~kdmat
- lips~werks lips~vgbel vbak~augru
- lips~lfimg lips~vgpos vbak~auart
- lips~spart lips~charg makt~maktx
- INTO CORRESPONDING FIELDS OF TABLE ct_lips
- FROM lips
- INNER JOIN vbak ON vbak~vbeln = lips~vgbel
- INNER JOIN makt ON makt~matnr = lips~matnr
- WHERE lips~vbeln = cs_likp-vbeln AND
- lips~lfimg <> 0 AND
- makt~spras = sy-langu.
- READ TABLE ct_lips INTO ls_lips INDEX 1.
- SELECT SINGLE vbak~augru
- INTO lv_augru
- FROM vbak
- WHERE vbak~vbeln = ls_lips-vgbel.
- SELECT SINGLE tvaut~bezei
- INTO cv_bezei_t
- FROM tvaut
- WHERE tvaut~augru = lv_augru AND
- tvaut~spras = sy-langu.
- LOOP AT ct_lips INTO ls_lips.
- lv_matnr = ls_lips-matnr.
- CALL FUNCTION 'BAPI_OBJCL_GETDETAIL'
- EXPORTING
- objectkey = lv_matnr
- objecttable = 'MARA'
- classnum = 'Z_MAT_COMPOSITION'
- classtype = '001'
- TABLES
- allocvaluesnum = lt_val_num
- allocvalueschar = lt_val_char
- allocvaluescurr = lt_val_curr
- return = lt_bapiret.
- DESCRIBE TABLE lt_val_num LINES lv_lines.
- DO lv_lines TIMES.
- lv_index = lv_index + 1.
- READ TABLE lt_val_num INTO ls_val_num INDEX lv_index.
- CALL FUNCTION 'FLTP_CHAR_CONVERSION'
- EXPORTING
- decim = 2
- expon = 0
- input = ls_val_num-value_from
- ivalu = 'X'
- maskn = ' '
- IMPORTING
- flstr = lv_atflv.
- READ TABLE lt_val_char INTO ls_val_char INDEX lv_index.
- * CONCATENATE lv_atflv '%' INTO lv_text_c.
- * CONCATENATE lv_text_c ls_val_char-value_char
- * INTO lv_text SEPARATED BY space.
- ls_line-VALUE = lv_atflv.
- ls_line-PROCENT = '%'.
- ls_line-tdline = ls_val_char-value_char.
- APPEND ls_line TO lt_line.
- CLEAR ls_line.
- ENDDO.
- ls_lips-line = lt_line.
- MODIFY ct_lips FROM ls_lips TRANSPORTING line.
- CLEAR: lt_line,ls_lips, lv_atflv, lv_index,
- ls_val_num, ls_val_char, lt_val_num, lt_val_char .
- ENDLOOP.
- *---------------------------------------------------------------------
- IF sy-subrc <> 0.
- cv_retcode = sy-subrc.
- PERFORM protocol_update.
- ELSE.
- SELECT t001l~werks adrc~mc_city1
- t001l~lgort adrc~mc_street
- t001l~lgobe
- UP TO 1 ROWS
- INTO CORRESPONDING FIELDS OF TABLE lt_t001l
- FROM t001l
- INNER JOIN twlad ON twlad~werks = t001l~werks
- INNER JOIN adrc ON adrc~addrnumber = twlad~adrnr
- FOR ALL entries IN ct_lips
- WHERE t001l~werks = ct_lips-werks AND
- t001l~lgort = ct_lips-lgort AND
- twlad~lgort = t001l~lgort.
- IF sy-subrc <> 0.
- cv_retcode = sy-subrc.
- PERFORM protocol_update.
- ELSE.
- READ TABLE lt_t001l INTO cs_t001l INDEX 1.
- ENDIF.
- ENDIF.
- ENDIF.
- ENDFORM. " SELECT_DATA
- &---------------------------------------------------------------------
- *& Form PROTOCOL_UPDATE
- &---------------------------------------------------------------------
- FORM protocol_update .
- 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
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement