Validation on KNA1-STCD1
Hi,
I need to keep a validation on the field KNA1-STCD1 (Tax Number 1) without using any user exits etc...
Is there any simple configuration by displaying a warning message when the Tax number 1 already exists in the system.
Thanks,
Srini
Hi,
No, you'll have to make it through user-exit (you can use SAPMF02D enhancement).
Regards,
Eli
Similar Messages
-
[3.10] Foreignid Errado - idEstrangeiro
Olá Experts,
Seguindo o entendimento do meu cliente (e meu também), olhando o manual da NT2013.005, o campo foreignid = tag <idEstrangeiro> só deveria ser preenchido no XML 3.10 quando:
1) A operação for Importação / Exportação E
2) O parceiro destinatário for uma Pessoa Natural;
Nesta linha de raciocínio temos que o Sap Standard, após a nota 2039647, está usando uma lógica errada para preenchimento do campo, pois ele busca primeiro KNA1-STCD1, caso vazio tenta KNA1-STCD2 e caso este esteja vazio, por ultimo vai no campo novo KNA1-RN, conforme o trecho de código abaixo:
Para Fornecedor:
Função J_1B_NF_VENDOR_READ
IF NOT lfa1-stcd1 IS INITIAL. "2039647
MOVE lfa1-stcd1 TO parnad-foreignid. "2039647
ELSEIF NOT lfa1-stcd2 IS INITIAL. "2039647
MOVE lfa1-stcd2 TO parnad-foreignid. "2039647
ELSE. "2039647
MOVE lfa1-rne TO parnad-foreignid. "2039647
ENDIF. "2039647
Para Cliente:
Função J_1B_NF_CUSTOMER_READ
IF NOT kna1-stcd1 IS INITIAL. "2039647
MOVE kna1-stcd1 TO parnad-foreignid. "2039647
ELSEIF NOT kna1-stcd2 IS INITIAL. "2039647
MOVE kna1-stcd2 TO parnad-foreignid. "2039647
ELSE. "2039647
MOVE kna1-rne TO parnad-foreignid. "2039647
ENDIF. "2039647
Em nenhum momento o standard está verificando se o estrangeiro se trata de uma pessoa natural (flag KNA1-STKZN) antes de sair preenchendo o campo foreignid na Nota Fiscal.
Alguém já passou por este problema? Alguma solução oficial ou não?
Att.,
Flavio AlbuquerqueOlá Flávio,
seguindo a nota técnica 2013.005 na versão 1.21 de novembro 2014 o tag <idEstrangeiro> deverá ser preenchido
1) A operação for Importação / Exportação
OU
2) O parceiro destinatário for uma Pessoa Natural estrangeiro como consumidor final;
Veja a descrição do campo nas páginas 19, 50 (No. campo 64a), e a descrição das regras de validação (E03a) na página 103:
Por isto, a lógica da SAP está correto. Se o pais do parceiro é diferente de BR = Operação com exterior, que necessita o ID estrangeiro.
Espero de ter ajudado. Abraços, Titus. -
DOCU WINDOW
This is the window on the top right side
1.Document no (hard coded)
2.Then display the document number for the first document for the current row. Maybe you should check prior to printing if the current row was posted error free
and invoke printing only if this is the case. Then get the first(!!!) document number from the error/message log for this row. ZGF_ICO_RECHR_L-DOCFR
3. Document date (hard coded) it is P_BLDAT on the selection screen, already correct in the form
4. VAT No (hard coded)
5. Then display the EU VAT reg.no of that company. This is in table KNA1, where KUNNR = L_ROW-CUSTFR. The field is KNA1-STCEG, if it is empty, try to populate
KNA1-STCD1.
6. Order number(Hard coded)
7. Just concatenate L_ROW-REF + the last number for that reference from the log table ZGF_ICO_RECHR_L (notice this table has not yet been created!!! and also
the part is missing where we populate that table when posting both documents for a particular row) ZGF_ICO_RECHR_L-REF+NUMBER
report ZG00F_.
Top Include for the data declarations
class LCL_REF definition deferred.
include ZG00F_INT_POST_INVOICE_TOP.
data: G_ALV_TREE type ref to CL_GUI_ALV_TREE,
G_CUSTOM_CONTAINER type ref to CL_GUI_CUSTOM_CONTAINER,
G_TEXT_CONTAINER type ref to CL_GUI_CUSTOM_CONTAINER,
G_LOGGER type ref to CL_GUI_TEXTEDIT,
G_TOOLBAR type ref to CL_GUI_TOOLBAR.
data: " gt_zgf_ico_rechr type zgf_ico_rechr occurs 0,
"Output-Table
OKCODE like SY-UCOMM.
CLASS LCL_REF DEFINITION
class LCL_REF definition.
public section.
data : VALID type BOOLEAN,
CAN type BOOLEAN.
methods : CONSTRUCTOR
importing IM_REF type ZGF_ICO_RECHR,
CAN_POST
returning VALUE(CAN) type BOOLEAN,
IS_VALID
returning VALUE(IS_VALID) type BOOLEAN,
GET_DIVA returning VALUE(DIVA) type LVC_S_LAYN,
GET_DIVAC returning VALUE(DIVAC) type LVC_S_LACN,
FILL_BAPI_TABLES,
GET_REF returning VALUE(R_REF) type ZGF_ICO_RECHR-REF,
POST_INVOICE,
PRINT_INVOICE,
GET_ERRORS returning
VALUE(R_ERROR_TAB) type ABAPTXT255_TAB,
GET_PRDATA returning
VALUE(PR_REF) type ZGF_ICO_RECHR.
private section.
data: LINE type ABAPTXT255,
ERROR_TAB type ABAPTXT255_TAB,
FIELD like LINE.
methods : CHECK_VALIDITY.
endclass. "lcl_ref DEFINITION
CLASS lcl_ref IMPLEMENTATION
class LCL_REF implementation.
method GET_ERRORS.
R_ERROR_TAB = ME->ERROR_TAB.
endmethod. "get_errors
method IS_VALID.
IS_VALID = ME->VALID.
endmethod. "is_valid
method GET_PRDATA.
PR_REF = L_REF.
endmethod. "is_valid
method PRINT_INVOICE.
data: L_KUNNR type KNA1-KUNNR.
data: L_ROW type ZGF_ICO_RECHR.
call function 'OPEN_FORM'
exporting
APPLICATION = 'TX'
ARCHIVE_INDEX =
ARCHIVE_PARAMS =
DEVICE = 'PRINTER'
DIALOG = 'X'
FORM = 'ZGF_INVOICE'
LANGUAGE = SY-LANGU
OPTIONS = is_options
exceptions
CANCELED = 1
DEVICE = 2
others = 12.
if SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
endif.
call function 'START_FORM'
exporting
ARCHIVE_INDEX =
FORM = 'ZGF_INVOICE'
LANGUAGE = SY-LANGU
exceptions
FORM = 1
others = 8.
if SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
endif.
IF L_REF-TOTAL >= 0.
IV_INVOICE = 'INVOICE (COMCoE Recharge)'.
ELSE.
IV_INVOICE = 'Credit Memo (COMCoE Recharge)'.
ENDIF.
call method ME->GET_PRDATA
receiving
PR_REF = L_ROW.
L_KUNNR = L_ROW-CUSTFR.
select single RCOMP ADRNR LAND1 ORT01
into (IV_RCOMP, IV_ADRNR, IV_COMPLAND1, IV_COMPORT01)
from T001 where BUKRS = L_ROW-CCFR.
call function 'WRITE_FORM'
exporting
WINDOW = 'INVOICE'
ELEMENT = 'T3'
exceptions
WINDOW = 1
ELEMENT = 2.
IV_DOCDATE = P_BLDAT.
IV_ORDNU = L_ROW-REF.
call function 'WRITE_FORM'
exporting
WINDOW = 'DOCU'
ELEMENT = 'T2'
exceptions
WINDOW = 1
ELEMENT = 2.
select single KUNNR STRAS NAME1 LAND1 ORT01 STCEG
into
(IV_CUSTNO, IV_CUSTADD, IV_CUSTNAME1, IV_CUSTLAND1, IV_CUSTCITY,
IV_DOCVAT)
from KNA1
where KUNNR = L_KUNNR.
call function 'WRITE_FORM'
exporting
WINDOW = 'CUST'
ELEMENT = 'T6'
exceptions
WINDOW = 1
ELEMENT = 2.
IV_CUSTNO = L_KUNNR.
IV_CURR = L_ROW-CURR.
call function 'WRITE_FORM'
exporting
WINDOW = 'CUSTNO'
ELEMENT = 'T4'
exceptions
WINDOW = 1
ELEMENT = 2.
data: L_VAR(21).
concatenate P_DATEFR0(4) '/' P_DATEFR4(2) '/' P_DATEFR+6(2)
'-' P_DATETO0(4) '/' P_DATETO4(2) '/' P_DATETO+6(2)
into L_VAR.
IV_PERDAT = L_VAR.
call function 'WRITE_FORM'
exporting
WINDOW = 'MAIN'
ELEMENT = 'T1'
exceptions
WINDOW = 1
ELEMENT = 2.
call function 'WRITE_FORM'
exporting
WINDOW = 'FOOTER'
ELEMENT = 'T5'
exceptions
WINDOW = 1
ELEMENT = 2.
*CALL FUNCTION 'END_FORM'
IMPORTING
RESULT =
EXCEPTIONS
UNOPENED = 1
BAD_PAGEFORMAT_FOR_PRINT = 2
SPOOL_ERROR = 3
CODEPAGE = 4
OTHERS = 5.
call function 'END_FORM'
exceptions
UNOPENED = 1.
if SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
endif.
call function 'CLOSE_FORM'
exceptions
others = 6.
if SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
endif.
endmethod. "is_valid
method GET_REF.
R_REF = REF.
endmethod. "get_ref
method CONSTRUCTOR.
L_REF = IM_REF.
REF = IM_REF-REF.
call method ME->CHECK_VALIDITY.
endmethod. "constructor
method GET_DIVA.
DIVA-ISFOLDER = ''.
if VALID <> 'X'.
DIVA-N_IMAGE = ICON_NEGATIVE.
else.
DIVA-N_IMAGE = ICON_POSITIVE.
endif.
endmethod. "get_diva
method GET_DIVAC.
if V_ERROR1 = 'Y' or V_ERROR2 = 'Y'.
DIVAC-N_IMAGE = ICON_RED_LIGHT.
elseif V_ERROR1 = 'N' and V_ERROR2 = 'N'.
DIVAC-N_IMAGE = ICON_GREEN_LIGHT.
endif.
DIVAC-U_N_IMAGE = 'X'.
endmethod. "get_divac
method CAN_POST.
CAN = 'X'.
call method ME->FILL_BAPI_TABLES.
endmethod. "can_post
method CHECK_VALIDITY.
*Reference field must begin with M, Q, Y or J. Otherwise display an
*error msg with text symbol TEXT-001 (ZGF_ICO_RECHR validation error
*Reference incorrect rec.x) where x ist the numebr of the incorrect
*record.
data: L_CHAR(1),
L_REF1 type ZGF_ICO_RECHR-REF,
L_ERR type OUTTAB_LINE_ERROR,
L_NUM type N,
L_KNB1 type KNB1,
L_TBSL type TBSL,
L_CSKS type CSKS,
L_LFB1 type LFB1.
l_flag(1).
clear: L_CHAR, L_NUM, VALID.
VALID = 'X'.
L_REF1 = L_REF-REF.
L_CHAR = L_REF1+0(1).
if not ( L_CHAR = 'M' or L_CHAR = 'Q'
or L_CHAR = 'Y' or L_CHAR = 'J').
MESSAGE E398(00) WITH TEXT-001 ' ' ' ' ' '.
clear L_ERR.
L_ERR = L_REF.
L_ERR-ERR_MESG = TEXT-001.
L_ERR-REC_NO = G_CNTR.
append L_ERR to GT_ZGF_ICO_RECHR_ERRORS.
append L_ERR-ERR_MESG to ERROR_TAB.
VALID = 'F'.
endif.
clear: L_CHAR, L_NUM.
L_CHAR = L_REF1+1(1).
L_NUM = L_CHAR.
if not L_CHAR = '0'.
if L_NUM = 0.
clear L_ERR.
L_ERR = L_REF.
L_ERR-ERR_MESG = TEXT-001.
L_ERR-REC_NO = G_CNTR.
append L_ERR to GT_ZGF_ICO_RECHR_ERRORS.
append L_ERR-ERR_MESG to ERROR_TAB.
VALID = 'F'.
endif.
endif.
clear: L_CHAR, L_NUM.
L_CHAR = L_REF1+2(1).
L_NUM = L_CHAR.
if not L_CHAR = '0'.
if L_NUM = 0.
clear L_ERR.
L_ERR = L_REF.
L_ERR-ERR_MESG = TEXT-001.
L_ERR-REC_NO = G_CNTR.
append L_ERR to GT_ZGF_ICO_RECHR_ERRORS.
append L_ERR-ERR_MESG to ERROR_TAB.
VALID = 'F'.
endif.
endif.
clear: L_CHAR, L_NUM.
L_CHAR = L_REF1+3(1).
L_NUM = L_CHAR.
if not L_CHAR = '0'.
if L_NUM = 0.
clear L_ERR.
L_ERR = L_REF.
L_ERR-ERR_MESG = TEXT-001.
L_ERR-REC_NO = G_CNTR.
append L_ERR-ERR_MESG to GT_ZGF_ICO_RECHR_ERRORS.
VALID = 'F'.
endif.
endif.
if not ( L_REF-FREQ = 'M' or L_REF-FREQ = 'Q' or L_REF-FREQ = 'Y').
clear L_ERR.
L_ERR = L_REF.
L_ERR-ERR_MESG = TEXT-002.
L_ERR-REC_NO = G_CNTR.
append L_ERR to GT_ZGF_ICO_RECHR_ERRORS.
append L_ERR-ERR_MESG to ERROR_TAB.
VALID = 'F'.
endif.
if not ( L_REF-CODE = 'A' or L_REF-CODE = 'B' or L_REF-CODE = 'C'
or L_REF-CODE = 'D' or L_REF-CODE = 'E'
or L_REF-CODE = 'F' ).
clear L_ERR.
L_ERR = L_REF.
L_ERR-ERR_MESG = TEXT-003.
L_ERR-REC_NO = G_CNTR.
append L_ERR to GT_ZGF_ICO_RECHR_ERRORS.
append L_ERR-ERR_MESG to ERROR_TAB.
VALID = 'F'.
endif.
*Customer FROM must not be flagged for deletion in KNB1. (KNB1-LOEVM
*must be space), otherwise error message with TEXT-007. (ZGF_ICO_RECHR
*validation error From customer marked for deletion rec.x) where x
*ist the number of the incorrect record.
select single * from KNB1 into L_KNB1
where KUNNR = L_REF-CUSTFR.
if SY-SUBRC = 0.
if not L_KNB1-LOEVM is initial.
clear L_ERR.
L_ERR = L_REF.
L_ERR-ERR_MESG = TEXT-007.
L_ERR-REC_NO = G_CNTR.
append L_ERR to GT_ZGF_ICO_RECHR_ERRORS.
append L_ERR-ERR_MESG to ERROR_TAB.
VALID = 'F'.
endif.
if not L_KNB1-SPERR is initial.
clear L_ERR.
L_ERR = L_REF.
L_ERR-ERR_MESG = TEXT-006.
L_ERR-REC_NO = G_CNTR.
append L_ERR to GT_ZGF_ICO_RECHR_ERRORS.
append L_ERR-ERR_MESG to ERROR_TAB.
VALID = 'F'.
endif.
endif.
select single * from TBSL into L_TBSL
where BSCHL = L_REF-PKFRD.
if not L_TBSL-KOART = 'D'.
clear L_ERR.
L_ERR = L_REF.
L_ERR-ERR_MESG = TEXT-008.
L_ERR-REC_NO = G_CNTR.
append L_ERR to GT_ZGF_ICO_RECHR_ERRORS.
append L_ERR-ERR_MESG to ERROR_TAB.
VALID = 'F'.
endif.
select single * from TBSL into L_TBSL
where BSCHL = L_REF-PKFRS.
if not L_TBSL-KOART = 'S'.
clear L_ERR.
L_ERR = L_REF.
L_ERR-ERR_MESG = TEXT-009.
L_ERR-REC_NO = G_CNTR.
append L_ERR to GT_ZGF_ICO_RECHR_ERRORS.
append L_ERR-ERR_MESG to ERROR_TAB.
VALID = 'F'.
endif.
if not L_REF-PLTFR is initial.
select single * from CSKS into L_CSKS
where ZZWERKS = L_REF-PKFRS.
if SY-SUBRC <> 0.
clear L_ERR.
L_ERR = L_REF.
L_ERR-ERR_MESG = TEXT-012.
L_ERR-REC_NO = G_CNTR.
append L_ERR to GT_ZGF_ICO_RECHR_ERRORS.
append L_ERR-ERR_MESG to ERROR_TAB.
VALID = 'F'.
endif.
endif.
select single * from LFB1 into L_LFB1
where LIFNR = L_REF-CUSTTO.
if not L_LFB1-LOEVM is initial.
clear L_ERR.
L_ERR = L_REF.
L_ERR-ERR_MESG = TEXT-018.
L_ERR-REC_NO = G_CNTR.
append L_ERR to GT_ZGF_ICO_RECHR_ERRORS.
append L_ERR-ERR_MESG to ERROR_TAB.
VALID = 'F'.
endif.
if not LFB1-SPERR is initial.
clear L_ERR.
L_ERR = L_REF.
L_ERR-ERR_MESG = TEXT-019.
L_ERR-REC_NO = G_CNTR.
append L_ERR to GT_ZGF_ICO_RECHR_ERRORS.
append L_ERR-ERR_MESG to ERROR_TAB.
VALID = 'F'.
endif.
select single * from TBSL into L_TBSL
where BSCHL = L_REF-PKTOK.
if not L_TBSL-KOART = 'K'.
clear L_ERR.
L_ERR = L_REF.
L_ERR-ERR_MESG = TEXT-020.
L_ERR-REC_NO = G_CNTR.
append L_ERR to GT_ZGF_ICO_RECHR_ERRORS.
append L_ERR-ERR_MESG to ERROR_TAB.
VALID = 'F'.
endif.
select single * from TBSL into L_TBSL
where BSCHL = L_REF-PKTOS.
if not L_TBSL-KOART = 'S'.
clear L_ERR.
L_ERR = L_REF.
L_ERR-ERR_MESG = TEXT-021.
L_ERR-REC_NO = G_CNTR.
append L_ERR to GT_ZGF_ICO_RECHR_ERRORS.
append L_ERR-ERR_MESG to ERROR_TAB.
VALID = 'F'.
endif.
if not L_REF-TOTAL > 0.
clear L_ERR.
L_ERR = L_REF.
L_ERR-ERR_MESG = TEXT-017.
L_ERR-REC_NO = G_CNTR.
append L_ERR to GT_ZGF_ICO_RECHR_ERRORS.
append L_ERR-ERR_MESG to ERROR_TAB.
VALID = 'F'.
endif.
return valid.
endmethod. "check_validity
--- Method Post Invoice Start ---
method POST_INVOICE.
endmethod. "post_invoice
--- Method Post Invoice End ---
--- Method Filling Bapi Tables Start ---
method FILL_BAPI_TABLES.
*---- Populating Bapi for Customer
V_TOTAL = L_REF-TOTAL.
perform FILL_BAPI_CUSTOMER.
V_ERROR1 = 'N'.
V_ERROR2 = 'N'.
delete IT_ERROR where NODE_ID = L_SELECTED_NODE.
IS_ERROR-NODE_ID = L_SELECTED_NODE.
IS_ERROR-ERROR = SY-ULINE(30).
append IS_ERROR to IT_ERROR.
IS_ERROR-NODE_ID = L_SELECTED_NODE.
IS_ERROR-ERROR = L_REF-REF.
append IS_ERROR to IT_ERROR.
IS_ERROR-NODE_ID = L_SELECTED_NODE.
IS_ERROR-ERROR = SY-ULINE(30).
append IS_ERROR to IT_ERROR.
IS_ERROR-NODE_ID = L_SELECTED_NODE.
IS_ERROR-ERROR = '*** Checking Customer Document ***'.
append IS_ERROR to IT_ERROR.
clear IS_ERROR.
*---- Checking for 1st Document
call function 'BAPI_ACC_DOCUMENT_CHECK'
exporting
DOCUMENTHEADER = WA_DOCUMENTHEADER
tables
ACCOUNTGL = LT_ACCOUNTGL
ACCOUNTRECEIVABLE =
LT_ACCOUNTRECEIVABLE
ACCOUNTTAX = LT_ACCOUNTTAX
CURRENCYAMOUNT = LT_CURRENCYAMOUNT
RETURN = LT_RETURN.
loop at LT_RETURN into WA_RETURN.
if WA_RETURN-TYPE = 'E' or WA_RETURN-TYPE = 'A'.
V_ERROR1 = 'Y'.
endif.
IS_ERROR-NODE_ID = L_SELECTED_NODE.
concatenate WA_RETURN-TYPE WA_RETURN-MESSAGE into IS_ERROR-ERROR
separated by '-'.
append IS_ERROR to IT_ERROR.
endloop.
*--- Checking for 2nd Document
if V_ERROR1 = 'N'.
*---- Populating Bapi for Vendor
L_REF-TOTAL = V_TOTAL.
perform FILL_BAPI_VENDOR.
IS_ERROR-NODE_ID = L_SELECTED_NODE.
IS_ERROR-ERROR = '*** Checking for Vendor Document ***'.
append IS_ERROR to IT_ERROR.
clear IS_ERROR.
call function 'BAPI_ACC_DOCUMENT_CHECK'
exporting
DOCUMENTHEADER = WA_DOCUMENTHEADER2
tables
ACCOUNTGL = LT_ACCOUNTGL2
ACCOUNTPAYABLE = LT_ACCOUNTPAYABLE
ACCOUNTTAX = LT_ACCOUNTTAX2
CURRENCYAMOUNT = LT_CURRENCYAMOUNT2
RETURN = LT_RETURN2.
loop at LT_RETURN2 into WA_RETURN2.
if WA_RETURN-TYPE = 'E' or WA_RETURN-TYPE = 'A'.
V_ERROR2 = 'Y'.
endif.
IS_ERROR-NODE_ID = L_SELECTED_NODE.
concatenate WA_RETURN2-TYPE WA_RETURN2-MESSAGE into
IS_ERROR-ERROR separated by '-'.
append IS_ERROR to IT_ERROR.
endloop.
endif.
*--- CHECK WHETHER BOTH DOCUMENTS ARE CORRECT OR NOT returned SUCCESS
if V_ERROR1 = 'N' and V_ERROR2 = 'N'.
*--- Posting 1st Document - Customer
IS_ERROR-NODE_ID = L_SELECTED_NODE.
IS_ERROR-ERROR = '*** Posting Customer Document ***'.
append IS_ERROR to IT_ERROR.
clear IS_ERROR.
call function 'BAPI_ACC_DOCUMENT_POST'
exporting
DOCUMENTHEADER = WA_DOCUMENTHEADER
tables
ACCOUNTGL = LT_ACCOUNTGL
ACCOUNTRECEIVABLE =
LT_ACCOUNTRECEIVABLE
ACCOUNTTAX = LT_ACCOUNTTAX
CURRENCYAMOUNT = LT_CURRENCYAMOUNT
RETURN = LT_RETURN.
call function 'BAPI_TRANSACTION_COMMIT'.
loop at LT_RETURN into WA_RETURN.
IS_ERROR-NODE_ID = L_SELECTED_NODE.
concatenate WA_RETURN-TYPE WA_RETURN-MESSAGE into IS_ERROR-ERROR
separated by '-'.
append IS_ERROR to IT_ERROR.
endloop.
*--- Posting 2nd Document - Vendor
IS_ERROR-NODE_ID = L_SELECTED_NODE.
IS_ERROR-ERROR = '*** Posting Vendor Document ***'.
append IS_ERROR to IT_ERROR.
clear IS_ERROR.
call function 'BAPI_ACC_DOCUMENT_POST'
exporting
DOCUMENTHEADER = WA_DOCUMENTHEADER2
tables
ACCOUNTGL = LT_ACCOUNTGL2
ACCOUNTPAYABLE = LT_ACCOUNTPAYABLE
ACCOUNTTAX = LT_ACCOUNTTAX2
CURRENCYAMOUNT = LT_CURRENCYAMOUNT2
RETURN = LT_RETURN2.
call function 'BAPI_TRANSACTION_COMMIT'.
loop at LT_RETURN2 into WA_RETURN2.
IS_ERROR-NODE_ID = L_SELECTED_NODE.
concatenate WA_RETURN2-TYPE WA_RETURN2-MESSAGE into
IS_ERROR-ERROR separated by '-'.
append IS_ERROR to IT_ERROR.
endloop.
endif. "if V_ERROR1 = 'N' and V_ERROR2 = 'N'.
*--- Setting colour of node.
data: LO_REF type ref to LCL_REF,
IS_NODE_LAYOUT type LVC_S_LACN,
L_NODE_TEXT type LVC_VALUE,
WA_OREF type TY_REF.
clear :IS_NODE_LAYOUT,L_NODE_TEXT, WA_OREF, LO_REF.
create object LO_REF exporting IM_REF = LS_ZGF_ICO_RECHR.
IS_NODE_LAYOUT = LO_REF->GET_DIVAC( ).
read table GT_ZGF_ICO_RECHR into L_REF index L_SELECTED_NODE.
L_NODE_TEXT = L_REF-REF.
call method G_ALV_TREE->CHANGE_NODE
exporting
I_NODE_KEY = L_SELECTED_NODE
I_OUTTAB_LINE = L_REF
IS_NODE_LAYOUT = IS_NODE_LAYOUT
I_NODE_TEXT = L_NODE_TEXT
I_U_NODE_TEXT = 'X'
exceptions
NODE_NOT_FOUND = 1
others = 2.
call method G_ALV_TREE->FRONTEND_UPDATE.
call method CL_GUI_CFW=>FLUSH
exceptions
CNTL_SYSTEM_ERROR = 1
CNTL_ERROR = 2.
endmethod. "fill_int_tables
endclass. "lcl_ref IMPLEMENTATION
CLASS lcl_event_handler DEFINITION
class LCL_EVENT_HANDLER definition.
public section.
class-methods : ON_NODE_CLICK for event
NODE_DOUBLE_CLICK of CL_GUI_ALV_TREE
importing NODE_KEY.
methods: ON_FUNCTION_SELECTED
for event FUNCTION_SELECTED of CL_GUI_TOOLBAR
importing FCODE.
endclass. "lcl_event_handler DEFINITION
CLASS lcl_event_handler IMPLEMENTATION
class LCL_EVENT_HANDLER implementation.
method ON_NODE_CLICK.
endmethod. "on_node_click
method ON_FUNCTION_SELECTED.
data: LT_SELECTED_NODES type LVC_T_NKEY,
L_RC type C,
L_CAN type C,
L_REC type I,
WA_OREF type TY_REF,
L_LINE type SY-TABIX.
Determine which line is selected
call method G_ALV_TREE->GET_SELECTED_NODES
changing
CT_SELECTED_NODES = LT_SELECTED_NODES.
call method CL_GUI_CFW=>FLUSH.
remark: The user can not select more than one node since the
default value of NODE_SELECTION_MODE is
cl_gui_column_Tree=>NODE_SEL_MODE_SINGLE (see constructor).
describe table LT_SELECTED_NODES lines L_REC.
if L_REC = 0 and FCODE = 'ERROR'.
*--- Show log for all if nothing is selected then.
refresh LT_ERRORS.
clear LT_ERRORS.
loop at IT_ERROR into IS_ERROR.
IS_ERRORS-LINE = IS_ERROR-ERROR.
append IS_ERRORS to LT_ERRORS.
endloop.
call method G_LOGGER->SET_TEXT_AS_R3TABLE
exporting
TABLE = LT_ERRORS.
endif.
loop at LT_SELECTED_NODES into L_SELECTED_NODE.
clear : L_REF, WA_OREF.
L_LINE = SY-TABIX.
read table GT_OREF into WA_OREF index L_SELECTED_NODE.
read table GT_ZGF_ICO_RECHR into L_REF index L_SELECTED_NODE.
if SY-SUBRC = 0.
case FCODE.
when 'ERROR'.
refresh LT_ERRORS.
clear LT_ERRORS.
loop at IT_ERROR into IS_ERROR where NODE_ID =
L_SELECTED_NODE.
IS_ERRORS-LINE = IS_ERROR-ERROR.
append IS_ERRORS to LT_ERRORS.
endloop.
call method G_LOGGER->SET_TEXT_AS_R3TABLE
exporting
TABLE = LT_ERRORS.
when 'POST'.
if L_LINE = 1.
if WA_OREF-O_REF->IS_VALID( ) = 'X'.
clear L_RC.
call function 'POPUP_TO_CONFIRM_STEP'
exporting
TEXTLINE1 = 'Do you want to post' "(902)
TEXTLINE2 = '?' "(903)
TITEL = 'Confirmation' "(904)
CANCEL_DISPLAY = ' '
importing
ANSWER = L_RC.
else.
call function 'POPUP_TO_INFORM'
exporting
TITEL = 'Select Another Record..'
TXT1 = 'Data Wrong,'
TXT2 = 'Posting Can Not be Done'.
endif.
else.
L_RC = 'J'.
endif.
if L_RC eq 'J'.
*---Post Invoice.
if WA_OREF-O_REF->CAN_POST( ) = 'X'.
call method WA_OREF-O_REF->POST_INVOICE.
*---Printing Log.
refresh LT_ERRORS.
clear LT_ERRORS.
loop at IT_ERROR into IS_ERROR.
IS_ERRORS-LINE = IS_ERROR-ERROR.
append IS_ERRORS to LT_ERRORS.
endloop.
call method G_LOGGER->SET_TEXT_AS_R3TABLE
exporting
TABLE = LT_ERRORS.
endif.
endif.
when 'PRINT'.
call method WA_OREF-O_REF->PRINT_INVOICE.
endcase.
else.
message I000(0K) with 'Please select a node.'.
endif.
endloop.
endmethod. "on_function_selected
endclass. "lcl_event_handler IMPLEMENTATION
START-OF-SELECTION.
start-of-selection.
end-of-selection.
call screen 100.
*& Module STATUS_0100 OUTPUT
module STATUS_0100 output.
set pf-status 'MAIN100'.
set titlebar 'MAINTITLE'.
if G_ALV_TREE is initial.
perform INIT_TREE.
call method CL_GUI_CFW=>FLUSH
exceptions
CNTL_SYSTEM_ERROR = 1
CNTL_ERROR = 2.
if SY-SUBRC ne 0.
call function 'POPUP_TO_INFORM'
exporting
titel = 'Automation Queue failure'(801)
txt1 = 'Internal error:'(802)
txt2 = 'A method in the automation queue'(803)
txt3 = 'caused a failure.'(804).
endif.
endif.
endmodule. " STATUS_0100 OUTPUT
*& Form init_tree
text
--> p1 text
<-- p2 text
form INIT_TREE .
data: L_TREE_CONTAINER_NAME(30) type C.
*Reference tree
L_TREE_CONTAINER_NAME = 'ZCONTAINER'.
create object G_CUSTOM_CONTAINER
exporting
CONTAINER_NAME = L_TREE_CONTAINER_NAME
exceptions
CNTL_ERROR = 1
CNTL_SYSTEM_ERROR = 2
CREATE_ERROR = 3
LIFETIME_ERROR = 4
LIFETIME_DYNPRO_DYNPRO_LINK = 5.
if SY-SUBRC <> 0.
MESSAGE x208(00) WITH 'ERROR'(100).
endif.
create tree control
create object G_ALV_TREE
exporting
PARENT = G_CUSTOM_CONTAINER
NODE_SELECTION_MODE = CL_GUI_COLUMN_TREE=>NODE_SEL_MODE_MULTIPLE
NODE_SELECTION_MODE = CL_GUI_COLUMN_TREE=>NODE_SEL_MODE_SINGLE
ITEM_SELECTION = 'X'
NO_HTML_HEADER = ''
NO_TOOLBAR = ''
exceptions
CNTL_ERROR = 1
CNTL_SYSTEM_ERROR = 2
CREATE_ERROR = 3
LIFETIME_ERROR = 4
ILLEGAL_NODE_SELECTION_MODE = 5
FAILED = 6
ILLEGAL_COLUMN_NAME = 7.
if SY-SUBRC <> 0.
message X208(00) with 'ERROR'. "#EC NOTEXT
endif.
****logger
L_TREE_CONTAINER_NAME = 'ZLOGGER'.
create object G_TEXT_CONTAINER
exporting
CONTAINER_NAME = L_TREE_CONTAINER_NAME
exceptions
CNTL_ERROR = 1
CNTL_SYSTEM_ERROR = 2
CREATE_ERROR = 3
LIFETIME_ERROR = 4
LIFETIME_DYNPRO_DYNPRO_LINK = 5.
create object G_LOGGER
exporting PARENT = G_TEXT_CONTAINER
NAME = 'Error Log'.
call method G_LOGGER->SET_READONLY_MODE.
endlogger
data L_HIERARCHY_HEADER type TREEV_HHDR.
data: LT_LIST_COMMENTARY type SLIS_T_LISTHEADER,
L_LOGO type SDYDO_VALUE.
data : WA_FIELDCATALOG type LVC_S_FCAT.
perform BUILD_HIERARCHY_HEADER changing L_HIERARCHY_HEADER.
perform BUILD_COMMENT using LT_LIST_COMMENTARY
L_LOGO.
clear : WA_FIELDCATALOG, GT_FIELDCATALOG.
get fieldcatalog
call function 'LVC_FIELDCATALOG_MERGE'
exporting
I_STRUCTURE_NAME = 'ZGF_ICO_RECHR'
changing
CT_FIELDCAT = GT_FIELDCATALOG.
loop at GT_FIELDCATALOG into WA_FIELDCATALOG.
case WA_FIELDCATALOG-FIELDNAME.
when 'REF'.
WA_FIELDCATALOG-NO_OUT = 'X'.
endcase.
WA_FIELDCATALOG-OUTPUTLEN = 15.
modify GT_FIELDCATALOG from WA_FIELDCATALOG.
endloop.
call method G_ALV_TREE->SET_TABLE_FOR_FIRST_DISPLAY
exporting
IT_LIST_COMMENTARY = LT_LIST_COMMENTARY
I_LOGO = L_LOGO
i_structure_name = 'ZGF_ICO_RECHR'
IS_HIERARCHY_HEADER = L_HIERARCHY_HEADER
changing
IT_FIELDCATALOG = GT_FIELDCATALOG
IT_OUTTAB = GT_ZGF_ICO_RECHR. "table must be empty !
perform CREATE_HIERARCHY.
perform CHANGE_TOOLBAR.
perform REGISTER_EVENTS.
call method G_ALV_TREE->FRONTEND_UPDATE.
endform. " init_tree
*& Form build_hierarchy_header
form BUILD_HIERARCHY_HEADER changing
P_HIERARCHY_HEADER type TREEV_HHDR.
P_HIERARCHY_HEADER-HEADING = 'Reference Number'(300).
P_HIERARCHY_HEADER-TOOLTIP = 'Reference numbers for invoices'(400).
P_HIERARCHY_HEADER-WIDTH = 30.
P_HIERARCHY_HEADER-WIDTH_PIX = ' '.
endform. " build_hierarchy_header
*& Form create_hierarchy
form CREATE_HIERARCHY .
clear : LS_ZGF_ICO_RECHR, L_LAST_KEY.
§4a. Select data
refresh GT_ZGF_ICO_RECHR.
select * from ZGF_ICO_RECHR into table LT_ZGF_ICO_RECHR
where FREQ in SO_FREQ
and REF in SO_REF.
sort LT_ZGF_ICO_RECHR by REF.
Note: The top level nodes do not correspond to a field of the
output table. Instead we use data of the table to invent another
hierarchy level above the levels that can be build by sorting.
§4c. Add data to tree
G_CNTR = 1.
sort by oref->get_diva->image .
loop at LT_ZGF_ICO_RECHR into LS_ZGF_ICO_RECHR.
perform ADD_COMPLETE_LINE using LS_ZGF_ICO_RECHR
changing L_LAST_KEY.
G_CNTR = G_CNTR + 1.
perform add_node using ls_zgf_ico_rechr-ref
changing l_last_key.
endloop.
endform. " create_hierarchy
*& Module USER_COMMAND_0100 INPUT
module USER_COMMAND_0100 input.
SAVE_OK = OKCODE.
clear OKCODE.
case SAVE_OK.
when 'EXIT' or 'BACK' or 'CANC'.
perform EXIT_PROGRAM.
when others.
§6. Call dispatch to process toolbar functions
call method CL_GUI_CFW=>DISPATCH.
endcase.
call method CL_GUI_CFW=>FLUSH.
endmodule. " USER_COMMAND_0100 INPUT
*& Form exit_program
text
form EXIT_PROGRAM .
call method G_CUSTOM_CONTAINER->FREE.
leave to screen 0.
endform. " exit_program
*& Form add_complete_line
form ADD_COMPLETE_LINE using P_LS_ZGF_ICO_RECHR type ZGF_ICO_RECHR
P_RELAT_KEY type LVC_NKEY
changing P_NODE_KEY type LVC_NKEY.
data: L_NODE_TEXT type LVC_VALUE,
LO_REF type ref to LCL_REF,
L_NODE_LAYOUT type LVC_S_LAYN.
add leaf:
ALV Tree firstly inserts this node as a leaf if you do not provide
IS_NODE_LAYOUT with field ISFOLDER set.
Since these nodes will never get children they stay leaves
(as intended).
clear L_NODE_LAYOUT.
create object LO_REF exporting IM_REF = P_LS_ZGF_ICO_RECHR.
data : WA_OREF type TY_REF.
clear WA_OREF.
WA_OREF-O_REF = LO_REF.
append WA_OREF to GT_OREF.
L_NODE_LAYOUT = LO_REF->GET_DIVA( ).
L_NODE_TEXT = P_LS_ZGF_ICO_RECHR-REF.
call method G_ALV_TREE->ADD_NODE
exporting
I_RELAT_NODE_KEY = P_RELAT_KEY
I_RELATIONSHIP = CL_GUI_COLUMN_TREE=>RELAT_LAST_CHILD
IS_OUTTAB_LINE = P_LS_ZGF_ICO_RECHR "_REF
I_NODE_TEXT = L_NODE_TEXT
IS_NODE_LAYOUT = L_NODE_LAYOUT
importing
E_NEW_NODE_KEY = P_NODE_KEY.
endform. " add_complete_line
*& Form add_node
form ADD_NODE using P_REF
changing P_NODE_KEY type LVC_NKEY.
clear L_NODE_LAYOUT.
L_NODE_LAYOUT-ISFOLDER = ''.
L_NODE_LAYOUT-N_IMAGE = ICON_POSITIVE.
L_NODE_TEXT = 'Reference1'. " ps_sflight-carrid.
call method G_ALV_TREE->ADD_NODE
exporting
I_RELAT_NODE_KEY = '' " p_relat_key
I_RELATIONSHIP = CL_GUI_COLUMN_TREE=>RELAT_LAST_CHILD
I_NODE_TEXT = L_NODE_TEXT
IS_OUTTAB_LINE = P_REF
IS_NODE_LAYOUT = L_NODE_LAYOUT
importing
E_NEW_NODE_KEY = P_NODE_KEY.
endform. " add_node
*& Form register_events
form REGISTER_EVENTS .
data: LT_EVENTS type CNTL_SIMPLE_EVENTS,
L_EVENT type CNTL_SIMPLE_EVENT,
L_EVENT_RECEIVER type ref to LCL_EVENT_HANDLER.
call method G_ALV_TREE->GET_REGISTERED_EVENTS
importing
EVENTS = LT_EVENTS.
*NODE_DOUBLE_CLICK
clear L_EVENT.
move CL_GUI_COLUMN_TREE=>EVENTID_NODE_DOUBLE_CLICK to L_EVENT-EVENTID.
append L_EOk fine that can be acchived by setting the retention policy and by issuing delete obsolete command.That's perfect.If FRA is configured then even delete obsolete command is also not required.
but i want to keep the last full backup for 15 days and archived logs only for one day.In this case can we set seperate retention policy for full backup and backup of archived logs
for the time being i just want to modify my present existing OS script to acchive my task and i will conside changing RMAN script later on.Can u provide me the modified OS script so that my work gets finishes succesfully.
Thank You... -
Location of Indian Tax IDs in Customer Master Record.
We are enabling India as company code/sales organization. One of the requirements put upon us is to carry 2 tax id numbers on the customer master and at the transaction level. We are being requested to carry a CST (Central Sales Tax) id and a VAT tax id. I am using the VAT registration field kna1-STCEG which is 20 characters long. The business is telling us that they need the CST to be 25 characters. Our original intent was to store it in kna1-STCD1, however this field is only 16 characters long. The business is telling us that the validity years need to be appended to the tax id number which pushes it over the alloted 16 characters. Has anyone else run into this, if so what was the chosen method.
Message was edited by:
Gino RuggieroHi,
I had the same problem in my previous implementation. If the tax condition types in your customer master and material master are not in the same sequence, then your condition records would not behave properly. They would either throw out some junk values or multiple condition types may appear in your sales order.
To over come this, I have made the sequence of the condition types in material master through OVK1 T.code as the same order as the customer master condition types.
This resolved my problem and the condition records were correctly picked.
By doing this your issue also would be resolved. Please update the forum if you still face issues or if you use a different method to over ride this.
Regards,
Rohan Gudavalli -
hi friends,
Could u please help me how to do this
tables : knb1, "customer master (companycode)
kna1, "genaral data in customer master
knvp. "customer master partener functions
zvarv. "Program Hard Coded Values support table
TYPE-POOLS DEFINATION
type-pools : slis.
TYPES DECLARATION
Customer Master Company code Data
types : begin of t_knb1,
kunnr like knb1-kunnr,
akont like knb1-akont,
end of t_knb1.
data : i_knb1 type t_knb1 occurs 0 with header line .
Customer Master
types : begin of t_kna1,
kunnr like kna1-kunnr,
name1 like kna1-name1,
stras like kna1-stras,
ort01 like kna1-ort01,
stcd1 like kna1-stcd1,
pstlz like kna1-pstlz,
end of t_kna1.
data : i_kna1 type t_kna1 occurs 0 with header line.
Customer Partner Functions
types : begin of t_knvp,
kunnr like knvp-kunnr,
vkorg like knvp-vkorg,
parvw like knvp-parvw,
kunn2 like knvp-kunn2,
end of t_knvp.
data : i_knvp type t_knvp occurs 0 with header line.
Output data
types : begin of t_output,
recordtype type c,
soldtocust(10) type c,
payer(10) type c,
sequence(5) type n,
custname(35) type c,
custaddress(35) type c,
custcity(35) type c,
taxid(16) type c,
postalcode(5) type c,
branch type c,
delivery(3) type c,
end of t_output.
data : i_output type t_output occurs 0 with header line.
ZVARV Table
*types : begin of t_zvarv,
zobject1 like zvarv-zobject1,
zobject2 like zvarv-zobject2,
zseqnumb like zvarv-zseqnumb,
zobjval like zvarv-zobjval,
end of t_zvarv.
*data : i_zvarv type t_zvarv occurs 0 with header line.
Error messages and total records
types : begin of t_error_log,
message(200) type c,
end of t_error_log.
data : i_error_log type t_error_log occurs 0 with header line.
Field catalog
data : t_fieldcat_tab type slis_t_fieldcat_alv with header line.
Variables
data : "v_aufsd like i_zvarv-zobjval, "Central order block for cust
v_knb1 type t_knb1, "Customer master company code
v_kna1 type t_kna1, "Customer master
v_knvp type t_knvp, "Customer masterpartenerfunctions
v_output type t_output, "Output data
v_error_log type t_error_log, "Error data
v_sequence(5) type n, "Total records
v_line type i, "Message
v_count type i, "Counter for KNA1 records
v_count1 type i, "Counter for KNVP records
v_result(100) type c, "Totals for KNA1
v_result1(100) type c, "Totals for KNVP
v_vkorg like knvp-vkorg. "Message for Validation
Constants
data : c_program(30) type c value 'ZSDI0215', " Program Name
c_parvw_rg like knvp-parvw value 'RG', "Partner type
c_aufsd(2) type c value 'CD'. "Central order block for Cust
Selection-screen
selection-screen begin of block b1 with frame title text-001.
parameters : p_vkorg like knvp-vkorg obligatory. "Sales Org
select-options : s_akont for knb1-akont obligatory default
'0001050100'. "Reconciliation Account
selection-screen end of block b1.
selection-screen begin of block b2 with frame title text-002.
parameters : p_alv as checkbox,
p_df as checkbox.
selection-screen end of block b2.
selection-screen begin of block b3 with frame title text-003.
parameters : p_lfile like filetextci-fileintern
default 'Z_IO01989_CUSTOMER_MASTER_DATA', " Logical file
p_pfile like rfpdo-rfbifile. " Physical File
selection-screen end of block b3.
At selection-screen
at selection-screen on p_vkorg.
Validation of Sales Organization
select single vkorg
into v_vkorg
from tvko
where vkorg = p_vkorg.
if v_vkorg is initial.
message e045 with text-030.
endif.
Start-of-selection
start-of-selection.
Fetch data
perform get_data.
Processing the data
perform process_data.
End-of-Selection
end-of-selection.
if p_alv eq 'X'.
Field catalog
perform f_prepare_fieldcat.
Disply alv report
perform f_display_report.
Disply error log
perform f_error_log.
elseif p_df eq 'x'.
Disply logical file & physical file
perform f_logical_file.
perform f_physical_file.
else.
Display the list
perform f_list_display.
Disply logical file & physical file
perform f_logical_file.
perform f_physical_file.
endif.
Form get_data
Fetch data and store in internal tables
form get_data .
Get zvarv data.
perform get_zvarv.
Get knb1 data
perform get_knb1.
Get kna1 data
perform get_kna1.
Get knvp data
perform get_knvp.
endform. " get_data
form get_zvarv
zvarv data
form get_zvarv .
Fetch data from zvarv.
select zobject1 zobject2 zseqnumb zobjval
from zvarv
into table i_zvarv
where zobject1 eq c_program.
sort i_zvarv by zobject2.
endform. " get_zvarv
form get_knb1
Get KNB1 data
form get_knb1 .
Fetch data from knb1.
select kunnr akont
from knb1
into table i_knb1
where akont in s_akont.
describe table i_knb1 lines v_line.
endform. " get_knb1
Form get_kna1
Get KNB1 data
form get_kna1 .
Fetch data from kna1.
select kunnr name1 stras ort01 stcd1 pstlz
from kna1
into table i_kna1
for all entries in i_knb1
where kunnr = i_knb1-kunnr and
aufsd ne 'cd'."v_aufsd.
endform. " get_kna1
Form get_knvp
Get KNVP data
form get_knvp .
Fetch data from knvp
select kunnr parvw kunn2 vkorg
from knvp
into table i_knvp
for all entries in i_knb1
where kunnr = i_knb1-kunnr
and vkorg = p_vkorg
and parvw = c_parvw_rg.
endform. " get_knvp
Form process_data
Processing output data
form process_data .
Get AUFSD value from ZVARV
perform zvarv_read.
loop at i_knb1.
read table i_kna1 with key kunnr = i_knb1-kunnr.
if sy-subrc ne 0.
concatenate: 'in kna1 no record found for Customer number'
i_knb1-kunnr
into v_result separated by space.
move v_result to v_error_log-message.
append v_error_log to i_error_log.
v_count = v_count + 1.
else.
move : i_kna1-name1 to i_output-custname,
i_kna1-stras to i_output-custaddress,
i_kna1-ort01 to i_output-custcity,
i_kna1-stcd1 to i_output-taxid,
i_kna1-pstlz to i_output-postalcode.
append i_output
endif.
loop at i_knvp where kunnr eq knb1-kunnr.
read table i_knvp with key kunnr = i_knb1-kunnr.
if sy-subrc <> 0.
concatenate : 'in knvp no record found for customer number'
v_knb1-kunnr
into v_result1 separated by space.
move v_result1 to v_error_log-message.
append v_error_log to i_error_log.
v_count1 = v_count1 + 1.
else.
Move the knvp data to output
move : i_knvp-kunnr to i_output-soldtocust,
i_knvp-kunn2 to i_output-payer.
append i_output
endif.
endloop.
v_sequence = v_sequence + 1.
Move non table related data to output
move : 'C' to i_output-recordtype,
v_sequence to i_output-sequence,
'1' to i_output-branch,
'ABC' to i_output-delivery.
append i_output.
endif.
endloop.
when i execute this one same data is displaying two times
for example total records is two
first record displaying two times and second one is displaying two times
please tell me how to do
regards
harshaviHi ,
first check all APPEND stmts ?. In any report u have to maintain one BASE internal table .
If u are working on KUNNR level , So maintain one final Internal table with all KUNNRS then Process all the data for final output.
regards
prabhu -
Problem :ALV:Deletion Flags not showing in output
hi all !
I have a alv program which displays customer data.there are three deletion flags columns in the output.
First deletion flag will be: KNA1-LOEVM
Second deletion flag will be: KNB1-LOEVM
Third deletion flag will be: KNVV-LOEVM
earlier all three were showing.but now no one is showing.i'm pasting my code here if any expert can have a look and find out the BUG.
CODE STARTS----
report zqsdcap_cust.
INCLUDE DECLARATIONS
include:
ziabapcapph_macros. "Holcim Useful Macros
TABLE DECLARATIONS
tables:
tvko, "Org. Unit: Sales Organizations
t001, "Company codes
kna1, "Customer Master
knvv, "Customer master sales
knvi, "Customer tax classificat'n
knb1, "Customer master company code
<<CR003-DEVK949538 start ins
adr6. "SMTP numbers
<<CR003-DEVK949538 end ins
TYPE DECLARATIONS
type-pools:
slis.
STRUCTURE DECLARATIONS
Define structure for keep data in ALV list
data: begin of gs_output_list,
vkorg like knvv-vkorg, "Sales organization
ktokd like kna1-ktokd, "Customer A/C grp
kunnr like kna1-kunnr, "Customer number
vtweg like knvv-vtweg, "Distribution channel
name1 like kna1-name1, "Name1
name3 like kna1-name3, "Name3
name4 like kna1-name4, "Name4
stras like kna1-stras, "Street
cityc like kna1-cityc, "City
bezei1 like t005h-bezei, "Sales office
land1 like kna1-land1, "Country
regio like kna1-regio, "Region
bezei2 like t005u-bezei, "Region decription
kdgrp like knvv-kdgrp, "Customer group
ktext like t151t-ktext, "Cust grp name
bzirk like knvv-bzirk, "Sales district
bztxt like t171t-bztxt, "Description
zterm like knvv-zterm, "Payment term
lzone like kna1-lzone, "Transport zone
vtext like tzont-vtext, "Description
erdat like kna1-erdat, "Creation date
end of gs_output_list.
Internal table for customer tax data
data: begin of gs_output_tax,
vkorg like knvv-vkorg, "Sales organization
kunnr like kna1-kunnr, "Customer number
vtweg like knvv-vtweg, "Distribution channel
name1 like kna1-name1, "Name1
name3 like kna1-name3, "Name3
name4 like kna1-name4, "Name4
ort01 like kna1-ort01, "City
stcd1 like kna1-stcd1, "STD code
spart like knvv-spart, "Division
taxkd like knvi-taxkd, "Tax classific'n
tatyp like knvi-tatyp, "Tax category
vtext like tskdt-vtext, "Tax description
end of gs_output_tax.
Internal table for HVL customer master
data: begin of gs_output_hvl,
kunnr like kna1-kunnr, "Customer number
stceg like kna1-stceg, "VAT registration no
telfx like kna1-telfx, "Fax number
telf1 like kna1-telf1, "First telephone number
stras like kna1-stras, "House number and stret
ort02 like kna1-ort02, "District
cityc like kna1-cityc, "City code
bezei like t005h-bezei, "City description
regio like kna1-regio, "Region
ort01 like kna1-ort01, "City
name2 like kna1-name2, "Name2
name1 like kna1-name1, "Name1
bzirk like knvv-bzirk, "Sales district
spart like knvv-spart, "Division
vtweg like knvv-vtweg, "Distribution channel
vkorg like knvv-vkorg, "Sales organization
end of gs_output_hvl.
Internal table for customer database CRM
data: begin of gs_output_crm,
vkorg like knvv-vkorg, "Sales organization
vtweg like knvv-vtweg, "Distribution channel
bzirk like knvv-bzirk, "Sales district
kunnr like kna1-kunnr, "Customer number
name1 like kna1-name1, "Name1
name2 like kna1-name2, "Name2
stras like kna1-stras, "House number street
ort01 like kna1-ort01, "City
ort02 like kna1-ort02, "District
pstlz like kna1-pstlz, "Postal code
cityc like kna1-cityc, "City code
telf1 like kna1-telf1, "First telephone number
telfx like kna1-telfx, "Fax number
vkbur like knvv-vkbur, "Sales office
regio like kna1-regio, "Region
vkgrp like knvv-vkgrp, "Sales group
kdgrp like knvv-kdgrp, "Customer group
kvgr3 like knvv-kvgr3, "Customer group 3
altkn like knb1-altkn, "Previous record number
erdat like knvv-erdat, "Creation date
found_dat like zcrm_bp_ext-found_dat, "Found date
<<CR000-DEVK943142 start del
versg like knvv-versg, "Customer statistic grp
bukrs like knb1-bukrs, "Company code
<<CR000-DEVK943142 end del
end of gs_output_crm.
Internal table for customer information
data: begin of gs_output_info,
kunnr like kna1-kunnr, "Customer number
vkorg like knvv-vkorg, "Sales organization
vtweg like knvv-vtweg, "Distribution channel
stcd2 like kna1-stcd2, "Tax code
name1 like kna1-name1, "Name1
name2 like kna1-name2, "Name2
<<CR002-DEVK944835 start ins
name3 like kna1-name3, "Name3
<<CR002-DEVK944835 end ins
stras like kna1-stras, "House number street
ort01 like kna1-ort01, "City
ort02 like kna1-ort02, "District
pstlz like kna1-pstlz, "Postal code
regio like kna1-regio, "Region
land1 like kna1-land1, "Country code
cityc like kna1-cityc, "City code
telf1 like kna1-telf1, "First telephone number
telfx like kna1-telfx, "Fax number
<<CR001-DEVK944239 start ins
bzirk like knvv-bzirk, "Sales District
vkbur like knvv-vkbur, "Sales Office
kdgrp like knvv-kdgrp, "Customer group
<<CR001-DEVK944239 end ins
vkgrp like knvv-vkgrp, "Sales group
kvgr3 like knvv-kvgr3, "Customer group 3
versg like knvv-versg, "Customer stat grp
kdkg2 like kna1-kdkg2, "Customer condition gp2
kdkg1 like kna1-kdkg1, "Customer condition gp1
<<CR001-DEVK944239 start del
kdgrp like knvv-kdgrp, "Customer group
<<CR001-DEVK944239 end del
altkn like knb1-altkn, "Previous record#
erdat like knvv-erdat, "Creation date
note_text(200) type c, "<<CR003-DEVK949538 ins
smtp_addr like adr6-smtp_addr, "<<CR003-DEVK949538 ins
loevm1 like kna1-loevm, "Deletion flag all
loevm2 like knb1-loevm, "Deletion flag Cd
loevm3 like knvv-loevm, "Deletion flag sal
end of gs_output_info.
ALV Grid Declaration
data:
gs_fieldcat type slis_fieldcat_alv,
gs_layout type slis_layout_alv,
gs_event type slis_t_event,
gs_variant like disvariant,
gs_sort_info type slis_sortinfo_alv,
gs_exit_caused_by_user type slis_exit_by_user,
gs_tabname type slis_tabname,
gs_header type slis_entry.
INTERNAL TABLE DECLARATIONS
Define internal table for keep data in ALV list
data:
gt_output_list like table of gs_output_list,
gt_output_tax like table of gs_output_tax,
gt_output_hvl like table of gs_output_hvl,
gt_output_crm like table of gs_output_crm,
gt_output_info like table of gs_output_info,
<<CR003-DEVK949538 start ins
gv_text like tline occurs 0 with header line,
<<CR003-DEVK949538 start ins
ALV Grid Declaration
gt_fieldcat type slis_t_fieldcat_alv,
gt_list_top_of_page type slis_t_listheader,
gt_list_top_of_page2 type slis_t_listheader,
gt_sort_info type slis_t_sortinfo_alv.
VARIABLE DECLARATIONS
data:
ALV Grid Declaration
gv_save,
gv_exit_caused_by_caller,
gv_repid type sy-repid,
gv_user_command type slis_formname value 'USER_COMMAND',
gv_top_of_page type slis_formname value 'TOP_OF_PAGE',
gv_top_of_list type slis_formname value 'TOP_OF_LIST',
gv_end_of_list type slis_formname value 'END_OF_LIST',
lv_store like thead-tdname, "<<CR003-DEVK949538 ins
lv_id like thead-tdid, "<<CR003-DEVK949538 ins
lv_lines type i. "<<CR003-DEVK949538 ins
SELECTION SCREEN DECLARATIONS
Define selection-screen of query
selection-screen: begin of block blk with frame title text-001.
select-options: s_vkorg for knvv-vkorg "Sales org
obligatory
memory id vko,
s_bzirk for knvv-bzirk, "Sales district
s_vtweg for knvv-vtweg, "Dist channel
s_spart for knvv-spart "Division
default 'CM',
s_taxkd for knvi-taxkd, "Tax classific'n
s_kunnr for kna1-kunnr, "Customer number
s_regio for kna1-regio, "Region
s_kdgrp for knvv-kdgrp, "Customer group
s_vkgrp for knvv-vkgrp, "Sales group
s_vkbur for knvv-vkbur, "Sales office
s_lzone for kna1-lzone, "Zone
s_erdat for kna1-erdat, "Creation date
s_zuawa for knb1-zuawa, "Key for sorting
s_ktokd for kna1-ktokd, "Customer A/C grp
s_altkn for knb1-altkn, "Previous rec no
s_bukrs for knb1-bukrs "Company code
obligatory
memory id buk,
s_loevm1 for kna1-loevm, "Deletion flag all
s_loevm2 for knb1-loevm, "Deletion flag Cd
s_loevm3 for knvv-loevm. "Deletion flag sal
selection-screen: end of block blk.
selection-screen: begin of block b2 with frame title text-002.
parameters: pr_cust1 radiobutton group a1
default 'X'
user-command bkg,
pr_cust2 radiobutton group a1,
pr_cust3 radiobutton group a1,
pr_cust4 radiobutton group a1,
pr_cust5 radiobutton group a1.
selection-screen: end of block b2.
AT SELECTION-SCREEN ON S_VKORG
at selection-screen on s_vkorg.
select vkorg
into tvko-vkorg
from tvko
where vkorg in s_vkorg.
authorization check for sales org.
authority-check object 'V_VBRK_VKO'
id 'VKORG' field tvko-vkorg
id 'ACTVT' field '03'.
check sy-subrc ne 0.
message e002(zgen) with 'No authorization for sales org.'
tvko-vkorg.
endselect.
AT SELECTION-SCREEN ON S_BUKRS
at selection-screen on s_bukrs.
if pr_cust4 eq 'X' or
pr_cust5 eq 'X'.
select bukrs
into t001-bukrs
from t001
where bukrs in s_bukrs.
authorization check for plant and company code
authority-check object 'A_S_WERK'
id 'BUKRS' field t001-bukrs
id 'WERKS' dummy.
check sy-subrc ne 0.
message e002(zgen) with 'No authorization for this company code.'
t001-bukrs.
endselect.
endif.
AT SELECTION-SCREEN OUTPUT
at selection-screen output.
loop at screen .
if pr_cust1 eq 'X'.
if screen-name = 'S_VTWEG-LOW' or
screen-name = 'S_VTWEG-HIGH' or
screen-name = 'S_SPART-LOW' or
screen-name = 'S_SPART-HIGH' or
screen-name = 'S_TAXKD-LOW' or
screen-name = 'S_TAXKD-HIGH' or
screen-name = 'S_BUKRS-LOW' or
screen-name = 'S_BUKRS-HIGH' or
screen-name = 'S_ERDAT-LOW' or
screen-name = 'S_ERDAT-HIGH' or
screen-name = 'S_ALTKN-LOW' or
screen-name = 'S_ALTKN-HIGH' or
screen-name = 'S_VKBUR-LOW' or
screen-name = 'S_VKBUR-HIGH' or
screen-name = 'S_LOEVM1-LOW' or
screen-name = 'S_LOEVM1-HIGH' or
screen-name = 'S_LOEVM2-LOW' or
screen-name = 'S_LOEVM2-HIGH' or
screen-name = 'S_LOEVM3-LOW' or
screen-name = 'S_LOEVM3-HIGH'.
screen-input = 0.
endif.
elseif pr_cust2 eq 'X'.
if screen-name = 'S_BZIRK-LOW' or
screen-name = 'S_BZIRK-HIGH' or
screen-name = 'S_KDGRP-LOW' or
screen-name = 'S_KDGRP-HIGH' or
screen-name = 'S_LZONE-LOW' or
screen-name = 'S_LZONE-HIGH' or
screen-name = 'S_KTOKD-LOW' or
screen-name = 'S_KTOKD-HIGH' or
screen-name = 'S_ERDAT-LOW' or
screen-name = 'S_ERDAT-HIGH' or
screen-name = 'S_KTOKD-LOW' or
screen-name = 'S_KTOKD-HIGH' or
screen-name = 'S_ALTKN-LOW' or
screen-name = 'S_ALTKN-HIGH' or
screen-name = 'S_VKBUR-LOW' or
screen-name = 'S_VKBUR-HIGH' or
screen-name = 'S_LOEVM1-LOW' or
screen-name = 'S_LOEVM1-HIGH' or
screen-name = 'S_LOEVM2-LOW' or
screen-name = 'S_LOEVM2-HIGH' or
screen-name = 'S_LOEVM3-LOW' or
screen-name = 'S_LOEVM3-HIGH' or
screen-name = 'S_BUKRS-LOW' or
screen-name = 'S_BUKRS-HIGH' or
screen-name = 'S_VKGRP-LOW' or
screen-name = 'S_VKGRP-HIGH'.
screen-input = 0.
endif.
elseif pr_cust3 eq 'X'.
if screen-name = 'S_BZIRK-LOW' or
screen-name = 'S_BZIRK-HIGH' or
screen-name = 'S_KDGRP-LOW' or
screen-name = 'S_KDGRP-HIGH' or
screen-name = 'S_LZONE-LOW' or
screen-name = 'S_LZONE-HIGH' or
screen-name = 'S_ERDAT-LOW' or
screen-name = 'S_ERDAT-HIGH' or
screen-name = 'S_KTOKD-LOW' or
screen-name = 'S_KTOKD-HIGH' or
screen-name = 'S_SPART-LOW' or
screen-name = 'S_SPART-HIGH' or
screen-name = 'S_TAXKD-LOW' or
screen-name = 'S_TAXKD-HIGH' or
screen-name = 'S_REGIO-LOW' or
screen-name = 'S_REGIO-HIGH' or
screen-name = 'S_ALTKN-LOW' or
screen-name = 'S_ALTKN-HIGH' or
screen-name = 'S_VKBUR-LOW' or
screen-name = 'S_VKBUR-HIGH' or
screen-name = 'S_LOEVM1-LOW' or
screen-name = 'S_LOEVM1-HIGH' or
screen-name = 'S_LOEVM2-LOW' or
screen-name = 'S_LOEVM2-HIGH' or
screen-name = 'S_LOEVM3-LOW' or
screen-name = 'S_LOEVM3-HIGH' or
screen-name = 'S_BUKRS-LOW' or
screen-name = 'S_BUKRS-HIGH' or
screen-name = 'S_VKGRP-LOW' or
screen-name = 'S_VKGRP-HIGH' or
screen-name = 'S_VTWEG-LOW' or
screen-name = 'S_VTWEG-HIGH'.
screen-input = 0.
endif.
elseif pr_cust4 eq 'X'.
if screen-name = 'S_LZONE-LOW' or
screen-name = 'S_LZONE-HIGH' or
screen-name = 'S_TAXKD-LOW' or
screen-name = 'S_TAXKD-HIGH' or
screen-name = 'S_REGIO-LOW' or
screen-name = 'S_REGIO-HIGH' or
screen-name = 'S_ZUAWA-LOW' or
screen-name = 'S_ZUAWA-HIGH'.
screen-input = 0.
endif.
else.
if screen-name = 'S_LZONE-LOW' or
screen-name = 'S_LZONE-HIGH' or
screen-name = 'S_TAXKD-LOW' or
screen-name = 'S_TAXKD-HIGH'.
screen-input = 0.
endif.
endif.
modify screen.
endloop.
INITIALIZATION
initialization.
perform deactivate_program using sy-cprog.
START OF SELECTION
start-of-selection.
Customized function to get data from database table
perform get_data.
<<CR003-DEVK949538 start ins
perform get_internal_note_text tables gt_output_info.
<<CR003-DEVK949538 end ins
Create sort of ALV list
perform build_sort.
Send data to ALV list to display
if pr_cust1 eq 'X'.
gs_tabname = text-003.
gs_header = text-004.
perform write_alv_report tables gt_output_list
gt_sort_info.
elseif pr_cust2 eq 'X'.
gs_tabname = text-005.
gs_header = text-006.
perform write_alv_report tables gt_output_tax
gt_sort_info.
elseif pr_cust3 eq 'X'.
gs_tabname = text-007.
gs_header = text-008.
perform write_alv_report tables gt_output_hvl
gt_sort_info.
elseif pr_cust4 eq 'X'.
gs_tabname = text-009.
gs_header = text-010.
perform write_alv_report tables gt_output_crm
gt_sort_info.
else.
gs_tabname = text-011.
gs_header = text-012.
perform write_alv_report tables gt_output_info
gt_sort_info .
endif.
FORM EVENTTAB_FIELD
Fill Event tab, for ALV Grid Display
form eventtab_field using gs_events type slis_t_event.
data:
ls_event type slis_alv_event.
call function 'REUSE_ALV_EVENTS_GET'
exporting
i_list_type = 0
importing
et_events = gs_events.
read table gs_events with key name = slis_ev_top_of_page
into ls_event.
if sy-subrc = 0.
move gv_top_of_page to ls_event-form.
append ls_event to gs_events.
endif.
endform. " eventtab_field
FORM TOP_OF_PAGE
Write at Top of Page of ALV grid
form top_of_page.
call function 'REUSE_ALV_COMMENTARY_WRITE'
exporting
it_list_commentary = gt_list_top_of_page.
endform. "top_of_page
FORM COMMENT_BUILD
Write header of ALV grid
form comment_build using lt_top_of_page type slis_t_listheader
gs_header.
data:
lv_tdate(10),
lv_fdate(10),
ls_line type slis_listheader.
clear: ls_line.
ls_line-typ = 'H'.
ls_line-info = gs_header.
append ls_line to lt_top_of_page.
endform. "comment_build
FORM INIT_FIELDCAT
Fill Field Catalog for ALV Grid
form init_fieldcat using gs_tabname.
refresh: gt_fieldcat.
use this function to get the all fields in the structure.
call function 'REUSE_ALV_FIELDCATALOG_MERGE'
exporting
i_program_name = gv_repid
i_internal_tabname = gs_tabname
i_inclname = gv_repid
changing
ct_fieldcat = gt_fieldcat.
if sy-subrc eq 0.
clear mark for key field to set color of key column
gs_fieldcat-key = ''.
modify gt_fieldcat from gs_fieldcat transporting key
where fieldname ne space.
read table gt_fieldcat with key fieldname = 'FOUND_DAT'
into gs_fieldcat.
gs_fieldcat-seltext_l = text-013.
modify gt_fieldcat from gs_fieldcat
transporting seltext_l
where fieldname = 'FOUND_DAT'.
<<CR003-DEVK949538 start ins
read table gt_fieldcat with key fieldname = 'NOTE_TEXT'
into gs_fieldcat.
gs_fieldcat-seltext_l = text-014.
modify gt_fieldcat from gs_fieldcat
transporting seltext_l
where fieldname = 'NOTE_TEXT'.
<<CR003-DEVK949538 start ins
endif.
endform. "init_fieldcat
FORM INIT_LAYOUT
Layout initial
form init_layout using gs_layout type slis_layout_alv.
gs_layout-info_fieldname = 'LINECOLOR'.
gs_layout-colwidth_optimize = 'X'.
gs_layout-zebra = 'X'.
endform. " init_layout
FORM WRITE_ALV_REPORT
form write_alv_report tables gt_output
gt_sort_info.
ALV Grid display
clear: gv_repid,
gv_save.
gv_repid = sy-repid.
gs_variant-report = gv_repid.
gv_save = 'A'.
Build fieldcatalog
perform init_fieldcat using gs_tabname.
Build list events
perform eventtab_field using gs_event.
Show in ALV Grid form
perform init_layout using gs_layout.
Build comments
perform comment_build using gt_list_top_of_page[]
gs_header.
call function 'REUSE_ALV_GRID_DISPLAY'
exporting
i_buffer_active = ' '
i_callback_program = gv_repid
is_layout = gs_layout
i_save = gv_save
is_variant = gs_variant
it_events = gs_event[]
it_sort = gt_sort_info[]
it_fieldcat = gt_fieldcat[]
importing
e_exit_caused_by_caller = gv_exit_caused_by_caller
es_exit_caused_by_user = gs_exit_caused_by_user
tables
t_outtab = gt_output
exceptions
program_error = 1
others = 2.
endform. "write_alv_report
FORM GET_DATA
form get_data.
Get customer list
if pr_cust1 eq 'X'.
select knvv~vkorg
kna1~ktokd
kna1~kunnr
knvv~vtweg
kna1~name1
kna1~name3
kna1~name4
kna1~stras
kna1~cityc
kna1~regio
kna1~land1
knvv~kdgrp
knvv~bzirk
knvv~zterm
kna1~lzone
kna1~erdat
from kna1 join knvv
on kna1kunnr = knvvkunnr
into corresponding fields of table gt_output_list
where kna1~kunnr in s_kunnr
and knvv~vkorg in s_vkorg
and knvv~bzirk in s_bzirk
and kna1~regio in s_regio
and knvv~kdgrp in s_kdgrp
and kna1~lzone in s_lzone
and kna1~erdat in s_erdat
and kna1~ktokd in s_ktokd.
loop at gt_output_list into gs_output_list.
Get City decsription
perform get_city_description using gs_output_list-cityc
changing gs_output_list-bezei1.
Get Region description
select single bezei
from t005u
into gs_output_list-bezei2
where bland = gs_output_list-regio
and land1 = gs_output_list-land1"<<CR000-DEVK942345 ins
and spras = sy-langu.
Get customer group description
select single ktext
from t151t
into gs_output_list-ktext
where kdgrp = gs_output_list-kdgrp
and spras = sy-langu.
Get sales district description
select single bztxt
from t171t
into gs_output_list-bztxt
where bzirk = gs_output_list-bzirk
and spras = sy-langu.
Get zone decription
select single vtext
from tzont
into gs_output_list-vtext
where zone1 = gs_output_list-lzone
and spras = sy-langu.
modify gt_output_list from gs_output_list index sy-tabix
transporting bezei1
bezei2
ktext
bztxt
vtext.
clear gs_output_list.
endloop.
Get customer tax data
elseif pr_cust2 eq 'X'.
select kna1~kunnr
kna1~name1
kna1~name3
kna1~name4
kna1~ort01
kna1~stcd1
knvv~vkorg
knvv~spart
knvv~vtweg
knvi~taxkd
knvi~tatyp
from kna1 join knvv
on kna1kunnr = knvvkunnr
join knvi
on kna1kunnr = knvikunnr
into corresponding fields of table gt_output_tax
where kna1~kunnr in s_kunnr
and knvv~vkorg in s_vkorg
and knvv~vtweg in s_vtweg
and knvv~spart in s_spart
and kna1~regio in s_regio
and knvi~taxkd in s_taxkd.
Get customer tax description
loop at gt_output_tax into gs_output_tax.
select single vtext
from tskdt
into gs_output_tax-vtext
where tatyp = gs_output_tax-tatyp
and taxkd = gs_output_tax-taxkd
and spras = sy-langu.
if sy-subrc eq 0.
modify gt_output_tax from gs_output_tax index sy-tabix
transporting vtext.
clear gs_output_tax.
endif.
endloop.
Get customer HVL data
elseif pr_cust3 eq 'X'.
select kna1~kunnr
kna1~stceg
kna1~telfx
kna1~telf1
kna1~stras
kna1~ort02
kna1~cityc
kna1~regio
kna1~ort01
kna1~name2
kna1~name1
knvv~bzirk
knvv~spart
knvv~vtweg
knvv~vkorg
from kna1 join knvv
on kna1kunnr = knvvkunnr
into corresponding fields of table gt_output_hvl
where kna1~kunnr in s_kunnr
and knvv~vkorg in s_vkorg.
loop at gt_output_hvl into gs_output_hvl.
Get city description.
perform get_city_description using gs_output_hvl-cityc
changing gs_output_hvl-bezei.
if sy-subrc eq 0.
modify gt_output_hvl from gs_output_hvl index sy-tabix
transporting bezei.
clear gs_output_hvl.
endif.
endloop.
Get cust CRM data
elseif pr_cust4 eq 'X'.
select kna1~kunnr
knvv~versg "<<CR000-DEVK943142 del
knvv~vkorg
knvv~vtweg
knvv~bzirk
knvv~vkgrp
knvv~kdgrp
knvv~vkbur
kna1~name1
kna1~name2
kna1~ort01
kna1~pstlz
kna1~regio
kna1~stras
kna1~telf1
kna1~telfx
kna1~ort02
kna1~cityc
knvv~kvgr3
knb1~altkn
knb1~bukrs "<<CR000-DEVK943142 del
knvv~erdat
zcrm_bp_ext~found_dat
from kna1 join knvv
on kna1kunnr = knvvkunnr
join knb1
on knvvkunnr = knb1kunnr
join zcrm_bp_ext
on knb1kunnr = zcrm_bp_extkunnr
into corresponding fields of table gt_output_crm
where kna1~kunnr in s_kunnr
and knvv~vkorg in s_vkorg
and knvv~vtweg in s_vtweg
and knvv~spart in s_spart
and knvv~bzirk in s_bzirk
and knvv~kdgrp in s_kdgrp
and knvv~vkgrp in s_vkgrp
and knvv~vkbur in s_vkbur
and knvv~erdat in s_erdat
and kna1~ktokd in s_ktokd
and kna1~loevm in s_loevm1
and knb1~loevm in s_loevm2
and knvv~loevm in s_loevm3
and knb1~bukrs in s_bukrs
and knb1~altkn in s_altkn.
else.
Get customer information
<<CR001-DEVK944342 start del
select kna1~kunnr
knvv~vkorg
knvv~vtweg
kna1~stcd2
kna1~name1
kna1~name2
kna1~ort01
kna1~land1
kna1~pstlz
kna1~regio
kna1~stras
kna1~telf1
kna1~telfx
knvv~bzirk "<<CR001-DEVK944239 ins
knvv~vkbur "<<CR001-DEVK944239 ins
kna1~ort02
kna1~cityc
knvv~vkgrp
knvv~kvgr3
knvv~versg
kna1~kdkg2
kna1~kdkg1
knvv~kdgrp
knb1~altkn
knvv~erdat
kna1~loevm
knb1~loevm
knvv~loevm
<<CR001-DEVK944342 end del
<<CR001-DEVK944342 start ins
select kna1~kunnr
knvv~vkorg
knvv~vtweg
kna1~stcd2
kna1~name1
kna1~name2
kna1~name3 "<<CR002-DEVK944835 ins
kna1~stras
kna1~ort01
kna1~ort02
kna1~pstlz
kna1~regio
kna1~land1
kna1~cityc
kna1~telf1
kna1~telfx
knvv~bzirk
knvv~vkbur
knvv~kdgrp
knvv~vkgrp
knvv~kvgr3
knvv~versg
kna1~kdkg2
kna1~kdkg1
knb1~altkn
knvv~erdat
kna1~loevm
knb1~loevm
knvv~loevm
<<CR001-DEVK944342 end ins
from kna1 join knvv
on kna1kunnr = knvvkunnr
join knb1
on kna1kunnr = knb1kunnr
<<CR001-DEVK944252 start del
into corresponding fields of table gt_output_info
<<CR001-DEVK944252 end del
<<CR003-DEVK949538 start del
into table gt_output_info "<<CR001-DEVK944342 ins
<<CR003-DEVK949538 end del
<<CR003-DEVK949538 start ins
into corresponding fields of table gt_output_info
<<CR003-DEVK949538 end ins
where kna1~kunnr in s_kunnr
and knvv~vkorg in s_vkorg
and knvv~vtweg in s_vtweg
and knvv~spart in s_spart
and knvv~bzirk in s_bzirk
and knvv~kdgrp in s_kdgrp
and knvv~vkgrp in s_vkgrp
and knvv~vkbur in s_vkbur
and knvv~erdat in s_erdat
and kna1~ktokd in s_ktokd
and kna1~regio in s_regio
<<CR001-DEVK944252 start del
and kna1~loevm in s_loevm1
and knb1~loevm in s_loevm2
and knvv~loevm in s_loevm3
<<CR001-DEVK944252 end del
<<CR001-DEVK944252 start ins
and ( kna1~loevm in s_loevm1
or knb1~loevm in s_loevm2
or knvv~loevm in s_loevm3 )
<<CR001-DEVK944252 end ins
and knb1~zuawa in s_zuawa
and knb1~bukrs in s_bukrs
and knb1~altkn in s_altkn.
<<CR003-DEVK949538 start ins
loop at gt_output_info into gs_output_info.
select single adrnr
into kna1-adrnr
from kna1
where kunnr = gs_output_info-kunnr.
check sy-subrc eq 0.
select single smtp_addr
into adr6-smtp_addr
from adr6
where addrnumber = kna1-adrnr.
check sy-subrc eq 0.
gs_output_info-smtp_addr = adr6-smtp_addr.
modify gt_output_info from gs_output_info.
endloop.
<<CR003-DEVK949538 end ins
endif.
<<CR003-DEVK949538 start ins
loop at gt_output_info into gs_output_info.
lv_store = gs_output_info-loevm1.
endloop.
<<CR003-DEVK949538 end ins
endform.
FORM BUILD_SORT
form build_sort.
if pr_cust1 eq 'X' or
pr_cust2 eq 'X'.
clear gs_sort_info.
gs_sort_info-fieldname = 'VKORG'.
gs_sort_info-spos = 1.
gs_sort_info-up = 'X'.
append gs_sort_info to gt_sort_info.
endif.
clear gs_sort_info.
gs_sort_info-fieldname = 'KUNNR'.
gs_sorhi shivaji!
thx for the reply.
can u chk whether there is any problem with the queries or not.
regards
sachin -
hi friends,
Help me how to do this
REPORT ZINTERFACE_SAMPLE.
type-pools:SLIS.
TABLES:knb1, "Customer Master (Company Code)
kna1,
knvp. "Customer Master Partner Functions
TYPES:BEGIN OF T_knb1,
kunnr like knb1-kunnr,
bukrs like knb1-bukrs,
akont like knb1-akont,
END OF T_knb1.
TYPES:BEGIN OF T_kna1,
kunnr like kna1-kunnr, "customer number
NAME1 like KNA1-NAME1, "customer name
stras like KNA1-STRAS, "Customer address
ort01 like KNA1-ORT01, "Customer city
stcd1 like KNA1-STCD1, "Tax id
pstlz like KNA1-PSTLZ, "Postal code
END OF T_kna1.
TYPES:BEGIN OF T_knvp,
kunnr like knvp-kunnr, "customer number
parvw like knvp-parvw,
kunn2 like knvp-kunn2, "Customer number of business partner
END OF T_KNVP.
TYPES:BEGIN OF T_final,
Record_type TYPE c,
Sold_to_cust(10) TYPE c,
Payer(10) TYPE c,
Sequence(5) TYPE n,
Cust_name(35) TYPE c,
Cust_adreess(35) TYPE c,
Cust_city(35) TYPE c,
Tax_id(16) TYPE c,
Postal_code(5) TYPE c,
Branch TYPE c,
Delivery(3) TYPE c,
END OF T_final.
*Internal table declaration
DATA:I_knb1 TYPE STANDARD TABLE OF t_knb1 initial size 0,
i_kna1 TYPE STANDARD TABLE OF t_kna1 initial size 0,
i_knvp TYPE STANDARD TABLE OF t_knvp initial size 0,
i_final TYPE STANDARD TABLE OF t_final initial size 0.
DATA: t_fieldcat_tab TYPE slis_t_fieldcat_alv WITH HEADER LINE.
*Work area declaration
DATA:wa_knb1 TYPE t_knb1,
wa_kna1 TYPE t_kna1,
wa_knvp TYPE t_knvp,
wa_final TYPE t_final.
*variable declaration
data:sequence TYPe n,
g_line TYPE i.
selection screen *
SELECTION-screen begin of block b1 with frame title text-001.
parameters:p_bukrs like knb1-bukrs, "Company code
p_akont like knb1-akont .
selection-screen end of block b1.
SELECTION-screen begin of block b2 with frame title text-002.
PARAMETERS:R1 RADIOBUTTON GROUP G1,
R2 RADIOBUTTON GROUP G1.
Parameters:p_file like rlgrap-filename.
"Recon Account in General Ledger
selection-screen end of block b2.
*AT selection-screen ON VALUE-REQUEST FOR P_FILE.
CALL FUNCTION 'F4_FILENAME'
IMPORTING
FILE_NAME = P_FILE.
START-OF-selection.
PERFORM f_fetchdata.
PERFORM f_prepare_fieldcat.
PERFORM f_display_report.
*END-OF-SELECTION.
*IF R1 EQ 'X'.
*perform F_DOWNLOAD.
*ENDIF.
*IF R2 EQ 'X'.
*OPEN DATASET P_FILE FOR OUTPUT IN text mode ENCODING DEFAULT.
*LOOP AT i_final INTO WA_final.
*TRANSFER WA_final TO P_FILE.
*ENDLOOP.
*CLOSE DATASET P_FILE.
*ENDIF.
*& Form f_fetchdata
FORM f_fetchdata .
select kunnr
bukrs
akont
from knb1
into table i_knb1
where bukrs = p_bukrs
AND akont = p_akont.
DESCRIBE TABLE i_knb1 LINES g_line.
LOOP AT i_knb1 INTO wa_knb1.
SELECT single KUNNR
NAME1
STRAS
ORT01
STCD1
PSTLZ
FROM kna1
INTO wa_kna1
where kunnr = wa_knb1-kunnr.
if sy-subrc <> 0.
*Error KNA1 record not found.
endif.
SELECT single kunnr
parvw
kunn2
FROM KNVP
INTO wa_knvp
where kunnr = wa_knb1-kunnr
AND parvw = 'RG'.
if sy-subrc <> 0.
*Error KNA1 record not found.
endif.
sequence = sequence + 1.
MOVE: 'c' TO wa_final-Record_type,
wa_knvp-kunnr TO wa_final-Sold_to_cust,
sequence TO wa_final-Sequence,
wa_KNA1-NAME1 TO wa_final-Cust_name,
wa_kna1-STRAS TO wa_final-Cust_adreess ,
wa_kna1-ort01 TO wa_final-Cust_city,
wa_kna1-STCD1 TO wa_final-Tax_id,
wa_kna1-PSTLZ TO wa_final-Postal_code,
'1' TO wa_final-branch,
'abc' TO wa_final-Delivery.
INSERT wa_final INTO TABLE i_final.
endloop.
ENDFORM. " f_fetchdata
FORM f_prepare_fieldcat.
t_fieldcat_tab-col_pos = 1.
t_fieldcat_tab-tabname = 'i_final'.
t_fieldcat_tab-fieldname = 'Record_type'.
t_fieldcat_tab-seltext_l = 'Record type'.
APPEND t_fieldcat_tab.
t_fieldcat_tab-col_pos = 2.
t_fieldcat_tab-tabname = 'i_final'.
t_fieldcat_tab-fieldname = 'Sold_to_cust'.
t_fieldcat_tab-seltext_l = 'Sold to cust'.
APPEND t_fieldcat_tab.
t_fieldcat_tab-col_pos = 3.
t_fieldcat_tab-tabname = 'i_final'.
t_fieldcat_tab-fieldname = 'payer'.
t_fieldcat_tab-seltext_l = 'Payer'.
APPEND t_fieldcat_tab.
t_fieldcat_tab-col_pos = 4.
t_fieldcat_tab-tabname = 'i_final'.
t_fieldcat_tab-fieldname = 'Sequence'.
t_fieldcat_tab-seltext_l = 'sequence'.
APPEND t_fieldcat_tab.
t_fieldcat_tab-col_pos = 5.
t_fieldcat_tab-tabname = 'i_final'.
t_fieldcat_tab-fieldname = 'Cust_name'.
t_fieldcat_tab-seltext_l = 'Cust name'.
APPEND t_fieldcat_tab.
t_fieldcat_tab-col_pos = 6.
t_fieldcat_tab-tabname = 'i_final'.
t_fieldcat_tab-fieldname = 'Cust_adreess'.
t_fieldcat_tab-seltext_l = 'Cust adreess'.
APPEND t_fieldcat_tab.
t_fieldcat_tab-col_pos = 7.
t_fieldcat_tab-tabname = 'i_final'.
t_fieldcat_tab-fieldname = 'Cust_city'.
t_fieldcat_tab-seltext_l = 'Cust city'.
APPEND t_fieldcat_tab.
t_fieldcat_tab-col_pos = 8.
t_fieldcat_tab-tabname = 'i_final'.
t_fieldcat_tab-fieldname = 'Tax_id'.
t_fieldcat_tab-seltext_l = 'Tax id'.
APPEND t_fieldcat_tab.
t_fieldcat_tab-col_pos = 9.
t_fieldcat_tab-tabname = 'i_final'.
t_fieldcat_tab-fieldname = 'Postal_code'.
t_fieldcat_tab-seltext_l = 'Postal code'.
APPEND t_fieldcat_tab.
t_fieldcat_tab-col_pos = 10.
t_fieldcat_tab-tabname = 'i_final'.
t_fieldcat_tab-fieldname = 'Branch'.
t_fieldcat_tab-seltext_l = 'Branch'.
APPEND t_fieldcat_tab.
t_fieldcat_tab-col_pos = 11.
t_fieldcat_tab-tabname = 'i_final'.
t_fieldcat_tab-fieldname = 'KWMENG'.
t_fieldcat_tab-seltext_l = 'Order Qty'.
APPEND t_fieldcat_tab.
t_fieldcat_tab-col_pos = 12.
t_fieldcat_tab-tabname = 'i_final'.
t_fieldcat_tab-fieldname = 'Delivery'.
t_fieldcat_tab-seltext_l = 'Delivery'.
APPEND t_fieldcat_tab.
ENDFORM. " f_prepare_fieldcat
*& Form f_display_report
*To display the ALV Report
FORM f_display_report.
DATA: l_repid LIKE sy-repid.
l_repid = sy-repid.
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = l_repid
i_buffer_active = 'X'
IT_FIELDCAT = t_fieldcat_tab[]
I_DEFAULT = 'X'
I_SAVE = 'A'
TABLES
T_OUTTAB = i_final[].
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." f_display_report
*& Form F_DOWNLOAD
text
--> p1 text
<-- p2 text
FORM F_DOWNLOAD .
*CALL FUNCTION 'WS_DOWNLOAD'
EXPORTING
FILENAME = p_file
FILETYPE = 'ASC'
MODE = ' '
WK1_N_FORMAT = ' '
WK1_N_SIZE = ' '
WK1_T_FORMAT = ' '
WK1_T_SIZE = ' '
COL_SELECT = ' '
COL_SELECTMASK = ' '
NO_AUTH_CHECK = ' '
IMPORTING
FILELENGTH =
TABLES
DATA_TAB = i_final
EXCEPTIONS
FILE_OPEN_ERROR = 1
FILE_WRITE_ERROR = 2
INVALID_FILESIZE = 3
INVALID_TYPE = 4
NO_BATCH = 5
UNKNOWN_ERROR = 6
INVALID_TABLE_WIDTH = 7
GUI_REFUSE_FILETRANSFER = 8
CUSTOMER_ERROR = 9
NO_AUTHORITY = 10
OTHERS = 11
*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. " F_DOWNLOAD
for this one when i given the proper input
it showing the Runtime error.
Could u please tell me what mistake i have done
Urgent help
Regards
harshavi N.HI,
Run this program..
REPORT ZINTERFACE_SAMPLE.
type-pools:SLIS.
TABLES:knb1, "Customer Master (Company Code)
kna1,
knvp. "Customer Master Partner Functions
TYPES:BEGIN OF T_knb1,
kunnr like knb1-kunnr,
bukrs like knb1-bukrs,
akont like knb1-akont,
END OF T_knb1.
TYPES:BEGIN OF T_kna1,
kunnr like kna1-kunnr, "customer number
NAME1 like KNA1-NAME1, "customer name
stras like KNA1-STRAS, "Customer address
ort01 like KNA1-ORT01, "Customer city
stcd1 like KNA1-STCD1, "Tax id
pstlz like KNA1-PSTLZ, "Postal code
END OF T_kna1.
TYPES:BEGIN OF T_knvp,
kunnr like knvp-kunnr, "customer number
parvw like knvp-parvw,
kunn2 like knvp-kunn2, "Customer number of business partner
END OF T_KNVP.
TYPES:BEGIN OF T_final,
Record_type TYPE c,
Sold_to_cust(10) TYPE c,
Payer(10) TYPE c,
Sequence(5) TYPE n,
Cust_name(35) TYPE c,
Cust_adreess(35) TYPE c,
Cust_city(35) TYPE c,
Tax_id(16) TYPE c,
Postal_code(5) TYPE c,
Branch TYPE c,
Delivery(3) TYPE c,
END OF T_final.
*Internal table declaration
DATA:I_knb1 TYPE STANDARD TABLE OF t_knb1 initial size 0,
i_kna1 TYPE STANDARD TABLE OF t_kna1 initial size 0,
i_knvp TYPE STANDARD TABLE OF t_knvp initial size 0,
i_final TYPE STANDARD TABLE OF t_final initial size 0.
DATA: t_fieldcat_tab TYPE slis_t_fieldcat_alv WITH HEADER LINE.
*Work area declaration
DATA:wa_knb1 TYPE t_knb1,
wa_kna1 TYPE t_kna1,
wa_knvp TYPE t_knvp,
wa_final TYPE t_final.
*variable declaration
data:sequence TYPe n,
g_line TYPE i.
selection screen *
SELECTION-screen begin of block b1 with frame title text-001.
parameters:p_bukrs like knb1-bukrs, "Company code
p_akont like knb1-akont .
selection-screen end of block b1.
SELECTION-screen begin of block b2 with frame title text-002.
PARAMETERS:R1 RADIOBUTTON GROUP G1,
R2 RADIOBUTTON GROUP G1.
Parameters:p_file like rlgrap-filename.
"Recon Account in General Ledger
selection-screen end of block b2.
*AT selection-screen ON VALUE-REQUEST FOR P_FILE.
CALL FUNCTION 'F4_FILENAME'
IMPORTING
FILE_NAME = P_FILE.
START-OF-selection.
PERFORM f_fetchdata.
PERFORM f_prepare_fieldcat.
PERFORM f_display_report.
*END-OF-SELECTION.
*IF R1 EQ 'X'.
*perform F_DOWNLOAD.
*ENDIF.
*IF R2 EQ 'X'.
*OPEN DATASET P_FILE FOR OUTPUT IN text mode ENCODING DEFAULT.
*LOOP AT i_final INTO WA_final.
*TRANSFER WA_final TO P_FILE.
*ENDLOOP.
*CLOSE DATASET P_FILE.
*ENDIF.
*& Form f_fetchdata
FORM f_fetchdata .
select kunnr
bukrs
akont
from knb1
into table i_knb1
where bukrs = p_bukrs
AND akont = p_akont.
DESCRIBE TABLE i_knb1 LINES g_line.
LOOP AT i_knb1 INTO wa_knb1.
SELECT single KUNNR
NAME1
STRAS
ORT01
STCD1
PSTLZ
FROM kna1
INTO wa_kna1
where kunnr = wa_knb1-kunnr.
if sy-subrc <> 0.
*Error KNA1 record not found.
endif.
SELECT single kunnr
parvw
kunn2
FROM KNVP
INTO wa_knvp
where kunnr = wa_knb1-kunnr
AND parvw = 'RG'.
if sy-subrc <> 0.
*Error KNA1 record not found.
endif.
sequence = sequence + 1.
MOVE: 'c' TO wa_final-Record_type,
wa_knvp-kunnr TO wa_final-Sold_to_cust,
sequence TO wa_final-Sequence,
wa_KNA1-NAME1 TO wa_final-Cust_name,
wa_kna1-STRAS TO wa_final-Cust_adreess ,
wa_kna1-ort01 TO wa_final-Cust_city,
wa_kna1-STCD1 TO wa_final-Tax_id,
wa_kna1-PSTLZ TO wa_final-Postal_code,
'1' TO wa_final-branch,
'abc' TO wa_final-Delivery.
INSERT wa_final INTO TABLE i_final.
endloop.
ENDFORM. " f_fetchdata
FORM f_prepare_fieldcat.
t_fieldcat_tab-col_pos = 1.
t_fieldcat_tab-tabname = 'I_FINAL'.
t_fieldcat_tab-fieldname = 'RECORD_TYPE'.
t_fieldcat_tab-seltext_l = 'Record type'.
APPEND t_fieldcat_tab.
t_fieldcat_tab-col_pos = 2.
t_fieldcat_tab-tabname = 'I_FINAL'.
t_fieldcat_tab-fieldname = 'SOLD_TO_CUST'.
t_fieldcat_tab-seltext_l = 'Sold to cust'.
APPEND t_fieldcat_tab.
t_fieldcat_tab-col_pos = 3.
t_fieldcat_tab-tabname = 'I_FINAL'.
t_fieldcat_tab-fieldname = 'PAYER'.
t_fieldcat_tab-seltext_l = 'Payer'.
APPEND t_fieldcat_tab.
t_fieldcat_tab-col_pos = 4.
t_fieldcat_tab-tabname = 'I_FINAL'.
t_fieldcat_tab-fieldname = 'SEQUENCE'.
t_fieldcat_tab-seltext_l = 'sequence'.
APPEND t_fieldcat_tab.
t_fieldcat_tab-col_pos = 5.
t_fieldcat_tab-tabname = 'I_FINAL'.
t_fieldcat_tab-fieldname = 'CUST_NAME'.
t_fieldcat_tab-seltext_l = 'Cust name'.
APPEND t_fieldcat_tab.
t_fieldcat_tab-col_pos = 6.
t_fieldcat_tab-tabname = 'I_FINAL'.
t_fieldcat_tab-fieldname = 'CUST_ADREESS'.
t_fieldcat_tab-seltext_l = 'Cust adreess'.
APPEND t_fieldcat_tab.
t_fieldcat_tab-col_pos = 7.
t_fieldcat_tab-tabname = 'I_FINAL'.
t_fieldcat_tab-fieldname = 'CUST_CITY'.
t_fieldcat_tab-seltext_l = 'Cust city'.
APPEND t_fieldcat_tab.
t_fieldcat_tab-col_pos = 8.
t_fieldcat_tab-tabname = 'I_FINAL'.
t_fieldcat_tab-fieldname = 'TAX_ID'.
t_fieldcat_tab-seltext_l = 'Tax id'.
APPEND t_fieldcat_tab.
t_fieldcat_tab-col_pos = 9.
t_fieldcat_tab-tabname = 'I_FINAL'.
t_fieldcat_tab-fieldname = 'POSTAL_CODE'.
t_fieldcat_tab-seltext_l = 'Postal code'.
APPEND t_fieldcat_tab.
t_fieldcat_tab-col_pos = 10.
t_fieldcat_tab-tabname = 'I_FINAL'.
t_fieldcat_tab-fieldname = 'BRANCH'.
t_fieldcat_tab-seltext_l = 'Branch'.
APPEND t_fieldcat_tab.
t_fieldcat_tab-col_pos = 11.
t_fieldcat_tab-tabname = 'I_FINAL'.
t_fieldcat_tab-fieldname = 'KWMENG'.
t_fieldcat_tab-seltext_l = 'Order Qty'.
APPEND t_fieldcat_tab.
t_fieldcat_tab-col_pos = 12.
t_fieldcat_tab-tabname = 'I_FINAL'.
t_fieldcat_tab-fieldname = 'DELIVERY'.
t_fieldcat_tab-seltext_l = 'Delivery'.
APPEND t_fieldcat_tab.
ENDFORM. " f_prepare_fieldcat
*& Form f_display_report
*To display the ALV Report
FORM f_display_report.
DATA: l_repid LIKE sy-repid.
l_repid = sy-repid.
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = l_repid
IT_FIELDCAT = t_fieldcat_tab[]
I_DEFAULT = 'X'
I_SAVE = 'A'
TABLES
T_OUTTAB = I_FINAL[].
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." f_display_report
*& Form F_DOWNLOAD
text
--> p1 text
<-- p2 text
FORM F_DOWNLOAD .
*CALL FUNCTION 'WS_DOWNLOAD'
EXPORTING
FILENAME = p_file
FILETYPE = 'ASC'
MODE = ' '
WK1_N_FORMAT = ' '
WK1_N_SIZE = ' '
WK1_T_FORMAT = ' '
WK1_T_SIZE = ' '
COL_SELECT = ' '
COL_SELECTMASK = ' '
NO_AUTH_CHECK = ' '
IMPORTING
FILELENGTH =
TABLES
DATA_TAB = i_final
EXCEPTIONS
FILE_OPEN_ERROR = 1
FILE_WRITE_ERROR = 2
INVALID_FILESIZE = 3
INVALID_TYPE = 4
NO_BATCH = 5
UNKNOWN_ERROR = 6
INVALID_TABLE_WIDTH = 7
GUI_REFUSE_FILETRANSFER = 8
CUSTOMER_ERROR = 9
NO_AUTHORITY = 10
OTHERS = 11
*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. " F_DOWNLOAD
It is perfectly working for me..
I made the field name and table name as CAPs in the field catalog internal table.
I removed the buffer paramter in the ALV FM.
Thanks,
Naren -
How to retrieve data from a CGI to SAP?
Hi guys,
I'm looking for a way to retrieve information from a CGI page into SAP. This CGI generates a XML with the response from the parameters I use on the URL.
I can xsl transform the result into ABAP variables, but first I need to know how to get that information.
As anyone come across this or knows how to do it?
Thanks in advance,
RicardoHi,
In your case, Include prog is part of FM, no need to treat it as an Entity.
Now, Your Answer -
In SCRIPT - IN Page Window -->
PERFORM GET_MVAT_TIN IN PROGRAM Z_SCRIPT_PERFORMS_ABAPDB3
USING &VBDKR-KUNRE&
CHANGING &STCD1&
CHANGING &STCD2&
ENDPERFORM
IF &STCD1& <> ' '
<B>MVAT Number :</> &STCD1&
ENDIF
Then go to SE38 --> Creat prog with type - Subroutine pool
In that Write FORM statement for this PERFORM.
FORM get_mvat_tin TABLES inttab STRUCTURE itcsy
outtab STRUCTURE itcsy.
DATA : v_kunre TYPE kna1-kunnr,
v_stcd1 TYPE kna1-stcd1,
v_stcd2 TYPE kna1-stcd2.
LOOP AT outtab.
CLEAR outtab-value.
MODIFY outtab.
ENDLOOP.
READ TABLE inttab INDEX 1.
v_kunre = inttab-value.
IF v_kunre CA sy-abcde.
ELSE.
UNPACK v_kunre TO v_kunre.
ENDIF.
" Here You can take your Funcion module ***************************
SELECT SINGLE stcd1 stcd2 FROM kna1 INTO (v_stcd1, v_stcd2)
WHERE kunnr = v_kunre.
IF sy-subrc = 0.
READ TABLE outtab INDEX 1.
WRITE v_stcd1 TO outtab-value.
MODIFY outtab INDEX 1.
READ TABLE outtab INDEX 2.
WRITE v_stcd2 TO outtab-value.
MODIFY outtab INDEX 2.
ENDIF.
ENDFORM. -
How to retrieve data from a function module and use it in sap script??
I have a report program, which calls a function module. This function module internally calls an include program. In this program, I have a variable which is to be used in the sap script. How can I send this variable to the sap script
Hi,
In your case, Include prog is part of FM, no need to treat it as an Entity.
Now, Your Answer -
In SCRIPT - IN Page Window -->
PERFORM GET_MVAT_TIN IN PROGRAM Z_SCRIPT_PERFORMS_ABAPDB3
USING &VBDKR-KUNRE&
CHANGING &STCD1&
CHANGING &STCD2&
ENDPERFORM
IF &STCD1& <> ' '
<B>MVAT Number :</> &STCD1&
ENDIF
Then go to SE38 --> Creat prog with type - Subroutine pool
In that Write FORM statement for this PERFORM.
FORM get_mvat_tin TABLES inttab STRUCTURE itcsy
outtab STRUCTURE itcsy.
DATA : v_kunre TYPE kna1-kunnr,
v_stcd1 TYPE kna1-stcd1,
v_stcd2 TYPE kna1-stcd2.
LOOP AT outtab.
CLEAR outtab-value.
MODIFY outtab.
ENDLOOP.
READ TABLE inttab INDEX 1.
v_kunre = inttab-value.
IF v_kunre CA sy-abcde.
ELSE.
UNPACK v_kunre TO v_kunre.
ENDIF.
" Here You can take your Funcion module ***************************
SELECT SINGLE stcd1 stcd2 FROM kna1 INTO (v_stcd1, v_stcd2)
WHERE kunnr = v_kunre.
IF sy-subrc = 0.
READ TABLE outtab INDEX 1.
WRITE v_stcd1 TO outtab-value.
MODIFY outtab INDEX 1.
READ TABLE outtab INDEX 2.
WRITE v_stcd2 TO outtab-value.
MODIFY outtab INDEX 2.
ENDIF.
ENDFORM. -
report ZSD_CUST_CREATE
no standard page heading line-size 255.
include bdcrecx1.
Selection-screen **
SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME TITLE text-001.
PARAMETERS : p_fnam LIKE rlgrap-filename.
SELECTION-SCREEN END OF BLOCK blk1.
Declaration **
DATA : p_fname TYPE string.
data : val(2).
DATA : BEGIN OF it_xd01 OCCURS 0,
KTOKD(4), "ACCOUNT GROUP
BUKRS(4), "COMPANY CODE
VKORG(4), "SALES ORGANISATION
VTWEG(2), "DISTRIBUTION CHANNEL
SPART(2), "DIVISION
ZAV(1), "ADDRESS
NAME1(35), "NAME1
NAME2(40), "NAME2
NAME3(40), "NAME3
NAME4(40), "NAME4
SORT1(20), "SEARCH TERM A
SORT2(20), "SEARCH TERM B
STRAS(35), "STREET
HOUSE1(10), "HOUSE NUMBER 1
HOUSE2(10), "HOUSE NUMBER 2
STREET(60), "Street
*"Rajat
STREET2(35), "STREET2
STREET3(35), "STREET3
STREET4(35), "STREET4
STREET5(35), "STREET5
ORT02(35), "DISTRICT
PSTLZ(10), "POSTAL CODE
ORT01(35), "CITY
land1(3), "Country key
regio(3), "Region (State, Province, County)
TXJCD(15), "TAX JURISDICTION
LZONE(10), "TRANSPORTATION ZONE
spras(2), "Language key
TELF1(16), "TELEPHONE
TELEXT(10), "EXTENSION TEL
TELFX(31), "TELEFAX
TELFEXT(10), "TELEFAX EXTENSION
KNURL(132), "EMAIL ID
COMM(13), "STANDRAD COMMUNICATION TYPE
VENDOR(10), "VENDOR
begru(4), "Authorization group
STCD1(16), "TAX CODE1
STCD2(11), "TAX CODE2
STCEG(20), "VAT REGISTRATION NUMBER
KUKLA(2), "CUSTOMER CLASS
BRAN1(10), "INDUSTRY CODE
BRAN2(10), "INDUSTRY CODE1
BRAN3(10), "INDUSTRY CODE2
BRAN4(10), "INDUSTRY CODE3
BRAN5(10), "INDUSTRY CODE4
ABLAD1(25), "UNLOADING POINT
ABLAD2(25), "UNLOADING POINT
DEFAB(1) , "CHECKBOX
KNFAK(2), "CALENDAR KEY
KNFAK1(2), "CALENDAR KEY
WANID(3), "GOODS RECIEVING HOURS FOR BN
WANID1(3), "GOODS RECIEVING HOURS FOR SV
name11(40), "Name 1
name12(35), "Name 2
ABTNR11(4), "DEPARTMENT
pafkt11(2), "Contact person function
PARLA11(2), "CONTACT PERSON LANGUAGE
TELEF11(16), "TELEPHONE NUMBER
TELEX11(10), "TELEPHONE EXTENSION
TELFA11(31), "FAX
TELFX11(10), "FAX EXTENSION
EMAIL11(40), "EMAIL
COMMU11(10), "COMMUNICATION TYPE
name21(40), "Name 1
name22(35), "Name 2
ABTNR21(4), "DEPARTMENT
pafkt21(2), "Contact person function
PARLA21(2), "CONTACT PERSON LANGUAGE
TELEF21(16), "TELEPHONE NUMBER
TELEX21(10), "TELEPHONE EXTENSION
TELFA21(31), "FAX
TELFX21(10), "FAX EXTENSION
EMAIL21(40), "EMAIL
COMMU21(10), "COMMUNICATION TYPE
name31(40), "Name 1
name32(35), "Name 2
ABTNR31(4), "DEPARTMENT
pafkt31(2), "Contact person function
PARLA31(2), "CONTACT PERSON LANGUAGE
TELEF31(16), "TELEPHONE NUMBER
TELEX31(10), "TELEPHONE EXTENSION
TELFA31(31), "FAX
TELFX31(10), "FAX EXTENSION
EMAIL31(40), "EMAIL
COMMU31(10), "COMMUNICATION TYPE
name41(40), "Name 1
name42(35), "Name 2
ABTNR41(4), "DEPARTMENT
pafkt41(2), "Contact person function
PARLA41(2), "CONTACT PERSON LANGUAGE
TELEF41(16), "TELEPHONE NUMBER
TELEX41(10), "TELEPHONE EXTENSION
TELFA41(42), "FAX
TELFX41(10), "FAX EXTENSION
EMAIL41(40), "EMAIL
COMMU41(10), "COMMUNICATION TYPE
name51(40), "Name 1
name52(35), "Name 2
ABTNR51(4), "DEPARTMENT
pafkt51(2), "Contact person function
PARLA51(2), "CONTACT PERSON LANGUAGE
TELEF51(16), "TELEPHONE NUMBER
TELEX51(10), "TELEPHONE EXTENSION
TELFA51(42), "FAX
TELFX51(10), "FAX EXTENSION
EMAIL51(40), "EMAIL
COMMU51(10), "COMMUNICATION TYPE
akont(10), "Reconciliation Account in General Ledger
zuawa(3), "Key for sorting according to assignment numbers
BEGRU1(4), "Authorization group
fdgrv(10), "Planning group
ZTERM(4), "Terms of payment key
XZVER(1), "Indicator: Record Payment History
MAHNS(1), "DUNNING LEVEL
BUSAB(2), "ACCOUNTING CLERK
AWAHR(3),
VKBUR(4), "SALES OFFICE
BEGRU2(2), "AUTHORIZATION GROUP
VKGRP(3), "SALES GROUP
ORDER(3), "ORDER PROBABILITY
KDGRP(2), "CUSTOMER GROUP
WAERS(3), "CURRENCY
KONDA(2), "PRICE GROUP
KALKS(1), "CUSTOMER PRICING PROCEDURE
VSBED(2), "DELIVERY PRIORITY
VWERK(4), "DELIVERING PLANT
AUTLF(1), "COMPLETE DELIVERY
KZTLF(1), "Partial delivery at line item
ANTLF(2), "MAXIMUM PARTIAL DELIVERY
PERFK(2), "Invoice dates (calendar identification)
PERRL(2), "Invoice list schedule (calendar identification)
INCO1(3), "Incoterms (part 1)
INCO2(28), "Incoterms (part 2)
ZTERM1(6), "Terms of payment key
KKBER(4), "Credit control area
KTGRD(2), "Account assignment group for this customer
TAX(5), "Tax
KTONR1(10), "CUSTOMER NUMBER OF FOR BP
KTONR2(10), "CUSTOMER NUMBER OF FOR PY
KTONR3(10), "CUSTOMER NUMBER OF FOR SH
KTONR4(10), "CUSTOMER NUMBER OF FOR Y1
KTONR5(10), "CUSTOMER NUMBER OF FOR Y2
KTONR6(10), "CUSTOMER NUMBER OF FOR Y3
KTONR7(10), "CUSTOMER NUMBER OF FOR ZF
KTONR8(10), "CUSTOMER NUMBER OF FOR ZR
KTONR9(10), "CUSTOMER NUMBER OF FOR ZS
KTONR10(10), "CUSTOMER NUMBER OF FOR ZZ
END OF IT_XD01.
I N I T I A L I Z A T I O N
INITIALIZATION.
VALUE_REQUEST FOR FILE UPLOAD *
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_fnam.
CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
EXPORTING
PROGRAM_NAME = SYST-REPID
DYNPRO_NUMBER = SYST-DYNNR
FIELD_NAME = ' '
STATIC = ' '
MASK = '*.TXT'
CHANGING
file_name = p_fnam
EXCEPTIONS
mask_too_long = 0
OTHERS = 0.
S T A R T O F S E L E C T I O N
START-OF-SELECTION.
perform upload.
The data from presentation server is being uploaded to R/3 system
start-of-selection.
perform open_group.
LOOP AT IT_XD01.
data : txjcd(15).
REFRESH BDCDATA.
perform bdc_dynpro using 'SAPMF02D' '0100'.
*perform bdc_field using 'BDC_CURSOR' 'USE_ZAV'.
perform bdc_field using 'BDC_OKCODE' '/00'.
perform bdc_field using 'RF02D-BUKRS' IT_XD01-BUKRS.
perform bdc_field using 'RF02D-VKORG' IT_XD01-VKORG.
perform bdc_field using 'RF02D-VTWEG' IT_XD01-VTWEG.
perform bdc_field using 'RF02D-SPART' IT_XD01-SPART.
perform bdc_field using 'RF02D-KTOKD' IT_XD01-KTOKD.
perform bdc_field using 'USE_ZAV' 'X'.
perform bdc_dynpro using 'SAPMF02D' '0111'.
perform bdc_field using 'BDC_OKCODE' '=$2OC'.
perform bdc_field using 'BDC_CURSOR' 'SZA1_D0100-SMTP_ADDR'.
perform bdc_field using 'BDC_CURSOR' 'ADDR1_DATA-TAXJURCODE'.
*"Rajat
perform bdc_field using 'ADDR1_DATA-NAME1' IT_XD01-NAME1.
perform bdc_field using 'ADDR1_DATA-NAME2' IT_XD01-NAME2.
perform bdc_field using 'ADDR1_DATA-NAME3' IT_XD01-NAME3.
perform bdc_field using 'ADDR1_DATA-NAME4' IT_XD01-NAME4.
perform bdc_field using 'ADDR1_DATA-SORT1' IT_XD01-SORT1.
perform bdc_field using 'ADDR1_DATA-SORT2' IT_XD01-SORT2.
perform bdc_field using 'ADDR1_DATA-STREET' IT_XD01-STRAS.
perform bdc_field using 'ADDR1_DATA-HOUSE_NUM1' IT_XD01-HOUSE1.
perform bdc_field using 'ADDR1_DATA-HOUSE_NUM2' IT_XD01-HOUSE2.
perform bdc_field using 'ADDR1_DATA-CITY2' IT_XD01-ORT02.
perform bdc_field using 'ADDR1_DATA-POST_CODE1' IT_XD01-PSTLZ.
perform bdc_field using 'ADDR1_DATA-CITY1' IT_XD01-ORT01.
perform bdc_field using 'ADDR1_DATA-COUNTRY' IT_XD01-LAND1.
perform bdc_field using 'ADDR1_DATA-REGION' IT_XD01-REGIO.
if it_xd01-LAND1 = 'US'.
CALL FUNCTION 'DETERMINE_TXJCD_EXTERNALLY'
EXPORTING
country = it_xd01-land1
region = it_xd01-regio
city = it_xd01-ORT01
COUNTY = it_xd01-ORT02
zipcode = it_xd01-pstlz
IMPORTING
TXJCD = txjcd.
perform bdc_field using 'ADDR1_DATA-TAXJURCODE' txjcd.
ENDIF.
perform bdc_field using 'ADDR1_DATA-TRANSPZONE' IT_XD01-LZONE.
perform bdc_field using 'ADDR1_DATA-LANGU' IT_XD01-SPRAS.
perform bdc_field using 'SZA1_D0100-TEL_NUMBER' IT_XD01-TELF1.
perform bdc_field using 'SZA1_D0100-TEL_EXTENS' IT_XD01-TELEXT.
perform bdc_field using 'SZA1_D0100-FAX_NUMBER' IT_XD01-TELFX.
perform bdc_field using 'SZA1_D0100-FAX_EXTENS' IT_XD01-TELFEXT.
perform bdc_field using 'SZA1_D0100-SMTP_ADDR' IT_XD01-KNURL.
perform bdc_field using 'ADDR1_DATA-DEFLT_COMM' IT_XD01-COMM.
perform bdc_dynpro using 'SAPMF02D' '0111'.
perform bdc_field using 'BDC_OKCODE' '/00'.
perform bdc_field using 'BDC_CURSOR' 'ADDR1_DATA-LOCATION'.
*perform bdc_field using 'ADDR1_DATA-NAME1' 'NAME1'.
*perform bdc_field using 'ADDR1_DATA-NAME2' 'NAME2'.
*perform bdc_field using 'ADDR1_DATA-NAME3' 'NAME3'.
*perform bdc_field using 'ADDR1_DATA-NAME4' 'NAME4'.
*perform bdc_field using 'ADDR1_DATA-SORT1' 'SITECODE'.
*perform bdc_field using 'ADDR1_DATA-SORT2' 'DUNS NUMBER'.
perform bdc_field using 'ADDR1_DATA-STR_SUPPL1' IT_XD01-STREET2.
perform bdc_field using 'ADDR1_DATA-STR_SUPPL2' IT_XD01-STREET3.
*perform bdc_field using 'ADDR1_DATA-STREET' IT_XD01-STREET3.
*"Rajat
*perform bdc_field using 'ADDR1_DATA-HOUSE_NUM1' '129'.
*perform bdc_field using 'ADDR1_DATA-HOUSE_NUM2' 'YY'.
perform bdc_field using 'ADDR1_DATA-STR_SUPPL3' IT_XD01-STREET4.
perform bdc_field using 'ADDR1_DATA-LOCATION' IT_XD01-STREET5.
*perform bdc_field using 'ADDR1_DATA-CITY2' 'DISTRICT'.
*perform bdc_field using 'ADDR1_DATA-POST_CODE1' '44087'.
*perform bdc_field using 'ADDR1_DATA-CITY1' 'TWINSBERG'.
*perform bdc_field using 'ADDR1_DATA-COUNTRY' 'US'.
*perform bdc_field using 'ADDR1_DATA-REGION' 'OH'.
*perform bdc_field using 'ADDR1_DATA-TAXJURCODE' '3615325401'
*perform bdc_field using 'ADDR1_DATA-TRANSPZONE' '0000000001'.
*perform bdc_field using 'ADDR1_DATA-LANGU' 'EN'.
*perform bdc_field using 'SZA1_D0100-TEL_NUMBER' '3304258926'.
*perform bdc_field using 'SZA1_D0100-TEL_EXTENS' '8926'.
*perform bdc_field using 'SZA1_D0100-FAX_NUMBER' '3304258926'.
*perform bdc_field using 'SZA1_D0100-FAX_EXTENS' '8926'.
*perform bdc_field using 'SZA1_D0100-SMTP_ADDR' '[email protected]'
*perform bdc_field using 'ADDR1_DATA-DEFLT_COMM' 'FAX'.
perform bdc_dynpro using 'SAPMF02D' '0120'.
perform bdc_field using 'BDC_CURSOR' 'KNA1-STCD2'.
perform bdc_field using 'BDC_OKCODE' '/00'.
perform bdc_field using 'KNA1-LIFNR' IT_XD01-VENDOR."Rajat
perform bdc_field using 'KNA1-BEGRU' IT_XD01-BEGRU.
perform bdc_field using 'KNA1-STCD1' IT_XD01-STCD1.
perform bdc_field using 'KNA1-STCD2' IT_XD01-STCD2.
perform bdc_field using 'KNA1-STCEG' IT_XD01-STCEG.
perform bdc_field using 'KNA1-TXJCD' IT_XD01-TXJCD.
perform bdc_field using 'KNA1-LZONE' IT_XD01-LZONE.
perform bdc_dynpro using 'SAPMF02D' '0125'.
perform bdc_field using 'BDC_CURSOR' 'KNA1-BRAN1'.
perform bdc_field using 'BDC_OKCODE' '=BRAN'.
perform bdc_field using 'KNA1-KUKLA' IT_XD01-KUKLA.
perform bdc_field using 'KNA1-BRAN1' IT_XD01-BRAN1.
perform bdc_dynpro using 'SAPMF02D' '1250'.
perform bdc_field using 'BDC_CURSOR' 'KNA1-BRAN5'.
perform bdc_field using 'BDC_OKCODE' '=ENTR'.
perform bdc_field using 'KNA1-BRAN2' IT_XD01-BRAN2.
perform bdc_field using 'KNA1-BRAN3' IT_XD01-BRAN3.
perform bdc_field using 'KNA1-BRAN4' IT_XD01-BRAN4.
perform bdc_field using 'KNA1-BRAN5' IT_XD01-BRAN5.
perform bdc_dynpro using 'SAPMF02D' '0125'.
perform bdc_field using 'BDC_CURSOR' 'KNA1-KUKLA'.
perform bdc_field using 'BDC_OKCODE' '/00'.
perform bdc_field using 'KNA1-KUKLA' IT_XD01-KUKLA.
perform bdc_field using 'KNA1-BRAN1' IT_XD01-BRAN1.
perform bdc_dynpro using 'SAPMF02D' '0130'.
perform bdc_field using 'BDC_CURSOR' 'KNBK-BANKS(01)'.
perform bdc_field using 'BDC_OKCODE' '=ENTR'.
perform bdc_dynpro using 'SAPMF02D' '0340'.
perform bdc_field using 'BDC_CURSOR' 'KNVA-KNFAK(02)'.
perform bdc_field using 'BDC_OKCODE' '=ENTR'.
perform bdc_field using 'KNVA-ABLAD(01)' IT_XD01-ABLAD1.
perform bdc_field using 'KNVA-ABLAD(02)' IT_XD01-ABLAD2.
perform bdc_field using 'KNVA-DEFAB(01)' 'X'.
perform bdc_field using 'KNVA-KNFAK(01)' IT_XD01-KNFAK.
perform bdc_field using 'KNVA-KNFAK(02)' IT_XD01-KNFAK1.
perform bdc_dynpro using 'SAPMF02D' '0340'.
perform bdc_field using 'BDC_CURSOR' 'KNVA-KNFAK(01)'.
perform bdc_field using 'BDC_OKCODE' '=WANZ'.
perform bdc_dynpro using 'SAPMF02D' '1340'.
perform bdc_field using 'BDC_CURSOR' 'KNVA-WANID'.
perform bdc_field using 'BDC_OKCODE' '=ENTR'.
perform bdc_field using 'KNVA-WANID' IT_XD01-WANID.
perform bdc_dynpro using 'SAPMF02D' '0340'.
perform bdc_field using 'BDC_CURSOR' 'KNVA-KNFAK(02)'.
perform bdc_field using 'BDC_OKCODE' '=WANZ'.
perform bdc_dynpro using 'SAPMF02D' '1340'.
perform bdc_field using 'BDC_CURSOR' 'KNVA-WANID'.
perform bdc_field using 'BDC_OKCODE' '=ENTR'.
perform bdc_field using 'KNVA-WANID' IT_XD01-WANID1.
perform bdc_dynpro using 'SAPMF02D' '0340'.
perform bdc_field using 'BDC_CURSOR' 'RF02D-KUNNR'.
perform bdc_field using 'BDC_OKCODE' '=ENTR'.
perform bdc_dynpro using 'SAPMF02D' '0370'.
perform bdc_field using 'BDC_CURSOR' 'RF02D-KUNNR'.
perform bdc_field using 'BDC_OKCODE' '=ENTR'.
perform bdc_field using 'KNA1-CIVVE' 'X'.
perform bdc_dynpro using 'SAPMF02D' '0360'.
perform bdc_field using 'BDC_CURSOR' 'KNVK-PAFKT(01)'.
perform bdc_field using 'BDC_OKCODE' '=ENTR'.
IF IT_XD01-NAME11 <> 'X'.
perform bdc_field using 'KNVK-NAMEV(01)' IT_XD01-NAME12.
perform bdc_field using 'KNVK-NAME1(01)' IT_XD01-NAME11.
perform bdc_field using 'KNVK-ABTNR(01)' IT_XD01-ABTNR11.
perform bdc_field using 'KNVK-PAFKT(01)' IT_XD01-PAFKT11.
perform bdc_dynpro using 'SAPMF02D' '0360'.
perform bdc_field using 'BDC_CURSOR' 'KNVK-NAME1(01)'.
perform bdc_field using 'BDC_OKCODE' '=LSDP'.
perform bdc_dynpro using 'SAPMF02D' '1361'.
perform bdc_field using 'BDC_OKCODE' '/00'.
perform bdc_field using 'KNVK-ABTNR' IT_XD01-ABTNR11.
perform bdc_field using 'KNVK-PAFKT' IT_XD01-PAFKT11.
perform bdc_field using 'BDC_CURSOR' 'SZA5_D0700-SMTP_ADDR'.
perform bdc_field using 'ADDR3_DATA-NAME_LAST' IT_XD01-NAME12.
perform bdc_field using 'ADDR3_DATA-NAME_FIRST' IT_XD01-NAME11.
perform bdc_field using 'ADDR3_DATA-LANGU_P' IT_XD01-PARLA11.
perform bdc_field using 'SZA5_D0700-TEL_NUMBER' IT_XD01-TELEF11 .
perform bdc_field using 'SZA5_D0700-TEL_EXTENS' it_xd01-telex11.
perform bdc_field using 'SZA5_D0700-FAX_NUMBER' IT_XD01-TELFA11.
perform bdc_field using 'SZA5_D0700-FAX_EXTENS' IT_XD01-TELFX11.
perform bdc_field using 'SZA5_D0700-SMTP_ADDR' IT_XD01-EMAIL11.
perform bdc_field using 'ADDR3_DATA-DEFLT_COMM' IT_XD01-COMMU11.
perform bdc_dynpro using 'SAPMF02D' '1361'.
perform bdc_field using 'BDC_OKCODE' '/00'.
perform bdc_dynpro using 'SAPMF02D' '0360'.
perform bdc_field using 'BDC_CURSOR' 'KNVK-PAFKT(02)'.
perform bdc_field using 'BDC_OKCODE' '=ENTR'.
ENDIF.
IF IT_XD01-NAME21 <> 'X'.
perform bdc_field using 'KNVK-NAMEV(02)' IT_XD01-NAME22.
perform bdc_field using 'KNVK-NAME1(02)' IT_XD01-NAME21.
perform bdc_field using 'KNVK-ABTNR(02)' IT_XD01-ABTNR21.
perform bdc_field using 'KNVK-PAFKT(02)' IT_XD01-PAFKT21.
perform bdc_dynpro using 'SAPMF02D' '0360'.
perform bdc_field using 'BDC_CURSOR' 'KNVK-NAME1(02)'.
perform bdc_field using 'BDC_OKCODE' '=LSDP'.
perform bdc_dynpro using 'SAPMF02D' '1361'.
perform bdc_field using 'BDC_OKCODE' '/00'.
perform bdc_field using 'KNVK-ABTNR' IT_XD01-ABTNR21.
perform bdc_field using 'KNVK-PAFKT' IT_XD01-PAFKT21.
perform bdc_field using 'BDC_CURSOR' 'ADDR3_DATA-DEFLT_COMM'.
perform bdc_field using 'ADDR3_DATA-NAME_LAST' IT_XD01-NAME22.
perform bdc_field using 'ADDR3_DATA-NAME_FIRST' IT_XD01-NAME21.
perform bdc_field using 'ADDR3_DATA-LANGU_P' IT_XD01-PARLA21.
perform bdc_field using 'SZA5_D0700-TEL_NUMBER' IT_XD01-TELEF21.
perform bdc_field using 'SZA5_D0700-TEL_EXTENS' IT_XD01-TELEX21.
perform bdc_field using 'SZA5_D0700-FAX_NUMBER' IT_XD01-TELFA21.
perform bdc_field using 'SZA5_D0700-FAX_EXTENS' IT_XD01-TELFX21.
perform bdc_field using 'SZA5_D0700-SMTP_ADDR' IT_XD01-EMAIL21.
perform bdc_field using 'ADDR3_DATA-DEFLT_COMM' IT_XD01-COMMU21.
perform bdc_dynpro using 'SAPMF02D' '1361'.
perform bdc_field using 'BDC_OKCODE' '/00'.
perform bdc_dynpro using 'SAPMF02D' '0360'.
perform bdc_field using 'BDC_CURSOR' 'KNVK-PAFKT(03)'.
perform bdc_field using 'BDC_OKCODE' '=ENTR'.
ENDIF.
IF IT_XD01-NAME31 <> 'X'.
perform bdc_field using 'KNVK-NAMEV(03)' IT_XD01-NAME32.
perform bdc_field using 'KNVK-NAME1(03)' IT_XD01-NAME31.
perform bdc_field using 'KNVK-ABTNR(03)' IT_XD01-ABTNR31.
perform bdc_field using 'KNVK-PAFKT(03)' IT_XD01-PAFKT31.
perform bdc_dynpro using 'SAPMF02D' '0360'.
perform bdc_field using 'BDC_CURSOR' 'KNVK-NAME1(03)'.
perform bdc_field using 'BDC_OKCODE' '=LSDP'.
perform bdc_dynpro using 'SAPMF02D' '1361'.
perform bdc_field using 'BDC_OKCODE' '/00'.
perform bdc_field using 'KNVK-ABTNR' IT_XD01-ABTNR31.
perform bdc_field using 'KNVK-PAFKT' IT_XD01-PAFKT31.
perform bdc_field using 'BDC_CURSOR' 'ADDR3_DATA-DEFLT_COMM'.
perform bdc_field using 'ADDR3_DATA-NAME_LAST' IT_XD01-NAME32.
perform bdc_field using 'ADDR3_DATA-NAME_FIRST' IT_XD01-NAME31.
perform bdc_field using 'ADDR3_DATA-LANGU_P' IT_XD01-PARLA31
perform bdc_field using 'SZA5_D0700-TEL_NUMBER' IT_XD01-TELEF31.
perform bdc_field using 'SZA5_D0700-TEL_EXTENS' IT_XD01-TELEX31.
perform bdc_field using 'SZA5_D0700-FAX_NUMBER' IT_XD01-TELFA31.
perform bdc_field using 'SZA5_D0700-FAX_EXTENS' IT_XD01-TELFX31.
perform bdc_field using 'SZA5_D0700-SMTP_ADDR' IT_XD01-EMAIL31.
perform bdc_field using 'ADDR3_DATA-DEFLT_COMM' IT_XD01-COMMU31.
perform bdc_dynpro using 'SAPMF02D' '1361'.
perform bdc_field using 'BDC_OKCODE' '/00'.
perform bdc_dynpro using 'SAPMF02D' '0360'.
perform bdc_field using 'BDC_CURSOR' 'KNVK-PAFKT(04)'.
perform bdc_field using 'BDC_OKCODE' '=ENTR'.
ENDIF.
IF IT_XD01-NAME41 <> 'X'.
perform bdc_field using 'KNVK-NAMEV(04)' IT_XD01-NAME42.
perform bdc_field using 'KNVK-NAME1(04)' IT_XD01-NAME41.
perform bdc_field using 'KNVK-ABTNR(04)' IT_XD01-ABTNR41.
perform bdc_field using 'KNVK-PAFKT(04)' IT_XD01-PAFKT41.
perform bdc_dynpro using 'SAPMF02D' '0360'.
perform bdc_field using 'BDC_CURSOR' 'KNVK-NAME1(04)'.
perform bdc_field using 'BDC_OKCODE' '=LSDP'.
perform bdc_dynpro using 'SAPMF02D' '1361'.
perform bdc_field using 'BDC_OKCODE' '/00'.
perform bdc_field using 'KNVK-ABTNR' IT_XD01-ABTNR41.
perform bdc_field using 'KNVK-PAFKT' IT_XD01-PAFKT41.
perform bdc_field using 'BDC_CURSOR' 'ADDR3_DATA-DEFLT_COMM'.
perform bdc_field using 'ADDR3_DATA-NAME_LAST' IT_XD01-NAME42.
perform bdc_field using 'ADDR3_DATA-NAME_FIRST' IT_XD01-NAME41.
perform bdc_field using 'ADDR3_DATA-LANGU_P' IT_XD01-PARLA41.
perform bdc_field using 'SZA5_D0700-TEL_NUMBER' IT_XD01-TELEF41.
perform bdc_field using 'SZA5_D0700-TEL_EXTENS' IT_XD01-TELEX41.
perform bdc_field using 'SZA5_D0700-FAX_NUMBER' IT_XD01-TELFA41.
perform bdc_field using 'SZA5_D0700-FAX_EXTENS' IT_XD01-TELFX41.
perform bdc_field using 'SZA5_D0700-SMTP_ADDR' IT_XD01-EMAIL41.
perform bdc_field using 'ADDR3_DATA-DEFLT_COMM' IT_XD01-COMMU41.
perform bdc_dynpro using 'SAPMF02D' '1361'.
perform bdc_field using 'BDC_OKCODE' '/00'.
perform bdc_dynpro using 'SAPMF02D' '0360'.
perform bdc_field using 'BDC_CURSOR' 'KNVK-PAFKT(05)'.
perform bdc_field using 'BDC_OKCODE' '=ENTR'.
ENDIF.
IF IT_XD01-NAME51 <> 'X'.
perform bdc_field using 'KNVK-NAMEV(05)' IT_XD01-NAME52.
perform bdc_field using 'KNVK-NAME1(05)' IT_XD01-NAME51.
perform bdc_field using 'KNVK-ABTNR(05)' IT_XD01-ABTNR51.
perform bdc_field using 'KNVK-PAFKT(05)' IT_XD01-PAFKT51.
perform bdc_dynpro using 'SAPMF02D' '0360'.
perform bdc_field using 'BDC_CURSOR' 'KNVK-NAME1(05)'.
perform bdc_field using 'BDC_OKCODE' '=LSDP'.
perform bdc_dynpro using 'SAPMF02D' '1361'.
perform bdc_field using 'BDC_OKCODE' '/00'.
perform bdc_field using 'KNVK-ABTNR' IT_XD01-ABTNR51.
perform bdc_field using 'KNVK-PAFKT' IT_XD01-PAFKT51.
perform bdc_field using 'BDC_CURSOR' 'ADDR3_DATA-DEFLT_COMM'.
perform bdc_field using 'ADDR3_DATA-NAME_LAST' IT_XD01-NAME52.
perform bdc_field using 'ADDR3_DATA-NAME_FIRST' IT_XD01-NAME51.
perform bdc_field using 'ADDR3_DATA-LANGU_P' IT_XD01-PARLA51.
perform bdc_field using 'SZA5_D0700-TEL_NUMBER' IT_XD01-TELEF51.
perform bdc_field using 'SZA5_D0700-TEL_EXTENS' IT_XD01-TELEX51.
perform bdc_field using 'SZA5_D0700-FAX_NUMBER' IT_XD01-TELFA51.
perform bdc_field using 'SZA5_D0700-FAX_EXTENS' IT_XD01-TELFX51.
perform bdc_field using 'SZA5_D0700-SMTP_ADDR' IT_XD01-EMAIL51.
perform bdc_field using 'ADDR3_DATA-DEFLT_COMM' IT_XD01-COMMU51.
perform bdc_dynpro using 'SAPMF02D' '1361'.
perform bdc_field using 'BDC_OKCODE' '/00'.
perform bdc_dynpro using 'SAPMF02D' '0360'.
perform bdc_field using 'BDC_CURSOR' 'KNVK-NAMEV(01)'.
perform bdc_field using 'BDC_OKCODE' '=ENTR'.
ENDIF.
perform bdc_dynpro using 'SAPMF02D' '0210'.
perform bdc_field using 'BDC_CURSOR' 'KNB1-BEGRU'.
perform bdc_field using 'BDC_OKCODE' '/00'.
perform bdc_field using 'KNB1-AKONT' IT_XD01-AKONT.
perform bdc_field using 'KNB1-ZUAWA' IT_XD01-ZUAWA.
perform bdc_field using 'KNB1-BEGRU' IT_XD01-BEGRU1.
perform bdc_field using 'KNB1-FDGRV' IT_XD01-FDGRV.
perform bdc_dynpro using 'SAPMF02D' '0215'.
perform bdc_field using 'BDC_CURSOR' 'KNB1-XZVER'.
perform bdc_field using 'BDC_OKCODE' '/00'.
perform bdc_field using 'KNB1-ZTERM' IT_XD01-ZTERM.
perform bdc_field using 'KNB1-XZVER' 'X'..
perform bdc_dynpro using 'SAPMF02D' '0220'.
perform bdc_field using 'BDC_CURSOR' 'KNB1-TLFNS'.
perform bdc_field using 'BDC_OKCODE' '/00'.
perform bdc_field using 'KNB5-MAHNS' IT_XD01-MAHNS.
perform bdc_field using 'KNB1-BUSAB' IT_XD01-BUSAB.
perform bdc_dynpro using 'SAPMF02D' '0230'.
perform bdc_field using 'BDC_CURSOR' 'RF02D-KUNNR'.
perform bdc_field using 'BDC_OKCODE' '/00'.
perform bdc_dynpro using 'SAPMF02D' '0310'.
perform bdc_field using 'BDC_CURSOR' 'KNVV-KONDA'.
perform bdc_field using 'BDC_OKCODE' '/00'.
perform bdc_field using 'KNVV-VKBUR' IT_XD01-VKBUR.
perform bdc_field using 'KNVV-BEGRU' IT_XD01-BEGRU2.
perform bdc_field using 'KNVV-VKGRP' IT_XD01-VKGRP.
perform bdc_field using 'KNVV-AWAHR' IT_XD01-ORDER.
perform bdc_field using 'KNVV-KDGRP' IT_XD01-KDGRP.
perform bdc_field using 'KNVV-WAERS' IT_XD01-WAERS.
perform bdc_field using 'KNVV-KONDA' IT_XD01-KONDA.
perform bdc_field using 'KNVV-KALKS' IT_XD01-KALKS.
perform bdc_dynpro using 'SAPMF02D' '0315'.
perform bdc_field using 'BDC_CURSOR' 'KNVV-KZTLF'.
perform bdc_field using 'BDC_OKCODE' '/00'.
perform bdc_field using 'KNVV-VSBED' IT_XD01-VSBED.
perform bdc_field using 'KNVV-VWERK' IT_XD01-VWERK.
*IF IT_XD01-AUTLF = 'X'.
perform bdc_field using 'KNVV-AUTLF' 'X'.
perform bdc_field using 'KNVV-KZTLF' IT_XD01-KZTLF.
*ELSE.
perform bdc_field using 'KNVV-ANTLF' IT_XD01-ANTLF.
*ENDIF.
perform bdc_dynpro using 'SAPMF02D' '0320'.
perform bdc_field using 'BDC_CURSOR' 'KNVV-KTGRD'.
perform bdc_field using 'BDC_OKCODE' '/00'.
perform bdc_field using 'KNVV-PERFK' IT_XD01-PERFK.
perform bdc_field using 'KNVV-PERRL' IT_XD01-PERRL.
perform bdc_field using 'KNVV-INCO1' IT_XD01-INCO1.
perform bdc_field using 'KNVV-INCO2' IT_XD01-INCO2.
perform bdc_field using 'KNVV-ZTERM' IT_XD01-ZTERM1.
perform bdc_field using 'KNVV-KKBER' IT_XD01-KKBER.
perform bdc_field using 'KNVV-KTGRD' IT_XD01-KTGRD.
perform bdc_dynpro using 'SAPMF02D' '1350'.
perform bdc_field using 'BDC_CURSOR' 'KNVI-TAXKD(01)'.
perform bdc_field using 'BDC_OKCODE' '=ENTR'.
perform bdc_field using 'KNVI-TAXKD(01)' IT_XD01-TAX.
perform bdc_dynpro using 'SAPMF02D' '1350'.
perform bdc_field using 'BDC_CURSOR' 'RF02D-KUNNR'.
perform bdc_field using 'BDC_OKCODE' '=ENTR'.
perform bdc_dynpro using 'SAPMF02D' '0324'.
perform bdc_field using 'BDC_CURSOR' 'RF02D-KTONR(11)'.
perform bdc_field using 'BDC_OKCODE' '=ENTR'.
perform bdc_field using 'RF02D-KTONR(02)' IT_XD01-KTONR1.
perform bdc_field using 'RF02D-KTONR(03)' IT_XD01-KTONR2.
perform bdc_field using 'RF02D-KTONR(04)' IT_XD01-KTONR3.
perform bdc_field using 'RF02D-KTONR(05)' IT_XD01-KTONR4.
perform bdc_field using 'RF02D-KTONR(06)' IT_XD01-KTONR5.
perform bdc_field using 'RF02D-KTONR(07)' IT_XD01-KTONR6.
perform bdc_field using 'RF02D-KTONR(08)' IT_XD01-KTONR7.
perform bdc_field using 'RF02D-KTONR(10)' IT_XD01-KTONR8.
perform bdc_field using 'RF02D-KTONR(11)' IT_XD01-KTONR9.
if session = 'X'.
PERFORM BDC_FIELD USING 'BDC_OKCODE' 'FCNP'.
perform bdc_dynpro using 'SAPMF02D' '0324'.
perform bdc_field using 'BDC_CURSOR' 'RF02D-KTONR(01)'.
perform bdc_field using 'BDC_OKCODE' '=ENTR'.
perform bdc_field using 'RF02D-KTONR(01)' IT_XD01-KTONR10.
else.
perform bdc_field using 'RF02D-KTONR(12)' IT_XD01-KTONR10.
endif.
perform bdc_dynpro using 'SAPMF02D' '0324'.
perform bdc_field using 'BDC_CURSOR' 'KNVP-PARVW(01)'.
perform bdc_field using 'BDC_OKCODE' '=UPDA'.
perform bdc_transaction using 'XD01'.
ENDLOOP.
refresh it_xd01.
perform close_group.
*& Form upload
text
--> p1 text
<-- p2 text
form upload.
move p_fnam to p_fname.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
filename = p_fname
FILETYPE = 'ASC'
HAS_FIELD_SEPARATOR = 'X'
HEADER_LENGTH = 0
READ_BY_LINE = 'X'
DAT_MODE = ' '
IMPORTING
FILELENGTH =
HEADER =
tables
data_tab = it_xd01
EXCEPTIONS
FILE_OPEN_ERROR = 1
FILE_READ_ERROR = 2
NO_BATCH = 3
GUI_REFUSE_FILETRANSFER = 4
INVALID_TYPE = 5
NO_AUTHORITY = 6
UNKNOWN_ERROR = 7
BAD_DATA_FORMAT = 8
HEADER_NOT_ALLOWED = 9
SEPARATOR_NOT_ALLOWED = 10
HEADER_TOO_LONG = 11
UNKNOWN_DP_ERROR = 12
ACCESS_DENIED = 13
DP_OUT_OF_MEMORY = 14
DISK_FULL = 15
DP_TIMEOUT = 16
OTHERS = 17
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
*Rajat Change
*End Change
endform. " upload
*& Form US
text
--> p1 text
<-- p2 texT
NOTE : THAT I HAVE NOT USED AN LOOP FOR TABLE CONTROL BECOZ MY FLAT FILE WAS IN DIFFERENT FORMATWhat's the problem?
Regds
Manohar -
Structure set_table_for_first_display
Hi abappers,
I want fill the ALV with the data of my table internal TAB2:
LOOP AT TAB1.
MOVE TAB1-CAMPO+2(9) TO STCD1_OLD.
MOVE TAB1-CAMPO+11(9) TO STCD1_NEW.
SELECT SINGLE * FROM KNA1 WHERE STCD1 EQ STCD1_OLD.
IF SY-SUBRC = 0.
MOVE KNA1-KUNNR TO TAB2-KUNNR.
MOVE KNA1-KTOKD TO TAB2-KTOKD.
MOVE KNA1-LAND1 TO TAB2-LAND1.
MOVE KNA1-NAME1 TO TAB2-NAME1.
MOVE KNA1-STCD1 TO TAB2-STCD1_OLD.
MOVE STCD1_NEW TO TAB2-STCD1_NEW.
MOVE KNA1-STCEG TO TAB2-STCEG.
MOVE KNA1-STCD4 TO TAB2-STCD4.
MOVE KNA1-YYCTC TO TAB2-YYCTC.
MOVE KNA1-AUFSD TO TAB2-AUFSD.
MOVE KNA1-CASSD TO TAB2-CASSD.
MOVE KNA1-LOEVM TO TAB2-LOEVM.
MOVE KNA1-SPERR TO TAB2-SPERR.
MOVE KNA1-SPERZ TO TAB2-SPERZ.
APPEND TAB2.
ELSE.
WRITE: / TEXT-100, STCD1_OLD.
ENDIF.
ENDLOOP.
CALL METHOD go_grid->set_table_for_first_display
EXPORTING i_structure_name = 'XXXXXXXX'
CHANGING it_outtab = TAB2[].
But when I want call method, I don´t know the structure, and I can not pass the structure fo KNA1, because 2 fields are different STCD1_OLD and STCD1_NEW.
Can you help me, please?
Cordial greetings.Then you will not use the structure parameter, instead fill a field catalog and pass that. Here is an example.
REPORT ZRICH_0001.
TABLES: MARA.
DATA: BEGIN OF I_ALV OCCURS 0,
MATNR TYPE MARA-MATNR,
MAKTX TYPE MAKT-MAKTX,
END OF I_ALV.
DATA: ALV_CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER.
DATA: ALV_GRID TYPE REF TO CL_GUI_ALV_GRID.
DATA: FIELDCAT TYPE LVC_T_FCAT.
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001 .
SELECT-OPTIONS: S_MATNR FOR MARA-MATNR.
SELECTION-SCREEN END OF BLOCK B1.
START-OF-SELECTION.
PERFORM GET_DATA.
CALL SCREEN 100.
* Module status_0100 OUTPUT
MODULE STATUS_0100 OUTPUT.
SET PF-STATUS '0100'.
SET TITLEBAR '0100'.
* Create Controls
CREATE OBJECT ALV_CONTAINER
EXPORTING
CONTAINER_NAME = 'ALV_CONTAINER'.
CREATE OBJECT ALV_GRID
EXPORTING
I_PARENT = ALV_CONTAINER.
* ALV Specific. Data selection.
* Populate Field Catalog
PERFORM GET_FIELDCATALOG.
CALL METHOD ALV_GRID->SET_TABLE_FOR_FIRST_DISPLAY
CHANGING
IT_OUTTAB = I_ALV[]
IT_FIELDCATALOG = FIELDCAT[].
ENDMODULE.
* Module USER_COMMAND_0100 INPUT
MODULE USER_COMMAND_0100 INPUT.
CASE SY-UCOMM.
WHEN 'BACK' OR 'CANC'.
IF NOT ALV_CONTAINER IS INITIAL.
CALL METHOD ALV_CONTAINER->FREE.
CLEAR: ALV_CONTAINER.
FREE : ALV_CONTAINER.
ENDIF.
IF SY-SUBRC = 0.
SET SCREEN 0.
LEAVE SCREEN.
ELSE.
LEAVE PROGRAM.
ENDIF.
WHEN 'EXIT'.
IF NOT ALV_CONTAINER IS INITIAL.
CALL METHOD ALV_CONTAINER->FREE.
CLEAR: ALV_CONTAINER.
FREE : ALV_CONTAINER.
ENDIF.
LEAVE PROGRAM.
ENDCASE.
ENDMODULE.
* FORM GET_DATA
FORM GET_DATA.
SELECT * INTO CORRESPONDING FIELDS OF TABLE I_ALV
FROM MARA
INNER JOIN MAKT
ON MARA~MATNR = MAKT~MATNR
WHERE MARA~MATNR IN S_MATNR
AND MAKT~SPRAS = SY-LANGU.
SORT I_ALV ASCENDING BY MATNR.
ENDFORM.
* Form Get_Fieldcatalog - Set Up Columns/Headers
FORM GET_FIELDCATALOG.
DATA: LS_FCAT TYPE LVC_S_FCAT.
REFRESH: FIELDCAT.
CLEAR: LS_FCAT.
LS_FCAT-REPTEXT = 'Material Number'.
LS_FCAT-COLTEXT = 'Material Number'.
LS_FCAT-FIELDNAME = 'MATNR'.
LS_FCAT-REF_TABLE = 'I_ALV'.
LS_FCAT-OUTPUTLEN = '18'.
LS_FCAT-COL_POS = 1.
APPEND LS_FCAT TO FIELDCAT.
CLEAR: LS_FCAT.
LS_FCAT-REPTEXT = 'Material Description'.
LS_FCAT-COLTEXT = 'Material Description'.
LS_FCAT-FIELDNAME = 'MAKTX'.
LS_FCAT-REF_TABLE = 'I_ALV'.
LS_FCAT-OUTPUTLEN = '40'.
LS_FCAT-COL_POS = 2.
APPEND LS_FCAT TO FIELDCAT.
ENDFORM.
Regards,
Rich Heilman -
Uploading info records by using BDC
Hi all,
Does any one having knowledge in uploading info records (ME11) by using BDC.
Problem arises when going for multiple scales.
Can any one let me know how proceed this BDC.
Regards,
RajGoto transaction SHBD enter a recording name and specify the transaction code.
Enter the test data and save it , it will actomatically create a bdc program.
now select that recording name and click create program icon and specify the program name.
This is the program which was created using transaction SHDB for XD01.
include bdcrecx1.
parameters: dataset(132) lower case.
DO NOT CHANGE - the generated data section - DO NOT CHANGE ***
If it is nessesary to change the data section use the rules:
1.) Each definition of a field exists of two lines
2.) The first line shows exactly the comment
'* data element: ' followed with the data element
which describes the field.
If you don't have a data element use the
comment without a data element name
3.) The second line shows the fieldname of the
structure, the fieldname must consist of
a fieldname and optional the character '_' and
three numbers and the field length in brackets
4.) Each field must be type C.
Generated data section with specific formatting - DO NOT CHANGE ***
data: begin of record,
data element: KUN16
KUNNR_001(016),
data element: BUKRS
BUKRS_002(004),
data element: VKORG
VKORG_003(004),
data element: VTWEG
VTWEG_004(002),
data element: SPART
SPART_005(002),
data element: KTOKD
KTOKD_006(004),
data element: ANRED
ANRED_007(015),
data element: NAME1_GP
NAME1_008(035),
data element: SORTL
SORTL_009(010),
data element: NAME2_GP
NAME2_010(035),
data element: STRAS_GP
STRAS_011(035),
data element: PFACH
PFACH_012(010),
data element: ORT01_GP
ORT01_013(035),
data element: PSTLZ
PSTLZ_014(010),
data element: ORT02_GP
ORT02_015(035),
data element: PFORT_GP
PFORT_016(035),
data element: PSTL2
PSTL2_017(010),
data element: LAND1_GP
LAND1_018(003),
data element: REGIO
REGIO_019(003),
data element: SPRAS
SPRAS_020(002),
data element: TELX1
TELX1_021(030),
data element: TELF1
TELF1_022(016),
data element: TELFX
TELFX_023(031),
data element: TELF2
TELF2_024(016),
data element: TELTX
TELTX_025(030),
data element: TELBX
TELBX_026(015),
data element: URL
KNURL_027(132),
data element: STCD1
STCD1_028(016),
data element: STCD2
STCD2_029(011),
data element: BBBNR
BBBNR_030(007),
data element: BBSNR
BBSNR_031(005),
data element: BUBKZ
BUBKZ_032(001),
data element: BRSCH
BRSCH_033(004),
data element: LZONE
LZONE_034(010),
data element: KUKLA
KUKLA_035(002),
data element: BRSCH
BRSCH_036(004),
data element: UMSA1
UMSA1_037(020),
data element: UWAER
UWAER_038(005),
data element: UMJAH
UMJAH_039(004),
data element: JMZAH
JMZAH_040(006),
data element: JMJAH
JMJAH_041(004),
data element: BANKS
BANKS_01_042(003),
data element: BANKK
BANKL_01_043(015),
data element: BANKN
BANKN_01_044(018),
data element: ABLAD
ABLAD_01_045(025),
data element: KNKAL
KNFAK_01_046(002),
data element: CIVVE
CIVVE_047(001),
data element: ANRED_AP
ANRED_01_048(030),
data element: ANRED_AP
ANRED_02_049(030),
data element: NAMEV_VP
NAMEV_01_050(035),
data element: NAMEV_VP
NAMEV_02_051(035),
data element: NAME1_GP
NAME1_01_052(035),
data element: NAME1_GP
NAME1_02_053(035),
data element: TELF1
TELF1_01_054(016),
data element: TELF1
TELF1_02_055(016),
data element: ABTNR_PA
ABTNR_01_056(004),
data element: ABTNR_PA
ABTNR_02_057(004),
data element: AKONT
AKONT_058(010),
data element: DZTERM
ZTERM_059(004),
data element: MAHNA
MAHNA_060(004),
data element: BZIRK
BZIRK_061(006),
data element: AWAHR
AWAHR_062(003),
data element: WAERS_V02D
WAERS_063(005),
data element: KALKS
KALKS_064(001),
data element: LPRIO
LPRIO_065(002),
data element: KZAZU_D
KZAZU_066(001),
data element: ANTLF
ANTLF_067(001),
data element: PERFK
PERFK_068(002),
end of record.
End generated data section ***
start-of-selection.
perform open_dataset using dataset.
perform open_group.
do.
read dataset dataset into record.
if sy-subrc <> 0. exit. endif.
perform bdc_dynpro using 'SAPMF02D' '0100'.
perform bdc_field using 'BDC_CURSOR'
'RF02D-KTOKD'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'RF02D-KUNNR'
record-KUNNR_001.
perform bdc_field using 'RF02D-BUKRS'
record-BUKRS_002.
perform bdc_field using 'RF02D-VKORG'
record-VKORG_003.
perform bdc_field using 'RF02D-VTWEG'
record-VTWEG_004.
perform bdc_field using 'RF02D-SPART'
record-SPART_005.
perform bdc_field using 'RF02D-KTOKD'
record-KTOKD_006.
perform bdc_dynpro using 'SAPMF02D' '0110'.
perform bdc_field using 'BDC_CURSOR'
'KNA1-KNURL'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'KNA1-ANRED'
record-ANRED_007.
perform bdc_field using 'KNA1-NAME1'
record-NAME1_008.
perform bdc_field using 'KNA1-SORTL'
record-SORTL_009.
perform bdc_field using 'KNA1-NAME2'
record-NAME2_010.
perform bdc_field using 'KNA1-STRAS'
record-STRAS_011.
perform bdc_field using 'KNA1-PFACH'
record-PFACH_012.
perform bdc_field using 'KNA1-ORT01'
record-ORT01_013.
perform bdc_field using 'KNA1-PSTLZ'
record-PSTLZ_014.
perform bdc_field using 'KNA1-ORT02'
record-ORT02_015.
perform bdc_field using 'KNA1-PFORT'
record-PFORT_016.
perform bdc_field using 'KNA1-PSTL2'
record-PSTL2_017.
perform bdc_field using 'KNA1-LAND1'
record-LAND1_018.
perform bdc_field using 'KNA1-REGIO'
record-REGIO_019.
perform bdc_field using 'KNA1-SPRAS'
record-SPRAS_020.
perform bdc_field using 'KNA1-TELX1'
record-TELX1_021.
perform bdc_field using 'KNA1-TELF1'
record-TELF1_022.
perform bdc_field using 'KNA1-TELFX'
record-TELFX_023.
perform bdc_field using 'KNA1-TELF2'
record-TELF2_024.
perform bdc_field using 'KNA1-TELTX'
record-TELTX_025.
perform bdc_field using 'KNA1-TELBX'
record-TELBX_026.
perform bdc_field using 'KNA1-KNURL'
record-KNURL_027.
perform bdc_dynpro using 'SAPMF02D' '0120'.
perform bdc_field using 'BDC_CURSOR'
'KNA1-LZONE'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'KNA1-STCD1'
record-STCD1_028.
perform bdc_field using 'KNA1-STCD2'
record-STCD2_029.
perform bdc_field using 'KNA1-BBBNR'
record-BBBNR_030.
perform bdc_field using 'KNA1-BBSNR'
record-BBSNR_031.
perform bdc_field using 'KNA1-BUBKZ'
record-BUBKZ_032.
perform bdc_field using 'KNA1-BRSCH'
record-BRSCH_033.
perform bdc_field using 'KNA1-LZONE'
record-LZONE_034.
perform bdc_dynpro using 'SAPMF02D' '0125'.
perform bdc_field using 'BDC_CURSOR'
'KNA1-JMJAH'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'KNA1-KUKLA'
record-KUKLA_035.
perform bdc_field using 'KNA1-BRSCH'
record-BRSCH_036.
perform bdc_field using 'KNA1-UMSA1'
record-UMSA1_037.
perform bdc_field using 'KNA1-UWAER'
record-UWAER_038.
perform bdc_field using 'KNA1-UMJAH'
record-UMJAH_039.
perform bdc_field using 'KNA1-JMZAH'
record-JMZAH_040.
perform bdc_field using 'KNA1-JMJAH'
record-JMJAH_041.
perform bdc_dynpro using 'SAPMF02D' '0130'.
perform bdc_field using 'BDC_CURSOR'
'KNBK-BANKN(01)'.
perform bdc_field using 'BDC_OKCODE'
'=ENTR'.
perform bdc_field using 'KNBK-BANKS(01)'
record-BANKS_01_042.
perform bdc_field using 'KNBK-BANKL(01)'
record-BANKL_01_043.
perform bdc_field using 'KNBK-BANKN(01)'
record-BANKN_01_044.
perform bdc_dynpro using 'SAPMF02D' '0130'.
perform bdc_field using 'BDC_CURSOR'
'KNBK-BANKS(01)'.
perform bdc_field using 'BDC_OKCODE'
'=ENTR'.
perform bdc_dynpro using 'SAPMF02D' '0340'.
perform bdc_field using 'BDC_CURSOR'
'KNVA-KNFAK(01)'.
perform bdc_field using 'BDC_OKCODE'
'=ENTR'.
perform bdc_field using 'KNVA-ABLAD(01)'
record-ABLAD_01_045.
perform bdc_field using 'KNVA-KNFAK(01)'
record-KNFAK_01_046.
perform bdc_dynpro using 'SAPMF02D' '0340'.
perform bdc_field using 'BDC_CURSOR'
'RF02D-KUNNR'.
perform bdc_field using 'BDC_OKCODE'
'=ENTR'.
perform bdc_dynpro using 'SAPMF02D' '0370'.
perform bdc_field using 'BDC_CURSOR'
'KNA1-CIVVE'.
perform bdc_field using 'BDC_OKCODE'
'=ENTR'.
perform bdc_field using 'KNA1-CIVVE'
record-CIVVE_047.
perform bdc_dynpro using 'SAPMF02D' '0360'.
perform bdc_field using 'BDC_CURSOR'
'KNVK-ABTNR(02)'.
perform bdc_field using 'BDC_OKCODE'
'=ENTR'.
perform bdc_field using 'KNVK-ANRED(01)'
record-ANRED_01_048.
perform bdc_field using 'KNVK-ANRED(02)'
record-ANRED_02_049.
perform bdc_field using 'KNVK-NAMEV(01)'
record-NAMEV_01_050.
perform bdc_field using 'KNVK-NAMEV(02)'
record-NAMEV_02_051.
perform bdc_field using 'KNVK-NAME1(01)'
record-NAME1_01_052.
perform bdc_field using 'KNVK-NAME1(02)'
record-NAME1_02_053.
perform bdc_field using 'KNVK-TELF1(01)'
record-TELF1_01_054.
perform bdc_field using 'KNVK-TELF1(02)'
record-TELF1_02_055.
perform bdc_field using 'KNVK-ABTNR(01)'
record-ABTNR_01_056.
perform bdc_field using 'KNVK-ABTNR(02)'
record-ABTNR_02_057.
perform bdc_dynpro using 'SAPMF02D' '0360'.
perform bdc_field using 'BDC_CURSOR'
'KNVK-NAMEV(01)'.
perform bdc_field using 'BDC_OKCODE'
'=ENTR'.
perform bdc_dynpro using 'SAPMF02D' '0210'.
perform bdc_field using 'BDC_CURSOR'
'KNB1-AKONT'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'KNB1-AKONT'
record-AKONT_058.
perform bdc_dynpro using 'SAPMF02D' '0215'.
perform bdc_field using 'BDC_CURSOR'
'KNB1-ZTERM'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'KNB1-ZTERM'
record-ZTERM_059.
perform bdc_dynpro using 'SAPMF02D' '0220'.
perform bdc_field using 'BDC_CURSOR'
'KNB5-MAHNA'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'KNB5-MAHNA'
record-MAHNA_060.
perform bdc_dynpro using 'SAPMF02D' '0230'.
perform bdc_field using 'BDC_CURSOR'
'KNB1-VRSNR'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_dynpro using 'SAPMF02D' '0310'.
perform bdc_field using 'BDC_CURSOR'
'KNVV-WAERS'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'KNVV-BZIRK'
record-BZIRK_061.
perform bdc_field using 'KNVV-AWAHR'
record-AWAHR_062.
perform bdc_field using 'KNVV-WAERS'
record-WAERS_063.
perform bdc_field using 'KNVV-KALKS'
record-KALKS_064.
perform bdc_dynpro using 'SAPMF02D' '0315'.
perform bdc_field using 'BDC_CURSOR'
'KNVV-LPRIO'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'KNVV-LPRIO'
record-LPRIO_065.
perform bdc_field using 'KNVV-KZAZU'
record-KZAZU_066.
perform bdc_field using 'KNVV-ANTLF'
record-ANTLF_067.
perform bdc_dynpro using 'SAPMF02D' '0320'.
perform bdc_field using 'BDC_CURSOR'
'KNVV-PERFK'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'KNVV-PERFK'
record-PERFK_068.
perform bdc_dynpro using 'SAPMF02D' '1350'.
perform bdc_field using 'BDC_CURSOR'
'RF02D-KUNNR'.
perform bdc_field using 'BDC_OKCODE'
'=ENTR'.
perform bdc_dynpro using 'SAPMF02D' '0324'.
perform bdc_field using 'BDC_CURSOR'
'KNVP-PARVW(01)'.
perform bdc_field using 'BDC_OKCODE'
'=ENTR'.
perform bdc_transaction using 'XD01'.
enddo.
perform close_group.
perform close_dataset using dataset.
Reward if found helpful....
Cheers,
Chandra Sekhar. -
How to call driver program internal table in a form
how to call driver program internal table in a form? Given below is my code
TABLES: VBRK,VBAK,ADRC,KNA1,VBRP,VBAP,J_1IMOCOMP.
DATA: BEGIN OF IT_CUST_ADD OCCURS 0,
STREET LIKE ADRC-STREET,
NAME LIKE ADRC-NAME1,
POST_CODE LIKE ADRC-PSTCD1,
CITY LIKE ADRC-CITY1,
CUST_TIN LIKE KNA1-STCD1,
END OF IT_CUST_ADD.
DATA: BEGIN OF IT_IN_DA OCCURS 0,
VBELN LIKE VBRK-VBELN,
FKDAT LIKE VBRK-FKDAT,
END OF IT_IN_DA.
now suppose these are my internal table. what should i write in FORM INTERFACE (associated type)Hi Sashi, this will solve ur problem.
Check the below link.
REG:PEFORM IN SCRIPT
kindly reward if found helpful.
cheers,
Hema. -
Hi guys,
Im really stuck and i need to know where the field in the screen 301 of program
saplsza1 is getting stored in pai... because ive got some issue wherei have to store the tax value in kna1-stcd1 instead of co field in the xd02 transaction and therby i have to point this field to the sapscript form..
Will award points for thisanswered
-
INVOICE WINDOW
1. Company Address - Details FS: 5
- LOGIC ADRC-ADRNR = T001-ADRNR(T001-BUKRS = L_ROW-CCFR)
- GET : NAME1, STREET, HOUSE NUM1,CITY1, POST CODE1, COUNTRY
2. Bank Details : Details FS : 6
- LOGIC
LFBK first record where LIFNR = L_ROW-CUSTTO
BNKA where BANKS = LFBK-BANKS and BANKL = LFBK-BANKL (select single)
print out the following:
BNKA-BANKA (1st line)
BNKA-STRAS (2nd line), only if not empty
BNKA-ORT01 (3rd line, only if not empty)
Account number BNKA-BANKN
DOCU WINDOW
This is the window on the top right side
1.Document no (hard coded)
2.Then display the document number for the first document for the current row. Maybe you should check prior to printing if the current row was posted error free
and invoke printing only if this is the case. Then get the first(!!!) document number from the error/message log for this row. ZGF_ICO_RECHR_L-DOCFR
3. Document date (hard coded) it is P_BLDAT on the selection screen, already correct in the form
4. VAT No (hard coded)
5. Then display the EU VAT reg.no of that company. This is in table KNA1, where KUNNR = L_ROW-CUSTFR. The field is KNA1-STCEG, if it is empty, try to populate
KNA1-STCD1.
6. Order number(Hard coded)
7. Just concatenate L_ROW-REF + the last number for that reference from the log table ZGF_ICO_RECHR_L (notice this table has not yet been created!!! and also
the part is missing where we populate that table when posting both documents for a particular row) ZGF_ICO_RECHR_L-REF+NUMBERHi
There are different ways of doing it. It all depends on how flexible you want to be about a solution.
1. You can create a standard text (transaction SO10) and in your sapscript insert the INCLUDE statement with the name of your text.
2. Or if your document supports texts at the header level then you can create a new text type and have a user to type it in. In your sapscript you will need to insert the INCLUDE statement as well. You can even set a default text for this new text type to get it from the standard text (created in 1.)
In both cases you will need to create a new Element in MAIN window of your sapscript:
/E SPECIAL_INSTRUCTIONS
INCLUDE &MY_NAME& OBJECT ... etc.
and call this element from within the print program after the items have been processed. There must be a kind of loop in the program to go through all the items. Insert your WRITE_FORM FM after that loop.
Thanks,
Wojtek
Maybe you are looking for
-
Macbook pro takes long to boot up 30 minutes
Hi all, First of all, thanks for all the help this community has provided so far. Unfortunately I haven't been able to find a solution so far. Product: MacBook Pro (13-inch, Mid 2010) OS X 10.6.8 2.4GHz Intel core 2 duo 4GB 1067 MHz DDR3 It is quite
-
i overscratched the label on my $25 itunes card and about half of the redemption code is unavailble i dont want to waste the money value and i already went back to the retailer i purchased the card and they couldnt do anything and then i tried going
-
No COPA document for Cost of Goods Sold
I am using both account-based and costing-based COPA. All transactions from SD billing and FI are posted to COPA. However, document type WL (goods issue/delivery) does not create a profitability analysis document even if the profitability segment in
-
I'm trying to upgrade from forms 4.5 to 9i. We have properties of buttons with background color of white. I want to change it to gray. Can we do this without opening a form, in a batch. Because we have 500 forms. Can any one help me please. Or is the
-
REASON OF REJECTION AT SALES ORDER ITEM LEVEL
In sales order item level after putting reason of rejection wether net value of sales order changed to ZERO Value? In Sales infromation system for that particular customer & material sales order value reflects in report? Kindly send your comments on