Hi table decleration
hi
1. how can i declear deep flat struction for internal table?
2. how can i delcear flat structure for internal table?
3. how can i declear variable for structure-table-field?
4. how can i declear internal table for a structure?
give code exmple for all 4
thanx
rocky
Hi
1. how can i declear deep flat struction for internal table?
Ans) Types : begin of itab1
fields
end of itab1
2. how can i delcear flat structure for internal table?
Ans)
3. how can i declear variable for structure-table-field?
Ans) ariable type structure-table-field.
4. how can i declear internal table for a structure?
Ans) data : it_itab1 type standard ytable of itab1.
reward if usefull
Similar Messages
-
All values in internal table are not displaing in the script print program
Hi,
I am calling the script program.In main window all values in the internal table are not displaying. I wrote
write-form statement in loop. But not all the values are getting displayed. Only thel ast values getting dispalyed.
*& Report ZSCRIPT_116719
REPORT ZSCRIPT_116719.
************Table decleration***************
TABLES: mara, mbew, makt.
loop at i_makt into wa_makt.
endloop.
loop at i_MARA into wa_mara.
endloop.
LOOP AT I_MBEW INTO WA_MBEW.
ENDLOOP.
lv_price = 0.
********************Total Price******************
LOOP AT i_mbew INTO wa_mbew.
lv_price = lv_price + wa_mbew-stprs.
ENDLOOP.
end-of-selection.
CALL FUNCTION 'OPEN_FORM'
EXPORTING
APPLICATION = 'TX'
ARCHIVE_INDEX =
ARCHIVE_PARAMS =
DEVICE = 'PRINTER'
DIALOG = 'X'
FORM = 'ZSCRIPT_719'
LANGUAGE = SY-LANGU
OPTIONS =
MAIL_SENDER =
MAIL_RECIPIENT =
MAIL_APPL_OBJECT =
RAW_DATA_INTERFACE = '*'
SPONUMIV =
IMPORTING
LANGUAGE =
NEW_ARCHIVE_PARAMS =
RESULT =
EXCEPTIONS
CANCELED = 1
DEVICE = 2
FORM = 3
OPTIONS = 4
UNCLOSED = 5
MAIL_OPTIONS = 6
ARCHIVE_ERROR = 7
INVALID_FAX_NUMBER = 8
MORE_PARAMS_NEEDED_IN_BATCH = 9
SPOOL_ERROR = 10
CODEPAGE = 11
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 = 'ZSCRIPT_719'
LANGUAGE = SY-LANGU
STARTPAGE = ' '
PROGRAM = 'ZSCRIPT_116719'
MAIL_APPL_OBJECT =
IMPORTING
LANGUAGE =
EXCEPTIONS
FORM = 1
FORMAT = 2
UNENDED = 3
UNOPENED = 4
UNUSED = 5
SPOOL_ERROR = 6
CODEPAGE = 7
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.
*LOOP AT I_MBEW INTO WA_MBEW.
CALL FUNCTION 'WRITE_FORM'
EXPORTING
ELEMENT = 'DATA'
FUNCTION = 'SET'
TYPE = 'BODY'
WINDOW = 'MAIN'
IMPORTING
PENDING_LINES =
EXCEPTIONS
ELEMENT = 1
FUNCTION = 2
TYPE = 3
UNOPENED = 4
UNSTARTED = 5
WINDOW = 6
BAD_PAGEFORMAT_FOR_PRINT = 7
SPOOL_ERROR = 8
CODEPAGE = 9
OTHERS = 10
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
*ENDLOOP.
If I give only one value it is showing the output. When I am fetching the data for range of values it i sshowing start_form is not there.
Plz let me know how to get the aa internal table values to be displayedhi
I shortened your program a bit. So we can go to essentials of your question.
You said you put in it in a loop.
What i see in your prog is:
REPORT zscript_116719.
************table decleration***************
TABLES: mara, mbew, makt.
LOOP AT i_makt INTO wa_makt.
ENDLOOP.
LOOP AT i_mara INTO wa_mara.
ENDLOOP.
LOOP AT i_mbew INTO wa_mbew.
ENDLOOP.
lv_price = 0.
********************total price******************
LOOP AT i_mbew INTO wa_mbew.
lv_price = lv_price + wa_mbew-stprs.
ENDLOOP.
END-OF-SELECTION.
CALL FUNCTION 'OPEN_FORM'
EXPORTING
form = 'ZSCRIPT_719'
language = sy-langu.
CALL FUNCTION 'START_FORM'
EXPORTING
form = 'ZSCRIPT_719'
language = sy-langu
program = 'ZSCRIPT_116719'.
*LOOP AT I_MBEW INTO WA_MBEW.
CALL FUNCTION 'WRITE_FORM'
EXPORTING
element = 'DATA'
function = 'SET'
type = 'BODY'
window = 'MAIN'.
*endloop.
1. Your loop is not a loop with this '*' in front of it.
2. Are you printing &wa_mbew-???& variables in your sap-script
3. is itab I_MBEW properly filled
Let me know.
Gr. Frank -
Hi,
I have an existing code that says
select bukrs belnr gjahr buzei augdt shkzg dmbtr kokrs kostl aufnr
hkont werks prctr projk fkber
from bseg
into table t_bseg
for all entries in t_jrnl_chg_ptr
where bukrs = t_jrnl_chg_ptr-bukrs
and belnr = t_jrnl_chg_ptr-belnr
and gjahr = t_jrnl_chg_ptr-gjahr
and buzei = t_jrnl_chg_ptr-buzei
and vorgn <> c_recur_doc.
In this, sometimes FKBER might be empty, in that case the functional consultant asked me to take fkber_long whenver fkber is empty.
Since it is BSEG table, I need some tips on performance based how to further check and achieve fkber_long instead of FKBER.Hi Kris,
U have an existing code that says
select bukrs belnr gjahr buzei augdt shkzg dmbtr kokrs kostl aufnr
hkont werks prctr projk fkber
from bseg
into table t_bseg
for all entries in t_jrnl_chg_ptr
where bukrs = t_jrnl_chg_ptr-bukrs
and belnr = t_jrnl_chg_ptr-belnr
and gjahr = t_jrnl_chg_ptr-gjahr
and buzei = t_jrnl_chg_ptr-buzei
and vorgn c_recur_doc.
in the internal table decleration declare FKBER as type FKBER_LONG as it is of 16 charecters.
now write the following select queries:
select bukrs belnr gjahr buzei augdt shkzg dmbtr kokrs kostl aufnr
hkont werks prctr projk fkber
from bseg
into table t_bseg
for all entries in t_jrnl_chg_ptr
where bukrs = t_jrnl_chg_ptr-bukrs
and belnr = t_jrnl_chg_ptr-belnr
and gjahr = t_jrnl_chg_ptr-gjahr
and buzei = t_jrnl_chg_ptr-buzei
and vorgn c_recur_doc
and fkber ne space.
select bukrs belnr gjahr buzei augdt shkzg dmbtr kokrs kostl aufnr
hkont werks prctr projk fkber
from bseg
appending table t_bseg
for all entries in t_jrnl_chg_ptr
where bukrs = t_jrnl_chg_ptr-bukrs
and belnr = t_jrnl_chg_ptr-belnr
and gjahr = t_jrnl_chg_ptr-gjahr
and buzei = t_jrnl_chg_ptr-buzei
and vorgn c_recur_doc
and fkber eq space
and fkber_long ne space.
The above coding might solve u'r problem.
Regards,
Thabitha. -
Declaring field from the internally declared table into dynamic table
Hi Gurus,
I need your help on one of my requirements.
Due to dynamic nature of ALV report, I have used a dynamic internal table to pass it to function module.
In dynamic tables, I am trying to have one column form the internal table which is being calculated by substracting 2 fields( i,e. diff = wa_stk-labst - wa_stk-omeng). Is it possible to include that field (diff) which is coming from the internally declared table(i_out) into the dynamic table decleration. Please assist.
Thanks in AdvanceHi,
Suppose your dynamic table is of type table.
When you pass the data from internal table I_OUT to your dynamic table it will get the same structure as of your internally declared table IT_OUT which is calculated by subtracting 2 fields.
What you can do is create one more field in I_OUT which holds the value of the subtracted amount then pass the table IT_OUT to your dynamic table.
Thanks
Bhanu -
Update data using table contol in bdc
please anyone can help me in this code i.e how to update the database yusing table control please make changes in my code if required
this is my code
report ZTEST_XK01
no standard page heading line-size 255.
*include bdcrecx1.
***************PARAMETERS DECLERATIONS*********
PARAMETERS : P_file type rlgrap-filename, P_FILE1 TYPE RLGRAP-FILENAME
**************internal table decleration*******
data : bdcdata type standard table of bdcdata with header line.
data : begin of t_lfa1 occurs 0,
lifnr like RF02K-LIFNR,
BUKRS LIKE RF02K-BUKRS,
EKORG LIKE RF02K-EKORG,
KTOKK LIKE RF02K-KTOKK,
ANRED LIKE LFA1-ANRED,
NAME1 LIKE LFA1-NAME1,
SORTL LIKE LFA1-SORTL,
LAND1 LIKE LFA1-LAND1,
AKONT LIKE LFB1-AKONT,
ZTERM LIKE LFB1-ZTERM,
END OF T_LFA1.
DATA : BEGIN OF T_LFBK OCCURS 0,
BANKS LIKE LFBK-BANKS,
BANKL LIKE LFBK-BANKL,
END OF T_LFBK.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.
CALL FUNCTION 'F4_FILENAME'
EXPORTING
PROGRAM_NAME = SYST-CPROG
DYNPRO_NUMBER = SYST-DYNNR
FIELD_NAME = ' '
IMPORTING
FILE_NAME = p_FILE
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE1.
CALL FUNCTION 'F4_FILENAME'
EXPORTING
PROGRAM_NAME = SYST-CPROG
DYNPRO_NUMBER = SYST-DYNNR
FIELD_NAME = ' '
IMPORTING
FILE_NAME = P_FILE1
start-of-selection.
data : v_file type string.
move p_file to v_file.
data : e_file type string.
move p_file1 to e_file.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
FILENAME = v_file
FILETYPE = 'ASC'
HAS_FIELD_SEPARATOR = 'X'
HEADER_LENGTH = 0
READ_BY_LINE = 'X'
DAT_MODE = ' '
CODEPAGE = ' '
IGNORE_CERR = ABAP_TRUE
REPLACEMENT = '#'
CHECK_BOM = ' '
VIRUS_SCAN_PROFILE =
IMPORTING
FILELENGTH =
HEADER =
TABLES
DATA_TAB = T_LFA1
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.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
FILENAME = E_FILE
FILETYPE = 'ASC'
HAS_FIELD_SEPARATOR = 'X'
HEADER_LENGTH = 0
READ_BY_LINE = 'X'
DAT_MODE = ' '
CODEPAGE = ' '
IGNORE_CERR = ABAP_TRUE
REPLACEMENT = '#'
CHECK_BOM = ' '
VIRUS_SCAN_PROFILE =
IMPORTING
FILELENGTH =
HEADER =
TABLES
DATA_TAB = T_LFBK
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.
loop at t_lfa1.
perform bdc_dynpro using 'SAPMF02K' '0100'.
perform bdc_field using 'BDC_CURSOR'
'RF02K-KTOKK'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'RF02K-LIFNR'
t_lfa1-lifnr.
perform bdc_field using 'RF02K-BUKRS'
t_lfa1-bukrs.
perform bdc_field using 'RF02K-EKORG'
t_lfa1-ekorg.
perform bdc_field using 'RF02K-KTOKK'
t_lfa1-ktokk.
perform bdc_dynpro using 'SAPMF02K' '0110'.
perform bdc_field using 'BDC_CURSOR'
'LFA1-SORTL'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'LFA1-ANRED'
t_lfa1-anred.
perform bdc_field using 'LFA1-NAME1'
t_lfa1-name1.
perform bdc_field using 'LFA1-SORTL'
t_lfa1-sortl.
perform bdc_field using 'LFA1-LAND1'
t_lfa1-land1.
perform bdc_dynpro using 'SAPMF02K' '0120'.
perform bdc_field using 'BDC_CURSOR'
'LFA1-KUNNR'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
loop at t_lfbk .
data : val(2) type c.
data :v_fil type c.
concatenate 'lfbk-banks(' val ')' into v_fil.
perform bdc_field using v_fil
t_lfbk-BANKS.
concatenate 'lfbk-bankl(' val ')' into v_fil.
perform bdc_field using v_fil
t_lfbk-BANKl.
val = 01.
val = val + 1.
if val > 5.
val = 5.
perform bdc_dynpro using 'SAPMF02K' '0130'.
perform bdc_field using 'BDC_CURSOR'
'LFBK-BANKL(val)'.
perform bdc_field using 'BDC_OKCODE'
'ENTR'.
perform bdc_field using 'LFBK-BANKL(val)'
v_fil.
perform bdc_field using 'LFBK-BANKS(val)'
v_fil.
*perform bdc_field using 'LFBK-BANKS(02)'
'IN'.
*perform bdc_field using 'LFBK-BANKS(03)'
'in'.
*perform bdc_field using 'LFBK-BANKS(04)'
'in'.
*perform bdc_field using 'LFBK-BANKS(05)'
'in'.
*perform bdc_field using 'LFBK-BANKL(02)'
'00000142'.
*perform bdc_field using 'LFBK-BANKL(03)'
'sunny'.
*perform bdc_field using 'LFBK-BANKL(04)'
'sunny'.
*perform bdc_field using 'LFBK-BANKL(05)'
'sunny'.
*perform bdc_dynpro using 'SAPMF02K' '0130'.
*perform bdc_field using 'BDC_CURSOR'
'LFBK-BANKS(01)'.
perform bdc_field using 'BDC_OKCODE'
'=ENTR'.
endif.
endloop.
perform bdc_dynpro using 'SAPMF02K' '0210'.
perform bdc_field using 'BDC_CURSOR'
'LFB1-AKONT'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'LFB1-AKONT'
'160000'.
perform bdc_dynpro using 'SAPMF02K' '0215'.
perform bdc_field using 'BDC_CURSOR'
'LFB1-ZTERM'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'LFB1-ZTERM'
'0001'.
perform bdc_dynpro using 'SAPMF02K' '0220'.
perform bdc_field using 'BDC_CURSOR'
'LFB5-MAHNA'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_dynpro using 'SAPMF02K' '0310'.
perform bdc_field using 'BDC_CURSOR'
'LFM1-WAERS'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_dynpro using 'SAPMF02K' '0320'.
perform bdc_field using 'BDC_CURSOR'
'RF02K-LIFNR'.
perform bdc_field using 'BDC_OKCODE'
'=ENTR'.
perform bdc_dynpro using 'SAPLSPO1' '0300'.
perform bdc_field using 'BDC_OKCODE'Hi,
you can check the following piece of code.
*Batchinputdata of single transaction
DATA : tbl_bdcdata LIKE bdcdata OCCURS 0 WITH HEADER LINE.
*Input records
DATA : BEGIN OF tbl_input OCCURS 0,
lifnr LIKE lfa1-lifnr, "Account number of vendor or
banks LIKE lfbk-banks, "Bank country key
bankl LIKE lfbk-bankl, "Bank key
bankn LIKE lfbk-bankn, "Bank account number
koinh LIKE lfbk-koinh, "Account holder name
bvtyp LIKE lfbk-bvtyp, "Partner bank type
banka LIKE bnka-banka, "Name of bank
stcd3 LIKE lfa1-stcd3, "Tax number 3
scacd LIKE lfa1-scacd, "Standard carrier access code
zwels LIKE lfb1-zwels, "List of the Payment Methods to be
"Considered
lnrzb LIKE lfb1-lnrzb, "Alternate payee
iban LIKE tiban-iban, "IBAN (International Bank Account
" Number)
valid_from(10) TYPE c, "Start of IBAN validity
swift LIKE bnka-swift, "SWIFT Code for International
"Payments
bukrs LIKE zgroup_code_xref-bukrs,
"Company code
land1 LIKE t001-land1, "Country
END OF tbl_input.
*Constants
*CONSTANTS
CONSTANTS: c_tcode TYPE tstc-tcode VALUE 'XK02', "For holding
"the TCODE
c_keep(1) TYPE c VALUE 'X', "To hold X
c_tabctrl TYPE i VALUE '6', "For holding
c_and TYPE c VALUE '&',
c_tab TYPE x VALUE '09'.
START-OF-SELECTION *
START-OF-SELECTION.
IF p_appser NE 'X' .
*Download from presentation server
PERFORM pres_file_download .
ELSE.
*Download from application server
PERFORM appl_file_download.
ENDIF.
DESCRIBE TABLE tbl_input LINES w_rec.
*Banking details upload
IF p_bank = 'X'.
IF NOT tbl_input[] IS INITIAL.
PERFORM data_fetching.
ELSE.
WRITE : text-017.
EXIT.
ENDIF.
PERFORM data_validation.
PERFORM final_data_prep.
IF p_test NE 'X'.
<b> PERFORM bdc_data_load</b>.
ENDIF.
*Linking alternate payee
ELSE.
IF NOT tbl_input[] IS INITIAL.
PERFORM data_fetching_zalt.
ENDIF.
PERFORM data_validation_zalt.
PERFORM final_data_prep_zalt.
PERFORM zalt_data_load.
ENDIF.
*& <b>Form bdc_data_load</b>
FORM bdc_data_load.
PERFORM open_group.
DATA : l_cnt(2) TYPE n. "TIR-70118
SORT tbl_final BY lifnr bukrs.
SORT tbl_lfbk BY lifnr.
LOOP AT tbl_final.
AT NEW bukrs.
PERFORM 1_screen.
PERFORM cursor_location.
ENDAT.
PERFORM table_control.
l_cnt = l_cnt + 1. "TIR-70118
AT END OF bukrs.
*Begin of addition for TIR-70118
MOVE l_cnt TO tbl_lfbk-cnt.
tbl_lfbk-lifnr = tbl_final-lifnr.
COLLECT tbl_lfbk.
SORT tbl_lfbk BY lifnr.
CLEAR l_cnt.
*End of addition for TIR-70118
PERFORM last_screen.
PERFORM insert_bdc.
REFRESH tbl_bdcdata.
ENDAT.
ENDLOOP.
PERFORM close_group.
ENDFORM. " bdc_data_load
*& <b> Form 1_screen</b>
FORM 1_screen.
PERFORM bdc_dynpro USING 'SAPMF02K' '0101'.
PERFORM bdc_field USING : 'BDC_CURSOR'
'RF02K-D0215',
'BDC_OKCODE'
'/00',
'RF02K-LIFNR'
tbl_final-lifnr,
'RF02K-BUKRS'
tbl_final-bukrs,
'RF02K-D0110'
'RF02K-D0120'
'X',
'RF02K-D0130'
'X',
'RF02K-D0215'
'X'.
PERFORM bdc_dynpro USING 'SAPMF02K' '0120'.
PERFORM bdc_field USING : 'BDC_CURSOR'
'LFA1-TXJCD',
'BDC_OKCODE'
'/00'.
*Begin of changes for TIR-70118
IF NOT tbl_final-stcd3 IS INITIAL.
PERFORM bdc_field USING : 'LFA1-STCD3'
tbl_final-stcd3.
ENDIF.
IF NOT tbl_final-scacd IS INITIAL.
PERFORM bdc_field USING : 'LFA1-SCACD'
tbl_final-scacd.
ENDIF.
*End of changes for TIR-70118
PERFORM bdc_dynpro USING 'SAPMF02K' '0130'.
ENDFORM. " 1_screen
*& <b> Form cursor_location</b>
FORM cursor_location.
DATA : l_times TYPE i.
CLEAR tbl_lfbk. "TIR-70118
READ TABLE tbl_lfbk WITH KEY lifnr = tbl_final-lifnr
BINARY SEARCH.
IF sy-subrc = 0.
l_times = tbl_lfbk-cnt DIV 5.
w_count = ( tbl_lfbk-cnt MOD 5 ) + 1.
DO l_times TIMES.
PERFORM page_down.
ENDDO.
ELSE.
w_count = 1.
ENDIF.
CLEAR l_times.
ENDFORM. " cursor_location
*& <b> Form table_control</b>
FORM table_control.
CONCATENATE 'LFBK-BANKS(' w_count ')'
INTO w_fld1.
PERFORM bdc_field USING 'BDC_CURSOR'
w_fld1.
CLEAR w_fld1.
IF NOT ( tbl_final-banks IS INITIAL ). "TIR-70118
PERFORM bdc_field USING 'BDC_OKCODE'
'=ENTR'.
CONCATENATE 'LFBK-BANKS(' w_count ')'
INTO w_fld1.
PERFORM bdc_field USING w_fld1
tbl_final-banks.
CLEAR w_fld1.
CONCATENATE 'LFBK-BANKL(' w_count ')'
INTO w_fld1.
PERFORM bdc_field USING w_fld1
tbl_final-bankl.
CLEAR w_fld1.
CONCATENATE 'LFBK-BANKN(' w_count ')'
INTO w_fld1.
PERFORM bdc_field USING w_fld1
tbl_final-bankn.
CONCATENATE 'LFBK-KOINH(' w_count ')'
INTO w_fld1.
PERFORM bdc_field USING w_fld1
tbl_final-koinh.
CONCATENATE 'LFBK-BKONT(' w_count ')'
INTO w_fld1.
PERFORM bdc_field USING w_fld1
tbl_final-bkont.
CONCATENATE 'LFBK-BVTYP(' w_count ')'
INTO w_fld1.
PERFORM bdc_field USING w_fld1
tbl_final-bvtyp.
CONCATENATE 'LFBK-BKREF(' w_count ')'
INTO w_fld1.
PERFORM bdc_field USING w_fld1
tbl_final-bkref.
CLEAR w_fld1.
IF NOT tbl_final-swift IS INITIAL.
PERFORM swift_screen.
ENDIF.
IF NOT tbl_final-iban IS INITIAL.
PERFORM iban_screen.
ENDIF.
PERFORM bdc_dynpro USING 'SAPMF02K' '0130'.
<b> w_count = w_count + 1.
IF w_count EQ c_tabctrl.
w_count = 1.
PERFORM page_down</b>.
ENDIF.
ENDIF.
ENDFORM. " table_control
*& <b> Form page_down</b>
FORM page_down.
PERFORM bdc_field USING 'BDC_OKCODE'
'=P+'.
PERFORM bdc_field USING 'BDC_CURSOR'
'LFBK-BANKS(01)'.
PERFORM bdc_dynpro USING 'SAPMF02K'
'0130'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
ENDFORM. " page_down
*& Form <b>Insert_BDC</b>
This form takes the transaction code and populates the data
FORM submit_bdc .
**Function module that takes the TCODE and populate the data
CALL FUNCTION 'BDC_INSERT'
EXPORTING
tcode = c_tcode
TABLES
dynprotab = tbl_bdcdata
EXCEPTIONS
internal_error = 1
not_open = 2
queue_error = 3
tcode_invalid = 4
printing_invalid = 5
posting_invalid = 6
OTHERS = 7.
*Incase of error while populatin data
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. "End of Submit_bdc
I think this code can help for you, let me know if any doubts.
Reward with points, if it helpful for u.
Regards,
Vijay -
hi guru's
i had prepared two complex reports seperately having the same Selection-screen , internal tables and declerations...now i have to combine both the reports into one single report....based upon <b>one field (i.e, filed PROCESS_TYPE)</b> of Selection-criteria(i.e, S_PR_TYP ) i have to display 2 outputs..One for SHC and another for CONF.....But the Logic and Header display for the 2 output's is different ........please let me know where should i write the logic ....and how the logic should be build....
the code is as follows :
<u><b>The code which is common for both the reports:</b></u>
$$********************************************************************
$$ TABLES DECLERATION
$$********************************************************************
TABLES: crmd_orderadm_h,
crmd_orderadm_i,
bbp_pdigp.
$$********************************************************************
$$ TYPE-POOLS
$$********************************************************************
TYPE-POOLS: slis, list.
$$********************************************************************
$$ GLOBAL TYPES
$$********************************************************************
TYPES: BEGIN OF y_str1,
CLIENT TYPE CRMD_ORDERADM_H-CLIENT,
guid TYPE crmd_orderadm_h-guid,
object_id TYPE crmd_orderadm_h-object_id,
object_type TYPE crmd_orderadm_h-object_type,
process_type TYPE crmd_orderadm_h-process_type,
created_at TYPE crmd_orderadm_h-created_at,
changed_at TYPE crmd_orderadm_h-changed_at,
archiving_flag TYPE crmd_orderadm_h-archiving_flag,
deliv_date TYPE bbp_pdigp-deliv_date,
final_entry TYPE bbp_pdigp-final_entry,
del_ind TYPE bbp_pdigp-del_ind,
END OF y_str1.
TYPES: BEGIN OF y_str2,
guid1 TYPE crmd_orderadm_h-guid,
object_id TYPE crmd_orderadm_h-object_id,
object_type TYPE crmd_orderadm_h-object_type,
process_type TYPE crmd_orderadm_h-process_type,
created_at TYPE crmd_orderadm_h-created_at,
changed_at TYPE crmd_orderadm_h-changed_at,
archiving_flag TYPE crmd_orderadm_h-archiving_flag,
guid2 TYPE crmd_orderadm_i-guid,
header TYPE crmd_orderadm_i-header,
guid3 TYPE bbp_pdigp-guid,
deliv_date TYPE bbp_pdigp-deliv_date,
final_entry TYPE bbp_pdigp-final_entry,
del_ind TYPE bbp_pdigp-del_ind,
END OF y_str2.
$$********************************************************************
$$ GLOBAL CONSTANTS
$$********************************************************************
CONSTANTS: C_BLANK_F(1) TYPE C VALUE 'X',
C_DEL_IND_F(1) TYPE C VALUE 'X',
C_ARCHIVING_FLAG(1) TYPE C VALUE 'X',
C_FINAL_ENTRY_F(1) TYPE C VALUE 'X',
C_FINAL_ENTRY_SPACE(1) TYPE C VALUE ' ',
C_CBA_SPACE(1) TYPE C VALUE ' ',
C_DEL_SPACE(1) TYPE C VALUE ' '.
$$********************************************************************
$$ Global Elementary Variables
$$********************************************************************
DATA: w_ld_lines TYPE i,
w_ld_linesc(10) TYPE c,
w_del_ind TYPE c,
w_final_entry TYPE c,
w_COUNT_cba TYPE I VALUE 0,
w_count_f TYPE I VALUE 0,
W_BLANK_F TYPE C,
W_FINAL_ENTRY_F TYPE C,
W_DEL_COUNT TYPE I VALUE 0,
W_PER_CBA1 TYPE P decimals 3,
W_PER_CBA TYPE P decimals 2,
W_PER_E_LINE TYPE I,
W_N TYPE I.
$$********************************************************************
$$ GLOBAL INTERNAL TABLES (custom structure)
$$********************************************************************
DATA: t_str_sc1 TYPE STANDARD TABLE OF y_str1 INITIAL SIZE 1.
DATA: t_str_sc2 TYPE STANDARD TABLE OF y_str2 INITIAL SIZE 1.
DATA: t_header TYPE slis_t_listheader,
w_header TYPE slis_listheader,
e_line LIKE w_header-info.
DATA: v_index LIKE SY-TABIX.
v_index = '1'.
$$********************************************************************
$$ GLOBAL FIELD-SYMBOLS
$$********************************************************************
FIELD-SYMBOLS: <FS_STR1> TYPE Y_STR1,
<FS_STR2> TYPE Y_STR2.
$$********************************************************************
$$ PARAMETERS & SELECT-OPTIONS
$$********************************************************************
SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
SELECT-OPTIONS: s_scno FOR crmd_orderadm_h-object_id,
s_pr_typ FOR crmd_orderadm_h-process_type NO INTERVALS NO DATABASE SELECTION NO-EXTENSION DEFAULT 'SHC',
s_change FOR crmd_orderadm_h-changed_at.
SELECTION-SCREEN END OF BLOCK b1.
$$********************************************************************
$$ START-OF-SELECTION
$$********************************************************************
START-OF-SELECTION.
REFRESH t_str_sc1.
SELECT client
guid
object_id
object_type
process_type
created_at
changed_at
archiving_flag
FROM crmd_orderadm_h INTO TABLE t_str_sc1
WHERE object_id IN s_scno AND changed_at IN s_change AND process_type IN s_pr_typ.
IF sy-subrc <> 0.
MESSAGE I002.
ENDIF.
LOOP AT t_str_sc1 ASSIGNING <FS_STR1>.
REFRESH t_str_sc2.
SELECT a~guid
a~object_id
a~object_type
a~process_type
a~created_at
a~changed_at
a~archiving_flag
b~guid
b~header
c~guid
c~deliv_date
c~final_entry
c~del_ind
INTO TABLE t_str_sc2
FROM crmd_orderadm_h AS a INNER JOIN crmd_orderadm_i AS b
ON aguid eq bheader INNER JOIN bbp_pdigp AS c
ON bguid eq cguid
WHERE a~guid eq <FS_STR1>-guid.
<u><b>THE LOGIC FOR FIRST REPORT:</b></u>
*"logic for displaying Delivery date at Header level
SORT T_STR_SC2 BY DELIV_DATE.
DESCRIBE TABLE T_STR_SC2 LINES W_N.
READ TABLE T_STR_SC2 WITH KEY DELIV_DATE = T_STR_SC2-DELIV_DATE INTO <FS_STR2>-deliv_date.
READ TABLE T_STR_SC2 INDEX v_index ASSIGNING <FS_STR2>.
IF SY-SUBRC = 0.
<FS_STR1>-deliv_date = <FS_STR2>-deliv_date.
MODIFY T_STR_SC1 FROM <FS_STR1> TRANSPORTING DELIV_DATE.
ENDIF.
*"Setting up the flags for the entire items in CRMD_ORDERADM_H as per the scenario
LOOP AT T_STR_SC2 ASSIGNING <FS_STR2> WHERE HEADER EQ <FS_STR1>-GUID.
IF <FS_STR2>-DEL_IND NE 'X'.
IF <FS_STR2>-FINAL_ENTRY NE 'X'.
W_BLANK_f = C_BLANK_F.
ELSE.
W_FINAL_ENTRY_F = C_FINAL_ENTRY_F.
ENDIF.
ENDIF.
ENDLOOP.
*"Logic started at item level
LOOP AT T_STR_SC2 ASSIGNING <FS_STR2> WHERE HEADER EQ <FS_STR1>-GUID.
IF W_BLANK_F NE 'X'.
IF W_FINAL_ENTRY_F NE 'X'.
*" Displaying the status for Del 'X' , Final_entry ' ', Archive_flag 'X'.
<FS_STR1>-DEL_IND = C_DEL_IND_F.
W_DEL_COUNT = W_DEL_COUNT + 1.
<FS_STR1>-FINAL_ENTRY = C_FINAL_ENTRY_SPACE.
<FS_STR1>-ARCHIVING_FLAG = C_ARCHIVING_FLAG.
w_COUNT_cba = w_COUNT_cba + 1.
MODIFY T_STR_SC1 FROM <FS_STR1> TRANSPORTING DEL_IND FINAL_ENTRY ARCHIVING_FLAG.
ELSE.
*" Displaying the status for Del ' ' , Final_entry 'X', Archive_flag 'X'.
<FS_STR1>-FINAL_ENTRY = C_FINAL_ENTRY_F.
w_count_f = w_count_f + 1.
<FS_STR1>-DEL_IND = C_DEL_SPACE.
<FS_STR1>-ARCHIVING_FLAG = C_ARCHIVING_FLAG.
w_COUNT_cba = w_COUNT_cba + 1.
MODIFY T_STR_SC1 FROM <FS_STR1> TRANSPORTING FINAL_ENTRY DEL_IND ARCHIVING_FLAG.
ENDIF.
ELSE.
*" Displaying the status for Del ' ' , Final_entry ' ', Archive_flag ' '.
<FS_STR1>-DEL_IND = C_DEL_SPACE.
<FS_STR1>-FINAL_ENTRY = C_FINAL_ENTRY_SPACE.
<FS_STR1>-ARCHIVING_FLAG = C_CBA_SPACE.
MODIFY T_STR_SC1 FROM <FS_STR1> TRANSPORTING DEL_IND FINAL_ENTRY ARCHIVING_FLAG .
ENDIF.
ENDLOOP. "end of t_str_sc2
if <FS_STR1>-DEL_IND eq C_DEL_IND_F.
W_DEL_COUNT = W_DEL_COUNT + 1.
endif.
if <FS_STR1>-FINAL_ENTRY eq C_FINAL_ENTRY_F.
w_count_f = w_count_f + 1.
endif.
if <FS_STR1>-ARCHIVING_FLAG eq C_ARCHIVING_FLAG.
w_COUNT_cba = w_COUNT_cba + 1.
endif.
CLEAR: W_BLANK_F , W_FINAL_ENTRY_F.
*"Logic ended at item level
ENDLOOP. "end of t_str_sc1
*" when Transaction type is SHC
IF <FS_STR1>-process_type EQ 'SHC'.
DESCRIBE TABLE t_str_sc1 LINES w_ld_lines.
w_ld_linesc = w_ld_lines.
CONCATENATE ' TOTAL NO OF RECORDS SELECTED:' w_ld_linesc INTO e_line SEPARATED BY space.
*" Percentage of Archived SC's
W_PER_E_LINE = w_ld_lines.
W_PER_CBA1 = W_COUNT_CBA / W_PER_E_LINE.
W_PER_CBA = W_PER_CBA1 * 100.
*" Displaying the total no of records fetched for DB
FORMAT COLOR 7.
WRITE:/9 e_line .
WRITE:/10 'TOTAL NO OF FINAL ENTRIES SELECTED:', w_count_f.
WRITE:/10 'TOTAL NO OF DELETE ENTRIES SELECTED:', W_DEL_COUNT.
WRITE:/10 'TOTAL NO OF ENTRIES SELECTED FOR ARCHIVING:',w_COUNT_cba.
SKIP.
WRITE:/10 'PERCENTAGE OF CAN BE ARCHIVED:',W_PER_CBA,'%'.
FORMAT COLOR 3.
SKIP.
WRITE:/30 '#### SC HAVING FINAL ENTRY INDICATOR FOR ALL ITEM IN SRM #####'.
FORMAT COLOR OFF.
WRITE:/30(63) SY-ULINE.
ULINE.
*" Displaying Headings for the Report
NEW-LINE SCROLLING.
WRITE:/3 'Transaction No', 18 sy-vline,
19 'Transaction Type', 36 sy-vline,
37 'Business Trans.Cat', 56 sy-vline,
57 'Created On', 68 sy-vline,
69(10) 'Changed On', 84 sy-vline,
85 'Delivery date', 99 sy-vline,
100 'Final Entry Ind', 115 sy-vline,
116 'Deletion Ind', 129 sy-vline,
130 'Can be Archived', 146 sy-vline.
SET LEFT SCROLL-BOUNDARY COLUMN 19.
ULINE.
$$********************************************************************
$$ DISPLAY DATA AT HEADER LEVEL FOR SHC
$$********************************************************************
*" Sort the SC in Sequence
SORT t_str_sc1 BY object_id.
IF SY-SUBRC = 0.
*" Displaying the Report at Header level
LOOP AT t_str_sc1 ASSIGNING <FS_STR1>.
IF NOT <FS_STR1>-archiving_flag IS INITIAL.
FORMAT COLOR 7.
ELSE.
FORMAT COLOR 3.
ENDIF.
WRITE:/3 <FS_STR1>-object_id, 18 sy-vline,
19 <FS_STR1>-process_type, 36 sy-vline,
37 <FS_STR1>-object_type, 56 sy-vline,
57 <FS_STR1>-created_at, 68 sy-vline,
69(10) <FS_STR1>-changed_at, 84 sy-vline,
85 <FS_STR1>-deliv_date, 99 sy-vline,
100 <FS_STR1>-final_entry, 115 sy-vline,
116 <FS_STR1>-del_ind, 129 sy-vline,
130 <FS_STR1>-archiving_flag, 146 sy-vline.
ENDLOOP. "end of t_str_sc1 displaying at header level
ENDIF. "End of SY-SUBRC
*ENDCASE.
ENDIF. "End of displaying Transaction type as SHC
*" when Transaction type is CONF
IF <FS_STR1>-process_type EQ 'CONF'.
DESCRIBE TABLE t_str_sc1 LINES w_ld_lines.
w_ld_linesc = w_ld_lines.
CONCATENATE ' TOTAL NO OF RECORDS SELECTED:' w_ld_linesc INTO e_line SEPARATED BY space.
*" Percentage of Archived SC's
W_PER_E_LINE = w_ld_lines.
W_PER_CBA1 = W_COUNT_CBA / W_PER_E_LINE.
W_PER_CBA = W_PER_CBA1 * 100.
*" Displaying Headings for the Report
*" Displaying the total no of records fetched for DB
FORMAT COLOR 7.
WRITE:/9 e_line .
WRITE:/10 'TOTAL NO OF FINAL ENTRIES SELECTED:', w_count_f.
WRITE:/10 'TOTAL NO OF DELETE ENTRIES SELECTED:', W_DEL_COUNT.
WRITE:/10 'TOTAL NO OF ENTRIES SELECTED FOR ARCHIVING:',w_COUNT_cba.
SKIP.
WRITE:/10 'PERCENTAGE OF CAN BE ARCHIVED:',W_PER_CBA,'%'.
FORMAT COLOR 3.
SKIP.
WRITE:/30 '#### SC HAVING FINAL ENTRY INDICATOR FOR ALL ITEM IN SRM #####'.
FORMAT COLOR OFF.
WRITE:/30(63) SY-ULINE.
ULINE.
NEW-LINE SCROLLING.
WRITE:/3 'Transaction No', 18 sy-vline,
19 'Transaction Type', 36 sy-vline,
37 'Business Trans.Cat', 56 sy-vline,
57 'Created On', 68 sy-vline,
69(10) 'Changed On', 84 sy-vline,
85 'Delivery date', 99 sy-vline,
100 'Final Entry Ind', 115 sy-vline,
100 'Deletion Ind', 112 sy-vline,
113 'Can be Archived', 129 sy-vline.
SET LEFT SCROLL-BOUNDARY COLUMN 19.
ULINE.
*$$********************************************************************
*$$ DISPLAY DATA AT HEADER LEVEL
*$$********************************************************************
*" Sort the SC in Sequence
SORT t_str_sc1 BY object_id.
IF SY-SUBRC = 0.
*" Displaying the Report at Header level
LOOP AT t_str_sc1 ASSIGNING <FS_STR1>.
IF NOT <FS_STR1>-archiving_flag IS INITIAL.
FORMAT COLOR 7.
ELSE.
FORMAT COLOR 3.
ENDIF.
WRITE:/3 <FS_STR1>-object_id, 18 sy-vline,
19 <FS_STR1>-process_type, 36 sy-vline,
37 <FS_STR1>-object_type, 56 sy-vline,
57 <FS_STR1>-created_at, 68 sy-vline,
69(10) <FS_STR1>-changed_at, 84 sy-vline,
85 <FS_STR1>-deliv_date, 99 sy-vline,
100 <FS_STR1>-final_entry, 115 sy-vline,
100 <FS_STR1>-del_ind, 112 sy-vline,
113 <FS_STR1>-archiving_flag, 129 sy-vline.
ENDLOOP. "end of t_str_sc1 displaying
ENDIF. "End of SY-SUBRC
ENDIF. "End of displaying Transaction type as CONF
<b><u>
THE LOGIC FOR THE SECOND REPORT</u></b>
LOOP AT t_str_sc1 ASSIGNING <FS_STR1>.
REFRESH t_str_sc2.
SELECT a~guid
a~object_id
a~object_type
a~process_type
a~created_at
a~changed_at
a~archiving_flag
b~guid
b~header
c~guid
c~deliv_date
c~final_entry
c~del_ind
INTO TABLE t_str_sc2
FROM crmd_orderadm_h AS a INNER JOIN crmd_orderadm_i AS b
ON aguid eq bheader INNER JOIN bbp_pdigp AS c
ON bguid eq cguid
WHERE a~guid eq <FS_STR1>-guid.
IF NOT t_str_sc2[] is INITIAL.
LOOP AT T_STR_SC2 ASSIGNING <FS_STR2>.
IF <FS_STR2>-DEL_IND NE C_DEL_SPACE. " if x
<FS_STR2>-DEL_IND = C_DEL_IND_F.
<FS_STR2>-ARCHIVING_FLAG = C_ARCHIVING_FLAG.
MODIFY T_STR_SC2 FROM <FS_STR2> .
ELSE. "if ' '
EXIT.
ENDIF.
ENDLOOP. "End loop of t_str_sc2
MOVE <FS_STR2>-DEL_IND TO <FS_STR1>-DEL_IND.
MOVE <FS_STR2>-ARCHIVING_FLAG TO <FS_STR1>-ARCHIVING_FLAG.
MODIFY T_STR_SC1 FROM <FS_STR1>.
ELSE. " For sy-subrc
<FS_STR1>-REMARKS = c_itnf.
MODIFY T_STR_SC1 FROM <FS_STR1>.
ENDIF. " End of sy-subrc
IF <FS_STR1>-DEL_IND eq C_DEL_IND_F.
W_DEL_COUNT = W_DEL_COUNT + 1.
ENDIF.
IF <FS_STR1>-ARCHIVING_FLAG eq C_ARCHIVING_FLAG.
w_COUNT_cba = w_COUNT_cba + 1.
ENDIF.
ENDLOOP. "End loop of t_str_sc1
********************************" when Transaction type is CONF
*******************************IF <FS_STR1>-process_type EQ 'CONF'.
DESCRIBE TABLE t_str_sc1 LINES w_ld_lines.
w_ld_linesc = w_ld_lines.
CONCATENATE ' TOTAL NO OF RECORDS SELECTED:' w_ld_linesc INTO e_line SEPARATED BY space.
*" Percentage of Archived SC's
W_PER_E_LINE = w_ld_lines.
W_PER_CBA1 = W_COUNT_CBA / W_PER_E_LINE.
W_PER_CBA = W_PER_CBA1 * 100.
*" Displaying Headings for the Report
*" Displaying the total no of records fetched for DB
FORMAT COLOR 7.
WRITE:/9 e_line .
WRITE:/10 'TOTAL NO OF FINAL ENTRIES SELECTED:', w_count_f.
WRITE:/10 'TOTAL NO OF DELETE ENTRIES SELECTED:', W_DEL_COUNT.
WRITE:/10 'TOTAL NO OF ENTRIES SELECTED FOR ARCHIVING:',w_COUNT_cba.
SKIP.
WRITE:/10 'PERCENTAGE OF CAN BE ARCHIVED:',W_PER_CBA,'%'.
FORMAT COLOR 3.
SKIP.
WRITE:/30 '#### SC HAVING FINAL ENTRY INDICATOR FOR ALL ITEM IN SRM #####'.
FORMAT COLOR OFF.
WRITE:/30(63) SY-ULINE.
ULINE.
NEW-LINE SCROLLING.
WRITE:/3 'Transaction No', 18 sy-vline,
19 'Transaction Type', 36 sy-vline,
37 'Business Trans.Cat', 56 sy-vline,
57 'Created On', 68 sy-vline,
69(10) 'Changed On', 84 sy-vline,
100 'Deletion Ind', 112 sy-vline,
113 'Can be Archived', 129 sy-vline,
130 'Remarks', 150 sy-vline.
SET LEFT SCROLL-BOUNDARY COLUMN 19.
ULINE.
*$$********************************************************************
*$$ DISPLAY DATA AT HEADER LEVEL
*$$********************************************************************
*" Sort the SC in Sequence
SORT t_str_sc1 BY object_id.
IF SY-SUBRC = 0.
*" Displaying the Report at Header level
LOOP AT t_str_sc1 ASSIGNING <FS_STR1>.
IF NOT <FS_STR1>-archiving_flag IS INITIAL.
FORMAT COLOR 7.
ELSE.
FORMAT COLOR 3.
ENDIF.
WRITE:/3 <FS_STR1>-object_id, 18 sy-vline,
19 <FS_STR1>-process_type, 36 sy-vline,
37 <FS_STR1>-object_type, 56 sy-vline,
57 <FS_STR1>-created_at, 68 sy-vline,
69(10) <FS_STR1>-changed_at, 84 sy-vline,
100 <FS_STR1>-del_ind, 112 sy-vline,
113 <FS_STR1>-archiving_flag, 129 sy-vline,
130 <FS_STR1>-REMARKS, 150 sy-vline.
ENDLOOP. "end of t_str_sc1 displaying
ENDIF. "End of SY-SUBRC
**********************ENDIF. "End of displaying Transaction type as CONFVery difficult to give you a solution without having access to the actual data and tables and some basic relationship model to explain the entities of the tables.
But one thing I found that makes dealing complex queries a lot easier - easier to code and to read and to maintain - is to use the WITH clause. This allows the type of modularisation of code that we're using in other languages.
The basic syntax is:WITH <alias1> AS(
SELECT ...
<alias2> AS(
SELECT ...
<aliasn> AS(
SELECT ...
SELECT
FROM alias1, .. aliasnThis allows you to create distinct query sets once - and then re-use these again in joins, selects, and even other sub-sets.
The resulting SQL is a lot les stressful on the eye and makes the whole "processing logic" of getting to the results much easier to analyse, follow and understand. -
Import/export not working as expected
Following is my code.
REPORT Z_DEX_SS_CUSTOMER_CREATE.
tables:zcustomer,ztransform.
data:itab_bapiname like ztransform occurs 10 with header line.
data:gs_return like bapireturn1,
gs_customerno like bapikna103-customer,
gs_bapikna101_1 like table of bapikna101_1 with header line,
gs_bapikna101_1_gwa like bapikna101_1,
gs_bapikna105 like table of bapikna105 with header line,
gs_bapikna105_gwa like bapikna105,
gs_bapikna106 like table of bapikna106 with header line,
gs_bapikna106_gwa like bapikna106,
gs_bapikna102 like table of bapikna102 with header line,
gs_bapikna102_gwa like bapikna102.
data:offset_data(10) value 0.
*Dynamic program table definition
data: begin of dyntabl occurs 10,
line(200),
end of dyntabl.
data:dynlength(3).
Temporary spec table
data:begin of spec_initial occurs 10,
row(150),
end of spec_initial.
Specification table decleration
data:begin of spec occurs 10,
fieldname(20),
field_type(20),
field_length(20),
field_offset(20),
sap_fieldname(30),
end of spec.
data:cust_bapiname(30).
*Temporary item data table decleration
data:begin of temp_data_table occurs 10,
line(3000),
end of temp_data_table.
*Final item data table decleration
data:data_table like zcustomer occurs 10 with header line.
call function 'UPLOAD'
exporting
filename = 'D:\SAPSWITCH\Customer files\custspec1.TXT'
filetype = 'ASC'
HAS_FIELD_SEPARATOR = ' '
HEADER_LENGTH = 0
tables
data_tab = spec_initial
exceptions
file_open_error = 2.
loop at spec_initial.
split spec_initial-row at ' ' into spec-fieldname spec-field_type spec-field_length spec-field_offset spec-sap_fieldname.
append spec.
insert into zspec_CUSTOMER values spec.
endloop.
*Uploading the Data File.
call function 'UPLOAD'
exporting
filename = 'D:\SAPSWITCH\Customer files\customerdata.TXT'
filetype = 'ASC'
HAS_FIELD_SEPARATOR = ' '
HEADER_LENGTH = 0
tables
data_tab = temp_data_table
exceptions
file_open_error = 2.
Transfering values from the item data flat file to the internal table
delete from zcustomer.
loop at temp_data_table.
loop at spec.
data_tableoffset_data = temp_data_tablespec-field_offset(spec-field_length).
offset_data = offset_data + 40.
endloop.
append data_table.
insert into zcustomer values data_table.
offset_data = 0.
endloop.
select * from ztransform into table itab_bapiname.
*Moving values to the Bapi fields dynamically
dyntabl-line = 'program zdynpro.'. append dyntabl.
dyntabl-line = 'tables:zcustomer.'.append dyntabl.
dyntabl-line = 'Data:itab_data like zcustomer occurs 10 with header line.'.append dyntabl.
dyntabl-line = 'Data:gs_bapikna101_1 like table of bapikna101_1 with header line,'.append dyntabl.
dyntabl-line = 'gs_bapikna105 like table of bapikna105 with header line,'.append dyntabl.
dyntabl-line = 'gs_bapikna106 like table of bapikna106 with header line,'.append dyntabl.
dyntabl-line = 'gs_bapikna102 like table of bapikna102 with header line,'.append dyntabl.
dyntabl-line = 'offset_data(10) value 0.'.append dyntabl.
dyntabl-line = 'select * from zcustomer into table itab_data.'.append dyntabl.
dyntabl-line = 'LOOP AT ITAB_data.'.append dyntabl.
loop at spec.
loop at itab_bapiname where sap_field = spec-sap_fieldname.
cust_bapiname = itab_bapiname-bapi_field.
endloop.
dyntabl-line = cust_bapiname.
dynlength = strlen( dyntabl-line ).
dynlength = dynlength + 1.
dyntabl-line+dynlength = '='.
dynlength = dynlength + 2.
dyntabl-linedynlength = 'itab_dataoffset_data(40).'.
*dynlength = strlen( dyntabl-line ).
*dyntabl-line+dynlength = '.'.
append dyntabl.
dyntabl-line = 'offset_data = offset_data + 40.'.append dyntabl.
endloop.
dyntabl-line = 'offset_data = 0.'.
dyntabl-line = 'append gs_bapikna105. append gs_bapikna106. append gs_bapikna102.'.append dyntabl.
dyntabl-line = 'endloop.'.append dyntabl.
dyntabl-line = 'export gs_bapikna101_1 gs_bapikna105 gs_bapikna106 gs_bapikna102 TO MEMORY ID ''DEX''.'.append dyntabl.
insert report 'zdynpro' from dyntabl.
submit zdynpro and return.
*LOOP AT DYNTABL.
WRITE DYNTABL.
ENDLOOP.
import gs_bapikna101_1 gs_bapikna105 gs_bapikna106 gs_bapikna102 from MEMORY ID 'DEX'.
loop at gs_bapikna101_1 from 1 to 1 into gs_bapikna101_1_gwa.
endloop.
loop at gs_bapikna105 from 1 to 1 into gs_bapikna105_gwa.
endloop.
loop at gs_bapikna102 from 1 to 1 into gs_bapikna102_gwa.
endloop.
The section under consideration ive made bold and italised it.
Im calling another program dynamically and in that program im exporting some date to the sap memory.However when i import it from my program im unable to view the values. Why is that?Hi Friend,
Below is an example for successfully using IMPORT and EXPORT:
IMPORT ws_samepo TO loc_x FROM MEMORY ID 'SAMEPO'.*
EXPORT ws_samepo = loc_x TO MEMORY ID 'SAMEPO'.
Pleaes use same variable name for IMPORT and EXPORT.
Hope it will help you.
Regards
Krishnendu -
Hi,
I am new to oops I have created a small program to display data. I have declared a small struture in the Public section. but when I see the internal table in the debugging mode it contains 2 fields as KEYPART FUNCPART instead of fields which are return in the internal table decleration. and the program in going to dump.
the report is as follows
CLASS TEST DEFINITION.
PUBLIC SECTION.
DATA : BEGIN OF ITAB,
KUNNR TYPE KNA1-KUNNR,
LAND1 TYPE KNA1-LAND1,
NAME1 TYPE KNA1-NAME1,
ORT01 TYPE KNA1-ORT01,
END OF ITAB.
DATA IT_ITAB TYPE STANDARD TABLE OF ITAB.
DATA WA_ITAB TYPE ITAB.
METHODS: DISPLAY,
RETRIEVE_DATA,
PASS_TO_ALV.
ENDCLASS.
CLASS TEST IMPLEMENTATION.
METHOD RETRIEVE_DATA.
SELECT KUNNR LAND1 NAME1 ORT01 FROM KNA1 INTO TABLE IT_ITAB.
ENDMETHOD.
METHOD PASS_TO_ALV.
RETRIEVE_DATA( ).
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_STRUCTURE_NAME = 'ITAB'
TABLES
t_outtab = IT_ITAB.
ENDMETHOD.
METHOD DISPLAY.
PASS_TO_ALV( ).
ENDMETHOD.
ENDCLASS.
DATA OBJ_TEST TYPE REF TO TEST.
START-OF-SELECTION.
CREATE OBJECT OBJ_TEST.
please trace out the problem.
Thanks in Advance.Thanks for your reply,
As with in the display I called Pass_to_alv and with in the Pass_to_alv I have called retrieve_data method as there is no problem there. Please run the report in the debug mode as you cannot see the fields ( kunnr name1 land1 ort01 ) in the table as it shows 2 fields KEYPART FUNCPART. The problem lines there. -
Creation of selection screen with 2 radio button groups
Hi All,
I have following selecton screen to be created:
1. Radio Button for File
A. Radio Button for PC File
- Parameter for PC File Input
B. Radio Button for UNIX File
- Parameter for Unix File Input
2. Radio Button for Material
- Material Select-Option
As per above Either of Radio Buttons 1/2 File/Material will be selected.
If 1(File) Selected Radio Button for PC File/Unix File will be selected, No other radio buttons will be active.
If 2(Material) Selected Material Select-option input will be given, No other radio buttons will be active.
How can we write the selection screen code for above design.
Thanks in advance.
Thanks,
Deep.Hi,
go through the following example-----
**************************************INTERNAL TABLE DECLERATION**************************************
DATA: BEGIN OF ITAB2 OCCURS 0,
VALUE(250) TYPE C,
END OF ITAB2.
**************************************DATA DECLERATION************************************************
DATA: PATH LIKE DYNPREAD-FIELDNAME.
DATA : P TYPE STRING,
D TYPE STRING.
DATA : V_DATASET LIKE FILENAMECI-FILEEXTERN.
**************************************SELECTION SCREEN***********************************************
PARAMETERS: V_PATH TYPE RLGRAP-FILENAME DEFAULT 'C:\Documents and Settings\vchaturvedi\Desktop\vijay.txt'.
PARAMETERS: D_PATH TYPE RLGRAP-FILENAME.
SKIP 5.
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME.
PARAMETERS: PC_ONE RADIOBUTTON GROUP RAD1 DEFAULT 'X',
PC_OTHER RADIOBUTTON GROUP RAD1.
SELECTION-SCREEN END OF BLOCK B1.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR V_PATH.
HELP FOR SEARCHING FILES PATH************************************************
IF PC_ONE = 'X'.
CALL FUNCTION 'F4_FILENAME'
EXPORTING
PROGRAM_NAME = 'Z8VIJAY_SHADOWER_COVERSIONDATA'
DYNPRO_NUMBER = SYST-DYNNR
FIELD_NAME = PATH
IMPORTING
FILE_NAME = V_PATH.
*******CONVERT IN TO STRING************
P = V_PATH.
ENDIF.
**************************************SELECTION SCREEN VALIDATION***********************************
AT SELECTION-SCREEN.
IF V_PATH = ''.
MESSAGE E014. "FILE PATH NOT FOUND!!!!!!!
ENDIF.
IF D_PATH = ''.
MESSAGE E016. "TARGET FILE NOT FOUND!!!!!!!
ENDIF.
*******************FOR DOWNLOAD**********
AT SELECTION-SCREEN ON VALUE-REQUEST FOR D_PATH.
CALL FUNCTION 'F4_FILENAME'
EXPORTING
PROGRAM_NAME = 'Z8VIJAY_SHADOWER_COVERSIONDATA'
DYNPRO_NUMBER = SYST-DYNNR
FIELD_NAME = PATH
IMPORTING
FILE_NAME = D_PATH.
***************CONVERT INTO STRING***********
D = D_PATH.
*******************************************MAIN LOGIC************************************************
START-OF-SELECTION.
IF P = ''.
P = 'C:\Documents and Settings\vchaturvedi\Desktop\vijay.txt'.
ENDIF.
******************UPLOAD DATA FROM OTHERS TO INTERNAL TABLE****************
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
FILENAME = P
FILETYPE = 'ASC'
HAS_FIELD_SEPARATOR = ' '
HEADER_LENGTH = 0
READ_BY_LINE = 'X'
DAT_MODE = ' '
CODEPAGE = ' '
IGNORE_CERR = ABAP_TRUE
REPLACEMENT = '#'
CHECK_BOM = ' '
IMPORTING
FILELENGTH =
HEADER =
TABLES
DATA_TAB = ITAB2
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 = 1.
MESSAGE E014. "FILE PATH NOT FOUND!!!!!!!
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
******************************DOWNLOAD DATA FROM INTERNAL TABLE TO OTHERS******************************
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
BIN_FILESIZE =
FILENAME = D
FILETYPE = 'ASC'
APPEND = ' '
WRITE_FIELD_SEPARATOR = ' '
HEADER = '00'
TRUNC_TRAILING_BLANKS = ' '
WRITE_LF = 'X'
COL_SELECT = ' '
COL_SELECT_MASK = ' '
DAT_MODE = ' '
CONFIRM_OVERWRITE = ' '
NO_AUTH_CHECK = ' '
CODEPAGE = ' '
IGNORE_CERR = ABAP_TRUE
REPLACEMENT = '#'
WRITE_BOM = ' '
TRUNC_TRAILING_BLANKS_EOL = 'X'
WK1_N_FORMAT = ' '
WK1_N_SIZE = ' '
WK1_T_FORMAT = ' '
WK1_T_SIZE = ' '
IMPORTING
FILELENGTH =
TABLES
DATA_TAB = ITAB2
FIELDNAMES =
EXCEPTIONS
FILE_WRITE_ERROR = 1
NO_BATCH = 2
GUI_REFUSE_FILETRANSFER = 3
INVALID_TYPE = 4
NO_AUTHORITY = 5
UNKNOWN_ERROR = 6
HEADER_NOT_ALLOWED = 7
SEPARATOR_NOT_ALLOWED = 8
FILESIZE_NOT_ALLOWED = 9
HEADER_TOO_LONG = 10
DP_ERROR_CREATE = 11
DP_ERROR_SEND = 12
DP_ERROR_WRITE = 13
UNKNOWN_DP_ERROR = 14
ACCESS_DENIED = 15
DP_OUT_OF_MEMORY = 16
DISK_FULL = 17
DP_TIMEOUT = 18
FILE_NOT_FOUND = 19
DATAPROVIDER_EXCEPTION = 20
CONTROL_FLUSH_ERROR = 21
OTHERS = 22
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 PC_OTHER = 'X'.
****************************8FOR ONE SERVER TO ANOTHER************************************************
OPEN DATASET V_DATASET FOR INPUT IN TEXT MODE ENCODING DEFAULT.
IF SY-SUBRC = 0.
DO.
READ DATASET V_DATASET INTO ITAB2.
IF SY-SUBRC <> 0.
EXIT.
ENDIF.
APPEND ITAB2.
ENDDO.
ENDIF.
ENDIF.
*********************************PRINTING DATA *********************************************************
LOOP AT ITAB2.
WRITE :/5 ITAB2-VALUE.
ENDLOOP.
****do reward if usefull
Regards,
vijay -
Problem in displaying 2nd secondary list
Hi ABAP Gurus,
Here i got an assignment to develope interactive report (basic list, 1st secondary, 2nd secondary list)
according to my report i am able to get 1st secondary list perfectly but i am not able to get 2nd secondary list .pls solve my problem
below is my code.
*& Report ZCRPT_MM_MRP
REPORT zcrpt_mm_mrp .
*& Report : ZRPT_MM_PR_HISTORY *
Dev. Class : ZCVS *
Program Name : ZRPT_MM_PR_HISTORY *
Description : PO History Details List *
Author : Sujit Created on : 12.11.2007 *
SAP Release : SAP ERP Central Component 5.0 *
Tcode : Req DKIK905199 N-160 *
: DKIK905248 N-160 For Deletion indicator *
S O U R C E C O D E C H A N G E H I S T O R Y *
CODE | AUTHOR | DATE | Description *
| | | *
TABLE DECLARATIONS *
TABLES: ekko,ekpo,mara, makt,ekes,eban,mard,s994.
Internal tables decleration
TYPE-POOLS: slis.
DATA: BEGIN OF it_vbrkvbrp OCCURS 0,
vbeln TYPE vbrk-vbeln,
fktyp TYPE vbrk-fktyp,
matnr TYPE vbrp-matnr,
fkimg TYPE vbrp-fkimg,
fklmg TYPE vbrp-fklmg,
vrkme TYPE vbrp-vrkme,
meins TYPE vbrp-meins,
shkzg TYPE vbrp-shkzg,
END OF it_vbrkvbrp.
DATA: BEGIN OF it_vbrk OCCURS 0,
matnr TYPE vbrp-matnr,
fkimg TYPE vbrp-fkimg,
meins TYPE vbrp-meins,
END OF it_vbrk.
DATA: BEGIN OF it_ekko OCCURS 0,
ebeln TYPE ekko-ebeln,
bukrs TYPE ekko-bukrs,
frggr TYPE ekko-frggr,
frgsx TYPE ekko-frgsx,
frgke TYPE ekko-frgke,
frgzu TYPE ekko-frgzu,
END OF it_ekko.
DATA: BEGIN OF it_ekbe OCCURS 0,
ebeln type ekbe-ebeln,
ebelp type ekbe-ebelp,
belnr type ekbe-belnr,
buzei type ekbe-buzei,
xblnr type ekbe-xblnr,
END OF it_ekbe.
DATA: BEGIN OF it_lips OCCURS 0,
vbeln type lips-vbeln,
posnr type lips-posnr,
matnr type lips-matnr,
vgbel type lips-vgbel,
lfimg type lips-lfimg,
meins type lips-meins,
END OF it_lips.
data : it1_lips like it_lips occurs 0 with header line.
DATA: BEGIN OF itab OCCURS 1 ,
banfn LIKE eban-banfn, " Purchase requisition number
bnfpo LIKE eban-bnfpo, " PR Item Number
werks LIKE ekpo-werks, " Plant
matnr LIKE ekpo-matnr, " Material
maktx LIKE makt-maktx, " Name of Material
pr_menge LIKE eban-menge, " PR Quantity
meins LIKE ekpo-meins, " Unit
ebeln LIKE ekpo-ebeln, " PO No
bsart LIKE ekko-bsart, " Purchasing Document Type
ebelp LIKE ekpo-ebelp, " Item
menge LIKE ekpo-menge, " PO Qty
grn_menge LIKE ekpo-menge, " GRN Qty
trn_menge LIKE ekpo-menge, " Transit Qty
bal_menge LIKE ekpo-menge, " Balance PO Qty
labst LIKE mard-labst, " Valuated stock with unrestricted
fkimg LIKE vbrp-fkimg, " Actual billed quantity
minbe TYPE marc-minbe,
mabst TYPE marc-mabst,
fixkz TYPE eban-fixkz,
zfixkz(7) TYPE c,
matkl TYPE mara-matkl,
mvgr1 TYPE mvke-mvgr1,
bezei TYPE tvm1t-bezei,
zconfirm1(3) TYPE c,
zconfirm2(3) TYPE c,
zconfirm3(3) TYPE c,
END OF itab.
DATA: BEGIN OF itab_sale OCCURS 1 ,
matnr LIKE ekpo-matnr, " Material
werks LIKE ekpo-werks, " Plant
maktx LIKE makt-maktx, " Name of Material
labst LIKE mard-labst, " Valuated stock with unrestricted
END OF itab_sale.
DATA : i_eban LIKE eban OCCURS 0 WITH HEADER LINE.
DATA : del_menge LIKE ekes-menge,
grn_dabmg LIKE ekes-dabmg.
DATA: BEGIN OF it_marc OCCURS 0,
matnr TYPE marc-matnr,
werks TYPE marc-werks,
minbe TYPE marc-minbe,
mabst TYPE marc-mabst,
END OF it_marc.
DATA: BEGIN OF it_eban OCCURS 0,
banfn TYPE eban-banfn,
bnfpo TYPE eban-bnfpo,
fixkz TYPE eban-fixkz,
ebeln type eban-ebeln,
END OF it_eban.
DATA: BEGIN OF it_mara OCCURS 0,
matnr TYPE mara-matnr,
matkl TYPE mara-matkl,
END OF it_mara.
DATA: BEGIN OF it_mvke OCCURS 0,
matnr TYPE mvke-matnr,
mvgr1 TYPE mvke-mvgr1,
mvgr2 TYPE mvke-mvgr2,
mvgr3 TYPE mvke-mvgr3,
mvgr4 TYPE mvke-mvgr4,
END OF it_mvke.
DATA: BEGIN OF it_tvm1t OCCURS 0,
mvgr1 TYPE tvm1t-mvgr1,
bezei TYPE tvm1t-bezei,
END OF it_tvm1t.
DATA: fcat TYPE slis_t_fieldcat_alv,
fcat1 TYPE slis_t_fieldcat_alv,
fcat2 TYPE slis_t_fieldcat_alv,
heading TYPE slis_t_listheader,
heading1 TYPE slis_t_listheader,
heading2 TYPE slis_t_listheader,
events TYPE slis_t_event,
events1 TYPE slis_t_event,
events2 TYPE slis_t_event,
repname LIKE sy-repid.
DATA: keyinfo TYPE slis_keyinfo_alv.
CONSTANTS: formname_top_of_page TYPE slis_formname VALUE 'TOP_OF_PAGE'.
CONSTANTS: formname_top_of_page1 TYPE slis_formname VALUE 'TOP_OF_PAGE1'
CONSTANTS: formname_top_of_page2 TYPE slis_formname VALUE 'TOP_OF_PAGE2'
RANGES : s_erdat FOR vbrk-erdat.
DATA: ss_date TYPE mkpf-budat.
DATA: ss_period(3) TYPE n.
Screen Selection
SELECTION-SCREEN BEGIN OF BLOCK s1 WITH FRAME TITLE text-001.
*SELECT-OPTIONS : s_ebeln FOR ekpo-ebeln,
s_werks FOR ekpo-werks.
SELECT-OPTIONS : s_banfn FOR eban-banfn, "Purchase requisition number
s_badat FOR eban-badat, "Requisition (request) date
s_matnr FOR eban-matnr, "Material Number
s_werks FOR eban-werks, "Plant
s_lgort FOR eban-lgort, "Storage Location
s_matkl FOR eban-matkl, "Material group
s_flief FOR eban-flief, "Fixed Vendor
s_bsart FOR ekko-bsart NO INTERVALS. " Purchasing
SELECTION-SCREEN END OF BLOCK s1 .
SELECTION-SCREEN BEGIN OF BLOCK s2 WITH FRAME TITLE text-002.
PARAMETERS: s_period(3) TYPE n .
SELECTION-SCREEN END OF BLOCK s2 .
initialization.
repname = sy-repid.
PERFORM build_eventtab USING events[].
PERFORM build_eventtab1 USING events1[].
PERFORM build_eventtab2 USING events2[].
PERFORM build_comment USING heading[].
PERFORM build_comment1 USING heading1[].
PERFORM build_comment2 USING heading2[].
Strat-of-Selection
START-OF-SELECTION.
PERFORM getdata.
PERFORM getfieldcatalog USING fcat[].
PERFORM getfieldcatalog1 USING fcat1[].
PERFORM getfieldcatalog2 USING fcat2[].
PERFORM alvdisplaydata.
END-OF-SELECTION.
*& Form getdata
text
--> p1 text
<-- p2 text
FORM getdata.
SELECT * FROM eban INTO CORRESPONDING FIELDS OF TABLE i_eban
WHERE banfn IN s_banfn "Purchase requisition number
AND badat IN s_badat "Requisition (request) date
AND matnr IN s_matnr "Material Number
AND werks IN s_werks "Plant
AND lgort IN s_lgort "Storage Location
AND matkl IN s_matkl "Material group
AND flief IN s_flief "Fixed Vendor
AND loekz NE 'X' "Deletion Pocument
AND afnam EQ 'MRP'. "Name of requisitioner/requester
IF NOT i_eban[] IS INITIAL.
LOOP AT i_eban.
CLEAR itab.
itab-banfn = i_eban-banfn.
itab-bnfpo = i_eban-bnfpo.
itab-pr_menge = i_eban-menge.
itab-meins = i_eban-meins.
itab-ebeln = i_eban-ebeln.
itab-ebelp = i_eban-ebelp.
itab-matnr = i_eban-matnr.
itab-werks = i_eban-werks.
**----Get Material Description
IF NOT i_eban-matnr IS INITIAL.
SELECT SINGLE * FROM makt
WHERE matnr EQ i_eban-matnr.
IF sy-subrc EQ 0.
itab-maktx = makt-maktx.
ENDIF.
ELSE.
itab-maktx = i_eban-txz01.
ENDIF.
*----Get PO & GRN Quantity
IF i_eban-ebeln GT 0 AND i_eban-ebelp GT 0.
SELECT SINGLE * FROM ekpo
WHERE ebeln = i_eban-ebeln
AND ebelp = i_eban-ebelp.
IF sy-subrc EQ 0.
itab-menge = ekpo-menge.
ENDIF.
SELECT SINGLE * FROM ekko
WHERE ebeln = i_eban-ebeln.
IF sy-subrc EQ 0.
itab-bsart = ekko-bsart.
ENDIF.
*-------Get GRN Quantity
CLEAR : del_menge,grn_dabmg.
IF ekpo-bstae = '0004'. " GRN Against InbondDelivery
SELECT SUM( menge ) SUM( dabmg )
FROM ekes
INTO (del_menge,grn_dabmg)
WHERE ebeln = i_eban-ebeln
AND ebelp = i_eban-ebelp
AND ebtyp = 'LA'.
IF sy-subrc EQ 0.
itab-grn_menge = grn_dabmg.
itab-trn_menge = del_menge - grn_dabmg.
itab-bal_menge = ekpo-menge - del_menge.
IF itab-bal_menge < 0.
itab-bal_menge = 0.
ENDIF.
ELSE.
itab-bal_menge = itab-menge.
ENDIF.
ELSE. " Regular GRN
SELECT SUM( menge )
FROM ekbe
INTO (grn_dabmg)
WHERE ebeln = i_eban-ebeln
AND ebelp = i_eban-ebelp
AND bewtp = 'E'
AND bwart = '101'.
IF sy-subrc EQ 0.
itab-grn_menge = grn_dabmg.
itab-trn_menge = del_menge - grn_dabmg.
ENDIF.
For Cancelled GRN
SELECT SUM( menge )
FROM ekbe
INTO (grn_dabmg)
WHERE ebeln = i_eban-ebeln
AND ebelp = i_eban-ebelp
AND bewtp = 'E'
AND bwart = '102'.
IF sy-subrc EQ 0.
itab-grn_menge = itab-grn_menge - grn_dabmg.
itab-trn_menge = del_menge - grn_dabmg.
ENDIF.
IF itab-bsart = 'UB'.
CLEAR : grn_dabmg,grn_dabmg.
SELECT SUM( menge )
FROM ekbe
INTO (grn_dabmg)
WHERE ebeln = i_eban-ebeln
AND ebelp = i_eban-ebelp
AND bewtp = 'U'
AND bwart = '641'.
IF sy-subrc EQ 0.
itab-trn_menge = grn_dabmg.
ENDIF.
For Reversal of Issue Document
SELECT SUM( menge )
FROM ekbe
INTO (grn_dabmg)
WHERE ebeln = i_eban-ebeln
AND ebelp = i_eban-ebelp
AND bewtp = 'U'
AND bwart = '642'.
IF sy-subrc EQ 0.
itab-trn_menge = itab-trn_menge - grn_dabmg.
ENDIF.
IF itab-grn_menge <> 0.
itab-trn_menge = 0.
ENDIF.
ENDIF.
End
ENDIF.
*-------End
ENDIF.
itab-bal_menge = itab-menge - ( itab-grn_menge + itab-trn_menge ).
CALL FUNCTION 'CONVERSION_EXIT_CCMAT_OUTPUT'
EXPORTING
input = itab-matnr
IMPORTING
output = itab-matnr.
itab_sale-matnr = itab-matnr.
itab_sale-werks = itab-werks.
itab_sale-maktx = itab-maktx.
COLLECT itab_sale.
APPEND itab.
ENDLOOP.
ENDIF.
IF NOT s_bsart[] IS INITIAL.
DELETE itab WHERE bsart NOT IN s_bsart.
ENDIF.
IF NOT itab_sale IS INITIAL.
LOOP AT itab_sale.
*-----Get Sales Quantity
CALL FUNCTION 'CONVERSION_EXIT_CCMAT_INPUT'
EXPORTING
input = itab_sale-matnr
IMPORTING
output = itab_sale-matnr.
*-----Change as on 08.12.2007
SELECT SUM( clabs ) INTO itab_sale-labst
FROM mchb
WHERE matnr = itab_sale-matnr
AND werks = itab_sale-werks.
*-----End
MODIFY itab_sale TRANSPORTING labst matnr.
ENDLOOP.
LOOP AT itab.
READ TABLE itab_sale WITH KEY matnr = itab-matnr
werks = itab-werks.
IF sy-subrc = 0.
CALL FUNCTION 'CONVERSION_EXIT_CCMAT_OUTPUT'
EXPORTING
input = itab_sale-matnr
IMPORTING
output = itab_sale-matnr.
MOVE itab_sale-labst TO itab-labst.
ENDIF.
MODIFY itab TRANSPORTING labst.
CLEAR itab.
ENDLOOP.
ENDIF.
CHECK itab[] IS NOT INITIAL.
SELECT * FROM marc CLIENT SPECIFIED
INTO CORRESPONDING FIELDS OF TABLE it_marc
FOR ALL ENTRIES IN itab
WHERE mandt = sy-mandt
AND matnr EQ itab-matnr
AND werks EQ itab-werks.
SELECT * FROM eban CLIENT SPECIFIED
INTO CORRESPONDING FIELDS OF TABLE it_eban
FOR ALL ENTRIES IN itab
WHERE mandt = sy-mandt
AND banfn EQ itab-banfn
AND bnfpo EQ itab-bnfpo.
SELECT * FROM mara CLIENT SPECIFIED
INTO CORRESPONDING FIELDS OF TABLE it_mara
FOR ALL ENTRIES IN itab
WHERE mandt = sy-mandt
AND matnr EQ itab-matnr.
SELECT * FROM mvke CLIENT SPECIFIED
INTO CORRESPONDING FIELDS OF TABLE it_mvke
FOR ALL ENTRIES IN itab
WHERE mandt = sy-mandt
AND matnr EQ itab-matnr.
IF sy-subrc = 0.
SELECT * FROM tvm1t CLIENT SPECIFIED
INTO CORRESPONDING FIELDS OF TABLE it_tvm1t
FOR ALL ENTRIES IN it_mvke
WHERE mandt = sy-mandt
AND mvgr1 EQ it_mvke-mvgr1.
ENDIF.
IF s_period IS NOT INITIAL.
ss_period = s_period.
ss_period = ss_period + 1.
s_erdat-sign = 'I'.
s_erdat-option = 'BT'.
s_erdat-high = sy-datum.
ss_date = sy-datum - ss_period.
s_erdat-low = ss_date.
APPEND s_erdat.
CLEAR s_erdat.
SELECT * FROM zcvi_vbrk_vbrp CLIENT SPECIFIED
INTO CORRESPONDING FIELDS OF TABLE it_vbrkvbrp
FOR ALL ENTRIES IN itab
WHERE mandt = sy-mandt
AND matnr = itab-matnr
AND fkart IN ('Z3PS','ZVIT',
'ZVDT','ZFRV',
'ZDRV','ZCMR')
AND fkdat IN s_erdat
AND fksto EQ space
AND sfakn EQ space
AND rfbsk NE 'E'
AND fkimg NE 0.
LOOP AT it_vbrkvbrp.
IF it_vbrkvbrp-fktyp NE 'L'.
DELETE it_vbrkvbrp.
CONTINUE.
ENDIF.
IF it_vbrkvbrp-vrkme NE it_vbrkvbrp-meins.
it_vbrkvbrp-fkimg = it_vbrkvbrp-fklmg.
it_vbrkvbrp-meins = it_vbrkvbrp-vrkme.
ENDIF.
IF it_vbrkvbrp-shkzg = 'X'.
it_vbrkvbrp-fkimg = it_vbrkvbrp-fkimg * -1.
ENDIF.
it_vbrk-matnr = it_vbrkvbrp-matnr.
it_vbrk-fkimg = it_vbrkvbrp-fkimg.
it_vbrk-meins = it_vbrkvbrp-meins.
IF it_vbrk[] IS INITIAL.
APPEND it_vbrk.
CLEAR it_vbrk.
ELSE.
COLLECT it_vbrk.
CLEAR it_vbrk.
ENDIF.
ENDLOOP.
ENDIF.
SORT it_vbrkvbrp BY matnr.
SELECT * FROM ekko CLIENT SPECIFIED
INTO CORRESPONDING FIELDS OF TABLE it_ekko
FOR ALL ENTRIES IN itab
WHERE mandt = sy-mandt
AND ebeln = itab-ebeln.
SORT it_ekko BY ebeln.
LOOP AT itab.
READ TABLE it_ekko BINARY SEARCH WITH KEY
ebeln = itab-ebeln.
IF sy-subrc = 0.
IF it_ekko-frgke = 'R'.
itab-zconfirm1 = 'YES'.
itab-zconfirm2 = 'YES'.
itab-zconfirm3 = 'YES'.
ELSEIF it_ekko-frgzu = 'X'.
itab-zconfirm1 = 'YES'.
ELSEIF it_ekko-frgzu = 'XX'.
itab-zconfirm1 = 'YES'.
itab-zconfirm2 = 'YES'.
ENDIF.
ENDIF.
IF s_period IS NOT INITIAL.
READ TABLE it_vbrk BINARY SEARCH
WITH KEY matnr = itab-matnr.
IF sy-subrc = 0.
itab-fkimg = it_vbrk-fkimg.
ENDIF.
ENDIF.
READ TABLE it_marc WITH KEY matnr = itab-matnr
werks = itab-werks.
IF sy-subrc = 0.
MOVE it_marc-minbe TO itab-minbe.
MOVE it_marc-mabst TO itab-mabst.
ENDIF.
READ TABLE it_eban WITH KEY banfn = itab-banfn
bnfpo = itab-bnfpo.
IF sy-subrc = 0.
IF it_eban-fixkz EQ 'X'.
itab-zfixkz = 'Firmed'.
ENDIF.
ENDIF.
READ TABLE it_mara WITH KEY matnr = itab-matnr.
IF sy-subrc = 0.
MOVE it_mara-matkl TO itab-matkl.
ENDIF.
READ TABLE it_mvke WITH KEY matnr = itab-matnr.
IF sy-subrc = 0.
MOVE it_mvke-mvgr1 TO itab-mvgr1.
READ TABLE it_tvm1t WITH KEY mvgr1 = itab-mvgr1.
IF sy-subrc = 0.
MOVE it_tvm1t-bezei TO itab-bezei.
ENDIF.
ENDIF.
MODIFY itab.
CLEAR itab.
ENDLOOP.
ENDFORM. " getdata
*& Form build_eventtab
text
-->P_EVENTS[] text
FORM build_eventtab USING p_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 = p_events.
READ TABLE p_events WITH KEY name = slis_ev_top_of_page
INTO ls_event.
IF sy-subrc = 0.
MOVE formname_top_of_page TO ls_event-form.
APPEND ls_event TO p_events.
ENDIF.
ENDFORM. " build_eventtab
*& Form build_comment
text
-->P_HEADING[] text
FORM build_comment USING p_heading TYPE slis_t_listheader.
DATA: hline TYPE slis_listheader.
CLEAR: hline.
hline-info = 'Purchase Requision History'.
hline-typ = 'H'.
APPEND hline TO p_heading.
CLEAR hline.
ENDFORM. " build_comment
*& Form getfieldcatalog
text
--> p1 text
<-- p2 text
FORM getfieldcatalog USING p_fcat TYPE slis_t_fieldcat_alv.
DATA : w_fcat TYPE slis_fieldcat_alv.
CLEAR w_fcat.
w_fcat-tabname = 'ITAB'.
w_fcat-fieldname = 'BANFN'.
w_fcat-seltext_l = 'PR No '.
w_fcat-key = 'X'.
w_fcat-col_pos = 1.
APPEND w_fcat TO fcat.
CLEAR w_fcat.
w_fcat-tabname = 'ITAB'.
w_fcat-fieldname = 'BNFPO'.
w_fcat-seltext_l = 'PR Item '.
w_fcat-key = 'X'.
w_fcat-col_pos = 2.
APPEND w_fcat TO fcat.
CLEAR w_fcat.
w_fcat-tabname = 'ITAB'.
w_fcat-fieldname = 'MATNR'.
w_fcat-seltext_l = 'Material '.
w_fcat-col_pos = 3.
APPEND w_fcat TO fcat.
CLEAR w_fcat.
w_fcat-tabname = 'ITAB'.
w_fcat-fieldname = 'MAKTX'.
w_fcat-seltext_l = 'Name of the Mateiral '.
w_fcat-col_pos = 4.
APPEND w_fcat TO fcat.
CLEAR w_fcat.
w_fcat-tabname = 'ITAB'.
w_fcat-fieldname = 'WERKS'.
w_fcat-seltext_l = 'Plant '.
w_fcat-col_pos = 5.
APPEND w_fcat TO fcat.
CLEAR w_fcat.
w_fcat-tabname = 'ITAB'.
w_fcat-fieldname = 'EBELN'.
w_fcat-seltext_l = 'PO No '.
w_fcat-hotspot = 'X'.
w_fcat-col_pos = 6.
APPEND w_fcat TO fcat.
CLEAR w_fcat.
w_fcat-tabname = 'ITAB'.
w_fcat-fieldname = 'EBELP'.
w_fcat-seltext_l = 'PO Item '.
w_fcat-col_pos = 7.
APPEND w_fcat TO fcat.
CLEAR w_fcat.
w_fcat-tabname = 'ITAB'.
w_fcat-fieldname = 'PR_MENGE'.
w_fcat-seltext_l = 'PR Qty '.
w_fcat-col_pos = 8.
APPEND w_fcat TO fcat.
CLEAR w_fcat.
w_fcat-tabname = 'ITAB'.
w_fcat-fieldname = 'MEINS'.
w_fcat-seltext_l = 'Unit'.
w_fcat-col_pos = 9.
APPEND w_fcat TO fcat.
CLEAR w_fcat.
w_fcat-tabname = 'ITAB'.
w_fcat-fieldname = 'MENGE'.
w_fcat-seltext_l = 'PO Quantity '.
w_fcat-col_pos = 10.
APPEND w_fcat TO fcat.
CLEAR w_fcat.
w_fcat-tabname = 'ITAB'.
w_fcat-fieldname = 'GRN_MENGE'.
w_fcat-seltext_l = 'GRN Qty '.
w_fcat-col_pos = 11.
APPEND w_fcat TO fcat.
CLEAR w_fcat.
w_fcat-tabname = 'ITAB'.
w_fcat-fieldname = 'TRN_MENGE'.
w_fcat-seltext_l = 'Transit Qty '.
w_fcat-col_pos = 12.
APPEND w_fcat TO fcat.
CLEAR w_fcat.
w_fcat-tabname = 'ITAB'.
w_fcat-fieldname = 'BAL_MENGE'.
w_fcat-seltext_l = 'Balance PO Qty '.
w_fcat-col_pos = 13.
APPEND w_fcat TO fcat.
CLEAR w_fcat.
w_fcat-tabname = 'ITAB'.
w_fcat-fieldname = 'LABST'.
w_fcat-seltext_l = 'Current Stock'.
w_fcat-col_pos = 14.
APPEND w_fcat TO fcat.
CLEAR w_fcat.
w_fcat-tabname = 'ITAB'.
w_fcat-fieldname = 'FKIMG'.
w_fcat-seltext_l = 'Sales Qty '.
w_fcat-col_pos = 15.
APPEND w_fcat TO fcat.
CLEAR w_fcat.
w_fcat-tabname = 'ITAB'.
w_fcat-fieldname = 'MINBE'.
w_fcat-seltext_l = 'Reorder Point'.
w_fcat-col_pos = 16.
APPEND w_fcat TO fcat.
CLEAR w_fcat.
w_fcat-tabname = 'ITAB'.
w_fcat-fieldname = 'MABST'.
w_fcat-seltext_l = 'Maximum stock level'.
w_fcat-col_pos = 17.
APPEND w_fcat TO fcat.
CLEAR w_fcat.
w_fcat-tabname = 'ITAB'.
w_fcat-fieldname = 'ZFIXKZ'.
w_fcat-seltext_l = 'Fixed Indicator'.
w_fcat-col_pos = 18.
APPEND w_fcat TO fcat.
CLEAR w_fcat.
w_fcat-tabname = 'ITAB'.
w_fcat-fieldname = 'MATKL'.
w_fcat-seltext_l = 'Design'.
w_fcat-col_pos = 19.
APPEND w_fcat TO fcat.
CLEAR w_fcat.
w_fcat-tabname = 'ITAB'.
w_fcat-fieldname = 'MVGR1'.
w_fcat-seltext_l = 'Size'.
w_fcat-col_pos = 20.
APPEND w_fcat TO fcat.
CLEAR w_fcat.
w_fcat-tabname = 'ITAB'.
w_fcat-fieldname = 'BEZEI'.
w_fcat-seltext_l = 'Size Desc.'.
w_fcat-col_pos = 21.
APPEND w_fcat TO fcat.
CLEAR w_fcat.
w_fcat-tabname = 'ITAB'.
w_fcat-fieldname = 'FKIMG'.
w_fcat-seltext_l = 'Sales Qty '.
w_fcat-col_pos = 22.
APPEND w_fcat TO fcat.
CLEAR w_fcat.
w_fcat-tabname = 'ITAB'.
w_fcat-fieldname = 'ZCONFIRM1'.
w_fcat-seltext_l = 'Release1'.
w_fcat-col_pos = 23.
APPEND w_fcat TO fcat.
CLEAR w_fcat.
w_fcat-tabname = 'ITAB'.
w_fcat-fieldname = 'ZCONFIRM2'.
w_fcat-seltext_l = 'Release2'.
w_fcat-col_pos = 24.
APPEND w_fcat TO fcat.
CLEAR w_fcat.
w_fcat-tabname = 'ITAB'.
w_fcat-fieldname = 'ZCONFIRM3'.
w_fcat-seltext_l = 'Release3'.
w_fcat-col_pos = 25.
APPEND w_fcat TO fcat.
ENDFORM. " getfieldcatalog
*& Form alvdisplaydata
text
--> p1 text
<-- p2 text
FORM alvdisplaydata .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = repname
i_callback_user_command = 'USER_COMMAND'
it_fieldcat = fcat
it_events = events[]
TABLES
t_outtab = itab.
IF sy-subrc <> 0.
WRITE: 'SY-SUBRC: ', sy-subrc, 'REUSE_ALV_LIST_DISPLAY'.
ENDIF.
ENDFORM. " alvdisplaydata
FORM TOP_OF_PAGE *
FORM top_of_page.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = heading.
ENDFORM. "TOP_OF_PAGE
*& Form build_eventtab1
text
-->P_EVENTS[] text
FORM build_eventtab1 USING p_events1 TYPE slis_t_event.
DATA: ls_event1 TYPE slis_alv_event.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
i_list_type = 0
IMPORTING
et_events = p_events1.
READ TABLE p_events1 WITH KEY name = slis_ev_top_of_page
INTO ls_event1.
IF sy-subrc = 0.
MOVE formname_top_of_page1 TO ls_event1-form.
APPEND ls_event1 TO p_events1.
ENDIF.
endform.
*& Form build_comment
text
-->P_HEADING[] text
FORM build_comment1 USING p_heading1 TYPE slis_t_listheader.
DATA: hline1 TYPE slis_listheader.
hline1-info = '1 Secondary List'.
hline1-typ = 'H'.
APPEND hline1 TO p_heading1.
CLEAR hline1.
ENDFORM. " build_comment
*& Form getfieldcatalog1
text
-->P_FCAT1[] text
form getfieldcatalog1 using p_fcat1 TYPE slis_t_fieldcat_alv.
DATA : w_fcat1 TYPE slis_fieldcat_alv.
CLEAR w_fcat1.
w_fcat1-tabname = 'IT_LIPS'.
w_fcat1-fieldname = 'VBELN'.
w_fcat1-seltext_l = 'Pr.No'.
w_fcat1-hotspot = 'X'.
w_fcat1-col_pos = 1.
APPEND w_fcat1 to fcat1.
CLEAR w_fcat1.
w_fcat1-tabname = 'IT_LIPS'.
w_fcat1-fieldname = 'POSNR'.
w_fcat1-seltext_l = 'PR Item'.
w_fcat1-col_pos = 2.
APPEND w_fcat1 to fcat1.
CLEAR w_fcat1.
w_fcat1-tabname = 'IT_LIPS'.
w_fcat1-fieldname = 'MATNR'.
w_fcat1-seltext_l = 'Material'.
w_fcat1-col_pos = 3.
APPEND w_fcat1 to fcat1.
CLEAR w_fcat1.
w_fcat1-tabname = 'IT_LIPS'.
w_fcat1-fieldname = 'LFIMG'.
w_fcat1-seltext_l = 'Actual quantity delivered'.
w_fcat1-col_pos = 4.
APPEND w_fcat1 to fcat1.
CLEAR w_fcat1.
w_fcat1-tabname = 'IT_LIPS'.
w_fcat1-fieldname = 'MEINS'.
w_fcat1-seltext_l = 'Base Unit of Measure'.
w_fcat1-col_pos = 5.
APPEND w_fcat1 to fcat1.
endform. " getfieldcatalog1
*& Form USER_COMMAND
text
-->R_UCOMM text
-->RS_SELFIELD text
FORM user_command USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
READ TABLE itab INDEX rs_selfield-tabindex.
IF sy-subrc EQ 0.
select vbeln
posnr
matnr
vgbel
lfimg
meins from lips into table it_lips
where vgbel = itab-ebeln.
ENDIF.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = repname
i_callback_user_command = 'USER_COMMAND'
it_fieldcat = fcat1
it_events = events1[]
TABLES
t_outtab = it_lips.
IF sy-subrc <> 0.
WRITE: 'SY-SUBRC: ', sy-subrc, 'REUSE_ALV_LIST_DISPLAY'.
ENDIF.
ENDFORM. "USER_COMMAND
FORM TOP_OF_PAGE1 *
FORM top_of_page1.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = heading1.
ENDFORM. "TOP_OF_PAGE1
*& Form build_eventtab1
text
-->P_EVENTS[] text
FORM build_eventtab2 USING p_events2 TYPE slis_t_event.
DATA: ls_event2 TYPE slis_alv_event.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
i_list_type = 0
IMPORTING
et_events = p_events2.
READ TABLE p_events2 WITH KEY name = slis_ev_top_of_page
INTO ls_event2.
IF sy-subrc = 0.
MOVE formname_top_of_page2 TO ls_event2-form.
APPEND ls_event2 TO p_events2.
ENDIF.
endform.
*& Form build_comment
text
-->P_HEADING[] text
FORM build_comment2 USING p_heading2 TYPE slis_t_listheader.
DATA: hline2 TYPE slis_listheader.
hline2-info = '2 Secondary List'.
hline2-typ = 'H'.
APPEND hline2 TO p_heading2.
CLEAR hline2.
ENDFORM. " build_comment
*& Form getfieldcatalog1
text
-->P_FCAT1[] text
form getfieldcatalog2 using p_fcat2 TYPE slis_t_fieldcat_alv.
DATA : w_fcat2 TYPE slis_fieldcat_alv.
CLEAR w_fcat2.
w_fcat2-tabname = 'IT_EKBE'.
w_fcat2-fieldname = 'EBELN'.
w_fcat2-seltext_l = 'Pr.Doc No'.
w_fcat2-col_pos = 1.
APPEND w_fcat2 to fcat2.
CLEAR w_fcat2.
w_fcat2-tabname = 'IT_EKBE'.
w_fcat2-fieldname = 'EBELP'.
w_fcat2-seltext_l = 'PR Doc Item'.
w_fcat2-col_pos = 2.
APPEND w_fcat2 to fcat2.
CLEAR w_fcat2.
w_fcat2-tabname = 'IT_EKBE'.
w_fcat2-fieldname = 'BELNR'.
w_fcat2-seltext_l = 'No.Mat Doc'.
w_fcat2-col_pos = 3.
APPEND w_fcat2 to fcat2.
CLEAR w_fcat2.
w_fcat2-tabname = 'IT_EKBE'.
w_fcat2-fieldname = 'BUZEI'.
w_fcat2-seltext_l = 'Item in Mat Doc'.Hi,
You did mistakes hear.
check for >>>>
*& Report ZCRPT_MM_MRP
REPORT zcrpt_mm_mrp .
*& Report : ZRPT_MM_PR_HISTORY *
Dev. Class : ZCVS *
Program Name : ZRPT_MM_PR_HISTORY *
Description : PO History Details List *
Author : Sujit Created on : 12.11.2007 *
SAP Release : SAP ERP Central Component 5.0 *
Tcode : Req DKIK905199 N-160 *
: DKIK905248 N-160 For Deletion indicator *
S O U R C E C O D E C H A N G E H I S T O R Y *
CODE | AUTHOR | DATE | Description *
| | | *
TABLE DECLARATIONS *
TABLES: ekko,ekpo,mara, makt,ekes,eban,mard,s994.
Internal tables decleration
TYPE-POOLS: slis.
DATA: BEGIN OF it_vbrkvbrp OCCURS 0,
vbeln TYPE vbrk-vbeln,
fktyp TYPE vbrk-fktyp,
matnr TYPE vbrp-matnr,
fkimg TYPE vbrp-fkimg,
fklmg TYPE vbrp-fklmg,
vrkme TYPE vbrp-vrkme,
meins TYPE vbrp-meins,
shkzg TYPE vbrp-shkzg,
END OF it_vbrkvbrp.
DATA: BEGIN OF it_vbrk OCCURS 0,
matnr TYPE vbrp-matnr,
fkimg TYPE vbrp-fkimg,
meins TYPE vbrp-meins,
END OF it_vbrk.
DATA: BEGIN OF it_ekko OCCURS 0,
ebeln TYPE ekko-ebeln,
bukrs TYPE ekko-bukrs,
frggr TYPE ekko-frggr,
frgsx TYPE ekko-frgsx,
frgke TYPE ekko-frgke,
frgzu TYPE ekko-frgzu,
END OF it_ekko.
DATA: BEGIN OF it_ekbe OCCURS 0,
ebeln type ekbe-ebeln,
ebelp type ekbe-ebelp,
belnr type ekbe-belnr,
buzei type ekbe-buzei,
xblnr type ekbe-xblnr,
END OF it_ekbe.
DATA: BEGIN OF it_lips OCCURS 0,
vbeln type lips-vbeln,
posnr type lips-posnr,
matnr type lips-matnr,
vgbel type lips-vgbel,
lfimg type lips-lfimg,
meins type lips-meins,
END OF it_lips.
data : it1_lips like it_lips occurs 0 with header line.
DATA: BEGIN OF itab OCCURS 1 ,
banfn LIKE eban-banfn, " Purchase requisition number
bnfpo LIKE eban-bnfpo, " PR Item Number
werks LIKE ekpo-werks, " Plant
matnr LIKE ekpo-matnr, " Material
maktx LIKE makt-maktx, " Name of Material
pr_menge LIKE eban-menge, " PR Quantity
meins LIKE ekpo-meins, " Unit
ebeln LIKE ekpo-ebeln, " PO No
bsart LIKE ekko-bsart, " Purchasing Document Type
ebelp LIKE ekpo-ebelp, " Item
menge LIKE ekpo-menge, " PO Qty
grn_menge LIKE ekpo-menge, " GRN Qty
trn_menge LIKE ekpo-menge, " Transit Qty
bal_menge LIKE ekpo-menge, " Balance PO Qty
labst LIKE mard-labst, " Valuated stock with unrestricted
fkimg LIKE vbrp-fkimg, " Actual billed quantity
minbe TYPE marc-minbe,
mabst TYPE marc-mabst,
fixkz TYPE eban-fixkz,
zfixkz(7) TYPE c,
matkl TYPE mara-matkl,
mvgr1 TYPE mvke-mvgr1,
bezei TYPE tvm1t-bezei,
zconfirm1(3) TYPE c,
zconfirm2(3) TYPE c,
zconfirm3(3) TYPE c,
END OF itab.
DATA: BEGIN OF itab_sale OCCURS 1 ,
matnr LIKE ekpo-matnr, " Material
werks LIKE ekpo-werks, " Plant
maktx LIKE makt-maktx, " Name of Material
labst LIKE mard-labst, " Valuated stock with unrestricted
END OF itab_sale.
DATA : i_eban LIKE eban OCCURS 0 WITH HEADER LINE.
DATA : del_menge LIKE ekes-menge,
grn_dabmg LIKE ekes-dabmg.
DATA: BEGIN OF it_marc OCCURS 0,
matnr TYPE marc-matnr,
werks TYPE marc-werks,
minbe TYPE marc-minbe,
mabst TYPE marc-mabst,
END OF it_marc.
DATA: BEGIN OF it_eban OCCURS 0,
banfn TYPE eban-banfn,
bnfpo TYPE eban-bnfpo,
fixkz TYPE eban-fixkz,
ebeln type eban-ebeln,
END OF it_eban.
DATA: BEGIN OF it_mara OCCURS 0,
matnr TYPE mara-matnr,
matkl TYPE mara-matkl,
END OF it_mara.
DATA: BEGIN OF it_mvke OCCURS 0,
matnr TYPE mvke-matnr,
mvgr1 TYPE mvke-mvgr1,
mvgr2 TYPE mvke-mvgr2,
mvgr3 TYPE mvke-mvgr3,
mvgr4 TYPE mvke-mvgr4,
END OF it_mvke.
DATA: BEGIN OF it_tvm1t OCCURS 0,
mvgr1 TYPE tvm1t-mvgr1,
bezei TYPE tvm1t-bezei,
END OF it_tvm1t.
DATA: fcat TYPE slis_t_fieldcat_alv,
fcat1 TYPE slis_t_fieldcat_alv,
fcat2 TYPE slis_t_fieldcat_alv,
heading TYPE slis_t_listheader,
heading1 TYPE slis_t_listheader,
heading2 TYPE slis_t_listheader,
events TYPE slis_t_event,
events1 TYPE slis_t_event,
events2 TYPE slis_t_event,
repname LIKE sy-repid.
DATA: keyinfo TYPE slis_keyinfo_alv.
CONSTANTS: formname_top_of_page TYPE slis_formname VALUE 'TOP_OF_PAGE'.
CONSTANTS: formname_top_of_page1 TYPE slis_formname VALUE 'TOP_OF_PAGE1'
CONSTANTS: formname_top_of_page2 TYPE slis_formname VALUE 'TOP_OF_PAGE2'
RANGES : s_erdat FOR vbrk-erdat.
DATA: ss_date TYPE mkpf-budat.
DATA: ss_period(3) TYPE n.
Screen Selection
SELECTION-SCREEN BEGIN OF BLOCK s1 WITH FRAME TITLE text-001.
*SELECT-OPTIONS : s_ebeln FOR ekpo-ebeln,
s_werks FOR ekpo-werks.
SELECT-OPTIONS : s_banfn FOR eban-banfn, "Purchase requisition number
s_badat FOR eban-badat, "Requisition (request) date
s_matnr FOR eban-matnr, "Material Number
s_werks FOR eban-werks, "Plant
s_lgort FOR eban-lgort, "Storage Location
s_matkl FOR eban-matkl, "Material group
s_flief FOR eban-flief, "Fixed Vendor
s_bsart FOR ekko-bsart NO INTERVALS. " Purchasing
SELECTION-SCREEN END OF BLOCK s1 .
SELECTION-SCREEN BEGIN OF BLOCK s2 WITH FRAME TITLE text-002.
PARAMETERS: s_period(3) TYPE n .
SELECTION-SCREEN END OF BLOCK s2 .
initialization.
repname = sy-repid.
PERFORM build_eventtab USING events[].
PERFORM build_eventtab1 USING events1[].
PERFORM build_eventtab2 USING events2[].
PERFORM build_comment USING heading[].
PERFORM build_comment1 USING heading1[].
PERFORM build_comment2 USING heading2[].
Strat-of-Selection
START-OF-SELECTION.
PERFORM getdata.
PERFORM getfieldcatalog USING fcat[].
PERFORM getfieldcatalog1 USING fcat1[].
PERFORM getfieldcatalog2 USING fcat2[].
PERFORM alvdisplaydata.
END-OF-SELECTION.
*& Form getdata
text
--> p1 text
<-- p2 text
FORM getdata.
SELECT * FROM eban INTO CORRESPONDING FIELDS OF TABLE i_eban
WHERE banfn IN s_banfn "Purchase requisition number
AND badat IN s_badat "Requisition (request) date
AND matnr IN s_matnr "Material Number
AND werks IN s_werks "Plant
AND lgort IN s_lgort "Storage Location
AND matkl IN s_matkl "Material group
AND flief IN s_flief "Fixed Vendor
AND loekz NE 'X' "Deletion Pocument
AND afnam EQ 'MRP'. "Name of requisitioner/requester
IF NOT i_eban[] IS INITIAL.
LOOP AT i_eban.
CLEAR itab.
itab-banfn = i_eban-banfn.
itab-bnfpo = i_eban-bnfpo.
itab-pr_menge = i_eban-menge.
itab-meins = i_eban-meins.
itab-ebeln = i_eban-ebeln.
itab-ebelp = i_eban-ebelp.
itab-matnr = i_eban-matnr.
itab-werks = i_eban-werks.
**----Get Material Description
IF NOT i_eban-matnr IS INITIAL.
SELECT SINGLE * FROM makt
WHERE matnr EQ i_eban-matnr.
IF sy-subrc EQ 0.
itab-maktx = makt-maktx.
ENDIF.
ELSE.
itab-maktx = i_eban-txz01.
ENDIF.
*----Get PO & GRN Quantity
IF i_eban-ebeln GT 0 AND i_eban-ebelp GT 0.
SELECT SINGLE * FROM ekpo
WHERE ebeln = i_eban-ebeln
AND ebelp = i_eban-ebelp.
IF sy-subrc EQ 0.
itab-menge = ekpo-menge.
ENDIF.
SELECT SINGLE * FROM ekko
WHERE ebeln = i_eban-ebeln.
IF sy-subrc EQ 0.
itab-bsart = ekko-bsart.
ENDIF.
*-------Get GRN Quantity
CLEAR : del_menge,grn_dabmg.
IF ekpo-bstae = '0004'. " GRN Against InbondDelivery
SELECT SUM( menge ) SUM( dabmg )
FROM ekes
INTO (del_menge,grn_dabmg)
WHERE ebeln = i_eban-ebeln
AND ebelp = i_eban-ebelp
AND ebtyp = 'LA'.
IF sy-subrc EQ 0.
itab-grn_menge = grn_dabmg.
itab-trn_menge = del_menge - grn_dabmg.
itab-bal_menge = ekpo-menge - del_menge.
IF itab-bal_menge < 0.
itab-bal_menge = 0.
ENDIF.
ELSE.
itab-bal_menge = itab-menge.
ENDIF.
ELSE. " Regular GRN
SELECT SUM( menge )
FROM ekbe
INTO (grn_dabmg)
WHERE ebeln = i_eban-ebeln
AND ebelp = i_eban-ebelp
AND bewtp = 'E'
AND bwart = '101'.
IF sy-subrc EQ 0.
itab-grn_menge = grn_dabmg.
itab-trn_menge = del_menge - grn_dabmg.
ENDIF.
For Cancelled GRN
SELECT SUM( menge )
FROM ekbe
INTO (grn_dabmg)
WHERE ebeln = i_eban-ebeln
AND ebelp = i_eban-ebelp
AND bewtp = 'E'
AND bwart = '102'.
IF sy-subrc EQ 0.
itab-grn_menge = itab-grn_menge - grn_dabmg.
itab-trn_menge = del_menge - grn_dabmg.
ENDIF.
IF itab-bsart = 'UB'.
CLEAR : grn_dabmg,grn_dabmg.
SELECT SUM( menge )
FROM ekbe
INTO (grn_dabmg)
WHERE ebeln = i_eban-ebeln
AND ebelp = i_eban-ebelp
AND bewtp = 'U'
AND bwart = '641'.
IF sy-subrc EQ 0.
itab-trn_menge = grn_dabmg.
ENDIF.
For Reversal of Issue Document
SELECT SUM( menge )
FROM ekbe
INTO (grn_dabmg)
WHERE ebeln = i_eban-ebeln
AND ebelp = i_eban-ebelp
AND bewtp = 'U'
AND bwart = '642'.
IF sy-subrc EQ 0.
itab-trn_menge = itab-trn_menge - grn_dabmg.
ENDIF.
IF itab-grn_menge <> 0.
itab-trn_menge = 0.
ENDIF.
ENDIF.
End
ENDIF.
*-------End
ENDIF.
itab-bal_menge = itab-menge - ( itab-grn_menge + itab-trn_menge ).
CALL FUNCTION 'CONVERSION_EXIT_CCMAT_OUTPUT'
EXPORTING
input = itab-matnr
IMPORTING
output = itab-matnr.
itab_sale-matnr = itab-matnr.
itab_sale-werks = itab-werks.
itab_sale-maktx = itab-maktx.
COLLECT itab_sale.
APPEND itab.
ENDLOOP.
ENDIF.
IF NOT s_bsart[] IS INITIAL.
DELETE itab WHERE bsart NOT IN s_bsart.
ENDIF.
IF NOT itab_sale IS INITIAL.
LOOP AT itab_sale.
*-----Get Sales Quantity
CALL FUNCTION 'CONVERSION_EXIT_CCMAT_INPUT'
EXPORTING
input = itab_sale-matnr
IMPORTING
output = itab_sale-matnr.
*-----Change as on 08.12.2007
SELECT SUM( clabs ) INTO itab_sale-labst
FROM mchb
WHERE matnr = itab_sale-matnr
AND werks = itab_sale-werks.
*-----End
MODIFY itab_sale TRANSPORTING labst matnr.
ENDLOOP.
LOOP AT itab.
READ TABLE itab_sale WITH KEY matnr = itab-matnr
werks = itab-werks.
IF sy-subrc = 0.
CALL FUNCTION 'CONVERSION_EXIT_CCMAT_OUTPUT'
EXPORTING
input = itab_sale-matnr
IMPORTING
output = itab_sale-matnr.
MOVE itab_sale-labst TO itab-labst.
ENDIF.
MODIFY itab TRANSPORTING labst.
CLEAR itab.
ENDLOOP.
ENDIF.
CHECK itab[] IS NOT INITIAL.
SELECT * FROM marc CLIENT SPECIFIED
INTO CORRESPONDING FIELDS OF TABLE it_marc
FOR ALL ENTRIES IN itab
WHERE mandt = sy-mandt
AND matnr EQ itab-matnr
AND werks EQ itab-werks.
SELECT * FROM eban CLIENT SPECIFIED
INTO CORRESPONDING FIELDS OF TABLE it_eban
FOR ALL ENTRIES IN itab
WHERE mandt = sy-mandt
AND banfn EQ itab-banfn
AND bnfpo EQ itab-bnfpo.
SELECT * FROM mara CLIENT SPECIFIED
INTO CORRESPONDING FIELDS OF TABLE it_mara
FOR ALL ENTRIES IN itab
WHERE mandt = sy-mandt
AND matnr EQ itab-matnr.
SELECT * FROM mvke CLIENT SPECIFIED
INTO CORRESPONDING FIELDS OF TABLE it_mvke
FOR ALL ENTRIES IN itab
WHERE mandt = sy-mandt
AND matnr EQ itab-matnr.
IF sy-subrc = 0.
SELECT * FROM tvm1t CLIENT SPECIFIED
INTO CORRESPONDING FIELDS OF TABLE it_tvm1t
FOR ALL ENTRIES IN it_mvke
WHERE mandt = sy-mandt
AND mvgr1 EQ it_mvke-mvgr1.
ENDIF.
IF s_period IS NOT INITIAL.
ss_period = s_period.
ss_period = ss_period + 1.
s_erdat-sign = 'I'.
s_erdat-option = 'BT'.
s_erdat-high = sy-datum.
ss_date = sy-datum - ss_period.
s_erdat-low = ss_date.
APPEND s_erdat.
CLEAR s_erdat.
SELECT * FROM zcvi_vbrk_vbrp CLIENT SPECIFIED
INTO CORRESPONDING FIELDS OF TABLE it_vbrkvbrp
FOR ALL ENTRIES IN itab
WHERE mandt = sy-mandt
AND matnr = itab-matnr
AND fkart IN ('Z3PS','ZVIT',
'ZVDT','ZFRV',
'ZDRV','ZCMR')
AND fkdat IN s_erdat
AND fksto EQ space
AND sfakn EQ space
AND rfbsk NE 'E'
AND fkimg NE 0.
LOOP AT it_vbrkvbrp.
IF it_vbrkvbrp-fktyp NE 'L'.
DELETE it_vbrkvbrp.
CONTINUE.
ENDIF.
IF it_vbrkvbrp-vrkme NE it_vbrkvbrp-meins.
it_vbrkvbrp-fkimg = it_vbrkvbrp-fklmg.
it_vbrkvbrp-meins = it_vbrkvbrp-vrkme.
ENDIF.
IF it_vbrkvbrp-shkzg = 'X'.
it_vbrkvbrp-fkimg = it_vbrkvbrp-fkimg * -1.
ENDIF.
it_vbrk-matnr = it_vbrkvbrp-matnr.
it_vbrk-fkimg = it_vbrkvbrp-fkimg.
it_vbrk-meins = it_vbrkvbrp-meins.
IF it_vbrk[] IS INITIAL.
APPEND it_vbrk.
CLEAR it_vbrk.
ELSE.
COLLECT it_vbrk.
CLEAR it_vbrk.
ENDIF.
ENDLOOP.
ENDIF.
SORT it_vbrkvbrp BY matnr.
SELECT * FROM ekko CLIENT SPECIFIED
INTO CORRESPONDING FIELDS OF TABLE it_ekko
FOR ALL ENTRIES IN itab
WHERE mandt = sy-mandt
AND ebeln = itab-ebeln.
SORT it_ekko BY ebeln.
LOOP AT itab.
READ TABLE it_ekko BINARY SEARCH WITH KEY
ebeln = itab-ebeln.
IF sy-subrc = 0.
IF it_ekko-frgke = 'R'.
itab-zconfirm1 = 'YES'.
itab-zconfirm2 = 'YES'.
itab-zconfirm3 = 'YES'.
ELSEIF it_ekko-frgzu = 'X'.
itab-zconfirm1 = 'YES'.
ELSEIF it_ekko-frgzu = 'XX'.
itab-zconfirm1 = 'YES'.
itab-zconfirm2 = 'YES'.
ENDIF.
ENDIF.
IF s_period IS NOT INITIAL.
READ TABLE it_vbrk BINARY SEARCH
WITH KEY matnr = itab-matnr.
IF sy-subrc = 0.
itab-fkimg = it_vbrk-fkimg.
ENDIF.
ENDIF.
READ TABLE it_marc WITH KEY matnr = itab-matnr
werks = itab-werks.
IF sy-subrc = 0.
MOVE it_marc-minbe TO itab-minbe.
MOVE it_marc-mabst TO itab-mabst.
ENDIF.
READ TABLE it_eban WITH KEY banfn = itab-banfn
bnfpo = itab-bnfpo.
IF sy-subrc = 0.
IF it_eban-fixkz EQ 'X'.
itab-zfixkz = 'Firmed'.
ENDIF.
ENDIF.
READ TABLE it_mara WITH KEY matnr = itab-matnr.
IF sy-subrc = 0.
MOVE it_mara-matkl TO itab-matkl.
ENDIF.
READ TABLE it_mvke WITH KEY matnr = itab-matnr.
IF sy-subrc = 0.
MOVE it_mvke-mvgr1 TO itab-mvgr1.
READ TABLE it_tvm1t WITH KEY mvgr1 = itab-mvgr1.
IF sy-subrc = 0.
MOVE it_tvm1t-bezei TO itab-bezei.
ENDIF.
ENDIF.
MODIFY itab.
CLEAR itab.
ENDLOOP.
ENDFORM. " getdata
*& Form build_eventtab
text
-->P_EVENTS[] text
FORM build_eventtab USING p_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 = p_events.
READ TABLE p_events WITH KEY name = slis_ev_top_of_page
INTO ls_event.
IF sy-subrc = 0.
MOVE formname_top_of_page TO ls_event-form.
APPEND ls_event TO p_events.
ENDIF.
ENDFORM. " build_eventtab
*& Form build_comment
text
-->P_HEADING[] text
FORM build_comment USING p_heading TYPE slis_t_listheader.
DATA: hline TYPE slis_listheader.
CLEAR: hline.
hline-info = 'Purchase Requision History'.
hline-typ = 'H'.
APPEND hline TO p_heading.
CLEAR hline.
ENDFORM. " build_comment
*& Form getfieldcatalog
text
--> p1 text
<-- p2 text
FORM getfieldcatalog USING p_fcat TYPE slis_t_fieldcat_alv.
DATA : w_fcat TYPE slis_fieldcat_alv.
CLEAR w_fcat.
w_fcat-tabname = 'ITAB'.
w_fcat-fieldname = 'BANFN'.
w_fcat-seltext_l = 'PR No '.
w_fcat-key = 'X'.
w_fcat-col_pos = 1.
APPEND w_fcat TO fcat.
CLEAR w_fcat.
w_fcat-tabname = 'ITAB'.
w_fcat-fieldname = 'BNFPO'.
w_fcat-seltext_l = 'PR Item '.
w_fcat-key = 'X'.
w_fcat-col_pos = 2.
APPEND w_fcat TO fcat.
CLEAR w_fcat.
w_fcat-tabname = 'ITAB'.
w_fcat-fieldname = 'MATNR'.
w_fcat-seltext_l = 'Material '.
w_fcat-col_pos = 3.
APPEND w_fcat TO fcat.
CLEAR w_fcat.
w_fcat-tabname = 'ITAB'.
w_fcat-fieldname = 'MAKTX'.
w_fcat-seltext_l = 'Name of the Mateiral '.
w_fcat-col_pos = 4.
APPEND w_fcat TO fcat.
CLEAR w_fcat.
w_fcat-tabname = 'ITAB'.
w_fcat-fieldname = 'WERKS'.
w_fcat-seltext_l = 'Plant '.
w_fcat-col_pos = 5.
APPEND w_fcat TO fcat.
CLEAR w_fcat.
w_fcat-tabname = 'ITAB'.
w_fcat-fieldname = 'EBELN'.
w_fcat-seltext_l = 'PO No '.
w_fcat-hotspot = 'X'.
w_fcat-col_pos = 6.
APPEND w_fcat TO fcat.
CLEAR w_fcat.
w_fcat-tabname = 'ITAB'.
w_fcat-fieldname = 'EBELP'.
w_fcat-seltext_l = 'PO Item '.
w_fcat-col_pos = 7.
APPEND w_fcat TO fcat.
CLEAR w_fcat.
w_fcat-tabname = 'ITAB'.
w_fcat-fieldname = 'PR_MENGE'.
w_fcat-seltext_l = 'PR Qty '.
w_fcat-col_pos = 8.
APPEND w_fcat TO fcat.
CLEAR w_fcat.
w_fcat-tabname = 'ITAB'.
w_fcat-fieldname = 'MEINS'.
w_fcat-seltext_l = 'Unit'.
w_fcat-col_pos = 9.
APPEND w_fcat TO fcat.
CLEAR w_fcat.
w_fcat-tabname = 'ITAB'.
w_fcat-fieldname = 'MENGE'.
w_fcat-seltext_l = 'PO Quantity '.
w_fcat-col_pos = 10.
APPEND w_fcat TO fcat.
CLEAR w_fcat.
w_fcat-tabname = 'ITAB'.
w_fcat-fieldname = 'GRN_MENGE'.
w_fcat-seltext_l = 'GRN Qty '.
w_fcat-col_pos = 11.
APPEND w_fcat TO fcat.
CLEAR w_fcat.
w_fcat-tabname = 'ITAB'.
w_fcat-fieldname = 'TRN_MENGE'.
w_fcat-seltext_l = 'Transit Qty '.
w_fcat-col_pos = 12.
APPEND w_fcat TO fcat.
CLEAR w_fcat.
w_fcat-tabname = 'ITAB'.
w_fcat-fieldname = 'BAL_MENGE'.
w_fcat-seltext_l = 'Balance PO Qty '.
w_fcat-col_pos = 13.
APPEND w_fcat TO fcat.
CLEAR w_fcat.
w_fcat-tabname = 'ITAB'.
w_fcat-fieldname = 'LABST'.
w_fcat-seltext_l = 'Current Stock'.
w_fcat-col_pos = 14.
APPEND w_fcat TO fcat.
CLEAR w_fcat.
w_fcat-tabname = 'ITAB'.
w_fcat-fieldname = 'FKIMG'.
w_fcat-seltext_l = 'Sales Qty '.
w_fcat-col_pos = 15.
APPEND w_fcat TO fcat.
CLEAR w_fcat.
w_fcat-tabname = 'ITAB'.
w_fcat-fieldname = 'MINBE'.
w_fcat-seltext_l = 'Reorder Point'.
w_fcat-col_pos = 16.
APPEND w_fcat TO fcat.
CLEAR w_fcat.
w_fcat-tabname = 'ITAB'.
w_fcat-fieldname = 'MABST'.
w_fcat-seltext_l = 'Maximum stock level'.
w_fcat-col_pos = 17.
APPEND w_fcat TO fcat.
CLEAR w_fcat.
w_fcat-tabname = 'ITAB'.
w_fcat-fieldname = 'ZFIXKZ'.
w_fcat-seltext_l = 'Fixed Indicator'.
w_fcat-col_pos = 18.
APPEND w_fcat TO fcat.
CLEAR w_fcat.
w_fcat-tabname = 'ITAB'.
w_fcat-fieldname = 'MATKL'.
w_fcat-seltext_l = 'Design'.
w_fcat-col_pos = 19.
APPEND w_fcat TO fcat.
CLEAR w_fcat.
w_fcat-tabname = 'ITAB'.
w_fcat-fieldname = 'MVGR1'.
w_fcat-seltext_l = 'Size'.
w_fcat-col_pos = 20.
APPEND w_fcat TO fcat.
CLEAR w_fcat.
w_fcat-tabname = 'ITAB'.
w_fcat-fieldname = 'BEZEI'.
w_fcat-seltext_l = 'Size Desc.'.
w_fcat-col_pos = 21.
APPEND w_fcat TO fcat.
CLEAR w_fcat.
w_fcat-tabname = 'ITAB'.
w_fcat-fieldname = 'FKIMG'.
w_fcat-seltext_l = 'Sales Qty '.
w_fcat-col_pos = 22.
APPEND w_fcat TO fcat.
CLEAR w_fcat.
w_fcat-tabname = 'ITAB'.
w_fcat-fieldname = 'ZCONFIRM1'.
w_fcat-seltext_l = 'Release1'.
w_fcat-col_pos = 23.
APPEND w_fcat TO fcat.
CLEAR w_fcat.
w_fcat-tabname = 'ITAB'.
w_fcat-fieldname = 'ZCONFIRM2'.
w_fcat-seltext_l = 'Release2'.
w_fcat-col_pos = 24.
APPEND w_fcat TO fcat.
CLEAR w_fcat.
w_fcat-tabname = 'ITAB'.
w_fcat-fieldname = 'ZCONFIRM3'.
w_fcat-seltext_l = 'Release3'.
w_fcat-col_pos = 25.
APPEND w_fcat TO fcat.
ENDFORM. " getfieldcatalog
*& Form alvdisplaydata
text
--> p1 text
<-- p2 text
FORM alvdisplaydata .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = repname
i_callback_user_command = 'USER_COMMAND'
it_fieldcat = fcat
it_events = events[]
TABLES
t_outtab = itab.
IF sy-subrc <> 0.
WRITE: 'SY-SUBRC: ', sy-subrc, 'REUSE_ALV_LIST_DISPLAY'.
ENDIF.
ENDFORM. " alvdisplaydata
FORM TOP_OF_PAGE *
FORM top_of_page.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = heading.
ENDFORM. "TOP_OF_PAGE
*& Form build_eventtab1
text
-->P_EVENTS[] text
FORM build_eventtab1 USING p_events1 TYPE slis_t_event.
DATA: ls_event1 TYPE slis_alv_event.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
i_list_type = 0
IMPORTING
et_events = p_events1.
READ TABLE p_events1 WITH KEY name = slis_ev_top_of_page
INTO ls_event1.
IF sy-subrc = 0.
MOVE formname_top_of_page1 TO ls_event1-form.
APPEND ls_event1 TO p_events1.
ENDIF.
endform.
*& Form build_comment
text
-->P_HEADING[] text
FORM build_comment1 USING p_heading1 TYPE slis_t_listheader.
DATA: hline1 TYPE slis_listheader.
hline1-info = '1 Secondary List'.
hline1-typ = 'H'.
APPEND hline1 TO p_heading1.
CLEAR hline1.
ENDFORM. " build_comment
*& Form getfieldcatalog1
text
-->P_FCAT1[] text
form getfieldcatalog1 using p_fcat1 TYPE slis_t_fieldcat_alv.
DATA : w_fcat1 TYPE slis_fieldcat_alv.
CLEAR w_fcat1.
w_fcat1-tabname = 'IT_LIPS'.
w_fcat1-fieldname = 'VBELN'.
w_fcat1-seltext_l = 'Pr.No'.
w_fcat1-hotspot = 'X'.
w_fcat1-col_pos = 1.
APPEND w_fcat1 to fcat1.
CLEAR w_fcat1.
w_fcat1-tabname = 'IT_LIPS'.
w_fcat1-fieldname = 'POSNR'.
w_fcat1-seltext_l = 'PR Item'.
w_fcat1-col_pos = 2.
APPEND w_fcat1 to fcat1.
CLEAR w_fcat1.
w_fcat1-tabname = 'IT_LIPS'.
w_fcat1-fieldname = 'MATNR'.
w_fcat1-seltext_l = 'Material'.
w_fcat1-col_pos = 3.
APPEND w_fcat1 to fcat1.
CLEAR w_fcat1.
w_fcat1-tabname = 'IT_LIPS'.
w_fcat1-fieldname = 'LFIMG'.
w_fcat1-seltext_l = 'Actual quantity delivered'.
w_fcat1-col_pos = 4.
APPEND w_fcat1 to fcat1.
CLEAR w_fcat1.
w_fcat1-tabname = 'IT_LIPS'.
w_fcat1-fieldname = 'MEINS'.
w_fcat1-seltext_l = 'Base Unit of Measure'.
w_fcat1-col_pos = 5.
APPEND w_fcat1 to fcat1.
endform. " getfieldcatalog1
*& Form USER_COMMAND
text
-->R_UCOMM text
-->RS_SELFIELD text
FORM user_command USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
READ TABLE itab INDEX rs_selfield-tabindex.
IF sy-subrc EQ 0.
select vbeln
posnr
matnr
vgbel
lfimg
meins from lips into table it_lips
where vgbel = itab-ebeln.
ENDIF.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = repname
>>>> i_callback_user_command = 'USER_COMMAND1'
it_fieldcat = fcat1
it_events = events1[]
TABLES
t_outtab = it_lips.
IF sy-subrc 0.
WRITE: 'SY-SUBRC: ', sy-subrc, 'REUSE_ALV_LIST_DISPLAY'.
ENDIF.
ENDFORM. "USER_COMMAND
FORM TOP_OF_PAGE1 *
FORM top_of_page1.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = heading1.
ENDFORM. "TOP_OF_PAGE1
*& Form build_eventtab1
text
-->P_EVENTS[] text
FORM build_eventtab2 USING p_events2 TYPE slis_t_event.
DATA: ls_event2 TYPE slis_alv_event.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
i_list_type = 0
IMPORTING
et_events = p_events2.
READ TABLE p_events2 WITH KEY name = slis_ev_top_of_page
INTO ls_event2.
IF sy-subrc = 0.
MOVE formname_top_of_page2 TO ls_event2-form.
APPEND ls_event2 TO p_events2.
ENDIF.
endform.
*& Form build_comment
text
-->P_HEADING[] text
FORM build_comment2 USING p_heading2 TYPE slis_t_listheader.
DATA: hline2 TYPE slis_listheader.
hline2-info = '2 Secondary List'.
hline2-typ = 'H'.
APPEND hline2 TO p_heading2.
CLEAR hline2.
ENDFORM. " build_comment
*& Form getfieldcatalog1
text
-->P_FCAT1[] text
form getfieldcatalog2 using p_fcat2 TYPE slis_t_fieldcat_alv.
DATA : w_fcat2 TYPE slis_fieldcat_alv.
CLEAR w_fcat2.
w_fcat2-tabname = 'IT_EKBE'.
w_fcat2-fieldname = 'EBELN'.
w_fcat2-seltext_l = 'Pr.Doc No'.
w_fcat2-col_pos = 1.
APPEND w_fcat2 to fcat2.
CLEAR w_fcat2.
w_fcat2-tabname = 'IT_EKBE'.
w_fcat2-fieldname = 'EBELP'.
w_fcat2-seltext_l = 'PR Doc Item'.
w_fcat2-col_pos = 2.
APPEND w_fcat2 to fcat2.
CLEAR w_fcat2.
w_fcat2-tabname = 'IT_EKBE'.
w_fcat2-fieldname = 'BELNR'.
w_fcat2-seltext_l = 'No.Mat Doc'.
w_fcat2-col_pos = 3.
APPEND w_fcat2 to fcat2.
CLEAR w_fcat2.
w_fcat2-tabname = 'IT_EKBE'.
w_fcat2-fieldname = 'BUZEI'.
w_fcat2-seltext_l = 'Item in Mat Doc'.
w_fcat2-col_pos = 4.
APPEND w_fcat2 to fcat2.
CLEAR w_fcat2.
w_fcat2-tabname = 'IT_EKBE'.
w_fcat2-fieldname = 'MENGE'.
w_fcat2-seltext_l = 'Quantity'.
w_fcat2-col_pos = 5.
APPEND w_fcat2 to fcat2.
CLEAR w_fcat2.
w_fcat2-tabname = 'IT_EKBE'.
w_fcat2-fieldname = 'XBLNR'.
w_fcat2-seltext_l = 'Ref Doc Num'.
w_fcat2-col_pos = 5.
APPEND w_fcat2 to fcat2.
endform. " getfieldcatalog2
*& Form USER_COMMAND1
text
-->R_UCOMM text
-->RS_SELFIELD text
FORM user_command1 USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
READ TABLE it_lips INDEX rs_selfield-tabindex.
IF sy-subrc EQ 0.
select ebeln
ebelp
belnr
buzei
menge
xblnr from ekbe into table it_ekbe
where xblnr = it_lips-vbeln.
endif.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = repname
i_callback_user_command = 'USER_COMMAND1'
it_fieldcat = fcat2
it_events = events2[]
TABLES
t_outtab = it_ekbe.
IF sy-subrc 0.
WRITE: 'SY-SUBRC: ', sy-subrc, 'REUSE_ALV_LIST_DISPLAY'.
ENDIF.
ENDFORM. "USER_COMMAND
FORM TOP_OF_PAGE1
FORM top_of_page2.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = heading2.
ENDFORM. "TOP_OF_PAGE2 -
ABAP Function Module where-used in BI-Transformations
Hi,
we have developed some ABAP-Z-Function-Modules. These are used in several BI-Data-Transformations and work fine and performant.
The problem we have now is to find out in which transformation a Function-Module is used.
The where-used-list in SE37 doesn't report any BI-Transformations althought I check all categories.
Got anyone a solution for our problem?
ChristianHi,
see this code for function module where used list only for transformation . i used the same code as bhaskar specified..but little modification..here u used "date_get_week" function module..
TYPE-POOLS slis.
DATA fcat1 TYPE slis_t_fieldcat_alv.
DATA: BEGIN OF t_display OCCURS 0,
targetname LIKE rstran-targetname,
sourcename LIKE rstran-sourcename,
tranid LIKE rstran-tranid,
routine LIKE rstran-startroutine,
line_no LIKE rsaabap-line_no,
line LIKE rsaabap-line,
END OF t_display.
data : input(75) type c.
DATA : input_pattern1(75) TYPE c.
DATA : input_pattern2(75) TYPE c.
DATA : same_source(30) TYPE c.
**Internal table declerations**************************************
TYPES: BEGIN OF t_trans_lookup_finder,
targetname TYPE rstran-targetname,
sourcename TYPE rstran-sourcename,
tranid TYPE rstran-tranid,
routine TYPE rstran-startroutine,
line_no TYPE rsaabap-line_no,
line TYPE rsaabap-line,
END OF t_trans_lookup_finder.
DATA: i_lookup_finder TYPE STANDARD TABLE OF t_trans_lookup_finder,
wa_lookup_finder TYPE t_trans_lookup_finder,
i_trans_lookup_finder TYPE STANDARD TABLE OF t_trans_lookup_finder,
wa_trans_lookup_finder TYPE t_trans_lookup_finder,
i_trans_final TYPE STANDARD TABLE OF t_trans_lookup_finder,
wa_trans_final TYPE t_trans_lookup_finder.
DATA : i(7) TYPE n.
DATA old_cube(20) TYPE c VALUE ' '.
DATA old_source(20) TYPE c VALUE ' '.
**Selections for update rules**************************************
SELECT DISTINCT targetname sourcename tranid endroutine line_no line
INTO TABLE i_trans_lookup_finder FROM
rstran AS a INNER JOIN rsaabap AS b ON aendroutine = bcodeid
WHERE
aobjvers = 'A' AND bobjvers = 'A'.
APPEND LINES OF i_trans_lookup_finder TO i_lookup_finder.
**Selections for Transformations(Expert routine)*******************
SELECT DISTINCT targetname sourcename tranid expert line_no line
INTO TABLE i_trans_lookup_finder FROM
rstran AS a INNER JOIN rsaabap AS b ON aexpert = bcodeid
WHERE
aobjvers = 'A' AND bobjvers = 'A'.
APPEND LINES OF i_trans_lookup_finder TO i_lookup_finder.
Edited by: Sakthi Jaganathan on May 20, 2009 6:25 PM -
Download data from IT to Locl Server
Hi Friends,
I have writte the entire code for my purposr. All i have to do is download data from an Internal table to the local server as a text file.
I am having problems in appending statement.
I am not getting the proper data into it_outfile.
*Tables
TABLES : zz0010.
*Internal tables Decleration
DATA : it_zz0010 LIKE zz0010 OCCURS 0 WITH HEADER LINE.
DATA : g_repid LIKE sy-repid.
DATA : it_outfile(200) OCCURS 0 WITH HEADER LINE.
*Selection-Screen
SELECTION-SCREEN: BEGIN OF BLOCK 1 WITH FRAME TITLE text-001.
PARAMETERS : p_file LIKE rlgrap-filename.
SELECTION-SCREEN: END OF BLOCK 1.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
CALL FUNCTION 'F4_FILENAME'
EXPORTING
program_name = g_repid
IMPORTING
file_name = p_file.
START-OF-SELECTION.
SELECT *
FROM zz0010
INTO TABLE it_zz0010.
END-OF-SELECTION.
LOOP AT it_zz0010.
it_outfile = it_zz0010-mandt.
it_outfile+(3) = it_zz0010-matnr.
it_outfile+(21) = it_zz0010-auart.
it_outfile+(25) = it_zz0010-datab.
it_outfile+(33) = it_zz0010-datbi.
it_outfile+(41) = it_zz0010-zzcoe.
it_outfile+(45) = it_zz0010-zzend.
it_outfile+(63) = it_zz0010-zzfide.
it_outfile+(73) = it_zz0010-zzdos.
it_outfile+(88) = it_zz0010-zzusl.
APPEND it_outfile.
CLEAR : it_outfile.
ENDLOOP.
*Local File
CALL FUNCTION 'DOWNLOAD'
EXPORTING
filename = p_file
filetype = 'ASC'
TABLES
data_tab = it_outfile
EXCEPTIONS
invalid_filesize = 1
invalid_table_width = 2
invalid_type = 3
no_batch = 4
unknown_error = 5
gui_refuse_filetransfer = 6
customer_error = 7
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.
Any suggestions or changes to the code.
Shejal.Hi,
I think it should like this.
LOOP AT it_zz0010.
<b>it_outfile(3) = it_zz0010-mandt.
it_outfile+3(18) = it_zz0010-matnr.
it_outfile+21(4) = it_zz0010-auart.</b>
APPEND it_outfile.
CLEAR : it_outfile.
Regards,
Ferry Lianto -
NO_FIELDCATALOG_AVAILABLE
ERROR:EXCEPTION 'NO_FIELDCATALOG_AVAILABLE' RAISED
CAN ANYBODY HELP ME IN SOLVING THIS ERROR
REPORT YLOOKUP_FINDER_TEST.
TYPE-POOLS slis.
DATA : fcat1 TYPE slis_t_fieldcat_alv.
DATA: BEGIN OF t_display OCCURS 0,
targetname TYPE rstran-targetname,
sourcename TYPE rstran-sourcename,
tranid TYPE rstran-tranid,
routine TYPE rstran-startroutine,
line_no TYPE rsaabap-line_no,
line TYPE rsaabap-line,
END OF t_display.
DATA : input_pattern1(70) TYPE c.
DATA : input_pattern2(70) TYPE c.
DATA : same_source(30) TYPE c.
SELECTION-SCREEN BEGIN OF BLOCK b01 WITH FRAME TITLE text-004.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 6(22) text-002 FOR FIELD infoprov.
PARAMETERS infoprov LIKE input_pattern1.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 6(20) text-001 FOR FIELD mdobject.
PARAMETERS: mdobject AS CHECKBOX.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 6(20) text-003 FOR FIELD pattern.
PARAMETERS: pattern AS CHECKBOX.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK b01.
**Internal table declerations**************************************
TYPES: BEGIN OF t_trans_lookup_finder,
targetname TYPE rstran-targetname,
sourcename TYPE rstran-sourcename,
tranid TYPE rstran-tranid,
routine TYPE rstran-startroutine,
line_no TYPE rsaabap-line_no,
line TYPE rsaabap-line,
END OF t_trans_lookup_finder.
DATA:
i_lookup_finder TYPE STANDARD TABLE OF t_trans_lookup_finder,
wa_lookup_finder TYPE t_trans_lookup_finder,
i_trans_lookup_finder TYPE STANDARD TABLE OF t_trans_lookup_finder,
wa_trans_lookup_finder TYPE t_trans_lookup_finder,
i_trans_final TYPE STANDARD TABLE OF t_trans_lookup_finder,
wa_trans_final TYPE t_trans_lookup_finder.
DATA : i(7) TYPE n.
DATA old_cube(20) TYPE c VALUE ' '.
DATA old_source(20) TYPE c VALUE ' '.
**Selections for update rules**************************************
IF ( infoprov NE '' ).
IF ( pattern NE 'X' ).
IF ( mdobject NE 'X' ).
CONCATENATE 'from*A' infoprov '00' '' INTO input_pattern1.
ELSE.
CONCATENATE 'from*p' infoprov '' INTO input_pattern1.
ENDIF.
CONCATENATE '8' infoprov '*' INTO same_source.
SELECT DISTINCT
infocube
isource
b~updid
routine
line_no
line
INTO TABLE i_lookup_finder FROM
rsupdinfo AS a INNER JOIN rsupdrout AS b ON a~updid =
b~updid
INNER JOIN rsaabap AS c ON c~codeid =
b~codeid
WHERE
aobjvers = 'A' AND bobjvers = 'A' AND
cobjvers = 'A' AND aobjvers = 'A'
AND
b~routine GE 9000.
ELSE.
input_pattern1 = infoprov.
SELECT DISTINCT
infocube
isource
b~updid
routine
line_no
line
INTO TABLE i_lookup_finder FROM
rsupdinfo AS a INNER JOIN rsupdrout AS b ON a~updid =
b~updid
INNER JOIN rsaabap AS c ON c~codeid =
b~codeid
WHERE
aobjvers = 'A' AND bobjvers = 'A' AND
cobjvers = 'A' AND aobjvers = 'A'.
SELECT DISTINCT
targetname
sourcename
a~tranid
c~codeid
line_no
line
INTO TABLE i_trans_lookup_finder FROM
rstran AS a INNER JOIN rstransteprout AS b
ON atranid = btranid
INNER JOIN rsaabap AS c ON bcodeid = ccodeid
WHERE
aobjvers = 'A' AND bobjvers = 'A' AND
c~objvers = 'A'.
APPEND LINES OF i_trans_lookup_finder TO i_lookup_finder.
ENDIF.
**Selections for Transformations(start routine)********************
SELECT DISTINCT
targetname
sourcename
tranid
startroutine
line_no
line
INTO TABLE i_trans_lookup_finder FROM
rstran AS a INNER JOIN rsaabap AS b ON astartroutine = bcodeid
WHERE
aobjvers = 'A' AND bobjvers = 'A'.
APPEND LINES OF i_trans_lookup_finder TO i_lookup_finder.
**Selections for Transformations(End routine)**********************
SELECT DISTINCT
targetname
sourcename
tranid
endroutine
line_no
line
INTO TABLE i_trans_lookup_finder FROM
rstran AS a INNER JOIN rsaabap AS b ON aendroutine = bcodeid
WHERE
aobjvers = 'A' AND bobjvers = 'A'.
APPEND LINES OF i_trans_lookup_finder TO i_lookup_finder.
**Selections for Transformations(Expert routine)*******************
SELECT DISTINCT
targetname
sourcename
tranid
expert
line_no
line
INTO TABLE i_trans_lookup_finder FROM
rstran AS a INNER JOIN rsaabap AS b ON aexpert = bcodeid
WHERE
aobjvers = 'A' AND bobjvers = 'A'.
APPEND LINES OF i_trans_lookup_finder TO i_lookup_finder.
**Extracting records where lookup code is written******************
SORT i_lookup_finder BY targetname sourcename tranid routine line_no.
LOOP AT i_lookup_finder INTO wa_lookup_finder.
TRANSLATE wa_lookup_finder-line TO UPPER CASE.
IF ( wa_lookup_finder-line CP input_pattern1 ) AND
( wa_lookup_finder-sourcename NP same_source ).
IF ( pattern NE 'X' ).
APPEND wa_lookup_finder TO i_lookup_finder.
old_cube = wa_lookup_finder-targetname.
old_source = wa_lookup_finder-sourcename.
ELSE.
APPEND wa_lookup_finder TO i_lookup_finder.
ENDIF.
ENDIF.
ENDLOOP.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_program_name = 'YLOOKUP_FINDER_TEST'
i_internal_tabname = 'I_LOOKUP_FINDER'
i_inclname = 'YLOOKUP_FINDER_TEST'
CHANGING
ct_fieldcat = fcat1
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
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 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = 'YLOOKUP_FINDER_TEST'
it_fieldcat = fcat1
TABLES
t_outtab = i_lookup_finder
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.
ENDIF.hi,
You have only declared the fieldcatalog but did not append the fieldcatalog as the output internal table format. Declare a work area like the fieldcatalog update the workarea with the fieldname, output length, column position for each and every field of the final internal table and append it to the fieldcatalog.
Regards,
sirisha -
Hi
The runtime error is DBIF_RSQL_INVALID_RSQL and the exception is CX_SY_OPEN_SQL_DB.can anyone explain me these errors.
At this select query it going to short dump.Could anyone help me.Its urgent.
Select aaufnr agstrp agsuzp biedd b~iedz into table i_uncount
from afko as a inner join afru as b on aaufnr = baufnr
for all entries in i_ordscp
where aaufnr = i_ordscp-aufnr and bgrund = 'ONS'
and b~stzhl = '0000000'.
Error Analysis:
The data read during a SELECT access could not be inserted into the target field.
Either the conversion is not supported for the target field's type or the target field is too short to accept the value or the data are not in a form that the target field can accept.
The target field is all correct.I've checked it.
Could anyone please help me.Its really urgent.U'll definitely be given points.
Thanks
chandrika.Hi Sarath ,
Please look at the internal table decleration and the sequence of fields in select statement .
What is happening is that the select is tying to place the value of iedd into aufpl as a result of which this incompatibilty occurs.
So you can either user into corresponding-fields or modify the sequence of your internal table.
I would sugges the second option , as first can effect the performance.
So just declare the it as
TYPES:BEGIN OF t_uncont,
aufnr like afko-aufnr,
gstrp like afko-gstrp,
gsuzp like afko-gsuzp,
iedd like afru-iedd,
iedz like afru-iedz,
aufpl like afko-aufpl,
END OF t_uncont.
Regards
Arun -
Hi,
I want to have an effective select query with inner join for retrieving the fields
LIKP~LFDAT
VBRK~FKDAT
VBRP~FKIMG
VBEP~BMENG
with the common field VBELN that is there in all these tables...
If inner join is used four joins will come. Is it acceptable?
Thanks
DineshHi,
plz go through the following example------
TABLE DECLERATION
TABLES : MARA ,
MARC ,
MARD ,
MAKT.
DATA DECLERATION
TYPES : BEGIN OF STRUCT_MAT,
MATNR TYPE MATNR,
MEINS TYPE MEINS,
WERKS TYPE WERKS_D,
LGORT TYPE LGORT_D,
MAKTX TYPE MAKTX,
END OF STRUCT_MAT.
INTERNAL TABLE
DATA : ITAB TYPE STANDARD TABLE OF STRUCT_MAT WITH HEADER LINE.
SELECTION SCREEN
SELECT-OPTIONS : S_MATNR FOR MARA-MATNR.
S T A R T - O F - S E L E C T I O N
START-OF-SELECTION.
SELECT
A~MATNR
A~MEINS
B~WERKS
C~LGORT
D~MAKTX
INTO CORRESPONDING FIELDS OF TABLE ITAB
FROM MARA AS A
INNER JOIN MARC AS B ON
AMATNR = BMATNR
LEFT OUTER JOIN MARD AS C ON
BMATNR = CMATNR AND
BWERKS = CWERKS
INNER JOIN MAKT AS D ON
AMATNR = DMATNR
WHERE A~MATNR IN S_MATNR .
IF SY-SUBRC <> 0.
EXIT.
ENDIF.
W R I T E
WRITE :5 'MATERIAL NO' COLOR 3,
25 'PLANT' COLOR 3,
40 'STORAGE LOC' COLOR 3,
60 'DESCRIPTION' COLOR 3,
120 'UOM' COLOR 3.
ULINE.
LOOP AT ITAB.
WRITE :/5 ITAB-MATNR COLOR 6 INVERSE,
25 ITAB-WERKS COLOR 6,
40 ITAB-LGORT COLOR 6,
60 ITAB-MAKTX COLOR 6,
120 ITAB-MEINS COLOR 6.
ENDLOOP.
*****do rewards if usefull
vijay
Maybe you are looking for
-
AS2 Adapter Configuration to Customer / no signature certificate
Dear all, we start a project with an external Customer incl. Certificates. If we now start message processing we get follow error back: Message processing goes fail. Reason: javax.resource.ResourceException: Fatal exception: javax.resource.ResourceEx
-
QM PLant settings - Cost center
HI QM Gurus, In the inspection lot completion tab for QM Plant settings in customization we have two feilds Cost Center - Scrap and Destruction What is the significance of Cost center feilds in QM Plant settings? What will happen if I do not use any
-
I am using adobe reader 9 version. I am not able to open pdf still the acrord32.exe is running in the background. Plz help. Acrord32.exe running processes are proportional to number of times i tried to open the pdf...........So manually i need to end
-
InDesign reverting back to basic colour scheme after crash
I am new at this software, how do I get my orignal colours on my design back - also the printers come up with different colours
-
Looking to migrate my license from windows to mac, Is there a roadmap to accomplish?
Looking to migrate my Windows license to Mac. Hoping there is an easy way to accomplish?