SHARE
TWEET

Untitled

a guest Dec 4th, 2019 151 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. &---------------------------------------------------------------------
  2. *& Report  ZLIV_dnote
  3. & Created by    :  Larionova-Cojocaru Inga                            
  4. *& Creation date : 27.09.2019
  5.  
  6. *& Requested by  :  Dorin Blindu
  7. *& Description   :  Ex. Training Task.
  8. &---------------------------------------------------------------------
  9. REPORT  zliv_dnote.
  10. &---------------------------------------------------------------------
  11. *& DATABASE TABLES
  12. &---------------------------------------------------------------------
  13. TABLES: tnapr, nast.
  14.  
  15. ---------------------------------------------------------------------
  16. *       FORM ENTRY
  17. ---------------------------------------------------------------------
  18. FORM entry  USING return_code us_screen.
  19.  
  20.   DATA: lv_retcode TYPE sy-subrc.
  21.   PERFORM processing CHANGING lv_retcode."USING    us_screen
  22.  
  23.   IF lv_retcode NE 0.
  24.     return_code = 1.
  25.   ELSE.
  26.     return_code = 0.
  27.   ENDIF.
  28.  
  29. ENDFORM.                    "ENTRY
  30. &---------------------------------------------------------------------
  31. *&      Form  PROCESSING
  32. &---------------------------------------------------------------------
  33. FORM processing  "USING    us_screen  TYPE c
  34.                  CHANGING cv_retcode TYPE sy-subrc.
  35.   DATA: lv_formname TYPE tdsfname,
  36.         lv_fm_name  TYPE rs38l_fnam.
  37.   DATA: ls_likp     TYPE zliv_likp_s ,
  38.         lt_vbpa     TYPE zliv_vbpa_t,
  39.         lt_lips     TYPE zliv_lips_t,
  40.         ls_t001l    TYPE zliv_t001l_s,
  41.         lt_vekp     TYPE zliv_vekp_t,
  42.         lv_tot_mt   TYPE lgmng,
  43.         lv_lordo    TYPE brgew,
  44.         lv_netto    TYPE tarag_vekp,
  45.         lv_vol      TYPE btvol_vekp,
  46.         lv_bezei    TYPE bezei30,
  47.         lv_maktx    TYPE maktx,
  48.         lv_nr_colli TYPE wgds_integer,
  49.         lt_sped1    TYPE zliv_sped_t,
  50.         lt_sped2    TYPE zliv_sped_t,
  51.         lv_bezei_t  TYPE bezei40.
  52.   lv_formname = tnapr-sform.
  53.   PERFORM select_data CHANGING ls_likp
  54.                                lt_vbpa
  55.                                lt_lips
  56.                                ls_t001l
  57.                                cv_retcode
  58.                                lt_vekp
  59.                                lv_tot_mt
  60.                                lv_lordo
  61.                                lv_netto
  62.                                lv_vol
  63.                                lv_bezei
  64.                                lv_maktx
  65.                                lv_nr_colli
  66.                                lt_sped1
  67.                                lt_sped2
  68.                                lv_bezei_t.
  69.   CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
  70.     EXPORTING
  71.       formname = lv_formname
  72.     IMPORTING
  73.       fm_name  = lv_fm_name.
  74. *    EXCEPTIONS
  75. *      no_form            = 1
  76. *      no_function_module = 2
  77. *      OTHERS             = 3.
  78.  
  79.   CALL FUNCTION lv_fm_name
  80.     EXPORTING
  81.       is_likp          = ls_likp
  82.       it_vbpa          = lt_vbpa
  83.       it_lips          = lt_lips
  84.       is_t001l         = ls_t001l
  85.       it_vekp          = lt_vekp
  86.       iv_tot_mt        = lv_tot_mt
  87.       iv_lordo         = lv_lordo
  88.       iv_netto         = lv_netto
  89.       iv_vol           = lv_vol
  90.       iv_bezei         = lv_bezei
  91.       iv_maktx         = lv_maktx
  92.       iv_nr_colli      = lv_nr_colli
  93.       it_sped1         = lt_sped1
  94.       it_sped2         = lt_sped2
  95.       iv_bezei_t       = lv_bezei_t
  96.     EXCEPTIONS
  97.       formatting_error = 1
  98.       internal_error   = 2
  99.       send_error       = 3
  100.       user_canceled    = 4
  101.       OTHERS           = 5.
  102.   IF sy-subrc <> 0.
  103.     cv_retcode = sy-subrc.
  104.     PERFORM protocol_update.
  105.   ENDIF.
  106.  
  107. ENDFORM.                    " PROCESSING
  108. **&---------------------------------------------------------------------
  109. *
  110. **&      Form  SELECT_DATA
  111. **&---------------------------------------------------------------------
  112.  
  113. FORM select_data  CHANGING cs_likp     TYPE zliv_likp_s
  114.                            ct_vbpa     TYPE zliv_vbpa_t
  115.                            ct_lips     TYPE zliv_lips_t
  116.                            cs_t001l    TYPE zliv_t001l_s
  117.                            cv_retcode  TYPE sy-subrc
  118.                            ct_vekp     TYPE zliv_vekp_t
  119.                            cv_tot_mt   TYPE lgmng
  120.                            cv_lordo    TYPE brgew
  121.                            cv_netto    TYPE tarag_vekp
  122.                            cv_vol      TYPE btvol_vekp
  123.                            cv_bezei    TYPE bezei30
  124.                            cv_maktx    TYPE maktx
  125.                            cv_nr_colli TYPE wgds_integer
  126.                            ct_sped1    TYPE zliv_sped_t
  127.                            ct_sped2    TYPE zliv_sped_t
  128.                            cv_bezei_t  TYPE bezei40.
  129.   DATA: lt_venum_temp TYPE zliv_venum_t,
  130.         lt_venum      TYPE zliv_venum_t,
  131.         ls_venum      TYPE zliv_venum,
  132.         lt_vekp_temp  TYPE zliv_vekp_t,
  133.         ls_vekp_temp  TYPE zliv_vekp,
  134.         ls_lips       TYPE zliv_lips_s,
  135.         ls_vekp       TYPE zliv_vekp,
  136.         lv_matnr      TYPE bapi1003_key-object,
  137.         ls_venum_temp TYPE zliv_venum,
  138.         lt_tvarvc     TYPE zliv_tvarvc_t,
  139.         ls_tvarvc     TYPE zliv_tvarvc,
  140.         lv_augru      TYPE vbak-augru,
  141.         lt_val_num    TYPE STANDARD TABLE OF bapi1003_alloc_values_num,
  142.         lt_val_char   TYPE STANDARD TABLE OF bapi1003_alloc_values_char,
  143.         lt_val_curr   TYPE STANDARD TABLE OF bapi1003_alloc_values_curr,
  144.         lt_bapiret    TYPE STANDARD TABLE OF bapiret2,
  145.         lt_t001l      TYPE zliv_t001l_t,
  146.         lv_index      TYPE sy-tabix VALUE 0,
  147.         ls_val_num    TYPE bapi1003_alloc_values_num,
  148.         ls_val_char   TYPE bapi1003_alloc_values_char,
  149.         lv_lines      TYPE i,
  150.         lv_atflv      TYPE c LENGTH 6,
  151.         lt_line       TYPE ZLIV_COMPOZ_T,
  152.         ls_line       TYPE ZLIV_COMPOZ,
  153.         lv_string     TYPE string,
  154.         lv_string1    TYPE char4,
  155.         lv_string2    TYPE char4,
  156.         lv_string3    TYPE char4,
  157.         lV_FLOAT      TYPE zliv_dec,
  158.         lt_likp       TYPE zliv_likp_t.
  159.  
  160.   SELECT name low
  161.     FROM tvarvc
  162.     INTO CORRESPONDING FIELDS OF TABLE lt_tvarvc
  163.    WHERE tvarvc~name  = 'Z02_ID'     OR
  164.          tvarvc~name  = 'Z02_LGORT'  OR
  165.          tvarvc~name  = 'Z02_OBJ'    OR
  166.          tvarvc~name  = 'Z02_ORDINE' OR
  167.          tvarvc~name  = 'Z02_SPED1'  OR
  168.          tvarvc~name  = 'Z02_SPED2'.
  169.   SELECT likp~vbeln     kna1~name1
  170.          likp~wadat_ist kna1~stras
  171.          likp~kunag     kna1~land1
  172.          likp~vkorg     kna1~pstlz
  173.          likp~inco1     kna1~ort01
  174.          tvkot~vtext    kna1~regio
  175.       UP TO 1 ROWS
  176.     INTO CORRESPONDING FIELDS OF TABLE lt_likp
  177.     FROM likp
  178.    INNER JOIN nast ON nast~objky  = likp~vbeln
  179.     left JOIN kna1 ON kna1~kunnr  = likp~kunag "AND
  180. *                      kna1~spras  = sy-langu
  181.     LEFT JOIN tvkot ON tvkot~vkorg = likp~vkorg AND
  182.                       tvkot~spras = sy-langu
  183.    WHERE likp~vbeln = nast-objky AND
  184.          nast~vstat = 0
  185.      AND
  186.          likp~wadat_ist <> 0.
  187.   IF sy-subrc <> 0.
  188.     cv_retcode = sy-subrc.
  189.     PERFORM protocol_update.
  190.   ELSE.
  191.     READ TABLE lt_likp INTO cs_likp INDEX 1.
  192.     SELECT SINGLE bezei
  193.       INTO cv_bezei
  194.       FROM tinct
  195.      WHERE tinct~spras = 'I' AND
  196.            tinct~inco1 = cs_likp-inco1.
  197.  
  198.     SELECT vepo~venum
  199.       INTO CORRESPONDING FIELDS OF TABLE lt_venum
  200.       FROM vepo
  201.      WHERE vepo~vbeln = cs_likp-vbeln.
  202.     IF sy-subrc <> 0.
  203.       cv_retcode = sy-subrc.
  204.       PERFORM protocol_update.
  205.     ELSE.
  206.       SELECT vepo~venum vepo~unvel
  207.         INTO CORRESPONDING FIELDS OF TABLE lt_venum_temp
  208.         FROM vepo
  209.          FOR ALL ENTRIES IN lt_venum
  210.        WHERE vepo~unvel = lt_venum-venum.
  211.       IF sy-subrc = 0.
  212.         LOOP AT lt_venum INTO ls_venum.
  213.           READ TABLE lt_venum_temp INTO ls_venum_temp WITH KEY
  214.                                                 unvel = ls_venum-venum.
  215.           MODIFY  lt_venum FROM ls_venum_temp TRANSPORTING venum.
  216.         ENDLOOP.
  217.       ENDIF.
  218.  
  219.       SELECT vekp~venum vekp~laeng vekp~breit
  220.              vekp~gewei vekp~btvol vekp~hoehe
  221.              vekp~meabm vekp~brgew vekp~tarag
  222.              vekp~vhilm vekp~voleh
  223.         INTO CORRESPONDING FIELDS OF TABLE lt_vekp_temp
  224.         FROM vekp
  225.          FOR ALL ENTRIES IN lt_venum
  226.        WHERE vekp~venum = lt_venum-venum.
  227.       READ TABLE lt_vekp_temp INTO ls_vekp_temp INDEX 1.
  228.       SELECT SINGLE maktx
  229.         INTO cv_maktx
  230.         FROM makt
  231.        WHERE makt~matnr = ls_vekp_temp-vhilm AND
  232.              makt~spras = sy-langu.
  233.  
  234.       cv_lordo = 0.
  235.       cv_netto = 0.
  236.       cv_vol = 0.
  237.       LOOP AT lt_vekp_temp INTO ls_vekp.
  238.         cv_lordo = cv_lordo + ls_vekp-brgew.
  239.         cv_netto = cv_netto + ls_vekp-tarag.
  240.         cv_vol   = cv_vol + ls_vekp-btvol.
  241.       ENDLOOP.
  242.       SORT lt_vekp_temp BY laeng breit hoehe.
  243.       READ TABLE lt_vekp_temp INTO ls_vekp_temp INDEX 1.
  244.       LOOP AT lt_vekp_temp INTO ls_vekp.
  245.         IF ls_vekp-laeng = ls_vekp_temp-laeng AND
  246.            ls_vekp-breit = ls_vekp_temp-breit AND
  247.            ls_vekp-hoehe = ls_vekp_temp-hoehe.
  248.           ls_vekp_temp-nr_colli = ls_vekp_temp-nr_colli + 1.
  249.         ELSE.
  250.           ls_vekp-nr_colli = ls_vekp_temp-nr_colli.
  251.           APPEND ls_vekp TO ct_vekp.
  252.           ls_vekp-nr_colli      = 0.
  253.           ls_vekp_temp          = ls_vekp.
  254.           ls_vekp_temp-nr_colli = 0.
  255.         ENDIF.
  256.       ENDLOOP.
  257.       IF ls_vekp-laeng = ls_vekp_temp-laeng AND
  258.         ls_vekp-breit = ls_vekp_temp-breit AND
  259.         ls_vekp-hoehe = ls_vekp_temp-hoehe.
  260.         ls_vekp-nr_colli = ls_vekp_temp-nr_colli.
  261.         APPEND ls_vekp TO ct_vekp.
  262.       ENDIF.
  263.       cv_nr_colli = 0.
  264.       LOOP AT ct_vekp INTO ls_vekp.
  265.         cv_nr_colli = cv_nr_colli + ls_vekp-nr_colli.
  266.        lV_FLOAT = lS_VEKP-LAENG.
  267. lv_STRING1 = lV_FLOAT.
  268. CLEAR: lV_FLOAT.
  269. lV_FLOAT = lS_VEKP-BREIT.
  270. lv_STRING2 = lV_FLOAT.
  271. CLEAR: lV_FLOAT.
  272. lV_FLOAT = lS_VEKP-HOEHE.
  273. lv_STRING3 = lV_FLOAT.
  274. CONCATENATE lv_STRING1 lv_STRING2 lv_STRING3 INTO lV_STRING
  275. SEPARATED BY 'X'.
  276. ls_vekp-string = lV_STRING.
  277. MODIFY ct_vekp FROM ls_vekp TRANSPORTING string.
  278. CLEAR: lv_STRING1, lv_STRING2.
  279.       ENDLOOP.
  280.     ENDIF.
  281.     SORT lt_tvarvc BY name.
  282.     READ TABLE lt_tvarvc INTO ls_tvarvc WITH KEY
  283.                                        name = 'Z02_SPED1' BINARY SEARCH.
  284.     SELECT vbpa~vbeln kna1~name2
  285.            vbpa~parvw kna1~stras
  286.            vbpa~lifnr kna1~pstlz
  287.            kna1~stcd1 kna1~ort01
  288.            kna1~name1
  289.            UP TO 1 ROWS
  290.       INTO CORRESPONDING FIELDS OF TABLE ct_sped1
  291.       FROM vbpa
  292.       JOIN kna1 ON kna1~kunnr = vbpa~kunnr
  293.      WHERE vbpa~vbeln = cs_likp-vbeln AND
  294.            vbpa~parvw = ls_tvarvc-low.
  295.     IF sy-subrc <> 0.
  296.       cv_retcode = sy-subrc.
  297.       PERFORM protocol_update.
  298.     ENDIF.
  299.     SORT lt_tvarvc BY name.
  300.     READ TABLE lt_tvarvc INTO ls_tvarvc WITH KEY
  301.                                        name = 'Z02_SPED2' BINARY SEARCH.
  302.     SELECT vbpa~vbeln lfa1~name2
  303.            vbpa~parvw lfa1~stras
  304.            vbpa~lifnr lfa1~pstlz
  305.            lfa1~stcd1 lfa1~ort01
  306.            lfa1~name1
  307.            UP TO 1 ROWS
  308.       INTO CORRESPONDING FIELDS OF TABLE ct_sped2
  309.       FROM vbpa JOIN lfa1 ON lfa1~lifnr = vbpa~lifnr
  310.      WHERE vbpa~vbeln = cs_likp-vbeln AND
  311.            vbpa~parvw = ls_tvarvc-low.
  312.     IF sy-subrc <> 0.
  313.       cv_retcode = sy-subrc.
  314.       PERFORM protocol_update.
  315.     ENDIF.
  316.     SORT lt_tvarvc BY name.
  317.     READ TABLE lt_tvarvc INTO ls_tvarvc WITH KEY
  318.                                        name = 'Z02_SPED1' BINARY SEARCH.
  319.     SELECT vbpa~vbeln kna1~land1
  320.            vbpa~parvw kna1~pstlz
  321.            vbpa~kunnr kna1~ort01
  322.            kna1~name1 kna1~regio
  323.            kna1~stras
  324.            UP TO 1 ROWS
  325.       INTO CORRESPONDING FIELDS OF TABLE ct_vbpa
  326.       FROM vbpa JOIN kna1 ON kna1~kunnr = vbpa~kunnr
  327.      WHERE vbpa~vbeln = cs_likp-vbeln AND
  328.            vbpa~parvw = ls_tvarvc-low.
  329.     IF sy-subrc <> 0.
  330.       cv_retcode = sy-subrc.
  331.       PERFORM protocol_update.
  332.     ENDIF.
  333.     SELECT SUM( lgmng )
  334.       INTO cv_tot_mt
  335.       FROM lips
  336.      WHERE lips~vbeln = nast-objky AND
  337.            lips~lfimg <> 0 .
  338.  
  339.     SORT lt_tvarvc BY name.
  340.     READ TABLE lt_tvarvc INTO ls_tvarvc WITH KEY
  341.                                        name = 'Z02_LGORT' BINARY SEARCH.
  342.     SELECT lips~vbeln lips~matnr lips~meins
  343.            lips~lgort lips~lgmng lips~kdmat
  344.            lips~werks lips~vgbel vbak~augru
  345.            lips~lfimg lips~vgpos vbak~auart
  346.            lips~spart lips~charg makt~maktx
  347.       INTO CORRESPONDING FIELDS OF TABLE ct_lips
  348.       FROM lips
  349.      INNER JOIN vbak ON vbak~vbeln = lips~vgbel
  350.      INNER JOIN makt ON makt~matnr = lips~matnr
  351.      WHERE lips~vbeln = cs_likp-vbeln AND
  352.            lips~lfimg <> 0            AND
  353.            makt~spras = sy-langu.
  354.  
  355.     READ TABLE ct_lips INTO ls_lips INDEX 1.
  356.     SELECT SINGLE vbak~augru
  357.       INTO lv_augru
  358.       FROM vbak
  359.      WHERE vbak~vbeln = ls_lips-vgbel.
  360.     SELECT SINGLE tvaut~bezei
  361.       INTO cv_bezei_t
  362.       FROM tvaut
  363.      WHERE tvaut~augru = lv_augru AND
  364.            tvaut~spras = sy-langu.
  365.     LOOP AT ct_lips INTO ls_lips.
  366.       lv_matnr = ls_lips-matnr.
  367.       CALL FUNCTION 'BAPI_OBJCL_GETDETAIL'
  368.         EXPORTING
  369.           objectkey       = lv_matnr
  370.           objecttable     = 'MARA'
  371.           classnum        = 'Z_MAT_COMPOSITION'
  372.           classtype       = '001'
  373.         TABLES
  374.           allocvaluesnum  = lt_val_num
  375.           allocvalueschar = lt_val_char
  376.           allocvaluescurr = lt_val_curr
  377.           return          = lt_bapiret.
  378.  
  379.       DESCRIBE TABLE lt_val_num LINES lv_lines.
  380.       DO lv_lines TIMES.
  381.         lv_index = lv_index + 1.
  382.         READ TABLE lt_val_num INTO ls_val_num INDEX lv_index.
  383.         CALL FUNCTION 'FLTP_CHAR_CONVERSION'
  384.           EXPORTING
  385.             decim = 2
  386.             expon = 0
  387.             input = ls_val_num-value_from
  388.             ivalu = 'X'
  389.             maskn = ' '
  390.           IMPORTING
  391.             flstr = lv_atflv.
  392.         READ TABLE lt_val_char INTO ls_val_char INDEX lv_index.
  393. *        CONCATENATE lv_atflv '%' INTO lv_text_c.
  394. *        CONCATENATE lv_text_c ls_val_char-value_char
  395. *        INTO lv_text SEPARATED BY space.
  396.        ls_line-VALUE = lv_atflv.
  397.        ls_line-PROCENT = '%'.
  398.        ls_line-tdline = ls_val_char-value_char.
  399.         APPEND ls_line TO lt_line.
  400.         CLEAR ls_line.
  401.       ENDDO.
  402.       ls_lips-line = lt_line.
  403.  MODIFY ct_lips FROM ls_lips TRANSPORTING line.
  404.       CLEAR: lt_line,ls_lips, lv_atflv, lv_index,
  405.              ls_val_num, ls_val_char, lt_val_num, lt_val_char  .
  406.     ENDLOOP.
  407. *---------------------------------------------------------------------
  408.  
  409.     IF sy-subrc <> 0.
  410.       cv_retcode = sy-subrc.
  411.       PERFORM protocol_update.
  412.     ELSE.
  413.  
  414.       SELECT t001l~werks adrc~mc_city1
  415.              t001l~lgort adrc~mc_street
  416.              t001l~lgobe
  417.              UP TO 1 ROWS
  418.         INTO CORRESPONDING FIELDS OF TABLE lt_t001l
  419.         FROM t001l
  420.        INNER JOIN twlad ON twlad~werks = t001l~werks
  421.  
  422.        INNER JOIN adrc ON adrc~addrnumber = twlad~adrnr
  423.          FOR ALL entries IN ct_lips
  424.        WHERE t001l~werks = ct_lips-werks AND
  425.              t001l~lgort = ct_lips-lgort AND
  426.              twlad~lgort = t001l~lgort.
  427.       IF sy-subrc <> 0.
  428.         cv_retcode = sy-subrc.
  429.         PERFORM protocol_update.
  430.       ELSE.
  431.         READ TABLE lt_t001l INTO cs_t001l INDEX 1.
  432.       ENDIF.
  433.     ENDIF.
  434.   ENDIF.
  435.  
  436. ENDFORM.                    " SELECT_DATA
  437. &---------------------------------------------------------------------
  438. *&      Form  PROTOCOL_UPDATE
  439. &---------------------------------------------------------------------
  440. FORM protocol_update .
  441.   CALL FUNCTION 'NAST_PROTOCOL_UPDATE'
  442.     EXPORTING
  443.       msg_arbgb = syst-msgid
  444.       msg_nr    = syst-msgno
  445.       msg_ty    = syst-msgty
  446.       msg_v1    = syst-msgv1
  447.       msg_v2    = syst-msgv2
  448.       msg_v3    = syst-msgv3
  449.       msg_v4    = syst-msgv4.
  450. *    EXCEPTIONS
  451. *      OTHERS    = 1.
  452. ENDFORM.                    " PROTOCOL_UPDATE
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
Top