Sie sind auf Seite 1von 11

FUNCTION z_o_notafiscal.

*"---------------------------------------------------------------------*"*"Local Interface: *" IMPORTING *" VALUE(MBLNR) TYPE MBLNR *" EXPORTING *" VALUE(E_DOCNUM) TYPE BAPI_J_1BNFDOC-DOCNUM *" REFERENCE(T_RET) TYPE BAPIRET2_TT *"---------------------------------------------------------------------DATA gv_vbtyp_n TYPE vbtyp_n. DATA gv_vbtyp_v TYPE vbtyp_v. DATA gv_vbelv TYPE vbeln. gv_mblnr = mblnr. SELECT details b~mblnr b~mjahr b~zeile t b~matnr b~charg b~ebeln b~ebelp g Document a~xblnr r INTO TABLE gt_matdoc FROM mkpf AS a INNER JOIN mseg AS b ON a~mblnr = b~mblnr WHERE a~mblnr = mblnr. IF sy-subrc = 0. "If records found SELECT vbeln vstel vkorg inco1 kunnr werks nt header details FROM likp INTO TABLE gt_delhead FOR ALL ENTRIES IN gt_matdoc WHERE vbeln = gt_matdoc-xblnr. SELECT vbeln posnr matnr matkl werks item details ntgew brgew gewei vgbel vgpos j_1bcfop FROM lips INTO TABLE gt_delitm FOR ALL ENTRIES IN gt_matdoc WHERE vbeln = gt_matdoc-xblnr. IF sy-subrc EQ 0. READ TABLE gt_delitm INTO gs_delitm INDEX 1. SELECT vbelv vbtyp_v vbtyp_n UP TO 1 ROWS ent with type FROM vbfa INTO (gv_vbelv, gv_vbtyp_v, gv_vbtyp_n) WHERE vbeln = gs_delitm-vgbel. ENDSELECT. IF sy-subrc = 0 AND gv_vbtyp_n = 'C'. t is SO SELECT vbeln auart vkorg vtweg r details spart gsber bukrs_vf zuonr "Retrieve Delivery docume "Reference Document Numbe "Material Number "Batch Number "Purchase Order Number "Item Number of Purchasin "Select Material Document "Material Document Number "Material Document Year "Item in Material Documen

"Select Delivery document

"If records found "Read first record "Retrieve preceding docum

"If the reference documen "Select Sales Order heade

FROM vbak INTO TABLE gt_salhead FOR ALL ENTRIES IN gt_delitm WHERE vbeln = gt_delitm-vgbel. ELSEIF gv_vbtyp_v = 'C'. t is SO SELECT vbeln auart vkorg vtweg r details spart gsber bukrs_vf zuonr FROM vbak INTO TABLE gt_salhead WHERE vbeln = gv_vbelv. ENDIF. IF gt_salhead IS NOT INITIAL. SELECT * FROM ztocfg1 table ZTOCFG1 INTO TABLE gt_ztocfg1 WHERE itmnm = gc_obc AND itefg = abap_true. LOOP AT gt_salhead INTO gs_salhead. CLEAR : gs_fm_ret, gt_fm_ret. PERFORM check_sales_area. ntained in Z config table gs_nfcheck-chekcon = abap_true. IF gv_flag = abap_true. ntained)

"If the preceding documen "Select Sales Order heade

"If records found "Select data from Config

"For each Sales order "Clear return values "Check if sales area mai "NF check "If flag set(Sales area mai

* * *

CALL FUNCTION 'BAPI_J_1B_NF_CREATEFROMDATA' "Create Nota fiscal EXPORTING obj_header = obj_header nfcheck = gs_nfcheck IMPORTING e_docnum = e_docnum TABLES obj_partner = obj_partner obj_item = obj_item obj_item_add = obj_item_add obj_item_tax = obj_item_tax obj_header_msg = obj_header_msg obj_refer_msg = obj_refer_msg obj_ot_partner = obj_ot_partner return = t_return. CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'. ENDIF. LOOP AT gt_fm_ret INTO gs_fm_ret. APPEND gs_fm_ret TO t_ret. ENDLOOP. LOOP AT t_return INTO gs_fm_ret. APPEND gs_fm_ret TO t_ret. ENDLOOP. ENDLOOP. ENDIF. ENDIF. ENDIF. "BAPI commit "Fill errors

