SAP SD SOPORTE VENTAS
From SapWiki
Transacciones
VOFM, VOFN, VC/2
Documentación VOFM (http://saptechsolutions.com/pdf/InsideVOFM.pdf)
Ejemplo Elemento en Sapscript
copiar sapscript SD-SALES-SUMMARY, ventana MAIN copiar rutina form 011 a 903 en vofn, categoria LST1
/E LST1_903 /* 011 sustituida por 903 en todas partes H2 Atraso en Pago,,,,: &v77komlst1-telement6(F*10R)&.- H2 Bloqueo (sí/no),,,,: &v77komlst1-telement5& L H <B>Condiciones</> H Condición de Pago:,,&v77komlst1-telement10& H Atraso promedio (días):,,&v77komlst1-telement9& H Seguro (sí/no):,,&v77komlst1-telement8& H Categoría de Riesgo:,,&v77komlst1-telement7& H H <B>Historial de ventas (M$)</> /E LST1_903_003 H2 Mes (-&v77komlst1-telement4&),,,,: &v77komlst1-telement1(F*10R)&.- /E LST1_903_004 H H2 Venta últimos 12 meses,,,,: &v77komlst1-telement1(F*10R)&.-
en RV77U903 ... ... ...
MOVE knvv-spart TO ls_rvkusta1_pay_del_terms-spart. APPEND ls_rvkusta1_pay_del_terms TO wa_rvkusta1_cust-pay_del_terms. ENDIF. ELSE. DATA ls_tvzbt TYPE tvzbt. SELECT SINGLE * FROM tvzbt INTO ls_tvzbt WHERE spras = sy-langu AND zterm = knvv-zterm. info_prtlines_lst1_init. WRITE: 'Condiciones de entrega y pago' TO v77komlst1-tline1, * 1. line 'Incoterms' TO v77komlst1-telement1(19), * 2. line 'Condición de pago' TO v77komlst1-telement2(19). WRITE ls_tvzbt-vtext TO v77komlst1-telement10. DATA lt_lineitems TYPE TABLE OF bapi3007_2. DATA ls_lineitems LIKE LINE OF lt_lineitems. DATA ld_amount LIKE ls_lineitems-lc_amount. DATA ld_tlfns TYPE knb1-tlfns. DATA ld_kraus TYPE knkk-kraus. DATA ld_ctlpc TYPE knkk-ctlpc. DATA ld_rtext TYPE t691t-rtext. DATA ld_date TYPE d. DATA ld_date_1 TYPE d. DATA ls_s520 TYPE s520. *Atraso promedio (días): SELECT SINGLE tlfns INTO ld_tlfns FROM knb1 WHERE kunnr = knvv-kunnr AND bukrs = tvko-bukrs. WRITE ld_tlfns TO v77komlst1-telement9. * Seguro (sí/no) SELECT SINGLE kraus ctlpc INTO (ld_kraus,ld_ctlpc) FROM knkk WHERE kunnr = knkk-kunnr AND kkber = knkk-kkber. CASE ld_kraus. WHEN 'SPACE'. v77komlst1-telement8 = 'NO'. WHEN OTHERS. v77komlst1-telement8 = 'SI'. ENDCASE. * Categoría de Riesgo SELECT SINGLE rtext INTO ld_rtext FROM t691t WHERE spras = sy-langu AND ctlpc = ld_ctlpc AND kkber = knkk-kkber . IF sy-subrc = 0. WRITE ld_rtext TO v77komlst1-telement7. ENDIF. * Atraso en pago CALL FUNCTION 'BAPI_AR_ACC_GETOPENITEMS' EXPORTING companycode = tvko-bukrs customer = knvv-kunnr keydate = sy-datum TABLES lineitems = lt_lineitems. LOOP AT lt_lineitems INTO ls_lineitems. ld_date = ls_lineitems-bline_date + ls_lineitems-dsct_days1. CHECK ld_date < sy-datum. IF ls_lineitems-db_cr_ind = 'H'. ls_lineitems-lc_amount = ls_lineitems-lc_amount * -1. ENDIF. ADD ls_lineitems-lc_amount TO ld_amount. ENDLOOP. IF ld_amount <> 0. ld_amount = ld_amount / 1000. WRITE ld_amount TO v77komlst1-telement6 DECIMALS 0. ELSE. WRITE ld_amount TO v77komlst1-telement6 DECIMALS 0. ENDIF. CONDENSE v77komlst1-telement6 NO-GAPS. * WRITE v77komlst1-tline3 TO v77komlst1-tline3(14) RIGHT-JUSTIFIED. * bloqueo (si/no) IF knkk-crblb <> space. v77komlst1-telement5 = 'SI'. ELSE. v77komlst1-telement5 = 'NO'. ENDIF. info_sap_script_write. * historial de ventas DATA ld_m(7) TYPE c. DATA ld_count TYPE c. info_prtlines_lst1_init. element = 'LST1_903_003'. ld_count = '1'. DO 4 TIMES. * MES - 1 CALL FUNCTION 'HR_BR_ADD_MONTH_TO_DATE' EXPORTING dmm_datin = sy-datum dmm_count = ld_count dmm_oper = '-' dmm_pos = space IMPORTING dmm_daout = ld_date. IF ld_count = '1'. ld_date_1 = ld_date . ENDIF. CONCATENATE ld_date+4(2) '.' ld_date(4) INTO ld_m. CLEAR ls_s520. SELECT SINGLE * INTO ls_s520 FROM s520 WHERE spmon = ld_date(6) AND pkunag = knvv-kunnr AND vkorg = knvv-vkorg AND vtweg = knvv-vtweg AND spart = knvv-spart. IF sy-subrc = 0. ls_s520-netwr = ls_s520-netwr / 1000. "Miles de $ WRITE ls_s520-netwr TO v77komlst1-telement1 CURRENCY ls_s520-stwae. ELSE. v77komlst1-telement1 = 0. ENDIF. CONDENSE v77komlst1-telement1 NO-GAPS. * WRITE v77komlst1-telement6 TO v77komlst1-telement6(8) RIGHT-JUSTIFIED. * v77komlst1-telement6+20 = ld_m. v77komlst1-telement2 = ld_m. v77komlst1-telement4 = ld_count. info_sap_script_write. ADD 1 TO ld_count. ENDDO. *Venta último año (M$): info_prtlines_lst1_init. element = 'LST1_903_004'. CALL FUNCTION 'HR_BR_ADD_MONTH_TO_DATE' EXPORTING dmm_datin = ld_date_1 dmm_count = '12' dmm_oper = '-' dmm_pos = space IMPORTING dmm_daout = ld_date. CLEAR ls_s520-netwr. SELECT SUM( netwr ) INTO ls_s520-netwr FROM s520 WHERE spmon BETWEEN ld_date(6) AND ld_date_1(6) AND pkunag = knvv-kunnr AND vkorg = knvv-vkorg AND vtweg = knvv-vtweg AND spart = knvv-spart. IF sy-subrc = 0. ls_s520-netwr = ls_s520-netwr / 1000. "Miles de $ WRITE ls_s520-netwr TO v77komlst1-telement1 CURRENCY knvv-waers. CONDENSE v77komlst1-telement1 NO-GAPS. ELSE. v77komlst1-telement1 = '0'. ENDIF. CONDENSE v77komlst1-telement1 NO-GAPS. * WRITE v77komlst1-telement1 TO v77komlst1-telement1(14) RIGHT-JUSTIFIED. * v77komlst1-telement1+20 = 'Año'. * v77komlst1-telement1+24 = ld_date(4). info_sap_script_write. "??? ENDIF. ELSE. "XML-OUTPUT ... ... ...