‎2009 Oct 20 6:33 AM
hi gurus;
I want to read data from VBFA table nd pass its VBELV to VBAK table to get VBAK values, Iam using FM SD_DOCUMENT_FLOW_GET ND RV_ORDER_FLOW_INFORMATION, BUT i am not getting desire result. WHEN iam using FM SD_DOCUMENT_FLOW_GET, it will give result only for last row of data, its not considering body part, so tell me how to used this FM properly.
data: l_docflow type tdt_docflow.
data lw_docflow type tds_docflow OCCURS 1 WITH HEADER LINE .
SELECT VBELN KNUMV BUKRS KUNRG REGIO NETWR FKSTO FKDAT FKART INTO CORRESPONDING FIELDS OF TABLE T_VBRK
FROM VBRK WHERE BUKRS IN P_BUKRS AND FKDAT IN P_FKDAT AND VKORG IN P_VKORG AND REGIO = '07'
ORDER BY VBELN KNUMV.
SORT T_VBRK BY vbeln.
LOOP AT T_VBRK.
IF T_VBRK-FKART = 'F2' OR T_VBRK-FKART = 'YF2' OR T_VBRK-FKART = 'ZF2' OR
T_VBRK-FKART = 'ZG2' OR T_VBRK-FKART = 'ZL2' OR T_VBRK-FKART = 'YG2' OR T_VBRK-FKART = 'YL2' .
IF T_VBRK-FKSTO IS INITIAL.
CALL FUNCTION 'SD_DOCUMENT_FLOW_GET'
EXPORTING
IV_DOCNUM = T_VBRK-vbelN
IV_ITEMNUM =
IV_ALL_ITEMS =
IV_SELF_IF_EMPTY = ' '
IMPORTING
ET_DOCFLOW = l_docflow
.
LOOP AT l_docflow INTO lw_docflow .
IF lw_docflow-vbtyp_V = 'C' OR lw_docflow-vbtyp_V = 'K' OR lw_docflow-vbtyp_V = 'L' OR lw_docflow-vbtyp_V = 'E'.
T_VBFA-vbelv = lW_docflow-vbelv.
T_VBFA-VBELN = lW_docflow-VBELN.
T_VBFA-vbtyp_V = lW_docflow-vbtyp_V.
APPEND t_vbfa.
endif.
endloop.
ENDIF.
endloop.
loop at t_vbfa.
if t_vbfa-vbtyp_V = 'C' OR t_vbfa-vbtyp_V = 'K' OR t_vbfa-vbtyp_V = 'L' OR t_vbfa-vbtyp_V = 'E' .
SELECT VBELN BSTNK BSTDK FROM VBAK INTO CORRESPONDING FIELDS OF TABLE T_VBAK FOR ALL ENTRIES IN T_VBFA
WHERE VBELN = T_VBFA-VBELV .
endif.
ENDLOOP.
‎2009 Oct 20 6:59 AM
Hello
Use the below function module
RV_ORDER_FLOW_INFORMATION pass the type as C and pass the number.You will get all the flow.
SELECT VBELN KNUMV BUKRS KUNRG REGIO NETWR FKSTO FKDAT FKART INTO CORRESPONDING FIELDS OF TABLE T_VBRK FROM VBRK WHERE BUKRS IN P_BUKRS AND FKDAT IN P_FKDAT AND VKORG IN P_VKORG AND REGIO = '07'
ORDER BY VBELN KNUMV.
SORT T_VBRK BY vbeln.
LOOP AT T_VBRK.
IF T_VBRK-FKART = 'F2' OR T_VBRK-FKART = 'YF2' OR T_VBRK-FKART = 'ZF2' OR
T_VBRK-FKART = 'ZG2' OR T_VBRK-FKART = 'ZL2' OR T_VBRK-FKART = 'YG2' OR T_VBRK-FKART = 'YL2' .
IF T_VBRK-FKSTO IS INITIAL.
i_vbco6-vbeln = t_vbrk-vbeln.
CALL FUNCTION 'RV_ORDER_FLOW_INFORMATION'
EXPORTING
AUFBEREITUNG = '2'
BELEGTYP = ' '
COMWA = i_vbco6
NACHFOLGER = 'X'
N_STUFEN = '50'
VORGAENGER = 'X'
V_STUFEN = '50'
IMPORTING
BELEGTYP_BACK =
TABLES
VBFA_TAB = t_vbfa
EXCEPTIONS
NO_VBFA = 1
NO_VBUK_FOUND = 2
OTHERS = 3
.
endif.
ENDIF.
endloop.
loop at t_vbfa.
if t_vbfa-vbtyp_V = 'C' OR t_vbfa-vbtyp_V = 'K' OR t_vbfa-vbtyp_V = 'L' OR t_vbfa-vbtyp_V = 'E' .
*clear t_vbfa.
SELECT VBELN BSTNK BSTDK FROM VBAK INTO CORRESPONDING FIELDS OF TABLE T_VBAK FOR ALL ENTRIES IN T_VBFA WHERE VBELN = T_VBFA-VBELV .
endif.
ENDLOOP.
In case of any more help is required do let me know
Regards,
Nabheet Madan
‎2009 Oct 20 6:52 AM
Hi,
When selecting the billing data from VBRK table also select POSNR(item no) from VBRP table by doing inner join.
Then pass VBELN and POSNR to the function module SD_DOCUMENT_FLOW_GET.
When appending internal table T_VBFA also append l_docflow-POSNN.
Then select data from VBAK AND VBAP table to header and item data.
Regards,
Vinod
‎2009 Oct 20 6:59 AM
Hello
Use the below function module
RV_ORDER_FLOW_INFORMATION pass the type as C and pass the number.You will get all the flow.
SELECT VBELN KNUMV BUKRS KUNRG REGIO NETWR FKSTO FKDAT FKART INTO CORRESPONDING FIELDS OF TABLE T_VBRK FROM VBRK WHERE BUKRS IN P_BUKRS AND FKDAT IN P_FKDAT AND VKORG IN P_VKORG AND REGIO = '07'
ORDER BY VBELN KNUMV.
SORT T_VBRK BY vbeln.
LOOP AT T_VBRK.
IF T_VBRK-FKART = 'F2' OR T_VBRK-FKART = 'YF2' OR T_VBRK-FKART = 'ZF2' OR
T_VBRK-FKART = 'ZG2' OR T_VBRK-FKART = 'ZL2' OR T_VBRK-FKART = 'YG2' OR T_VBRK-FKART = 'YL2' .
IF T_VBRK-FKSTO IS INITIAL.
i_vbco6-vbeln = t_vbrk-vbeln.
CALL FUNCTION 'RV_ORDER_FLOW_INFORMATION'
EXPORTING
AUFBEREITUNG = '2'
BELEGTYP = ' '
COMWA = i_vbco6
NACHFOLGER = 'X'
N_STUFEN = '50'
VORGAENGER = 'X'
V_STUFEN = '50'
IMPORTING
BELEGTYP_BACK =
TABLES
VBFA_TAB = t_vbfa
EXCEPTIONS
NO_VBFA = 1
NO_VBUK_FOUND = 2
OTHERS = 3
.
endif.
ENDIF.
endloop.
loop at t_vbfa.
if t_vbfa-vbtyp_V = 'C' OR t_vbfa-vbtyp_V = 'K' OR t_vbfa-vbtyp_V = 'L' OR t_vbfa-vbtyp_V = 'E' .
*clear t_vbfa.
SELECT VBELN BSTNK BSTDK FROM VBAK INTO CORRESPONDING FIELDS OF TABLE T_VBAK FOR ALL ENTRIES IN T_VBFA WHERE VBELN = T_VBFA-VBELV .
endif.
ENDLOOP.
In case of any more help is required do let me know
Regards,
Nabheet Madan
‎2009 Oct 20 7:18 AM
‎2009 Oct 20 7:22 AM
hello
What you can do is where it is shwoing type mismatch error maniatain as the same type.
You only need to pass the order number thats it.
You can test in se37 just pass the sales order number and let the other default value remain as it.
You will get the whole flow detail.
Please let me know inc ase you need any help.
Please paste your code here.
Regards,
Nabheet Madan
‎2009 Oct 21 10:11 AM
hi guru,
when i want to print bstnk nd bstdk from vbak table, it will print only last value. iam using below code, so what i will chnage in the code to get full values.
LOOP AT T_VBRK.
READ TABLE T_VBFA WITH KEY VBELN = T_VBRK-VBELN.
READ TABLE T_KONV1 WITH KEY KNUMV = T_VBRK-KNUMV.
READ TABLE T_VBAK WITH KEY VBELN = T_VBFA-VBELV.
MOVE-CORRESPONDING T_VBRK TO T_FINAL.
MOVE-CORRESPONDING T_VBFA TO T_FINAL.
MOVE-CORRESPONDING T_VBAK TO T_FINAL.
MOVE-CORRESPONDING T_KONV1 TO T_FINAL.
T_FINAL-TOT = T_FINAL-KWERT + T_FINAL-Excise_duty + T_FINAL-Ecess + T_FINAL-HEcess .
T_FINAL-GROSS = T_FINAL-TOT + T_FINAL-Sales_Tax.
T_FINAL-KBETR = T_KONV-KBETR / 10.
APPEND T_FINAL.
ENDLOOP.