"Fill BAPI errors

ENDFUNCTION. *&---------------------------------------------------------------------* *& Form check_sales_area *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM check_sales_area. CLEAR gv_flag. "Flag to check if sal es area maintained READ TABLE gt_ztocfg1 config table INTO gs_ztocfg1 WITH KEY ittnm = gc_vkorg itvnm = gs_salhead-vkorg. IF sy-subrc = 0. READ TABLE gt_ztocfg1 n Channel in config table INTO gs_ztocfg1 WITH KEY ittnm = gc_vtweg itvnm = gs_salhead-vtweg. IF sy-subrc = 0. READ TABLE gt_ztocfg1 config table INTO gs_ztocfg1 WITH KEY ittnm = gc_spart itvnm = gs_salhead-spart. IF sy-subrc = 0. READ TABLE gt_ztocfg1 in config table INTO gs_ztocfg1 WITH KEY ittnm = gc_auart itvnm = gs_salhead-auart. IF sy-subrc = 0. gv_flag = abap_true. rea maintained SELECT * r item details FROM vbap INTO CORRESPONDING FIELDS OF TABLE gt_salitm WHERE vbeln = gs_salhead-vbeln. SELECT matnr scription maktx FROM makt INTO TABLE gt_makt FOR ALL ENTRIES IN gt_salitm WHERE matnr = gt_salitm-matnr. PERFORM fill_obj_header. for BAPI PERFORM fill_obj_item. r BAPI PERFORM fill_obj_item_tax. "Fill Item Tax Info. "Fill Item details fo "Fill Header details "Check if Sal. Org in

"If maintained "Check if Distributio

"If maintained "Check if Channel in

" If maintained " Check if Order Type

" If maintained " Set flas as sales a " Retrieve Sales Orde

"Retrieve material de

for BAPI PERFORM fill_obj_partner. for BAPI ELSE. CONCATENATE text-001 maintained in config table gs_salhead-auart text-002 INTO gs_fm_ret-message SEPARATED BY space. APPEND gs_fm_ret TO gt_fm_ret. ENDIF. ELSE. CONCATENATE text-003 ned in config table gs_salhead-spart text-002 INTO gs_fm_ret-message SEPARATED BY space. APPEND gs_fm_ret TO gt_fm_ret. ENDIF. ELSE. CONCATENATE text-005 not maintained in config table gs_salhead-vtweg text-002 INTO gs_fm_ret-message SEPARATED BY space. APPEND gs_fm_ret TO gt_fm_ret. ENDIF. ELSE. CONCATENATE text-004 ained in config table gs_salhead-vkorg text-002 INTO gs_fm_ret-message SEPARATED BY space. APPEND gs_fm_ret TO gt_fm_ret. ENDIF. ENDFORM. "check_sales_area "Fill partner details "Sales Order type not

"Division not maintai

"Distribution Channel

"Sales Org. not maint

*&---------------------------------------------------------------------* *& Form fill_obj_header *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM fill_obj_header. obj_header-nfe = abap_true. ta Fiscal "Electronic No

SELECT * UP TO 1 ROWS INTO gs_ztocfg1 FROM ztocfg1 "Nota Fiscal T ype WHERE itmnm = gc_obc AND ittnm = gc_nftype AND itefg = abap_true. IF sy-subrc = 0. obj_header-nftype = gs_ztocfg1-itvnm. SELECT SINGLE * FROM j_1baa INTO gs_j_1baa "NF details WHERE nftype = obj_header-nftype.

IF sy-subrc = 0. obj_header-model obj_header-direct the movement obj_header-form obj_header-doctyp ENDIF. ENDIF. ENDSELECT.

= gs_j_1baa-model. = gs_j_1baa-direct. = gs_j_1baa-form. = gs_j_1baa-doctyp.

"NF Model "Direction of "Form "Document type

