Write an executable program which has a routine that receives an internal table and prints how many fields are blank by line (the type of table must have at least 4 fields).
Output must be generated as:
Line [line number] => [number of blank fields] + " blank fields"
Total: [total number of blank fields]
Solution:
REPORT z_abap101_062.
"---------------------------
" 1. Define Types
"---------------------------
TYPES: BEGIN OF ty_line,
id TYPE c LENGTH 10,
name TYPE string,
value TYPE i,
creation_date TYPE d,
END OF ty_line.
TYPES: ty_table TYPE STANDARD TABLE OF ty_line.
"---------------------------
" 2. Routine: Count Blank Fields
"---------------------------
FORM count_initial_fields_of_line USING us_table TYPE ty_table.
DATA lwa_line TYPE ty_line.
DATA lv_initial_field_total TYPE i.
DATA lv_initial_field TYPE i.
LOOP AT us_table INTO lwa_line.
CLEAR lv_initial_field.
" Check each field for blank/initial values
IF lwa_line-id IS INITIAL.
lv_initial_field = lv_initial_field + 1.
ENDIF.
IF lwa_line-name IS INITIAL.
lv_initial_field = lv_initial_field + 1.
ENDIF.
IF lwa_line-value IS INITIAL.
lv_initial_field = lv_initial_field + 1.
ENDIF.
IF lwa_line-creation_date IS INITIAL.
lv_initial_field = lv_initial_field + 1.
ENDIF.
" Print per line result
WRITE: / 'Line', sy-tabix, '=>', lv_initial_field, 'blank fields'.
" Add to total
lv_initial_field_total = lv_initial_field_total + lv_initial_field.
ENDLOOP.
" Print total count
WRITE: / 'Total:', lv_initial_field_total.
WRITE: / sy-uline.
ENDFORM. " count_initial_fields_of_line
"---------------------------
" 3. Start-of-Selection
"---------------------------
START-OF-SELECTION.
DATA itab TYPE ty_table.
DATA wa TYPE ty_line.
" Line 1: All fields filled
wa-id = '1'.
wa-name = 'John'.
wa-value = 50.
wa-creation_date = '20140727'.
APPEND wa TO itab.
CLEAR wa.
PERFORM count_initial_fields_of_line USING itab.
" Line 2: Missing creation_date
wa-id = '2'.
wa-name = 'Mary'.
wa-value = 20.
APPEND wa TO itab.
CLEAR wa.
PERFORM count_initial_fields_of_line USING itab.
" Line 3: Missing value & creation_date
wa-id = '3'.
wa-name = 'Max'.
APPEND wa TO itab.
CLEAR wa.
PERFORM count_initial_fields_of_line USING itab.
" Line 4: Only id filled
wa-id = '4'.
APPEND wa TO itab.
CLEAR wa.
PERFORM count_initial_fields_of_line USING itab.
Output:
Hi , It would be helpful if post some technical topics for functional consultant. Ex: Bapi,Fm, Api etc....
ReplyDeleteHi! π Thank you for your suggestion.
DeleteBAPIs and Function Modules are already covered in the blog. Kindly have a look through the existing posts—you'll find many ABAP concepts explained in a simple and beginner-friendly manner, making them useful for both technical and functional consultants.
I'll continue adding more topics, including APIs, integrations, and other practical SAP concepts. Thank you for your valuable feedback and support! π