Ygrn 09042013
Ygrn 09042013
Ygrn 09042013
*Declaration for Selection Screen DATA: it_message LIKE solisti1 OCCURS 10 WITH HEADER LINE. DATA: objpack LIKE sopcklsti1 OCCURS 2 WITH HEADER LINE. DATA: objhead LIKE solisti1 OCCURS 1 WITH HEADER LINE. DATA: objbin LIKE solix OCCURS 10 WITH HEADER LINE. DATA: objtxt LIKE solisti1 OCCURS 10 WITH HEADER LINE. DATA: reclist LIKE somlreci1 OCCURS 5 WITH HEADER LINE. DATA: doc_chng LIKE sodocchgi1. DATA: tab_lines LIKE sy-tabix. DATA: DATA: it_attach TYPE STANDARD TABLE OF solisti1 INITIAL SIZE 0 WITH HEADER LINE.
t_packing_list LIKE sopcklsti1 OCCURS 0 WITH HEADER LINE, t_contents LIKE solisti1 OCCURS 0 WITH HEADER LINE, t_receivers LIKE somlreci1 OCCURS 0 WITH HEADER LINE, t_attachment LIKE solisti1 OCCURS 0 WITH HEADER LINE, t_object_header LIKE solisti1 OCCURS 0 WITH HEADER LINE, w_cnt TYPE i, w_sent_all(1) TYPE c, w_doc_data LIKE sodocchgi1, gd_error TYPE sy-subrc, gd_reciever TYPE sy-subrc. CONSTANTS: con_cret TYPE c VALUE cl_abap_char_utilities=>cr_lf, con_tab TYPE c VALUE cl_abap_char_utilities=>horizontal_tab. TYPE TYPE TYPE TYPE TYPE TYPE TYPE TYPE TYPE TYPE TYPE MARA-MATNR, MSEG-WERKS, MSEG-UMWRK, MKPF-BUDAT, MSEG-LIFNR, EKKO-BSART, EKKO-EKORG, EKKO-EKGRP, MARA-MTART, EKKO-LOEKZ, MARA-MATKL.
DATA:MATNR PLANT UMWRK BUDAT LIFNR BSART EKORG EKGRP MTART BWBST MATKL
*Declaration part TYPES:BEGIN MBLNR MJAHR BUDAT ZEILE BUKRS MTART MATKL MATNR WERKS LGORT CHARG INSMK LIFNR SHKZG WAERS OF TY_MSEG, TYPE MBLNR, TYPE MJAHR, TYPE BUDAT, TYPE MBLPO, TYPE BUKRS, TYPE MTART, TYPE MATKL, TYPE MATNR, TYPE WERKS_D, TYPE LGORT_D, TYPE CHARG_D, TYPE MB_INSMK, TYPE ELIFN, TYPE SHKZG, TYPE WAERS,
DMBTR TYPE DMBTR, MENGE TYPE MENGE_D, MEINS TYPE MEINS, SMBLN TYPE MBLNR, SJAHR TYPE MJAHR, SMBLP TYPE MBLPO, LFBNR TYPE LFBNR, LFBJA TYPE LFBJA, LFPOS TYPE LFPOS, EBELN TYPE BSTNR, EBELP TYPE KPOSN, EINDT TYPE EINDT, BEDAT TYPE EBDAT, UMWRK TYPE UMWRK, WEMPF TYPE WEMPF, MAKTX TYPE MAKTX, NAME1 TYPE NAME1, NAME2 TYPE NAME1_GP, SNAME TYPE NAME1, WGBEZ TYPE WGBEZ, BSART TYPE ESART, EKORG TYPE EKORG, EKGRP TYPE BKGRP, KNUMV TYPE KNUMV, MWSKZ TYPE MWSKZ, BWART TYPE BWART, HSDAT TYPE HSDAT, VBELN TYPE VBELN_VF, FKDAT TYPE FKDAT, VBELV TYPE VBELN_VON, BELNR TYPE RE_BELNR, XBLNR TYPE XBLNR1, XAUTO TYPE MB_XAUTO, FRBNR TYPE FRBNR1, BKTXT TYPE BKTXT, BLDAT TYPE BLDAT, PSTYP TYPE PSTYP, GTNO TYPE MAKTX, GTDT TYPE BUDAT, PERMIT TYPE MAKTX, TRNO TYPE MAKTX, GRWT TYPE BRGEW, TRWT TYPE NTGEW, NTWT TYPE NTGEW, WTUNIT TYPE GEWEI, REM TYPE ZLTEXT, LRNO TYPE MAKTX, LRDT TYPE BUDAT, TRNAME TYPE MAKTX, MRP_RATE TYPE P LENGTH BASIC TYPE ZKWERT, PACKING TYPE ZKWERT, DISC TYPE ZKWERT, FREIGHT TYPE ZKWERT, OTH_CHG TYPE ZKWERT, R_OFF TYPE ZKWERT, EXCISE TYPE ZKWERT, EXCISE_P TYPE KBETR, CESS TYPE ZKWERT, CESS_P TYPE KBETR,
SCESS TYPE ZKWERT, SCESS_P TYPE KBETR, CST TYPE ZKWERT, CST_P TYPE KBETR, LST TYPE ZKWERT, LST_P TYPE KBETR, VAT TYPE ZKWERT, VAT_P TYPE KBETR, STAX TYPE ZKWERT, STAX_P TYPE KBETR, OTAX TYPE ZKWERT, OTAX_P TYPE KBETR, OTH_ADD TYPE ZKWERT, OTH_LESS TYPE ZKWERT, NETAMT TYPE ZKWERT, UOM TYPE MEINS, END OF TY_MSEG. TYPES:BEGIN OF TY_MAKT, MATNR TYPE MATNR, MAKTX TYPE MAKTX, SPRAS TYPE SPRAS, END OF TY_MAKT. TYPES:BEGIN OF TY_T001W, WERKS TYPE WERKS_D, NAME1 TYPE NAME1, END OF TY_T001W. TYPES:BEGIN OF TY_LFA1, LIFNR TYPE LIFNR, NAME1 TYPE NAME1_GP, KTOKK TYPE KTOKK, END OF TY_LFA1. TYPES:BEGIN OF TY_EKKO, EBELN TYPE EBELN, BUKRS TYPE BUKRS, BSART TYPE ESART, LIFNR TYPE ELIFN, EKORG TYPE EKORG, EKGRP TYPE BKGRP, KNUMV TYPE KNUMV, AEDAT TYPE ERDAT, BEDAT TYPE EBDAT, WAERS TYPE WAERS, LANDS TYPE LAND1_STML, LLIEF TYPE LLIEF, WKURS TYPE WKURS, END OF TY_EKKO. TYPES:BEGIN EBELN EBELP BUKRS MWSKZ MENGE EFFWR NETWR TXJCD OF TY_EKPO, TYPE EBELN, TYPE KPOSN, TYPE BUKRS, TYPE MWSKZ, TYPE BSTMG, TYPE EFFWR, TYPE BWERT, TYPE TXJCD,
MATNR TYPE MATNR, WERKS TYPE EWERK, MATKL TYPE MATKL, MEINS TYPE BSTME, MTART TYPE MTART, BWTAR TYPE BWTAR_D, END OF TY_EKPO. TYPES:BEGIN OF TY_KONV, KNUMV TYPE KNUMV, KPOSN TYPE KPOSN, STUNR TYPE STUNR, KSCHL TYPE KSCHA, KBETR TYPE KBETR, KPEIN TYPE KPEIN, KWERT TYPE ZKWERT, KKURS TYPE KKURS, WAERS TYPE WAERS, END OF TY_KONV. TYPES:BEGIN OF TY_ZCN_MASTER, TSRLNO TYPE BUZEI, KSCHL TYPE KSCHL, END OF TY_ZCN_MASTER. TYPES:BEGIN OF TY_EKBE, EBELN TYPE EBELN, EBELP TYPE KPOSN, GJAHR TYPE GJAHR, BELNR TYPE RE_BELNR, XBLNR TYPE XBLNR1, BWART TYPE BWART, BUZEI TYPE BUZEI, BEWTP TYPE BEWTP, BUDAT TYPE BUDAT, LFBNR TYPE LFBNR, LFGJA TYPE LFBJA, LFPOS TYPE LFPOS, SHKZG TYPE SHKZG, MENGE TYPE MENGE_D, END OF TY_EKBE. TYPES:BEGIN OF TY_EKET, EBELN TYPE EBELN, EBELP TYPE KPOSN, EINDT TYPE EINDT, END OF TY_EKET. TYPES:BEGIN OF TY_TERMSUM, CTR TYPE KBETR, A_L(25) type c, TAXTEXT TYPE MAKTX, TEXT TYPE MAKTX, AMT TYPE ZKWERT, END OF TY_TERMSUM. TYPES:BEGIN KSCHL MATNR CHARG OF TY_A974, TYPE KSCHA, TYPE MATNR, TYPE CHARG_D,
KNUMH TYPE KNUMH, DATAB TYPE KODATAB, DATBI TYPE KODATBI, END OF TY_A974. TYPES:BEGIN OF TY_A926, KSCHL TYPE KSCHA, MATNR TYPE MATNR, KNUMH TYPE KNUMH, DATAB TYPE KODATAB, DATBI TYPE KODATBI, END OF TY_A926. TYPES:BEGIN OF TY_KONP, KNUMH TYPE KNUMH, KBETR TYPE KBETR_KOND, KMEIN TYPE KMEIN, END OF TY_KONP. TYPES:BEGIN OF TY_MCH1, MATNR TYPE MATNR, CHARG TYPE CHARG_D, ERSDA TYPE ERSDA, HSDAT TYPE HSDAT, END OF TY_MCH1. TYPES:BEGIN OF TY_T023T, MATKL TYPE MATKL, WGBEZ TYPE WGBEZ, END OF TY_T023T. TYPES:BEGIN OF TY_VBRP, VBELN TYPE VBELN_VF, POSNR TYPE POSNR_VF, VGBEL TYPE VGBEL, END OF TY_VBRP. TYPES:BEGIN OF TY_VBRK, VBELN TYPE VBELN_VF, FKDAT TYPE FKDAT, END OF TY_VBRK. TYPES:BEGIN OF TY_VBFA, VBELN TYPE VBELN_NACH, VBTYP_V TYPE VBTYP_V, VBELV TYPE VBELN_VON, END OF TY_VBFA. TYPES:BEGIN OF TY_RBKP, BELNR TYPE RE_BELNR, GJAHR TYPE GJAHR, BUKRS TYPE BUKRS, BLDAT TYPE BLDAT, BUDAT TYPE BUDAT, XBLNR TYPE XBLNR1, END OF TY_RBKP. TYPES:BEGIN OF TY_BADI, MBLNR TYPE MBLNR, MJAHR TYPE MJAHR,
GTNO TYPE MAKTX, GTDT TYPE BUDAT, PERMIT TYPE MAKTX, TRNO TYPE MAKTX, GRWT TYPE BRGEW, TRWT TYPE NTGEW, NTWT TYPE NTGEW, WTUNIT TYPE GEWEI, REM TYPE ZLTEXT, LRNO TYPE MAKTX, LRDT TYPE BUDAT, TRNAME TYPE MAKTX, END OF TY_BADI. DATA:WA_MSEG TYPE TY_MSEG, WA_MSEGY TYPE TY_MSEG, WA_SUMMARY TYPE TY_MSEG, WA_DETAIL TYPE TY_MSEG, WA_MAKT TYPE TY_MAKT, WA_T001W TYPE TY_T001W, WA_LFA1 TYPE TY_LFA1, WA_EKKO TYPE TY_EKKO, WA_EKPO TYPE TY_EKPO, WA_KONV TYPE TY_KONV, WA_ZCN_MASTER TYPE TY_ZCN_MASTER, WA_EKBE TYPE TY_EKBE, WA_EKET TYPE TY_EKET, WA_TERMSUM TYPE TY_TERMSUM, WA_A974 TYPE TY_A974, WA_A926 TYPE TY_A926, WA_KONP TYPE TY_KONP, WA_MCH1 TYPE TY_MCH1, WA_T023T TYPE TY_T023T, WA_VBRP TYPE TY_VBRP, WA_VBRK TYPE TY_VBRK, WA_VBFA TYPE TY_VBFA, WA_RBKP TYPE TY_RBKP, WA_BADI TYPE TY_BADI, IT_MSEG TYPE STANDARD TABLE OF TY_MSEG INITIAL SIZE 0, IT_MSEG2 TYPE STANDARD TABLE OF TY_MSEG INITIAL SIZE 0, IT_MSEG3 TYPE STANDARD TABLE OF TY_MSEG INITIAL SIZE 0, IT_MSEG4 TYPE STANDARD TABLE OF TY_MSEG INITIAL SIZE 0, IT_SUMMARY TYPE STANDARD TABLE OF TY_MSEG INITIAL SIZE 0, IT_DETAIL TYPE STANDARD TABLE OF TY_MSEG INITIAL SIZE 0, IT_MAKT TYPE STANDARD TABLE OF TY_MAKT INITIAL SIZE 0, IT_T001W TYPE STANDARD TABLE OF TY_T001W INITIAL SIZE 0, IT_LFA1 TYPE STANDARD TABLE OF TY_LFA1 INITIAL SIZE 0, IT_EKKO TYPE STANDARD TABLE OF TY_EKKO INITIAL SIZE 0, IT_EKPO TYPE STANDARD TABLE OF TY_EKPO INITIAL SIZE 0, IT_KONV TYPE STANDARD TABLE OF TY_KONV INITIAL SIZE 0, IT_ZCN_MASTER TYPE STANDARD TABLE OF TY_ZCN_MASTER INITIAL SIZE 0, IT_EKBE TYPE STANDARD TABLE OF TY_EKBE INITIAL SIZE 0, IT_EKET TYPE STANDARD TABLE OF TY_EKET INITIAL SIZE 0, IT_TERMSUM TYPE STANDARD TABLE OF TY_TERMSUM INITIAL SIZE 0, IT_A974 TYPE STANDARD TABLE OF TY_A974 INITIAL SIZE 0, IT_A926 TYPE STANDARD TABLE OF TY_A926 INITIAL SIZE 0, IT_KONP TYPE STANDARD TABLE OF TY_KONP INITIAL SIZE 0, IT_KONP3 TYPE STANDARD TABLE OF TY_KONP INITIAL SIZE 0, IT_MCH1 TYPE STANDARD TABLE OF TY_MCH1 INITIAL SIZE 0, IT_T023T TYPE STANDARD TABLE OF TY_T023T INITIAL SIZE 0,
OF OF OF OF OF
0, 0, 0, 0, 0.
DATA:MTRL LIKE SY-REPID, TITLE LIKE SY-TITLE, TITLE1 LIKE SY-TITLE, P_AMT TYPE ZKWERT, i_ppvon TYPE BUDAT, i_ppbis TYPE BUDAT, K_KKURS TYPE KKURS, V_SYTABIX TYPE SY-TABIX VALUE 0, T_SYTABIX TYPE SY-TABIX VALUE 0, I_SMBLN TYPE MBLNR, I_SJAHR TYPE MJAHR, I_SMBLP TYPE MBLPO, I_LFBNR TYPE LFBNR, I_LFBJA TYPE LFBJA, I_LFPOS TYPE LFPOS, I_STOCK TYPE P LENGTH 16 DECIMALS 3, I_MENGE TYPE P LENGTH 16 DECIMALS 3, I_TMPSTK TYPE P LENGTH 16 DECIMALS 3, R_CTR TYPE P LENGTH 16 DECIMALS 0, I_KNUMH TYPE KNUMH, I_MRP_RATE TYPE P LENGTH 16 DECIMALS 3, I_HSDAT TYPE SY-DATUM, ZTEXT type C length 80. DATA:lsthdr TYPE slis_t_listheader, wa_lsthdr TYPE slis_listheader, i_event TYPE slis_t_event, wa_event TYPE slis_alv_event, wa_sortinfo TYPE slis_sortinfo_alv, t_sort_info TYPE slis_t_sortinfo_alv, t_sort_info1 TYPE slis_t_sortinfo_alv, t_sort_info2 TYPE slis_t_sortinfo_alv, t_sort_info5 TYPE slis_t_sortinfo_alv, ls_layout type slis_layout_alv, GT_FLD TYPE SLIS_T_FIELDCAT_ALV, GT_FLD1 TYPE SLIS_T_FIELDCAT_ALV, GT_FLD2 TYPE SLIS_T_FIELDCAT_ALV, GT_FLD5 TYPE SLIS_T_FIELDCAT_ALV, WA_FLD TYPE SLIS_FIELDCAT_ALV. DEFINE FLD. WA_FLD-col_pos = &1. WA_FLD-tabname = &2. WA_FLD-fieldname = &3. WA_FLD-reptext_ddic = &4. WA_FLD-emphasize = &5. WA_FLD-outputlen = &6. WA_FLD-no_zero = &7. WA_FLD-datatype = &8. WA_FLD-do_sum = &9. APPEND WA_FLD TO GT_FLD. CLEAR WA_FLD. END-OF-DEFINITION.
DEFINE FLD1. WA_FLD-col_pos = &1. WA_FLD-tabname = &2. WA_FLD-fieldname = &3. WA_FLD-reptext_ddic = &4. WA_FLD-emphasize = &5. WA_FLD-outputlen = &6. WA_FLD-no_zero = &7. WA_FLD-datatype = &8. WA_FLD-do_sum = &9. APPEND WA_FLD TO GT_FLD1. CLEAR WA_FLD. END-OF-DEFINITION. DEFINE FLD2. WA_FLD-col_pos = &1. WA_FLD-tabname = &2. WA_FLD-fieldname = &3. WA_FLD-reptext_ddic = &4. WA_FLD-emphasize = &5. WA_FLD-outputlen = &6. WA_FLD-no_zero = &7. WA_FLD-datatype = &8. WA_FLD-do_sum = &9. APPEND WA_FLD TO GT_FLD2. CLEAR WA_FLD. END-OF-DEFINITION. DEFINE FLD5. WA_FLD-col_pos = &1. WA_FLD-tabname = &2. WA_FLD-fieldname = &3. WA_FLD-reptext_ddic = &4. WA_FLD-emphasize = &5. WA_FLD-outputlen = &6. WA_FLD-no_zero = &7. WA_FLD-datatype = &8. WA_FLD-do_sum = &9. APPEND WA_FLD TO GT_FLD5. CLEAR WA_FLD. END-OF-DEFINITION. CONSTANTS:C_TOP TYPE SLIS_FORMNAME VALUE 'TOP_OF_PAGE', C_PF TYPE SLIS_FORMNAME VALUE 'PF_STATUS_SET', C_UCOM TYPE SLIS_FORMNAME VALUE 'USER_COMMAND'. *Input Screen SELECTION-SCREEN BEGIN OF BLOCK BLK1 WITH FRAME TITLE TEXT-001. SELECT-OPTIONS:I_MTART FOR MTART OBLIGATORY. SELECT-OPTIONS:I_MATKL FOR MATKL. SELECT-OPTIONS:I_MATNR FOR MATNR. SELECTION-SCREEN END OF BLOCK BLK1. SELECTION-SCREEN BEGIN OF BLOCK BLK2 WITH FRAME TITLE TEXT-005. PARAMETERS I_ALLGR LIKE BWBST RADIOBUTTON GROUP DART DEFAULT 'X'. PARAMETERS I_STO LIKE BWBST RADIOBUTTON GROUP DART. PARAMETERS I_PURC LIKE BWBST RADIOBUTTON GROUP DART. PARAMETERS I_PRET_B LIKE BWBST RADIOBUTTON GROUP DART. PARAMETERS I_PRET_V LIKE BWBST RADIOBUTTON GROUP DART.
SELECT-OPTIONS:I_PLANT FOR PLANT. SELECT-OPTIONS:I_UMWRK FOR UMWRK. SELECT-OPTIONS:I_LIFNR FOR LIFNR. SELECTION-SCREEN END OF BLOCK BLK2. SELECTION-SCREEN BEGIN OF BLOCK BLK3 WITH FRAME TITLE TEXT-006. SELECT-OPTIONS:I_BUDAT FOR BUDAT OBLIGATORY. SELECT-OPTIONS:I_BSART FOR BSART. SELECT-OPTIONS:I_EKORG FOR EKORG. SELECT-OPTIONS:I_EKGRP FOR EKGRP. PARAMETERS: I_SUBC TYPE C AS CHECKBOX. SELECTION-SCREEN END OF BLOCK BLK3. SELECTION-SCREEN BEGIN OF BLOCK BLK4 WITH FRAME TITLE TEXT-010. PARAMETERS I_MIS LIKE BWBST RADIOBUTTON GROUP TART DEFAULT 'X'. PARAMETERS I_GR LIKE BWBST RADIOBUTTON GROUP TART. SELECTION-SCREEN END OF BLOCK BLK4. SELECTION-SCREEN BEGIN OF BLOCK BLK5 WITH FRAME TITLE TEXT-020. SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN COMMENT (10) text-021 FOR FIELD print. PARAMETERS print AS CHECKBOX. SELECTION-SCREEN COMMENT (10) text-022 FOR FIELD print. PARAMETERS: c_email TYPE makt-maktx . SELECTION-SCREEN END OF LINE. SELECTION-SCREEN END OF BLOCK BLK5. AT SELECTION-SCREEN. IF I_STO = 'X'. IF I_LIFNR NE ' '. MESSAGE TEXT-007 TYPE 'E'. ENDIF. ENDIF. IF I_PURC = 'X'. IF I_UMWRK NE ' '. MESSAGE TEXT-008 TYPE 'E'. ENDIF. ENDIF. IF I_PRET_B = 'X' OR I_PRET_V = 'X'. IF I_SUBC = 'X'. MESSAGE TEXT-011 TYPE 'E'. ENDIF. ENDIF. START-OF-SELECTION. MTRL = SY-REPID. TITLE = 'GRN Register - Summary'. PERFORM FINAL_DATA. IF IT_MSEG[] IS INITIAL. MESSAGE TEXT-002 TYPE 'I'. EXIT. ELSE.
PERFORM MAKE_SUMMARY. * Billing Terms PERFORM make_catelog5. PERFORM make_data_sort5. * Common PERFORM make_event. PERFORM make_alv_header. IF I_MIS = 'X'. PERFORM PERFORM PERFORM PERFORM PERFORM make_catelog. make_catelog1. make_data_sort. make_data_sort1. make_grid.
ELSEIF I_GR = 'X'. PERFORM make_catelog2. PERFORM make_data_sort2. PERFORM make_grid2. ENDIF. ENDIF. *&---------------------------------------------------------------------* *& Form FINAL_DATA *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM FINAL_DATA. SELECT MBLNR MJAHR BUDAT ZEILE BUKRS MTART MATKL MATNR WERKS LGORT CHARG INSMK LIFNR SHKZG WAERS DMBTR MENGE MEINS SMBLN SJAHR SMBLP
LFBNR LFBJA LFPOS EBELN EBELP UMWRK WEMPF BWART XAUTO FRBNR BKTXT PSTYP FROM ZGRN WHERE AND AND AND AND AND * AND
INTO CORRESPONDING FIELDS OF TABLE IT_MSEG MATNR IN I_MATNR MTART IN I_MTART MATKL IN I_MATKL BUDAT IN I_BUDAT WERKS IN I_PLANT BWART IN ('101','102','105','106','122','123','161','162').
LIFNR IN I_LIFNR
DELETE IT_MSEG[] WHERE EBELN = ' '. IF I_PRET_B = 'X'. DELETE IT_MSEG WHERE BWART NE '161' AND BWART NE '162'. ELSEIF I_PRET_V = 'X'. DELETE IT_MSEG WHERE BWART NE '122' AND BWART NE '123'. ELSE. DELETE IT_MSEG WHERE BWART = '122' OR BWART = '123' OR BWART = '161' OR BWAR T = '162'. ENDIF. * IF I_STO = 'X'. DELETE IT_MSEG WHERE LIFNR NE ' '. DELETE IT_MSEG WHERE PSTYP NE '7'. ENDIF.
* STO WILL NOT BE CONSIDERED IN PENDING IR * IF I_PURC = 'X' OR I_SUBC = 'X'. DELETE IT_MSEG WHERE LIFNR = ' '. DELETE IT_MSEG WHERE PSTYP = '7'. ENDIF. IF IT_MSEG[] IS INITIAL. EXIT. ENDIF. * DELETE 101 -- 102 / DELETE 105 -- 106 / DELETE 122 -- 123 / DELETE 161 -- 162 SORT IT_MSEG BY MBLNR MJAHR ZEILE BWART. LOOP AT IT_MSEG INTO WA_MSEG. V_SYTABIX = SY-TABIX. IF WA_MSEG-BWART = '102'. R_CTR = 1.
I_SMBLN = WA_MSEG-SMBLN. I_SJAHR = WA_MSEG-SJAHR. I_SMBLP = WA_MSEG-SMBLP. I_STOCK = WA_MSEG-MENGE. I_MENGE = 0. LOOP AT IT_MSEG INTO WA_MSEGY WHERE MBLNR = I_SMBLN AND MJAHR = I_SJAHR AN D ZEILE = I_SMBLP AND BWART = '101'. R_CTR = 2. IF WA_MSEGY-SHKZG = 'S'. I_MENGE = I_MENGE + ABS( WA_MSEGY-MENGE ). ELSEIF WA_MSEGY-SHKZG = 'H'. I_MENGE = I_MENGE - ABS( WA_MSEGY-MENGE ). ENDIF. CLEAR WA_MSEGY. ENDLOOP. I_STOCK = I_STOCK - I_MENGE. IF I_STOCK > 0. WA_MSEG-MENGE = I_STOCK. MODIFY IT_MSEG FROM WA_MSEG INDEX V_SYTABIX TRANSPORTING MENGE. ELSE. DELETE IT_MSEG INDEX V_SYTABIX. ENDIF. LOOP AT IT_MSEG INTO WA_MSEGY WHERE MBLNR = I_SMBLN AND MJAHR = I_SJAHR AN D ZEILE = I_SMBLP AND BWART = '101'. T_SYTABIX = SY-TABIX. DELETE IT_MSEG INDEX T_SYTABIX. CLEAR WA_MSEGY. ENDLOOP. * TRY WITH LFBNR IF R_CTR = 1. I_LFBNR = WA_MSEG-LFBNR. I_LFBJA = WA_MSEG-LFBJA. I_LFPOS = WA_MSEG-LFPOS. I_STOCK = WA_MSEG-MENGE. I_MENGE = 0. LOOP AT IT_MSEG INTO WA_MSEGY WHERE MBLNR = I_LFBNR AND MJAHR = I_LFBJA AND ZEILE = I_LFPOS AND BWART = '101'. IF WA_MSEGY-SHKZG = 'S'. I_MENGE = I_MENGE + ABS( WA_MSEGY-MENGE ). ELSEIF WA_MSEGY-SHKZG = 'H'.
I_MENGE = I_MENGE - ABS( WA_MSEGY-MENGE ). ENDIF. CLEAR WA_MSEGY. ENDLOOP. I_STOCK = I_STOCK - I_MENGE. IF I_STOCK > 0. WA_MSEG-MENGE = I_STOCK. MODIFY IT_MSEG FROM WA_MSEG INDEX V_SYTABIX TRANSPORTING MENGE. ELSE. DELETE IT_MSEG INDEX V_SYTABIX. ENDIF. LOOP AT IT_MSEG INTO WA_MSEGY WHERE MBLNR = I_LFBNR AND MJAHR = I_LFBJA AND ZEILE = I_LFPOS AND BWART = '101'. T_SYTABIX = SY-TABIX. DELETE IT_MSEG INDEX T_SYTABIX. CLEAR WA_MSEGY. ENDLOOP. ENDIF. ELSEIF WA_MSEG-BWART = '123'. R_CTR = 1. I_SMBLN = WA_MSEG-SMBLN. I_SJAHR = WA_MSEG-SJAHR. I_SMBLP = WA_MSEG-SMBLP. I_STOCK = WA_MSEG-MENGE. I_MENGE = 0. LOOP AT IT_MSEG INTO WA_MSEGY WHERE MBLNR = I_SMBLN AND MJAHR = I_SJAHR AN D ZEILE = I_SMBLP AND BWART = '122'. R_CTR = 2. IF WA_MSEGY-SHKZG = 'S'. I_MENGE = I_MENGE + ABS( WA_MSEGY-MENGE ). ELSEIF WA_MSEGY-SHKZG = 'H'. I_MENGE = I_MENGE - ABS( WA_MSEGY-MENGE ). ENDIF. CLEAR WA_MSEGY. ENDLOOP. I_STOCK = I_STOCK - I_MENGE. IF I_STOCK > 0. WA_MSEG-MENGE = I_STOCK. MODIFY IT_MSEG FROM WA_MSEG INDEX V_SYTABIX TRANSPORTING MENGE.
ELSE. DELETE IT_MSEG INDEX V_SYTABIX. ENDIF. LOOP AT IT_MSEG INTO WA_MSEGY WHERE MBLNR = I_SMBLN AND MJAHR = I_SJAHR AN D ZEILE = I_SMBLP AND BWART = '122'. T_SYTABIX = SY-TABIX. DELETE IT_MSEG INDEX T_SYTABIX. CLEAR WA_MSEGY. ENDLOOP. * TRY WITH LFBNR IF R_CTR = 1. I_LFBNR = WA_MSEG-LFBNR. I_LFBJA = WA_MSEG-LFBJA. I_LFPOS = WA_MSEG-LFPOS. I_STOCK = WA_MSEG-MENGE. I_MENGE = 0. LOOP AT IT_MSEG INTO WA_MSEGY WHERE MBLNR = I_LFBNR AND MJAHR = I_LFBJA AND ZEILE = I_LFPOS AND BWART = '122'. IF WA_MSEGY-SHKZG = 'S'. I_MENGE = I_MENGE + ABS( WA_MSEGY-MENGE ). ELSEIF WA_MSEGY-SHKZG = 'H'. I_MENGE = I_MENGE - ABS( WA_MSEGY-MENGE ). ENDIF. CLEAR WA_MSEGY. ENDLOOP. I_STOCK = I_STOCK - I_MENGE. IF I_STOCK > 0. WA_MSEG-MENGE = I_STOCK. MODIFY IT_MSEG FROM WA_MSEG INDEX V_SYTABIX TRANSPORTING MENGE. ELSE. DELETE IT_MSEG INDEX V_SYTABIX. ENDIF. LOOP AT IT_MSEG INTO WA_MSEGY WHERE MBLNR = I_LFBNR AND MJAHR = I_LFBJA AND ZEILE = I_LFPOS AND BWART = '122'. T_SYTABIX = SY-TABIX. DELETE IT_MSEG INDEX T_SYTABIX. CLEAR WA_MSEGY. ENDLOOP. ENDIF.
ELSEIF WA_MSEG-BWART = '162'. R_CTR = 1. I_SMBLN = WA_MSEG-SMBLN. I_SJAHR = WA_MSEG-SJAHR. I_SMBLP = WA_MSEG-SMBLP. I_STOCK = WA_MSEG-MENGE. I_MENGE = 0. LOOP AT IT_MSEG INTO WA_MSEGY WHERE MBLNR = I_SMBLN AND MJAHR = I_SJAHR AN D ZEILE = I_SMBLP AND BWART = '161'. R_CTR = 2. IF WA_MSEGY-SHKZG = 'S'. I_MENGE = I_MENGE + ABS( WA_MSEGY-MENGE ). ELSEIF WA_MSEGY-SHKZG = 'H'. I_MENGE = I_MENGE - ABS( WA_MSEGY-MENGE ). ENDIF. CLEAR WA_MSEGY. ENDLOOP. I_STOCK = I_STOCK - I_MENGE. IF I_STOCK > 0. WA_MSEG-MENGE = I_STOCK. MODIFY IT_MSEG FROM WA_MSEG INDEX V_SYTABIX TRANSPORTING MENGE. ELSE. DELETE IT_MSEG INDEX V_SYTABIX. ENDIF. LOOP AT IT_MSEG INTO WA_MSEGY WHERE MBLNR = I_SMBLN AND MJAHR = I_SJAHR AN D ZEILE = I_SMBLP AND BWART = '161'. T_SYTABIX = SY-TABIX. DELETE IT_MSEG INDEX T_SYTABIX. CLEAR WA_MSEGY. ENDLOOP. * TRY WITH LFBNR IF R_CTR = 1. I_LFBNR = WA_MSEG-LFBNR. I_LFBJA = WA_MSEG-LFBJA. I_LFPOS = WA_MSEG-LFPOS. I_STOCK = WA_MSEG-MENGE. I_MENGE = 0. LOOP AT IT_MSEG INTO WA_MSEGY WHERE MBLNR = I_LFBNR AND MJAHR = I_LFBJA AND ZEILE = I_LFPOS AND BWART = '161'.
IF WA_MSEGY-SHKZG = 'S'. I_MENGE = I_MENGE + ABS( WA_MSEGY-MENGE ). ELSEIF WA_MSEGY-SHKZG = 'H'. I_MENGE = I_MENGE - ABS( WA_MSEGY-MENGE ). ENDIF. CLEAR WA_MSEGY. ENDLOOP. I_STOCK = I_STOCK - I_MENGE. IF I_STOCK > 0. WA_MSEG-MENGE = I_STOCK. MODIFY IT_MSEG FROM WA_MSEG INDEX V_SYTABIX TRANSPORTING MENGE. ELSE. DELETE IT_MSEG INDEX V_SYTABIX. ENDIF. LOOP AT IT_MSEG INTO WA_MSEGY WHERE MBLNR = I_LFBNR AND MJAHR = I_LFBJA AND ZEILE = I_LFPOS AND BWART = '161'. T_SYTABIX = SY-TABIX. DELETE IT_MSEG INDEX T_SYTABIX. CLEAR WA_MSEGY. ENDLOOP. ENDIF. ELSEIF WA_MSEG-BWART = '106'. R_CTR = 1. I_SMBLN = WA_MSEG-SMBLN. I_SJAHR = WA_MSEG-SJAHR. I_SMBLP = WA_MSEG-SMBLP. I_STOCK = WA_MSEG-MENGE. I_MENGE = 0. LOOP AT IT_MSEG INTO WA_MSEGY WHERE MBLNR = I_SMBLN AND MJAHR = I_SJAHR AN D ZEILE = I_SMBLP AND BWART = '105'. R_CTR = 2. IF WA_MSEGY-SHKZG = 'S'. I_MENGE = I_MENGE + ABS( WA_MSEGY-MENGE ). ELSEIF WA_MSEGY-SHKZG = 'H'. I_MENGE = I_MENGE - ABS( WA_MSEGY-MENGE ). ENDIF. CLEAR WA_MSEGY. ENDLOOP. I_STOCK = I_STOCK - I_MENGE.
IF I_STOCK > 0. WA_MSEG-MENGE = I_STOCK. MODIFY IT_MSEG FROM WA_MSEG INDEX V_SYTABIX TRANSPORTING MENGE. ELSE. DELETE IT_MSEG INDEX V_SYTABIX. ENDIF. LOOP AT IT_MSEG INTO WA_MSEGY WHERE MBLNR = I_SMBLN AND MJAHR = I_SJAHR AN D ZEILE = I_SMBLP AND BWART = '105'. T_SYTABIX = SY-TABIX. DELETE IT_MSEG INDEX T_SYTABIX. CLEAR WA_MSEGY. ENDLOOP. * TRY WITH LFBNR IF R_CTR = 1. I_LFBNR = WA_MSEG-LFBNR. I_LFBJA = WA_MSEG-LFBJA. I_LFPOS = WA_MSEG-LFPOS. I_STOCK = WA_MSEG-MENGE. I_MENGE = 0. LOOP AT IT_MSEG INTO WA_MSEGY WHERE MBLNR = I_LFBNR AND MJAHR = I_LFBJA AND ZEILE = I_LFPOS AND BWART = '105'. IF WA_MSEGY-SHKZG = 'S'. I_MENGE = I_MENGE + ABS( WA_MSEGY-MENGE ). ELSEIF WA_MSEGY-SHKZG = 'H'. I_MENGE = I_MENGE - ABS( WA_MSEGY-MENGE ). ENDIF. CLEAR WA_MSEGY. ENDLOOP. I_STOCK = I_STOCK - I_MENGE. IF I_STOCK > 0. WA_MSEG-MENGE = I_STOCK. MODIFY IT_MSEG FROM WA_MSEG INDEX V_SYTABIX TRANSPORTING MENGE. ELSE. DELETE IT_MSEG INDEX V_SYTABIX. ENDIF. LOOP AT IT_MSEG INTO WA_MSEGY WHERE MBLNR = I_LFBNR AND MJAHR = I_LFBJA AND ZEILE = I_LFPOS AND BWART = '105'. T_SYTABIX = SY-TABIX. DELETE IT_MSEG INDEX T_SYTABIX. CLEAR WA_MSEGY.
ENDLOOP. ENDIF. ENDIF. CLEAR WA_MSEG. ENDLOOP. * PO History CLEAR IT_MSEG2[]. REFRESH IT_MSEG2[]. IT_MSEG2[] = IT_MSEG[]. SORT IT_MSEG2 BY EBELN. DELETE ADJACENT DUPLICATES FROM IT_MSEG2 COMPARING EBELN. SELECT EBELN EBELP GJAHR BELNR XBLNR BWART BUZEI BEWTP BUDAT LFBNR LFGJA LFPOS SHKZG MENGE FROM EKBE INTO CORRESPONDING FIELDS OF TABLE IT_EKBE FOR ALL ENTRIES IN IT_MSEG2 WHERE EBELN = IT_MSEG2-EBELN AND BEWTP IN ('Q','R') AND BUDAT <= I_BUDAT-HIGH. * AND SHKZG = 'S' SORT IT_EKBE BY EBELN EBELP LFBNR LFGJA LFPOS. * BADI Details CLEAR IT_MSEG4[]. REFRESH IT_MSEG4[]. IT_MSEG4[] = IT_MSEG[]. SORT IT_MSEG4 BY MBLNR MJAHR. DELETE ADJACENT DUPLICATES FROM IT_MSEG4 COMPARING MBLNR MJAHR. SELECT MBLNR MJAHR GTNO GTDT PERMIT TRNO
GRWT TRWT NTWT WTUNIT REM LRNO LRDT TRNAME FROM MIGO_BADI_EXAMP2 INTO CORRESPONDING FIELDS OF TABLE IT_BADI FOR AL L ENTRIES IN IT_MSEG4 WHERE MBLNR = IT_MSEG4-MBLNR AND MJAHR = IT_MSEG4-MJAHR. SORT IT_BADI BY MBLNR MJAHR. * Supplying Plant IF I_ALLGR = 'X' OR I_STO = 'X'. SELECT MBLNR MJAHR BUDAT ZEILE BUKRS MTART MATKL MATNR WERKS LGORT CHARG INSMK LIFNR SHKZG WAERS DMBTR MENGE MEINS SMBLN SJAHR SMBLP LFBNR LFBJA LFPOS EBELN EBELP UMWRK WEMPF BWART XAUTO FROM ZGRN WHERE AND AND AND AND
INTO CORRESPONDING FIELDS OF TABLE IT_MSEG3 MATNR IN I_MATNR MTART IN I_MTART MATKL IN I_MATKL WERKS IN I_UMWRK BWART IN ('641','642').
DELETE IT_MSEG3[] WHERE EBELN = ' '. DELETE IT_MSEG3[] WHERE XAUTO = 'X'. SORT IT_MSEG3 BY MBLNR MJAHR ZEILE BWART.
* DELETE 641 -- 642 LOOP AT IT_MSEG3 INTO WA_MSEG. V_SYTABIX = SY-TABIX. IF WA_MSEG-BWART = '642'. R_CTR = 1. I_SMBLN = WA_MSEG-SMBLN. I_SJAHR = WA_MSEG-SJAHR. I_SMBLP = WA_MSEG-SMBLP. I_STOCK = WA_MSEG-MENGE. I_MENGE = 0. LOOP AT IT_MSEG3 INTO WA_MSEGY WHERE MBLNR = I_SMBLN AND MJAHR = I_SJAHR AND ZEILE = I_SMBLP AND BWART = '641'. R_CTR = 2. IF WA_MSEGY-SHKZG = 'S'. I_MENGE = I_MENGE + ABS( WA_MSEGY-MENGE ). ELSEIF WA_MSEGY-SHKZG = 'H'. I_MENGE = I_MENGE - ABS( WA_MSEGY-MENGE ). ENDIF. CLEAR WA_MSEGY. ENDLOOP. I_STOCK = I_STOCK - I_MENGE. IF I_STOCK > 0. WA_MSEG-MENGE = I_STOCK. MODIFY IT_MSEG3 FROM WA_MSEG INDEX V_SYTABIX TRANSPORTING MENGE. ELSE. DELETE IT_MSEG3 INDEX V_SYTABIX. ENDIF. LOOP AT IT_MSEG3 INTO WA_MSEGY WHERE MBLNR = I_SMBLN AND MJAHR = I_SJAHR AND ZEILE = I_SMBLP AND BWART = '641'. T_SYTABIX = SY-TABIX. DELETE IT_MSEG3 INDEX T_SYTABIX. CLEAR WA_MSEGY. ENDLOOP. * TRY WITH LFBNR IF R_CTR = 1. I_LFBNR = WA_MSEG-LFBNR. I_LFBJA = WA_MSEG-LFBJA. I_LFPOS = WA_MSEG-LFPOS.
I_STOCK = WA_MSEG-MENGE. I_MENGE = 0. LOOP AT IT_MSEG3 INTO WA_MSEGY WHERE MBLNR = I_LFBNR AND MJAHR = I_LFB JA AND ZEILE = I_LFPOS AND BWART = '641'. IF WA_MSEGY-SHKZG = 'S'. I_MENGE = I_MENGE + ABS( WA_MSEGY-MENGE ). ELSEIF WA_MSEGY-SHKZG = 'H'. I_MENGE = I_MENGE - ABS( WA_MSEGY-MENGE ). ENDIF. CLEAR WA_MSEGY. ENDLOOP. I_STOCK = I_STOCK - I_MENGE. IF I_STOCK > 0. WA_MSEG-MENGE = I_STOCK. MODIFY IT_MSEG3 FROM WA_MSEG INDEX V_SYTABIX TRANSPORTING MENGE. ELSE. DELETE IT_MSEG3 INDEX V_SYTABIX. ENDIF. LOOP AT IT_MSEG3 INTO WA_MSEGY WHERE MBLNR = I_LFBNR AND MJAHR = I_LFB JA AND ZEILE = I_LFPOS AND BWART = '641'. T_SYTABIX = SY-TABIX. DELETE IT_MSEG3 INDEX T_SYTABIX. CLEAR WA_MSEGY. ENDLOOP. ENDIF. ENDIF. CLEAR WA_MSEG. ENDLOOP. DELETE IT_MSEG3 WHERE SHKZG = 'S'. * Supplying Plant SORT IT_MSEG3 BY EBELN EBELP BWART. LOOP AT IT_MSEG INTO WA_MSEG. IF WA_MSEG-BWART = '101'. " WA_MSEG-LIFNR = ' ' AND READ TABLE IT_MSEG3 INTO WA_MSEGY WITH KEY EBELN = WA_MSEG-EBELN EBELP = WA_MSEG-EBELP BWART = '641'. " binary search. IF SY-SUBRC EQ 0. WA_MSEG-UMWRK = WA_MSEGY-WERKS.
IF WA_MSEG-DMBTR = 0. I_MRP_RATE = ( WA_MSEGY-DMBTR / WA_MSEGY-MENGE ) * WA_MSEG-MENGE. WA_MSEG-DMBTR = I_MRP_RATE. ENDIF. MODIFY IT_MSEG FROM WA_MSEG TRANSPORTING UMWRK DMBTR. ENDIF. ENDIF. CLEAR WA_MSEG. ENDLOOP. ENDIF. IF I_PRET_B = ' ' AND I_PRET_V = ' '. DELETE IT_MSEG WHERE SHKZG = 'H'. ENDIF. IF I_UMWRK NE ''. DELETE IT_MSEG WHERE UMWRK IS INITIAL. ENDIF. IF IT_MSEG[] IS INITIAL. EXIT. ENDIF. * Deli. Note No. SELECT VBELN VBTYP_V VBELV FROM VBFA INTO CORRESPONDING FIELDS OF TABLE IT_VBFA FOR ALL ENTRIES I N IT_MSEG WHERE VBELN = IT_MSEG-MBLNR AND VBTYP_V = 'J'. SORT IT_VBFA BY VBELV. IF IT_VBFA[] IS NOT INITIAL. * Proforma Inv. No. SELECT VBELN POSNR VGBEL FROM VBRP INTO CORRESPONDING FIELDS OF TABLE IT_VBRP FOR ALL ENTRIES IN IT_VBFA WHERE VGBEL = IT_VBFA-VBELV. SORT IT_VBRP BY VBELN. IF IT_VBRP[] IS NOT INITIAL. SELECT VBELN FKDAT FROM VBRK INTO CORRESPONDING FIELDS OF TABLE IT_VBRK FOR ALL ENTRI ES IN IT_VBRP WHERE VBELN = IT_VBRP-VBELN.
ENDIF. ENDIF. SORT IT_VBFA BY VBELN DESCENDING VBELV. SORT IT_VBRK BY VBELN. SORT IT_VBRP BY VGBEL. * Pending for IR. IF I_SUBC = 'X'. LOOP AT IT_MSEG INTO WA_MSEG. V_SYTABIX = SY-TABIX. I_STOCK = WA_MSEG-MENGE. I_MENGE = 0. LOOP AT IT_EKBE INTO WA_EKBE WHERE EBELN = WA_MSEG-EBELN AND EBELP = WA_MS EG-EBELP AND LFBNR = WA_MSEG-MBLNR AND LFGJA = WA_MSEG-LFBJA AND LFPOS = WA_MSE G-ZEILE. IF WA_EKBE-SHKZG = 'S'. I_MENGE = I_MENGE + ABS( WA_EKBE-MENGE ). ELSEIF WA_EKBE-SHKZG = 'H'. I_MENGE = I_MENGE - ABS( WA_EKBE-MENGE ). ENDIF. CLEAR WA_EKBE. ENDLOOP. * CHECK IF NO REFF NO. IF I_MENGE = 0. I_TMPSTK = 0. LOOP AT IT_EKBE INTO WA_EKBE WHERE EBELN = WA_MSEG-EBELN AND EBELP = WA_ MSEG-EBELP. T_SYTABIX = SY-TABIX. IF WA_EKBE-LFBNR = ' '. " WA_EKBE-BUDAT >= WA_MSEG-BUDAT AND IF WA_EKBE-SHKZG = 'S'. I_MENGE = I_MENGE + ABS( WA_EKBE-MENGE ). ELSEIF WA_EKBE-SHKZG = 'H'. I_MENGE = I_MENGE - ABS( WA_EKBE-MENGE ). ENDIF. IF I_STOCK > I_MENGE. DELETE IT_EKBE INDEX T_SYTABIX. ELSEIF I_STOCK = I_MENGE. DELETE IT_EKBE INDEX T_SYTABIX. EXIT.
ELSE. IF I_TMPSTK = 0. I_TMPSTK = ABS( WA_EKBE-MENGE ) - I_STOCK. ELSE. I_TMPSTK = ABS( WA_EKBE-MENGE ) - I_TMPSTK. ENDIF. WA_EKBE-MENGE = I_TMPSTK. MODIFY IT_EKBE FROM WA_EKBE INDEX T_SYTABIX TRANSPORTING MENGE. I_MENGE = I_STOCK. EXIT. ENDIF. I_TMPSTK = I_STOCK - I_MENGE. ENDIF. CLEAR WA_EKBE. ENDLOOP. ENDIF. I_STOCK = I_STOCK - I_MENGE. IF I_STOCK > 0. WA_MSEG-MENGE = I_STOCK. MODIFY IT_MSEG FROM WA_MSEG INDEX V_SYTABIX TRANSPORTING MENGE. ELSE. DELETE IT_MSEG INDEX V_SYTABIX. ENDIF. CLEAR WA_MSEG. ENDLOOP. ENDIF. IF IT_MSEG[] IS INITIAL. EXIT. ENDIF. SORT IT_EKBE BY LFBNR LFGJA LFPOS. * Invoice Details SELECT BELNR GJAHR BUKRS BLDAT BUDAT XBLNR FROM RBKP INTO CORRESPONDING FIELDS OF TABLE IT_RBKP FOR ALL ENTRIES I N IT_EKBE WHERE BELNR = IT_EKBE-LFBNR. SORT IT_RBKP BY BELNR GJAHR. * Material Description SELECT MATNR
MAKTX SPRAS FROM MAKT INTO CORRESPONDING FIELDS OF TABLE IT_MAKT WHERE MATNR IN I_MATNR AND SPRAS EQ 'EN'. * Plant Name SELECT WERKS NAME1 FROM T001W INTO CORRESPONDING FIELDS OF TABLE IT_T001W. * Vendor Name SELECT LIFNR NAME1 KTOKK FROM LFA1 INTO CORRESPONDING FIELDS OF TABLE IT_LFA1 WHERE LIFNR IN I_LIFNR. * PO Header SELECT EBELN BUKRS BSART LIFNR EKORG EKGRP KNUMV AEDAT BEDAT WAERS LANDS LLIEF WKURS FROM EKKO INTO WHERE BSART IN AND EKORG IN AND EKGRP IN AND LIFNR IN
SORT IT_EKKO BY EBELN BUKRS. * PO Details IF IT_EKKO[] IS NOT INITIAL. SELECT EBELN EBELP BUKRS MWSKZ MENGE EFFWR NETWR TXJCD MATNR WERKS MATKL MEINS MTART
BWTAR FROM EKPO INTO CORRESPONDING FIELDS OF TABLE IT_EKPO FOR ALL ENTRIES IN IT_EKKO WHERE EBELN = IT_EKKO-EBELN AND MATNR IN I_MATNR AND WERKS IN I_PLANT. SORT IT_EKPO BY EBELN EBELP BUKRS. SELECT EBELN EBELP EINDT FROM EKET INTO CORRESPONDING FIELDS OF TABLE IT_EKET FOR ALL ENTRIES IN IT_EKKO WHERE EBELN = IT_EKKO-EBELN. SORT IT_EKET BY EBELN EBELP. ENDIF. SORT IT_MSEG BY MATNR WERKS. SELECT KSCHL MATNR CHARG KNUMH DATAB DATBI FROM A974 INTO CORRESPONDING FIELDS OF TABLE IT_A974 WHERE MATNR IN I_MATNR AND ( KSCHL = 'ZP01' OR KSCHL = 'ZMRP' ). SORT IT_A974 ASCENDING BY KSCHL MATNR CHARG DATAB. SELECT KNUMH KBETR KMEIN FROM KONP INTO CORRESPONDING FIELDS OF TABLE IT_KONP FOR ALL ENTRIES I N IT_A974 WHERE KNUMH = IT_A974-KNUMH. SORT IT_KONP BY KNUMH. SELECT KSCHL MATNR KNUMH DATAB DATBI FROM A926 INTO CORRESPONDING FIELDS OF TABLE IT_A926 WHERE MATNR IN I_MATNR AND KSCHL = 'ZMRP'. SORT IT_A926 ASCENDING BY KSCHL MATNR DATAB. SELECT KNUMH KBETR KMEIN FROM KONP INTO CORRESPONDING FIELDS OF TABLE IT_KONP3 FOR ALL ENTRIES IN IT_A926 WHERE KNUMH = IT_A926-KNUMH.
SORT IT_KONP3 BY KNUMH. SELECT MATNR CHARG ERSDA HSDAT FROM MCH1 INTO CORRESPONDING FIELDS OF TABLE IT_MCH1 FOR ALL ENTRIES IN IT_MSEG WHERE MATNR = IT_MSEG-MATNR AND CHARG = IT_MSEG-CHARG. SORT IT_MCH1 BY MATNR CHARG. SELECT KNUMH KBETR KMEIN FROM KONP INTO CORRESPONDING FIELDS OF TABLE IT_KONP3 FOR ALL ENTRIES IN IT_A926 WHERE KNUMH = IT_A926-KNUMH. SORT IT_KONP3 BY KNUMH. SELECT MATKL WGBEZ FROM T023T INTO CORRESPONDING FIELDS OF TABLE IT_T023T WHERE SPRAS = 'EN'. SORT IT_T023T BY MATKL. * Filling SORT IT_MSEG BY EBELN EBELP. SORT SORT SORT SORT SORT IT_EKKO BY EBELN BUKRS. IT_EKPO BY EBELN EBELP BUKRS. IT_MAKT BY MATNR. IT_T001W BY WERKS. IT_LFA1 BY LIFNR.
LOOP AT IT_MSEG INTO WA_MSEG. V_SYTABIX = SY-TABIX. READ TABLE IT_EKKO INTO WA_EKKO WITH KEY EBELN = WA_MSEG-EBELN BUKRS = WA_MSEG-BUKRS bin ary search." Reading PO Header IF SY-SUBRC = 0. WA_MSEG-BSART WA_MSEG-EKORG WA_MSEG-EKGRP WA_MSEG-KNUMV WA_MSEG-BEDAT WA_MSEG-LIFNR = = = = = = WA_EKKO-BSART. WA_EKKO-EKORG. WA_EKKO-EKGRP. WA_EKKO-KNUMV. WA_EKKO-BEDAT. WA_EKKO-LIFNR.
READ TABLE IT_EKET INTO WA_EKET WITH KEY EBELN = WA_MSEG-EBELN EBELP = WA_MSEG-EBELP. " Reading PO Header " binary search IF SY-SUBRC = 0.
WA_MSEG-EINDT = WA_EKET-EINDT. ENDIF. READ TABLE IT_EKPO INTO WA_EKPO WITH KEY EBELN = WA_MSEG-EBELN EBELP = WA_MSEG-EBELP B UKRS = WA_MSEG-BUKRS binary search." Reading PO Detail IF SY-SUBRC = 0. WA_MSEG-MWSKZ = WA_EKPO-MWSKZ. ENDIF. READ TABLE IT_MAKT INTO WA_MAKT WITH KEY MATNR = WA_MSEG-MATNR binary search. " Reading material Name IF SY-SUBRC EQ 0. WA_MSEG-MAKTX = WA_MAKT-MAKTX. ENDIF. READ TABLE IT_T001W INTO WA_T001W WITH KEY WERKS = WA_MSEG-WERKS binary search." Reading Plant Name IF SY-SUBRC = 0. WA_MSEG-NAME1 = WA_T001W-NAME1. ENDIF. READ TABLE IT_T001W INTO WA_T001W WITH KEY WERKS = WA_MSEG-UMWRK binary search." Reading Supplier Plant Name IF SY-SUBRC = 0. WA_MSEG-SNAME = WA_T001W-NAME1. ENDIF. READ TABLE IT_LFA1 INTO WA_LFA1 WITH KEY LIFNR = WA_MSEG-LIFNR binary search." Reading Party Name IF SY-SUBRC = 0. WA_MSEG-NAME2 = WA_LFA1-NAME1. ENDIF. READ TABLE IT_BADI INTO WA_BADI WITH KEY MBLNR = WA_MSEG-MBLNR MJAHR = WA_MSEG-MJAHR b inary search." Reading BADI Details IF SY-SUBRC = 0. WA_MSEG-GTNO = WA_BADI-GTNO. WA_MSEG-GTDT = WA_BADI-GTDT. WA_MSEG-PERMIT = WA_BADI-PERMIT. WA_MSEG-TRNO = WA_BADI-TRNO. WA_MSEG-GRWT = WA_BADI-GRWT. WA_MSEG-TRWT = WA_BADI-TRWT. WA_MSEG-NTWT = WA_BADI-NTWT. WA_MSEG-WTUNIT = WA_BADI-WTUNIT. WA_MSEG-REM = WA_BADI-REM. WA_MSEG-LRNO = WA_BADI-LRNO. WA_MSEG-LRDT = WA_BADI-LRDT. WA_MSEG-TRNAME = WA_BADI-TRNAME.
ENDIF. IF WA_EKKO-BSART NE 'ZUB' AND WA_EKKO-BSART NE 'ZIS1' AND WA_EKKO-BSART NE 'ZIS2' AND WA_EKKO-BSART NE 'ZIS3'. READ TABLE IT_EKBE INTO WA_EKBE WITH KEY LFBNR = WA_MSEG-MBLNR LFGJA = WA_MSEG-LFBJA LFPOS = WA_MSEG-ZEILE binary search." Reading PO History IF SY-SUBRC = 0. WA_MSEG-BELNR = WA_EKBE-BELNR. READ TABLE IT_RBKP INTO WA_RBKP WITH KEY BELNR = WA_EKBE-BELNR binary search." Rea ding Invoice Header IF SY-SUBRC = 0. WA_MSEG-BLDAT = WA_RBKP-BLDAT. WA_MSEG-XBLNR = WA_RBKP-XBLNR. ENDIF. ENDIF. ELSE. LOOP AT IT_VBFA INTO WA_VBFA WHERE VBELN = WA_MSEG-MBLNR. " Reading Sale s Doc.Flow WA_MSEG-VBELV = WA_VBFA-VBELV. READ TABLE IT_VBRP INTO WA_VBRP WITH KEY VGBEL = WA_VBFA-VBELV binary search." Rea ding Sales Billing Details IF SY-SUBRC = 0. WA_MSEG-VBELN = WA_VBRP-VBELN. READ TABLE IT_VBRK INTO WA_VBRK WITH KEY VBELN = WA_VBRP-VBELN binary search." R eading Sales Billing Header IF SY-SUBRC = 0. WA_MSEG-FKDAT = WA_VBRk-FKDAT. ENDIF. ENDIF. EXIT. ENDLOOP. ENDIF. MODIFY IT_MSEG FROM WA_MSEG INDEX V_SYTABIX TRANSPORTING MAKTX NAME1 SNAME NAME2 BSART EKORG EKGRP KNUMV BEDAT MWSKZ VBELV VBELN FKDAT BELNR XBLNR LIFNR GTNO GTDT PERMIT T RNO GRWT TRWT NTWT WTUNIT REM LRNO LRDT TRNAME EINDT.
ENDIF. CLEAR CLEAR CLEAR CLEAR CLEAR CLEAR ENDLOOP. * Delete Other Purchase Types DELETE IT_MSEG WHERE BSART IS INITIAL OR EKORG IS INITIAL OR EKGRP IS INITIAL. IF IT_MSEG[] IS INITIAL. MESSAGE TEXT-002 TYPE 'I'. EXIT. ENDIF. * Condition Value SORT IT_MSEG BY KNUMV EBELP. SELECT KNUMV KPOSN STUNR KSCHL KBETR KPEIN KWERT KKURS WAERS FROM KONV INTO CORRESPONDING FIELDS OF TABLE IT_KONV FOR ALL ENTRIES IN IT_MSEG WHERE KNUMV = IT_MSEG-KNUMV AND KPOSN = IT_MSEG-EBELP AND KSCHL NE 'JEXS' AND KSCHL NE 'NAVS'. SORT IT_MSEG BY MATNR MAKTX WERKS NAME1 LIFNR NAME2 BSART UMWRK SNAME EBELN BU DAT MBLNR. SELECT TSRLNO KSCHL FROM ZCN_MASTER INTO CORRESPONDING FIELDS OF TABLE IT_ZCN_MASTER. * Update Billing Terms Productwise SORT IT_KONV BY KNUMV KPOSN STUNR. SORT IT_ZCN_MASTER BY KSCHL. LOOP AT IT_MSEG INTO WA_MSEG. V_SYTABIX = SY-TABIX. READ TABLE IT_EKKO INTO WA_EKKO WITH KEY EBELN = WA_MSEG-EBELN BUKRS = WA_MSEG-BUKRS binar y search." Reading PO Header IF SY-SUBRC = 0. WA_MSEG. WA_T001W. WA_MAKT. WA_LFA1. WA_EKKO. WA_EKPO.
READ TABLE IT_EKPO INTO WA_EKPO WITH KEY EBELN = WA_MSEG-EBELN EBELP = WA_MSEG-EBELP B UKRS = WA_MSEG-BUKRS binary search." Reading PO Detail IF SY-SUBRC = 0. IF WA_EKKO-BSART = 'ZUB' OR WA_EKKO-BSART = 'ZIS1' OR WA_EKKO-BSART = 'Z IS2' OR WA_EKKO-BSART = 'ZIS3'. WA_MSEG-BASIC = WA_MSEG-DMBTR. ELSE. LOOP AT IT_KONV INTO WA_KONV WHERE KNUMV = WA_MSEG-KNUMV AND KPOSN = W A_MSEG-EBELP. WA_KONV-KBETR = ABS( WA_KONV-KBETR ). WA_KONV-KWERT = ABS( WA_KONV-KWERT ). IF WA_KONV-KWERT NE 0. READ TABLE IT_ZCN_MASTER INTO WA_ZCN_MASTER WITH KEY KSCHL = WA_KONV-KSCHL binary search. " Reading Condition IF SY-SUBRC = 0. IF WA_KONV-WAERS = 'INR'. K_KKURS = 1. ELSE. IF WA_ZCN_MASTER-TSRLNO = 1. K_KKURS = WA_KONV-KKURS. ENDIF. ENDIF. P_AMT = ( WA_KONV-KWERT * K_KKURS ). P_AMT = ( P_AMT * WA_MSEG-MENGE ) / WA_EKPO-MENGE. CASE WA_ZCN_MASTER-TSRLNO. WHEN 1. WA_MSEG-BASIC = WA_MSEG-BASIC + P_AMT. WHEN 2. WA_MSEG-PACKING = WA_MSEG-PACKING + P_AMT. WHEN 3. WA_MSEG-DISC = WA_MSEG-DISC + P_AMT. WHEN 4. WA_MSEG-FREIGHT = WA_MSEG-FREIGHT + P_AMT. WHEN 5. WA_MSEG-OTH_CHG = WA_MSEG-OTH_CHG + P_AMT. WHEN 6. WA_MSEG-R_OFF = WA_MSEG-R_OFF + P_AMT. WHEN OTHERS. IF P_AMT > 0. WA_MSEG-OTH_ADD = WA_MSEG-OTH_ADD + P_AMT. ELSEIF WA_KONV-KWERT < 0. WA_MSEG-OTH_LESS = WA_MSEG-OTH_LESS + P_AMT. ENDIF. ENDCASE. ENDIF.
ENDIF. ENDLOOP. IF WA_MSEG-BASIC = 0. WA_MSEG-BASIC = WA_MSEG-DMBTR. ENDIF. * Tax Calculate IF WA_MSEG-mwskz IS NOT INITIAL AND WA_MSEG-mwskz NE 'V0'. PERFORM CALC_TAX. ENDIF. ENDIF. WA_MSEG-NETAMT = WA_MSEG-BASIC + WA_MSEG-PACKING - WA_MSEG-DISC + WA_MSE G-FREIGHT + WA_MSEG-OTH_CHG + WA_MSEG-R_OFF + WA_MSEG-EXCISE + WA_MSEG-CESS + WA_MSEG-SCESS + WA_MSEG-CST + WA_MSEG-LST + WA_MSEG-VAT + WA_MSEG-STAX + WA_MSEG-OTAX + WA_MSEG-OTH_ADD + WA_MSEG-OTH_LESS. ENDIF. ENDIF. IF WA_MSEG-SHKZG = 'H'. WA_MSEG-MENGE = WA_MSEG-MENGE * - 1. WA_MSEG-BASIC = WA_MSEG-BASIC * - 1. WA_MSEG-PACKING = WA_MSEG-PACKING * - 1. WA_MSEG-DISC = WA_MSEG-DISC * - 1. WA_MSEG-FREIGHT = WA_MSEG-FREIGHT * - 1. WA_MSEG-OTH_CHG = WA_MSEG-OTH_CHG * - 1. WA_MSEG-R_OFF = WA_MSEG-R_OFF * - 1. WA_MSEG-EXCISE = WA_MSEG-EXCISE * - 1. WA_MSEG-CESS = WA_MSEG-CESS * - 1. WA_MSEG-SCESS = WA_MSEG-SCESS * - 1. WA_MSEG-CST = WA_MSEG-CST * - 1. WA_MSEG-LST = WA_MSEG-LST * - 1. WA_MSEG-VAT = WA_MSEG-VAT * - 1. WA_MSEG-STAX = WA_MSEG-STAX * - 1. WA_MSEG-OTAX = WA_MSEG-OTAX * - 1. WA_MSEG-OTH_ADD = WA_MSEG-OTH_ADD * - 1. WA_MSEG-OTH_LESS = WA_MSEG-OTH_LESS * - 1. WA_MSEG-DMBTR = WA_MSEG-DMBTR * - 1. WA_MSEG-NETAMT = WA_MSEG-NETAMT * - 1. ENDIF. SELECT SINGLE MEINS FROM MARA INTO WA_MSEG-UOM WHERE MATNR = WA_MSEG-MATNR. MODIFY IT_MSEG FROM WA_MSEG INDEX V_SYTABIX. CLEAR CLEAR CLEAR CLEAR CLEAR WA_MSEG. WA_EKKO. WA_KONV. WA_EKPO. WA_ZCN_MASTER.
ENDLOOP. * Update Billing Terms wise SORT IT_TERMSUM BY TEXT. LOOP AT IT_MSEG INTO WA_MSEG. V_SYTABIX = SY-TABIX. CLEAR I_KNUMH. I_MRP_RATE = 0. CLEAR I_HSDAT. * MFG.DATE PICK UP READ TABLE IT_MCH1 INTO WA_MCH1 WITH KEY MATNR = WA_MSEG-MATNR CHARG = WA_MS EG-CHARG binary search. IF SY-SUBRC = 0. IF WA_MCH1-HSDAT IS INITIAL. I_HSDAT = WA_MCH1-ERSDA. ELSE. I_HSDAT = WA_MCH1-HSDAT. ENDIF. ENDIF. WA_MSEG-HSDAT = I_HSDAT. * MRP RATE PICK UP LOOP AT IT_A974 INTO WA_A974 WHERE KSCHL = 'ZMRP' AND MATNR = WA_MSEG-MATNR AND CHARG = WA_MSEG-CHARG. IF I_HSDAT >= WA_A974-DATAB AND I_HSDAT <= WA_A974-DATBI. I_KNUMH = WA_A974-KNUMH. EXIT. ENDIF. ENDLOOP. IF I_KNUMH IS NOT INITIAL. READ TABLE IT_KONP INTO WA_KONP WITH KEY KNUMH = I_KNUMH binary search. IF SY-SUBRC = 0. I_MRP_RATE = WA_KONP-KBETR. ENDIF. ELSE. CLEAR I_KNUMH. I_MRP_RATE = 0. LOOP AT IT_A926 INTO WA_A926 WHERE KSCHL = 'ZMRP' AND MATNR = WA_MSEG-MATN R. IF I_HSDAT >= WA_A926-DATAB AND I_HSDAT <= WA_A926-DATBI. I_KNUMH = WA_A926-KNUMH. EXIT. ENDIF. ENDLOOP. IF I_KNUMH IS NOT INITIAL.
READ TABLE IT_KONP3 INTO WA_KONP WITH KEY KNUMH = I_KNUMH binary search. IF SY-SUBRC = 0. I_MRP_RATE = WA_KONP-KBETR. ENDIF. ENDIF. ENDIF. WA_MSEG-MRP_RATE = I_MRP_RATE. READ TABLE IT_T023T INTO WA_T023T WITH KEY MATKL = WA_MSEG-MATKL binary sear ch. IF SY-SUBRC = 0. WA_MSEG-WGBEZ = WA_T023T-WGBEZ. ENDIF. MODIFY IT_MSEG FROM WA_MSEG INDEX V_SYTABIX TRANSPORTING HSDAT MRP_RATE WGBE Z. * BILLING TERMS SUMMARY IF WA_MSEG-BASIC NE 0. CLEAR WA_TERMSUM. READ TABLE IT_TERMSUM INTO WA_TERMSUM WITH KEY TEXT = 'BASIC'. " binary se arch. IF SY-SUBRC = 0. V_SYTABIX = SY-TABIX. R_CTR = 1. ELSE. WA_TERMSUM-TEXT = 'BASIC'. WA_TERMSUM-CTR = 1. WA_TERMSUM-A_L = 'Add :'. R_CTR = 2. ENDIF. WA_TERMSUM-AMT = WA_TERMSUM-AMT + WA_MSEG-BASIC. IF R_CTR = 1. MODIFY IT_TERMSUM FROM WA_TERMSUM INDEX V_SYTABIX . ELSEIF R_CTR = 2. APPEND WA_TERMSUM TO IT_TERMSUM. ENDIF. ENDIF. IF WA_MSEG-PACKING NE 0. CLEAR WA_TERMSUM. READ TABLE IT_TERMSUM INTO WA_TERMSUM WITH KEY TEXT = 'PACKING'. " binary search. IF SY-SUBRC = 0. V_SYTABIX = SY-TABIX. R_CTR = 1. ELSE. WA_TERMSUM-TEXT = 'PACKING'. WA_TERMSUM-CTR = 2. WA_TERMSUM-A_L = 'Add :'. R_CTR = 2. ENDIF. WA_TERMSUM-AMT = WA_TERMSUM-AMT + WA_MSEG-PACKING. IF R_CTR = 1. MODIFY IT_TERMSUM FROM WA_TERMSUM INDEX V_SYTABIX .
ELSEIF R_CTR = 2. APPEND WA_TERMSUM TO IT_TERMSUM. ENDIF. ENDIF. IF WA_MSEG-DISC NE 0. CLEAR WA_TERMSUM. READ TABLE IT_TERMSUM INTO WA_TERMSUM WITH KEY TEXT = 'DISC'. " binary sea rch. IF SY-SUBRC = 0. V_SYTABIX = SY-TABIX. R_CTR = 1. ELSE. WA_TERMSUM-TEXT = 'DISC'. WA_TERMSUM-CTR = 3. WA_TERMSUM-A_L = 'Less :'. R_CTR = 2. ENDIF. WA_TERMSUM-AMT = WA_TERMSUM-AMT - WA_MSEG-DISC. IF R_CTR = 1. MODIFY IT_TERMSUM FROM WA_TERMSUM INDEX V_SYTABIX . ELSEIF R_CTR = 2. APPEND WA_TERMSUM TO IT_TERMSUM. ENDIF. ENDIF. IF WA_MSEG-FREIGHT NE 0. CLEAR WA_TERMSUM. READ TABLE IT_TERMSUM INTO WA_TERMSUM WITH KEY TEXT = 'FREIGHT'. " binary search. IF SY-SUBRC = 0. V_SYTABIX = SY-TABIX. R_CTR = 1. ELSE. WA_TERMSUM-TEXT = 'FREIGHT'. WA_TERMSUM-CTR = 12. WA_TERMSUM-A_L = 'Add :'. R_CTR = 2. ENDIF. WA_TERMSUM-AMT = WA_TERMSUM-AMT + WA_MSEG-FREIGHT. IF R_CTR = 1. MODIFY IT_TERMSUM FROM WA_TERMSUM INDEX V_SYTABIX . ELSEIF R_CTR = 2. APPEND WA_TERMSUM TO IT_TERMSUM. ENDIF. ENDIF. IF WA_MSEG-OTH_CHG NE 0. CLEAR WA_TERMSUM. READ TABLE IT_TERMSUM INTO WA_TERMSUM WITH KEY TEXT = 'OTHER CHARGE'. " bi nary search. IF SY-SUBRC = 0. V_SYTABIX = SY-TABIX. R_CTR = 1. ELSE. WA_TERMSUM-TEXT = 'OTHER CHARGE'. WA_TERMSUM-CTR = 13. WA_TERMSUM-A_L = 'Add :'. R_CTR = 2. ENDIF.
WA_TERMSUM-AMT = WA_TERMSUM-AMT + WA_MSEG-OTH_CHG. IF R_CTR = 1. MODIFY IT_TERMSUM FROM WA_TERMSUM INDEX V_SYTABIX . ELSEIF R_CTR = 2. APPEND WA_TERMSUM TO IT_TERMSUM. ENDIF. ENDIF. IF WA_MSEG-R_OFF NE 0. CLEAR WA_TERMSUM. READ TABLE IT_TERMSUM INTO WA_TERMSUM WITH KEY TEXT = 'ROUNDED OFF'. " bin ary search. IF SY-SUBRC = 0. V_SYTABIX = SY-TABIX. R_CTR = 1. ELSE. WA_TERMSUM-TEXT = 'ROUNDED OFF'. WA_TERMSUM-CTR = 14. WA_TERMSUM-A_L = 'Add/Less :'. R_CTR = 2. ENDIF. WA_TERMSUM-AMT = WA_TERMSUM-AMT + WA_MSEG-R_OFF. IF R_CTR = 1. MODIFY IT_TERMSUM FROM WA_TERMSUM INDEX V_SYTABIX . ELSEIF R_CTR = 2. APPEND WA_TERMSUM TO IT_TERMSUM. ENDIF. ENDIF. IF WA_MSEG-OTH_ADD NE 0. CLEAR WA_TERMSUM. READ TABLE IT_TERMSUM INTO WA_TERMSUM WITH KEY TEXT = 'OTHER ADD'. " binar y search. IF SY-SUBRC = 0. V_SYTABIX = SY-TABIX. R_CTR = 1. ELSE. WA_TERMSUM-TEXT = 'OTHER ADD'. WA_TERMSUM-CTR = 15. WA_TERMSUM-A_L = 'Add :'. R_CTR = 2. ENDIF. WA_TERMSUM-AMT = WA_TERMSUM-AMT + WA_MSEG-OTH_ADD. IF R_CTR = 1. MODIFY IT_TERMSUM FROM WA_TERMSUM INDEX V_SYTABIX . ELSEIF R_CTR = 2. APPEND WA_TERMSUM TO IT_TERMSUM. ENDIF. ENDIF. IF WA_MSEG-OTH_LESS NE 0. CLEAR WA_TERMSUM. READ TABLE IT_TERMSUM INTO WA_TERMSUM WITH KEY TEXT = 'OTHER LESS'. " bina ry search. IF SY-SUBRC = 0. V_SYTABIX = SY-TABIX. R_CTR = 1. ELSE. WA_TERMSUM-TEXT = 'OTHER LESS'. WA_TERMSUM-CTR = 16.
WA_TERMSUM-A_L = 'Less :'. R_CTR = 2. ENDIF. WA_TERMSUM-AMT = WA_TERMSUM-AMT + WA_MSEG-OTH_LESS. IF R_CTR = 1. MODIFY IT_TERMSUM FROM WA_TERMSUM INDEX V_SYTABIX . ELSEIF R_CTR = 2. APPEND WA_TERMSUM TO IT_TERMSUM. ENDIF. ENDIF. IF WA_MSEG-NETAMT NE 0. CLEAR WA_TERMSUM. READ TABLE IT_TERMSUM INTO WA_TERMSUM WITH KEY TEXT = 'NET AMOUNT'. " bina ry search. IF SY-SUBRC = 0. V_SYTABIX = SY-TABIX. R_CTR = 1. ELSE. WA_TERMSUM-TEXT = 'NET AMOUNT'. WA_TERMSUM-CTR = 18. WA_TERMSUM-A_L = 'Total :'. R_CTR = 2. ENDIF. WA_TERMSUM-AMT = WA_TERMSUM-AMT + WA_MSEG-NETAMT. IF R_CTR = 1. MODIFY IT_TERMSUM FROM WA_TERMSUM INDEX V_SYTABIX . ELSEIF R_CTR = 2. APPEND WA_TERMSUM TO IT_TERMSUM. ENDIF. ENDIF. IF WA_MSEG-EXCISE NE 0. CLEAR WA_TERMSUM. ZTEXT = WA_MSEG-EXCISE_P. CONDENSE ZTEXT. concatenate 'EXCISE DUTY ' ZTEXT '%' into ZTEXT SEPARATED BY SPACE. READ TABLE IT_TERMSUM INTO WA_TERMSUM WITH KEY TEXT = ZTEXT. " binary sear ch. IF SY-SUBRC = 0. V_SYTABIX = SY-TABIX. R_CTR = 1. ELSE. WA_TERMSUM-TEXT = ZTEXT. WA_TERMSUM-CTR = 4. WA_TERMSUM-A_L = 'Add :'. R_CTR = 2. ENDIF. WA_TERMSUM-AMT = WA_TERMSUM-AMT + WA_MSEG-EXCISE. IF R_CTR = 1. MODIFY IT_TERMSUM FROM WA_TERMSUM INDEX V_SYTABIX . ELSEIF R_CTR = 2. APPEND WA_TERMSUM TO IT_TERMSUM. ENDIF. ENDIF. IF WA_MSEG-CESS NE 0. CLEAR WA_TERMSUM. ZTEXT = WA_MSEG-CESS_P. CONDENSE ZTEXT.
concatenate 'CESS ' ZTEXT '%' into ZTEXT SEPARATED BY SPACE. READ TABLE IT_TERMSUM INTO WA_TERMSUM WITH KEY TEXT = ZTEXT. " binary sear ch. IF SY-SUBRC = 0. V_SYTABIX = SY-TABIX. R_CTR = 1. ELSE. WA_TERMSUM-TEXT = ZTEXT. WA_TERMSUM-CTR = 5. WA_TERMSUM-A_L = 'Add :'. R_CTR = 2. ENDIF. WA_TERMSUM-AMT = WA_TERMSUM-AMT + WA_MSEG-CESS. IF R_CTR = 1. MODIFY IT_TERMSUM FROM WA_TERMSUM INDEX V_SYTABIX . ELSEIF R_CTR = 2. APPEND WA_TERMSUM TO IT_TERMSUM. ENDIF. ENDIF. IF WA_MSEG-SCESS NE 0. CLEAR WA_TERMSUM. ZTEXT = WA_MSEG-SCESS_P. CONDENSE ZTEXT. concatenate 'EDU. CESS ' ZTEXT '%' into ZTEXT SEPARATED BY SPACE. READ TABLE IT_TERMSUM INTO WA_TERMSUM WITH KEY TEXT = ZTEXT. " binary sear ch. IF SY-SUBRC = 0. V_SYTABIX = SY-TABIX. R_CTR = 1. ELSE. WA_TERMSUM-TEXT = ZTEXT. WA_TERMSUM-CTR = 6. WA_TERMSUM-A_L = 'Add :'. R_CTR = 2. ENDIF. WA_TERMSUM-AMT = WA_TERMSUM-AMT + WA_MSEG-SCESS. IF R_CTR = 1. MODIFY IT_TERMSUM FROM WA_TERMSUM INDEX V_SYTABIX . ELSEIF R_CTR = 2. APPEND WA_TERMSUM TO IT_TERMSUM. ENDIF. ENDIF. IF WA_MSEG-CST NE 0. CLEAR WA_TERMSUM. ZTEXT = WA_MSEG-CST_P. CONDENSE ZTEXT. concatenate 'CST ' ZTEXT '%' into ZTEXT SEPARATED BY SPACE. READ TABLE IT_TERMSUM INTO WA_TERMSUM WITH KEY TEXT = ZTEXT. " binary sear ch. IF SY-SUBRC = 0. V_SYTABIX = SY-TABIX. R_CTR = 1. ELSE. WA_TERMSUM-TEXT = ZTEXT. WA_TERMSUM-CTR = 7. WA_TERMSUM-A_L = 'Add :'. WA_TERMSUM-TAXTEXT = 'CENTRAL'. R_CTR = 2.
ENDIF. WA_TERMSUM-AMT = WA_TERMSUM-AMT + WA_MSEG-CST. IF R_CTR = 1. MODIFY IT_TERMSUM FROM WA_TERMSUM INDEX V_SYTABIX . ELSEIF R_CTR = 2. APPEND WA_TERMSUM TO IT_TERMSUM. ENDIF. ENDIF. IF WA_MSEG-LST NE 0. CLEAR WA_TERMSUM. ZTEXT = WA_MSEG-LST_P. CONDENSE ZTEXT. concatenate 'LST ' ZTEXT '%' into ZTEXT SEPARATED BY SPACE. READ TABLE IT_TERMSUM INTO WA_TERMSUM WITH KEY TEXT = ZTEXT. " binary sear ch. IF SY-SUBRC = 0. V_SYTABIX = SY-TABIX. R_CTR = 1. ELSE. WA_TERMSUM-TEXT = ZTEXT. WA_TERMSUM-CTR = 8. WA_TERMSUM-A_L = 'Add :'. WA_TERMSUM-TAXTEXT = 'STATE'. R_CTR = 2. ENDIF. WA_TERMSUM-AMT = WA_TERMSUM-AMT + WA_MSEG-LST. IF R_CTR = 1. MODIFY IT_TERMSUM FROM WA_TERMSUM INDEX V_SYTABIX . ELSEIF R_CTR = 2. APPEND WA_TERMSUM TO IT_TERMSUM. ENDIF. ENDIF. IF WA_MSEG-VAT NE 0. CLEAR WA_TERMSUM. ZTEXT = WA_MSEG-VAT_P. CONDENSE ZTEXT. concatenate 'VAT ' ZTEXT '%' into ZTEXT SEPARATED BY SPACE. READ TABLE IT_TERMSUM INTO WA_TERMSUM WITH KEY TEXT = ZTEXT. " binary sear ch. IF SY-SUBRC = 0. V_SYTABIX = SY-TABIX. R_CTR = 1. ELSE. WA_TERMSUM-TEXT = ZTEXT. WA_TERMSUM-CTR = 9. WA_TERMSUM-A_L = 'Add :'. WA_TERMSUM-TAXTEXT = 'STATE'. R_CTR = 2. ENDIF. WA_TERMSUM-AMT = WA_TERMSUM-AMT + WA_MSEG-VAT. IF R_CTR = 1. MODIFY IT_TERMSUM FROM WA_TERMSUM INDEX V_SYTABIX . ELSEIF R_CTR = 2. APPEND WA_TERMSUM TO IT_TERMSUM. ENDIF. ENDIF. IF WA_MSEG-STAX NE 0.
CLEAR WA_TERMSUM. ZTEXT = WA_MSEG-STAX_P. CONDENSE ZTEXT. concatenate 'SERVICE TAX ' ZTEXT '%' into ZTEXT SEPARATED BY SPACE. READ TABLE IT_TERMSUM INTO WA_TERMSUM WITH KEY TEXT = ZTEXT. " binary sear ch. IF SY-SUBRC = 0. V_SYTABIX = SY-TABIX. R_CTR = 1. ELSE. WA_TERMSUM-TEXT = ZTEXT. WA_TERMSUM-CTR = 10. WA_TERMSUM-A_L = 'Add :'. WA_TERMSUM-TAXTEXT = 'STATE'. R_CTR = 2. ENDIF. WA_TERMSUM-AMT = WA_TERMSUM-AMT + WA_MSEG-STAX. IF R_CTR = 1. MODIFY IT_TERMSUM FROM WA_TERMSUM INDEX V_SYTABIX . ELSEIF R_CTR = 2. APPEND WA_TERMSUM TO IT_TERMSUM. ENDIF. ENDIF. IF WA_MSEG-OTAX NE 0. CLEAR WA_TERMSUM. ZTEXT = WA_MSEG-OTAX_P. CONDENSE ZTEXT. concatenate 'OTHER TAX ' ZTEXT '%' into ZTEXT SEPARATED BY SPACE. READ TABLE IT_TERMSUM INTO WA_TERMSUM WITH KEY TEXT = ZTEXT. " binary sear ch. IF SY-SUBRC = 0. V_SYTABIX = SY-TABIX. R_CTR = 1. ELSE. WA_TERMSUM-TEXT = ZTEXT. WA_TERMSUM-CTR = 11. WA_TERMSUM-A_L = 'Add :'. WA_TERMSUM-TAXTEXT = 'STATE'. R_CTR = 2. ENDIF. WA_TERMSUM-AMT = WA_TERMSUM-AMT + WA_MSEG-OTAX. IF R_CTR = 1. MODIFY IT_TERMSUM FROM WA_TERMSUM INDEX V_SYTABIX . ELSEIF R_CTR = 2. APPEND WA_TERMSUM TO IT_TERMSUM. ENDIF. ENDIF. CLEAR WA_MSEG. ENDLOOP. SORT IT_TERMSUM BY CTR. ENDFORM. "FINAL_DATA *&---------------------------------------------------------------------* *& Form CALC_TAX *&---------------------------------------------------------------------* * text
*----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM CALC_TAX . DATA: IT_XKOMV TYPE KOMV OCCURS 0 WITH HEADER LINE. DATA: IT_TAXCOM TYPE TAXCOM. * Tax on Basic IF WA_MSEG-MWSKZ IS NOT INITIAL. CLEAR IT_TAXCOM. CLEAR IT_XKOMV. REFRESH IT_XKOMV. IT_TAXCOM-BUKRS IT_TAXCOM-BUDAT IT_TAXCOM-BLDAT IT_TAXCOM-WAERS IT_TAXCOM-HWAER IT_TAXCOM-KPOSN IT_TAXCOM-MWSKZ *** IT_TAXCOM-WRBTR = WA_MSEG-BASIC - WA_MSEG-DISC. " WA_MSEG-DMBTR. IT_TAXCOM-XMWST IT_TAXCOM-TXJCD IT_TAXCOM-LIFNR IT_TAXCOM-EKORG IT_TAXCOM-MATNR IT_TAXCOM-WERKS IT_TAXCOM-MATKL IT_TAXCOM-MEINS *** IT_TAXCOM-MGLME = WA_MSEG-MENGE. IT_TAXCOM-MTART IT_TAXCOM-LAND1 IT_TAXCOM-EBELN IT_TAXCOM-EBELP * * * = = = = WA_EKPO-MTART. WA_EKKO-LANDS. WA_EKPO-EBELN. WA_EKPO-EBELP. = = = = = = = = 'X'. WA_EKPO-TXJCD. WA_EKKO-LIFNR. WA_EKKO-EKORG. WA_EKPO-MATNR. WA_EKPO-WERKS. WA_EKPO-MATKL. WA_EKPO-MEINS. = = = = = = = WA_EKPO-BUKRS. WA_EKKO-AEDAT. WA_EKKO-BEDAT. WA_EKKO-WAERS. WA_EKKO-WAERS. WA_EKPO-EBELP. WA_EKPO-MWSKZ.
IT_TAXCOM-shkzg = 'H'. IT_TAXCOM-bwtar = WA_EKPO-bwtar. IT_TAXCOM-llief = WA_EKKO-llief. CALL FUNCTION 'CALCULATE_TAX_ITEM' EXPORTING DIALOG = 'DIAKZ' DISPLAY_ONLY = 'X' I_TAXCOM = IT_TAXCOM TABLES T_XKOMV = IT_XKOMV EXCEPTIONS MWSKZ_NOT_DEFINED = 1 MWSKZ_NOT_FOUND = 2 MWSKZ_NOT_VALID = 3 STEUERBETRAG_FALSCH = 4
COUNTRY_NOT_FOUND OTHERS
= 5 = 6.
IF SY-SUBRC <> 0. MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. EXIT. ENDIF. LOOP AT IT_XKOMV. IF IT_XKOMV-kposn = WA_EKPO-ebelp. READ TABLE IT_ZCN_MASTER INTO WA_ZCN_MASTER WITH KEY KSCHL = IT_XKOMV-KSCHL binary search. " Read ing Condition IF SY-SUBRC = 0. P_AMT = IT_XKOMV-KWERT. CASE WA_ZCN_MASTER-TSRLNO. WHEN 7. WA_MSEG-EXCISE = WA_MSEG-EXCISE + P_AMT. WA_MSEG-EXCISE_P = ( IT_XKOMV-KBETR / 10 ). WHEN 8. WA_MSEG-CESS = WA_MSEG-CESS + P_AMT. WA_MSEG-CESS_P = ( IT_XKOMV-KBETR / 10 ). WHEN 9. WA_MSEG-SCESS = WA_MSEG-SCESS + P_AMT. WA_MSEG-SCESS_P = ( IT_XKOMV-KBETR / 10 ). WHEN 10. WA_MSEG-CST = WA_MSEG-CST + P_AMT. WA_MSEG-CST_P = ( IT_XKOMV-KBETR / 10 ). WHEN 11. WA_MSEG-LST = WA_MSEG-LST + P_AMT. WA_MSEG-LST_P = ( IT_XKOMV-KBETR / 10 ). WHEN 12. WA_MSEG-VAT = WA_MSEG-VAT + P_AMT. WA_MSEG-VAT_P = ( IT_XKOMV-KBETR / 10 ). WHEN 13. WA_MSEG-STAX = WA_MSEG-STAX + P_AMT. WA_MSEG-STAX_P = ( IT_XKOMV-KBETR / 10 ). WHEN 14. WA_MSEG-OTAX = WA_MSEG-OTAX + P_AMT. WA_MSEG-OTAX_P = ( IT_XKOMV-KBETR / 10 ). ENDCASE. ENDIF. ENDIF. CLEAR IT_XKOMV. ENDLOOP. CLEAR IT_TAXCOM. ENDIF. "-> ENDLOOP FOR IT_XKONV
CLEAR IT_XKOMV. REFRESH IT_XKOMV. CLEAR IT_TAXCOM. ENDFORM. " CALC_TAX *&---------------------------------------------------------------------* *& Form MAKE_SUMMARY *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM MAKE_SUMMARY . DATA: S_CTR TYPE P LENGTH 16 DECIMALS 0. * MSEG SUMMARY SORT IT_SUMMARY BY MATNR WERKS LIFNR UMWRK. LOOP AT IT_MSEG INTO WA_MSEG. IF WA_MSEG-BSART NE 'ZUB' AND WA_MSEG-BSART NE 'ZIS1' AND WA_MSEG-BSART NE ' ZIS2' AND WA_MSEG-BSART NE 'ZIS3'. READ TABLE IT_SUMMARY INTO WA_SUMMARY WITH KEY MATNR = WA_MSEG-MATNR WERKS = WA_MSEG-WERKS UM WRK = WA_MSEG-UMWRK binary search. ELSE. READ TABLE IT_SUMMARY INTO WA_SUMMARY WITH KEY MATNR = WA_MSEG-MATNR WERKS = WA_MSEG-WERKS LI FNR = WA_MSEG-LIFNR binary search. ENDIF. IF SY-SUBRC = 0. V_SYTABIX = SY-TABIX. S_CTR = 1. ELSE. WA_SUMMARY-MTART = WA_MSEG-MTART. WA_SUMMARY-MATNR = WA_MSEG-MATNR. WA_SUMMARY-MAKTX = WA_MSEG-MAKTX. WA_SUMMARY-WERKS = WA_MSEG-WERKS. WA_SUMMARY-NAME1 = WA_MSEG-NAME1. IF WA_MSEG-BSART NE 'ZUB' AND WA_MSEG-BSART NE 'ZIS1' AND WA_MSEG-BSART NE 'ZIS2' AND WA_MSEG-BSART NE 'ZIS3'. WA_SUMMARY-UMWRK = WA_MSEG-UMWRK. WA_SUMMARY-SNAME = WA_MSEG-SNAME. ELSE. WA_SUMMARY-LIFNR = WA_MSEG-LIFNR. WA_SUMMARY-NAME2 = WA_MSEG-NAME2. ENDIF. S_CTR = 2. ENDIF. WA_SUMMARY-MENGE = WA_SUMMARY-MENGE + WA_MSEG-MENGE. WA_SUMMARY-BASIC = WA_SUMMARY-BASIC + WA_MSEG-BASIC. WA_SUMMARY-PACKING = WA_SUMMARY-PACKING + WA_MSEG-PACKING. WA_SUMMARY-DISC = WA_SUMMARY-DISC + WA_MSEG-DISC.
WA_SUMMARY-OTH_CHG = WA_SUMMARY-OTH_CHG + WA_MSEG-OTH_CHG. WA_SUMMARY-R_OFF = WA_SUMMARY-R_OFF + WA_MSEG-R_OFF. WA_SUMMARY-EXCISE = WA_SUMMARY-EXCISE + WA_MSEG-EXCISE. WA_SUMMARY-CESS = WA_SUMMARY-CESS + WA_MSEG-CESS. WA_SUMMARY-SCESS = WA_SUMMARY-SCESS + WA_MSEG-SCESS. WA_SUMMARY-CST = WA_SUMMARY-CST + WA_MSEG-CST. WA_SUMMARY-LST = WA_SUMMARY-LST + WA_MSEG-LST. WA_SUMMARY-VAT = WA_SUMMARY-VAT + WA_MSEG-VAT. WA_SUMMARY-STAX = WA_SUMMARY-STAX + WA_MSEG-STAX. WA_SUMMARY-OTAX = WA_SUMMARY-OTAX + WA_MSEG-OTAX. WA_SUMMARY-OTH_ADD = WA_SUMMARY-OTH_ADD + WA_MSEG-OTH_ADD. WA_SUMMARY-OTH_LESS = WA_SUMMARY-OTH_LESS + WA_MSEG-OTH_LESS. WA_SUMMARY-DMBTR = WA_SUMMARY-DMBTR + WA_MSEG-DMBTR. WA_SUMMARY-NETAMT = WA_SUMMARY-NETAMT + WA_MSEG-NETAMT. IF S_CTR = 1. MODIFY IT_SUMMARY FROM WA_SUMMARY INDEX V_SYTABIX. ELSEIF S_CTR = 2. APPEND WA_SUMMARY TO IT_SUMMARY. ENDIF. CLEAR WA_MSEG. CLEAR WA_SUMMARY. ENDLOOP. IF I_MIS = 'X'. SORT IT_SUMMARY BY MATNR MAKTX WERKS NAME1 LIFNR NAME2 UMWRK SNAME. * SORT IT_MSEG BY MATNR MAKTX WERKS NAME1 LIFNR NAME2 BSART UMWRK SNAME EBELN BUDAT MBLNR. ELSEIF I_GR = 'X'. CLEAR IT_DETAIL[]. REFRESH IT_DETAIL[]. IT_DETAIL[] = IT_MSEG[]. SORT IT_DETAIL BY BUDAT MBLNR ZEILE. ENDIF. ENDFORM. " MAKE_SUMMARY *&---------------------------------------------------------------------* *& Form make_alv_header *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM make_alv_header . i_ppvon = I_BUDAT-low. i_ppbis = I_BUDAT-high. CLEAR lsthdr. concatenate 'From : ' i_ppvon+6(2) '.' i_ppvon+4(2) '.' i_ppvon(4) ' To : ' in to ZTEXT. concatenate ZTEXT ' ' i_ppbis+6(2) '.' i_ppbis+4(2) '.' i_ppbis(4) into ZTEXT. wa_lsthdr-typ = 'A'. wa_lsthdr-info = ZTEXT. APPEND wa_lsthdr TO lsthdr.
CLEAR wa_lsthdr. IF I_ALLGR = 'X'. ZTEXT = '[ All Goods Received ]'. ELSEIF I_STO = 'X'. ZTEXT = '[ STO ]'. ELSEIF I_PURC = 'X'. ZTEXT = '[ Purchase ]'. ELSEIF I_PRET_B = 'X'. ZTEXT = '[ Purchase Return to Buyback ]'. ELSEIF I_PRET_V = 'X'. ZTEXT = '[ Purchase Return to Vendor ]'. ENDIF. IF I_SUBC = 'X'. concatenate ZTEXT ' - ( Pending for IR. Only )' into ZTEXT. ENDIF. concatenate ZTEXT ' - Qty in Pc(s) / Value in Rs.' into ZTEXT SEPARATED BY SPACE. wa_lsthdr-typ = 'A'. wa_lsthdr-info = ZTEXT. APPEND wa_lsthdr TO lsthdr. CLEAR wa_lsthdr. ENDFORM. " make_alv_header
*&---------------------------------------------------------------------* *& Form make_data_sort *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->P_T_SORT_INFO text *----------------------------------------------------------------------* FORM make_data_sort. wa_sortinfo-tabname = 'IT_DETAIL'. wa_sortinfo-fieldname = 'MATNR'. wa_sortinfo-up = 'X'. wa_sortinfo-SUBTOT = 'X'. APPEND wa_sortinfo TO t_sort_info. CLEAR wa_sortinfo. wa_sortinfo-tabname = 'IT_DETAIL'. wa_sortinfo-fieldname = 'MAKTX'. wa_sortinfo-up = 'X'. APPEND wa_sortinfo TO t_sort_info. CLEAR wa_sortinfo. wa_sortinfo-tabname = 'IT_DETAIL'. wa_sortinfo-fieldname = 'WERKS'. wa_sortinfo-up = 'X'. wa_sortinfo-SUBTOT = 'X'. APPEND wa_sortinfo TO t_sort_info. CLEAR wa_sortinfo. wa_sortinfo-tabname = 'IT_DETAIL'. wa_sortinfo-fieldname = 'NAME1'. wa_sortinfo-up = 'X'. APPEND wa_sortinfo TO t_sort_info. CLEAR wa_sortinfo.
wa_sortinfo-tabname = 'IT_DETAIL'. wa_sortinfo-fieldname = 'LIFNR'. wa_sortinfo-up = 'X'. APPEND wa_sortinfo TO t_sort_info. CLEAR wa_sortinfo. wa_sortinfo-tabname = 'IT_DETAIL'. wa_sortinfo-fieldname = 'NAME2'. wa_sortinfo-up = 'X'. APPEND wa_sortinfo TO t_sort_info. CLEAR wa_sortinfo. wa_sortinfo-tabname = 'IT_DETAIL'. wa_sortinfo-fieldname = 'BSART'. wa_sortinfo-up = 'X'. APPEND wa_sortinfo TO t_sort_info. CLEAR wa_sortinfo. wa_sortinfo-tabname = 'IT_DETAIL'. wa_sortinfo-fieldname = 'UMWRK'. wa_sortinfo-up = 'X'. APPEND wa_sortinfo TO t_sort_info. CLEAR wa_sortinfo. wa_sortinfo-tabname = 'IT_DETAIL'. wa_sortinfo-fieldname = 'SNAME'. wa_sortinfo-up = 'X'. APPEND wa_sortinfo TO t_sort_info. CLEAR wa_sortinfo. wa_sortinfo-tabname = 'IT_DETAIL'. wa_sortinfo-fieldname = 'EBELN'. wa_sortinfo-up = 'X'. APPEND wa_sortinfo TO t_sort_info. CLEAR wa_sortinfo. wa_sortinfo-tabname = 'IT_DETAIL'. wa_sortinfo-fieldname = 'BUDAT'. wa_sortinfo-up = 'X'. APPEND wa_sortinfo TO t_sort_info. CLEAR wa_sortinfo. wa_sortinfo-tabname = 'IT_DETAIL'. wa_sortinfo-fieldname = 'MBLNR'. wa_sortinfo-up = 'X'. APPEND wa_sortinfo TO t_sort_info. CLEAR wa_sortinfo. ENDFORM. " make_data_sort *&---------------------------------------------------------------------* *& Form make_data_sort1 *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->P_T_SORT_INFO text *----------------------------------------------------------------------* FORM make_data_sort1. wa_sortinfo-tabname = 'IT_SUMMARY'. wa_sortinfo-fieldname = 'MATNR'.
wa_sortinfo-up = 'X'. wa_sortinfo-SUBTOT = 'X'. APPEND wa_sortinfo TO t_sort_info1. CLEAR wa_sortinfo. wa_sortinfo-tabname = 'IT_SUMMARY'. wa_sortinfo-fieldname = 'MAKTX'. wa_sortinfo-up = 'X'. APPEND wa_sortinfo TO t_sort_info1. CLEAR wa_sortinfo. wa_sortinfo-tabname = 'IT_SUMMARY'. wa_sortinfo-fieldname = 'WERKS'. wa_sortinfo-up = 'X'. wa_sortinfo-SUBTOT = 'X'. APPEND wa_sortinfo TO t_sort_info1. CLEAR wa_sortinfo. wa_sortinfo-tabname = 'IT_SUMMARY'. wa_sortinfo-fieldname = 'NAME1'. wa_sortinfo-up = 'X'. APPEND wa_sortinfo TO t_sort_info1. CLEAR wa_sortinfo. wa_sortinfo-tabname = 'IT_SUMMARY'. wa_sortinfo-fieldname = 'LIFNR'. wa_sortinfo-up = 'X'. APPEND wa_sortinfo TO t_sort_info1. CLEAR wa_sortinfo. wa_sortinfo-tabname = 'IT_SUMMARY'. wa_sortinfo-fieldname = 'NAME2'. wa_sortinfo-up = 'X'. APPEND wa_sortinfo TO t_sort_info1. CLEAR wa_sortinfo. wa_sortinfo-tabname = 'IT_SUMMARY'. wa_sortinfo-fieldname = 'UMWRK'. wa_sortinfo-up = 'X'. APPEND wa_sortinfo TO t_sort_info1. CLEAR wa_sortinfo. wa_sortinfo-tabname = 'IT_SUMMARY'. wa_sortinfo-fieldname = 'SNAME'. wa_sortinfo-up = 'X'. APPEND wa_sortinfo TO t_sort_info1. CLEAR wa_sortinfo. ENDFORM. " make_data_sort1
*&---------------------------------------------------------------------* *& Form make_data_sort2 *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->P_T_SORT_INFO text *----------------------------------------------------------------------* FORM make_data_sort2. wa_sortinfo-tabname = 'IT_DETAIL'.
wa_sortinfo-fieldname = 'BUDAT'. wa_sortinfo-up = 'X'. wa_sortinfo-SUBTOT = 'X'. APPEND wa_sortinfo TO t_sort_info2. CLEAR wa_sortinfo. wa_sortinfo-tabname = 'IT_DETAIL'. wa_sortinfo-fieldname = 'MBLNR'. wa_sortinfo-up = 'X'. wa_sortinfo-SUBTOT = 'X'. APPEND wa_sortinfo TO t_sort_info2. CLEAR wa_sortinfo. wa_sortinfo-tabname = 'IT_DETAIL'. wa_sortinfo-fieldname = 'ZEILE'. wa_sortinfo-up = 'X'. APPEND wa_sortinfo TO t_sort_info2. CLEAR wa_sortinfo. ENDFORM. " make_data_sort2
*&---------------------------------------------------------------------* *& Form make_data_sort5 *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->P_T_SORT_INFO text *----------------------------------------------------------------------* FORM make_data_sort5. wa_sortinfo-tabname = 'IT_TERMSUM'. wa_sortinfo-fieldname = 'CTR'. wa_sortinfo-up = 'X'. APPEND wa_sortinfo TO t_sort_info5. CLEAR wa_sortinfo. wa_sortinfo-tabname = 'IT_TERMSUM'. wa_sortinfo-fieldname = 'A_L'. wa_sortinfo-up = 'X'. APPEND wa_sortinfo TO t_sort_info5. CLEAR wa_sortinfo. ENDFORM. " make_data_sort5
*&---------------------------------------------------------------------* *& Form make_event *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM make_event. CALL FUNCTION 'REUSE_ALV_EVENTS_GET' EXPORTING I_LIST_TYPE = 0 IMPORTING ET_EVENTS = i_event
EXCEPTIONS LIST_TYPE_WRONG = 1 OTHERS = 2. IF SY-SUBRC <> 0. * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ELSE. READ TABLE i_event WITH KEY name = slis_ev_top_of_page INTO wa_event. IF sy-subrc = 0. wa_event-form = C_TOP. MODIFY I_EVENT FROM WA_EVENT INDEX SY-TABIX TRANSPORTING FORM. ENDIF. READ TABLE i_event WITH KEY NAME = SLIS_EV_PF_STATUS_SET INTO wa_event. IF SY-SUBRC = 0. wa_event-form = C_PF. MODIFY I_EVENT FROM WA_EVENT INDEX SY-TABIX TRANSPORTING FORM. ENDIF. READ TABLE i_event WITH KEY NAME = SLIS_EV_USER_COMMAND INTO wa_event. IF SY-SUBRC = 0. wa_event-form = C_UCOM. MODIFY I_EVENT FROM WA_EVENT INDEX SY-TABIX TRANSPORTING FORM. ENDIF. ENDIF. ENDFORM. " make_event
*&---------------------------------------------------------------------* *& Form make_catelog *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM make_catelog . FLD '01' 'IT_DETAIL' 'X' 'CHAR' '' . FLD '02' 'IT_DETAIL' '' 'CHAR' ''. FLD '03' 'IT_DETAIL' '' 'CHAR' ''. FLD '04' 'IT_DETAIL' '' 'CHAR' ''. FLD '05' 'IT_DETAIL' '' 'CHAR' ''. FLD '06' 'IT_DETAIL' 0' '' 'CHAR' ''. FLD '07' 'IT_DETAIL' '' 'CHAR' ''. FLD '08' 'IT_DETAIL' '' 'CHAR' ''. FLD '09' 'IT_DETAIL' 'MATNR' 'Material' 'MAKTX' 'Material Description' 'WERKS' 'Recd. Plant' 'NAME1' 'Plant Description' 'LIFNR' 'Vendor' 'NAME2' 'Vendor Description' 'BSART' 'Type' 'UMWRK' 'Supplying Plant' 'SNAME' 'Plant Description' 'C411' '40' 'C411' '40' 'C411' '40' 'C411' '40' 'C411' '40' 'C411' '4 'C311' '40' 'C311' '40' 'C311' '40'
'CHAR' ''. '10' 'IT_DETAIL' 'EBELN' 'Pur.Order No.' 'CHAR' ''. '11' 'IT_DETAIL' 'BEDAT' 'PO. Date' '' ''.
'C311' '40' 'C311' '40' 'C311' '40' 'C311' '40' 'C311' '40' 'C211' '40' 'C711' '40' 'C711' '40' 'C711' '40' 'C711' '40' '
FLD '12' 'IT_DETAIL' 'EINDT' 'Deli. Date' '' '' ''. FLD '13' 'IT_DETAIL' 'EKORG' 'Pur.Org' '' 'CHAR' ''. FLD '14' 'IT_DETAIL' 'EKGRP' 'Pur.Group' '' 'CHAR' ''. FLD '15' 'IT_DETAIL' 'MWSKZ' 'Tax' '' 'CHAR' ''. FLD '16' 'IT_DETAIL' 'BUDAT' 'Posting Dt.' '' '' ''. FLD '17' 'IT_DETAIL' 'MBLNR' 'Matl. Doc. No.' '' 'CHAR' ''. FLD '18' 'IT_DETAIL' 'VBELV' 'Deli. Note No.' '' 'CHAR' ''. FLD '19' 'IT_DETAIL' 'VBELN' 'Proforma Inv. No.' ' 'CHAR' ''. FLD '20' 'IT_DETAIL' 'FKDAT' 'Date' '' '' ''. FLD '21' 'IT_DETAIL' 'BELNR' 'Invoice No.' ' 'CHAR' ''. FLD '22' 'IT_DETAIL' 'BLDAT' 'Inv. Date' '' '' ''. FLD '23' 'IT_DETAIL' 'XBLNR' 'Ref. Doc. No.' '' 'CHAR' ''. FLD '24' 'IT_DETAIL' 'FRBNR' 'Bill of Lading' '' 'CHAR' ''. FLD '25' 'IT_DETAIL' 'BKTXT' 'Header Text' ' 'CHAR' ''. FLD '26' 'IT_DETAIL' 'GTNO' 'Gate Pass Entry No.' 1' '40' '' 'CHAR' ''. FLD '27' 'IT_DETAIL' 'GTDT' 'Date' '40' '' '' ''. FLD '28' 'IT_DETAIL' 'PERMIT' 'Permit No.' '40' '' 'CHAR' ''. FLD '29' 'IT_DETAIL' 'TRNO' 'Truck No.' 11' '40' '' 'CHAR' ''. FLD '30' 'IT_DETAIL' 'GRWT' 'Gross Wt.' '40' 'X' 'CURR' 'X'. FLD '31' 'IT_DETAIL' 'TRWT' 'Tare Wt.' '40' 'X' 'CURR' 'X'. FLD '32' 'IT_DETAIL' 'NTWT' 'Net Wt. ' '40' 'X' 'CURR' 'X'. FLD '33' 'IT_DETAIL' 'WTUNIT' 'Unit Wt.' 1' '40' '' 'CHAR' ''. FLD '34' 'IT_DETAIL' 'REM' 'Remarks' 1' '40' '' 'CHAR' ''. FLD '35' 'IT_DETAIL' 'LRNO' 'LR. No.' 11' '40' '' 'CHAR' ''. FLD '36' 'IT_DETAIL' 'LRDT' 'Date' '40' '' '' ''. FLD '37' 'IT_DETAIL' 'TRNAME' 'Transporter' 1' '40' '' 'CHAR' ''. FLD '38' 'IT_DETAIL' 'MENGE' 'Qty.'
'C711' '40' 'C711' '40' 'C711' '40' 'C711' '40' ' 'C71 'C711' 'C711' 'C7 'C111' 'C111' 'C111' 'C71 'C71 'C7 'C711' 'C71 'C111' '40'
'X' 'CURR' 'X'. FLD '39' 'IT_DETAIL' 'SHKZG' 'D/C' 0' 'X' 'CHAR' ''. FLD '40' 'IT_DETAIL' 'CHARG' 'Batch' '' 'CHAR' ''. FLD '41' 'IT_DETAIL' 'HSDAT' 'MFG.Dt.' '' '' ''. FLD '42' 'IT_DETAIL' 'MRP_RATE' 'MRP. Rate' ' '40' 'X' 'CURR' ''. FLD '43' 'IT_DETAIL' 'WGBEZ' 'Matl. Group' ' '40' 'X' 'CURR' ''. FLD '44' 'IT_DETAIL' 'BASIC' 'Basic Amt.' 'X' 'CURR' 'X'. FLD '45' 'IT_DETAIL' 'PACKING' 'Pack.& Forward' 0' 'X' 'CURR' ''. FLD '46' 'IT_DETAIL' 'DISC' 'Discount' 1' '40' 'X' 'CURR' ''. FLD '47' 'IT_DETAIL' 'EXCISE' 'Excise' 0' 'X' 'CURR' 'X'. FLD '48' 'IT_DETAIL' 'EXCISE_P' '%' '40' 'X' 'CURR' ''. FLD '49' 'IT_DETAIL' 'CESS' 'Cess' 1' '40' 'X' 'CURR' 'X'. FLD '50' 'IT_DETAIL' 'CESS_P' '%' 0' 'X' 'CURR' ''. FLD '51' 'IT_DETAIL' 'SCESS' 'Sec.Cess' 'X' 'CURR' 'X'. FLD '52' 'IT_DETAIL' 'SCESS_P' '%' 0' 'X' 'CURR' ''. FLD '53' 'IT_DETAIL' 'CST' 'CST' '40' 'X' 'CURR' 'X'. FLD '54' 'IT_DETAIL' 'CST_P' '%' '40' 'X' 'CURR' ''. FLD '55' 'IT_DETAIL' 'LST' 'LST' '40' 'X' 'CURR' 'X'. FLD '56' 'IT_DETAIL' 'LST_P' '%' 'X' 'CURR' ''. FLD '57' 'IT_DETAIL' 'VAT' 'VAT' '40' 'X' 'CURR' 'X'. FLD '58' 'IT_DETAIL' 'VAT_P' '%' 'X' 'CURR' ''. FLD '59' 'IT_DETAIL' 'STAX' 'Service Tax' 1' '40' 'X' 'CURR' 'X'. FLD '60' 'IT_DETAIL' 'STAX_P' '%' 0' 'X' 'CURR' ''. FLD '61' 'IT_DETAIL' 'OTAX' 'Other Tax' 1' '40' 'X' 'CURR' 'X'. FLD '62' 'IT_DETAIL' 'OTAX_P' '%' '40' 'X' 'CURR' ''. FLD '63' 'IT_DETAIL' 'FREIGHT' 'Freight' '40' 'X' 'CURR' 'X'. FLD '64' 'IT_DETAIL' 'OTH_CHG' 'Other Charges' 0' 'X' 'CURR' 'X'. FLD '65' 'IT_DETAIL' 'R_OFF' 'Round Off' 'X' 'CURR' 'X'. FLD '66' 'IT_DETAIL' 'OTH_ADD' 'Other Add' 0' 'X' 'CURR' 'X'. FLD '67' 'IT_DETAIL' 'OTH_LESS' 'Other Less' '40' 'X' 'CURR' 'X'. FLD '68' 'IT_DETAIL' 'NETAMT' 'Net Amount'
'C711'
'4
'C711' '40' 'C711' '40' 'C711 'C711 'C711' '40' 'C711' '4 'C71 'C711' '4 'C711' 'C71 'C711' '4 'C711' '40' 'C711' '4 'C711' 'C711' 'C711' 'C711' '40' 'C711' 'C711' '40' 'C71 'C711' '4 'C71 'C711' 'C711' 'C711' '4 'C711' '40' 'C711' '4 'C711' 'C111' '4
0'
'X' 'CURR'
'X'.
ENDFORM. " make_catelog *&---------------------------------------------------------------------* *& Form make_catelog1 *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM make_catelog1. FLD1 '01' 'IT_SUMMARY' 'MATNR' 'Material' '40' 'X' 'CHAR' ''. FLD1 '02' 'IT_SUMMARY' 'MAKTX' 'Material Description' '40' '' 'CHAR' ''. FLD1 '03' 'IT_SUMMARY' 'WERKS' 'Recd. Plant' '40' '' 'CHAR' ''. FLD1 '04' 'IT_SUMMARY' 'NAME1' 'Plant Description' '40' '' 'CHAR' ''. FLD1 '05' 'IT_SUMMARY' 'LIFNR' 'Vendor' '40' '' 'CHAR' ''. FLD1 '06' 'IT_SUMMARY' 'NAME2' 'Vendor Description' '40' '' 'CHAR' ''. FLD1 '07' 'IT_SUMMARY' 'UMWRK' 'Supplying Plant' '40' '' 'CHAR' ''. FLD1 '08' 'IT_SUMMARY' 'SNAME' 'Plant Description' '40' '' 'CHAR' ''. FLD1 '09' 'IT_SUMMARY' 'MENGE' 'Qty.' '40' 'X' 'CURR' 'X'. FLD1 '10' 'IT_SUMMARY' 'BASIC' 'Basic Amt.' '40' 'X' 'CURR' 'X'. FLD1 '11' 'IT_SUMMARY' 'PACKING' 'Pack.& Forward' ' '40' 'X' 'CURR' ''. FLD1 '12' 'IT_SUMMARY' 'DISC' 'Discount' 'C711' '40' 'X' 'CURR' ''. FLD1 '13' 'IT_SUMMARY' 'EXCISE' 'Excise' ' '40' 'X' 'CURR' 'X'. FLD1 '14' 'IT_SUMMARY' 'CESS' 'Cess' 'C711' '40' 'X' 'CURR' 'X'. FLD1 '15' 'IT_SUMMARY' 'SCESS' 'Sec.Cess' '40' 'X' 'CURR' 'X'. FLD1 '16' 'IT_SUMMARY' 'CST' 'CST' 711' '40' 'X' 'CURR' 'X'. FLD1 '17' 'IT_SUMMARY' 'LST' 'LST' 711' '40' 'X' 'CURR' 'X'. FLD1 '18' 'IT_SUMMARY' 'VAT' 'VAT' 711' '40' 'X' 'CURR' 'X'. FLD1 '19' 'IT_SUMMARY' 'STAX' 'Service Tax' 'C711' '40' 'X' 'CURR' 'X'. FLD1 '20' 'IT_SUMMARY' 'OTAX' 'Other Tax' 'C711' '40' 'X' 'CURR' 'X'. FLD1 '21' 'IT_SUMMARY' 'FREIGHT' 'Freight' ' '40' 'X' 'CURR' 'X'. FLD1 '22' 'IT_SUMMARY' 'OTH_CHG' 'Other Charges' ' '40' 'X' 'CURR' 'X'. FLD1 '23' 'IT_SUMMARY' 'R_OFF' 'Round Off' '40' 'X' 'CURR' 'X'. FLD1 '24' 'IT_SUMMARY' 'OTH_ADD' 'Other Add' 'C411' 'C411' 'C411' 'C411' 'C411' 'C411' 'C311' 'C311' 'C111' 'C711' 'C711
'C711
' '40' 'X' 'CURR' 'X'. FLD1 '25' 'IT_SUMMARY' 'OTH_LESS' 'Other Less' 11' '40' 'X' 'CURR' 'X'. FLD1 '26' 'IT_SUMMARY' 'NETAMT' 'Net Amount' ' '40' 'X' 'CURR' 'X'. ENDFORM. " make_catelog1 *&---------------------------------------------------------------------* *& Form make_catelog2 *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM make_catelog2. FLD2 '01' 'IT_DETAIL' '' '' ''. FLD2 '02' 'IT_DETAIL' '' 'CHAR' ''. FLD2 '03' 'IT_DETAIL' 11' '40' 'X' 'CURR' FLD2 '04' 'IT_DETAIL' 0' '' 'CHAR' ''. FLD2 '05' 'IT_DETAIL' 0' 'X' 'CHAR' '' . FLD2 '06' 'IT_DETAIL' 0' '' 'CHAR' ''. FLD2 '07' 'IT_DETAIL' 0' '' 'CHAR' ''. FLD2 '08' 'IT_DETAIL' 0' '' 'CHAR' ''. FLD2 '09' 'IT_DETAIL' 0' '' 'CHAR' ''. FLD2 '10' 'IT_DETAIL' '40' '' 'CHAR' ''. FLD2 '11' 'IT_DETAIL' 0' '' 'CHAR' ''. FLD2 '12' 'IT_DETAIL' 0' '' 'CHAR' ''. FLD2 '13' 'IT_DETAIL' 0' '' 'CHAR' ''. FLD2 '14' 'IT_DETAIL' 0' '' '' ''. 0' 0' 0' 'BUDAT' 'Posting Dt.' 'MBLNR' 'Matl. Doc. No.' 'ZEILE' 'Line ID' ''. 'BSART' 'Type' 'MATNR' 'Material' 'MAKTX' 'Material Description' 'WERKS' 'Recd. Plant' 'NAME1' 'Plant Description' 'LIFNR' 'Vendor' 'NAME2' 'Vendor Description' 'UMWRK' 'Supplying Plant' 'SNAME' 'Plant Description' 'EBELN' 'Pur.Order No.' 'BEDAT' 'PO. Date'
'C7 'C111
'C411' '4 'C411' '40' 'C4 'C311' '4 'C411' '4 'C411' '4 'C411' '4 'C411' '4 'C411' '4 'C411' 'C311' '4 'C311' '4 'C311' '4 'C311' '4 'C311' '4 'C311' '4 'C311' '4 'C211' '4 'C711' '40' 'C711' '40' 'C711' '4
FLD2 '15' 'IT_DETAIL' 'EINDT' 'Deli. Date' '' '' ''. 'EKORG' 'Pur.Org' 'EKGRP' 'Pur.Group' 'MWSKZ' 'Tax' 'VBELV' 'Deli. Note No.' 'VBELN' 'Proforma Inv. No.' 'FKDAT' 'Date'
FLD2 '16' 'IT_DETAIL' '' 'CHAR' ''. FLD2 '17' 'IT_DETAIL' 0' '' 'CHAR' ''. FLD2 '18' 'IT_DETAIL' 0' '' 'CHAR' ''. FLD2 '19' 'IT_DETAIL' '' 'CHAR' ''. FLD2 '20' 'IT_DETAIL' '' 'CHAR' ''. FLD2 '21' 'IT_DETAIL'
0'
'' '' ''. FLD2 '22' 'IT_DETAIL' 'BELNR' 'Invoice No.' '' 'CHAR' ''. FLD2 '23' 'IT_DETAIL' 'BLDAT' 'Inv. Date' 0' '' '' ''. FLD2 '24' 'IT_DETAIL' 'XBLNR' 'Ref. Doc. No.' '' 'CHAR' ''. FLD2 '25' 'IT_DETAIL' 'FRBNR' 'Bill of Lading' 0' '' 'CHAR' ''. FLD2 '26' 'IT_DETAIL' 'BKTXT' 'Header Text' '' 'CHAR' ''. FLD2 '27' 'IT_DETAIL' 'GTNO' 'Gate Pass Entry No.' 711' '40' '' 'CHAR' ''. FLD2 '28' 'IT_DETAIL' 'GTDT' 'Date' ' '40' '' '' ''. FLD2 '29' 'IT_DETAIL' 'PERMIT' 'Permit No.' '40' '' 'CHAR' ''. FLD2 '30' 'IT_DETAIL' 'TRNO' 'Truck No.' C711' '40' '' 'CHAR' ''. FLD2 '31' 'IT_DETAIL' 'GRWT' 'Gross Wt.' 1' '40' 'X' 'CURR' 'X'. FLD2 '32' 'IT_DETAIL' 'TRWT' 'Tare Wt.' 1' '40' 'X' 'CURR' 'X'. FLD2 '33' 'IT_DETAIL' 'NTWT' 'Net Wt. ' 1' '40' 'X' 'CURR' 'X'. FLD2 '34' 'IT_DETAIL' 'WTUNIT' 'Unit Wt.' 711' '40' '' 'CHAR' ''. FLD2 '35' 'IT_DETAIL' 'REM' 'Remarks' 711' '40' '' 'CHAR' ''. FLD2 '36' 'IT_DETAIL' 'LRNO' 'LR. No.' C711' '40' '' 'CHAR' ''. FLD2 '37' 'IT_DETAIL' 'LRDT' 'Date' 1' '40' '' '' ''. FLD2 '38' 'IT_DETAIL' 'TRNAME' 'Transporter' 711' '40' '' 'CHAR' ''. FLD2 '39' 'IT_DETAIL' 'MENGE' 'Qty.' 0' 'X' 'CURR' 'X'. FLD2 '40' 'IT_DETAIL' 'SHKZG' 'D/C' '40' 'X' 'CHAR' ''. FLD2 '41' 'IT_DETAIL' 'CHARG' 'Batch' 0' '' 'CHAR' ''. FLD2 '42' 'IT_DETAIL' 'HSDAT' 'MFG.Dt.' 0' '' '' ''. FLD2 '43' 'IT_DETAIL' 'MRP_RATE' 'MRP. Rate' 11' '40' 'X' 'CURR' ''. FLD2 '44' 'IT_DETAIL' 'WGBEZ' 'Matl. Group' 11' '40' 'X' 'CURR' ''. FLD2 '45' 'IT_DETAIL' 'BASIC' 'Basic Amt.' 0' 'X' 'CURR' 'X'. FLD2 '46' 'IT_DETAIL' 'PACKING' 'Pack.& Forward' '40' 'X' 'CURR' ''. FLD2 '47' 'IT_DETAIL' 'DISC' 'Discount' 711' '40' 'X' 'CURR' ''. FLD2 '48' 'IT_DETAIL' 'EXCISE' 'Excise' '40' 'X' 'CURR' 'X'. FLD2 '49' 'IT_DETAIL' 'EXCISE_P' '%' ' '40' 'X' 'CURR' ''. FLD2 '50' 'IT_DETAIL' 'CESS' 'Cess' 711' '40' 'X' 'CURR' 'X'. FLD2 '51' 'IT_DETAIL' 'CESS_P' '%'
'C711' '40' 'C711' '4 'C711' '40' 'C711' '4 'C711' '40' 'C 'C711 'C711' ' 'C11 'C11 'C11 'C 'C ' 'C71 'C 'C111' '4 'C711' 'C711' '4 'C711' '4 'C7 'C7 'C711' '4 'C711' 'C 'C711' 'C711 'C 'C711'
'40' 'X' 'CURR' ''. FLD2 '52' 'IT_DETAIL' 'SCESS' 'Sec.Cess' 0' 'X' 'CURR' 'X'. FLD2 '53' 'IT_DETAIL' 'SCESS_P' '%' '40' 'X' 'CURR' ''. FLD2 '54' 'IT_DETAIL' 'CST' 'CST' 1' '40' 'X' 'CURR' 'X'. FLD2 '55' 'IT_DETAIL' 'CST_P' '%' '40' 'X' 'CURR' ''. FLD2 '56' 'IT_DETAIL' 'LST' 'LST' 1' '40' 'X' 'CURR' 'X'. FLD2 '57' 'IT_DETAIL' 'LST_P' '%' 0' 'X' 'CURR' ''. FLD2 '58' 'IT_DETAIL' 'VAT' 'VAT' 1' '40' 'X' 'CURR' 'X'. FLD2 '59' 'IT_DETAIL' 'VAT_P' '%' 0' 'X' 'CURR' ''. FLD2 '60' 'IT_DETAIL' 'STAX' 'Service Tax' 711' '40' 'X' 'CURR' 'X'. FLD2 '61' 'IT_DETAIL' 'STAX_P' '%' '40' 'X' 'CURR' ''. FLD2 '62' 'IT_DETAIL' 'OTAX' 'Other Tax' 711' '40' 'X' 'CURR' 'X'. FLD2 '63' 'IT_DETAIL' 'OTAX_P' '%' '40' 'X' 'CURR' ''. FLD2 '64' 'IT_DETAIL' 'FREIGHT' 'Freight' '40' 'X' 'CURR' 'X'. FLD2 '65' 'IT_DETAIL' 'OTH_CHG' 'Other Charges' '40' 'X' 'CURR' 'X'. FLD2 '66' 'IT_DETAIL' 'R_OFF' 'Round Off' 0' 'X' 'CURR' 'X'. FLD2 '67' 'IT_DETAIL' 'OTH_ADD' 'Other Add' '40' 'X' 'CURR' 'X'. FLD2 '68' 'IT_DETAIL' 'OTH_LESS' 'Other Less' ' '40' 'X' 'CURR' 'X'. FLD2 '69' 'IT_DETAIL' 'NETAMT' 'Net Amount' '40' 'X' 'CURR' 'X'. 0' FLD2 '70' 'IT_DETAIL' 'LGORT' 'Storage Loc.' '' 'CHAR' ''. FLD2 '71' 'IT_DETAIL' 'UOM' 'UOM' '' 'CURR' ''. " make_catelog2
'C711' '4 'C711' 'C71 'C711' 'C71 'C711' '4 'C71 'C711' '4 'C 'C711' 'C 'C711' 'C711' 'C711' 'C711' '4 'C711' 'C711 'C111' 'C311' '4 'C111' '40'
ENDFORM.
*&---------------------------------------------------------------------* *& Form make_catelog5 *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM make_catelog5. FLD5 'C411' FLD5 '40' FLD5 '01' 'IT_TERMSUM' '40' '' 'CURR' '02' 'IT_TERMSUM' '' 'CHAR' ''. '03' 'IT_TERMSUM' 'CTR' ''. 'A_L' 'Srl.' 'Type' 'Tax Type' 'C311' 'C5
'TAXTEXT'
11' '40' '' 'CHAR' ''. FLD5 '03' 'IT_TERMSUM' 'TEXT' 'Particulars' ' '40' '' 'CHAR' ''. FLD5 '04' 'IT_TERMSUM' 'AMT' 'Amount' '40' 'X' 'CURR' ''. ENDFORM. " make_catelog5
'C711 'C111'
*&---------------------------------------------------------------------* *& Form make_grid *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM make_grid . LS_LAYOUT-COLWIDTH_OPTIMIZE = 'X'. LS_LAYOUT-ZEBRA = 'X'. LS_LAYOUT-info_fieldname = 'LINE_COLOR'. LS_LAYOUT-WINDOW_TITLEBAR = TITLE. CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING I_CALLBACK_PROGRAM = MTRL I_CALLBACK_PF_STATUS_SET = C_PF I_CALLBACK_USER_COMMAND = C_UCOM I_CALLBACK_TOP_OF_PAGE = C_TOP it_fieldcat = GT_FLD1 IS_LAYOUT = LS_LAYOUT it_sort = t_sort_info1 i_save = 'A' it_events = i_event TABLES t_outtab = IT_SUMMARY EXCEPTIONS program_error = 1 OTHERS = 2. IF sy-subrc <> 0. * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDIF. ENDFORM. " make_grid
*&---------------------------------------------------------------------* *& Form make_grid2 *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM make_grid2 . LS_LAYOUT-COLWIDTH_OPTIMIZE = 'X'. LS_LAYOUT-ZEBRA = 'X'. LS_LAYOUT-info_fieldname = 'LINE_COLOR'. TITLE1 = 'GRN Register - Detailed'.
LS_LAYOUT-WINDOW_TITLEBAR = TITLE1. IF PRINT = 'X' AND C_eMAIL = 'ZNEWMAIL'. PERFORM mail. ENDIF. CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING I_CALLBACK_PROGRAM = MTRL I_CALLBACK_PF_STATUS_SET = C_PF I_CALLBACK_USER_COMMAND = C_UCOM I_CALLBACK_TOP_OF_PAGE = C_TOP it_fieldcat = GT_FLD2 IS_LAYOUT = LS_LAYOUT it_sort = t_sort_info2 i_save = 'A' it_events = i_event TABLES t_outtab = IT_DETAIL EXCEPTIONS program_error = 1 OTHERS = 2. IF sy-subrc <> 0. * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDIF. ENDFORM. " make_grid2
*&---------------------------------------------------------------------* *& Form TOP_OF_PAGE *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM TOP_OF_PAGE. CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE' EXPORTING IT_LIST_COMMENTARY = LSTHDR I_LOGO = 'TRVPICTURE29' * I_END_OF_LIST_GRID = * I_ALV_FORM = . ENDFORM. "TOP_OF_PAGE *&---------------------------------------------------------------------* *& Form END_OF_PAGE *&---------------------------------------------------------------------* form END_OF_PAGE. data: listwidth type i, ld_pagepos(10) type c, ld_page(10) type c. write: sy-uline(50). skip. write:/40 'Page:', sy-pagno . endform. "END_OF_PAGE *&---------------------------------------------------------------------* *& Form END_OF_LIST *&---------------------------------------------------------------------*
form END_OF_LIST. data: listwidth type i, ld_pagepos(10) type c, ld_page(10) type c. skip. write:/40 'Page:', sy-pagno . endform. "END_OF_LIST *&---------------------------------------------------------------------* *& Form pf_status_set *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM PF_STATUS_SET USING RX_TAB TYPE SLIS_T_EXTAB.. SET PF-STATUS 'MAIN'. ENDFORM. "pf_status_set *&---------------------------------------------------------------------* *& Form user_command *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->R_UCOM text * -->RS_SELFIELD text *----------------------------------------------------------------------* FORM USER_COMMAND USING R_UCOM LIKE SY-UCOMM RS_SELFIELD TYPE SLIS_SELFIELD. CASE R_UCOM. WHEN '&IC1'. IF RS_SELFIELD-SEL_TAB_FIELD = 'IT_DETAIL-EBELN'. SET PARAMETER ID 'BES' FIELD RS_SELFIELD-VALUE. CALL TRANSACTION 'ME23N'. ELSEIF RS_SELFIELD-SEL_TAB_FIELD = 'IT_DETAIL-MBLNR'. READ TABLE IT_DETAIL INTO WA_DETAIL INDEX RS_SELFIELD-TABINDEX. SET PARAMETER ID 'MBN' FIELD WA_DETAIL-MBLNR. SET PARAMETER ID 'MJA' FIELD WA_DETAIL-MJAHR. CALL TRANSACTION 'MB03' AND SKIP FIRST SCREEN. ELSEIF RS_SELFIELD-SEL_TAB_FIELD = 'IT_SUMMARY-MATNR'. TITLE1 = 'GRN Register - Detailed'. LS_LAYOUT-WINDOW_TITLEBAR = TITLE1. READ TABLE IT_SUMMARY INTO WA_SUMMARY INDEX RS_SELFIELD-TABINDEX. CLEAR IT_DETAIL[]. REFRESH IT_DETAIL[]. IT_DETAIL[] = IT_MSEG[]. DELETE IT_DETAIL[] WHERE MATNR NE WA_SUMMARY-MATNR. CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING I_CALLBACK_PROGRAM = MTRL I_CALLBACK_PF_STATUS_SET = C_PF I_CALLBACK_USER_COMMAND = C_UCOM I_CALLBACK_TOP_OF_PAGE = C_TOP it_fieldcat = GT_FLD IS_LAYOUT = LS_LAYOUT it_sort = t_sort_info i_save = 'A' it_events = i_event
= IT_DETAIL = 1 = 2.
TITLE1 = 'GRN Register - Billing Terms Summary'. LS_LAYOUT-WINDOW_TITLEBAR = TITLE1. CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING I_CALLBACK_PROGRAM = MTRL I_CALLBACK_PF_STATUS_SET = C_PF I_CALLBACK_USER_COMMAND = C_UCOM I_CALLBACK_TOP_OF_PAGE = C_TOP it_fieldcat = GT_FLD5 IS_LAYOUT = LS_LAYOUT it_sort = t_sort_info5 i_save = 'A' it_events = i_event TABLES t_outtab = IT_TERMSUM EXCEPTIONS program_error = 1 OTHERS = 2. WHEN 'NEWCALL'. IF I_MIS = 'X'. TITLE1 = 'GRN Register - Detailed'. LS_LAYOUT-WINDOW_TITLEBAR = TITLE1. CLEAR IT_DETAIL[]. REFRESH IT_DETAIL[]. IT_DETAIL[] = IT_MSEG[]. CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING I_CALLBACK_PROGRAM = MTRL I_CALLBACK_PF_STATUS_SET = C_PF I_CALLBACK_USER_COMMAND = C_UCOM I_CALLBACK_TOP_OF_PAGE = C_TOP it_fieldcat = GT_FLD IS_LAYOUT = LS_LAYOUT it_sort = t_sort_info i_save = 'A' it_events = i_event TABLES t_outtab = IT_DETAIL EXCEPTIONS program_error = 1 OTHERS = 2. ENDIF.
WHEN 'BACK'. SY-LSIND = SY-LSIND - 1. ENDCASE. ENDFORM. "user_commandk *&---------------------------------------------------------------------* *& Form MAIL *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM MAIL . data : abmenge(15) type c, abuom(2) type c, abnetamt(20) TYPE C, abtrwt TYPE P DECIMALS 3, abntwt TY PE P DECIMALS 3, abbasic(20) TYPE C, ABEXCISE_P(6) TYPE C, ABCESS_P(7) TYPE C, ABSCESS_P(7) TYPE C, ABCST_P(7) TYPE C, ABVAT_P(7) TYPE C, ABFREIGHT(20) TYPE C. . CONCATENATE 'Recd.Plant' 'PosT_Dt.' 'BillofLading' 'Date' 'GateEntry No.' 'Matl. Doc.' 'Vend_Desc' 'Material' 'Mat_Desc' 'QTY' 'UOM' 'Net AmT' 'Truck No.' ' LR. No.' 'Date' 'Transporter' 'Permit No.' 'Pur.Order No.' 'Tax' 'REMARKS' 'Basic Amt.' 'EXCISE_%' 'Cess_%' 'Sec.Cess_%' 'CST_%' 'VAT_%' 'Freight' INTO it_attach SEPARATED BY con_tab. CONCATENATE con_cret it_attach INTO it_attach. APPEND it_attach. LOOP AT IT_DETAIL INTO WA_DETAIL. abmenge = wa_detail-menge. abuom = wa_detail-uom. abtrwt = wa_detail-trwt. abntwt = wa_detail-ntwt. abbasic = wa_detail-basic. ABEXCISE_P = wa_detail-EXCISE_P. ABCESS_P = WA_DETAIL-CESS_P. ABSCESS_P = WA_DETAIL-SCESS_P. ABCST_P = WA_DETAIL-CST_P. ABVAT_P = WA_DETAIL-VAT_P. ABFREIGHT = WA_DETAIL-FREIGHT. abnetamt = wa_detail-netamt. CONCATENATE WA_DETAIL-WERKS WA_DETAIL-BUDAT WA_DETAIL-FRBNR WA_DETAIL-FKDAT WA_DETAIL-GTNO(10) WA_DETAIL-MBLNR WA_DETAIL-NAME2 WA_DETAIL-MATNR WA_DETAIL-MAKTX
abmenge abUOM abNETAMT WA_DETAIL-TRNO WA_DETAIL-LRNO WA_DETAIL-LRDT WA_DETAIL-TRNAME WA_DETAIL-PERMIT WA_DETAIL-EBELN WA_DETAIL-MWSKZ WA_DETAIL-REM(30) abBASIC ABEXCISE_P ABCESS_P ABSCESS_P ABCST_P ABVAT_P ABFREIGHT INTO it_attach SEPARATED BY con_tab. CONCATENATE con_cret it_attach INTO it_attach. APPEND it_attach. CLEAR : WA_DETAIL, abmenge, abuom, abtrwt, abnetamt, abBASIC, ABEXCISE_P, ABCESS_P, ABSCESS_P, ABCST_P, ABVAT_P, ABFREIGHT. ENDLOOP. DATA : wa_receivers LIKE LINE OF t_receivers. CLEAR: t_receivers[], wa_receivers. DATA : itab TYPE STANDARD TABLE OF zmail_sled, wa2 LIKE LINE OF itab. SELECT * FROM zmail_sled INTO CORRESPONDING FIELDS OF TABLE itab WHERE prog_na me = 'YGRN'. LOOP AT itab INTO wa2. TRANSLATE wa2-mail TO LOWER CASE. wa_receivers-receiver = wa2-mail. wa_receivers-express = 'X'. wa_receivers-rec_type = 'U'. APPEND wa_receivers TO t_receivers. CLEAR : wa_receivers, wa2. ENDLOOP. objtxt = 'Dear User,'. APPEND objtxt. CLEAR objtxt. APPEND objtxt. CONCATENATE 'Please find enclosed herewith the details of ' 'YGRN.' INTO objtx t SEPARATED BY space. " Mail Contents APPEND objtxt. CLEAR objtxt.
CLEAR objtxt. APPEND objtxt. CONCATENATE 'This is an auto-generated mail from SAP, which will be forwarded' 'to the concern person 'INTO objtxt SEPARATED BY space. " Mail Con tents APPEND objtxt. CLEAR objtxt. APPEND objtxt. objtxt = 'Thanks & Regards,'. APPEND objtxt. objtxt = 'SAP System'. APPEND objtxt. DATA: ld_error TYPE sy-subrc, ld_reciever TYPE sy-subrc, ld_mtitle LIKE sodocchgi1-obj_descr, ld_email LIKE somlreci1-receiver, ld_format TYPE so_obj_tp , ld_attdescription TYPE so_obj_nam , ld_attfilename TYPE so_obj_des , ld_sender_address LIKE soextreci1-receiver, ld_sender_address_type LIKE soextreci1-adr_typ, ld_receiver LIKE sy-subrc. ld_format ld_attfilename = 'XLS'. = 'YGRN'.
* Fill the document data. w_doc_data-doc_size = 1. * Populate the subject/generic message attributes w_doc_data-obj_langu = sy-langu. w_doc_data-obj_name = 'SAPRPT'. w_doc_data-obj_descr = 'send' . w_doc_data-sensitivty = 'F'. * Fill the document data and get size of attachment CLEAR w_doc_data. READ TABLE it_attach INDEX w_cnt. w_doc_data-doc_size = ( w_cnt - 1 ) * 255 + STRLEN( it_attach ). w_doc_data-obj_langu = sy-langu. w_doc_data-obj_name = 'SAPRPT'. w_doc_data-obj_descr = 'YGRN'. w_doc_data-sensitivty = 'F'. CLEAR t_attachment. REFRESH t_attachment. t_attachment[] = it_attach[]. DESCRIBE TABLE objtxt LINES tab_lines. READ TABLE objtxt INDEX tab_lines. doc_chng-doc_size = ( tab_lines - 1 ) * 255 + STRLEN( objtxt ). * Packing List For the E-mail Body objpack-head_start = 1.
= = = =
0. 1. tab_lines. 'RAW'.
* Creation of the Document Attachment ** LOOP AT l_xml_table INTO wa_xml. ** CLEAR objbin. ** objbin-line = wa_xml-data. ** APPEND objbin. ** ENDLOOP. ** DESCRIBE TABLE t_attachment LINES tab_lines. ** objhead = 'SAP Login Details'. ** APPEND objhead. * Packing List For the E-mail Attachment objpack-transf_bin = 'X'. objpack-head_start = 1. objpack-head_num = 0. objpack-body_start = 1. objpack-body_num = tab_lines. CONCATENATE 'ygrn' sy-datum INTO objpack-obj_descr SEPARATED BY space. objpack-doc_type = 'XLS'. objpack-doc_size = tab_lines * 255. APPEND objpack. CALL FUNCTION 'SO_DOCUMENT_SEND_API1' EXPORTING document_data = w_doc_data put_in_outbox = 'X' commit_work = 'X' TABLES packing_list = objpack contents_bin = t_attachment contents_txt = objtxt receivers = t_receivers EXCEPTIONS too_many_receivers = 1 document_not_sent = 2 document_type_not_exist = 3 operation_no_authorization = 4 parameter_error = 5 x_error = 6 enqueue_error = 7 OTHERS = 8. ENDFORM. " MAIL