READ TABLE gt_salitm INTO gs_salitm INDEX 1. IF sy-subrc = 0. obj_header-waerk = gs_salitm-waerk. ENDIF. READ TABLE gt_delhead INTO gs_delhead INDEX 1. IF sy-subrc = 0. obj_header-parid = gs_delhead-kunnr. SELECT SINGLE * FROM tvko INTO gs_tvko WHERE vkorg = gs_delhead-vkorg. IF sy-subrc = 0. obj_header-bukrs = gs_tvko-bukrs. ENDIF. READ TABLE gt_delitm INTO gs_delitm WITH KEY vbeln = gs_delhead-vbeln. SELECT SINGLE * FROM t001w INTO gs_t001w WHERE werks = gs_delitm-werks. IF sy-subrc = 0. obj_header-branch = gs_t001w-j_1bbranch. e ENDIF. ENDIF. obj_header-docstat = space. us SELECT * UP TO 1 ROWS INTO gs_ztocfg1 FROM ztocfg1 WHERE itmnm = gc_obc AND ittnm = gc_parvw AND itefg = abap_true. ENDSELECT. IF sy-subrc = 0. obj_header-parvw = gs_ztocfg1-itvnm. tion SELECT SINGLE partyp INTO gv_partyp artner type from table j_1bad FROM j_1bad WHERE parvw = obj_header-parvw. IF sy-subrc EQ 0. obj_header-partyp = gv_partyp. CLEAR gv_partyp. ENDIF. ENDIF. READ TABLE gt_salhead INTO gs_salhead INDEX 1. IF sy-subrc = 0.

"Currency

"Partner ID

"Company code

"Business Plac

"Document Stat

"NF Partner Func "Selecting p "Partner type

obj_header-docnum = gs_salhead-zuonr. SELECT SINGLE * FROM j_1bb2 INTO gs_j_1bb2 WHERE bukrs = gs_salhead-bukrs_vf AND branch = obj_header-branch AND form = obj_header-form. IF sy-subrc = 0. obj_header-series = gs_j_1bb2-series. ENDIF. ENDIF. obj_header-docdat = sy-datum. obj_header-pstdat = sy-datum. READ TABLE gt_matdoc INTO gs_matdoc INDEX 1. IF sy-subrc = 0. READ TABLE gt_delhead INTO gs_delhead WITH KEY vbeln = gs_matdoc-xblnr. IF sy-subrc = 0. obj_header-inco1 = gs_delhead-inco1. obj_header-vstel = gs_delhead-vstel. t ENDIF. ENDIF. LOOP AT gt_delitm INTO gs_delitm. obj_header-ntgew = obj_header-ntgew + gs_delitm-ntgew. obj_header-brgew = obj_header-brgew + gs_delitm-brgew. obj_header-gewei = obj_header-gewei. ENDLOOP. ENDFORM. "fill_obj_header "Net weight "Gross Weight "Unit

"Series

"Document Date "Posting Date

"Incoterms "Shipping poin

*&---------------------------------------------------------------------* *& Form fill_obj_item *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM fill_obj_item. LOOP AT gt_ztocfg1 INTO gs_ztocfg1 WHERE ittnm = 'PSTYV'. gs_pstyv-sign = 'I'. gs_pstyv-option = 'EQ'. gs_pstyv-low = gs_ztocfg1-itvnm. APPEND gs_pstyv TO r_pstyv. ENDLOOP. SELECT matnr werks steuc FROM marc INTO TABLE gt_marc FOR ALL ENTRIES IN gt_delitm WHERE matnr = gt_delitm-matnr. LOOP AT gt_delitm INTO gs_delitm. item READ TABLE gt_salitm INTO gs_salitm WITH KEY vbeln = gs_delitm-vgbel posnr = gs_delitm-vgpos. IF sy-subrc = 0. READ TABLE gt_salhead INTO gs_salhead INDEX 1. " For Each

IF sy-subrc = 0. SELECT SINGLE * FROM j_1bsdica INTO gs_j_1bsdica WHERE auart = gs_salhead-auart AND pstyv IN r_pstyv. IF sy-subrc = 0. gs_obj_item-itmtyp = gs_j_1bsdica-itmtyp. cal Item Type ENDIF. ENDIF. gs_obj_item-docnum = gs_salitm-vgbel. nt Number gs_obj_item-itmnum = gs_delitm-posnr. umber gs_obj_item-matnr = gs_salitm-matnr. al Number gs_obj_item-werks = gs_salitm-werks. gs_obj_item-menge = gs_salitm-kwmeng. ty gs_obj_item-bwtar = gs_salitm-bwtar. ion Type gs_obj_item-meins = gs_salitm-meins. ty gs_obj_item-netpr = gs_salitm-netpr. gs_obj_item-netwr = gs_salitm-netwr. gs_obj_item-cfop = gs_salitm-j_1bcfop. gs_obj_item-cfop_10 = gs_salitm-j_1bcfop. gs_obj_item-taxlw1 = gs_salitm-j_1btaxlw1. ext gs_obj_item-taxlw2 = gs_salitm-j_1btaxlw2. xt gs_obj_item-taxlw4 = gs_salitm-j_1btaxlw4. fins gs_obj_item-taxlw5 = gs_salitm-j_1btaxlw5. S gs_obj_item-netdis = space. nt * ls_obj_item-netoth = to be filled manually over ZODL * ls_obj_item-charg = gs_obj_item-reftyp = gc_reftyp. nce type gs_obj_item-matkl = gs_delitm-matkl. SELECT SINGLE knumv INTO gv_knumv FROM vbak WHERE vbeln = gs_salitm-vbeln. IF sy-subrc EQ 0. CLEAR gt_tax. SELECT kbetr kwert kschl FROM konv INTO TABLE gt_tax WHERE knumv = gv_knumv AND kposn = gs_delitm-vgpos. IF sy-subrc = 0.

" Nota Fis

" Docume " Item N " Materi " Plant " Quanti " Valuat " Quanti " Price " Price " CFOP " ICMS T " IPI Te " Law Co " Law PI " Discou " Expenses " Batch " Refere

"#EC NEEDED

READ TABLE gt_tax INTO gs_tax WITH KEY kschl = 'KF00'. IF sy-subrc = 0. gs_obj_item-netfre = gs_tax-kbetr. ENDIF.

"Freight

READ TABLE gt_tax INTO gs_tax WITH KEY kschl = 'ZINS'. IF sy-subrc = 0. gs_obj_item-netins = gs_tax-kbetr. ce ENDIF. ENDIF. ENDIF. IF gv_mblnr IS NOT INITIAL. gs_obj_item-refkey = gv_mblnr. l Document Reference ENDIF.

"Insuran

" Materia

SELECT SINGLE bwkey FROM t001w " Fetchi ng Valuation Area INTO gv_bwkey " from t 001w table based on plant (WERKS) WHERE werks = gs_salitm-werks. IF sy-subrc = 0. SELECT SINGLE mtuse mtorg INTO (gv_mtuse,gv_mtorg) FROM mbew "#EC NEEDED " Selecting Material usage WHERE matnr = gs_salitm-matnr AND " and ma terial origin from mbew bwkey = gv_bwkey AND " based on material number and valuation area bwtar = gs_salitm-bwtar. " valuat ion type gs_obj_item-matorg = gv_mtuse. " Materi al Origin gs_obj_item-matuse = gv_mtorg. " Materi al Usage ENDIF. READ TABLE gt_marc INTO gs_marc WITH KEY matnr = gs_salitm-matnr werks = gs_salitm-werks. IF sy-subrc = 0. gs_obj_item-nbm = gs_marc-steuc. "Control Code ENDIF. READ TABLE gt_makt INTO gs_makt WITH KEY matnr = gs_salitm-matnr. IF sy-subrc = 0. gs_obj_item-maktx = gs_makt-maktx. "Control Code ENDIF. SELECT SINGLE * FROM j_1batl1 INTO gs_j_1batl1 WHERE taxlaw = gs_salitm-j_1btaxlw1. IF sy-subrc = 0. gs_obj_item-taxsit = gs_j_1batl1-taxsit. tion ICMS ENDIF. SELECT SINGLE * FROM j_1batl2 INTO gs_j_1batl2 WHERE taxlaw = gs_salitm-j_1btaxlw2. IF sy-subrc = 0. gs_obj_item-taxsi2 = gs_j_1batl2-taxsitout. tion IPI ENDIF.

"Tax Situa

"Tax Situa

SELECT SINGLE * FROM j_1batl5 INTO gs_j_1batl5 WHERE taxlaw = gs_salitm-j_1btaxlw5. IF sy-subrc = 0. gs_obj_item-taxsi5 = gs_j_1batl5-taxsitout. tion PIS ENDIF. SELECT SINGLE * FROM j_1batl4a INTO gs_j_1batl4a WHERE taxlaw = gs_salitm-j_1btaxlw4. IF sy-subrc = 0. gs_obj_item-taxsi4 = gs_j_1batl4a-taxsitout. tion COFINS ENDIF. APPEND gs_obj_item TO obj_item. ENDIF. ENDLOOP. ENDFORM. "fill_obj_item

"Tax Situa

"Tax Situa

*&---------------------------------------------------------------------* *& Form fill_obj_item_tax *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM fill_obj_item_tax. LOOP AT gt_delitm INTO gs_delitm. READ TABLE gt_salitm INTO gs_salitm WITH KEY vbeln = gs_delitm-vgbel posnr = gs_delitm-vgpos. IF sy-subrc = 0. gs_obj_item_tax-itmnum = gs_delitm-posnr. "Document Item Number gs_obj_item_tax-taxtyp = gc_icm3. "Tax Type SELECT SINGLE knumv INTO gv_knumv FROM vbak WHERE vbeln = gs_salitm-vbeln. IF sy-subrc EQ 0. CLEAR gt_tax. SELECT kbetr kwert kschl FROM konv INTO TABLE gt_tax WHERE knumv = gv_knumv AND kposn = gs_salitm-posnr. IF sy-subrc = 0. CALL FUNCTION 'CONVERSION_EXIT_PARVW_INPUT' EXPORTING input = gv_parvw IMPORTING output = gv_parvw. SELECT kunnr UP TO 1 ROWS FROM vbpa INTO gv_kunnr WHERE vbeln = gs_salitm-vbeln AND parvw = gv_parvw. ENDSELECT. IF sy-subrc = 0. "#EC NEEDED

SELECT SINGLE land1 FROM kna1 INTO gv_land1 WHERE kunnr = gv_kunnr. IF sy-subrc = 0 AND gv_land1 = 'BR'. READ TABLE gt_tax INTO gs_tax WITH KEY kschl = 'BX10'. IF sy-subrc = 0. gs_obj_item_tax-base = gs_tax-kwert. "Base Amount

ENDIF. ENDIF. ENDIF. READ TABLE gt_tax INTO gs_tax WITH KEY kschl = 'BX13'. IF sy-subrc = 0. gs_obj_item_tax-taxval ENDIF. = gs_tax-kwert. "Tax Value

READ TABLE gt_tax INTO gs_tax WITH KEY kschl = 'BX11'. IF sy-subrc = 0. gs_obj_item_tax-excbas ENDIF. = gs_tax-kwert. "Excluded base

READ TABLE gt_tax INTO gs_tax WITH KEY kschl = 'BX12'. IF sy-subrc = 0. gs_obj_item_tax-othbas ENDIF. ENDIF. ENDIF. * ls_obj_item_tax-withhold = APPEND gs_obj_item_tax TO obj_item_tax. CLEAR gs_obj_item_tax. gs_obj_item_tax-itmnum = gs_delitm-posnr. gs_obj_item_tax-taxtyp = gc_ipi3. APPEND gs_obj_item_tax TO obj_item_tax. ENDIF. ENDLOOP. ENDFORM. "fill_obj_item_tax = gs_tax-kwert. "Other Base

"With Indicator

"Document Item Number "Tax Type

*&---------------------------------------------------------------------* *& Form fill_obj_partner *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM fill_obj_partner. CLEAR gs_ztocfg1. gs_obj_partner-docnum = obj_header-docnum. SELECT * UP TO 1 ROWS INTO gs_ztocfg1 FROM ztocfg1 WHERE itmnm = gc_obc AND ittnm = gc_parvw AND itefg = abap_true. IF sy-subrc = 0. gs_obj_partner-parvw = gs_ztocfg1-itvnm. "NF Partner Fun ction

gs_obj_ot_partner-parvw = gs_ztocfg1-itvnm. ction ENDIF. ENDSELECT. gs_obj_partner-parid = obj_header-parid. SELECT SINGLE partyp er type from table j_1bad INTO gv_partyp FROM j_1bad WHERE parvw = obj_header-parvw. IF sy-subrc EQ 0. gs_obj_partner-partyp = gv_partyp. CLEAR gv_partyp. ENDIF. APPEND gs_obj_partner TO obj_partner. APPEND gs_obj_ot_partner TO obj_ot_partner. ENDFORM. "fill_obj_partner

"NF Partner Fun

"Partner ID "Retrieve partn

"Partner Type

Das könnte Ihnen auch gefallen